@sustaina/shared-ui 1.3.0 → 1.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/form/form-controls/form-field.tsx","../src/components/form/form-controls/form-item.tsx","../src/components/form/form-controls/use-form-field.ts","../src/utils/cn.ts","../src/components/form/form-controls/form-error-message.tsx","../src/components/form/form-controls/form-label.tsx","../src/utils/getColumnIdFromTable.ts","../src/store/useGridSettingsStore.ts","../src/components/form/text-input/text-input.tsx","../src/components/form/number-input/number-input.tsx","../src/components/data-table/sortingFns.ts","../src/components/advanceSearch/lib/utils.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/utils/common.ts","../src/utils/filters.ts","../src/components/data-table/cells/HeaderCell.tsx","../src/components/ui/table.tsx","../src/components/data-table/ColumnResizer.tsx","../src/components/data-table/DataTableDevTool.tsx","../src/components/data-table/helpers.ts","../src/components/data-table/DataTable.tsx","../src/components/button/button.tsx","../node_modules/@hookform/resolvers/src/validateFieldsNatively.ts","../node_modules/@hookform/resolvers/src/toNestErrors.ts","../node_modules/@hookform/resolvers/zod/src/zod.ts","../src/components/ui/form.tsx","../src/components/ui/dialog.tsx","../src/components/ui/select.tsx","../src/components/ui/tooltip.tsx","../src/components/grid-settings/SortableRow.tsx","../src/components/ui/button.tsx","../src/components/grid-settings/schema.tsx","../src/components/grid-settings/GridSettingsModal.tsx","../src/assets/icon/InfoIcon.tsx","../src/components/tooltip/tooltip.tsx","../src/components/navbar/navbar.tsx","../src/components/advanceSearch/components/ui/ExpandCollapse.tsx","../src/components/advanceSearch/operatorMap.ts","../src/components/advanceSearch/hooks/useAdvanceSearch.ts","../src/components/advanceSearch/types.ts","../src/components/advanceSearch/components/ui/select.tsx","../src/components/advanceSearch/components/ui/input.tsx","../src/components/advanceSearch/components/ui/popover.tsx","../src/components/advanceSearch/components/ui/button.tsx","../src/components/advanceSearch/components/ClearButton.tsx","../src/components/advanceSearch/components/ui/datepicker.tsx","../src/components/advanceSearch/components/TagsInput.tsx","../node_modules/date-fns/constants.js","../node_modules/date-fns/constructFrom.js","../node_modules/date-fns/toDate.js","../node_modules/date-fns/_lib/defaultOptions.js","../node_modules/date-fns/startOfWeek.js","../node_modules/date-fns/startOfISOWeek.js","../node_modules/date-fns/getISOWeekYear.js","../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../node_modules/date-fns/_lib/normalizeDates.js","../node_modules/date-fns/startOfDay.js","../node_modules/date-fns/differenceInCalendarDays.js","../node_modules/date-fns/startOfISOWeekYear.js","../node_modules/date-fns/isDate.js","../node_modules/date-fns/isValid.js","../node_modules/date-fns/startOfYear.js","../node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../node_modules/date-fns/locale/en-US/_lib/formatLong.js","../node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../node_modules/date-fns/locale/en-US/_lib/localize.js","../node_modules/date-fns/locale/_lib/buildMatchFn.js","../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../node_modules/date-fns/locale/en-US/_lib/match.js","../node_modules/date-fns/locale/en-US.js","../node_modules/date-fns/getDayOfYear.js","../node_modules/date-fns/getISOWeek.js","../node_modules/date-fns/getWeekYear.js","../node_modules/date-fns/startOfWeekYear.js","../node_modules/date-fns/getWeek.js","../node_modules/date-fns/_lib/addLeadingZeros.js","../node_modules/date-fns/_lib/format/lightFormatters.js","../node_modules/date-fns/_lib/format/formatters.js","../node_modules/date-fns/_lib/format/longFormatters.js","../node_modules/date-fns/_lib/protectedTokens.js","../node_modules/date-fns/format.js","../node_modules/date-fns/parseISO.js","../src/components/advanceSearch/components/ui/label.tsx","../src/components/advanceSearch/components/ui/form.tsx","../src/components/advanceSearch/components/AdvanceSearchRow.tsx","../src/components/advanceSearch/components/AdvanceSearch.tsx","../src/components/dialog-alert/lib/utils.ts","../src/components/dialog-alert/components/ui/dialog.tsx","../src/components/dialog-alert/components/ui/button.tsx","../src/components/dialog-alert/dialog.tsx"],"names":["createContext","jsx","cn","twMerge","clsx","useState","useRef","threshold","useEffect","jsxs","isSomeColumnsFilterable","useCallback","e","setCustomValidity","ref","fieldPath","errors","error","get","message","reportValidity","validateFieldsNatively","options","fields","field","refs","forEach","toNestErrors","shouldUseNativeValidation","fieldErrors","path","Object","assign","isNameInFieldArray","names","keys","fieldArrayErrors","set","name","some","n","startsWith","parseErrorSchema","zodErrors","validateAllFieldCriteria","length","code","_path","join","unionError","unionErrors","type","push","types","messages","appendErrors","concat","shift","zodResolver","schema","schemaOptions","resolverOptions","values","_","Promise","resolve","mode","then","data","raw","r","a","Array","isArray","criteriaMode","reject","FormFieldContext","FormField","Controller","useFormField","FormItemContext","useFormContext","FormItem","Slot","i","buttonVariants","cva","Button","t","isValid","Fragment","index","React","TooltipProvider","TooltipPrimitive2","Tooltip","TooltipTrigger","TooltipContent","Icon","X","useMemo","Select","SelectPrimitive2","SelectValue","SelectTrigger","Triangle","SelectContent","SelectScrollUpButton","SelectScrollDownButton","SelectItem","CheckIcon","React7","s","defaultOptions","startOfDay","format","localize","formatLong","Label","Form","FormProvider","React9","useFormState","FormControl","isDate","Search","Plus","useForm","Dialog","DialogPrimitive2","DialogPortal","DialogOverlay","DialogContent","XIcon","DialogHeader","DialogTitle","DialogDescription"],"mappings":"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","file":"index.mjs","sourcesContent":["// core\nimport { createContext } from \"react\";\nimport { Controller, type ControllerProps, type FieldPath, type FieldValues } from \"react-hook-form\";\n\nexport type FormFieldProps<\n TFieldValues extends FieldValues,\n TName extends FieldPath<TFieldValues>\n> = ControllerProps<TFieldValues, TName>;\n\nexport type FormFieldContextValue<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n> = {\n name: TName;\n};\n\nexport const FormFieldContext = createContext<FormFieldContextValue>({} as FormFieldContextValue);\n\nexport function FormField<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>\n>(props: FormFieldProps<TFieldValues, TName>) {\n return (\n <FormFieldContext value={{ name: props.name }}>\n <Controller {...props} />\n </FormFieldContext>\n );\n}\n","// core\nimport React, { createContext, useId } from \"react\";\n\nexport type FormItemProps = React.ComponentProps<\"div\">;\nexport type FormItemContextValue = {\n id: string;\n};\n\nexport const FormItemContext = createContext<FormItemContextValue>({} as FormItemContextValue);\n\nexport function FormItem({ children, ...props }: FormItemProps) {\n const formItemId = useId();\n return (\n <FormItemContext value={{ id: formItemId }}>\n <div {...props}>{children}</div>\n </FormItemContext>\n );\n}\n","// core\nimport { useContext } from \"react\";\nimport { useFormContext, type UseFormGetFieldState } from \"react-hook-form\";\n\n// components\nimport { FormFieldContext } from \"./form-field\";\nimport { FormItemContext } from \"./form-item\";\n\nexport type UseFormFieldOptions = {\n skipValidationIfNoContext?: boolean;\n};\n\nexport type UseFormFieldReturn = ReturnType<UseFormGetFieldState<any>> & {\n prefixId: string | undefined;\n name: string | undefined;\n formItemId: string | undefined;\n formLabelId: string | undefined;\n formErrorMessageId: string | undefined;\n};\n\nexport function useFormField(options?: UseFormFieldOptions): UseFormFieldReturn {\n const { name: formFieldName } = useContext(FormFieldContext);\n const { id: formItemId } = useContext(FormItemContext);\n\n const formContext = useFormContext();\n\n if ((!formFieldName || !formItemId || !formContext) && options?.skipValidationIfNoContext) {\n return {\n prefixId: undefined,\n name: undefined,\n formItemId: undefined,\n formLabelId: undefined,\n formErrorMessageId: undefined,\n isDirty: false,\n invalid: false,\n isTouched: false,\n isValidating: false,\n error: undefined\n };\n }\n\n if (!formFieldName) {\n throw new Error(\n \"useFormField must be used inside a <FormField> component. Ensure that <FormField> wraps the component using useFormField.\"\n );\n }\n\n if (!formItemId) {\n throw new Error(\n \"useFormField must be used inside a <FormItem> component. Ensure that <FormItem> wraps the component using useFormField.\"\n );\n }\n\n if (!formContext) {\n throw new Error(\"useFormField must be used inside a <Form> component.\");\n }\n\n const fieldState = formContext?.getFieldState?.(formFieldName, formContext?.formState);\n const prefixId: string = formItemId?.concat(formFieldName);\n\n return {\n prefixId,\n name: formFieldName,\n formItemId: prefixId ? `${prefixId}-form-item` : undefined,\n formLabelId: prefixId ? `${prefixId}-form-label` : undefined,\n formErrorMessageId: prefixId ? `${prefixId}-form-error-message` : undefined,\n ...fieldState\n };\n}\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Utility function to intelligently combine class names using `clsx`\n * and resolve Tailwind CSS class conflicts using `tailwind-merge`.\n *\n * This function is commonly used in React or other frontend frameworks\n * to conditionally merge Tailwind classes and avoid class duplication or conflict,\n * especially when combining utility variants like `bg-red-500` and `bg-blue-500`.\n *\n * @param {...ClassValue[]} args - A variadic list of class values. Each can be:\n * - string: e.g. `\"px-4 py-2\"`\n * - object: e.g. `{ 'text-red-500': isError }`\n * - array: e.g. `['bg-blue-500', conditionalClass]`\n * These will be normalized and merged by `clsx`, then conflict-resolved by `tailwind-merge`.\n *\n * @returns {string} A single string of valid Tailwind class names with conflicts resolved.\n *\n * @example\n * ```tsx\n * <button className={cn(\"px-4 py-2\", isPrimary && \"bg-blue-500\", \"bg-red-500\")} />\n * // Result: \"px-4 py-2 bg-blue-500\" (if isPrimary is true)\n * ```\n *\n * @see https://github.com/lukeed/clsx - `clsx` docs for conditional class logic\n * @see https://github.com/dcastil/tailwind-merge - `tailwind-merge` docs for conflict resolution\n */\nexport default function cn(...args: ClassValue[]): string {\n return twMerge(clsx(args));\n}\n","// core\nimport React from \"react\";\n\n// hooks\nimport { useFormField } from \"./use-form-field\";\n\n// utils\nimport cn from \"../../../utils/cn\";\n\nexport type FormErrorMessageProps = React.ComponentProps<\"p\"> & {\n errorClassName?: string;\n};\n\nexport function FormErrorMessage({ className, errorClassName, ...props }: FormErrorMessageProps) {\n const { formErrorMessageId, invalid, error } = useFormField();\n\n if (!invalid) {\n return null;\n }\n\n return (\n <p\n id={formErrorMessageId}\n className={cn(\n \"text-sm font-medium text-destructive text-red-600 flex items-center gap-1 mt-2 ml-1\",\n className,\n {\n \"text-red-600\": invalid,\n [errorClassName ?? \"\"]: invalid\n }\n )}\n aria-invalid={invalid}\n aria-errormessage={error?.message}\n {...props}\n >\n {error?.message}\n </p>\n );\n}\n","// core\nimport React from \"react\";\n\n// hooks\nimport { useFormField } from \"./use-form-field\";\n\n// utils\nimport cn from \"../../../utils/cn\";\n\nexport type FormLabelProps = React.ComponentProps<\"label\"> & {\n errorClassName?: string;\n required?: boolean;\n};\n\nexport function FormLabel({ children, className, errorClassName, required, ...props }: FormLabelProps) {\n const { formItemId, formLabelId, invalid } = useFormField();\n\n return (\n <label\n id={formLabelId}\n htmlFor={formItemId}\n className={cn(\"block mb-2\", className, {\n \"text-destructive text-red-600\": invalid,\n [errorClassName ?? \"\"]: invalid\n })}\n aria-label={formLabelId}\n aria-invalid={invalid}\n {...props}\n >\n {children}\n {required && <span className=\"text-red-600 ml-1\">*</span>}\n </label>\n );\n}\n","type TanstackTableInstance = {\n getAllColumns(): any[];\n};\n\nexport default function getColumnIdFromTable<T extends TanstackTableInstance>(table: T) {\n const allColumns = table.getAllColumns();\n const availableColumns = allColumns.map((col) => ({ id: col.id }));\n const currentColumns = allColumns.filter((col) => col.getIsVisible()).map((col) => ({ id: col.id }));\n\n return { availableColumns, currentColumns };\n}\n","// src/utils/useGridSettingsStore.ts\nimport { create } from \"zustand\";\nimport type { Column, GridPayload } from \"../components/grid-settings/types\";\n\ntype TanstackTableInstance = {\n getAllColumns(): any[];\n getVisibleLeafColumns(): any[];\n};\n\ntype UseGridSettingsStoreActions = {\n setAvailableColumns: (cols: Column[]) => void;\n setCurrentColumns: (cols: Column[]) => void;\n setPayload: (payload: GridPayload) => void;\n reset: () => void;\n extractColumns: (table: TanstackTableInstance) => {\n availableColumns: Column[];\n currentColumns: Column[];\n };\n};\n\ntype UseGridSettingsStoreState = {\n availableColumns: Column[];\n currentColumns: Column[];\n payload: GridPayload;\n};\n\nexport const useGridSettingsStore = create<UseGridSettingsStoreState & UseGridSettingsStoreActions>(\n (set) => ({\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 })\n);\n","import React from \"react\";\nimport { cn } from \"../../../utils\";\n\nexport type TextInputProps = React.ComponentProps<\"input\">;\n\nexport default function TextInput({ className, ...props }: TextInputProps) {\n return <input type=\"text\" className={cn(\"input\", className)} {...props} />;\n}\n","import React from \"react\";\nimport { cn } from \"../../../utils\";\n\nexport type NumberInputProps = React.ComponentProps<\"input\">;\n\nexport default function NumberInput({ className, ...props }: NumberInputProps) {\n return <input type=\"number\" className={cn(\"input\", className)} {...props} />;\n}\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 { 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 { cn } from \"../advanceSearch/lib/utils\";\nimport type { ContentSlot } from \"./DataTable\";\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 renderContentSlot(slot: ContentSlot, defaultWrapperProps?: React.ComponentProps<\"div\">) {\n const { content, wrapperProps = {} } = slot;\n\n const mergedProps: React.ComponentProps<\"div\"> = {\n ...defaultWrapperProps,\n ...wrapperProps,\n className: cn(defaultWrapperProps?.className, wrapperProps?.className)\n };\n\n if (!content) {\n return null;\n }\n\n return <div {...mergedProps}>{content}</div>;\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","export function isDefined(value: any): boolean {\n return value !== null && value !== undefined;\n}\n\nexport function isEmptyObject(value: any) {\n return !!value && Object.keys(value).length === 0 && value.constructor === Object;\n}\n","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","import { HeaderContext } from \"@tanstack/react-table\";\nimport { Triangle } from \"lucide-react\";\nimport { useHover } from \"../../../hooks\";\nimport { cn } from \"../../../utils\";\nimport { stripNullishObject } from \"../../../utils/filters\";\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};\n\nconst HeaderCell = ({ rootClassName, labelClassName, context, label, sorterProps }: 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 gap-2\",\n {\n \"cursor-pointer\": context?.column?.getCanSort()\n },\n rootClassName\n )}\n {...stripNullishObject<\n React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>\n >({\n onClick: (event) => {\n event.preventDefault();\n if (context?.column?.getCanSort()) {\n context?.column?.toggleSorting();\n }\n }\n })}\n >\n <span className={cn(\"inline-block font-bold\", labelClassName)}>{label}</span>\n {showSorter && (\n <div\n className=\"flex flex-col\"\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 <Triangle\n className={cn(\"fill-gray-300 stroke-0\", {\n \"fill-[#41875c]\": context?.column?.getIsSorted() === \"asc\",\n \"fill-[#41875c]/45\": context?.column?.getNextSortingOrder() === \"asc\" && hovering\n })}\n size={12}\n />\n <Triangle\n className={cn(\"rotate-180 fill-gray-300 stroke-0\", {\n \"fill-[#41875c]\": context?.column?.getIsSorted() === \"desc\",\n \"fill-[#41875c]/45\": context?.column?.getNextSortingOrder() === \"desc\" && hovering\n })}\n size={12}\n />\n </div>\n )}\n {/* TODO: if we need pin columns then add here and styling */}\n {/* {context?.column?.getCanPin() && (\n <div>\n <button\n onClick={() => {\n if (context?.column?.getIsPinned()) {\n context?.column?.pin(false);\n } else {\n context?.column?.pin(\"left\");\n }\n }}\n >\n {context?.column?.getIsPinned() ?\n <Pin className=\"rotate-45\" size={12} />\n : <Pin size={12} />}\n </button>\n </div>\n )} */}\n </div>\n );\n};\n\nexport default HeaderCell;\n","import * as React from \"react\";\nimport { cn } from \"../../utils\";\n\nfunction TableContainer({ className, children, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"table-container\"\n className={cn(\"relative w-full overflow-x-auto\", className)}\n {...props}\n >\n {children}\n </div>\n );\n}\n\nfunction Table({ className, ...props }: React.ComponentProps<\"table\">) {\n return (\n <table\n data-slot=\"table\"\n className={cn(\"w-full caption-bottom text-sm border-separate border-spacing-0\", className)}\n {...props}\n />\n );\n}\n\nfunction TableHeader({ className, ...props }: React.ComponentProps<\"thead\">) {\n return (\n <thead\n data-slot=\"table-header\"\n className={cn(\"[&_tr]:border-b bg-[#f7f4f4]\", className)}\n {...props}\n />\n );\n}\n\nfunction TableBody({ className, ...props }: React.ComponentProps<\"tbody\">) {\n return (\n <tbody data-slot=\"table-body\" className={cn(\"[&_tr:last-child]:border-0\", className)} {...props} />\n );\n}\n\nfunction TableFooter({ className, ...props }: React.ComponentProps<\"tfoot\">) {\n return (\n <tfoot\n data-slot=\"table-footer\"\n className={cn(\"bg-muted/50 border-t font-medium [&>tr]:last:border-b-0\", className)}\n {...props}\n />\n );\n}\n\nfunction TableRow({ className, ...props }: React.ComponentProps<\"tr\">) {\n return (\n <tr\n data-slot=\"table-row\"\n className={cn(\"data-[state=selected]:bg-[#dfeae3]\", className)}\n {...props}\n />\n );\n}\n\nfunction TableHead({ className, ...props }: React.ComponentProps<\"th\">) {\n return (\n <th\n data-slot=\"table-head\"\n className={cn(\n \"text-foreground h-9 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px] hover:bg-gray-200 bg-[#f7f4f4] truncate\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableCell({ className, ...props }: React.ComponentProps<\"td\">) {\n return (\n <td\n data-slot=\"table-cell\"\n className={cn(\n \"p-2 h-10 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px] border-b truncate\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction TableCaption({ className, ...props }: React.ComponentProps<\"caption\">) {\n return (\n <caption\n data-slot=\"table-caption\"\n className={cn(\"text-muted-foreground mt-4 text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n TableContainer,\n Table,\n TableHeader,\n TableBody,\n TableFooter,\n TableHead,\n TableRow,\n TableCell,\n TableCaption\n};\n","import type { Header } from \"@tanstack/react-table\";\nimport type { CSSProperties } from \"react\";\nimport { cn } from \"../../utils\";\n\nexport type ColumnResizerProps = {\n header: Header<any, any>;\n className?: string;\n style?: CSSProperties;\n};\n\nconst ColumnResizer = ({ header, className, style }: ColumnResizerProps) => {\n if (!header.column.getCanResize()) {\n return null;\n }\n\n const resizeHandler = header.getResizeHandler();\n\n return (\n <div\n className={cn(\n \"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 { type Table } from \"@tanstack/react-table\";\nimport { Bug } from \"lucide-react\";\nimport { useState } from \"react\";\n\ntype StateKey =\n | \"columnFilters\"\n | \"globalFilter\"\n | \"sorting\"\n | \"pagination\"\n | \"columnVisibility\"\n | \"columnOrder\"\n | \"rowSelection\"\n | \"expanded\"\n | \"grouping\"\n | \"columnPinning\"\n | \"columnSizing\"\n | \"columnSizingInfo\"\n | \"rowPinning\";\n\nconst stateOptions: readonly StateKey[] = [\n \"columnFilters\",\n \"globalFilter\",\n \"sorting\",\n \"pagination\",\n \"columnVisibility\",\n \"columnOrder\",\n \"rowSelection\",\n \"expanded\",\n \"grouping\",\n \"columnPinning\",\n \"columnSizing\",\n \"columnSizingInfo\",\n \"rowPinning\"\n];\n\ntype ModelKey = keyof Table<any>;\n\nconst modelOptions: readonly ModelKey[] = [\n \"getRowModel\",\n \"getGroupedRowModel\",\n \"getPaginationRowModel\",\n \"getCoreRowModel\",\n \"getFilteredRowModel\",\n \"getFilteredSelectedRowModel\",\n \"getSortedRowModel\",\n \"getPreExpandedRowModel\",\n \"getGroupedSelectedRowModel\",\n \"getPrePaginationRowModel\",\n \"getPreSelectedRowModel\",\n \"getPreSortedRowModel\",\n \"getSelectedRowModel\",\n \"getExpandedRowModel\",\n \"getIsAllColumnsVisible\",\n \"getIsSomeColumnsPinned\",\n \"getIsSomeColumnsVisible\",\n \"getHeaderGroups\",\n \"getFlatHeaders\",\n \"getLeafHeaders\",\n \"getLeftFlatHeaders\",\n \"getCenterLeafHeaders\",\n \"getRightFlatHeaders\",\n \"getAllColumns\",\n \"getAllFlatColumns\",\n \"getAllLeafColumns\",\n \"getLeftLeafColumns\",\n \"getCenterLeafColumns\",\n \"getRightLeafColumns\",\n \"getVisibleFlatColumns\",\n \"getVisibleLeafColumns\",\n \"getLeftVisibleLeafColumns\",\n \"getRightVisibleLeafColumns\",\n \"getCenterVisibleLeafColumns\"\n];\n\nconst DataTableDevTool = ({ table }: { table: Table<any> }) => {\n const [open, setOpen] = useState(false);\n const [visibleStates, setVisibleStates] = useState<StateKey[]>([]);\n const [visibleModels, setVisibleModels] = useState<ModelKey[]>([]);\n const tableState = table.getState();\n\n const toggleValue = <U extends string>(arr: U[], value: U): U[] =>\n arr.includes(value) ? arr.filter((v) => v !== value) : [...arr, value];\n\n const getCircularReplacer = () => {\n const seen = new WeakSet();\n return (_key: string, value: any) => {\n if (typeof value === \"object\" && value !== null) {\n if (seen.has(value)) return \"[Circular]\";\n seen.add(value);\n }\n return value;\n };\n };\n\n const renderStateValue = (key: StateKey) => {\n const value = tableState[key];\n if (value == null) return null;\n return (\n <div key={key} className=\"mt-4\">\n <div className=\"font-bold capitalize\">{key}</div>\n <pre className=\"bg-gray-100 text-xs p-2 rounded overflow-x-auto whitespace-pre-wrap\">\n {JSON.stringify(value, null, 2)}\n </pre>\n </div>\n );\n };\n\n const renderModelValue = (key: ModelKey) => {\n let value: unknown;\n try {\n value = (table as any)[key]();\n } catch {\n value = undefined;\n }\n if (value == null) return null;\n let jsonString = \"\";\n try {\n jsonString = JSON.stringify(value, getCircularReplacer(), 2);\n } catch {\n jsonString = \"[Cannot stringify]\";\n }\n\n return (\n <div key={key} className=\"mt-4\">\n <div className=\"font-bold capitalize\">{key}</div>\n <pre className=\"bg-gray-100 text-xs p-2 rounded overflow-x-auto whitespace-pre-wrap\">\n {jsonString}\n </pre>\n </div>\n );\n };\n\n if (process.env.NODE_ENV === \"production\") return null;\n\n return (\n <div>\n {/* Floating Button */}\n <button\n onClick={() => setOpen(true)}\n className=\"fixed bottom-6 right-6 z-50 rounded-full bg-white border shadow p-3\"\n aria-label=\"Open debug panel\"\n >\n <Bug className=\"w-5 h-5\" />\n </button>\n\n {/* Sidebar Debug Panel */}\n {open && (\n <aside className=\"fixed top-0 right-0 h-full w-[420px] bg-white shadow-lg border-l border-gray-200 z-50 flex flex-col\">\n {/* Header */}\n <header className=\"flex items-center justify-between p-4 border-b border-gray-200\">\n <h2 className=\"text-lg font-semibold\">Debug Table State &amp; Models</h2>\n <button onClick={() => setOpen(false)} className=\"text-xl font-bold\" aria-label=\"Close\">\n ×\n </button>\n </header>\n\n {/* Main Content */}\n <main className=\"overflow-auto p-4 flex-grow space-y-4\">\n <section className=\"max-h-80 overflow-y-auto overflow-x-hidden\">\n {/* Select Table States */}\n <fieldset>\n <legend className=\"block text-sm font-medium mb-1\">Show Table State</legend>\n <div className=\"space-y-1\">\n {stateOptions.map((stateKey) => (\n <label\n key={stateKey}\n className=\"flex items-center gap-2 cursor-pointer hover:bg-gray-50 p-1 rounded\"\n >\n <input\n type=\"checkbox\"\n className=\"accent-blue-500\"\n checked={visibleStates.includes(stateKey)}\n onChange={() => setVisibleStates(toggleValue(visibleStates, stateKey))}\n />\n <span className=\"truncate\">{stateKey}</span>\n </label>\n ))}\n </div>\n </fieldset>\n\n {/* Select Table Models */}\n <fieldset>\n <legend className=\"block text-sm font-medium mb-1\">Show Table Models</legend>\n <div className=\"space-y-1\">\n {modelOptions.map((modelKey) => (\n <label\n key={modelKey}\n className=\"flex items-center gap-2 cursor-pointer hover:bg-gray-50 p-1 rounded\"\n >\n <input\n type=\"checkbox\"\n className=\"accent-green-500\"\n checked={visibleModels.includes(modelKey)}\n onChange={() => setVisibleModels(toggleValue(visibleModels, modelKey))}\n />\n <span className=\"truncate\">{modelKey}</span>\n </label>\n ))}\n </div>\n </fieldset>\n </section>\n\n {/* JSON Outputs */}\n <hr className=\"my-2 border-gray-300\" />\n {visibleStates.map(renderStateValue)}\n {visibleModels.map(renderModelValue)}\n </main>\n </aside>\n )}\n </div>\n );\n};\n\nexport default DataTableDevTool;\n","import { type Column } from \"@tanstack/react-table\";\nimport { type CSSProperties } from \"react\";\nimport { cn } from \"../../utils\";\n\nexport function getColumnPinningStyles(column: Column<any, any>): {\n classes: string;\n style: Pick<CSSProperties, \"left\" | \"right\">;\n} {\n const isPinned = column.getIsPinned();\n\n const isLastLeftPinnedColumn = isPinned === \"left\" && column.getIsLastColumn(\"left\");\n const isFirstRightPinnedColumn = isPinned === \"right\" && column.getIsFirstColumn(\"right\");\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","import { 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 DataTableDevTool from \"./DataTableDevTool\";\nimport { cn } from \"../../utils\";\nimport { isDefined } from \"../../utils/common\";\nimport { stripNullishObject } from \"../../utils/filters\";\nimport { getColumnPinningStyles } from \"./helpers\";\nimport { renderContentSlot } from \"./utils\";\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 DataTableRowClickHandler<TData extends RowData> = (\n rowData: TData,\n info: {\n event: React.MouseEvent<HTMLTableRowElement>;\n row: Row<TData>;\n table: TanstackTableType<TData>;\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 DataTableComponentProps<TData> = {\n containerProps?: React.ComponentProps<typeof TableContainer>;\n tableProps?: React.ComponentProps<typeof Table>;\n tableHeaderProps?: React.ComponentProps<typeof TableHeader>;\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 columnResizerProps?: Omit<ColumnResizerProps, \"header\">;\n};\n\nexport type ContentSlot = {\n content: React.ReactNode;\n wrapperProps?: React.ComponentProps<\"div\">;\n};\n\nexport type DataTableStatusContent = {\n initialLoading?: ContentSlot;\n fetchingMore?: ContentSlot;\n noMoreData?: ContentSlot;\n emptyData?: ContentSlot;\n emptyFilteredData?: ContentSlot;\n};\n\nexport type DataTableScrollFetch = {\n enabled: boolean;\n fetchMore?: () => void;\n hasMore?: boolean;\n isFetchingMore?: 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 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 statusContent,\n rowIdKey,\n childrenKey,\n onRowClick,\n debug,\n components\n}: DataTableProps<TData>) => {\n const table = useReactTable<TData>({\n // required properties\n columns,\n data: data || fallbackData,\n getCoreRowModel: getCoreRowModel(),\n // optional properties\n ...stripNullishObject<TableOptions<TData>>({\n // state for filters, sorting, pinning, row selection, etc.\n initialState: stripNullishObject<TableState>({\n columnFilters:\n filters?.enabled && (filters?.column?.enabled ?? true) ?\n filters?.column?.initialState\n : undefined,\n globalFilter: filters?.enabled ? filters?.global?.initialState : undefined,\n sorting: sorting?.enabled ? sorting?.initialState : undefined,\n columnOrder: columnOrder?.enabled ? columnOrder?.initialState : undefined,\n columnVisibility: columnVisibility?.enabled ? columnVisibility?.initialState : undefined,\n columnPinning: columnPinning?.enabled ? columnPinning?.initialState : undefined,\n rowSelection: rowSelection?.enabled ? rowSelection?.initialState : undefined,\n expanded: rowExpansion?.enabled ? rowExpansion?.initialState : undefined,\n grouping: columnGrouping?.enabled ? columnGrouping?.initialState : undefined\n }),\n state: stripNullishObject<TableState>({\n columnFilters:\n filters?.enabled && (filters?.column?.enabled ?? true) ? filters?.column?.state : undefined,\n globalFilter: filters?.enabled ? filters?.global?.state : undefined,\n sorting: sorting?.enabled ? sorting?.state : undefined,\n columnOrder: columnOrder?.enabled ? columnOrder?.state : undefined,\n columnVisibility: columnVisibility?.enabled ? columnVisibility?.state : undefined,\n columnPinning: columnPinning?.enabled ? columnPinning?.state : undefined,\n rowSelection: rowSelection?.enabled ? rowSelection?.state : undefined,\n expanded: rowExpansion?.enabled ? rowExpansion?.state : undefined,\n grouping: columnGrouping?.enabled ? columnGrouping?.state : undefined\n }),\n // common\n getRowId: rowIdKey,\n getSubRows: childrenKey,\n // shared configs filters column and global\n enableFilters: filters?.enabled ?? false,\n filterFromLeafRows: filters?.enabled && (filters?.filterFromLeafRows ?? false),\n manualFiltering: filters?.enabled && (filters?.manual ?? false),\n maxLeafRowFilterDepth: filters?.enabled ? filters?.maxDepth : undefined,\n // column filters\n getFilteredRowModel: !filters?.manual && filters?.enabled ? getFilteredRowModel() : undefined,\n enableColumnFilters: filters?.enabled && (filters?.column?.enabled ?? true),\n onColumnFiltersChange:\n filters?.enabled && (filters?.column?.enabled ?? true) ?\n filters?.column?.onFilterChange\n : undefined,\n // global filters\n enableGlobalFilter: filters?.enabled && (filters?.global?.enabled ?? true),\n globalFilterFn:\n filters?.enabled && (filters?.global?.enabled ?? true) ? filters?.global?.filterFn : undefined,\n onGlobalFilterChange:\n filters?.enabled && (filters?.global?.enabled ?? true) ?\n filters?.global?.onFilterChange\n : undefined,\n getColumnCanGlobalFilter:\n filters?.enabled && (filters?.global?.enabled ?? true) ?\n (filters?.global?.canColumnFilterable ?? (() => true))\n : undefined,\n // sorting\n getSortedRowModel: !sorting?.manual && sorting?.enabled ? getSortedRowModel() : undefined,\n manualSorting: sorting?.enabled && (sorting?.manual ?? false),\n enableSorting: sorting?.enabled ?? false,\n // default behavior: column with type number is sort by desc and string sort by asc first, we fix force always asc\n sortDescFirst: sorting?.enabled ? (sorting?.sortDescFirst ?? false) : false,\n onSortingChange: sorting?.enabled ? sorting?.onSortingChange : undefined,\n // ordering\n onColumnOrderChange: columnOrder?.enabled ? columnOrder?.onOrderChange : undefined,\n // visibility\n onColumnVisibilityChange:\n columnVisibility?.enabled ? columnVisibility?.onVisibilityChange : undefined,\n // pinning\n enableColumnPinning: columnPinning?.enabled ?? false,\n onColumnPinningChange: columnPinning?.enabled ? columnPinning?.onPinningChange : undefined,\n // row selection\n enableRowSelection: rowSelection?.enabled ? rowSelection?.canRowSelectable : false,\n enableMultiRowSelection: rowSelection?.enabled ? (rowSelection?.multiSelect ?? true) : true,\n onRowSelectionChange: rowSelection?.enabled ? rowSelection?.onSelectionChange : undefined,\n // row expanded\n getExpandedRowModel:\n // when grouping is use then we should open this\n !rowExpansion?.manual && rowExpansion?.enabled ? getExpandedRowModel() : undefined,\n manualExpanding: rowExpansion?.enabled && (rowExpansion?.manual ?? false),\n enableExpanding: rowExpansion?.enabled ?? false,\n getIsRowExpanded: rowExpansion?.enabled ? rowExpansion?.isRowExpanded : undefined,\n getRowCanExpand: rowExpansion?.enabled ? rowExpansion?.canRowExpand : undefined,\n onExpandedChange: rowExpansion?.enabled ? rowExpansion?.onExpandedChange : undefined,\n // grouping\n getGroupedRowModel:\n !columnGrouping?.manual && columnGrouping?.enabled ? getGroupedRowModel() : undefined,\n enableGrouping: columnGrouping?.enabled ?? false,\n manualGrouping: columnGrouping?.enabled && (columnGrouping?.manual ?? false),\n groupedColumnMode: columnGrouping?.enabled ? (columnGrouping?.groupedMode ?? false) : false,\n aggregationFns: columnGrouping?.enabled ? columnGrouping?.customAggregationFns : undefined,\n onGroupingChange: columnGrouping?.enabled ? columnGrouping?.onGroupingChange : undefined,\n // column sizing\n enableColumnResizing: columnResizing?.enabled ?? false,\n columnResizeMode: columnResizing?.enabled ? (columnResizing?.resizeMode ?? \"onChange\") : \"onChange\"\n })\n });\n\n if (isDefined(tableRef) && !isDefined(tableRef?.current)) {\n tableRef!.current = table;\n }\n\n const tableContainerRef = useRef<HTMLDivElement | null>(null);\n\n const isTableEmpty = table.getCoreRowModel().rows.length === 0;\n const isTableEmptyAfterFiltering = table.getRowModel().rows.length === 0;\n const isFiltering = table.getState().columnFilters.length > 0 || !!table.getState().globalFilter;\n\n const leftVisibleLeftColumns = table.getLeftVisibleLeafColumns();\n const centerVisibleLeafColumns = table.getCenterVisibleLeafColumns();\n const rightVisibleLeafColumns = table.getRightVisibleLeafColumns();\n\n const { isSomeColumnsFilterable, filterableColumns } = useMemo(() => {\n const mergedColumns: Column<TData, any>[] = [\n ...leftVisibleLeftColumns,\n ...centerVisibleLeafColumns,\n ...rightVisibleLeafColumns\n ];\n\n const isSomeColumnsFilterable = mergedColumns.some(\n (column) => column.getCanFilter() && column.columnDef.meta?.renderColumnFilter\n );\n\n return { isSomeColumnsFilterable, filterableColumns: mergedColumns };\n }, [centerVisibleLeafColumns, leftVisibleLeftColumns, rightVisibleLeafColumns]);\n\n const fetchMoreOnScrollReached = useCallback(\n (containerRefElement?: HTMLDivElement | null) => {\n if (!scrollFetch?.enabled) {\n return;\n }\n\n if (containerRefElement) {\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement;\n const threshold = 1.5; // 1.5x of container height viewport\n if (\n scrollHeight - scrollTop - clientHeight < clientHeight * threshold &&\n !scrollFetch?.isFetchingMore &&\n scrollFetch?.hasMore &&\n scrollFetch?.fetchMore\n ) {\n scrollFetch.fetchMore();\n }\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [scrollFetch?.enabled, scrollFetch?.isFetchingMore, scrollFetch?.hasMore, scrollFetch?.fetchMore]\n );\n\n useEffect(() => {\n fetchMoreOnScrollReached(tableContainerRef.current);\n }, [fetchMoreOnScrollReached]);\n\n return (\n <TableContainer\n ref={tableContainerRef}\n {...components?.containerProps}\n className={cn(\n \"relative w-full overflow-auto h-full max-h-dvh max-w-full bg-white\",\n components?.containerProps?.className\n )}\n onScroll={(e) => fetchMoreOnScrollReached(e.currentTarget)}\n >\n {isInitialLoading ?\n <>\n {renderContentSlot(statusContent?.initialLoading || { content: \"Loading...\" }, {\n className: \"flex flex-col h-full items-center justify-center text-sm py-4\"\n })}\n </>\n : isTableEmpty ?\n <>\n {renderContentSlot(statusContent?.emptyData || { content: \"There's nothing here yet.\" }, {\n className: \"flex flex-col h-full items-center justify-center text-sm py-4\"\n })}\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 return (\n <TableHead\n key={header.id}\n colSpan={header.colSpan}\n {...header.column.columnDef?.meta?.headerProps}\n className={cn(classes, header.column.columnDef?.meta?.headerProps?.className)}\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 ...header.column.columnDef?.meta?.headerProps?.style\n }}\n >\n {header.isPlaceholder ? null : (\n flexRender(header.column.columnDef.header, header.getContext())\n )}\n <ColumnResizer header={header} {...components?.columnResizerProps} />\n </TableHead>\n );\n })}\n </TableRow>\n );\n })}\n\n {/* filter row */}\n {isSomeColumnsFilterable && (\n <TableRow>\n {filterableColumns.map((column) => {\n const { classes, style } = getColumnPinningStyles(column);\n const useColumnSizing =\n column.columnDef.meta?.useColumnSizing ?? columnResizing?.enabled ?? false;\n\n return (\n <TableCell\n key={column.id}\n {...column.columnDef?.meta?.cellProps}\n className={cn(\n \"bg-white border-b\",\n classes,\n column.columnDef?.meta?.cellProps?.className\n )}\n style={{\n // TODO: should we separate styles for filter or use same columns styles\n ...style,\n width: useColumnSizing ? column.getSize() : undefined,\n minWidth: useColumnSizing ? column.columnDef.minSize : undefined,\n maxWidth: useColumnSizing ? column.columnDef.maxSize : undefined,\n ...column.columnDef?.meta?.cellProps?.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 {...tableDataRowProps}\n key={row.id}\n className={cn(\"group\", tableDataRowProps?.className)}\n data-state={row.getIsSelected() ? \"selected\" : \"non-selected\"}\n onClick={(event) => {\n if (typeof onRowClick === \"function\") {\n onRowClick(row.original, { event, row, table });\n }\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 return (\n <TableCell\n key={cell.id}\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 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 ...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 {isTableEmptyAfterFiltering && (\n <>\n {renderContentSlot(\n statusContent?.emptyFilteredData || {\n content: \"No records found. Please try a different search.\"\n },\n {\n className: \"flex flex-col h-[calc(100%-76px)] items-center justify-center text-sm py-4\"\n }\n )}\n </>\n )}\n\n {scrollFetch?.enabled && !isFiltering && !isInitialLoading && scrollFetch?.isFetchingMore && (\n <>\n {renderContentSlot(statusContent?.fetchingMore || { content: \"Loading more...\" }, {\n className: \"flex items-center justify-center text-sm py-4\"\n })}\n </>\n )}\n\n {scrollFetch?.enabled &&\n !isFiltering &&\n !isInitialLoading &&\n !scrollFetch?.hasMore &&\n !scrollFetch?.isFetchingMore && (\n <>\n {renderContentSlot(statusContent?.noMoreData || { content: null }, {\n className: \"flex items-center justify-center text-sm py-4\"\n })}\n </>\n )}\n </>\n }\n\n {/* devtool */}\n {debug && <DataTableDevTool table={table} />}\n </TableContainer>\n );\n};\n\nexport default DataTable;\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/cn';\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer\",\n {\n variants: {\n variant: {\n default: 'bg-sus-primary-1 text-primary-foreground shadow-xs hover:bg-sus-primary/90',\n destructive:\n 'bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60',\n outline:\n 'border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50',\n secondary: 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80',\n ghost: 'hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50',\n link: 'text-primary underline-offset-4 hover:underline',\n cancel:\n 'border bg-[#8B8B8B] text-white shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50',\n defaultSelect: 'bg-primary text-primary-foreground shadow-xs hover:bg-sus-primary/90 py-2',\n defaultOutline:\n 'border bg-background py-2 shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50',\n },\n size: {\n default: 'h-9 px-4 has-[>svg]:px-3',\n option: 'py-5 h-9 px-4 has-[>svg]:px-3',\n sm: 'h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5',\n lg: 'h-10 rounded-md px-6 has-[>svg]:px-4',\n icon: 'size-9',\n 'icon-xs': 'size-5',\n 'icon-sm': 'size-[22px]',\n 'icon-md': 'size-7',\n 'icon-lg': 'size-10',\n },\n active: {\n true: 'bg-sus-primary-1 text-white',\n false: '',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'default',\n },\n }\n);\n\nfunction Button({\n className,\n variant,\n size,\n active,\n asChild = false,\n ...props\n}: React.ComponentProps<'button'> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n active?: boolean;\n }) {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className, active }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","import {\n FieldError,\n FieldErrors,\n FieldValues,\n Ref,\n ResolverOptions,\n get,\n} from 'react-hook-form';\n\nconst setCustomValidity = (\n ref: Ref,\n fieldPath: string,\n errors: FieldErrors,\n) => {\n if (ref && 'reportValidity' in ref) {\n const error = get(errors, fieldPath) as FieldError | undefined;\n ref.setCustomValidity((error && error.message) || '');\n\n ref.reportValidity();\n }\n};\n\n// Native validation (web only)\nexport const validateFieldsNatively = <TFieldValues extends FieldValues>(\n errors: FieldErrors,\n options: ResolverOptions<TFieldValues>,\n): void => {\n for (const fieldPath in options.fields) {\n const field = options.fields[fieldPath];\n if (field && field.ref && 'reportValidity' in field.ref) {\n setCustomValidity(field.ref, fieldPath, errors);\n } else if (field.refs) {\n field.refs.forEach((ref: HTMLInputElement) =>\n setCustomValidity(ref, fieldPath, errors),\n );\n }\n }\n};\n","import {\n Field,\n FieldErrors,\n FieldValues,\n InternalFieldName,\n ResolverOptions,\n get,\n set,\n} from 'react-hook-form';\nimport { validateFieldsNatively } from './validateFieldsNatively';\n\nexport const toNestErrors = <TFieldValues extends FieldValues>(\n errors: FieldErrors,\n options: ResolverOptions<TFieldValues>,\n): FieldErrors<TFieldValues> => {\n options.shouldUseNativeValidation && validateFieldsNatively(errors, options);\n\n const fieldErrors = {} as FieldErrors<TFieldValues>;\n for (const path in errors) {\n const field = get(options.fields, path) as Field['_f'] | undefined;\n const error = Object.assign(errors[path] || {}, {\n ref: field && field.ref,\n });\n\n if (isNameInFieldArray(options.names || Object.keys(errors), path)) {\n const fieldArrayErrors = Object.assign({}, get(fieldErrors, path));\n\n set(fieldArrayErrors, 'root', error);\n set(fieldErrors, path, fieldArrayErrors);\n } else {\n set(fieldErrors, path, error);\n }\n }\n\n return fieldErrors;\n};\n\nconst isNameInFieldArray = (\n names: InternalFieldName[],\n name: InternalFieldName,\n) => names.some((n) => n.startsWith(name + '.'));\n","import { toNestErrors, validateFieldsNatively } from '@hookform/resolvers';\nimport { FieldError, FieldErrors, appendErrors } from 'react-hook-form';\nimport { ZodError, z } from 'zod';\nimport type { Resolver } from './types';\n\nconst isZodError = (error: any): error is ZodError =>\n Array.isArray(error?.errors);\n\nconst parseErrorSchema = (\n zodErrors: z.ZodIssue[],\n validateAllFieldCriteria: boolean,\n) => {\n const errors: Record<string, FieldError> = {};\n for (; zodErrors.length; ) {\n const error = zodErrors[0];\n const { code, message, path } = error;\n const _path = path.join('.');\n\n if (!errors[_path]) {\n if ('unionErrors' in error) {\n const unionError = error.unionErrors[0].errors[0];\n\n errors[_path] = {\n message: unionError.message,\n type: unionError.code,\n };\n } else {\n errors[_path] = { message, type: code };\n }\n }\n\n if ('unionErrors' in error) {\n error.unionErrors.forEach((unionError) =>\n unionError.errors.forEach((e) => zodErrors.push(e)),\n );\n }\n\n if (validateAllFieldCriteria) {\n const types = errors[_path].types;\n const messages = types && types[error.code];\n\n errors[_path] = appendErrors(\n _path,\n validateAllFieldCriteria,\n errors,\n code,\n messages\n ? ([] as string[]).concat(messages as string[], error.message)\n : error.message,\n ) as FieldError;\n }\n\n zodErrors.shift();\n }\n\n return errors;\n};\n\nexport const zodResolver: Resolver =\n (schema, schemaOptions, resolverOptions = {}) =>\n async (values, _, options) => {\n try {\n const data = await schema[\n resolverOptions.mode === 'sync' ? 'parse' : 'parseAsync'\n ](values, schemaOptions);\n\n options.shouldUseNativeValidation && validateFieldsNatively({}, options);\n\n return {\n errors: {} as FieldErrors,\n values: resolverOptions.raw ? values : data,\n };\n } catch (error: any) {\n if (isZodError(error)) {\n return {\n values: {},\n errors: toNestErrors(\n parseErrorSchema(\n error.errors,\n !options.shouldUseNativeValidation &&\n options.criteriaMode === 'all',\n ),\n options,\n ),\n };\n }\n\n throw error;\n }\n };\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 { cn } from \"../../utils/index\";\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 { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\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) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-xs\", className)}\n {...props}\n >\n {body}\n </p>\n );\n}\n\nexport { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField };\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"../../utils/index\";\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 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 * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { CheckIcon, ChevronDownIcon, ChevronUpIcon } from \"lucide-react\";\n\nimport { cn } from \"../../utils/index\";\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-muted-foreground [&_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:bg-input/30 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 focus-visible:ring-[3px] 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\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <ChevronDownIcon className=\"size-4 opacity-50\" />\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-[8rem] 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 \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--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 \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm 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-4\" />\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 <ChevronUpIcon className=\"size-4\" />\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 <ChevronDownIcon className=\"size-4\" />\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","\"use client\";\n\nimport * as React from \"react\";\nimport * as TooltipPrimitive from \"@radix-ui/react-tooltip\";\n\nimport { cn } from \"../../utils/index\";\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","// 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 } from \"react-hook-form\";\nimport { cn } from \"../../utils/index\";\nimport { FormControl, FormField, FormItem, FormMessage } from \"../ui/form\";\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"../ui/select\";\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from \"../ui/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 currentColumns?: Column[];\n onRemove?: () => void;\n}\n\nexport default function SortableRow({\n availableColumns,\n currentColumns,\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.CSSProperties = {\n transform: CSS.Transform.toString(transform),\n transition\n };\n\n const capitalize = (str: string) => str.charAt(0).toUpperCase() + str.slice(1);\n const options = availableColumns.map((col) => ({\n id: col.id,\n label: capitalize(col.id)\n }));\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 <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\" ? \"text-[#8B8B8B] bg-[#EAEAEA] cursor-not-allowed\" : \"\"\n )}\n >\n <SelectValue placeholder=\"Choose column...\" />\n </SelectTrigger>\n </FormControl>\n <SelectContent>\n {options\n .filter(\n (i) =>\n i.id === field.value ||\n !currentColumns?.some((c, idx) => c.id === i.id && idx !== index)\n )\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 \"focus:bg-[#e8edea]\",\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 arrowClassName=\"!hidden\"\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 </div>\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/index\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground shadow-xs hover:bg-sus-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50\",\n secondary: \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\"\n },\n size: {\n default: \"h-9 px-4 py-2 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-xs\": \"size-5\",\n \"icon-sm\": \"size-[22px]\",\n \"icon-md\": \"size-7\",\n \"icon-lg\": \"size-10\"\n },\n active: {\n true: \"bg-sus-primary-1 text-white\", // <-- Active state style\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 { z } from \"zod\";\n\nexport const ColumnSchema = z.object({\n id: z.string().nonempty(\"This field is required\")\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","// src/gridSettings/GridSettingsModal.tsx\nimport { useEffect, useState } from \"react\";\nimport { zodResolver } from \"@hookform/resolvers/zod\";\nimport { useFieldArray, useForm } from \"react-hook-form\";\nimport { Form } from \"../ui/form\";\n\nimport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle\n} from \"../ui/dialog\";\nimport { cn } from \"../../utils/index\";\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 { Plus, X } from \"lucide-react\";\nimport { Button } from \"../ui/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) => 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\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 } 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 });\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\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 <>\n <Dialog open={isOpen} onOpenChange={(open) => !open && onClose()}>\n <DialogContent className=\"sm:max-w-xl p-0 border-0\" showCloseButton={false}>\n <DialogClose asChild>\n <button\n type=\"button\"\n aria-label=\"Close\"\n className=\"absolute top-4 right-4\"\n style={{\n background: \"none\",\n border: \"none\",\n padding: 0,\n cursor: \"pointer\"\n }}\n >\n <X className=\"w-6 h-6 text-white\" />\n </button>\n </DialogClose>\n\n <DialogHeader className={cn(\"bg-[#82B495] text-white h-25 rounded-t-lg\", headerClassname)}>\n <DialogTitle className=\"text-2xl p-4\">Grid Settings</DialogTitle>\n <DialogDescription\n className={cn(\"bg-[#8B8B8B] text-white px-4 py-2.5\", descriptionClassname)}\n >\n Add or remove columns. To change the column order, drag and drop a field.\n </DialogDescription>\n </DialogHeader>\n\n <Form {...form}>\n <form onSubmit={form.handleSubmit(onSubmit)} className=\"flex flex-col justify-between\">\n <div className=\"px-16 my-10\">\n <div className=\"space-y-3 max-h-60 overflow-y-auto pr-4\">\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 currentColumns={fields}\n />\n <DndContext\n sensors={sensors}\n collisionDetection={closestCenter}\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 currentColumns={fields}\n onRemove={() => remove(index + 1)}\n />\n ))}\n </SortableContext>\n </DndContext>\n <div className=\"px-6\">\n <Button\n type=\"button\"\n className={cn(\"bg-[#41875C99] text-white w-full rounded-t-lg\", addButtonClassname)}\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 </div>\n </div>\n\n <DialogFooter className=\"w-full px-6\">\n <div className=\"flex justify-between w-full py-4 border-t-1 border-[#B9B9B9]\">\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] text-white\", saveButtonClassname)}\n >\n Save\n </Button>\n </div>\n </DialogFooter>\n </form>\n </Form>\n </DialogContent>\n </Dialog>\n </>\n );\n};\n\nexport default GridSettingsModal;\n","import React from 'react';\n\nconst InfoIcon = (props: React.SVGProps<SVGSVGElement>) => {\n return (\n <svg\n width=\"24\"\n height=\"26\"\n viewBox=\"0 0 14 13\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <circle cx=\"6.98438\" cy=\"6.63281\" r=\"6.25\" fill=\"white\" />\n <path\n d=\"M5.98811 3.39501C5.98811 4.01786 6.44715 4.40642 6.99953 4.40642C7.5519 4.40642 7.98047 4.04833 7.98047 3.39501C7.98047 2.74168 7.5519 2.41406 6.99953 2.41406C6.44715 2.41406 5.98811 2.76073 5.98811 3.39501ZM6.13096 10.8521H7.86809V5.02928H6.13096V10.8521Z\"\n fill=\"#231F20\"\n />\n </svg>\n );\n};\n\nexport default React.memo(InfoIcon);\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","// 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 tooltipTitle?: string;\n tooltipIcon?: React.ReactNode;\n tooltipdescription?: React.ReactNode;\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\" | \"headImageURL\">;\n\nconst Navbar = ({\n className,\n title,\n subTitle,\n headImageURL = \"\",\n headImageURLClassName,\n tooltipTitle,\n tooltipIcon,\n tooltipdescription = [],\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-5 px-8 w-full h-[5.3rem] 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 gap-1\">\n {isValidElement(title) ? title : <h1 className=\"text-white text-4xl font-bold\">{title}</h1>}\n {isValidElement(subTitle) ?\n subTitle\n : <h1 className=\"text-white text-xl font-bold\">{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 sideOffset={8}\n align=\"start\"\n avoidCollisions={false}\n className={cn(\n \"bg-background text-foreground border border-black md:w-[350px] lg:w-[420px]\",\n \"transition-all duration-150 ease-out origin-top\",\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 )}\n >\n <div\n role=\"tooltip\"\n aria-label={tooltipTitle}\n className={cn(\"flex flex-col gap-4 max-w-sm text-sm text-gray-700\", className)}\n >\n {tooltipTitle && (\n <div className=\"flex items-center gap-3\">\n {isValidElement(tooltipIcon) ? tooltipIcon : <Icon size={32} aria-hidden=\"true\" />}\n <h3 className=\"text-xl font-bold\">{tooltipTitle}</h3>\n </div>\n )}\n {isValidElement(tooltipdescription) ? tooltipdescription : \"\"}\n </div>\n <TooltipArrow className=\"-my-px border-none fill-white\" asChild>\n <svg\n width={isDesktop ? 35 : 33}\n height={35}\n viewBox=\"0 0 40 35\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={cn({\n \"rotate-90 visible\": isTablet || isMobile,\n \"\": isDesktop\n })}\n >\n <path d=\"M0 0 L40 0 L0 35 Z\" fill=\"white\" />\n {isDesktop ?\n <>\n <line x1=\"0\" y1=\"40\" x2=\"0\" y2=\"0\" stroke=\"black\" strokeWidth=\"2.5\" />\n <line x1=\"40\" y1=\"0\" x2=\"0\" y2=\"35\" stroke=\"black\" strokeWidth=\"1\" />\n </>\n : <>\n <line x1=\"40\" y1=\"0\" x2=\"0\" y2=\"0\" stroke=\"black\" strokeWidth=\"2\" />\n <line x1=\"40\" y1=\"0\" x2=\"0\" y2=\"35\" stroke=\"black\" strokeWidth=\"1\" />\n </>\n }\n </svg>\n </TooltipArrow>\n </TooltipContent>\n </Tooltip>\n )}\n </div>\n\n {/* right content */}\n <div className=\"flex items-center gap-3\">\n {mainButtonText && (\n <Button\n disabled={mainButtonDisable}\n className={cn(\"bg-sus-secondary-1 hover:bg-sus-secondary-hover\", mainButtonClassName)}\n size=\"lg\"\n onClick={onMainButtonClick}\n >\n {mainButtonText}\n </Button>\n )}\n {subButtonText && (\n <Button\n disabled={subButtonDisable}\n className={cn(\"bg-sus-primary-2 hover:bg-sus-primary-2-hover\", subButtonClassName)}\n size=\"lg\"\n onClick={onSubButtonClick}\n >\n {subButtonText}\n </Button>\n )}\n {shouldShowSeparator && (\n <div role=\"separator\" className=\"ml-1 w-[1px] h-10 bg-white\" />\n )}\n {isValidElement(searchButton) ? searchButton : \"\"}\n </div>\n </nav>\n );\n};\n\nexport default React.memo(Navbar);\n","import { useState, type ReactNode } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { X } from \"lucide-react\";\nimport clsx from \"clsx\";\n\ntype ExpandCollapseProps = {\n title: ReactNode;\n children: ReactNode;\n portalId: string;\n};\n\nconst ExpandCollapse: React.FC<ExpandCollapseProps> = ({ title, children, portalId }) => {\n const [isOpen, setIsOpen] = useState(false);\n\n const Panel = (\n <div\n className={clsx(\n \"overflow-hidden transition-all duration-500 ease-in-out bg-white border-b shadow-md w-full\",\n isOpen ? \"max-h-[700px] opacity-100\" : \"max-h-0 opacity-0\"\n )}\n >\n <div className=\"relative p-6\">\n <button\n onClick={() => setIsOpen(false)}\n className=\"absolute top-2 right-2 text-gray-500 hover:text-gray-700\"\n >\n <X className=\"w-5 h-5\" />\n </button>\n {children}\n </div>\n </div>\n );\n\n return (\n <>\n {/* ปุ่ม trigger อยู่ตรงไหนก็ได้ */}\n <button\n onClick={() => setIsOpen(!isOpen)}\n className=\"px-4 py-2 text-sm text-gray-700 hover:text-black\"\n >\n {title}\n </button>\n\n {/* Render panel */}\n {portalId && typeof document !== \"undefined\" ?\n document.getElementById(portalId) ?\n createPortal(Panel, document.getElementById(portalId)!)\n : null\n : Panel}\n </>\n );\n};\n\nexport default ExpandCollapse;\n","// advance-search/operatorMap.ts\nimport type { FieldType, OperatorValue } from \"./types\";\n\nexport const OPERATOR_MAP: Record<FieldType, OperatorValue[]> = {\n text: [\n \"contains\",\n \"equals\",\n \"beginsWith\",\n \"endsWith\",\n \"notEquals\",\n \"notBeginsWith\",\n \"notEndsWith\",\n \"notContains\"\n ],\n number: [\"equals\", \"notEquals\", \"gt\", \"gte\", \"lt\", \"lte\"],\n date: [\"on\", \"after\", \"before\", \"between\"],\n datetime: [\"on\", \"after\", \"before\", \"between\"],\n checkbox: [\"is\", \"isNot\"],\n dropdown: [\"is\", \"isNot\"],\n lookup: [\"containsAny\", \"containsOnly\", \"containsAll\", \"notContains\"]\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(fields: FieldSchema[]): RowState {\n const first = fields[0];\n const op = OPERATOR_MAP[first.type][0];\n if (op === \"between\") {\n return {\n id: crypto.randomUUID(),\n fieldName: first.name,\n operator: \"between\",\n value: \"\",\n value2: \"\"\n };\n }\n return { id: crypto.randomUUID(), fieldName: first.name, operator: op, value: \"\" };\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)]);\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) {\n updateRows([...rows, makeNewRow(fields)]);\n }\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 { id: r.id, fieldName: r.fieldName, operator: \"between\", value: \"\", value2: \"\" }\n : { id: r.id, fieldName: r.fieldName, operator: nextOp, value: \"\" };\n })\n );\n },\n [rows, fields, updateRows]\n );\n\n const clearAllRow = useCallback(() => {\n updateRows([makeNewRow(fields)]);\n }, [fields, updateRows]);\n\n const changeField = useCallback(\n (id: string, fieldName: string) => {\n const nextOp = firstOperatorFor(fields, fieldName);\n updateRows(\n rows.map((r) => {\n if (r.id !== id) return r;\n return nextOp === \"between\" ?\n { id: r.id, fieldName, operator: \"between\", value: \"\", value2: \"\" }\n : { id: r.id, fieldName, operator: nextOp, value: \"\" };\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 { id: r.id, fieldName: r.fieldName, operator, value: \"\", value2: \"\" };\n }\n return { id: r.id, fieldName: r.fieldName, operator, value: \"\" };\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 const rowToFilter = (row: RowState) => {\n switch (row.operator) {\n case \"between\":\n return {\n [row.fieldName]: {\n gte: row.value,\n lte: row.value2\n }\n };\n case \"contains\":\n return { [row.fieldName]: { contains: row.value } };\n case \"beginsWith\":\n return { [row.fieldName]: { startsWith: row.value } };\n case \"endsWith\":\n return { [row.fieldName]: { endsWith: row.value } };\n case \"notEquals\":\n return { [row.fieldName]: { not: row.value } };\n case \"gt\":\n return { [row.fieldName]: { gt: row.value } };\n case \"gte\":\n return { [row.fieldName]: { gte: row.value } };\n case \"lt\":\n return { [row.fieldName]: { lt: row.value } };\n case \"lte\":\n return { [row.fieldName]: { lte: row.value } };\n case \"is\":\n return { [row.fieldName]: row.value };\n case \"isNot\":\n return { [row.fieldName]: { not: row.value } };\n case \"notContains\":\n return { [row.fieldName]: { not: { contains: row.value } } };\n case \"notBeginsWith\":\n return { [row.fieldName]: { not: { startsWith: row.value } } };\n case \"notEndsWith\":\n return { [row.fieldName]: { not: { endsWith: row.value } } };\n case \"containsAny\":\n return { [row.fieldName]: { hasSome: row.value.split(\",\") } };\n case \"containsAll\":\n return { [row.fieldName]: { hasEvery: row.value.split(\",\") } };\n case \"containsOnly\":\n return { [row.fieldName]: { equals: row.value.split(\",\") } };\n default:\n return { [row.fieldName]: row.value };\n }\n };\n\n const buildParam = useMemo(() => {\n const andConditions = rows.map((r) => (r.value ? rowToFilter(r) : null)).filter(Boolean);\n\n return { AND: andConditions };\n }, [rows]);\n\n return {\n rows,\n addRow,\n removeRow,\n clearRow,\n clearAllRow,\n changeField,\n changeOperator,\n changeValue,\n operatorsForField,\n fieldOptions,\n param: buildParam\n };\n}\n","// advance-search/types.ts\nexport type FieldType = \"text\" | \"number\" | \"date\" | \"datetime\" | \"checkbox\" | \"dropdown\" | \"lookup\";\n\nexport type Option = { value: string; label: string };\n\nexport interface FieldSchemaBase<T extends FieldType> {\n name: string;\n type: T;\n label?: string;\n}\n\nexport interface DropdownFieldSchema extends FieldSchemaBase<\"dropdown\"> {\n options: Option[];\n}\nexport type TextFieldSchema = FieldSchemaBase<\"text\">;\nexport type NumberFieldSchema = FieldSchemaBase<\"number\">;\nexport type DateFieldSchema = FieldSchemaBase<\"date\">;\nexport type DateTimeFieldSchema = FieldSchemaBase<\"datetime\">;\nexport type CheckboxFieldSchema = FieldSchemaBase<\"checkbox\">;\nexport type LookupFieldSchema = FieldSchemaBase<\"lookup\">;\n\nexport type FieldSchema =\n | DropdownFieldSchema\n | TextFieldSchema\n | NumberFieldSchema\n | DateFieldSchema\n | DateTimeFieldSchema\n | CheckboxFieldSchema\n | LookupFieldSchema;\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 operator: Exclude<OperatorValue, \"between\">;\n value: string;\n value2?: undefined;\n }\n | {\n id: string;\n fieldName: string;\n operator: \"between\";\n value: string; // ช่องจาก\n value2: string; // ช่องถึง\n };\n\nexport interface AdvanceSearchProps {\n fields: FieldSchema[];\n portalId: string;\n limitRows?: number;\n iconColor?: string;\n onSearch?: (param: Record<string, unknown>) => void;\n onClear?: () => void;\n}\n","import * as React from \"react\";\nimport * as SelectPrimitive from \"@radix-ui/react-select\";\nimport { CheckIcon, Triangle } from \"lucide-react\";\nimport { cn } from \"../../lib/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\",\n className\n )}\n {...props}\n >\n {children}\n <SelectPrimitive.Icon asChild>\n <Triangle className=\"size-2 opacity-60 fill-current\" style={{ transform: \"rotate(180deg)\" }} />\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-[8rem] 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 \"p-1\",\n position === \"popper\" &&\n \"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--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 \"focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm 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\" />\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 * as React from \"react\";\nimport { cn } from \"../../lib/utils\";\n\nfunction Input({ className, type, ...props }: React.ComponentProps<\"input\">) {\n return (\n <input\n type={type}\n data-slot=\"input\"\n className={cn(\n \"file:text-foreground placeholder:text-gray-400 selection:bg-primary selection:text-primary-foreground border-input flex h-9 w-full min-w-0 rounded-md border bg-white px-3 py-1 text-base shadow-xs transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DebounceInput({\n value,\n onChange,\n debounceDelay = 400,\n ...props\n}: Omit<React.ComponentProps<\"input\">, \"onChange\"> & {\n value?: string | number | undefined;\n debounceDelay?: number;\n onChange: (value: string | number | undefined) => void;\n}) {\n const onChangeRef = React.useRef(onChange);\n const [internalValue, setInternalValue] = React.useState(value);\n\n React.useEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n\n React.useEffect(() => {\n const timeoutId = setTimeout(() => {\n if (typeof onChangeRef.current === \"function\") {\n onChangeRef.current(internalValue);\n }\n }, debounceDelay);\n\n return () => clearTimeout(timeoutId);\n }, [internalValue, debounceDelay]);\n\n const handleChange = React.useCallback((event: React.ChangeEvent<HTMLInputElement>) => {\n setInternalValue(event.target.value);\n }, []);\n\n return <Input {...props} value={value} onChange={handleChange} />;\n}\n\nexport { Input, DebounceInput };\n","import * as React from \"react\";\nimport * as PopoverPrimitive from \"@radix-ui/react-popover\";\n\nimport { cn } from \"../../lib/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","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer\",\n {\n variants: {\n variant: {\n default: \"bg-sus-primary-1 text-primary-foreground shadow-xs hover:bg-sus-primary/90\",\n destructive:\n \"bg-destructive text-white shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60\",\n outline:\n \"border bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:hover:bg-input/50\",\n secondary: \"bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50\",\n link: \"text-primary underline-offset-4 hover:underline\",\n cancel:\n \"border bg-[#8B8B8B] text-white shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:hover:bg-input/50\",\n defaultSelect: \"bg-primary text-primary-foreground shadow-xs hover:bg-sus-primary/90 py-2\",\n defaultOutline:\n \"border bg-background py-2 shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:hover:bg-input/50\"\n },\n size: {\n default: \"h-9 px-4 has-[>svg]:px-3\",\n option: \"py-5 h-9 px-4 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-xs\": \"size-5\",\n \"icon-sm\": \"size-[22px]\",\n \"icon-md\": \"size-7\",\n \"icon-lg\": \"size-10\"\n },\n active: {\n true: \"bg-sus-primary-1 text-white\",\n false: \"\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nfunction Button({\n className,\n variant,\n size,\n active,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n active?: boolean;\n }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className, active }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","// components/ClearButton.tsx\nimport { X } from \"lucide-react\";\nimport React from \"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 row\",\n className = \"\"\n}) => {\n return (\n <span\n role=\"button\"\n onClick={onClick}\n className={`clear-button ${className}`}\n aria-label={ariaLabel}\n title={title}\n >\n <X className=\"icon\" />\n </span>\n );\n};\n","\"use client\";\nimport * as React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { buttonVariants } from \"./button\";\nimport { cn } from \"../../lib/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\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 monthLabel =\n callbacks?.monthLabel?.(displayYear, displayMonth) ??\n new Intl.DateTimeFormat(undefined, { month: \"short\" }).format(displayed);\n\n const yearLabel = callbacks?.yearLabel?.(displayYear) ?? String(displayYear);\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 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 <div className=\"text-sm font-medium select-none\">\n {monthLabel} {yearLabel}\n </div>\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\",\n !inCurrentMonth && \"opacity-50\",\n selected && \"aria-selected:opacity-100\"\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, { useState } from \"react\";\nimport { X, Search, Tag } from \"lucide-react\";\nimport { ClearButton } from \"../components/ClearButton\";\n\ninterface TagsInputProps {\n value?: string[];\n onChange: (tags: string[]) => void;\n placeholder?: string;\n onClear?: () => void;\n error?: boolean; // เพิ่ม error prop เข้ามา\n}\n\nexport const TagsInput: React.FC<TagsInputProps> = ({ value = [], onChange, onClear, error }) => {\n const [inputValue, setInputValue] = useState(\"\");\n\n const addTag = (val: string) => {\n const trimmed = val.trim();\n if (!trimmed) return;\n if (value.includes(trimmed)) return;\n onChange([...value, trimmed]);\n setInputValue(\"\");\n };\n\n const removeTag = (index: number) => {\n const newTags = value.filter((_, i) => i !== index);\n onChange(newTags);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" || e.key === \",\") {\n e.preventDefault();\n addTag(inputValue);\n }\n if (e.key === \"Backspace\" && !inputValue) {\n removeTag(value.length - 1);\n }\n };\n\n return (\n <div\n className={`flex items-center border rounded-md px-2 py-1 w-full min-h-[36px] focus-within:ring-2 \n ${error ? \"border-red-500 focus-within:ring-red-500\" : \"border-gray-300 focus-within:ring-sus-green-1\"}`}\n >\n {/* tags */}\n <div className=\"flex flex-wrap gap-2 flex-1 items-center\">\n {value.map((tag, i) => (\n <span\n key={i}\n className=\"flex items-center gap-1 border border-[#41875C] bg-[#f7fcf9] px-2 py-0.5 rounded-2xl text-sm text-black\"\n >\n <Tag className=\"w-3 h-3 transform scale-x-[-1]\" />\n {tag}\n <button type=\"button\" onClick={() => removeTag(i)} className=\"hover:text-red-500\">\n <X className=\"w-3 h-3\" />\n </button>\n </span>\n ))}\n\n {/* input */}\n <input\n type=\"text\"\n value={inputValue}\n onChange={(e) => setInputValue(e.target.value)}\n onKeyDown={handleKeyDown}\n className=\"flex-1 border-none outline-none text-sm text-gray-400 placeholder:text-gray-400 border-1\"\n />\n </div>\n\n {/* Search icon */}\n <Search className=\"w-4 h-4 text-gray-400 mx-2\" />\n\n {/* Clear button */}\n <span className=\"right-2\">\n <ClearButton onClick={onClear} />\n </span>\n </div>\n );\n};\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate<DateType extends Date>(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n const year = getISOWeekYear(date, options);\n const fourthOfJanuary = constructFrom(options?.in || date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setFullYear(date_.getFullYear(), 0, 1);\n date_.setHours(0, 0, 0, 0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (+_date >= +startOfNextYear) {\n return year + 1;\n } else if (+_date >= +startOfThisYear) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(options?.in || date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(+date / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n return addLeadingZeros(+date, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date, options?.in);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import {\n millisecondsInHour,\n millisecondsInMinute,\n} from \"./constants.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link parseISO} function options.\n */\n\n/**\n * @name parseISO\n * @category Common Helpers\n * @summary Parse ISO string\n *\n * @description\n * Parse the given string in ISO 8601 format and return an instance of Date.\n *\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n *\n * If the argument isn't a string, the function cannot parse the string or\n * the values are invalid, it returns Invalid Date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n * @param options - An object with options\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * const result = parseISO('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * const result = parseISO('+02014101', { additionalDigits: 1 })\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport function parseISO(argument, options) {\n const invalidDate = () => constructFrom(options?.in, NaN);\n\n const additionalDigits = options?.additionalDigits ?? 2;\n const dateStrings = splitDateString(argument);\n\n let date;\n if (dateStrings.date) {\n const parseYearResult = parseYear(dateStrings.date, additionalDigits);\n date = parseDate(parseYearResult.restDateString, parseYearResult.year);\n }\n\n if (!date || isNaN(+date)) return invalidDate();\n\n const timestamp = +date;\n let time = 0;\n let offset;\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time);\n if (isNaN(time)) return invalidDate();\n }\n\n if (dateStrings.timezone) {\n offset = parseTimezone(dateStrings.timezone);\n if (isNaN(offset)) return invalidDate();\n } else {\n const tmpDate = new Date(timestamp + time);\n const result = toDate(0, options?.in);\n result.setFullYear(\n tmpDate.getUTCFullYear(),\n tmpDate.getUTCMonth(),\n tmpDate.getUTCDate(),\n );\n result.setHours(\n tmpDate.getUTCHours(),\n tmpDate.getUTCMinutes(),\n tmpDate.getUTCSeconds(),\n tmpDate.getUTCMilliseconds(),\n );\n return result;\n }\n\n return toDate(timestamp + time + offset, options?.in);\n}\n\nconst patterns = {\n dateTimeDelimiter: /[T ]/,\n timeZoneDelimiter: /[Z ]/i,\n timezone: /([Z+-].*)$/,\n};\n\nconst dateRegex =\n /^-?(?:(\\d{3})|(\\d{2})(?:-?(\\d{2}))?|W(\\d{2})(?:-?(\\d{1}))?|)$/;\nconst timeRegex =\n /^(\\d{2}(?:[.,]\\d*)?)(?::?(\\d{2}(?:[.,]\\d*)?))?(?::?(\\d{2}(?:[.,]\\d*)?))?$/;\nconst timezoneRegex = /^([+-])(\\d{2})(?::?(\\d{2}))?$/;\n\nfunction splitDateString(dateString) {\n const dateStrings = {};\n const array = dateString.split(patterns.dateTimeDelimiter);\n let timeString;\n\n // The regex match should only return at maximum two array elements.\n // [date], [time], or [date, time].\n if (array.length > 2) {\n return dateStrings;\n }\n\n if (/:/.test(array[0])) {\n timeString = array[0];\n } else {\n dateStrings.date = array[0];\n timeString = array[1];\n if (patterns.timeZoneDelimiter.test(dateStrings.date)) {\n dateStrings.date = dateString.split(patterns.timeZoneDelimiter)[0];\n timeString = dateString.substr(\n dateStrings.date.length,\n dateString.length,\n );\n }\n }\n\n if (timeString) {\n const token = patterns.timezone.exec(timeString);\n if (token) {\n dateStrings.time = timeString.replace(token[1], \"\");\n dateStrings.timezone = token[1];\n } else {\n dateStrings.time = timeString;\n }\n }\n\n return dateStrings;\n}\n\nfunction parseYear(dateString, additionalDigits) {\n const regex = new RegExp(\n \"^(?:(\\\\d{4}|[+-]\\\\d{\" +\n (4 + additionalDigits) +\n \"})|(\\\\d{2}|[+-]\\\\d{\" +\n (2 + additionalDigits) +\n \"})$)\",\n );\n\n const captures = dateString.match(regex);\n // Invalid ISO-formatted year\n if (!captures) return { year: NaN, restDateString: \"\" };\n\n const year = captures[1] ? parseInt(captures[1]) : null;\n const century = captures[2] ? parseInt(captures[2]) : null;\n\n // either year or century is null, not both\n return {\n year: century === null ? year : century * 100,\n restDateString: dateString.slice((captures[1] || captures[2]).length),\n };\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) return new Date(NaN);\n\n const captures = dateString.match(dateRegex);\n // Invalid ISO-formatted string\n if (!captures) return new Date(NaN);\n\n const isWeekDate = !!captures[4];\n const dayOfYear = parseDateUnit(captures[1]);\n const month = parseDateUnit(captures[2]) - 1;\n const day = parseDateUnit(captures[3]);\n const week = parseDateUnit(captures[4]);\n const dayOfWeek = parseDateUnit(captures[5]) - 1;\n\n if (isWeekDate) {\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN);\n }\n return dayOfISOWeekYear(year, week, dayOfWeek);\n } else {\n const date = new Date(0);\n if (\n !validateDate(year, month, day) ||\n !validateDayOfYearDate(year, dayOfYear)\n ) {\n return new Date(NaN);\n }\n date.setUTCFullYear(year, month, Math.max(dayOfYear, day));\n return date;\n }\n}\n\nfunction parseDateUnit(value) {\n return value ? parseInt(value) : 1;\n}\n\nfunction parseTime(timeString) {\n const captures = timeString.match(timeRegex);\n if (!captures) return NaN; // Invalid ISO-formatted time\n\n const hours = parseTimeUnit(captures[1]);\n const minutes = parseTimeUnit(captures[2]);\n const seconds = parseTimeUnit(captures[3]);\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN;\n }\n\n return (\n hours * millisecondsInHour + minutes * millisecondsInMinute + seconds * 1000\n );\n}\n\nfunction parseTimeUnit(value) {\n return (value && parseFloat(value.replace(\",\", \".\"))) || 0;\n}\n\nfunction parseTimezone(timezoneString) {\n if (timezoneString === \"Z\") return 0;\n\n const captures = timezoneString.match(timezoneRegex);\n if (!captures) return 0;\n\n const sign = captures[1] === \"+\" ? -1 : 1;\n const hours = parseInt(captures[2]);\n const minutes = (captures[3] && parseInt(captures[3])) || 0;\n\n if (!validateTimezone(hours, minutes)) {\n return NaN;\n }\n\n return sign * (hours * millisecondsInHour + minutes * millisecondsInMinute);\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n const date = new Date(0);\n date.setUTCFullYear(isoWeekYear, 0, 4);\n const fourthOfJanuaryDay = date.getUTCDay() || 7;\n const diff = (week - 1) * 7 + day + 1 - fourthOfJanuaryDay;\n date.setUTCDate(date.getUTCDate() + diff);\n return date;\n}\n\n// Validation functions\n\n// February is null to handle the leap year (using ||)\nconst daysInMonths = [31, null, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n\nfunction validateDate(year, month, date) {\n return (\n month >= 0 &&\n month <= 11 &&\n date >= 1 &&\n date <= (daysInMonths[month] || (isLeapYearIndex(year) ? 29 : 28))\n );\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n return dayOfYear >= 1 && dayOfYear <= (isLeapYearIndex(year) ? 366 : 365);\n}\n\nfunction validateWeekDate(_year, week, day) {\n return week >= 1 && week <= 53 && day >= 0 && day <= 6;\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours === 24) {\n return minutes === 0 && seconds === 0;\n }\n\n return (\n seconds >= 0 &&\n seconds < 60 &&\n minutes >= 0 &&\n minutes < 60 &&\n hours >= 0 &&\n hours < 25\n );\n}\n\nfunction validateTimezone(_hours, minutes) {\n return minutes >= 0 && minutes <= 59;\n}\n\n// Fallback for modularized imports:\nexport default parseISO;\n","import * as React from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\n\nimport { cn } from \"../../lib/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 select-none 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 { cn } from \"../../lib/utils\";\nimport { Label } from \"./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 { error, formItemId } = useFormField();\n\n return (\n <Label\n data-slot=\"form-label\"\n data-error={!!error}\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) {\n return null;\n }\n\n return (\n <p\n data-slot=\"form-message\"\n id={formMessageId}\n className={cn(\"text-destructive text-xs\", className)}\n {...props}\n >\n {body}\n </p>\n );\n}\n\nexport { useFormField, Form, FormItem, FormLabel, FormControl, FormDescription, FormMessage, FormField };\n","import React from \"react\";\nimport { Minus, Plus, Search, CalendarIcon } from \"lucide-react\";\nimport type { FieldSchema, OperatorValue, RowState, Option } from \"../types\";\nimport { OPERATOR_LABEL } from \"../types\";\nimport \"../styles/index.css\";\n\nimport { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from \"../components/ui/select\";\nimport { Input } from \"../components/ui/input\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"../components/ui/popover\";\nimport { Button } from \"../components/ui/button\";\nimport { ClearButton } from \"../components/ClearButton\";\nimport { DatePicker } from \"../components/ui/datepicker\";\nimport { cn } from \"../lib/utils\";\nimport { TagsInput } from \"./TagsInput\";\nimport { parseISO, format, isValid } from \"date-fns\";\nimport { useFormContext } from \"react-hook-form\";\nimport { FormControl, FormField, FormItem } from \"../components/ui/form\";\n\ninterface Props {\n row: RowState;\n isFirst: boolean;\n fields: FieldSchema[];\n fieldOptions: Option[];\n operators: OperatorValue[];\n onChangeField: (fieldName: string) => void;\n onChangeOperator: (op: OperatorValue) => void;\n onAdd: () => void;\n onRemove: () => void;\n onClear: () => void;\n}\n\nexport const AdvanceSearchRow: React.FC<Props> = ({\n row,\n isFirst,\n fields,\n fieldOptions,\n operators,\n onChangeField,\n onChangeOperator,\n onAdd,\n onRemove,\n onClear\n}) => {\n const form = useFormContext();\n const { control } = form;\n\n const fieldSchema = fields.find((f) => f.name === row.fieldName);\n const fieldType = fieldSchema?.type ?? \"text\";\n\n React.useEffect(() => {\n if (operators && operators.length > 0 && !operators.includes(row.operator)) {\n onChangeOperator(operators[0]);\n }\n }, [operators, row.operator, onChangeOperator]);\n\n const isBetween = row.operator === \"between\";\n const isCheckbox = fieldType === \"checkbox\";\n const isDropdown = fieldType === \"dropdown\";\n const isLookup = fieldType === \"lookup\";\n const isNumber = fieldType === \"number\";\n const isDate = fieldType === \"date\" || fieldType === \"datetime\";\n const [openDateValue1, setOpenDateValue1] = React.useState(false);\n const [openDateValue2, setOpenDateValue2] = React.useState(false);\n\n const toDateFromISO = (v?: string): Date | undefined => {\n if (!v) return undefined;\n try {\n const d = parseISO(v);\n return isValid(d) ? d : undefined;\n } catch {\n return undefined;\n }\n };\n\n const getOpeatorLabel = (operator: string) => {\n return OPERATOR_LABEL[operator as OperatorValue] ?? operator;\n };\n\n const capitalizeFirst = (str: string) => {\n return str.charAt(0).toUpperCase() + str.slice(1);\n };\n\n return (\n <div className=\"flex flex-col space-y-3 md:flex-row md:items-center md:space-x-1 md:space-y-0 w-full mb-6\">\n {/* Field */}\n <div className=\"w-full md:w-1/8\">\n <Select value={row.fieldName} onValueChange={(value) => onChangeField(value)}>\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder={row.fieldName} />\n </SelectTrigger>\n <SelectContent>\n {fieldOptions.map((f) => (\n <SelectItem key={f.value} value={f.value}>\n {capitalizeFirst(f.label)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Operator */}\n <div className=\"w-full md:w-1/8\">\n <Select value={row.operator} onValueChange={(value) => onChangeOperator(value as OperatorValue)}>\n <SelectTrigger className=\"w-full\">\n <SelectValue placeholder={row.operator} />\n </SelectTrigger>\n <SelectContent>\n {operators.map((op) => (\n <SelectItem key={op} value={op}>\n {getOpeatorLabel(op)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {/* Value(s) */}\n <div className=\"w-full md:flex-1\">\n {!isBetween ?\n <FormField\n control={control}\n name={`value_${row.id}` as const}\n rules={{ required: \"This field is required.\" }}\n render={({ field, fieldState }) => (\n <FormItem>\n {isCheckbox ?\n <div className=\"relative w-full\">\n <Select value={field.value ?? \"\"} onValueChange={(value) => field.onChange(value)}>\n <FormControl>\n <SelectTrigger className=\"w-full pr-8\">\n <SelectValue placeholder=\"\" />\n </SelectTrigger>\n </FormControl>\n <SelectContent>\n <SelectItem value=\"true\">true</SelectItem>\n <SelectItem value=\"false\">false</SelectItem>\n </SelectContent>\n </Select>\n <span className=\"absolute right-3 top-2.5 flex justify-center items-center space-x-1\">\n <ClearButton onClick={onClear} />\n </span>\n {fieldState.error && !field.value && (\n <span className=\"absolute top-10 text-red-600 text-xs\">\n This field is required.\n </span>\n )}\n </div>\n : isDropdown && fieldSchema && \"options\" in fieldSchema ?\n <div className=\"relative w-full\">\n <Select value={field.value ?? \"\"} onValueChange={(value) => field.onChange(value)}>\n <FormControl>\n <SelectTrigger className=\"w-full pr-8\">\n <SelectValue placeholder=\"\" />\n </SelectTrigger>\n </FormControl>\n <SelectContent>\n {fieldSchema.options.map((opt) => (\n <SelectItem key={opt.value} value={opt.value}>\n {opt.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n <span className=\"absolute right-3 top-2.5 flex justify-center items-center space-x-1\">\n <ClearButton onClick={onClear} />\n </span>\n {fieldState.error && !field.value && (\n <span className=\"absolute top-10 text-red-600 text-xs\">\n This field is required.\n </span>\n )}\n </div>\n : isDate ?\n <div className=\"relative\">\n <Popover open={openDateValue1} onOpenChange={setOpenDateValue1}>\n <PopoverTrigger asChild>\n <FormControl>\n <Button\n type=\"button\"\n variant=\"outline\"\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !field.value && \"text-muted-foreground\"\n )}\n onClick={() => setOpenDateValue1((v) => !v)}\n >\n {field.value ?\n format(toDateFromISO(field.value) as Date, \"dd/MM/yyyy\")\n : \"DD/MM/YYYY\"}\n <span className=\"absolute right-3 top-2.5 flex justify-center items-center space-x-1\">\n <CalendarIcon className=\"w-4 h-4 text-[#c0c0c0]\" />\n <ClearButton onClick={onClear} />\n </span>\n </Button>\n </FormControl>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <DatePicker\n variant={{ day: { selected: \"outline\" } }}\n selectedDate={toDateFromISO(field.value)}\n onDateSelect={(d) => {\n field.onChange(d ? format(d, \"yyyy-MM-dd\") : undefined);\n if (d) setOpenDateValue1(false);\n }}\n />\n </PopoverContent>\n </Popover>\n {fieldState.error && !field.value && (\n <span className=\"absolute left-0 top-10 text-red-600 text-xs\">\n This field is required.\n </span>\n )}\n </div>\n : isNumber ?\n <div className=\"relative flex items-center\">\n <FormControl>\n <Input\n {...field}\n type=\"number\"\n value={field.value ?? \"\"}\n autoComplete=\"off\"\n inputMode=\"numeric\"\n className=\"focus-visible:ring-0 focus-visible:ring-offset-0 focus:outline-none focus:border-sus-green-1 pr-8\"\n />\n </FormControl>\n <span className=\"absolute right-3 top-2.5 flex justify-center items-center space-x-1\">\n <ClearButton onClick={onClear} />\n </span>\n {fieldState.error && !field.value && (\n <span className=\"absolute top-10 text-red-600 text-xs\">\n This field is required.\n </span>\n )}\n </div>\n : isLookup ?\n <div className=\"relative\">\n <FormControl>\n <TagsInput\n value={Array.isArray(field.value) ? field.value : []}\n onChange={field.onChange}\n onClear={onClear}\n error={!!fieldState.error}\n />\n </FormControl>\n {fieldState.error && (!field.value || field.value.length === 0) && (\n <span className=\"absolute top-10 text-red-600 text-xs\">\n This field is required.\n </span>\n )}\n </div>\n : <div className=\"relative flex items-center\">\n <FormControl>\n <Input\n {...field}\n value={field.value ?? \"\"}\n autoComplete=\"off\"\n inputMode=\"text\"\n className=\"focus-visible:ring-0 focus-visible:ring-offset-0 focus:outline-none focus:border-sus-green-1\"\n />\n </FormControl>\n <span className=\"absolute right-3 top-2.5 flex justify-center items-center space-x-1\">\n <Search className=\"w-4 h-4 text-[#c0c0c0]\" />\n <ClearButton onClick={onClear} />\n </span>\n {fieldState.error && !field.value && (\n <span className=\"absolute top-10 text-red-600 text-xs\">\n This field is required.\n </span>\n )}\n </div>\n }\n </FormItem>\n )}\n />\n : <div className=\"flex flex-col md:flex-row md:items-center md:space-x-2 md:space-y-0 space-y-3\">\n <FormField\n control={control}\n name={`value_${row.id}` as const}\n rules={{ required: \"This field is required.\" }}\n render={({ field, fieldState }) => (\n <FormItem className=\"relative w-full md:w-1/2\">\n <Popover open={openDateValue1} onOpenChange={setOpenDateValue1}>\n <PopoverTrigger asChild>\n <FormControl>\n <Button\n type=\"button\"\n variant=\"outline\"\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !field.value && \"text-muted-foreground\"\n )}\n onClick={() => setOpenDateValue1((v) => !v)}\n >\n {field.value ?\n format(toDateFromISO(field.value) as Date, \"dd/MM/yyyy\")\n : \"DD/MM/YYYY\"}\n <span className=\"absolute right-3 top-2.5 flex justify-center items-center space-x-1\">\n <CalendarIcon className=\"w-4 h-4 text-[#c0c0c0]\" />\n <ClearButton onClick={onClear} />\n </span>\n {fieldState.error && !field.value && (\n <span className=\"absolute left-0 top-10 text-red-600 text-xs\">\n This field is required.\n </span>\n )}\n </Button>\n </FormControl>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <DatePicker\n selectedDate={toDateFromISO(field.value)}\n onDateSelect={(d) => {\n field.onChange(d ? format(d, \"yyyy-MM-dd\") : undefined);\n if (d) setOpenDateValue1(false);\n }}\n />\n </PopoverContent>\n </Popover>\n </FormItem>\n )}\n />\n\n <span className=\"text-black font-bold text-center\">To</span>\n\n <FormField\n control={control}\n name={`value2_${row.id}` as const}\n rules={{ required: \"This field is required.\" }}\n render={({ field, fieldState }) => (\n <FormItem className=\"relative w-full md:w-1/2\">\n <Popover open={openDateValue2} onOpenChange={setOpenDateValue2}>\n <PopoverTrigger asChild>\n <FormControl>\n <Button\n type=\"button\"\n variant=\"outline\"\n className={cn(\n \"w-full justify-start text-left font-normal\",\n !field.value && \"text-muted-foreground\"\n )}\n onClick={() => setOpenDateValue2((v) => !v)}\n >\n {field.value ?\n format(toDateFromISO(field.value) as Date, \"dd/MM/yyyy\")\n : \"DD/MM/YYYY\"}\n <span className=\"absolute right-3 top-2.5 flex justify-center items-center space-x-1\">\n <CalendarIcon className=\"w-4 h-4 text-[#c0c0c0]\" />\n <ClearButton onClick={onClear} />\n </span>\n {fieldState.error && !field.value && (\n <span className=\"absolute left-0 top-10 text-red-600 text-xs\">\n This field is required.\n </span>\n )}\n </Button>\n </FormControl>\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-0\" align=\"start\">\n <DatePicker\n selectedDate={toDateFromISO(field.value)}\n onDateSelect={(d) => {\n field.onChange(d ? format(d, \"yyyy-MM-dd\") : undefined);\n if (d) setOpenDateValue2(false);\n }}\n />\n </PopoverContent>\n </Popover>\n </FormItem>\n )}\n />\n </div>\n }\n </div>\n\n {/* Add / Remove button */}\n <div className=\"flex items-center justify-center\">\n {isFirst ?\n <Button\n type=\"button\"\n onClick={onAdd}\n className=\"circle-btn bg-[#41875C] border border-[#41875C] text-white hover:bg-[#3a6f4e] transition duration-150\"\n aria-label=\"Add row\"\n title=\"Add condition\"\n >\n <Plus className=\"w-3 h-3 stroke-[2]\" />\n </Button>\n : <Button\n type=\"button\"\n onClick={onRemove}\n className=\"circle-btn bg-white border-2 border-[#82b495] text-[#82b495] hover:bg-[#82b495] hover:text-white transition duration-150\"\n aria-label=\"Remove row\"\n title=\"Remove condition\"\n >\n <Minus className=\"w-3 h-3 stroke-[2]\" />\n </Button>\n }\n </div>\n </div>\n );\n};\n","import React, { useMemo, useCallback } from \"react\";\nimport { Search } from \"lucide-react\";\nimport ExpandCollapse from \"./ui/ExpandCollapse\";\nimport { useAdvanceSearch } from \"../hooks/useAdvanceSearch\";\nimport type { AdvanceSearchProps } from \"../types\";\nimport { AdvanceSearchRow } from \"./AdvanceSearchRow\";\nimport { Label } from \"../components/ui/label\";\nimport { Button } from \"../components/ui/button\";\nimport { useForm } from \"react-hook-form\";\nimport { Form } from \"../components/ui/form\";\n\nconst AdvanceSearch: React.FC<AdvanceSearchProps> = ({\n fields,\n portalId,\n iconColor = \"#ffffff\",\n limitRows = 4,\n onSearch,\n onClear\n}) => {\n const fieldsData = useMemo(() => fields || [], [fields]);\n const {\n rows,\n addRow,\n removeRow,\n clearRow,\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, setValue } = form;\n\n const onSubmit = useCallback(() => {\n const currentValues = getValues();\n\n const param = {\n AND: rows\n .map((r) => {\n const val1 = currentValues[`value_${r.id}`] as string | undefined;\n const val2 = currentValues[`value2_${r.id}`] as string | undefined;\n if (r.operator === \"between\") {\n if (!val1 || !val2) return null;\n return {\n [r.fieldName]: {\n gte: val1,\n lte: val2\n }\n };\n }\n if (!val1) return null;\n\n switch (r.operator) {\n case \"contains\":\n return { [r.fieldName]: { contains: val1 } };\n case \"beginsWith\":\n return { [r.fieldName]: { startsWith: val1 } };\n case \"endsWith\":\n return { [r.fieldName]: { endsWith: val1 } };\n case \"equals\":\n return { [r.fieldName]: { equals: val1 } };\n case \"notEquals\":\n return { [r.fieldName]: { not: val1 } };\n case \"gt\":\n return { [r.fieldName]: { gt: val1 } };\n case \"gte\":\n return { [r.fieldName]: { gte: val1 } };\n case \"lt\":\n return { [r.fieldName]: { lt: val1 } };\n case \"lte\":\n return { [r.fieldName]: { lte: val1 } };\n case \"is\":\n return { [r.fieldName]: val1 };\n case \"isNot\":\n return { [r.fieldName]: { not: val1 } };\n case \"notContains\":\n return { [r.fieldName]: { not: { contains: val1 } } };\n case \"notBeginsWith\":\n return { [r.fieldName]: { not: { startsWith: val1 } } };\n case \"notEndsWith\":\n return { [r.fieldName]: { not: { endsWith: val1 } } };\n case \"containsAny\":\n return { [r.fieldName]: { hasSome: String(val1).split(\",\") } };\n case \"containsAll\":\n return { [r.fieldName]: { hasEvery: String(val1).split(\",\") } };\n case \"containsOnly\":\n return { [r.fieldName]: { equals: String(val1).split(\",\") } };\n case \"on\":\n return { [r.fieldName]: { on: val1 } };\n case \"after\":\n return { [r.fieldName]: { after: val1 } };\n case \"before\":\n return { [r.fieldName]: { before: val1 } };\n }\n })\n .filter(Boolean) as Record<string, unknown>[]\n };\n if (onSearch) {\n onSearch(param);\n }\n }, [getValues, rows, onSearch]);\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=\"w-[70%] flex justify-center mx-auto\">\n <div className=\"rounded w-full md:w-3/4\">\n <div className=\"flex justify-between items-center mb-2\">\n <Label className=\"font-bold text-black\">Select field</Label>\n </div>\n\n {rows.map((row, idx) => (\n <AdvanceSearchRow\n key={row.id}\n row={row}\n isFirst={idx === 0}\n fields={fieldsData}\n fieldOptions={fieldOptions}\n operators={operatorsForField(row.fieldName)}\n onChangeField={(f) => {\n changeField(row.id, f);\n setValue(`value_${row.id}`, undefined);\n setValue(`value2_${row.id}`, undefined);\n }}\n onChangeOperator={(op) => {\n changeOperator(row.id, op);\n setValue(`value_${row.id}`, undefined);\n setValue(`value2_${row.id}`, undefined);\n }}\n onAdd={addRow}\n onRemove={() => {\n removeRow(row.id);\n unregister(`value_${row.id}`);\n unregister(`value2_${row.id}`);\n }}\n onClear={() => {\n clearRow(row.id);\n resetField(`value_${row.id}`);\n resetField(`value2_${row.id}`);\n }}\n />\n ))}\n <div className=\"flex flex-col-reverse md:flex-row md:justify-end gap-2 mt-4 pr-7\">\n <Button\n type=\"button\"\n className=\"w-full md:w-auto md:min-w-[100px] bg-[#8b8b8b]\"\n onClick={() => {\n clearAllRow();\n Object.keys(getValues()).forEach((k) => resetField(k));\n if (onClear) onClear();\n }}\n >\n Clear Search\n </Button>\n <Button\n type=\"submit\"\n className=\"w-full md:w-auto md:min-w-[100px] bg-[#379a2a] hover:bg-[#3a6f4e]\"\n onClick={onSubmit}\n >\n Search\n </Button>\n </div>\n </div>\n </form>\n </Form>\n </ExpandCollapse>\n );\n};\n\nexport default AdvanceSearch;\n","import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\nexport const preserveNewlines = (s?: string) => (s ? s.replace(/\\r\\n/g, \"\\n\") : undefined);\n","import * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { XIcon } from \"lucide-react\";\n\nimport { cn } from \"../../lib/utils\";\n\nfunction Dialog({ ...props }: React.ComponentProps<typeof DialogPrimitive.Root>) {\n return <DialogPrimitive.Root data-slot=\"dialog\" {...props} />;\n}\n\nfunction DialogTrigger({ ...props }: React.ComponentProps<typeof DialogPrimitive.Trigger>) {\n return <DialogPrimitive.Trigger data-slot=\"dialog-trigger\" {...props} />;\n}\n\nfunction DialogPortal({ ...props }: React.ComponentProps<typeof DialogPrimitive.Portal>) {\n return <DialogPrimitive.Portal data-slot=\"dialog-portal\" {...props} />;\n}\n\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\n}\n\nfunction DialogOverlay({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Overlay>) {\n return (\n <DialogPrimitive.Overlay\n data-slot=\"dialog-overlay\"\n className={cn(\n \"data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DialogContent({\n className,\n children,\n showCloseButton = true,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & {\n showCloseButton?: boolean;\n}) {\n return (\n <DialogPortal data-slot=\"dialog-portal\">\n <DialogOverlay />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"bg-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 sm:max-w-lg\",\n className\n )}\n {...props}\n >\n {children}\n {showCloseButton && (\n <DialogPrimitive.Close\n data-slot=\"dialog-close\"\n className=\"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4\"\n >\n <XIcon />\n <span className=\"sr-only\">Close</span>\n </DialogPrimitive.Close>\n )}\n </DialogPrimitive.Content>\n </DialogPortal>\n );\n}\n\nfunction DialogHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-header\"\n className={cn(\"flex flex-col gap-2 text-center sm:text-left\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"dialog-footer\"\n className={cn(\"flex flex-col-reverse gap-2 sm:flex-row sm:justify-end\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogTitle({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Title>) {\n return (\n <DialogPrimitive.Title\n data-slot=\"dialog-title\"\n className={cn(\"text-lg leading-none font-semibold\", className)}\n {...props}\n />\n );\n}\n\nfunction DialogDescription({\n className,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return (\n <DialogPrimitive.Description\n data-slot=\"dialog-description\"\n className={cn(\"text-muted-foreground text-sm\", className)}\n {...props}\n />\n );\n}\n\nexport {\n Dialog,\n DialogClose,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogOverlay,\n DialogPortal,\n DialogTitle,\n DialogTrigger\n};\n","import * as React from \"react\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4 shrink-0 [&_svg]:shrink-0 outline-none focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px] aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive cursor-pointer\",\n {\n variants: {\n variant: {\n default: \"bg-sus-primary-1 text-primary-foreground shadow-xs hover:bg-sus-primary/90\",\n cancel:\n \"border bg-[#8B8B8B] text-white shadow-xs hover:bg-accent hover:text-accent-foreground dark:border-input dark:hover:bg-input/50\",\n outlineLeave:\n \"border border-[#BB0B0E] bg-background shadow-xs hover:bg-accent hover:text-accent-foreground text-[#BB0B0E]\"\n },\n\n size: {\n default: \"h-9 px-4 has-[>svg]:px-3\",\n option: \"py-5 h-9 px-4 has-[>svg]:px-3\",\n sm: \"h-8 rounded-md gap-1.5 px-3 has-[>svg]:px-2.5\",\n lg: \"h-10 rounded-md px-6 has-[>svg]:px-4\",\n icon: \"size-9\",\n \"icon-xs\": \"size-5\",\n \"icon-sm\": \"size-[22px]\",\n \"icon-md\": \"size-7\",\n \"icon-lg\": \"size-10\"\n },\n active: {\n true: \"bg-sus-primary-1 text-white\",\n false: \"\"\n }\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\"\n }\n }\n);\n\nfunction Button({\n className,\n variant,\n size,\n active,\n asChild = false,\n ...props\n}: React.ComponentProps<\"button\"> &\n VariantProps<typeof buttonVariants> & {\n asChild?: boolean;\n active?: boolean;\n }) {\n const Comp = asChild ? Slot : \"button\";\n\n return (\n <Comp\n data-slot=\"button\"\n className={cn(buttonVariants({ variant, size, className, active }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","import {\n Dialog,\n DialogContent,\n DialogHeader,\n DialogTitle,\n DialogDescription\n} from \"./components/ui/dialog\";\nimport { Button } from \"./components/ui/button\";\nimport { cn } from \"./lib/utils\";\n\ntype ConfirmDialogProps = {\n dialogData: {\n state: boolean;\n title?: string;\n description?: string;\n btn?: string;\n variantBtn?: string;\n btnState?: boolean;\n onClickBtn?: () => void;\n variant?: \"default\" | \"success\" | \"error\";\n showCloseBtn?: boolean;\n };\n setDialog: (data: any) => void;\n onClose?: () => void;\n};\n\nexport default function ConfirmDialog({ dialogData, setDialog, onClose }: ConfirmDialogProps) {\n const handleClose = () => {\n setDialog({ state: false });\n onClose?.();\n };\n\n const titleColor = {\n default: \"text-[#000000]\",\n success: \"text-[#3f9e33]\",\n error: \"text-[#c63638]\"\n };\n\n const showCloseBtn = dialogData.showCloseBtn ?? true;\n\n return (\n <Dialog open={dialogData.state} onOpenChange={handleClose}>\n <DialogContent>\n <DialogHeader>\n <DialogTitle className={cn(titleColor[dialogData.variant || \"default\"], \"font-bold\")}>\n {dialogData.title || \"\"}\n </DialogTitle>\n <DialogDescription>{dialogData.description || \"\"}</DialogDescription>\n </DialogHeader>\n\n <div className=\"w-full flex justify-center py-5 gap-5\">\n {showCloseBtn && (\n <Button variant=\"cancel\" onClick={handleClose}>\n Close\n </Button>\n )}\n\n {dialogData.btn && (\n <Button\n variant={(dialogData.variantBtn as \"default\") || \"default\"}\n disabled={dialogData.btnState === false}\n onClick={dialogData.onClickBtn}\n >\n {dialogData.btn}\n </Button>\n )}\n </div>\n </DialogContent>\n </Dialog>\n );\n}\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/bookmark.tsx","../src/components/icons/briefcase-business.tsx","../src/components/icons/building.tsx","../src/components/icons/calendar.tsx","../src/components/icons/calendar-days.tsx","../src/components/icons/calendar2.tsx","../src/components/icons/card.tsx","../src/components/icons/check.tsx","../src/components/icons/circle-user.tsx","../src/components/icons/copy-user-rights.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/ellipsis-box.tsx","../src/components/icons/empty-data.tsx","../src/components/icons/expand.tsx","../src/components/icons/factory.tsx","../src/components/icons/file-cog.tsx","../src/components/icons/file-spreadsheet.tsx","../src/components/icons/file-text.tsx","../src/components/icons/filter.tsx","../src/components/icons/filters.tsx","../src/components/icons/folder.tsx","../src/components/icons/hamburger-menu.tsx","../src/components/icons/handy-man.tsx","../src/components/icons/help.tsx","../src/components/icons/home.tsx","../src/components/icons/home-plus.tsx","../src/components/icons/image-placeholder.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/message.tsx","../src/components/icons/message-inverse.tsx","../src/components/icons/message-square.tsx","../src/components/icons/not-found.tsx","../src/components/icons/outline-arrow.tsx","../src/components/icons/plus.tsx","../src/components/icons/plus-search.tsx","../src/components/icons/power.tsx","../src/components/icons/question.tsx","../src/components/icons/role.tsx","../src/components/icons/search.tsx","../src/components/icons/setting.tsx","../src/components/icons/setup.tsx","../src/components/icons/table-of-contents.tsx","../src/components/icons/tag-list-view.tsx","../src/components/icons/toolbox.tsx","../src/components/icons/transfer-user-rights.tsx","../src/components/icons/trash.tsx","../src/components/icons/triangle-down.tsx","../src/components/icons/user.tsx","../src/components/icons/user-active.tsx","../src/components/icons/user-alone.tsx","../src/components/icons/user-friend.tsx","../src/components/icons/user-group.tsx","../src/components/icons/user-inactive.tsx","../src/components/icons/user-name.tsx","../src/components/icons/user-protect.tsx","../src/components/icons/users.tsx","../src/components/icons/warning.tsx","../src/components/icons/workflow.tsx","../src/components/auditFooter/AuditFooter.tsx","../src/components/ui/accordion.tsx","../src/components/ui/button.tsx","../src/components/ui/carousel.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/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/command/BaseDialog.tsx","../src/components/command/Command.tsx","../src/components/ui/tooltip.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/hooks/useBindRef/useBindRef.ts","../src/components/truncated/EllipsisMeasure.tsx","../src/components/truncated/truncated.tsx","../src/components/command/hooks/useFieldNames.ts","../src/components/command/VirtualizedCommand.tsx","../src/components/combobox/NonVirtualizedCommand.tsx","../src/components/combobox/Combobox.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/helper.ts","../src/components/advanceSearch/builder/base.ts","../src/components/advanceSearch/builder/checkbox.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/components/data-table/cells/HeaderCell.tsx","../src/components/ui/table.tsx","../src/components/data-table/StatusContentSlot.tsx","../src/components/data-table/DataTableDevTool.tsx","../src/components/data-table/hooks/useTableController.ts","../src/components/data-table/hooks/useScrollFetch.ts","../src/components/data-table/constants.ts","../src/components/data-table/hooks/useTableVirtualizer.ts","../src/components/data-table/hooks/useComputedTableState.ts","../src/components/data-table/ColumnResizer.tsx","../src/components/data-table/ColumnSeparator.tsx","../src/components/data-table/helpers.ts","../src/components/data-table/TableHeaderRows.tsx","../src/components/data-table/TableFilterRow.tsx","../src/components/data-table/TableDataRows.tsx","../src/components/data-table/TableFooterRows.tsx","../src/components/data-table/DataTable.tsx","../src/components/dateTimePicker/DateTimePicker.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/dropdownMenu.tsx","../src/components/ui/header.tsx","../src/components/ui/radio.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/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/languageSelector/LanguageSelector.tsx","../src/components/loading/index.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/richtext/types.ts","../src/components/richtext/utils/index.ts","../src/components/richtext/cmd/index.ts","../src/components/richtext/nodes/ImageNode.tsx","../src/components/richtext/nodes/MentionNode.tsx","../src/components/richtext/toolbar/ToolbarButton.tsx","../src/components/richtext/toolbar/plugins/UploadImagePlugin.tsx","../src/components/richtext/toolbar/plugins/LinkPlugin.tsx","../src/components/richtext/toolbar/plugins/FormatPlugin.tsx","../src/components/richtext/toolbar/plugins/AdjustFontSizePlugin.tsx","../src/components/richtext/toolbar/plugins/ColorPlugin.tsx","../src/components/richtext/toolbar/plugins/BlockPlugin.tsx","../src/components/richtext/toolbar/plugins/AlignPlugin.tsx","../src/components/richtext/toolbar/index.tsx","../src/components/richtext/plugins/ImagePlugin.tsx","../src/components/richtext/plugins/EditableStatePlugin.tsx","../src/components/richtext/plugins/ControlledValuePlugin.tsx","../src/components/richtext/plugins/MentionsPlugin.tsx","../src/components/richtext/plugins/MentionDeletePlugin.tsx","../src/components/richtext/plugins/OnChangePluginFiltered.tsx","../src/components/richtext/plugins/MaxLengthPlugin.tsx","../src/components/richtext/index.tsx","../src/components/right-panel-container/RightPanelContainer.tsx","../src/components/cropperModal/type.ts","../src/components/cropperModal/helper.ts","../src/components/cropperModal/cropperModal.tsx","../src/components/inputNumber/helper.ts","../src/components/inputNumber/BaseInput.tsx","../src/components/inputNumber/useStepper.ts","../src/components/inputNumber/InputNumber.tsx","../src/components/actionMenu/actionButton.tsx","../src/components/actionMenu/actionMenu.tsx","../src/components/dropdownMenu/dropdownMenu.tsx","../src/components/progress-bar/ProgressBar.tsx","../src/components/truncatedMouseEnterDiv/truncatedMouseEnterDiv.tsx","../src/components/tabSelect/index.tsx","../src/components/inputMention/types.ts","../src/components/inputMention/utils/index.ts","../src/components/inputMention/nodes/MentionNode.tsx","../src/components/inputMention/plugins/ControlledValuePlugin.tsx","../src/components/inputMention/plugins/MentionsPlugin.tsx","../src/components/inputMention/plugins/MentionDeletePlugin.tsx","../src/components/inputMention/plugins/OnChangePluginFiltered.tsx","../src/components/inputMention/plugins/MaxLengthPlugin.tsx","../src/components/inputMention/index.tsx"],"names":["format","jsxs","jsx","useState","clsx","useCallback","useMemo","ChevronRight","React","Label","React3","Slot","cva","React4","Fragment","CircleX","X","React5","ChevronLeft","DatePicker","placeholder","React7","normalizeMonth","isValid","defaultDisplayFormatter","defaultValueFormatter","defaultValueParser","parseISO","MonthPicker","DialogPrimitive","CommandPrimitive","SearchIcon","useRef","useEffect","threshold","React10","React11","React12","React13","open","React15","option","React16","Check","React17","createPortal","useFormContext","r","Search","CheckIcon","CollapsibleTrigger","CollapsibleContent","ChevronDown","useVirtualizer","isSomeColumnsFilterable","flexRender","parse","value","Dialog","DialogPortal","DialogOverlay","XIcon","DialogContent","DialogTitle","DialogDescription","DialogHeader","cn","twMerge","DialogPrimitive3","create","useLayoutEffect","editor","tr","Node","nodes","Separator","SheetPrimitive","React31","TooltipProvider","TooltipPrimitive2","Tooltip","TooltipTrigger","TooltipContent","React33","useForm","Plus","Image","React34","Header","Icon","element","forwardRef","ToolbarButton","useLexicalComposerContext","$getNodeByKey","COMMAND_PRIORITY_NORMAL","$getSelection","$isRangeSelection","$createTextNode","$insertNodes","Pencil","InlineCodeIcon","$patchStyleText","BulletListIcon","$isLinkNode","mergeRegister","placeCaretAfterImage","COMMAND_PRIORITY_LOW","LinkNode","LinkPlugin","React39","croppedAreaPixels","InputPrimitive","React40","inputVariants","Input","React41","React42","ChevronUp","createDefaultMentionConfig","parseSerializedEditorState","convertMentionElement","$createMentionNode","MentionNode","TextNode","$applyNodeReplacement","ControlledValuePlugin","COMPLETE_VARIABLE_REGEX","escapeRegExp","checkForTriggerMatch","checkForTextMatch","MentionTypeaheadOption","MenuOption","MentionsTypeaheadMenuItem","MentionsPlugin","$isTextNode","PASTE_COMMAND","LexicalTypeaheadMenuPlugin","MentionDeletePlugin","SKIP_TAGS","OnChangePluginFiltered","MaxLengthPlugin","RootNode","$restoreTextContent","trimTextContentFromAnchor","theme","$getRoot","LexicalComposer","ContentEditable","LexicalErrorBoundary","HistoryPlugin","AutoFocusPlugin"],"mappings":"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","file":"index.mjs","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 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=\"M20 13.0004C20 18.0004 16.5 20.5005 12.34 21.9505C12.1222 22.0243 11.8855 22.0207 11.67 21.9405C7.5 20.5005 4 18.0004 4 13.0004V6.00045C4 5.73523 4.10536 5.48088 4.29289 5.29334C4.48043 5.10581 4.73478 5.00045 5 5.00045C7 5.00045 9.5 3.80045 11.24 2.28045C11.4519 2.09945 11.7214 2 12 2C12.2786 2 12.5481 2.09945 12.76 2.28045C14.51 3.81045 17 5.00045 19 5.00045C19.2652 5.00045 19.5196 5.10581 19.7071 5.29334C19.8946 5.48088 20 5.73523 20 6.00045V13.0004Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M6.375 18.9102C6.80171 17.7624 7.56942 16.7726 8.57502 16.0738C9.58063 15.375 10.776 15.0007 12.0005 15.001C13.2251 15.0013 14.4203 15.3763 15.4255 16.0757C16.4307 16.775 17.1979 17.7652 17.624 18.9132\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 15C14.2091 15 16 13.2091 16 11C16 8.79086 14.2091 7 12 7C9.79086 7 8 8.79086 8 11C8 13.2091 9.79086 15 12 15Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\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 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=\"M12 20V10\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M18 20V4\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M6 20V16\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const 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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const 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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const BookmarkIcon: 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=\"M19 21L12 17L5 21V5C5 4.46957 5.21071 3.96086 5.58579 3.58579C5.96086 3.21071 6.46957 3 7 3H17C17.5304 3 18.0391 3.21071 18.4142 3.58579C18.7893 3.96086 19 4.46957 19 5V21Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const BriefcaseBusinessIcon: 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=\"M12 12H12.01\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M16 6V4C16 3.46957 15.7893 2.96086 15.4142 2.58579C15.0391 2.21071 14.5304 2 14 2H10C9.46957 2 8.96086 2.21071 8.58579 2.58579C8.21071 2.96086 8 3.46957 8 4V6\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M22 13C19.0328 14.959 15.5555 16.0033 12 16.0033C8.44445 16.0033 4.96721 14.959 2 13\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M20 6H4C2.89543 6 2 6.89543 2 8V18C2 19.1046 2.89543 20 4 20H20C21.1046 20 22 19.1046 22 18V8C22 6.89543 21.1046 6 20 6Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const BuildingIcon: 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=\"M6 22V4C6 3.46957 6.21071 2.96086 6.58579 2.58579C6.96086 2.21071 7.46957 2 8 2H16C16.5304 2 17.0391 2.21071 17.4142 2.58579C17.7893 2.96086 18 3.46957 18 4V22H6Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M6 12H4C3.46957 12 2.96086 12.2107 2.58579 12.5858C2.21071 12.9609 2 13.4696 2 14V20C2 20.5304 2.21071 21.0391 2.58579 21.4142C2.96086 21.7893 3.46957 22 4 22H6\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M18 9H20C20.5304 9 21.0391 9.21071 21.4142 9.58579C21.7893 9.96086 22 10.4696 22 11V20C22 20.5304 21.7893 21.0391 21.4142 21.4142C21.0391 21.7893 20.5304 22 20 22H18\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10 6H14\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10 10H14\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10 14H14\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10 18H14\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const 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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const CalendarDaysIcon: 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=\"M8 2V6\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M16 2V6\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M19 4H5C3.89543 4 3 4.89543 3 6V20C3 21.1046 3.89543 22 5 22H19C20.1046 22 21 21.1046 21 20V6C21 4.89543 20.1046 4 19 4Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M3 10H21\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M8 14H8.01\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 14H12.01\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M16 14H16.01\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M8 18H8.01\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 18H12.01\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M16 18H16.01\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const 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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const CardIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 18 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 <path\n fill=\"#fff\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.5\"\n d=\"M15 4.5H3A1.5 1.5 0 0 0 1.5 6v6A1.5 1.5 0 0 0 3 13.5h12a1.5 1.5 0 0 0 1.5-1.5V6A1.5 1.5 0 0 0 15 4.5\"\n />\n <path fill=\"#fff\" d=\"M9 9h.008z\" />\n <path\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.5\"\n d=\"M9 9h.008M12.75 9h.008M5.25 9h.008\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const 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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const CircleUserIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <path\n d=\"M12 22C17.5228 22 22 17.5228 22 12C22 6.47715 17.5228 2 12 2C6.47715 2 2 6.47715 2 12C2 17.5228 6.47715 22 12 22Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 13C13.6569 13 15 11.6569 15 10C15 8.34315 13.6569 7 12 7C10.3431 7 9 8.34315 9 10C9 11.6569 10.3431 13 12 13Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M7 20.662V19C7 18.4696 7.21071 17.9609 7.58579 17.5858C7.96086 17.2107 8.46957 17 9 17H15C15.5304 17 16.0391 17.2107 16.4142 17.5858C16.7893 17.9609 17 18.4696 17 19V20.662\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const CopyUserRightsIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 41 52\"\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_6038_738614)\">\n <path\n d=\"M10.2705 11.7249C13.2559 12.0332 17.6042 10.5243 18.886 14.1911L18.8536 38.9182C17.5231 42.4715 13.2072 40.9464 10.2867 41.2709L10.2056 42.2119C9.31319 43.0556 8.82644 42.2119 8.85889 41.2709C5.71122 40.995 0.762556 42.5364 0.210901 38.0421C0.730105 30.5947 -0.454329 22.2713 0.210901 14.9213C0.600304 10.508 5.84102 11.9358 8.85889 11.6925C8.76154 9.95639 10.5139 9.97261 10.2867 11.6925L10.2705 11.7249ZM2.9854 13.1527C2.33639 13.2176 1.62249 14.11 1.62249 14.7752V38.0421C1.65494 39.0156 2.28772 39.7295 3.27745 39.8431C7.33373 39.551 11.8768 40.2162 15.8681 39.8431C16.8903 39.7457 17.4907 39.0318 17.6691 38.0258C17.5556 30.1242 17.8963 22.1577 17.4907 14.3047C17.3122 13.8829 16.5334 12.9743 16.0304 13.1203C15.138 14.1749 14.7973 15.8137 13.337 16.268C12.396 16.56 7.70691 16.5438 6.57115 16.414C6.00327 16.3491 5.35427 16.0733 4.91619 15.7163C4.36453 15.2458 3.40725 13.1041 2.9854 13.1365V13.1527ZM14.3592 13.1365H4.77016C5.35427 13.8829 5.46784 14.9213 6.57115 15.0348C8.58306 15.2295 10.9519 14.905 12.9963 14.9862C13.4506 15.0511 14.4566 13.2176 14.3592 13.1365Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M31.8174 11.7088C34.8353 11.9522 40.0598 10.5244 40.4654 14.9376C41.1306 22.2876 39.9462 30.6111 40.4654 38.0584C39.9138 42.5365 34.9813 41.0114 31.8174 41.2872C31.9148 43.0233 30.1625 43.0071 30.3896 41.2872C27.4691 40.9627 23.1532 42.4879 21.8228 38.9346V14.0939C23.1857 10.5568 27.4691 12.0495 30.3896 11.7413L30.4707 10.8002C31.3631 9.95649 31.8499 10.8002 31.8174 11.7413V11.7088ZM24.3701 13.1528C23.786 13.234 23.0072 14.3373 22.991 14.9376C23.1045 22.8392 22.7638 30.8058 23.1694 38.6587C23.4615 39.2266 23.9482 39.8269 24.6459 39.8594C28.686 39.5511 33.2615 40.2488 37.2366 39.8594C38.2588 39.762 38.8916 39.2428 39.0376 38.2044V14.9376C39.2161 14.2561 38.0317 12.9095 37.4638 13.2015C37.1555 13.3638 36.3767 15.0999 35.8899 15.5704C35.5168 15.9436 34.884 16.3005 34.3485 16.3979C33.1154 16.6088 29.2376 16.5763 27.9396 16.4303C27.388 16.3654 26.7065 16.0896 26.3009 15.7002C25.7006 15.1323 25.2463 13.7045 24.792 13.2826C24.6297 13.1204 24.581 13.1204 24.3539 13.1528H24.3701ZM35.8899 13.1366H26.3009C26.5443 13.7045 27.0472 14.8565 27.6638 14.9863C29.7082 14.8889 32.077 15.2297 34.0889 15.035C35.1923 14.9214 35.2896 13.883 35.8899 13.1366Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M10.0758 19.9347L14.9596 32.6715C14.6026 33.288 14.2295 33.4016 13.7265 32.8662L12.0066 28.6152L7.23644 28.5341C6.92816 28.6152 5.80863 32.8499 5.2083 33.142C4.57552 33.4503 4.08876 32.7201 4.34837 32.1036C6.10068 28.5665 7.05796 23.991 8.84272 20.5675C9.13478 19.9996 9.39438 19.5129 10.0921 19.9347H10.0758ZM11.3738 27.1225C10.9358 25.8082 10.4328 24.0235 9.80001 22.7904C9.71888 22.6443 9.70266 22.4172 9.47551 22.401L7.73942 27.1225H11.3576H11.3738Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M4.6891 36.5508H14.5864C14.8947 36.5508 15.495 37.8163 13.8076 37.9786C11.9255 38.1571 6.96061 38.2057 5.17585 37.9624C4.16989 37.8163 3.94274 37.2647 4.6891 36.567V36.5508Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M27.5178 19.7726C28.6049 19.5617 32.791 19.6591 33.8456 19.9673C36.1009 20.6326 37.1231 23.4882 35.8575 25.4514C35.6791 25.7273 34.9165 26.3114 34.9489 26.5547C37.6748 29.0047 36.3605 32.915 32.6612 33.2557C31.6877 33.3368 28.0695 33.4018 27.2907 33.1421C26.5119 32.8825 26.3658 32.2011 26.3009 31.4547C26.09 29.0534 26.0413 23.7478 26.3009 21.3952C26.3821 20.6164 26.6903 19.9511 27.5178 19.7889V19.7726ZM27.7125 25.8571H33.1317C34.0728 25.8571 35.1112 24.3481 35.1112 23.4233C35.1112 22.612 34.1377 21.1518 33.294 21.1518H27.7125V25.8733V25.8571ZM27.7125 31.8279H33.294C34.1377 31.8279 35.1112 30.3677 35.1112 29.5564C35.1112 28.6316 34.0728 27.1226 33.1317 27.1226H27.7125V31.8441V31.8279Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M26.0738 36.5494H35.9711C36.2469 36.5494 36.9609 37.7339 35.4844 37.9448C33.6834 38.2044 28.7347 38.1395 26.8526 37.961C25.8791 37.8637 25.2625 37.3931 26.0738 36.5332V36.5494Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M20.7843 2.77007H27.7287V4.31146H19.7784C19.1943 4.31146 19.243 3.14325 19.1943 2.77007L15.1867 5.80417L19.1943 8.93562C19.2267 8.56244 19.1943 7.39423 19.7784 7.39423H27.7287V8.93562H20.7843V10.7204C20.7843 11.0936 19.9082 11.4667 19.5999 11.1422L13.3208 6.43695C12.9801 6.11244 12.9963 5.59324 13.3208 5.28496L19.5837 0.563453C19.9082 0.23895 20.7681 0.612128 20.7681 0.985306V2.77007H20.7843Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M19.9893 48.8497H13.0449V47.3083H20.9952C21.5793 47.3083 21.5307 48.4765 21.5793 48.8497L25.5869 45.8156L21.5793 42.6841C21.5469 43.0573 21.5793 44.2255 20.9952 44.2255H13.0449V42.6841H19.9893V40.8994C19.9893 40.5262 20.8654 40.153 21.1737 40.4775L27.4528 45.1828C27.7936 45.5073 27.7773 46.0265 27.4528 46.3348L21.1737 51.0401C20.8492 51.3646 19.9893 50.9914 19.9893 50.6182V48.8335V48.8497Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_6038_738614\">\n <rect width=\"40.6602\" height=\"50.736\" fill=\"white\" transform=\"translate(0 0.449219)\" />\n </clipPath>\n </defs>\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const 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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const 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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const DashboardIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 24 24\"\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 <path\n d=\"M9 3H4C3.44772 3 3 3.44772 3 4V9C3 9.55228 3.44772 10 4 10H9C9.55228 10 10 9.55228 10 9V4C10 3.44772 9.55228 3 9 3Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M20 3H15C14.4477 3 14 3.44772 14 4V9C14 9.55228 14.4477 10 15 10H20C20.5523 10 21 9.55228 21 9V4C21 3.44772 20.5523 3 20 3Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M20 14H15C14.4477 14 14 14.4477 14 15V20C14 20.5523 14.4477 21 15 21H20C20.5523 21 21 20.5523 21 20V15C21 14.4477 20.5523 14 20 14Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M9 14H4C3.44772 14 3 14.4477 3 15V20C3 20.5523 3.44772 21 4 21H9C9.55228 21 10 20.5523 10 20V15C10 14.4477 9.55228 14 9 14Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\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 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=\"M12 3H5C4.46957 3 3.96086 3.21071 3.58579 3.58579C3.21071 3.96086 3 4.46957 3 5V19C3 19.5304 3.21071 20.0391 3.58579 20.4142C3.96086 20.7893 4.46957 21 5 21H19C19.5304 21 20.0391 20.7893 20.4142 20.4142C20.7893 20.0391 21 19.5304 21 19V12\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M18.3751 2.62523C18.7729 2.2274 19.3125 2.00391 19.8751 2.00391C20.4377 2.00391 20.9773 2.2274 21.3751 2.62523C21.7729 3.02305 21.9964 3.56262 21.9964 4.12523C21.9964 4.68784 21.7729 5.2274 21.3751 5.62523L12.3621 14.6392C12.1246 14.8765 11.8313 15.0501 11.5091 15.1442L8.63609 15.9842C8.55005 16.0093 8.45883 16.0108 8.372 15.9886C8.28517 15.9663 8.20592 15.9212 8.14254 15.8578C8.07916 15.7944 8.03398 15.7151 8.01174 15.6283C7.98949 15.5415 7.991 15.4503 8.01609 15.3642L8.85609 12.4912C8.95062 12.1693 9.12463 11.8763 9.36209 11.6392L18.3751 2.62523Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const DecreaseIcon: React.FC<IconProps> = ({\n size = \"1em\",\n strokeWidth = 1.5,\n className,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n width={size}\n height={size}\n className={className}\n {...props}\n >\n <line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\" />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const 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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const EllipsisBoxIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 18 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 <path\n d=\"M15 4.5H3C2.17157 4.5 1.5 5.17157 1.5 6V12C1.5 12.8284 2.17157 13.5 3 13.5H15C15.8284 13.5 16.5 12.8284 16.5 12V6C16.5 5.17157 15.8284 4.5 15 4.5Z\"\n fill=\"currentColor\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M9 9H9.0075\"\n stroke=\"#FCFEFC\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12.75 9H12.7575\"\n stroke=\"#FCFEFC\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M5.25 9H5.2575\"\n stroke=\"#FCFEFC\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const 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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const 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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const FactoryIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 11 8\"\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_3750_172528)\">\n <path\n d=\"M4.10217 1.31539L7.17022 0.0133111C7.28419 -0.0526611 7.53986 0.141783 7.53986 0.263311V1.29109L7.64459 1.27373C8.59335 0.950811 9.60063 0.322339 10.5432 0.0376166C10.7588 -0.0283556 10.9005 0.0376167 10.9899 0.273728L11.0022 7.64873C10.9837 7.85012 10.8697 7.97859 10.6911 7.99942L0.254788 7.99248C0.113091 7.94387 0.0299206 7.8397 0.00219727 7.67303V1.83276C0.00527764 1.7147 0.0484028 1.61401 0.131573 1.54456L3.69248 0.0167833C3.87422 -0.0491889 4.10217 0.148728 4.10217 0.357061V1.31192V1.31539ZM1.45613 3.64526C1.28363 3.67651 1.20354 3.83623 1.18506 4.01678C1.15734 4.30498 1.16042 4.86053 1.18198 5.1522C1.19738 5.37789 1.27747 5.54803 1.4931 5.57581C1.74261 5.60706 2.36176 5.60706 2.61127 5.57581C2.75913 5.55845 2.88234 5.44387 2.90083 5.27373C2.92855 5.00289 2.92855 4.21123 2.90083 3.94039C2.88234 3.77026 2.75605 3.65567 2.61127 3.63831C2.3864 3.61053 1.66868 3.60359 1.45613 3.64526ZM6.26459 3.74248C6.22454 3.69734 6.12289 3.64526 6.06745 3.63831C5.82718 3.60359 5.1957 3.61053 4.94927 3.63831C4.77677 3.65914 4.65356 3.79456 4.63815 3.98901C4.61351 4.26678 4.61043 4.97859 4.63815 5.24942C4.65356 5.38484 4.74597 5.51678 4.85994 5.55845C4.97391 5.60012 5.91343 5.60012 6.06745 5.57581C6.21222 5.55498 6.33852 5.41609 6.357 5.24942C6.3878 4.97859 6.38164 4.26678 6.357 3.98901C6.35084 3.90914 6.31387 3.80151 6.26151 3.74248H6.26459ZM8.35 3.64526C8.23603 3.66609 8.11589 3.78762 8.10049 3.91956C8.06661 4.15567 8.07277 5.0272 8.10049 5.27373C8.11897 5.44387 8.24527 5.55845 8.39004 5.57581C8.63955 5.60706 9.25871 5.60706 9.50822 5.57581C9.71152 5.55151 9.80085 5.39178 9.81934 5.17651C9.84398 4.88484 9.8409 4.35706 9.81934 4.06192C9.80393 3.85012 9.73001 3.67303 9.5267 3.64178C9.3234 3.61053 8.55022 3.60706 8.35308 3.64526H8.35Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M1.45613 3.6467C1.66868 3.60503 2.38641 3.61198 2.61127 3.63976C2.75605 3.65712 2.88235 3.7717 2.90083 3.94184C2.92855 4.21267 2.92855 5.00434 2.90083 5.27517C2.88235 5.44531 2.75605 5.5599 2.61127 5.57726C2.36176 5.60851 1.74261 5.60851 1.4931 5.57726C1.27747 5.54948 1.19738 5.37934 1.18198 5.15365C1.16042 4.86198 1.15734 4.30295 1.18506 4.01823C1.20354 3.83767 1.28363 3.67795 1.45613 3.6467Z\"\n fill=\"white\"\n />\n <path\n d=\"M8.34999 3.64497C8.54714 3.60677 9.32031 3.61024 9.52361 3.64149C9.72692 3.67274 9.80085 3.84983 9.81625 4.06163C9.83781 4.35677 9.83781 4.88455 9.81625 5.17622C9.79777 5.39149 9.70844 5.55121 9.50513 5.57552C9.25562 5.60677 8.63647 5.60677 8.38696 5.57552C8.24218 5.55816 8.11588 5.44358 8.0974 5.27344C8.06968 5.02691 8.0666 4.15538 8.0974 3.91927C8.11588 3.78733 8.23294 3.6658 8.34691 3.64497H8.34999Z\"\n fill=\"white\"\n />\n <path\n d=\"M6.26457 3.74351C6.31386 3.79906 6.35082 3.91018 6.36006 3.99004C6.38471 4.26781 6.38779 4.97962 6.36006 5.25045C6.34158 5.41712 6.21529 5.55601 6.07051 5.57684C5.91341 5.59768 4.97698 5.60115 4.863 5.55948C4.74903 5.51781 4.65662 5.38587 4.64122 5.25045C4.61041 4.97962 4.61657 4.26781 4.64122 3.99004C4.6597 3.79559 4.77983 3.6567 4.95234 3.63934C5.19876 3.61156 5.83024 3.60809 6.07051 3.63934C6.12596 3.64629 6.22761 3.70184 6.26765 3.74351H6.26457Z\"\n fill=\"white\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_3750_172528\">\n <rect width=\"11\" height=\"8\" fill=\"white\" transform=\"translate(-0.000976562)\" />\n </clipPath>\n </defs>\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const FileCogIcon: 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=\"M14 2V6C14 6.53043 14.2107 7.03914 14.5858 7.41421C14.9609 7.78929 15.4696 8 16 8H20\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M2.30469 15.5304L3.22769 15.1484\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M3.22869 12.8518L2.30469 12.4688\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M4.677 21.5C5.0398 21.82 5.50627 21.9976 5.99 22H18C18.5304 22 19.0391 21.7893 19.4142 21.4142C19.7893 21.0391 20 20.5304 20 20V7L15 2H6C5.46957 2 4.96086 2.21071 4.58579 2.58579C4.21071 2.96086 4 3.46957 4 4V6.5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M4.85175 11.2277L4.46875 10.3047\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M4.85175 16.7725L4.46875 17.6965\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M7.14844 11.2277L7.53144 10.3047\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M7.53044 17.6965L7.14844 16.7725\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M8.77344 12.8518L9.69644 12.4688\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M8.77344 15.1484L9.69644 15.5314\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M6 17C7.65685 17 9 15.6569 9 14C9 12.3431 7.65685 11 6 11C4.34315 11 3 12.3431 3 14C3 15.6569 4.34315 17 6 17Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const FileSpreadsheet: 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 stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"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 stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M8 13H10\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14 13H16\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M8 17H10\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14 17H16\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const FileTextIcon: 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 stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"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 stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M10 9H8\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M16 13H8\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M16 17H8\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const SuiFilterIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 24 24\"\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(#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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const FiltersIcon: React.FC<IconProps> = ({\n size = \"1em\",\n className,\n strokeWidth = 1.5,\n ...props\n}) => (\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","import React from \"react\";\nimport { IconProps } from \"./types\";\nexport const FolderIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 15 11\"\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=\"M1.07661 0.00525527L5.88302 0L6.02335 0.0762014L7.12727 1.33431L12.8197 1.33747C13.5252 1.36584 14.0458 1.83041 14.0991 2.50676V9.15678C14.0546 9.72698 13.6605 10.1621 13.0756 10.2814L1.1509 10.2998C0.622607 10.2399 0.187312 9.89778 0.0502848 9.40641C-0.016853 6.5775 -0.016853 3.71968 0.0508351 0.891294C0.181809 0.420947 0.579132 0.0945949 1.07661 0.00525527Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\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\nexport const HelpIcon: 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=\"M19 3H5C3.89543 3 3 3.89543 3 5V19C3 20.1046 3.89543 21 5 21H19C20.1046 21 21 20.1046 21 19V5C21 3.89543 20.1046 3 19 3Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M7 8H17\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M7 12H17\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M7 16H17\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const HomeIcon: 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 21V13C15 12.7348 14.8946 12.4804 14.7071 12.2929C14.5196 12.1054 14.2652 12 14 12H10C9.73478 12 9.48043 12.1054 9.29289 12.2929C9.10536 12.4804 9 12.7348 9 13V21\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M3 9.99948C2.99993 9.70855 3.06333 9.4211 3.18579 9.1572C3.30824 8.89329 3.4868 8.65928 3.709 8.47148L10.709 2.47248C11.07 2.16739 11.5274 2 12 2C12.4726 2 12.93 2.16739 13.291 2.47248L20.291 8.47148C20.5132 8.65928 20.6918 8.89329 20.8142 9.1572C20.9367 9.4211 21.0001 9.70855 21 9.99948V18.9995C21 19.5299 20.7893 20.0386 20.4142 20.4137C20.0391 20.7888 19.5304 20.9995 19 20.9995H5C4.46957 20.9995 3.96086 20.7888 3.58579 20.4137C3.21071 20.0386 3 19.5299 3 18.9995V9.99948Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const HomePlusIcon: 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=\"M13.22 2.41533C12.8579 2.13654 12.4113 1.99014 11.9544 2.00052C11.4976 2.01089 11.0581 2.1774 10.709 2.47233L3.709 8.47133C3.4868 8.65913 3.30824 8.89314 3.18579 9.15705C3.06333 9.42096 2.99993 9.7084 3 9.99933V18.9993C3 19.5298 3.21071 20.0385 3.58579 20.4135C3.96086 20.7886 4.46957 20.9993 5 20.9993H19C19.5304 20.9993 20.0391 20.7886 20.4142 20.4135C20.7893 20.0385 21 19.5298 21 18.9993V11.6453\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M15 21V13C15 12.7348 14.8946 12.4804 14.7071 12.2929C14.5196 12.1054 14.2652 12 14 12H10C9.73478 12 9.48043 12.1054 9.29289 12.2929C9.10536 12.4804 9 12.7348 9 13V21\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M15 6H21\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M18 3V9\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const ImagePlaceholderIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n data-testid=\"image-placeholder\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 200 200\"\n fill=\"currentColor\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <path\n d=\"M41.6667 183.334C34.7223 183.334 28.8195 180.903 23.9584 176.042C19.0973 171.181 16.6667 165.278 16.6667 158.334V41.667C16.6667 34.7225 19.0973 28.8198 23.9584 23.9587C28.8195 19.0975 34.7223 16.667 41.6667 16.667H158.333C165.278 16.667 171.181 19.0975 176.042 23.9587C180.903 28.8198 183.333 34.7225 183.333 41.667V158.334C183.333 165.278 180.903 171.181 176.042 176.042C171.181 180.903 165.278 183.334 158.333 183.334H41.6667ZM41.6667 166.667H158.333C160.695 166.667 162.672 165.867 164.267 164.267C165.867 162.673 166.667 160.695 166.667 158.334V41.667C166.667 39.3059 165.867 37.3253 164.267 35.7253C162.672 34.1309 160.695 33.3337 158.333 33.3337H41.6667C39.3056 33.3337 37.3251 34.1309 35.7251 35.7253C34.1306 37.3253 33.3334 39.3059 33.3334 41.667V158.334C33.3334 160.695 34.1306 162.673 35.7251 164.267C37.3251 165.867 39.3056 166.667 41.6667 166.667ZM50.0001 150L83.3334 116.667L98.3334 131.459L116.667 108.334L150 150H50.0001ZM66.6667 83.3337C62.0834 83.3337 58.1612 81.7003 54.9001 78.4337C51.6334 75.1725 50.0001 71.2503 50.0001 66.667C50.0001 62.0837 51.6334 58.1614 54.9001 54.9003C58.1612 51.6337 62.0834 50.0003 66.6667 50.0003C71.2501 50.0003 75.1751 51.6337 78.4417 54.9003C81.7029 58.1614 83.3334 62.0837 83.3334 66.667C83.3334 71.2503 81.7029 75.1725 78.4417 78.4337C75.1751 81.7003 71.2501 83.3337 66.6667 83.3337Z\"\n fill=\"currentColor\"\n fillOpacity=\"0.9\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const 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","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 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=\"M12.8305 2.18036C12.5699 2.06151 12.2868 2 12.0005 2C11.7141 2 11.431 2.06151 11.1705 2.18036L2.60045 6.08036C2.423 6.1586 2.27213 6.28676 2.16621 6.44921C2.0603 6.61167 2.00391 6.80142 2.00391 6.99536C2.00391 7.18929 2.0603 7.37904 2.16621 7.5415C2.27213 7.70396 2.423 7.83211 2.60045 7.91036L11.1805 11.8204C11.441 11.9392 11.7241 12.0007 12.0105 12.0007C12.2968 12.0007 12.5799 11.9392 12.8405 11.8204L21.4205 7.92036C21.5979 7.84211 21.7488 7.71396 21.8547 7.5515C21.9606 7.38904 22.017 7.19929 22.017 7.00536C22.017 6.81142 21.9606 6.62167 21.8547 6.45921C21.7488 6.29676 21.5979 6.1686 21.4205 6.09036L12.8305 2.18036Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M2 12C1.99953 12.1913 2.05392 12.3787 2.15672 12.5399C2.25952 12.7012 2.40642 12.8297 2.58 12.91L11.18 16.82C11.4392 16.9374 11.7205 16.9981 12.005 16.9981C12.2895 16.9981 12.5708 16.9374 12.83 16.82L21.41 12.92C21.587 12.8404 21.737 12.7111 21.8418 12.5477C21.9466 12.3844 22.0015 12.1941 22 12\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M2 17C1.99953 17.1913 2.05392 17.3787 2.15672 17.5399C2.25952 17.7012 2.40642 17.8297 2.58 17.91L11.18 21.82C11.4392 21.9374 11.7205 21.9981 12.005 21.9981C12.2895 21.9981 12.5708 21.9374 12.83 21.82L21.41 17.92C21.587 17.8404 21.737 17.7111 21.8418 17.5477C21.9466 17.3844 22.0015 17.1941 22 17\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\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\nexport const MessageIcon: 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=\"M14 9C14 9.53043 13.7893 10.0391 13.4142 10.4142C13.0391 10.7893 12.5304 11 12 11H6L2 15V4C2 3.46957 2.21071 2.96086 2.58579 2.58579C2.96086 2.21071 3.46957 2 4 2H12C12.5304 2 13.0391 2.21071 13.4142 2.58579C13.7893 2.96086 14 3.46957 14 4V9Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M18 9H20C20.5304 9 21.0391 9.21071 21.4142 9.58579C21.7893 9.96086 22 10.4696 22 11V22L18 18H12C11.4696 18 10.9609 17.7893 10.5858 17.4142C10.2107 17.0391 10 16.5304 10 16V15\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const MessageIconInverse: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 18 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 <path\n fill=\"#fff\"\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.5\"\n d=\"M2.25 14.25a1.5 1.5 0 0 0 1.5 1.5h10.5a1.5 1.5 0 0 0 1.5-1.5V6.375a.375.375 0 0 0-.577-.316L11.827 8.19a.375.375 0 0 1-.577-.316v-1.5a.375.375 0 0 0-.577-.316L7.327 8.19a.375.375 0 0 1-.577-.316V3.75a1.5 1.5 0 0 0-1.5-1.5h-1.5a1.5 1.5 0 0 0-1.5 1.5z\"\n />\n <path fill=\"currentColor\" d=\"M9 12h.008z\" />\n <path\n stroke=\"currentColor\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth=\"1.5\"\n d=\"M9 12h.008M12 12h.008M6 12h.008\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const MessageSquareIcon: 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=\"M21 15C21 15.5304 20.7893 16.0391 20.4142 16.4142C20.0391 16.7893 19.5304 17 19 17H7L3 21V5C3 4.46957 3.21071 3.96086 3.58579 3.58579C3.96086 3.21071 4.46957 3 5 3H19C19.5304 3 20.0391 3.21071 20.4142 3.58579C20.7893 3.96086 21 4.46957 21 5V15Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const 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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const OutlineArrowIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 62 46\"\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=\"M29.681 35.7348H0.829102V29.3339H33.9079C36.3123 29.3339 36.1571 34.183 36.3123 35.7348L52.9486 23.0882L36.3123 10.0537C36.1571 11.6054 36.3123 16.4546 33.9079 16.4546H0.829102V10.0537H29.681V2.64424C29.681 1.09252 33.3262 -0.420415 34.6447 0.89855L60.7433 20.4891C62.1781 21.808 62.1393 24.0192 60.7433 25.2994L34.6447 44.8899C33.3262 46.2089 29.681 44.696 29.681 43.1442V35.7348Z\"\n fill=\"currentColor\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const PlusIcon: React.FC<IconProps> = ({\n size = \"1em\",\n strokeWidth = 1.5,\n className,\n ...props\n}) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n width={size}\n height={size}\n className={className}\n {...props}\n >\n <line x1=\"12\" y1=\"4\" x2=\"12\" y2=\"20\" />\n <line x1=\"4\" y1=\"12\" x2=\"20\" y2=\"12\" />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const PlusSearchIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 49 40\"\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 <line x1=\"0.5\" y1=\"0\" x2=\"0.5\" y2=\"40\" stroke=\"#E1E1E1\" />\n <path\n d=\"M18 20H32\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M25 13V27\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\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\nexport const 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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const SearchIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 16 17\"\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_3750_160829)\">\n <path\n d=\"M15.7812 14.3344L12.6656 11.2188C12.525 11.0781 12.3344 11 12.1344 11H11.625C12.4875 9.89688 13 8.50937 13 7C13 3.40937 10.0906 0.5 6.5 0.5C2.90937 0.5 0 3.40937 0 7C0 10.5906 2.90937 13.5 6.5 13.5C8.00937 13.5 9.39687 12.9875 10.5 12.125V12.6344C10.5 12.8344 10.5781 13.025 10.7187 13.1656L13.8344 16.2812C14.1281 16.575 14.6031 16.575 14.8937 16.2812L15.7781 15.3969C16.0719 15.1031 16.0719 14.6281 15.7812 14.3344ZM6.5 11C4.29062 11 2.5 9.2125 2.5 7C2.5 4.79063 4.2875 3 6.5 3C8.70937 3 10.5 4.7875 10.5 7C10.5 9.20938 8.7125 11 6.5 11Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_3750_160829\">\n <rect width=\"16\" height=\"16\" fill=\"white\" transform=\"translate(0 0.5)\" />\n </clipPath>\n </defs>\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const 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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const SetupIcon: 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=\"M20 7H11\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M14 17H5\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M17 20C18.6569 20 20 18.6569 20 17C20 15.3431 18.6569 14 17 14C15.3431 14 14 15.3431 14 17C14 18.6569 15.3431 20 17 20Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M7 10C8.65685 10 10 8.65685 10 7C10 5.34315 8.65685 4 7 4C5.34315 4 4 5.34315 4 7C4 8.65685 5.34315 10 7 10Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const TableOfContents: 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=\"M16 12H3\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M16 18H3\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M16 6H3\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M21 12H21.01\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M21 18H21.01\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M21 6H21.01\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const TagListViewIcon: 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 <path\n d=\"M8.38937 2.32621C8.13937 2.07615 7.80029 1.93562 7.4467 1.93555H2.66536C2.31174 1.93555 1.9726 2.07602 1.72256 2.32607C1.47251 2.57612 1.33203 2.91526 1.33203 3.26888V8.05021C1.33211 8.40381 1.47263 8.74289 1.7227 8.99288L7.52536 14.7955C7.82837 15.0966 8.2382 15.2656 8.66536 15.2656C9.09253 15.2656 9.50236 15.0966 9.80536 14.7955L14.192 10.4089C14.4931 10.1059 14.6621 9.69605 14.6621 9.26888C14.6621 8.84171 14.4931 8.43189 14.192 8.12888L8.38937 2.32621Z\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M5.0013 5.93425C5.1854 5.93425 5.33464 5.78501 5.33464 5.60091C5.33464 5.41682 5.1854 5.26758 5.0013 5.26758C4.81721 5.26758 4.66797 5.41682 4.66797 5.60091C4.66797 5.78501 4.81721 5.93425 5.0013 5.93425Z\"\n fill=\"#FFFFFF\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\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\nexport const TransferUserRightsIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 55 44\"\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_6038_765330)\">\n <path\n d=\"M13.8916 1.77712C17.9299 2.19892 23.8118 0.13434 25.5456 5.15149L25.5017 38.984C23.7021 43.8457 17.8641 41.759 13.9136 42.203L13.8038 43.4905C12.5967 44.6449 11.9383 43.4905 11.9822 42.203C7.72441 41.8256 1.03047 43.9345 0.284262 37.7852C0.986576 27.5955 -0.615578 16.207 0.284262 6.15049C0.810998 0.15654 7.89998 2.08792 11.9822 1.77712C11.8505 -0.598254 14.2208 -0.576054 13.9136 1.77712H13.8916ZM4.03725 3.75291C3.15936 3.84171 2.19368 5.0627 2.19368 5.97289V37.8074C2.23757 39.1394 3.09352 40.1162 4.43231 40.2716C9.91914 39.872 16.0644 40.7822 21.4634 40.2716C22.8461 40.1384 23.6582 39.1616 23.8996 37.7852C23.746 26.9739 24.2068 16.0738 23.6582 5.32909C23.4167 4.7519 22.3633 3.50871 21.6829 3.70851C20.4758 5.15149 20.0149 7.39367 18.0396 8.01527C16.7667 8.41486 10.4239 8.39266 8.88761 8.21507C8.11946 8.12627 7.24156 7.74887 6.64899 7.26048C5.90278 6.61668 4.60789 3.68631 4.03725 3.73071V3.75291ZM19.4223 3.70851H6.45146C7.24156 4.7297 7.3952 6.15049 8.88761 6.30588C11.6091 6.57228 14.8134 6.12829 17.5788 6.23928C18.1933 6.32808 19.554 3.81951 19.4223 3.70851Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M43.0381 1.77418C47.1203 2.10718 54.1874 0.153597 54.736 6.19194C55.6359 16.2485 54.0337 27.6369 54.736 37.8267C53.9898 43.9538 47.3178 41.867 43.0381 42.2444C43.1698 44.6198 40.7995 44.5976 41.1067 42.2444C37.1562 41.8004 31.3182 43.8872 29.5186 39.0254V4.99315C31.3621 0.153597 37.1562 2.19598 41.1067 1.77418L41.2165 0.486594C42.4236 -0.667795 43.082 0.486594 43.0381 1.77418ZM32.9643 3.74996C32.1742 3.86096 31.1207 5.37055 31.0988 6.19194C31.2524 17.0032 30.7915 27.9033 31.3402 38.648C31.7352 39.425 32.3937 40.2464 33.3374 40.2908C38.8023 39.869 44.9914 40.8236 50.3685 40.2908C51.7512 40.1576 52.6071 39.4472 52.8047 38.0265V6.16974C53.0461 5.23735 51.4439 3.39477 50.6758 3.79436C50.2588 4.01636 49.2053 6.39174 48.5469 7.03553C48.0421 7.54613 47.1862 8.03453 46.4619 8.16772C44.7939 8.45632 39.5485 8.41192 37.7927 8.21212C37.0465 8.12332 36.1247 7.74593 35.576 7.21313C34.764 6.43614 34.1494 4.48256 33.5349 3.90536C33.3154 3.68337 33.2496 3.68337 32.9423 3.72776L32.9643 3.74996ZM48.5469 3.70556H35.576C35.9052 4.48256 36.5856 6.05874 37.4196 6.23634C40.185 6.10314 43.3893 6.56934 46.1107 6.30294C47.6032 6.14754 47.7348 4.72676 48.5469 3.70556Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M42.8838 13.0305L49.49 30.4574C49.0071 31.301 48.5024 31.4564 47.822 30.7238L45.4956 24.9074L39.0431 24.7964C38.6261 24.9074 37.1117 30.7016 36.2996 31.1012C35.4437 31.523 34.7853 30.524 35.1364 29.6804C37.5068 24.8408 38.8016 18.5805 41.2159 13.8963C41.6109 13.1193 41.9621 12.4533 42.9058 13.0305H42.8838ZM44.6396 22.865C44.0471 21.0669 43.3667 18.6249 42.5107 16.9377C42.401 16.7379 42.3791 16.4271 42.0718 16.4049L39.7234 22.865H44.6177H44.6396Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M6.34138 35.7656H19.7293C20.1463 35.7656 20.9583 37.4972 18.6758 37.7192C16.1299 37.9634 9.41401 38.03 6.9998 37.697C5.63907 37.4972 5.33181 36.7424 6.34138 35.7878V35.7656Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M35.2684 35.7644H48.6563C49.0294 35.7644 49.9951 37.385 47.9979 37.6736C45.5617 38.0288 38.8678 37.94 36.3219 37.6958C35.005 37.5626 34.171 36.9188 35.2684 35.7422V35.7644Z\"\n fill=\"currentColor\"\n />\n <path\n d=\"M13.4745 26.3084H4.08105V24.1994H14.8352C15.6253 24.1994 15.5595 25.7978 15.6253 26.3084L21.0463 22.157L15.6253 17.8724C15.5815 18.383 15.6253 19.9814 14.8352 19.9814H4.08105V17.8724H13.4745V15.4304C13.4745 14.9199 14.6597 14.4093 15.0767 14.8533L23.5703 21.2912C24.0312 21.7352 24.0092 22.4456 23.5703 22.8674L15.0767 29.3053C14.6377 29.7493 13.4745 29.2387 13.4745 28.7281V26.2862V26.3084Z\"\n fill=\"currentColor\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_6038_765330\">\n <rect width=\"55\" height=\"44\" fill=\"white\" transform=\"translate(-0.000976562)\" />\n </clipPath>\n </defs>\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const 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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const 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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const UserIcon: 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=\"M19 21V19C19 17.9391 18.5786 16.9217 17.8284 16.1716C17.0783 15.4214 16.0609 15 15 15H9C7.93913 15 6.92172 15.4214 6.17157 16.1716C5.42143 16.9217 5 17.9391 5 19V21\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M12 11C14.2091 11 16 9.20914 16 7C16 4.79086 14.2091 3 12 3C9.79086 3 8 4.79086 8 7C8 9.20914 9.79086 11 12 11Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const UserActiveIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 18 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 <path\n d=\"M1.5 15.7501C1.49994 14.5953 1.8331 13.4651 2.45951 12.495C3.08592 11.5249 3.97896 10.7562 5.03145 10.2811C6.08394 9.806 7.25118 9.64472 8.39307 9.8166C9.53496 9.98848 10.603 10.4862 11.469 11.2501\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M7.5 9.75C9.57107 9.75 11.25 8.07107 11.25 6C11.25 3.92893 9.57107 2.25 7.5 2.25C5.42893 2.25 3.75 3.92893 3.75 6C3.75 8.07107 5.42893 9.75 7.5 9.75Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12 14.25L13.5 15.75L16.5 12.75\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const 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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const 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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const UserGroupIcon: React.FC<IconProps> = ({\n size = \"1em\",\n stroke = \"currentColor\",\n className,\n ...props\n}) => (\n <svg\n viewBox=\"0 0 18 18\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n preserveAspectRatio=\"xMidYMid meet\"\n width={size}\n height={size}\n className={className}\n aria-hidden\n {...props}\n >\n <path\n d=\"M12 15.75V14.25C12 13.4544 11.6839 12.6913 11.1213 12.1287C10.5587 11.5661 9.79565 11.25 9 11.25H4.5C3.70435 11.25 2.94129 11.5661 2.37868 12.1287C1.81607 12.6913 1.5 13.4544 1.5 14.25V15.75\"\n stroke={stroke}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12 2.34595C12.6433 2.51272 13.213 2.8884 13.6198 3.41399C14.0265 3.93959 14.2471 4.58536 14.2471 5.24995C14.2471 5.91453 14.0265 6.5603 13.6198 7.0859C13.213 7.6115 12.6433 7.98717 12 8.15395\"\n stroke={stroke}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16.5 15.7499V14.2499C16.4995 13.5852 16.2783 12.9395 15.871 12.4141C15.4638 11.8888 14.8936 11.5136 14.25 11.3474\"\n stroke={stroke}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M6.75 8.25C8.40685 8.25 9.75 6.90685 9.75 5.25C9.75 3.59315 8.40685 2.25 6.75 2.25C5.09315 2.25 3.75 3.59315 3.75 5.25C3.75 6.90685 5.09315 8.25 6.75 8.25Z\"\n stroke={stroke}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const UserInactiveIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 18 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 <path\n d=\"M1.5 15.75C1.5 14.7061 1.77238 13.6802 2.29022 12.7737C2.80807 11.8673 3.55346 11.1116 4.45274 10.5814C5.35203 10.0512 6.37409 9.76484 7.41794 9.75056C8.46179 9.73628 9.4913 9.99461 10.4048 10.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M7.5 9.75C9.57107 9.75 11.25 8.07107 11.25 6C11.25 3.92893 9.57107 2.25 7.5 2.25C5.42893 2.25 3.75 3.92893 3.75 6C3.75 8.07107 5.42893 9.75 7.5 9.75Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12.75 12.75L16.5 16.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M16.5 12.75L12.75 16.5\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const UserNameIcon: React.FC<IconProps> = ({ size = \"1em\", className, ...props }) => (\n <svg\n viewBox=\"0 0 18 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 <path\n d=\"M14.25 15.75V14.25C14.25 13.4544 13.9339 12.6913 13.3713 12.1287C12.8087 11.5661 12.0456 11.25 11.25 11.25H6.75C5.95435 11.25 5.19129 11.5661 4.62868 12.1287C4.06607 12.6913 3.75 13.4544 3.75 14.25V15.75\"\n stroke={\"currentColor\"}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M9 8.25C10.6569 8.25 12 6.90685 12 5.25C12 3.59315 10.6569 2.25 9 2.25C7.34315 2.25 6 3.59315 6 5.25C6 6.90685 7.34315 8.25 9 8.25Z\"\n stroke={\"currentColor\"}\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const UserProtectIcon: 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=\"M20 13.0004C20 18.0004 16.5 20.5005 12.34 21.9505C12.1222 22.0243 11.8855 22.0207 11.67 21.9405C7.5 20.5005 4 18.0004 4 13.0004V6.00045C4 5.73523 4.10536 5.48088 4.29289 5.29334C4.48043 5.10581 4.73478 5.00045 5 5.00045C7 5.00045 9.5 3.80045 11.24 2.28045C11.4519 2.09945 11.7214 2 12 2C12.2786 2 12.5481 2.09945 12.76 2.28045C14.51 3.81045 17 5.00045 19 5.00045C19.2652 5.00045 19.5196 5.10581 19.7071 5.29334C19.8946 5.48088 20 5.73523 20 6.00045V13.0004Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M6.37598 18.9092C6.80269 17.7614 7.5704 16.7717 8.576 16.0729C9.5816 15.374 10.777 14.9997 12.0015 15C13.2261 15.0003 14.4212 15.3753 15.4265 16.0747C16.4317 16.774 17.1989 17.7642 17.625 18.9122\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n <path\n d=\"M12 15C14.2091 15 16 13.2091 16 11C16 8.79086 14.2091 7 12 7C9.79086 7 8 8.79086 8 11C8 13.2091 9.79086 15 12 15Z\"\n stroke=\"currentColor\"\n strokeWidth=\"1.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const UsersIcon: 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=\"M16 21V19C16 17.9391 15.5786 16.9217 14.8284 16.1716C14.0783 15.4214 13.0609 15 12 15H6C4.93913 15 3.92172 15.4214 3.17157 16.1716C2.42143 16.9217 2 17.9391 2 19V21\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M16 3.12793C16.8578 3.3503 17.6174 3.85119 18.1597 4.55199C18.702 5.25279 18.9962 6.11382 18.9962 6.99993C18.9962 7.88604 18.702 8.74707 18.1597 9.44787C17.6174 10.1487 16.8578 10.6496 16 10.8719\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M22 20.9999V18.9999C21.9993 18.1136 21.7044 17.2527 21.1614 16.5522C20.6184 15.8517 19.8581 15.3515 19 15.1299\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M9 11C11.2091 11 13 9.20914 13 7C13 4.79086 11.2091 3 9 3C6.79086 3 5 4.79086 5 7C5 9.20914 6.79086 11 9 11Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\n","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const 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","import React from \"react\";\nimport { IconProps } from \"./types\";\n\nexport const WorkFlowIcon: 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=\"M9 3H5C3.89543 3 3 3.89543 3 5V9C3 10.1046 3.89543 11 5 11H9C10.1046 11 11 10.1046 11 9V5C11 3.89543 10.1046 3 9 3Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M7 11V15C7 15.5304 7.21071 16.0391 7.58579 16.4142C7.96086 16.7893 8.46957 17 9 17H13\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n <path\n d=\"M19 13H15C13.8954 13 13 13.8954 13 15V19C13 20.1046 13.8954 21 15 21H19C20.1046 21 21 20.1046 21 19V15C21 13.8954 20.1046 13 19 13Z\"\n stroke=\"currentColor\"\n stroke-width=\"1.5\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n />\n </svg>\n);\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 canDeleteBehavior?: \"hidden\" | \"disabled\";\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 canDeleteBehavior,\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:s\"));\n const userFormatter = formatters?.user ?? ((value?: string | null) => value ?? emptyValue);\n const resolvedDeleteIcon = deleteIcon ?? <TrashIcon className=\"w-5 h-5\" />;\n const resolvedCanDeleteBehavior = canDeleteBehavior ?? \"hidden\";\n const shouldShowDelete = canDelete || resolvedCanDeleteBehavior === \"disabled\";\n const deleteButtonClassName =\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 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 {shouldShowDelete && (\n <div\n className={deleteButtonClassName}\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 * 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 =\n \"hover:ring-2 active:ring-0 focus-visible:ring-2 text-primary-foreground disabled:bg-sus-secondary-gray-5 disabled:text-sus-secondary-gray-8\";\nconst outline =\n \"bg-none disabled:bg-none disabled:border-sus-secondary-gray-5 disabled:text-sus-secondary-gray-8\";\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium transition-all disabled:pointer-events-none [&_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 color: {\n // Default behavior: just color the text\n default: \"text-sus-primary-green-9\",\n primary: \"text-sus-primary-green-9\",\n destructive: \"text-sus-button-red-2\",\n red: \"text-sus-button-red-2\",\n gray: \"text-sus-button-accent-2\",\n accent: \"text-sus-button-accent-2\",\n warning: \"text-sus-button-yellow-2\",\n yellow: \"text-sus-button-yellow-2\",\n yellowDark: \"text-sus-button-yellowdark-2\",\n green: \"text-sus-button-green-2\",\n blue: \"text-sus-button-blue-2\",\n black: \"text-sus-button-black-2\"\n },\n variant: {\n default: cn(\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 ),\n destructive: cn(\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 ),\n cancel: cn(\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 ),\n warning: cn(\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 ),\n cottonYellowDark: cn(\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 ),\n cottonGreen: cn(\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 ),\n cottonBlue: cn(\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 ),\n cottonRed: cn(\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 ),\n cottonAccent: cn(\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 ),\n cottonYellow: cn(\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 ),\n cottonBlack: cn(\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 ),\n defaultOutline: cn(\n outline,\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 ),\n destructiveOutline: cn(\n outline,\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 ),\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 disabled:bg-muted disabled:border-sus-secondary-gray-5 disabled:text-sus-secondary-gray-8 disabled:opacity-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-9\",\n \"icon-lg\": \"size-10\",\n \"icon-rounded\": \"size-9 rounded-full\",\n \"icon-xs-rounded\": \"size-5 rounded-full\",\n \"icon-sm-rounded\": \"size-[22px] rounded-full\",\n \"icon-md-rounded\": \"size-9 rounded-full\",\n \"icon-lg-rounded\": \"size-10 rounded-full\"\n },\n active: {\n true: \"\",\n false: \"\"\n }\n },\n compoundVariants: [\n // cotton\n {\n variant: \"default\",\n color: \"default\",\n className:\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 },\n {\n variant: \"default\",\n color: \"primary\",\n className:\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 },\n {\n variant: \"default\",\n color: \"destructive\",\n className:\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 },\n {\n variant: \"default\",\n color: \"red\",\n className:\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 },\n {\n variant: \"default\",\n color: \"gray\",\n className:\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 },\n {\n variant: \"default\",\n color: \"accent\",\n className:\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 },\n {\n variant: \"default\",\n color: \"warning\",\n className:\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 },\n {\n variant: \"default\",\n color: \"yellow\",\n className:\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 },\n {\n variant: \"default\",\n color: \"yellowDark\",\n className:\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 },\n {\n variant: \"default\",\n color: \"green\",\n className:\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 },\n {\n variant: \"default\",\n color: \"blue\",\n className:\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 },\n {\n variant: \"default\",\n color: \"black\",\n className:\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 },\n // outline\n {\n variant: \"defaultOutline\",\n color: \"default\",\n className:\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 },\n {\n variant: \"defaultOutline\",\n color: \"primary\",\n className:\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 },\n {\n variant: \"defaultOutline\",\n color: \"destructive\",\n className:\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 },\n {\n variant: \"defaultOutline\",\n color: \"red\",\n className:\n \"border border-sus-button-red-2 text-sus-button-red-2 hover:border-sus-button-red-1 hover:text-sus-button-red-1 active:border-sus-button-red-2 active:text-sus-button-red-2 focus-visible:border-sus-button-red-3 focus-visible:text-sus-button-red-3\"\n },\n {\n variant: \"defaultOutline\",\n color: \"gray\",\n className:\n \"border border-sus-button-accent-2 text-sus-button-accent-2 hover:border-sus-button-accent-1 hover:text-sus-button-accent-1 active:border-sus-button-accent-2 active:text-sus-button-accent-2 focus-visible:border-sus-button-accent-3 focus-visible:text-sus-button-accent-3\"\n },\n {\n variant: \"defaultOutline\",\n color: \"accent\",\n className:\n \"border border-sus-button-accent-2 text-black hover:border-sus-button-accent-1 hover:text-sus-button-accent-1 active:border-sus-button-accent-2 active:text-black focus-visible:border-sus-button-accent-3 focus-visible:text-sus-button-accent-3\"\n },\n {\n variant: \"defaultOutline\",\n color: \"warning\",\n className:\n \"border border-sus-button-yellow-2 text-black hover:border-sus-button-yellow-1 hover:text-sus-button-yellow-1 active:border-sus-button-yellow-2 active:text-black focus-visible:border-sus-button-yellow-3 focus-visible:text-sus-button-yellow-3\"\n },\n {\n variant: \"defaultOutline\",\n color: \"yellow\",\n className:\n \"border border-sus-button-yellow-2 text-sus-button-yellow-2 hover:border-sus-button-yellow-1 hover:text-sus-button-yellow-1 active:border-sus-button-yellow-2 active:text-sus-button-yellow-2 focus-visible:border-sus-button-yellow-3 focus-visible:text-sus-button-yellow-3\"\n },\n {\n variant: \"defaultOutline\",\n color: \"yellowDark\",\n className:\n \"border border-sus-button-yellowdark-2 text-sus-button-yellowdark-2 hover:border-sus-button-yellowdark-1 hover:text-sus-button-yellowdark-1 active:border-sus-button-yellowdark-2 active:text-sus-button-yellowdark-2 focus-visible:border-sus-button-yellowdark-3 focus-visible:text-sus-button-yellowdark-3\"\n },\n {\n variant: \"defaultOutline\",\n color: \"green\",\n className:\n \"border border-sus-button-green-2 text-sus-button-green-2 hover:border-sus-button-green-1 hover:text-sus-button-green-1 active:border-sus-button-green-2 active:text-sus-button-green-2 focus-visible:border-sus-button-green-3 focus-visible:text-sus-button-green-3\"\n },\n {\n variant: \"defaultOutline\",\n color: \"blue\",\n className:\n \"border border-sus-button-blue-2 text-sus-button-blue-2 hover:border-sus-button-blue-1 hover:text-sus-button-blue-1 active:border-sus-button-blue-2 active:text-sus-button-blue-2 focus-visible:border-sus-button-blue-3 focus-visible:text-sus-button-blue-3\"\n },\n {\n variant: \"defaultOutline\",\n color: \"black\",\n className:\n \"border border-sus-button-black-2 text-sus-button-black-2 hover:border-sus-button-black-1 hover:text-sus-button-black-1 active:border-sus-button-black-2 active:text-sus-button-black-2 focus-visible:border-sus-button-black-3 focus-visible:text-sus-button-black-3\"\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 color,\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, color }))}\n {...props}\n />\n );\n}\n\nexport { Button, buttonVariants };\n","\"use client\";\n\nimport * as React from \"react\";\nimport useEmblaCarousel from \"embla-carousel-react\";\nimport type { EmblaCarouselType, EmblaOptionsType, EmblaPluginType } from \"embla-carousel\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport Autoplay, { type AutoplayOptionsType } from \"embla-carousel-autoplay\";\n\nimport { cn } from \"@/utils\";\nimport { Button } from \"@/components/ui/button\";\n\ntype CarouselApi = EmblaCarouselType;\n\ntype CarouselProps = React.HTMLAttributes<HTMLDivElement> & {\n opts?: EmblaOptionsType;\n plugins?: EmblaPluginType[];\n orientation?: \"horizontal\" | \"vertical\";\n setApi?: (api: CarouselApi) => void;\n autoplay?: boolean | AutoplayOptionsType;\n};\n\ntype CarouselContextProps = {\n carouselRef: ReturnType<typeof useEmblaCarousel>[0];\n api: CarouselApi | undefined;\n opts?: EmblaOptionsType;\n orientation: \"horizontal\" | \"vertical\";\n scrollPrev: () => void;\n scrollNext: () => void;\n canScrollPrev: boolean;\n canScrollNext: boolean;\n};\n\nconst CarouselContext = React.createContext<CarouselContextProps | null>(null);\n\nfunction useCarousel() {\n const context = React.useContext(CarouselContext);\n if (!context) {\n throw new Error(\"useCarousel must be used within a <Carousel />\");\n }\n return context;\n}\n\nconst Carousel = React.forwardRef<HTMLDivElement, CarouselProps>(\n (\n { orientation = \"horizontal\", opts, setApi, plugins, autoplay, className, children, ...props },\n ref\n ) => {\n const autoplayPlugin = React.useMemo(() => {\n if (!autoplay) {\n return null;\n }\n const options = typeof autoplay === \"object\" ? autoplay : undefined;\n return Autoplay(options);\n }, [autoplay]);\n\n const mergedPlugins = React.useMemo(() => {\n const list = [...(plugins ?? [])];\n if (autoplayPlugin) {\n list.push(autoplayPlugin);\n }\n return list.length ? list : undefined;\n }, [plugins, autoplayPlugin]);\n\n const [carouselRef, rawApi] = useEmblaCarousel(\n {\n ...opts,\n axis: orientation === \"horizontal\" ? \"x\" : \"y\"\n },\n mergedPlugins\n );\n const apiRef = React.useRef<CarouselApi | undefined>(undefined);\n if (!apiRef.current && rawApi) {\n apiRef.current = rawApi;\n }\n const api = apiRef.current;\n const [canScrollPrev, setCanScrollPrev] = React.useState(false);\n const [canScrollNext, setCanScrollNext] = React.useState(false);\n\n const onSelect = React.useCallback(\n (carouselApi?: CarouselApi) => {\n const currentApi = carouselApi ?? api;\n if (!currentApi) {\n return;\n }\n setCanScrollPrev(currentApi.canScrollPrev());\n setCanScrollNext(currentApi.canScrollNext());\n },\n [api]\n );\n\n const scrollPrev = React.useCallback(() => api?.scrollPrev(), [api]);\n const scrollNext = React.useCallback(() => api?.scrollNext(), [api]);\n\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent<HTMLDivElement>) => {\n if (event.key === \"ArrowLeft\") {\n event.preventDefault();\n scrollPrev();\n }\n if (event.key === \"ArrowRight\") {\n event.preventDefault();\n scrollNext();\n }\n },\n [scrollPrev, scrollNext]\n );\n\n React.useEffect(() => {\n if (!api) {\n return;\n }\n onSelect(api);\n api.on(\"reInit\", onSelect);\n api.on(\"select\", onSelect);\n\n return () => {\n api?.off(\"select\", onSelect);\n api?.off(\"reInit\", onSelect);\n };\n }, [api, onSelect]);\n\n React.useEffect(() => {\n if (!api || !setApi) {\n return;\n }\n setApi(api);\n }, [api, setApi]);\n\n return (\n <CarouselContext.Provider\n value={{\n carouselRef,\n api,\n opts,\n orientation,\n scrollPrev,\n scrollNext,\n canScrollPrev,\n canScrollNext\n }}\n >\n <div\n ref={ref}\n role=\"region\"\n aria-roledescription=\"carousel\"\n className={cn(\"relative\", className)}\n onKeyDownCapture={handleKeyDown}\n {...props}\n >\n {children}\n </div>\n </CarouselContext.Provider>\n );\n }\n);\nCarousel.displayName = \"Carousel\";\n\nconst CarouselContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const { carouselRef, orientation } = useCarousel();\n\n return (\n <div ref={carouselRef} className=\"overflow-hidden\">\n <div\n ref={ref}\n className={cn(\"flex\", orientation === \"horizontal\" ? \"-ml-4\" : \"-mt-4 flex-col\", className)}\n {...props}\n />\n </div>\n );\n }\n);\nCarouselContent.displayName = \"CarouselContent\";\n\nconst CarouselItem = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => {\n const { orientation } = useCarousel();\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-roledescription=\"slide\"\n className={cn(\n \"min-w-0 shrink-0 grow-0 basis-full\",\n orientation === \"horizontal\" ? \"pl-4\" : \"pt-4\",\n className\n )}\n {...props}\n />\n );\n }\n);\nCarouselItem.displayName = \"CarouselItem\";\n\ntype CarouselNavProps = React.ComponentProps<typeof Button> & {\n position?: \"inside\" | \"outside\";\n};\n\nconst CarouselPrevious = React.forwardRef<HTMLButtonElement, CarouselNavProps>(\n ({ className, variant = \"outline\", size = \"icon\", position = \"outside\", ...props }, ref) => {\n const { orientation, scrollPrev, canScrollPrev } = useCarousel();\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\" ?\n position === \"inside\" ?\n \"left-3 top-1/2 -translate-y-1/2\"\n : \"-left-3 top-1/2 -translate-y-1/2\"\n : position === \"inside\" ? \"top-3 left-1/2 -translate-x-1/2 rotate-90\"\n : \"-top-3 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollPrev}\n onClick={scrollPrev}\n {...props}\n >\n <ChevronLeft className=\"size-4\" />\n <span className=\"sr-only\">Previous slide</span>\n </Button>\n );\n }\n);\nCarouselPrevious.displayName = \"CarouselPrevious\";\n\nconst CarouselNext = React.forwardRef<HTMLButtonElement, CarouselNavProps>(\n ({ className, variant = \"outline\", size = \"icon\", position = \"outside\", ...props }, ref) => {\n const { orientation, scrollNext, canScrollNext } = useCarousel();\n\n return (\n <Button\n ref={ref}\n variant={variant}\n size={size}\n className={cn(\n \"absolute size-8 rounded-full\",\n orientation === \"horizontal\" ?\n position === \"inside\" ?\n \"right-3 top-1/2 -translate-y-1/2\"\n : \"-right-3 top-1/2 -translate-y-1/2\"\n : position === \"inside\" ? \"bottom-3 left-1/2 -translate-x-1/2 rotate-90\"\n : \"-bottom-3 left-1/2 -translate-x-1/2 rotate-90\",\n className\n )}\n disabled={!canScrollNext}\n onClick={scrollNext}\n {...props}\n >\n <ChevronRight className=\"size-4\" />\n <span className=\"sr-only\">Next slide</span>\n </Button>\n );\n }\n);\nCarouselNext.displayName = \"CarouselNext\";\n\ntype CarouselDotsProps = React.HTMLAttributes<HTMLDivElement> & {\n dotClassName?: string;\n dotActiveClassName?: string;\n getDotLabel?: (index: number) => string;\n position?: \"inside\" | \"outside\";\n};\n\nconst CarouselDots = React.forwardRef<HTMLDivElement, CarouselDotsProps>(\n (\n { className, dotClassName, dotActiveClassName, getDotLabel, position = \"outside\", ...props },\n ref\n ) => {\n const { api } = useCarousel();\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n const [scrollSnaps, setScrollSnaps] = React.useState<number[]>([]);\n\n React.useEffect(() => {\n if (!api) {\n return;\n }\n\n const update = () => {\n setScrollSnaps(api.scrollSnapList());\n setSelectedIndex(api.selectedScrollSnap());\n };\n\n update();\n api.on(\"reInit\", update);\n api.on(\"select\", update);\n\n return () => {\n api?.off(\"reInit\", update);\n api?.off(\"select\", update);\n };\n }, [api]);\n\n if (!scrollSnaps.length) {\n return null;\n }\n\n const positionClassName =\n position === \"inside\" ? \"absolute bottom-3 left-1/2 -translate-x-1/2\" : \"mt-4\";\n\n return (\n <div\n ref={ref}\n className={cn(\"flex items-center justify-center gap-2\", positionClassName, className)}\n {...props}\n >\n {scrollSnaps.map((_, index) => {\n const isActive = index === selectedIndex;\n return (\n <button\n key={index}\n type=\"button\"\n aria-label={getDotLabel?.(index) ?? `Go to slide ${index + 1}`}\n aria-current={isActive}\n onClick={() => {\n api?.scrollTo(index);\n setSelectedIndex(index);\n }}\n className={cn(\n \"h-2.5 w-2.5 rounded-full border border-white/60 transition-colors\",\n isActive ? \"bg-white\" : \"bg-white/40\",\n dotClassName,\n isActive && dotActiveClassName\n )}\n />\n );\n })}\n </div>\n );\n }\n);\nCarouselDots.displayName = \"CarouselDots\";\n\ntype CarouselThumbnailsProps = React.HTMLAttributes<HTMLDivElement> & {\n items: React.ReactNode[];\n buttonClassName?: string;\n buttonActiveClassName?: string;\n};\n\nconst CarouselThumbnails = React.forwardRef<HTMLDivElement, CarouselThumbnailsProps>(\n ({ items, className, buttonClassName, buttonActiveClassName, ...props }, ref) => {\n const { api } = useCarousel();\n const [selectedIndex, setSelectedIndex] = React.useState(0);\n\n React.useEffect(() => {\n if (!api) {\n return;\n }\n\n const update = () => setSelectedIndex(api.selectedScrollSnap());\n\n update();\n api.on(\"reInit\", update);\n api.on(\"select\", update);\n\n return () => {\n api?.off(\"reInit\", update);\n api?.off(\"select\", update);\n };\n }, [api]);\n\n if (!items.length) {\n return null;\n }\n\n return (\n <div ref={ref} className={cn(\"mt-4 flex items-center justify-center gap-2\", className)} {...props}>\n {items.map((item, index) => {\n const isActive = index === selectedIndex;\n return (\n <button\n key={index}\n type=\"button\"\n aria-label={`Go to slide ${index + 1}`}\n aria-current={isActive}\n onClick={() => api?.scrollTo(index)}\n className={cn(\n \"overflow-hidden rounded-md border border-border transition-shadow focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring/50\",\n isActive ? \"shadow-sm\" : \"opacity-70 hover:opacity-100\",\n buttonClassName,\n isActive && buttonActiveClassName\n )}\n >\n {item}\n </button>\n );\n })}\n </div>\n );\n }\n);\nCarouselThumbnails.displayName = \"CarouselThumbnails\";\n\nexport {\n type CarouselApi,\n Carousel,\n CarouselContent,\n CarouselItem,\n CarouselPrevious,\n CarouselNext,\n CarouselDots,\n CarouselThumbnails,\n useCarousel\n};\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, OperatorValue, RowState } from \"../types\";\n\nfunction findField(fields: FieldSchema[], name: string): FieldSchema | undefined {\n return fields.find((f) => f.name === name);\n}\n\nfunction firstOperatorFor(fields: FieldSchema[], fieldName: string): OperatorValue {\n const f = findField(fields, fieldName);\n return OPERATOR_MAP[f?.type ?? \"text\"][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 f = findField(fields, fieldName);\n const t = f?.type ?? \"text\";\n const nullable = f?.enableNullOperators ?? false;\n return nullable ? OPERATOR_MAP[t].concat([\"isNull\", \"isNotNull\"]) : 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\";\nimport { cn } from \"@/utils\";\n\nexport const FieldSelect: React.FC<{\n row: RowState;\n fieldOptions: Option[];\n onChangeField: (fieldName: string) => void;\n}> = ({ row, fieldOptions, onChangeField }) => {\n const selected = fieldOptions.find((f) => f.value === row.fieldName);\n\n return (\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 {selected ?\n selected.decorator ?\n <span className=\"flex items-center\">\n {selected.decorator}\n <span className={cn(selected.labelStyle)}>{selected.label}</span>\n </span>\n : <span className={cn(selected.labelStyle)}>{selected.label}</span>\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.decorator ?\n <span className=\"flex items-center\">\n {f.decorator}\n <span className={cn(f.labelStyle)}>{f.label}</span>\n </span>\n : f.label}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n );\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 enableNullOperators?: boolean;\n}\n\nexport type DropdownFieldSchema = FieldSchemaBase<\"dropdown\"> &\n (\n | {\n options: Option[];\n fetchOptions?: never;\n noOptionsMessage?: never;\n loadingMessage?: never;\n }\n | {\n options?: never;\n fetchOptions: () => Promise<Option[]>;\n noOptionsMessage?: string;\n loadingMessage?: string;\n }\n );\nexport interface TextFieldSchema extends FieldSchemaBase<\"text\"> {\n allowRegex?: RegExp;\n}\nexport interface NumberFieldSchema extends FieldSchemaBase<\"number\"> {\n min?: number;\n max?: number;\n}\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 | \"isNull\"\n | \"isNotNull\";\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 isNull: \"Is null\",\n isNotNull: \"Is not null\"\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: object[];\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 customParamsBuilderHook?: (args: {\n defaultBuildFunc: ParamsBuilder[\"build\"];\n row: RowState;\n }) => object;\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-sus-gray-1 placeholder:font-normal 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 handlePointerDown = (event: React.PointerEvent<HTMLSpanElement>) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n const handleMouseDown = (event: React.MouseEvent<HTMLSpanElement>) => {\n event.preventDefault();\n event.stopPropagation();\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 onPointerDown={handlePointerDown}\n onMouseDown={handleMouseDown}\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 { NumberFieldSchema, RowState } from \"@/components/advanceSearch/types\";\n\ninterface Props {\n row: RowState;\n control: any;\n onClear: (which: \"value\" | \"value2\") => void;\n fieldSchema?: NumberFieldSchema;\n}\n\nexport const ConditionNumberInput: React.FC<Props> = ({ row, control, onClear, fieldSchema }) => (\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 min={fieldSchema?.min}\n max={fieldSchema?.max}\n onKeyDown={(e) => {\n const blocked: string[] = [\"e\", \"E\"];\n if (fieldSchema?.min !== undefined && fieldSchema.min >= 0) {\n blocked.push(\"-\");\n }\n if (blocked.includes(e.key)) {\n e.preventDefault();\n }\n }}\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 * 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 DateRange = {\n start?: Date;\n end?: Date;\n};\n\ntype DatePickerProps = {\n selectionMode?: \"single\" | \"range\";\n selectedDate?: Date;\n onDateSelect?: (date: Date) => void;\n selectedRange?: DateRange;\n onRangeSelect?: (range: DateRange) => 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 defaultMonth?: 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 selectionMode = \"single\",\n selectedDate,\n onDateSelect,\n selectedRange,\n onRangeSelect,\n callbacks,\n onMonthBackward,\n onMonthForward,\n variant,\n minDate,\n maxDate,\n disabledDates,\n defaultMonth,\n className,\n ...props\n}: DatePickerProps) {\n const today = React.useMemo(() => startOfDay(new Date()), []);\n const normalizedRangeStart = clampToDay(selectedRange?.start);\n const normalizedRangeEnd = clampToDay(selectedRange?.end);\n const initialDisplay =\n defaultMonth ? new Date(defaultMonth)\n : selectionMode === \"range\" ? (normalizedRangeStart ?? normalizedRangeEnd ?? new Date())\n : selectedDate ? new Date(selectedDate)\n : new Date();\n const [displayed, setDisplayed] = React.useState<Date>(initialDisplay);\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 const selectedAnchorDate =\n selectionMode === \"range\" ? (normalizedRangeStart ?? normalizedRangeEnd) : selectedDate;\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 (selectedAnchorDate) {\n const selectedYear = selectedAnchorDate.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, selectedAnchorDate]);\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 = selectionMode === \"single\" && selectedDate && isSameDay(date, selectedDate);\n const isRangeStart =\n selectionMode === \"range\" && normalizedRangeStart && isSameDay(date, normalizedRangeStart);\n const isRangeEnd =\n selectionMode === \"range\" && normalizedRangeEnd && isSameDay(date, normalizedRangeEnd);\n const isInRange =\n selectionMode === \"range\" &&\n normalizedRangeStart &&\n normalizedRangeEnd &&\n date >= normalizedRangeStart &&\n date <= normalizedRangeEnd;\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 || isRangeStart || isRangeEnd) {\n variantName = variant?.day?.selected ?? \"default\";\n }\n\n const label = callbacks?.dayLabel?.(date) ?? date.getDate();\n\n return (\n <button\n key={`${r}-${c}`}\n onClick={() => {\n if (disabled) return;\n if (selectionMode === \"range\") {\n const start = normalizedRangeStart;\n const end = normalizedRangeEnd;\n let nextRange: DateRange;\n if (!start || (start && end)) {\n nextRange = { start: date, end: undefined };\n } else if (date < start) {\n nextRange = { start: date, end: undefined };\n } else {\n nextRange = { start, end: date };\n }\n onRangeSelect?.(nextRange);\n } else {\n onDateSelect?.(date);\n }\n }}\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 disabled && inCurrentMonth && \"opacity-50 pointer-events-none cursor-event-none\",\n selected || isRangeStart || isRangeEnd ?\n \"bg-[#379a2a] text-white\"\n : \"bg-white text-black hover:border-[#379a2a] hover:bg-green-50 active:bg-green-100\",\n isInRange && !isRangeStart && !isRangeEnd && \"bg-green-50 border-green-200\"\n )}\n aria-selected={selected || isRangeStart || isRangeEnd || isInRange}\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 DateRange = {\n start?: Date;\n end?: Date;\n};\n\ntype BaseProps = {\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};\n\ntype SingleProps = {\n selectionMode?: \"single\";\n value?: Date | string | null;\n onChange?: (date?: Date) => void;\n onValueChange?: (value?: string) => void;\n placeholder?: string;\n};\n\ntype RangeValue = {\n start?: Date | string | null;\n end?: Date | string | null;\n} | null;\n\ntype RangeValueOutput = {\n start?: string;\n end?: string;\n};\n\ntype RangeProps = {\n selectionMode: \"range\";\n value?: RangeValue;\n onChange?: (range?: DateRange) => void;\n onValueChange?: (value?: RangeValueOutput) => void;\n placeholder?: string;\n rangePlaceholder?: string;\n rangeSeparator?: string;\n};\n\nexport type DatePickerProps = (SingleProps | RangeProps) &\n BaseProps &\n Omit<\n CalendarProps,\n \"selectedDate\" | \"onDateSelect\" | \"className\" | \"selectionMode\" | \"selectedRange\" | \"onRangeSelect\"\n >;\n\nexport const DatePicker: React.FC<DatePickerProps> = (props) => {\n const {\n selectionMode = \"single\",\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 } = props;\n const [open, setOpen] = React.useState(false);\n const rangePlaceholder =\n selectionMode === \"range\" ?\n ((props as RangeProps).rangePlaceholder ??\n (props as RangeProps).placeholder ??\n \"Select date range\")\n : \"Select date range\";\n const rangeSeparator =\n selectionMode === \"range\" ? ((props as RangeProps).rangeSeparator ?? \" - \") : \" - \";\n const resolvedClearAriaLabel =\n selectionMode === \"range\" && clearAriaLabel === \"Clear date\" ? \"Clear date range\" : clearAriaLabel;\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 parseInput = React.useCallback(\n (input?: Date | string | null) => {\n if (input === null || input === undefined) return undefined;\n if (input instanceof Date) return input;\n const parsed = parser(input);\n return parsed && isValid(parsed) ? parsed : undefined;\n },\n [parser]\n );\n\n const parsedValue = React.useMemo(\n () => (selectionMode === \"single\" ? parseInput(value as Date | string | null) : undefined),\n [parseInput, selectionMode, value]\n );\n\n const parsedRange = React.useMemo(() => {\n if (selectionMode !== \"range\") return undefined;\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return { start: undefined, end: undefined };\n }\n const rangeValue = value as RangeValue;\n return {\n start: parseInput(rangeValue?.start),\n end: parseInput(rangeValue?.end)\n };\n }, [parseInput, selectionMode, value]);\n\n const buttonLabel =\n selectionMode === \"range\" ?\n parsedRange?.start && parsedRange?.end ?\n `${labelFormatter(parsedRange.start)}${rangeSeparator}${labelFormatter(parsedRange.end)}`\n : parsedRange?.start ? `${labelFormatter(parsedRange.start)}${rangeSeparator}...`\n : parsedRange?.end ? `...${rangeSeparator}${labelFormatter(parsedRange.end)}`\n : rangePlaceholder\n : parsedValue ? labelFormatter(parsedValue)\n : placeholder;\n\n const buttonAriaLabel =\n ariaLabel ??\n (selectionMode === \"range\" ?\n parsedRange?.start && parsedRange?.end ?\n `Change date range, current selection ${labelFormatter(parsedRange.start)} to ${labelFormatter(\n parsedRange.end\n )}`\n : parsedRange?.start ? `Select end date, current start ${labelFormatter(parsedRange.start)}`\n : \"Open date range picker\"\n : parsedValue ? `Change date, current selection ${labelFormatter(parsedValue)}`\n : \"Open date picker\");\n\n const shouldShowClear =\n allowClear &&\n !disabled &&\n (selectionMode === \"range\" ? Boolean(parsedRange?.start || parsedRange?.end) : Boolean(parsedValue));\n const hasSelection =\n selectionMode === \"range\" ? Boolean(parsedRange?.start || parsedRange?.end) : Boolean(parsedValue);\n\n const handleClose = React.useCallback(() => setOpen(false), []);\n const emitChange = React.useCallback(\n (next?: Date) => {\n if (selectionMode !== \"single\") return;\n (onChange as SingleProps[\"onChange\"])?.(next);\n (onValueChange as SingleProps[\"onValueChange\"])?.(next ? outputFormatter(next) : undefined);\n },\n [onChange, onValueChange, outputFormatter, selectionMode]\n );\n\n const emitRangeChange = React.useCallback(\n (next?: DateRange) => {\n if (selectionMode !== \"range\") return;\n (onChange as RangeProps[\"onChange\"])?.(next);\n (onValueChange as RangeProps[\"onValueChange\"])?.(\n next ?\n {\n start: next.start ? outputFormatter(next.start) : undefined,\n end: next.end ? outputFormatter(next.end) : undefined\n }\n : undefined\n );\n },\n [onChange, onValueChange, outputFormatter, selectionMode]\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 handleRangeSelect = React.useCallback(\n (next?: DateRange) => {\n emitRangeChange(next);\n if (closeOnSelect && next?.start && next?.end) handleClose();\n },\n [closeOnSelect, emitRangeChange, handleClose]\n );\n\n const handleClear = React.useCallback(() => {\n if (selectionMode === \"range\") {\n emitRangeChange(undefined);\n } else {\n emitChange(undefined);\n }\n handleClose();\n }, [emitChange, emitRangeChange, handleClose, selectionMode]);\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 !hasSelection ? \"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 && hasSelection && \"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 selectionMode={selectionMode}\n className={calendarClassName}\n selectedDate={parsedValue}\n selectedRange={parsedRange}\n onDateSelect={handleSelect}\n onRangeSelect={handleRangeSelect}\n />\n </PopoverContent>\n </Popover>\n {shouldShowClear && (\n <ClearButton\n onClick={handleClear}\n ariaLabel={resolvedClearAriaLabel}\n title={resolvedClearAriaLabel}\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\";\nexport const UUIDregex = /^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$/i;\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 dateFormat = /D/i.test(shortDateFormat) ? shortDateFormat : fallbackShortDateFormat;\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={dateFormat}\n ariaLabel={buildAriaLabel(options?.isEnd)}\n clearAriaLabel={buildClearLabel(options?.isEnd)}\n invalid={Boolean(fieldState.error)}\n displayFormatter={(d) => formatISODate(d, dateFormat)}\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\ntype MonthRange = {\n start?: Date;\n end?: Date;\n};\n\nexport type MonthPickerProps = {\n selectionMode?: \"single\" | \"range\";\n selectedDate?: Date;\n onDateSelect?: (date?: Date) => void;\n selectedRange?: MonthRange;\n onRangeSelect?: (range?: MonthRange) => 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 | \"selectionMode\"\n | \"selectedRange\"\n | \"onRangeSelect\"\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 selectionMode = \"single\",\n selectedDate,\n onDateSelect,\n selectedRange,\n onRangeSelect,\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 selectionMode={selectionMode}\n selectedDate={selectedDate}\n onDateSelect={onDateSelect}\n selectedRange={selectedRange}\n onRangeSelect={onRangeSelect}\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 selectionMode = \"single\",\n selectedDate,\n onDateSelect,\n selectedRange,\n onRangeSelect,\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(\n () => (selectionMode === \"single\" ? normalizeMonth(selectedDate) : undefined),\n [selectedDate, selectionMode]\n );\n const normalizedRangeStart = React.useMemo(\n () => (selectionMode === \"range\" ? normalizeMonth(selectedRange?.start) : undefined),\n [selectedRange?.start, selectionMode]\n );\n const normalizedRangeEnd = React.useMemo(\n () => (selectionMode === \"range\" ? normalizeMonth(selectedRange?.end) : undefined),\n [selectedRange?.end, selectionMode]\n );\n const min = React.useMemo(() => normalizeMonth(minDate), [minDate]);\n const max = React.useMemo(() => normalizeMonth(maxDate), [maxDate]);\n const hasConflictingBounds = Boolean(min && max && min > max);\n\n const minYear = min?.getFullYear();\n const minMonth = min?.getMonth();\n const maxYear = max?.getFullYear();\n const maxMonth = max?.getMonth();\n const selectedMonthYear = selectedMonthDate?.getFullYear();\n\n const [menuYear, setMenuYear] = React.useState(\n () => selectedMonthDate?.getFullYear() ?? today.getFullYear()\n );\n\n React.useEffect(() => {\n if (typeof selectedMonthYear === \"number\") {\n setMenuYear(selectedMonthYear);\n }\n }, [selectedMonthYear]);\n\n React.useEffect(() => {\n if (hasConflictingBounds) return;\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 }, [hasConflictingBounds, minYear, maxYear, menuYear]);\n\n const disablePrevYear =\n hasConflictingBounds || (typeof minYear === \"number\" ? menuYear <= minYear : false);\n const disableNextYear =\n hasConflictingBounds || (typeof maxYear === \"number\" ? menuYear >= maxYear : false);\n\n const yearOptions = React.useMemo(() => {\n if (hasConflictingBounds) return [menuYear];\n\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 }, [hasConflictingBounds, 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 if (hasConflictingBounds) return;\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 [hasConflictingBounds, 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 = hasConflictingBounds || afterMax || beforeMin || disabledByList;\n const cellDate = new Date(menuYear, m.number, 1);\n cellDate.setHours(0, 0, 0, 0);\n const isSelected =\n !isDisabled &&\n !!selectedMonthDate &&\n selectedMonthDate.getFullYear() === menuYear &&\n selectedMonthDate.getMonth() === m.number;\n const isRangeStart =\n !isDisabled &&\n !!normalizedRangeStart &&\n normalizedRangeStart.getFullYear() === menuYear &&\n normalizedRangeStart.getMonth() === m.number;\n const isRangeEnd =\n !isDisabled &&\n !!normalizedRangeEnd &&\n normalizedRangeEnd.getFullYear() === menuYear &&\n normalizedRangeEnd.getMonth() === m.number;\n const isInRange =\n !isDisabled &&\n !!normalizedRangeStart &&\n !!normalizedRangeEnd &&\n cellDate >= normalizedRangeStart &&\n cellDate <= normalizedRangeEnd;\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 (selectionMode === \"range\") {\n const start = normalizedRangeStart;\n const end = normalizedRangeEnd;\n let nextRange: MonthRange;\n if (!start || (start && end)) {\n nextRange = { start: cellDate, end: undefined };\n } else if (cellDate < start) {\n nextRange = { start: cellDate, end: undefined };\n } else {\n nextRange = { start, end: cellDate };\n }\n onRangeSelect?.(nextRange);\n return;\n }\n if (isSelected) {\n onDateSelect?.(undefined);\n return;\n }\n onDateSelect?.(cellDate);\n }}\n disabled={isDisabled}\n className={cn(\n buttonVariants({\n variant:\n isSelected || isRangeStart || isRangeEnd ?\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 || isRangeStart || isRangeEnd ?\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 isInRange && !isRangeStart && !isRangeEnd && \"bg-green-50 border-green-200\"\n )}\n aria-selected={isSelected || isRangeStart || isRangeEnd || isInRange}\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 MonthRange = {\n start?: Date;\n end?: Date;\n};\n\ntype BaseProps = {\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};\n\ntype SingleProps = {\n selectionMode?: \"single\";\n value?: Date | string | null;\n onChange?: (month?: Date) => void;\n onValueChange?: (value?: string) => void;\n placeholder?: string;\n};\n\ntype RangeValue = {\n start?: Date | string | null;\n end?: Date | string | null;\n} | null;\n\ntype RangeValueOutput = {\n start?: string;\n end?: string;\n};\n\ntype RangeProps = {\n selectionMode: \"range\";\n value?: RangeValue;\n onChange?: (range?: MonthRange) => void;\n onValueChange?: (value?: RangeValueOutput) => void;\n placeholder?: string;\n rangePlaceholder?: string;\n rangeSeparator?: string;\n};\n\nexport type MonthPickerProps = (SingleProps | RangeProps) &\n BaseProps &\n Omit<\n CalendarProps,\n \"selectedDate\" | \"onDateSelect\" | \"className\" | \"selectionMode\" | \"selectedRange\" | \"onRangeSelect\"\n >;\n\nexport const MonthPicker: React.FC<MonthPickerProps> = (props) => {\n const {\n selectionMode = \"single\",\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 } = props;\n const [open, setOpen] = React.useState(false);\n const rangePlaceholder =\n selectionMode === \"range\" ?\n ((props as RangeProps).rangePlaceholder ??\n (props as RangeProps).placeholder ??\n \"Select month range\")\n : \"Select month range\";\n const rangeSeparator =\n selectionMode === \"range\" ? ((props as RangeProps).rangeSeparator ?? \" - \") : \" - \";\n const resolvedClearAriaLabel =\n selectionMode === \"range\" && clearAriaLabel === \"Clear month\" ? \"Clear month range\" : clearAriaLabel;\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 parseInput = React.useCallback(\n (input?: Date | string | null) => {\n if (input === null || input === undefined) return undefined;\n if (input instanceof Date) return normalizeMonth(input);\n if (typeof input === \"string\") {\n const parsed = parser(input);\n return parsed ? normalizeMonth(parsed) : undefined;\n }\n return undefined;\n },\n [parser]\n );\n\n const parsedValue = React.useMemo(\n () => (selectionMode === \"single\" ? parseInput(value as Date | string | null) : undefined),\n [parseInput, selectionMode, value]\n );\n\n const parsedRange = React.useMemo(() => {\n if (selectionMode !== \"range\") return undefined;\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n return { start: undefined, end: undefined };\n }\n const rangeValue = value as RangeValue;\n return {\n start: parseInput(rangeValue?.start),\n end: parseInput(rangeValue?.end)\n };\n }, [parseInput, selectionMode, value]);\n\n const buttonLabel =\n selectionMode === \"range\" ?\n parsedRange?.start && parsedRange?.end ?\n `${labelFormatter(parsedRange.start)}${rangeSeparator}${labelFormatter(parsedRange.end)}`\n : parsedRange?.start ? `${labelFormatter(parsedRange.start)}${rangeSeparator}...`\n : parsedRange?.end ? `...${rangeSeparator}${labelFormatter(parsedRange.end)}`\n : rangePlaceholder\n : parsedValue ? labelFormatter(parsedValue)\n : placeholder;\n\n const buttonAriaLabel =\n ariaLabel ??\n (selectionMode === \"range\" ?\n parsedRange?.start && parsedRange?.end ?\n `Change month range, current selection ${labelFormatter(parsedRange.start)} to ${labelFormatter(\n parsedRange.end\n )}`\n : parsedRange?.start ? `Select end month, current start ${labelFormatter(parsedRange.start)}`\n : \"Open month range picker\"\n : parsedValue ? `Change month, current selection ${labelFormatter(parsedValue)}`\n : \"Open month picker\");\n\n const shouldShowClear =\n allowClear &&\n !disabled &&\n (selectionMode === \"range\" ? Boolean(parsedRange?.start || parsedRange?.end) : Boolean(parsedValue));\n const hasSelection =\n selectionMode === \"range\" ? Boolean(parsedRange?.start || parsedRange?.end) : Boolean(parsedValue);\n\n const handleClose = React.useCallback(() => setOpen(false), []);\n const emitChange = React.useCallback(\n (next?: Date) => {\n if (selectionMode !== \"single\") return;\n const normalized = next ? normalizeMonth(next) : undefined;\n (onChange as SingleProps[\"onChange\"])?.(normalized);\n (onValueChange as SingleProps[\"onValueChange\"])?.(\n normalized ? outputFormatter(normalized) : undefined\n );\n },\n [onChange, onValueChange, outputFormatter, selectionMode]\n );\n\n const emitRangeChange = React.useCallback(\n (next?: MonthRange) => {\n if (selectionMode !== \"range\") return;\n (onChange as RangeProps[\"onChange\"])?.(next);\n (onValueChange as RangeProps[\"onValueChange\"])?.(\n next ?\n {\n start: next.start ? outputFormatter(next.start) : undefined,\n end: next.end ? outputFormatter(next.end) : undefined\n }\n : undefined\n );\n },\n [onChange, onValueChange, outputFormatter, selectionMode]\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 handleRangeSelect = React.useCallback(\n (next?: MonthRange) => {\n emitRangeChange(next);\n if (closeOnSelect && next?.start && next?.end) handleClose();\n },\n [closeOnSelect, emitRangeChange, handleClose]\n );\n\n const handleClear = React.useCallback(() => {\n if (selectionMode === \"range\") {\n emitRangeChange(undefined);\n } else {\n emitChange(undefined);\n }\n handleClose();\n }, [emitChange, emitRangeChange, handleClose, selectionMode]);\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 !hasSelection ? \"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 selectionMode={selectionMode}\n className={calendarClassName}\n selectedDate={parsedValue}\n selectedRange={parsedRange}\n onDateSelect={handleSelect}\n onRangeSelect={handleRangeSelect}\n />\n </PopoverContent>\n </Popover>\n {shouldShowClear && (\n <ClearButton\n onClick={handleClear}\n ariaLabel={resolvedClearAriaLabel}\n title={resolvedClearAriaLabel}\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","\"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","\"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({ children, ...props }: React.ComponentProps<typeof TooltipPrimitive.Root>) {\n return (\n <TooltipProvider>\n <TooltipPrimitive.Root data-slot=\"tooltip\" {...props}>\n {children}\n </TooltipPrimitive.Root>\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 whitespace-pre-wrap\",\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, 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 * as React from \"react\";\n\nexport type UseBindRefProps<T> = {\n ref?: React.RefObject<T | null>;\n value: T;\n};\n\nconst useBindRef = <T>({ ref, value }: UseBindRefProps<T>) => {\n React.useEffect(() => {\n if (!ref) return;\n ref.current = value;\n return () => {\n ref.current = null;\n };\n }, [ref, value]);\n};\n\nexport default useBindRef;\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 || span.scrollWidth > span.clientWidth;\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 isStringChildren = typeof children === \"string\";\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 contentWhitespaceClass = React.useMemo(() => {\n if (!isStringChildren) return undefined;\n return truncationClass === \"truncate\" ? \"whitespace-pre\" : \"whitespace-pre-wrap\";\n }, [isStringChildren, truncationClass]);\n\n const baseContent = (\n <Comp\n ref={elementRef}\n className={cn(truncationClass, contentWhitespaceClass, className)}\n style={clampedStyle}\n >\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 isStringChildren && \"whitespace-pre-wrap\",\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 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 = 68;\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: 5\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 {filteredOptions.length > 0 && (\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 )}\n </CommandList>\n </Command>\n );\n};\n\nexport default VirtualizedCommand;\n","import * as React from \"react\";\nimport { cn } from \"@/utils\";\nimport {\n Command,\n CommandEmpty,\n CommandGroup,\n CommandInput,\n CommandItem,\n CommandList\n} from \"../command/Command\";\nimport { Check } from \"lucide-react\";\nimport { Truncated } from \"../truncated\";\nimport useFieldNames from \"../command/hooks/useFieldNames\";\nimport {\n type OptionData,\n type VirtualizedCommandProps,\n type VirtualizedCommandOption\n} from \"@/components/command/VirtualizedCommand\";\n\nconst NonVirtualizedCommand = <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}: 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\n const handleSearch = React.useCallback(\n (search: string) => {\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 return (\n <Command shouldFilter={false}>\n {showSearch && (\n <CommandInput\n onValueChange={handleSearch}\n placeholder={searchPlaceholder}\n data-testid={`command-input-${name}`}\n />\n )}\n <CommandList\n style={{\n maxHeight: height,\n overflow: \"auto\"\n }}\n >\n <CommandEmpty data-testid={`command-item-empty-${name}`}>\n {internalOptions.length === 0 ? emptyContent : notFoundContent}\n </CommandEmpty>\n {filteredOptions.length > 0 && (\n <CommandGroup>\n {filteredOptions.map((option, index) => {\n const optionLabel = getLabelField(option);\n const optionValue = getValueField(option);\n\n const labelRendered = labelRender ? labelRender(option) : optionLabel;\n\n return (\n <CommandItem\n key={optionValue}\n className=\"flex items-center justify-between\"\n value={optionValue}\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 )}\n </CommandList>\n </Command>\n );\n};\n\nexport default NonVirtualizedCommand;\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 NonVirtualizedCommand from \"./NonVirtualizedCommand\";\nimport useFieldNames from \"../command/hooks/useFieldNames\";\nimport { useControllableState } from \"@/hooks\";\nimport { Truncated } from \"../truncated\";\nimport { Spinner } from \"../spinner\";\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 virtual?: boolean;\n isLoading?: boolean;\n loadingContent?: React.ReactNode;\n valueRender?: (option: VirtualizedCommandOption<TData>) => React.ReactNode;\n popoverProps?: Omit<React.ComponentProps<typeof Popover>, \"open\" | \"onOpenChange\">;\n popoverContentProps?: Omit<React.ComponentProps<typeof PopoverContent>, \"children\">;\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 virtual = true,\n isLoading,\n loadingContent,\n valueRender,\n popoverProps,\n popoverContentProps,\n ...props\n }: ComboboxProps<TData>,\n ref: React.ForwardedRef<HTMLButtonElement>\n) => {\n const { getLabelField, getValueField } = useFieldNames({ fieldNames });\n\n // Focus/blur bug context and fix strategy:\n // 1) Root cause\n // - Trigger is a button, but options are rendered in portaled PopoverContent.\n // - Native DOM focus order does not match logical combobox interaction order.\n // - Open may blur trigger while user is still in the same combobox interaction.\n // - Close may restore focus to trigger and fire an extra synthetic focus.\n // 2) Why these refs exist\n // - isFocusedRef: source of truth for logical \"combobox focused\" state.\n // - isPopoverOpenRef: synchronous open state for blur guards (avoids stale state timing).\n // - suppressNextFocusRef: ignores one synthetic focus after close.\n // - lastFocusEventRef: preserves a real focus event object to forward as onBlur payload.\n // 3) Event policy implemented below\n // - signalBlur() fires exactly once on close paths (select/escape/outside close).\n // - handleBlur ignores blur while popover is open (focus moved into dropdown).\n // - onCloseAutoFocus prevents Radix auto-restore focus so close does not re-fire onFocus.\n // 4) Result\n // - Stable sequence for consumers (including React Hook Form):\n // onFocus once on entry, onBlur once on logical exit, no duplicate focus/blur loops.\n const isFocusedRef = React.useRef(false);\n const isPopoverOpenRef = React.useRef(false);\n const suppressNextFocusRef = React.useRef(false);\n const lastFocusEventRef = React.useRef<React.FocusEvent<HTMLButtonElement, Element> | null>(null);\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 (isLoading) {\n return loadingContent ?? \"Loading...\";\n }\n\n if (!selectedValue) return placeholder;\n\n if (currentSelectedOption) {\n return valueRender ? valueRender(currentSelectedOption) : getLabelField(currentSelectedOption);\n }\n\n if (showValueWhenNoMatch) {\n return selectedValue;\n }\n\n return null;\n }, [\n isLoading,\n selectedValue,\n placeholder,\n currentSelectedOption,\n showValueWhenNoMatch,\n loadingContent,\n valueRender,\n getLabelField\n ]);\n\n const signalBlur = React.useCallback(() => {\n if (!isFocusedRef.current || !lastFocusEventRef.current) return;\n isFocusedRef.current = false;\n suppressNextFocusRef.current = true;\n onBlur?.(lastFocusEventRef.current);\n }, [onBlur]);\n\n const handleSelect = React.useCallback<NonNullable<ComboboxProps<TData>[\"onSelect\"]>>(\n (selected, option) => {\n setSelectedValue(selected);\n setOpenPopover(false);\n isPopoverOpenRef.current = false;\n signalBlur();\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, signalBlur]\n );\n\n const handleOpenPopover = React.useCallback(\n (isOpen: boolean) => {\n if (disabled || isLoading) return;\n\n isPopoverOpenRef.current = isOpen;\n setOpenPopover(isOpen);\n\n if (!isOpen) {\n signalBlur();\n }\n\n if (typeof onOpenChange === \"function\") {\n onOpenChange(isOpen);\n }\n },\n [disabled, isLoading, onOpenChange, setOpenPopover, signalBlur]\n );\n\n const handleFocus = React.useCallback(\n (event: React.FocusEvent<HTMLButtonElement, Element>) => {\n lastFocusEventRef.current = event;\n\n if (suppressNextFocusRef.current) {\n suppressNextFocusRef.current = false;\n return;\n }\n\n if (isFocusedRef.current) return;\n\n isFocusedRef.current = true;\n onFocus?.(event);\n },\n [onFocus]\n );\n\n const handleBlur = React.useCallback(\n (event: React.FocusEvent<HTMLButtonElement, Element>) => {\n if (isPopoverOpenRef.current) return;\n if (!isFocusedRef.current) return;\n isFocusedRef.current = false;\n onBlur?.(event);\n },\n [onBlur]\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} {...popoverProps}>\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 data-loading={isLoading}\n disabled={disabled || isLoading}\n onFocus={handleFocus}\n onBlur={handleBlur}\n data-testid={`combobox-trigger-${name}`}\n {...props}\n >\n <Truncated\n className={cn(!selectedValue && !isLoading && \"text-sus-gray-1\")}\n tooltipProps={{ disabled: true }}\n >\n {renderValue}\n </Truncated>\n <div className=\"flex items-center gap-1\">\n {isLoading ?\n <Spinner size=\"sm\" className=\"size-4\" />\n : <ChevronDown className=\"size-4 opacity-50\" />}\n {showClear && selectedValue && !isLoading && (\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 align=\"start\"\n sideOffset={4}\n {...popoverContentProps}\n onCloseAutoFocus={(event) => {\n event.preventDefault();\n suppressNextFocusRef.current = false;\n popoverContentProps?.onCloseAutoFocus?.(event);\n }}\n onWheel={(e) => {\n e.stopPropagation();\n popoverContentProps?.onWheel?.(e);\n }}\n className={cn(\n \"p-0 w-(--radix-popper-anchor-width) min-w-(--radix-popper-anchor-width) max-w-(--radix-popper-available-width) rounded-md\",\n popoverContentProps?.className\n )}\n onInteractOutside={(event) => {\n popoverContentProps?.onInteractOutside?.(event);\n }}\n >\n {virtual ?\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 : <NonVirtualizedCommand\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 }\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 React, { useEffect, useState } from \"react\";\nimport { FormField, FormItem, FormMessage } from \"@/components/ui/form\";\nimport { Combobox } from \"@/components/combobox/Combobox\";\nimport type { RowState, Option, DropdownFieldSchema } from \"@/components/advanceSearch/types\";\nimport { cn } from \"@/utils\";\n\ninterface Props {\n row: RowState;\n control: any;\n fieldSchema?: DropdownFieldSchema;\n onClear: (which: \"value\" | \"value2\") => void;\n}\n\nexport const ConditionDropdownInput: React.FC<Props> = ({ row, control, fieldSchema, onClear }) => {\n const [options, setOptions] = useState<Option[]>([]);\n const [loading, setIsLoading] = useState(false);\n\n useEffect(() => {\n if (!fieldSchema) {\n return;\n }\n if (fieldSchema.fetchOptions) {\n setIsLoading(true);\n fieldSchema\n .fetchOptions()\n .then((fetchedOptions) => {\n setOptions(fetchedOptions);\n })\n .catch((err) => {\n console.error(\"Failed to fetch lookup options\", err);\n })\n .finally(() => setIsLoading(false));\n } else {\n setOptions(fieldSchema.options);\n }\n }, [fieldSchema]);\n\n return (\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\n return (\n <FormItem className=\"relative\">\n <Combobox\n data-testid=\"advsearch-dropdown-value\"\n name={`dropdown_${row.id}`}\n className=\"w-full\"\n value={field.value ?? \"\"}\n options={options}\n placeholder=\"Select value\"\n isLoading={loading}\n loadingContent={fieldSchema?.loadingMessage ?? \"Loading...\"}\n emptyContent={fieldSchema?.noOptionsMessage ?? \"No records found.\"}\n notFoundContent={fieldSchema?.noOptionsMessage ?? \"No records found.\"}\n showClear={hasValue}\n showSearch\n virtual={false}\n labelRender={(option) => {\n const opt = option as Option;\n return (\n <span className=\"flex items-center\">\n {opt.decorator}\n <span className={cn(opt.labelStyle)}>{opt.label}</span>\n </span>\n );\n }}\n valueRender={(option) => {\n const opt = option as Option;\n return opt.decorator ?\n <span className=\"flex items-center\">\n {opt.decorator}\n <span className={cn(opt.labelStyle)}>{opt.label}</span>\n </span>\n : <span className={cn(opt.labelStyle)}>{opt.label}</span>;\n }}\n onSelect={(val) => field.onChange(val)}\n onClear={handleClear}\n />\n <FormMessage className={\"absolute left-0 top-full mt-1 text-xs text-red-600\"} />\n </FormItem>\n );\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 min-w-0\">\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 DropdownFieldSchema,\n FieldSchema,\n JSONFieldSchema,\n LookupFieldSchema,\n NumberFieldSchema,\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\";\nimport { Input } from \"@/components/input\";\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 const isNullOperator = row.operator === \"isNull\" || row.operator === \"isNotNull\";\n\n if (isNullOperator) {\n return (\n <Input\n disabled\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 }\n\n switch (fieldType) {\n case \"number\":\n return (\n <ConditionNumberInput\n row={row}\n control={control}\n onClear={onClearValue}\n fieldSchema={fieldSchema as NumberFieldSchema}\n />\n );\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 as DropdownFieldSchema}\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","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 { RowState } from \"../types\";\nimport { helper } from \"./helper\";\n\nexport class BaseBuilder {\n baseBuild(row: RowState): object | undefined {\n const sharedOptions = {\n multiTableSearch: row.multiTableSearch,\n lookupFieldName: row.lookupFieldName\n } as const;\n switch (row.operator) {\n case \"isNull\":\n return {\n [row.fieldName]: helper({ equals: null }, sharedOptions)\n };\n case \"isNotNull\":\n return {\n NOT: {\n [row.fieldName]: helper({ equals: null }, sharedOptions)\n }\n };\n }\n }\n}\n","import { ParamsBuilder } from \"../types\";\nimport { RowState } from \"../types\";\nimport { BaseBuilder } from \"./base\";\n\nexport class CheckboxBuilder extends BaseBuilder implements ParamsBuilder {\n build(row: RowState): object {\n const baseResult = this.baseBuild(row);\n if (baseResult) {\n return baseResult;\n }\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, RowState } from \"../types\";\nimport { BaseBuilder } from \"./base\";\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 extends BaseBuilder implements ParamsBuilder {\n build(row: RowState): object {\n const baseResult = this.baseBuild(row);\n if (baseResult) {\n return baseResult;\n }\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\";\nimport { BaseBuilder } from \"./base\";\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 extends BaseBuilder implements ParamsBuilder {\n build(row: RowState): object {\n const baseResult = this.baseBuild(row);\n if (baseResult) {\n return baseResult;\n }\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\";\nimport { BaseBuilder } from \"./base\";\n\nexport class DropdownBuilder extends BaseBuilder implements ParamsBuilder {\n build(row: RowState): object {\n const baseResult = this.baseBuild(row);\n if (baseResult) {\n return baseResult;\n }\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\";\nimport { BaseBuilder } from \"./base\";\n\nexport class JSONBuilder extends BaseBuilder implements ParamsBuilder {\n build(row: RowState): object {\n const baseResult = this.baseBuild(row);\n if (baseResult) {\n return baseResult;\n }\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\";\nimport { BaseBuilder } from \"./base\";\n\nexport class LookupBuilder extends BaseBuilder implements ParamsBuilder {\n build(row: RowState): object {\n const baseResult = this.baseBuild(row);\n if (baseResult) {\n return baseResult;\n }\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 { BaseBuilder } from \"./base\";\nimport { helper } from \"./helper\";\n\nexport class NumberBuilder extends BaseBuilder implements ParamsBuilder {\n build(row: RowState): object {\n const baseResult = this.baseBuild(row);\n if (baseResult) {\n return baseResult;\n }\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 { BaseBuilder } from \"./base\";\nimport { helper } from \"./helper\";\n\nexport class TextBuilder extends BaseBuilder implements ParamsBuilder {\n build(row: RowState): object {\n const baseResult = this.baseBuild(row);\n if (baseResult) {\n return baseResult;\n }\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 { UUIDregex } from \"../components/constants\";\nimport { ParamsBuilder, RowState } from \"../types\";\nimport { BaseBuilder } from \"./base\";\nimport { helper } from \"./helper\";\n\nexport class UUIDBuilder extends BaseBuilder implements ParamsBuilder {\n build(row: RowState): object {\n const baseResult = this.baseBuild(row);\n if (baseResult) {\n return baseResult;\n }\n if (Array.isArray(row.value)) {\n return {};\n }\n if (!UUIDregex.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\";\nimport { FieldType } from \"../types\";\nimport { UUIDregex } from \"../components/constants\";\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 val;\n};\n\nconst numericTypes: FieldType[] = [\"number\"];\nconst dateTypes: FieldType[] = [\"date\", \"datemonth\"];\n\nexport const validateByFieldType = (\n value: string | any[] | undefined,\n fieldType: FieldType\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 === \"uuid\") {\n if (!UUIDregex.test(value)) {\n return { valid: false, message: \"Please enter a valid UUID.\" };\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, Params, RowState } 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 customParamsBuilderHook\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: \"onChange\",\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 let params: Params;\n // custom param builder hook\n if (customParamsBuilderHook) {\n params = {\n AND: cleanedRows.map((r) =>\n customParamsBuilderHook({\n defaultBuildFunc: (r: RowState) => getBuilder(r.fieldType).build(r),\n row: r\n })\n )\n };\n } else {\n // built-in param builder\n params = transformFilterKeys(\n {\n AND: cleanedRows.map((r) => getBuilder(r.fieldType).build(r)).filter(Boolean)\n },\n filterFieldMap\n );\n }\n\n if (onSearch) onSearch(params);\n }, [\n rows,\n operatorsForField,\n getValues,\n parseRangeValue,\n setError,\n setOperatorErrors,\n filterFieldMap,\n onSearch,\n customParamsBuilderHook\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 variant=\"cottonAccent\"\n type=\"button\"\n className=\"w-full 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 variant=\"default\"\n type=\"submit\"\n className=\"w-full 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 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 rootClassName?: string;\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 h-full\",\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={cn(\n \"flex flex-col -space-y-2 transition-opacity duration-150\",\n sorterProps?.rootClassName\n )}\n style={{ opacity: hovering || !!context.column.getIsSorted() ? 1 : 0.35 }}\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] transition-colors duration-200\", {\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] transition-colors duration-200\", {\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 transition-colors duration-150\",\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 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 \"getFooterGroups\",\n \"getLeftFooterGroups\",\n \"getRightFooterGroups\",\n \"getCenterFooterGroups\"\n];\n\nconst DataTableDevTool = ({ table }: { table: Table<any> }) => {\n const [open, setOpen] = useState(false);\n const [visibleStates, setVisibleStates] = useState<StateKey[]>([]);\n const [visibleModels, setVisibleModels] = useState<ModelKey[]>([]);\n const tableState = table.getState();\n\n const toggleValue = <U extends string>(arr: U[], value: U): U[] =>\n arr.includes(value) ? arr.filter((v) => v !== value) : [...arr, value];\n\n const getCircularReplacer = () => {\n const seen = new WeakSet();\n return (_key: string, value: any) => {\n if (typeof value === \"object\" && value !== null) {\n if (seen.has(value)) return \"[Circular]\";\n seen.add(value);\n }\n return value;\n };\n };\n\n const renderStateValue = (key: StateKey) => {\n const value = tableState[key];\n if (value == null) return null;\n return (\n <div key={key} className=\"mt-4\">\n <div className=\"font-bold capitalize\">{key}</div>\n <pre className=\"bg-gray-100 text-xs p-2 rounded overflow-x-auto whitespace-pre-wrap\">\n {JSON.stringify(value, null, 2)}\n </pre>\n </div>\n );\n };\n\n const renderModelValue = (key: ModelKey) => {\n let value: unknown;\n try {\n value = (table as any)[key]();\n } catch {\n value = undefined;\n }\n if (value == null) return null;\n let jsonString = \"\";\n try {\n jsonString = JSON.stringify(value, getCircularReplacer(), 2);\n } catch {\n jsonString = \"[Cannot stringify]\";\n }\n\n return (\n <div key={key} className=\"mt-4\">\n <div className=\"font-bold capitalize\">{key}</div>\n <pre className=\"bg-gray-100 text-xs p-2 rounded overflow-x-auto whitespace-pre-wrap\">\n {jsonString}\n </pre>\n </div>\n );\n };\n\n if (process.env.NODE_ENV === \"production\") return null;\n\n return (\n <div>\n {/* Floating Button */}\n <button\n onClick={() => setOpen(true)}\n className=\"fixed bottom-6 right-6 z-50 rounded-full bg-white border shadow p-3\"\n aria-label=\"Open debug panel\"\n >\n <Bug className=\"w-5 h-5\" />\n </button>\n\n {/* Sidebar Debug Panel */}\n {open && (\n <aside className=\"fixed top-0 right-0 h-full w-[420px] bg-white shadow-lg border-l border-gray-200 z-50 flex flex-col\">\n {/* Header */}\n <header className=\"flex items-center justify-between p-4 border-b border-gray-200\">\n <h2 className=\"text-lg font-semibold\">Debug Table State &amp; Models</h2>\n <button onClick={() => setOpen(false)} className=\"text-xl font-bold\" aria-label=\"Close\">\n ×\n </button>\n </header>\n\n {/* Main Content */}\n <main className=\"overflow-auto p-4 flex-grow space-y-4\">\n <section className=\"max-h-80 overflow-y-auto overflow-x-hidden\">\n {/* Select Table States */}\n <fieldset>\n <legend className=\"block text-sm font-medium mb-1\">Show Table State</legend>\n <div className=\"space-y-1\">\n {stateOptions.map((stateKey) => (\n <label\n key={stateKey}\n className=\"flex items-center gap-2 cursor-pointer hover:bg-gray-50 p-1 rounded\"\n >\n <input\n type=\"checkbox\"\n className=\"accent-blue-500\"\n checked={visibleStates.includes(stateKey)}\n onChange={() => setVisibleStates(toggleValue(visibleStates, stateKey))}\n />\n <span className=\"truncate\">{stateKey}</span>\n </label>\n ))}\n </div>\n </fieldset>\n\n {/* Select Table Models */}\n <fieldset>\n <legend className=\"block text-sm font-medium mb-1\">Show Table Models</legend>\n <div className=\"space-y-1\">\n {modelOptions.map((modelKey) => (\n <label\n key={modelKey}\n className=\"flex items-center gap-2 cursor-pointer hover:bg-gray-50 p-1 rounded\"\n >\n <input\n type=\"checkbox\"\n className=\"accent-green-500\"\n checked={visibleModels.includes(modelKey)}\n onChange={() => setVisibleModels(toggleValue(visibleModels, modelKey))}\n />\n <span className=\"truncate\">{modelKey}</span>\n </label>\n ))}\n </div>\n </fieldset>\n </section>\n\n {/* JSON Outputs */}\n <hr className=\"my-2 border-gray-300\" />\n {visibleStates.map(renderStateValue)}\n {visibleModels.map(renderModelValue)}\n </main>\n </aside>\n )}\n </div>\n );\n};\n\nexport default DataTableDevTool;\n","import {\n getCoreRowModel,\n getExpandedRowModel,\n getFilteredRowModel,\n getGroupedRowModel,\n getSortedRowModel,\n type RowData,\n type TableOptions,\n type TableState,\n useReactTable\n} from \"@tanstack/react-table\";\nimport type {\n DataTableColumnGrouping,\n DataTableColumnOrdering,\n DataTableColumnPinning,\n DataTableColumnSorting,\n DataTableColumnVisibility,\n DataTableFilters,\n DataTableRowExpansion,\n DataTableRowSelection,\n DatatableColumnResizing,\n DataTableRowIdKeyHandler,\n DataTableChildrenKeyHandler\n} from \"../DataTable\";\nimport { stripNullishObject } from \"../../../utils/filters\";\n\nexport type UseTableControllerProps<TData extends RowData> = {\n columns: TableOptions<TData>[\"columns\"];\n data: TData[];\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 rowIdKey?: DataTableRowIdKeyHandler<TData>;\n childrenKey?: DataTableChildrenKeyHandler<TData>;\n};\n\nconst fallbackData: unknown[] = [];\n\nexport const useTableController = <TData extends RowData>({\n columns,\n data,\n filters,\n sorting,\n columnOrder,\n columnVisibility,\n columnPinning,\n columnGrouping,\n columnResizing,\n rowSelection,\n rowExpansion,\n rowIdKey,\n childrenKey\n}: UseTableControllerProps<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 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 !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 return table;\n};\n","import { useCallback, useEffect } from \"react\";\nimport type { DataTableScrollFetch, ScrollInfo } from \"../DataTable\";\n\nexport type UseScrollFetchProps = {\n scrollFetch: DataTableScrollFetch | undefined;\n containerRef: React.RefObject<HTMLDivElement | null>;\n};\n\nexport const useScrollFetch = ({ scrollFetch, containerRef }: UseScrollFetchProps) => {\n const fetchMoreOnScrollReached = useCallback(\n (containerRefElement?: HTMLDivElement | null) => {\n if (\n !scrollFetch?.enabled ||\n !containerRefElement ||\n scrollFetch?.isFetchingMore ||\n !scrollFetch?.hasMore ||\n !scrollFetch?.fetchMore\n ) {\n return;\n }\n\n const { scrollHeight, scrollTop, clientHeight } = containerRefElement;\n\n const scrollableHeight = scrollHeight - clientHeight;\n const distanceToBottom = scrollableHeight - scrollTop;\n const ratioToBottom = scrollableHeight > 0 ? scrollTop / scrollableHeight : 1;\n\n const info: ScrollInfo = {\n scrollTop,\n scrollHeight,\n clientHeight,\n scrollableHeight,\n distanceToBottom,\n ratioToBottom,\n isTopReached: scrollTop === 0,\n isBottomReached: distanceToBottom <= 0\n };\n\n let shouldTrigger = false;\n if (typeof scrollFetch.scrollThreshold === \"number\") {\n shouldTrigger = info.ratioToBottom >= scrollFetch.scrollThreshold;\n } else if (typeof scrollFetch.scrollThreshold === \"function\") {\n shouldTrigger = scrollFetch.scrollThreshold(info);\n } else {\n shouldTrigger = info.ratioToBottom >= 0.7; // default 70%\n }\n\n if (shouldTrigger) {\n scrollFetch.fetchMore();\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [scrollFetch?.enabled, scrollFetch?.isFetchingMore, scrollFetch?.hasMore, scrollFetch?.fetchMore]\n );\n\n useEffect(() => {\n fetchMoreOnScrollReached(containerRef.current);\n }, [fetchMoreOnScrollReached, containerRef]);\n\n return fetchMoreOnScrollReached;\n};\n","export const DEFAULT_ROW_HEIGHT = 40;\nexport const DEFAULT_OVER_SCAN = 10;\nexport const DEFAULT_COLUMN_OVERSCAN = 1;\n","import { useCallback } from \"react\";\nimport { useVirtualizer, type VirtualItem } from \"@tanstack/react-virtual\";\nimport type { Table as TanstackTableType, RowData } from \"@tanstack/react-table\";\nimport { type DataTableVirtual } from \"../DataTable\";\nimport { DEFAULT_COLUMN_OVERSCAN, DEFAULT_OVER_SCAN, DEFAULT_ROW_HEIGHT } from \"../constants\";\n\nexport type ColumnVirtualizerState =\n | { enabled: false }\n | {\n enabled: true;\n virtualColumns: VirtualItem[];\n virtualPaddingLeft: number;\n virtualPaddingRight: number;\n };\n\nexport type UseTableVirtualizerProps<TData extends RowData> = {\n enabled: boolean;\n table: TanstackTableType<TData>;\n containerRef: React.RefObject<HTMLDivElement | null>;\n virtual?: Partial<DataTableVirtual>;\n};\n\nexport const useTableVirtualizer = <TData extends RowData>({\n enabled,\n table,\n containerRef,\n virtual\n}: UseTableVirtualizerProps<TData>) => {\n const rowModel = table.getRowModel().rows;\n const columnsEnabled = enabled && (virtual?.columns?.enabled ?? false);\n const centerColumns = table.getCenterVisibleLeafColumns();\n\n const getRowVirtualItemKey = useCallback((index: number) => rowModel[index]?.id ?? index, [rowModel]);\n const getColumnVirtualItemKey = useCallback(\n (index: number) => centerColumns[index]?.id ?? index,\n [centerColumns]\n );\n\n const virtualizer = useVirtualizer({\n count: enabled ? rowModel.length : 0,\n useFlushSync: false,\n getScrollElement: () => containerRef.current,\n estimateSize: () => DEFAULT_ROW_HEIGHT,\n getItemKey: getRowVirtualItemKey,\n measureElement:\n typeof window !== \"undefined\" && navigator.userAgent.indexOf(\"Firefox\") === -1 ?\n (element) => element?.getBoundingClientRect().height\n : undefined,\n overscan: virtual?.overscan ?? DEFAULT_OVER_SCAN\n });\n\n const columnVirtualizer = useVirtualizer({\n count: columnsEnabled ? centerColumns.length : 0,\n estimateSize: (index) => centerColumns[index]?.getSize() ?? 0,\n getScrollElement: () => containerRef.current,\n horizontal: true,\n getItemKey: getColumnVirtualItemKey,\n overscan: virtual?.columns?.overscan ?? DEFAULT_COLUMN_OVERSCAN\n });\n\n const virtualItems = enabled ? virtualizer.getVirtualItems() : [];\n const paddingTop = enabled && virtualItems.length > 0 ? virtualItems[0].start : 0;\n const paddingBottom =\n enabled && virtualItems.length > 0 ?\n virtualizer.getTotalSize() - virtualItems[virtualItems.length - 1].end\n : 0;\n\n let columnVirtual: ColumnVirtualizerState;\n if (!columnsEnabled) {\n columnVirtual = { enabled: false };\n } else {\n const virtualColumns = columnVirtualizer.getVirtualItems();\n const virtualPaddingLeft = virtualColumns[0]?.start ?? 0;\n const virtualPaddingRight =\n columnVirtualizer.getTotalSize() - (virtualColumns[virtualColumns.length - 1]?.end ?? 0);\n columnVirtual = { enabled: true, virtualColumns, virtualPaddingLeft, virtualPaddingRight };\n }\n\n return {\n virtualizer,\n columnVirtualizer,\n virtualItems,\n paddingTop,\n paddingBottom,\n rowModel,\n columnVirtual\n };\n};\n","import { useMemo } from \"react\";\nimport type { Row, Column, RowData, Table as TanstackTableType } from \"@tanstack/react-table\";\nimport type { StatusContentKey, DataTableScrollFetch, DataTableProps } from \"../DataTable\";\n\nexport type UseComputedTableStateProps<TData extends RowData> = {\n table: TanstackTableType<TData>;\n rowModel: Row<TData>[];\n isInitialLoading?: boolean;\n scrollFetch?: DataTableScrollFetch;\n activeStatusContent?: DataTableProps<TData>[\"activeStatusContent\"];\n};\n\nexport type UseComputedTableStateReturn<TData extends RowData> = {\n isTableEmpty: boolean;\n isTableEmptyAfterFiltering: boolean;\n isFiltering: boolean;\n leftVisibleLeftColumns: Column<TData, unknown>[];\n centerVisibleLeafColumns: Column<TData, unknown>[];\n rightVisibleLeafColumns: Column<TData, unknown>[];\n visibleColumnCount: number;\n isSomeColumnsFilterable: boolean;\n filterableColumns: Column<TData, any>[];\n activeStatusContentComputed: StatusContentKey | null;\n};\n\nexport function useComputedTableState<TData extends RowData>({\n table,\n rowModel,\n isInitialLoading,\n scrollFetch,\n activeStatusContent\n}: UseComputedTableStateProps<TData>): UseComputedTableStateReturn<TData> {\n const isTableEmpty = table.getCoreRowModel().rows.length === 0;\n const isTableEmptyAfterFiltering = rowModel.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 const visibleColumnCount = Math.max(\n leftVisibleLeftColumns.length + centerVisibleLeafColumns.length + rightVisibleLeafColumns.length,\n 1\n );\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 return {\n isTableEmpty,\n isTableEmptyAfterFiltering,\n isFiltering,\n leftVisibleLeftColumns,\n centerVisibleLeafColumns,\n rightVisibleLeafColumns,\n visibleColumnCount,\n isSomeColumnsFilterable,\n filterableColumns,\n activeStatusContentComputed\n };\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 type { RowData, Column } from \"@tanstack/react-table\";\nimport type { CSSProperties } from \"react\";\nimport type { DataTableRowClickHandler } from \"./DataTable\";\nimport { cn } from \"../../utils\";\n\nexport const toCSSId = (id: string) => id.replace(/[^a-zA-Z0-9_-]/g, \"-\");\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(isPinned ? \"sticky\" : \"relative\");\n\n const style: CSSProperties = {\n left:\n isPinned === \"left\" ?\n `calc(var(--col-${toCSSId(column.id)}-pin-start, ${column.getStart(\"left\")}) * 1px)`\n : undefined,\n right:\n isPinned === \"right\" ?\n `calc(var(--col-${toCSSId(column.id)}-pin-after, ${column.getAfter(\"right\")}) * 1px)`\n : undefined,\n zIndex: isPinned ? 1 : 0,\n boxShadow:\n isLastLeftPinnedColumn ? \"inset -1px 0 0 0 black\"\n : isFirstRightPinnedColumn ? \"inset 1px 0 0 0 black\"\n : 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 from \"react\";\nimport { flexRender, type Table as TanstackTableType, type RowData } from \"@tanstack/react-table\";\nimport { TableHead, TableRow } from \"../ui/table\";\nimport ColumnResizer from \"./ColumnResizer\";\nimport ColumnSeparator from \"./ColumnSeparator\";\nimport { cn } from \"../../utils\";\nimport { getColumnPinningInfo, getColumnPinningStyles, toCSSId } from \"./helpers\";\nimport type { DataTableComponentProps, DatatableColumnResizing, DataTableVirtual } from \"./DataTable\";\nimport type { ColumnVirtualizerState } from \"./hooks/useTableVirtualizer\";\nimport type { Header } from \"@tanstack/react-table\";\n\nexport type TableHeaderRowsProps<TData extends RowData> = {\n table: TanstackTableType<TData>;\n columnResizing?: DatatableColumnResizing;\n virtual?: DataTableVirtual;\n columnVirtual: ColumnVirtualizerState;\n components?: DataTableComponentProps<TData>;\n isResizing?: boolean;\n};\n\nfunction renderHeaderCell<TData extends RowData>(\n header: Header<TData, unknown>,\n headerGroup: { headers: Header<TData, unknown>[] },\n {\n columnResizing,\n virtual,\n components,\n table\n }: Pick<TableHeaderRowsProps<TData>, \"columnResizing\" | \"virtual\" | \"components\"> & {\n table: TanstackTableType<TData>;\n },\n rowSpan?: number\n) {\n const { classes, style } = getColumnPinningStyles(header.column);\n const useColumnSizing =\n header.column.columnDef?.meta?.useColumnSizing ??\n columnResizing?.enabled ??\n virtual?.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 = headerGroup.headers.length;\n const showSeparator =\n header.index !== headerGroupLength - 1 &&\n !isLastLeftPinnedColumn &&\n !isFirstRightPinnedColumn &&\n (!header.isPlaceholder || !nextHeader.isPlaceholder);\n\n return (\n <TableHead\n data-testid={`table-head-${header.id}`}\n key={header.id}\n colSpan={header.colSpan}\n rowSpan={rowSpan}\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:\n useColumnSizing ?\n `calc(var(--header-${toCSSId(header.id)}-size, ${header.getSize()}) * 1px)`\n : 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 || rowSpan ?\n flexRender(header.column.columnDef.header, header.getContext())\n : null}\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\nexport const TableHeaderRows = <TData extends RowData>({\n table,\n columnResizing,\n virtual,\n columnVirtual,\n components\n}: TableHeaderRowsProps<TData>) => {\n const cellProps = { columnResizing, virtual, components, table };\n const centerLeafCols = columnVirtual.enabled ? table.getCenterVisibleLeafColumns() : [];\n\n const totalGroups = table.getHeaderGroups().length;\n const spannedIds = new Set<string>();\n\n const resolveHeaderCell = (\n header: Header<TData, unknown>,\n headerGroup: { headers: Header<TData, unknown>[] },\n groupIndex: number\n ) => {\n if (spannedIds.has(header.column.id)) return null;\n const remainingRows = totalGroups - groupIndex;\n if (header.isPlaceholder && header.column.columnDef.meta?.spanRows && remainingRows > 1) {\n spannedIds.add(header.column.id);\n return renderHeaderCell(header, headerGroup, cellProps, remainingRows);\n }\n return renderHeaderCell(header, headerGroup, cellProps);\n };\n\n return (\n <>\n {table.getHeaderGroups().map((headerGroup, groupIndex) => {\n if (!columnVirtual.enabled) {\n return (\n <TableRow key={headerGroup.id}>\n {headerGroup.headers.map((header) => resolveHeaderCell(header, headerGroup, groupIndex))}\n </TableRow>\n );\n }\n\n const leftHeaders = table.getLeftHeaderGroups()[groupIndex]?.headers ?? [];\n const centerHeaders = table.getCenterHeaderGroups()[groupIndex]?.headers ?? [];\n const rightHeaders = table.getRightHeaderGroups()[groupIndex]?.headers ?? [];\n\n const isLeafLevel = !centerHeaders[0] || !centerHeaders.some((h) => h.subHeaders.length > 0);\n\n if (isLeafLevel) {\n return (\n <TableRow key={headerGroup.id}>\n {leftHeaders.map((header) => resolveHeaderCell(header, headerGroup, groupIndex))}\n {columnVirtual.virtualPaddingLeft > 0 && (\n <th aria-hidden=\"true\" style={{ width: columnVirtual.virtualPaddingLeft }} />\n )}\n {columnVirtual.virtualColumns.map((vc) => {\n const header = centerHeaders[vc.index];\n if (!header) return null;\n return resolveHeaderCell(header, headerGroup, groupIndex);\n })}\n {columnVirtual.virtualPaddingRight > 0 && (\n <th aria-hidden=\"true\" style={{ width: columnVirtual.virtualPaddingRight }} />\n )}\n {rightHeaders.map((header) => resolveHeaderCell(header, headerGroup, groupIndex))}\n </TableRow>\n );\n }\n\n const leafToGroupIdx: number[] = [];\n let leafRunning = 0;\n for (let gi = 0; gi < centerHeaders.length; gi++) {\n for (let i = 0; i < centerHeaders[gi].colSpan; i++) {\n leafToGroupIdx[leafRunning + i] = gi;\n }\n leafRunning += centerHeaders[gi].colSpan;\n }\n\n const virtualCols = columnVirtual.virtualColumns;\n\n // Collapse consecutive virtual columns that share the same group header into\n // a single <th colSpan={N}>, mirroring the non-virtual path's natural colSpan.\n const groupedVirtualCols: { gi: number; vcs: typeof virtualCols }[] = [];\n for (const vc of virtualCols) {\n const gi = leafToGroupIdx[vc.index];\n if (gi === undefined) continue;\n const last = groupedVirtualCols[groupedVirtualCols.length - 1];\n if (last && last.gi === gi) {\n last.vcs.push(vc);\n } else {\n groupedVirtualCols.push({ gi, vcs: [vc] });\n }\n }\n\n return (\n <TableRow key={headerGroup.id}>\n {leftHeaders.map((header) => resolveHeaderCell(header, headerGroup, groupIndex))}\n {columnVirtual.virtualPaddingLeft > 0 && (\n <th aria-hidden=\"true\" style={{ width: columnVirtual.virtualPaddingLeft }} />\n )}\n {groupedVirtualCols.map(({ gi, vcs }) => {\n const groupHeader = centerHeaders[gi];\n if (spannedIds.has(groupHeader.column.id)) return null;\n const remainingRows = totalGroups - groupIndex;\n let rowSpan: number | undefined;\n if (\n groupHeader.isPlaceholder &&\n groupHeader.column.columnDef.meta?.spanRows &&\n remainingRows > 1\n ) {\n rowSpan = remainingRows;\n spannedIds.add(groupHeader.column.id);\n }\n const { classes, style } = getColumnPinningStyles(groupHeader.column);\n const tableHeadCellProps =\n typeof components?.tableHeadCellProps === \"function\" ?\n components.tableHeadCellProps({ header: groupHeader, table })\n : components?.tableHeadCellProps;\n const useColumnSizing =\n groupHeader.column.columnDef?.meta?.useColumnSizing ??\n columnResizing?.enabled ??\n virtual?.enabled ??\n false;\n const widthCalc =\n useColumnSizing ?\n `calc((${vcs.map((vc) => `var(--col-${toCSSId(centerLeafCols[vc.index].id)}-size, ${centerLeafCols[vc.index].getSize()})`).join(\" + \")}) * 1px)`\n : undefined;\n const nextCenterHeader = centerHeaders[gi + 1];\n const showSeparator =\n groupHeader.column.columnDef?.meta?.columnSeparatorProps?.show ??\n components?.columnSeparatorProps?.headerCell?.show ??\n (gi !== centerHeaders.length - 1 &&\n (!groupHeader.isPlaceholder || !nextCenterHeader?.isPlaceholder));\n return (\n <TableHead\n data-testid={`table-head-${groupHeader.column.id}`}\n key={`${groupHeader.id}-${vcs[0].index}`}\n colSpan={vcs.length}\n rowSpan={rowSpan}\n {...tableHeadCellProps}\n {...groupHeader.column.columnDef?.meta?.headerProps}\n className={cn(\n classes,\n tableHeadCellProps?.className,\n groupHeader.column.columnDef?.meta?.headerProps?.className\n )}\n style={{\n ...style,\n width: widthCalc,\n minWidth: useColumnSizing ? groupHeader.column.columnDef.minSize : undefined,\n maxWidth: useColumnSizing ? groupHeader.column.columnDef.maxSize : undefined,\n ...tableHeadCellProps?.style,\n ...groupHeader.column.columnDef?.meta?.headerProps?.style\n }}\n >\n {!groupHeader.isPlaceholder || rowSpan ?\n flexRender(groupHeader.column.columnDef.header, groupHeader.getContext())\n : null}\n <ColumnSeparator\n {...components?.columnSeparatorProps?.headerCell}\n {...groupHeader.column.columnDef?.meta?.columnSeparatorProps}\n show={showSeparator}\n />\n <ColumnResizer header={groupHeader} {...components?.columnResizerProps} />\n </TableHead>\n );\n })}\n {columnVirtual.virtualPaddingRight > 0 && (\n <th aria-hidden=\"true\" style={{ width: columnVirtual.virtualPaddingRight }} />\n )}\n {rightHeaders.map((header) => resolveHeaderCell(header, headerGroup, groupIndex))}\n </TableRow>\n );\n })}\n </>\n );\n};\n\nexport const MemoizedTableHeaderRows = React.memo(\n TableHeaderRows,\n (_, next) => next.isResizing === true\n) as typeof TableHeaderRows;\n","import React from \"react\";\nimport type { Table as TanstackTableType, Column, RowData } from \"@tanstack/react-table\";\nimport { TableCell, TableRow } from \"../ui/table\";\nimport { cn } from \"../../utils\";\nimport { getColumnPinningStyles, toCSSId } from \"./helpers\";\nimport type { DataTableComponentProps, DatatableColumnResizing, DataTableVirtual } from \"./DataTable\";\nimport type { ColumnVirtualizerState } from \"./hooks/useTableVirtualizer\";\n\nexport type TableFilterRowProps<TData extends RowData> = {\n table: TanstackTableType<TData>;\n filterableColumns: Column<TData, any>[];\n isSomeColumnsFilterable: boolean;\n columnResizing?: DatatableColumnResizing;\n virtual?: DataTableVirtual;\n columnVirtual: ColumnVirtualizerState;\n components?: DataTableComponentProps<TData>;\n isResizing?: boolean;\n};\n\nfunction renderFilterCell<TData extends RowData>(\n column: Column<TData, any>,\n {\n columnResizing,\n virtual,\n components,\n table\n }: Pick<TableFilterRowProps<TData>, \"columnResizing\" | \"virtual\" | \"components\"> & {\n table: TanstackTableType<TData>;\n }\n) {\n const { classes, style } = getColumnPinningStyles(column);\n const useColumnSizing =\n column.columnDef.meta?.useColumnSizing ?? columnResizing?.enabled ?? virtual?.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:\n useColumnSizing ?\n `calc(var(--col-${toCSSId(column.id)}-size, ${column.getSize()}) * 1px)`\n : 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\nexport const TableFilterRow = <TData extends RowData>({\n table,\n filterableColumns,\n isSomeColumnsFilterable,\n columnResizing,\n virtual,\n columnVirtual,\n components\n}: TableFilterRowProps<TData>) => {\n if (!isSomeColumnsFilterable) return null;\n\n const cellProps = { columnResizing, virtual, components, table };\n\n if (!columnVirtual.enabled) {\n return (\n <TableRow data-testid=\"table-filter-row\">\n {filterableColumns.map((column) => renderFilterCell(column, cellProps))}\n </TableRow>\n );\n }\n\n const centerColumns = table.getCenterVisibleLeafColumns();\n const leftColumns = filterableColumns.filter((col) => col.getIsPinned() === \"left\");\n const centerFilterColumns = filterableColumns.filter((col) => !col.getIsPinned());\n const rightColumns = filterableColumns.filter((col) => col.getIsPinned() === \"right\");\n\n const centerColumnIndexMap = new Map(centerColumns.map((col, i) => [col.id, i]));\n const virtualIndexSet = new Set(columnVirtual.virtualColumns.map((vc) => vc.index));\n\n return (\n <TableRow data-testid=\"table-filter-row\">\n {leftColumns.map((column) => renderFilterCell(column, cellProps))}\n {columnVirtual.virtualPaddingLeft > 0 && (\n <td aria-hidden=\"true\" style={{ width: columnVirtual.virtualPaddingLeft }} />\n )}\n {centerFilterColumns\n .filter((col) => virtualIndexSet.has(centerColumnIndexMap.get(col.id) ?? -1))\n .map((column) => renderFilterCell(column, cellProps))}\n {columnVirtual.virtualPaddingRight > 0 && (\n <td aria-hidden=\"true\" style={{ width: columnVirtual.virtualPaddingRight }} />\n )}\n {rightColumns.map((column) => renderFilterCell(column, cellProps))}\n </TableRow>\n );\n};\n\nexport const MemoizedTableFilterRow = React.memo(\n TableFilterRow,\n (_, next) => next.isResizing === true\n) as typeof TableFilterRow;\n","import React from \"react\";\nimport {\n flexRender,\n type Table as TanstackTableType,\n type Row,\n type RowData\n} from \"@tanstack/react-table\";\nimport type { VirtualItem, Virtualizer } from \"@tanstack/react-virtual\";\nimport { TableCell, TableRow } from \"../ui/table\";\nimport { cn } from \"../../utils\";\nimport { getColumnPinningStyles, getRowClickHandlers, toCSSId } from \"./helpers\";\nimport type {\n DataTableComponentProps,\n DatatableColumnResizing,\n DataTableVirtual,\n DataTableRowClickHandler\n} from \"./DataTable\";\nimport type { ColumnVirtualizerState } from \"./hooks/useTableVirtualizer\";\n\nexport type TableDataRowsProps<TData extends RowData> = {\n table: TanstackTableType<TData>;\n rowModel: Row<TData>[];\n virtualEnabled: boolean;\n virtualItems: VirtualItem[];\n virtualizer: Virtualizer<HTMLDivElement, Element>;\n paddingTop: number;\n paddingBottom: number;\n visibleColumnCount: number;\n columnResizing?: DatatableColumnResizing;\n virtual?: DataTableVirtual;\n columnVirtual: ColumnVirtualizerState;\n onRowClick?: DataTableRowClickHandler<TData>;\n components?: DataTableComponentProps<TData>;\n isResizing?: boolean;\n};\n\ntype RenderConfig<TData extends RowData> =\n | {\n items: VirtualItem[];\n isVirtualize: true;\n rowModel: Row<TData>[];\n }\n | {\n items: Row<TData>[];\n isVirtualize: false;\n };\n\nexport const TableDataRows = <TData extends RowData>({\n table,\n rowModel,\n virtualEnabled,\n virtualItems,\n virtualizer,\n paddingTop,\n paddingBottom,\n visibleColumnCount,\n columnResizing,\n virtual,\n columnVirtual,\n onRowClick,\n components\n}: TableDataRowsProps<TData>) => {\n const config: RenderConfig<TData> =\n virtualEnabled ?\n { items: virtualItems, isVirtualize: true, rowModel }\n : { items: rowModel, isVirtualize: false };\n\n return (\n <>\n {virtualEnabled && paddingTop > 0 && (\n <TableRow aria-hidden=\"true\" data-testid=\"table-virtual-padding-top\">\n <TableCell\n className=\"border-b-0 p-0 h-auto\"\n colSpan={visibleColumnCount}\n style={{ height: `${paddingTop}px` }}\n />\n </TableRow>\n )}\n\n {config.items.map((item) => {\n const row = (config.isVirtualize ? config.rowModel[item.index] : item) as Row<TData>;\n if (!row) return null;\n\n const virtualIndex = config.isVirtualize ? item.index : undefined;\n\n const tableDataRowProps =\n typeof components?.tableDataRowProps === \"function\" ?\n components.tableDataRowProps({ row, table }) || {}\n : components?.tableDataRowProps || {};\n\n const renderCell = (cell: ReturnType<Row<TData>[\"getVisibleCells\"]>[number]) => {\n const { classes, style } = getColumnPinningStyles(cell.column);\n const useColumnSizing =\n cell.column.columnDef.meta?.useColumnSizing ??\n columnResizing?.enabled ??\n virtual?.enabled ??\n 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-sus-primary-3-hover transition-colors duration-150\":\n !row.getIsSelected()\n },\n classes,\n tableDataCellProps?.className,\n cell.column.columnDef?.meta?.cellProps?.className\n )}\n style={{\n ...style,\n width:\n useColumnSizing ?\n `calc(var(--col-${toCSSId(cell.column.id)}-size, ${cell.column.getSize()}) * 1px)`\n : 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\n const rowContent =\n columnVirtual.enabled ?\n (() => {\n const leftCells = row.getLeftVisibleCells();\n const centerCells = row.getCenterVisibleCells();\n const rightCells = row.getRightVisibleCells();\n return (\n <>\n {leftCells.map(renderCell)}\n {columnVirtual.virtualPaddingLeft > 0 && (\n <td aria-hidden=\"true\" style={{ width: columnVirtual.virtualPaddingLeft }} />\n )}\n {columnVirtual.virtualColumns.map((vc) => {\n const cell = centerCells[vc.index];\n if (!cell) return null;\n return renderCell(cell);\n })}\n {columnVirtual.virtualPaddingRight > 0 && (\n <td aria-hidden=\"true\" style={{ width: columnVirtual.virtualPaddingRight }} />\n )}\n {rightCells.map(renderCell)}\n </>\n );\n })()\n : row.getVisibleCells().map(renderCell);\n\n return (\n <TableRow\n data-testid={`table-data-row-${row.id}`}\n data-index={virtualIndex}\n ref={config.isVirtualize ? (node) => virtualizer.measureElement(node) : undefined}\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 {rowContent}\n </TableRow>\n );\n })}\n\n {virtualEnabled && paddingBottom > 0 && (\n <TableRow aria-hidden=\"true\" data-testid=\"table-virtual-padding-bottom\">\n <TableCell\n className=\"border-b-0 p-0 h-auto\"\n colSpan={visibleColumnCount}\n style={{ height: `${paddingBottom}px` }}\n />\n </TableRow>\n )}\n </>\n );\n};\nexport const MemoizedTableDataRows = React.memo(\n TableDataRows,\n (_, next) => next.isResizing === true\n) as typeof TableDataRows;\n","import React from \"react\";\nimport { flexRender, type Table as TanstackTableType, type RowData } from \"@tanstack/react-table\";\nimport { TableHead, TableRow } from \"../ui/table\";\nimport ColumnResizer from \"./ColumnResizer\";\nimport ColumnSeparator from \"./ColumnSeparator\";\nimport { cn } from \"../../utils\";\nimport { getColumnPinningInfo, getColumnPinningStyles, toCSSId } from \"./helpers\";\nimport type { DataTableComponentProps, DatatableColumnResizing, DataTableVirtual } from \"./DataTable\";\nimport type { ColumnVirtualizerState } from \"./hooks/useTableVirtualizer\";\nimport type { Header } from \"@tanstack/react-table\";\n\nexport type TableFooterRowsProps<TData extends RowData> = {\n table: TanstackTableType<TData>;\n columnResizing?: DatatableColumnResizing;\n virtual?: DataTableVirtual;\n columnVirtual: ColumnVirtualizerState;\n components?: DataTableComponentProps<TData>;\n isResizing?: boolean;\n};\n\nfunction renderFooterCell<TData extends RowData>(\n footer: Header<TData, unknown>,\n footerGroup: { headers: Header<TData, unknown>[] },\n {\n columnResizing,\n virtual,\n components,\n table\n }: Pick<TableFooterRowsProps<TData>, \"columnResizing\" | \"virtual\" | \"components\"> & {\n table: TanstackTableType<TData>;\n },\n rowSpan?: number\n) {\n const { classes, style } = getColumnPinningStyles(footer.column);\n const useColumnSizing =\n footer.column.columnDef?.meta?.useColumnSizing ??\n columnResizing?.enabled ??\n virtual?.enabled ??\n false;\n\n const tableFooterCellProps =\n typeof components?.tableFooterCellProps === \"function\" ?\n components.tableFooterCellProps({ footer, table })\n : components?.tableFooterCellProps;\n\n const nextFooter = footerGroup.headers[footer.index + 1] ?? footer;\n const { isLastLeftPinnedColumn } = getColumnPinningInfo(footer.column);\n const { isFirstRightPinnedColumn } = getColumnPinningInfo(nextFooter.column);\n const footerGroupLength = footerGroup.headers.length;\n const showSeparator =\n footer.index !== footerGroupLength - 1 &&\n !isLastLeftPinnedColumn &&\n !isFirstRightPinnedColumn &&\n (!footer.isPlaceholder || !nextFooter.isPlaceholder);\n\n return (\n <TableHead\n data-testid={`footer-cell-${footer.id}`}\n key={footer.id}\n colSpan={footer.colSpan}\n rowSpan={rowSpan}\n {...tableFooterCellProps}\n {...footer.column.columnDef?.meta?.footerProps}\n className={cn(\n classes,\n tableFooterCellProps?.className,\n footer.column.columnDef?.meta?.footerProps?.className\n )}\n style={{\n ...style,\n width:\n useColumnSizing ?\n `calc(var(--col-${toCSSId(footer.column.id)}-size, ${footer.column.getSize()}) * 1px)`\n : undefined,\n minWidth: useColumnSizing ? footer.column.columnDef.minSize : undefined,\n maxWidth: useColumnSizing ? footer.column.columnDef.maxSize : undefined,\n ...tableFooterCellProps?.style,\n ...footer.column.columnDef?.meta?.footerProps?.style\n }}\n >\n {footer.isPlaceholder ? null : flexRender(footer.column.columnDef.footer, footer.getContext())}\n <ColumnSeparator\n {...components?.columnSeparatorProps?.headerCell}\n {...footer.column.columnDef?.meta?.columnSeparatorProps}\n show={\n footer.column.columnDef?.meta?.columnSeparatorProps?.show ??\n components?.columnSeparatorProps?.headerCell?.show ??\n showSeparator\n }\n />\n {!footer.isPlaceholder && <ColumnResizer header={footer} {...components?.columnResizerProps} />}\n </TableHead>\n );\n}\n\nexport const TableFooterRows = <TData extends RowData>({\n table,\n columnResizing,\n virtual,\n columnVirtual,\n components\n}: TableFooterRowsProps<TData>) => {\n const cellProps = { columnResizing, virtual, components, table };\n const centerLeafCols = columnVirtual.enabled ? table.getCenterVisibleLeafColumns() : [];\n\n const totalFooterGroups = table.getFooterGroups().length;\n const spannedIds = new Set<string>();\n\n const resolveFooterCell = (\n footer: Header<TData, unknown>,\n footerGroup: { headers: Header<TData, unknown>[] },\n groupIndex: number\n ) => {\n if (spannedIds.has(footer.column.id)) return null;\n const remainingRows = totalFooterGroups - groupIndex;\n if (!footer.isPlaceholder && footer.column.columnDef.meta?.spanRows && remainingRows > 1) {\n spannedIds.add(footer.column.id);\n return renderFooterCell(footer, footerGroup, cellProps, remainingRows);\n }\n return renderFooterCell(footer, footerGroup, cellProps);\n };\n\n return (\n <>\n {table.getFooterGroups().map((footerGroup, groupIndex) => {\n const tableFooterRowProps =\n typeof components?.tableFooterRowProps === \"function\" ?\n components.tableFooterRowProps({ footerGroup, table })\n : components?.tableFooterRowProps;\n\n if (!columnVirtual.enabled) {\n return (\n <TableRow key={footerGroup.id} {...tableFooterRowProps}>\n {footerGroup.headers.map((footer) => resolveFooterCell(footer, footerGroup, groupIndex))}\n </TableRow>\n );\n }\n\n const leftFooters = table.getLeftFooterGroups()[groupIndex]?.headers ?? [];\n const centerFooters = table.getCenterFooterGroups()[groupIndex]?.headers ?? [];\n const rightFooters = table.getRightFooterGroups()[groupIndex]?.headers ?? [];\n\n const isLeafLevel = !centerFooters[0] || centerFooters[0].subHeaders.length === 0;\n\n if (isLeafLevel) {\n return (\n <TableRow key={footerGroup.id} {...tableFooterRowProps}>\n {leftFooters.map((footer) => resolveFooterCell(footer, footerGroup, groupIndex))}\n {columnVirtual.virtualPaddingLeft > 0 && (\n <th aria-hidden=\"true\" style={{ width: columnVirtual.virtualPaddingLeft }} />\n )}\n {columnVirtual.virtualColumns.map((vc) => {\n const footer = centerFooters[vc.index];\n if (!footer) return null;\n return renderFooterCell(footer, footerGroup, cellProps);\n })}\n {columnVirtual.virtualPaddingRight > 0 && (\n <th aria-hidden=\"true\" style={{ width: columnVirtual.virtualPaddingRight }} />\n )}\n {rightFooters.map((footer) => resolveFooterCell(footer, footerGroup, groupIndex))}\n </TableRow>\n );\n }\n\n // Group level: render one cell per virtual leaf column to match leaf row structure.\n const leafToGroupIdx: number[] = [];\n let leafRunning = 0;\n for (let gi = 0; gi < centerFooters.length; gi++) {\n for (let i = 0; i < centerFooters[gi].colSpan; i++) {\n leafToGroupIdx[leafRunning + i] = gi;\n }\n leafRunning += centerFooters[gi].colSpan;\n }\n\n const virtualCols = columnVirtual.virtualColumns;\n const useColumnSizing = columnResizing?.enabled ?? virtual?.enabled ?? false;\n\n return (\n <TableRow key={footerGroup.id} {...tableFooterRowProps}>\n {leftFooters.map((footer) => resolveFooterCell(footer, footerGroup, groupIndex))}\n {columnVirtual.virtualPaddingLeft > 0 && (\n <th aria-hidden=\"true\" style={{ width: columnVirtual.virtualPaddingLeft }} />\n )}\n {virtualCols.map((vc, vcIdx) => {\n const gi = leafToGroupIdx[vc.index];\n if (gi === undefined) return null;\n const groupFooter = centerFooters[gi];\n const leafCol = centerLeafCols[vc.index];\n const isFirst = vcIdx === 0 || leafToGroupIdx[virtualCols[vcIdx - 1].index] !== gi;\n const isLast =\n vcIdx === virtualCols.length - 1 || leafToGroupIdx[virtualCols[vcIdx + 1].index] !== gi;\n const { classes, style } = getColumnPinningStyles(groupFooter.column);\n const tableFooterCellProps =\n typeof components?.tableFooterCellProps === \"function\" ?\n components.tableFooterCellProps({ footer: groupFooter, table })\n : components?.tableFooterCellProps;\n return (\n <TableHead\n key={`${groupFooter.id}-${leafCol.id}`}\n colSpan={1}\n {...tableFooterCellProps}\n {...groupFooter.column.columnDef?.meta?.footerProps}\n className={cn(\n classes,\n tableFooterCellProps?.className,\n groupFooter.column.columnDef?.meta?.footerProps?.className\n )}\n style={{\n ...style,\n width:\n useColumnSizing ?\n `calc(var(--col-${toCSSId(leafCol.id)}-size, ${leafCol.getSize()}) * 1px)`\n : undefined,\n ...tableFooterCellProps?.style,\n ...groupFooter.column.columnDef?.meta?.footerProps?.style\n }}\n >\n {isFirst && !groupFooter.isPlaceholder ?\n flexRender(groupFooter.column.columnDef.footer, groupFooter.getContext())\n : null}\n <ColumnSeparator {...components?.columnSeparatorProps?.headerCell} show={isLast} />\n </TableHead>\n );\n })}\n {columnVirtual.virtualPaddingRight > 0 && (\n <th aria-hidden=\"true\" style={{ width: columnVirtual.virtualPaddingRight }} />\n )}\n {rightFooters.map((footer) => resolveFooterCell(footer, footerGroup, groupIndex))}\n </TableRow>\n );\n })}\n </>\n );\n};\n\nexport const MemoizedTableFooterRows = React.memo(\n TableFooterRows,\n (_, next) => next.isResizing === true\n) as typeof TableFooterRows;\n","import React, { useMemo, useRef } from \"react\";\nimport {\n type Table as TanstackTableType,\n type Column,\n type RowData,\n type ColumnFiltersState,\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 TableFooter,\n TableHead,\n TableHeader,\n TableRow\n} from \"../ui/table\";\nimport StatusContentSlot, { type ContentSlot } from \"./StatusContentSlot\";\nimport DataTableDevTool from \"./DataTableDevTool\";\nimport { SuiEmptyDataIcon } from \"../icons\";\nimport { Spinner } from \"../ui/spinner\";\nimport { cn } from \"../../utils\";\nimport { useTableController } from \"./hooks/useTableController\";\nimport { useScrollFetch } from \"./hooks/useScrollFetch\";\nimport { useTableVirtualizer } from \"./hooks/useTableVirtualizer\";\nexport type { ColumnVirtualizerState } from \"./hooks/useTableVirtualizer\";\nimport { useComputedTableState } from \"./hooks/useComputedTableState\";\nimport { MemoizedTableHeaderRows } from \"./TableHeaderRows\";\nimport { MemoizedTableFilterRow } from \"./TableFilterRow\";\nimport { MemoizedTableDataRows } from \"./TableDataRows\";\nimport { type ColumnSeparatorProps } from \"./ColumnSeparator\";\nimport { ColumnResizerProps } from \"./ColumnResizer\";\nimport { useBindRef } from \"@/hooks\";\nimport { toCSSId } from \"./helpers\";\nimport { Virtualizer as TanstackVirtualizerType } from \"@tanstack/react-virtual\";\nimport { MemoizedTableFooterRows } from \"./TableFooterRows\";\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 DataTableVirtual = {\n enabled: boolean;\n overscan?: number;\n columns?: {\n enabled: boolean;\n overscan?: number;\n };\n};\n\nexport type Virtualizer = TanstackVirtualizerType<HTMLDivElement, Element>;\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 tableFooterProps?: React.ComponentProps<typeof TableFooter>;\n tableFooterRowProps?:\n | React.ComponentProps<typeof TableRow>\n | ((info: {\n footerGroup: HeaderGroup<TData>;\n table: TanstackTableType<TData>;\n }) => React.ComponentProps<typeof TableRow>);\n tableFooterCellProps?:\n | React.ComponentProps<typeof TableHead>\n | ((info: {\n footer: Header<TData, unknown>;\n table: TanstackTableType<TData>;\n }) => React.ComponentProps<typeof TableHead>);\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 virtual?: DataTableVirtual;\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 virtualizerRef?: React.RefObject<Virtualizer>;\n columnVirtualizerRef?: React.RefObject<Virtualizer>;\n isInitialLoading?: boolean;\n debug?: boolean;\n rowIdKey?: DataTableRowIdKeyHandler<TData>;\n childrenKey?: DataTableChildrenKeyHandler<TData>;\n onRowClick?: DataTableRowClickHandler<TData>;\n};\n\nconst DataTable = <TData extends RowData>({\n tableRef,\n virtualizerRef,\n columnVirtualizerRef,\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 virtual,\n scrollFetch,\n activeStatusContent,\n statusContent,\n rowIdKey,\n childrenKey,\n onRowClick,\n debug,\n components\n}: DataTableProps<TData>) => {\n const virtualEnabled = virtual?.enabled ?? false;\n const tableContainerRef = useRef<HTMLDivElement | null>(null);\n\n const table = useTableController<TData>({\n columns,\n data,\n filters,\n sorting,\n columnOrder,\n columnVisibility,\n columnPinning,\n columnGrouping,\n columnResizing,\n rowSelection,\n rowExpansion,\n rowIdKey,\n childrenKey\n });\n\n const {\n virtualizer,\n columnVirtualizer,\n virtualItems,\n paddingTop,\n paddingBottom,\n rowModel,\n columnVirtual\n } = useTableVirtualizer<TData>({\n enabled: virtualEnabled,\n table,\n containerRef: tableContainerRef,\n virtual\n });\n\n const { visibleColumnCount, isSomeColumnsFilterable, filterableColumns, activeStatusContentComputed } =\n useComputedTableState<TData>({\n table,\n rowModel,\n isInitialLoading,\n scrollFetch,\n activeStatusContent\n });\n\n const fetchMoreOnScrollReached = useScrollFetch({ scrollFetch, containerRef: tableContainerRef });\n\n const columnResizingEnabled = columnResizing?.enabled;\n const { columnSizing, columnSizingInfo } = table.getState();\n\n const columnSizeVars = useMemo(() => {\n if (!columnResizingEnabled && !virtualEnabled) return {};\n const headers = table.getFlatHeaders();\n const colSizes: Record<string, number> = {};\n for (const header of headers) {\n colSizes[`--header-${toCSSId(header.id)}-size`] = header.getSize();\n colSizes[`--col-${toCSSId(header.column.id)}-size`] = header.column.getSize();\n if (header.column.getIsPinned() === \"left\") {\n colSizes[`--col-${toCSSId(header.column.id)}-pin-start`] = header.column.getStart(\"left\");\n } else if (header.column.getIsPinned() === \"right\") {\n colSizes[`--col-${toCSSId(header.column.id)}-pin-after`] = header.column.getAfter(\"right\");\n }\n }\n return colSizes;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [columnSizing, columnSizingInfo, columnResizingEnabled, virtualEnabled]);\n\n const isResizing =\n !columnVirtual.enabled && (columnResizingEnabled ?? false) && !!columnSizingInfo.isResizingColumn;\n\n const hasAnyFooter = table.getAllColumns().some((col) => col.columnDef.footer != null);\n\n useBindRef<TanstackTableType<TData>>({ ref: tableRef, value: table });\n useBindRef<Virtualizer>({ ref: virtualizerRef, value: virtualizer });\n useBindRef<Virtualizer>({ ref: columnVirtualizerRef, value: columnVirtualizer });\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\n {...components?.tableProps}\n style={{\n tableLayout: virtualEnabled ? \"fixed\" : \"auto\",\n minWidth: columnVirtual.enabled ? `${table.getTotalSize()}px` : undefined,\n ...components?.tableProps?.style,\n ...columnSizeVars\n }}\n >\n {/* header */}\n <TableHeader\n className={cn(\"sticky top-0 z-10 bg-white\", components?.tableHeaderProps?.className)}\n {...components?.tableHeaderProps}\n >\n <MemoizedTableHeaderRows\n table={table}\n columnResizing={columnResizing}\n virtual={virtual}\n columnVirtual={columnVirtual}\n components={components}\n isResizing={isResizing}\n />\n <MemoizedTableFilterRow\n table={table}\n filterableColumns={filterableColumns}\n isSomeColumnsFilterable={isSomeColumnsFilterable}\n columnResizing={columnResizing}\n virtual={virtual}\n columnVirtual={columnVirtual}\n components={components}\n isResizing={isResizing}\n />\n </TableHeader>\n\n {/* data rows */}\n <TableBody {...components?.tableBodyProps}>\n <MemoizedTableDataRows\n table={table}\n rowModel={rowModel}\n virtualEnabled={virtualEnabled}\n virtualItems={virtualItems}\n virtualizer={virtualizer}\n paddingTop={paddingTop}\n paddingBottom={paddingBottom}\n visibleColumnCount={visibleColumnCount}\n columnResizing={columnResizing}\n virtual={virtual}\n columnVirtual={columnVirtual}\n onRowClick={onRowClick}\n components={components}\n isResizing={isResizing}\n />\n {activeStatusContentComputed === \"emptyFilteredData\" && (\n <TableRow data-testid=\"status-row-empty-filtered-data\">\n <TableCell colSpan={visibleColumnCount} className=\"border-b-0 p-0\">\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: \"flex flex-col 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 </TableCell>\n </TableRow>\n )}\n {activeStatusContentComputed === \"fetchingMore\" && (\n <TableRow data-testid=\"status-row-fetching-more\">\n <TableCell colSpan={visibleColumnCount} className=\"border-b-0 p-0\">\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 </TableCell>\n </TableRow>\n )}\n {activeStatusContentComputed === \"noMoreData\" && (\n <TableRow data-testid=\"status-row-no-more-data\">\n <TableCell colSpan={visibleColumnCount} className=\"border-b-0 p-0\">\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 </TableCell>\n </TableRow>\n )}\n </TableBody>\n {hasAnyFooter && (\n <TableFooter\n {...components?.tableFooterProps}\n className={cn(\"sticky bottom-0 z-10 bg-white\", components?.tableFooterProps?.className)}\n >\n <MemoizedTableFooterRows\n table={table}\n columnResizing={columnResizing}\n virtual={virtual}\n columnVirtual={columnVirtual}\n components={components}\n isResizing={isResizing}\n />\n </TableFooter>\n )}\n </Table>\n </>\n }\n\n {/* devtool */}\n {debug && <DataTableDevTool table={table} />}\n </TableContainer>\n );\n};\n\nexport default DataTable;\n","import React from \"react\";\nimport { format, isValid, parse, parseISO } from \"date-fns\";\n\nimport { Button } from \"@/components/ui/button\";\nimport { ClearButton } from \"@/components/ui/ClearButton\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { DatePicker as CalendarDatePicker } from \"@/components/ui/datepicker\";\nimport { SuiCalendarIcon2 } from \"@/components/icons\";\nimport { cn } from \"@/utils\";\n\nconst defaultValueFormatter = (date: Date) => format(date, \"yyyy-MM-dd'T'HH:mm:ss\");\n\nconst parseWithPatterns = (value: string): Date | undefined => {\n const patterns = [\"yyyy-MM-dd'T'HH:mm:ss\", \"yyyy-MM-dd HH:mm\", \"yyyy-MM-dd\"];\n\n for (const pattern of patterns) {\n const parsed = parse(value, pattern, new Date());\n if (isValid(parsed)) return parsed;\n }\n\n return undefined;\n};\n\nconst defaultValueParser = (value: string): Date | undefined => {\n const isoParsed = parseISO(value);\n if (isValid(isoParsed)) return isoParsed;\n\n return parseWithPatterns(value);\n};\n\ntype DatePickerOverrides = Omit<\n React.ComponentProps<typeof CalendarDatePicker>,\n \"selectionMode\" | \"selectedDate\" | \"onDateSelect\"\n>;\n\ntype TimePickerOverrides = {\n hourInputClassName?: string;\n minuteInputClassName?: string;\n panelClassName?: string;\n};\n\nexport interface DateTimePickerProps {\n value?: Date | string | null;\n onChange?: (value?: Date) => void;\n onValueChange?: (value?: string) => void;\n disabled?: boolean;\n invalid?: boolean;\n allowClear?: boolean;\n use24Hour?: boolean;\n placeholderDate?: string;\n placeholderTime?: string;\n className?: string;\n datePickerClassName?: string;\n timePickerClassName?: string;\n popoverContentClassName?: string;\n clearAriaLabel?: string;\n minuteStep?: number;\n minDateTime?: Date;\n maxDateTime?: Date;\n valueFormatter?: (date: Date) => string;\n valueParser?: (value: string) => Date | undefined;\n datePickerProps?: DatePickerOverrides;\n timePickerProps?: TimePickerOverrides;\n timeSelectionBehavior?: \"require-date\" | \"use-today\";\n}\n\nexport const DateTimePicker: React.FC<DateTimePickerProps> = ({\n value,\n onChange,\n onValueChange,\n disabled = false,\n invalid = false,\n allowClear = true,\n use24Hour = false,\n placeholderDate = \"Select date\",\n placeholderTime = \"Select time\",\n className,\n datePickerClassName,\n timePickerClassName,\n popoverContentClassName,\n clearAriaLabel = \"Clear date time\",\n minuteStep = 5,\n minDateTime,\n maxDateTime,\n valueFormatter,\n valueParser,\n datePickerProps,\n timePickerProps\n}) => {\n const [open, setOpen] = React.useState(false);\n const hourListRef = React.useRef<HTMLDivElement | null>(null);\n const minuteListRef = React.useRef<HTMLDivElement | null>(null);\n const parser = React.useMemo(() => valueParser ?? defaultValueParser, [valueParser]);\n const outputFormatter = React.useMemo(() => valueFormatter ?? defaultValueFormatter, [valueFormatter]);\n\n const parseInput = React.useCallback(\n (input?: Date | string | null) => {\n if (input === null || input === undefined) return undefined;\n if (input instanceof Date) return isValid(input) ? input : undefined;\n const parsed = parser(input);\n return parsed && isValid(parsed) ? parsed : undefined;\n },\n [parser]\n );\n\n const isControlled = value !== undefined;\n const parsedValue = React.useMemo(() => parseInput(value), [parseInput, value]);\n const [internalValue, setInternalValue] = React.useState<Date | undefined>(() => parsedValue);\n\n React.useEffect(() => {\n if (isControlled) {\n setInternalValue(parsedValue);\n }\n }, [isControlled, parsedValue]);\n\n const currentValue = isControlled ? parsedValue : internalValue;\n\n const emitChange = React.useCallback(\n (next?: Date) => {\n if (!isControlled) {\n setInternalValue(next);\n }\n onChange?.(next);\n onValueChange?.(next ? outputFormatter(next) : undefined);\n },\n [isControlled, onChange, onValueChange, outputFormatter]\n );\n\n const makeDateTime = React.useCallback((baseDate: Date, hour: number, minute: number) => {\n const clampedHour = Math.min(23, Math.max(0, hour));\n const clampedMinute = Math.min(59, Math.max(0, minute));\n\n return new Date(\n baseDate.getFullYear(),\n baseDate.getMonth(),\n baseDate.getDate(),\n clampedHour,\n clampedMinute,\n 0,\n 0\n );\n }, []);\n\n const handleDateChange = React.useCallback(\n (nextDate?: Date) => {\n if (!nextDate) {\n emitChange(undefined);\n return;\n }\n\n // Selecting a date always resets time to 00:00.\n emitChange(new Date(nextDate.getFullYear(), nextDate.getMonth(), nextDate.getDate(), 0, 0, 0, 0));\n },\n [emitChange]\n );\n\n const handleTimeApply = React.useCallback(\n (hour: number, minute: number) => {\n const baseDate = currentValue;\n if (!baseDate) return;\n\n emitChange(makeDateTime(baseDate, hour, minute));\n },\n [currentValue, emitChange, makeDateTime]\n );\n\n const currentHour = currentValue?.getHours();\n const currentMinute = currentValue?.getMinutes();\n\n const handleHourSelect = React.useCallback(\n (hour: number) => {\n handleTimeApply(hour, currentMinute ?? 0);\n },\n [currentMinute, handleTimeApply]\n );\n\n const handleMinuteSelect = React.useCallback(\n (minute: number) => {\n handleTimeApply(currentHour ?? 0, minute);\n setOpen(false);\n },\n [currentHour, handleTimeApply]\n );\n\n const hours = React.useMemo(() => Array.from({ length: 24 }, (_, index) => index), []);\n const minuteInterval = React.useMemo(() => {\n const safeStep = Math.min(60, Math.max(1, minuteStep));\n return Array.from({ length: Math.ceil(60 / safeStep) }, (_, index) => index * safeStep).filter(\n (value) => value < 60\n );\n }, [minuteStep]);\n\n const displayLabel = React.useMemo(() => {\n if (!currentValue) return `${placeholderDate} ${placeholderTime}`;\n return format(currentValue, use24Hour ? \"dd/MM/yyyy HH:mm\" : \"dd/MM/yyyy hh:mm a\");\n }, [currentValue, placeholderDate, placeholderTime, use24Hour]);\n\n const canSelectTime = !disabled && !!currentValue;\n\n const isHourDisabled = React.useCallback(\n (hour: number) => {\n if (!currentValue) return true;\n const testDateTime = new Date(\n currentValue.getFullYear(),\n currentValue.getMonth(),\n currentValue.getDate(),\n hour,\n 0,\n 0,\n 0\n );\n if (minDateTime && testDateTime < minDateTime) return true;\n if (maxDateTime && testDateTime > maxDateTime) return true;\n return false;\n },\n [currentValue, minDateTime, maxDateTime]\n );\n\n const isMinuteDisabled = React.useCallback(\n (minute: number) => {\n if (!currentValue || typeof currentHour === \"undefined\") return true;\n const testDateTime = new Date(\n currentValue.getFullYear(),\n currentValue.getMonth(),\n currentValue.getDate(),\n currentHour,\n minute,\n 0,\n 0\n );\n if (minDateTime && testDateTime < minDateTime) return true;\n if (maxDateTime && testDateTime > maxDateTime) return true;\n return false;\n },\n [currentValue, currentHour, minDateTime, maxDateTime]\n );\n\n const scrollToSelected = React.useCallback((container: HTMLDivElement | null, selector: string) => {\n if (!container) return;\n const element = container.querySelector<HTMLElement>(selector);\n if (!element) return;\n\n const target = element.offsetTop - container.clientHeight / 2 + element.clientHeight / 2;\n container.scrollTo({ top: Math.max(0, target), behavior: \"smooth\" });\n }, []);\n\n React.useEffect(() => {\n if (!open) return;\n\n if (typeof currentHour === \"number\") {\n scrollToSelected(hourListRef.current, `[data-hour=\"${currentHour}\"]`);\n }\n if (typeof currentMinute === \"number\") {\n scrollToSelected(minuteListRef.current, `[data-minute=\"${currentMinute}\"]`);\n }\n }, [currentHour, currentMinute, open, scrollToSelected]);\n\n const handleClear = React.useCallback(() => {\n emitChange(undefined);\n setOpen(false);\n }, [emitChange]);\n\n return (\n <div className={cn(\"relative w-full\", className)}>\n <Popover open={open} onOpenChange={setOpen}>\n <PopoverTrigger asChild>\n <Button\n type=\"button\"\n variant=\"outline\"\n disabled={disabled}\n aria-invalid={invalid || undefined}\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 currentValue ? \"text-gray-700\" : \"text-gray-400\",\n invalid &&\n \"border-destructive focus-visible:border-destructive focus-visible:ring-destructive/30\",\n allowClear && currentValue ? \"pr-8\" : \"pr-4\"\n )}\n >\n <span className=\"flex-1 truncate font-light\">{displayLabel}</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 <div className=\"sm:flex\">\n <CalendarDatePicker\n {...datePickerProps}\n className={cn(datePickerProps?.className, datePickerClassName)}\n selectionMode=\"single\"\n selectedDate={currentValue}\n onDateSelect={handleDateChange as any}\n minDate={minDateTime}\n maxDate={maxDateTime}\n />\n\n <div\n className={cn(\n \"flex border-t sm:border-t-0 sm:border-l p-2\",\n !canSelectTime && \"opacity-60\",\n timePickerClassName,\n timePickerProps?.panelClassName\n )}\n >\n <div className=\"flex w-full\">\n <div className=\"w-14 border-r pr-1\">\n <div ref={hourListRef} className=\"h-[300px] overflow-y-auto space-y-1\">\n {hours.map((hour) => {\n const selected = currentHour === hour;\n const hourDisabled = isHourDisabled(hour);\n return (\n <button\n key={hour}\n type=\"button\"\n data-hour={hour}\n disabled={!canSelectTime || hourDisabled}\n onClick={() => handleHourSelect(hour)}\n className={cn(\n \"h-8 w-full rounded-md text-sm transition-colors\",\n selected ?\n \"bg-[#379a2a] text-white hover:bg-[#379a2a]\"\n : \"text-foreground hover:bg-sus-secondary-gray-3\",\n (!canSelectTime || hourDisabled) && \"cursor-not-allowed opacity-50\"\n )}\n >\n {String(hour).padStart(2, \"0\")}\n </button>\n );\n })}\n </div>\n </div>\n\n <div className=\"w-14 pl-1\">\n <div ref={minuteListRef} className=\"h-[300px] overflow-y-auto space-y-1\">\n {minuteInterval.map((minute) => {\n const selected = currentMinute === minute;\n const minuteDisabled = isMinuteDisabled(minute);\n return (\n <button\n key={minute}\n type=\"button\"\n data-minute={minute}\n disabled={!canSelectTime || minuteDisabled}\n onClick={() => handleMinuteSelect(minute)}\n className={cn(\n \"h-8 w-full rounded-md text-sm transition-colors\",\n selected ?\n \"bg-[#379a2a] text-white hover:bg-[#379a2a]\"\n : \"text-foreground hover:bg-sus-secondary-gray-3\",\n (!canSelectTime || minuteDisabled) && \"cursor-not-allowed opacity-50\"\n )}\n >\n {String(minute).padStart(2, \"0\")}\n </button>\n );\n })}\n </div>\n </div>\n </div>\n </div>\n </div>\n </PopoverContent>\n </Popover>\n\n {allowClear && !!currentValue && !disabled && (\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 );\n};\n","\"use client\";\n\nimport * as React from \"react\";\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { X, 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 InternalDialogHeader({ 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\"\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 bg-background shadow-lg duration-200 sm:max-w-7xl\",\n className\n )}\n {...props}\n >\n {/* Header */}\n {header && <InternalDialogHeader>{header}</InternalDialogHeader>}\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\nfunction DialogCloseButton(props: React.ButtonHTMLAttributes<HTMLButtonElement>) {\n return (\n <button\n {...props}\n type=\"button\"\n aria-label=\"Close\"\n className={cn(\"absolute top-4 right-4\", props.className)}\n style={{\n background: \"none\",\n border: \"none\",\n padding: 0,\n cursor: \"pointer\",\n ...props?.style\n }}\n >\n <X className=\"w-6 h-6 text-white\" />\n </button>\n );\n}\n\nfunction DialogClose({ ...props }: React.ComponentProps<typeof DialogPrimitive.Close>) {\n return <DialogPrimitive.Close data-slot=\"dialog-close\" {...props} />;\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\n// ──────────────────────────────\n// Export\n// ──────────────────────────────\nexport {\n Dialog,\n DialogTrigger,\n DialogContent,\n DialogFooter,\n DialogTitle,\n DialogDescription,\n DialogCloseButton,\n DialogClose,\n DialogHeader\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","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 className=\"z-99\" />\n <DialogPrimitive.Content\n data-slot=\"dialog-content\"\n className={cn(\n \"z-100 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%] 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 const handleOpenChange = useCallback(\n (state: boolean) => {\n if (!state) {\n onCancel?.();\n }\n onOpenChange(state);\n },\n [onCancel, onOpenChange]\n );\n\n return (\n <BaseDialog open={open} onOpenChange={persistent ? () => {} : handleOpenChange}>\n <DialogContent\n className=\"max-w-md\"\n showCloseButton={!persistent}\n onInteractOutside={(e) => {\n e.preventDefault();\n }}\n >\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 \"confirm.set_default\": {\n variant: \"confirm\",\n title: \"confirm.set_default.title\",\n description: \"confirm.set_default.description\",\n confirmText: \"confirm.set_default.confirm_text\"\n },\n \"confirm.unset_default\": {\n variant: \"confirm\",\n title: \"confirm.unset_default.title\",\n description: \"confirm.unset_default.description\",\n confirmText: \"confirm.unset_default.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 \"confirm.set_default\": {\n title: \"Confirmation\",\n description: \"Set this item as the default?\",\n confirm_text: \"Confirm\"\n },\n \"confirm.unset_default\": {\n title: \"Confirmation\",\n description: \"Remove default status from this item?\",\n confirm_text: \"Confirm\"\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 \"./carousel\";\nexport * from \"./collapsible\";\nexport { default as ListContainer } from \"./container\";\nexport * from \"./container\";\nexport * from \"./datepicker\";\nexport * from \"./dialog\";\nexport * from \"./dropdownMenu\";\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 \"./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","\"use client\";\n\nimport * as React from \"react\";\nimport * as DropdownMenuPrimitive from \"@radix-ui/react-dropdown-menu\";\n\nimport { CheckIcon, ChevronRightIcon } from \"lucide-react\";\nimport { cn } from \"@/utils\";\n\nfunction DropdownMenu({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Root>) {\n return <DropdownMenuPrimitive.Root data-slot=\"dropdown-menu\" {...props} />;\n}\n\nfunction DropdownMenuPortal({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Portal>) {\n return <DropdownMenuPrimitive.Portal data-slot=\"dropdown-menu-portal\" {...props} />;\n}\n\nfunction DropdownMenuTrigger({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Trigger>) {\n return <DropdownMenuPrimitive.Trigger data-slot=\"dropdown-menu-trigger\" {...props} />;\n}\n\nfunction DropdownMenuContent({\n className,\n align = \"start\",\n sideOffset = 4,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Content>) {\n return (\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n data-slot=\"dropdown-menu-content\"\n sideOffset={sideOffset}\n align={align}\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 bg-popover text-popover-foreground min-w-32 rounded-lg p-1 shadow-md ring-1 duration-100 z-50 max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) origin-(--radix-dropdown-menu-content-transform-origin) overflow-x-hidden overflow-y-auto data-[state=closed]:overflow-hidden\",\n className\n )}\n {...props}\n />\n </DropdownMenuPrimitive.Portal>\n );\n}\n\nfunction DropdownMenuGroup({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Group>) {\n return <DropdownMenuPrimitive.Group data-slot=\"dropdown-menu-group\" {...props} />;\n}\n\nfunction DropdownMenuItem({\n className,\n inset,\n variant = \"default\",\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Item> & {\n inset?: boolean;\n variant?: \"default\" | \"destructive\";\n}) {\n return (\n <DropdownMenuPrimitive.Item\n data-slot=\"dropdown-menu-item\"\n data-inset={inset}\n data-variant={variant}\n className={cn(\n \"data-highlighted:bg-[#EAF5EE] data-highlighted:text-[#379A2A] focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/20 data-[variant=destructive]:focus:text-destructive data-[variant=destructive]:*:[svg]:text-destructive not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md px-3 py-2 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 group/dropdown-menu-item relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuCheckboxItem({\n className,\n children,\n checked,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.CheckboxItem> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.CheckboxItem\n data-slot=\"dropdown-menu-checkbox-item\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n checked={checked}\n {...props}\n >\n <span\n className=\"absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-checkbox-item-indicator\"\n >\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n}\n\nfunction DropdownMenuRadioGroup({\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioGroup>) {\n return <DropdownMenuPrimitive.RadioGroup data-slot=\"dropdown-menu-radio-group\" {...props} />;\n}\n\nfunction DropdownMenuRadioItem({\n className,\n children,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.RadioItem> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.RadioItem\n data-slot=\"dropdown-menu-radio-item\"\n data-inset={inset}\n className={cn(\n \"focus:bg-accent focus:text-accent-foreground focus:**:text-accent-foreground gap-1.5 rounded-md py-1 pr-8 pl-1.5 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 relative flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n <span\n className=\"absolute right-2 flex items-center justify-center pointer-events-none\"\n data-slot=\"dropdown-menu-radio-item-indicator\"\n >\n <DropdownMenuPrimitive.ItemIndicator>\n <CheckIcon />\n </DropdownMenuPrimitive.ItemIndicator>\n </span>\n {children}\n </DropdownMenuPrimitive.RadioItem>\n );\n}\n\nfunction DropdownMenuLabel({\n className,\n inset,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Label> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.Label\n data-slot=\"dropdown-menu-label\"\n data-inset={inset}\n className={cn(\"text-muted-foreground px-1.5 py-1 text-xs font-medium data-inset:pl-7\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.Separator>) {\n return (\n <DropdownMenuPrimitive.Separator\n data-slot=\"dropdown-menu-separator\"\n className={cn(\"bg-border -mx-1 my-1 h-px\", className)}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuShortcut({ className, ...props }: React.ComponentProps<\"span\">) {\n return (\n <span\n data-slot=\"dropdown-menu-shortcut\"\n className={cn(\n \"text-muted-foreground group-focus/dropdown-menu-item:text-accent-foreground ml-auto text-xs tracking-widest\",\n className\n )}\n {...props}\n />\n );\n}\n\nfunction DropdownMenuSub({ ...props }: React.ComponentProps<typeof DropdownMenuPrimitive.Sub>) {\n return <DropdownMenuPrimitive.Sub data-slot=\"dropdown-menu-sub\" {...props} />;\n}\n\nfunction DropdownMenuSubTrigger({\n className,\n inset,\n children,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubTrigger> & {\n inset?: boolean;\n}) {\n return (\n <DropdownMenuPrimitive.SubTrigger\n data-slot=\"dropdown-menu-sub-trigger\"\n data-inset={inset}\n className={cn(\n \"data-highlighted:bg-[#EAF5EE] data-highlighted:text-[#379A2A] focus:bg-accent focus:text-accent-foreground data-open:bg-accent data-open:text-accent-foreground not-data-[variant=destructive]:focus:**:text-accent-foreground gap-1.5 rounded-md px-3 py-2 text-sm data-inset:pl-7 [&_svg:not([class*='size-'])]:size-4 flex cursor-default items-center outline-hidden select-none data-disabled:pointer-events-none data-disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0\",\n className\n )}\n {...props}\n >\n {children}\n <ChevronRightIcon className=\"cn-rtl-flip ml-auto\" />\n </DropdownMenuPrimitive.SubTrigger>\n );\n}\n\nfunction DropdownMenuSubContent({\n className,\n ...props\n}: React.ComponentProps<typeof DropdownMenuPrimitive.SubContent>) {\n return (\n <DropdownMenuPrimitive.SubContent\n data-slot=\"dropdown-menu-sub-content\"\n className={cn(\n \"data-open:animate-in data-closed:animate-out data-closed:fade-out-0 data-open:fade-in-0 data-closed:zoom-out-95 data-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 ring-foreground/10 bg-popover text-popover-foreground min-w-24 rounded-lg p-1 shadow-lg ring-1 duration-100 z-50 origin-(--radix-dropdown-menu-content-transform-origin) max-h-(--radix-dropdown-menu-content-available-height) w-(--radix-dropdown-menu-trigger-width) overflow-x-hidden overflow-y-auto data-[state=closed]:overflow-hidden\",\n className\n )}\n {...props}\n />\n );\n}\n\nexport {\n DropdownMenu,\n DropdownMenuPortal,\n DropdownMenuTrigger,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuLabel,\n DropdownMenuItem,\n DropdownMenuCheckboxItem,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubTrigger,\n DropdownMenuSubContent\n};\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","\"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-sus-gray-1 focus-visible:border-ring focus-visible:ring-0 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 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","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 variant={\"cottonBlue\"}\n className=\"min-w-10 rounded-sm px-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 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 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 React from \"react\";\nimport { ChevronLeft, ChevronRight } from \"lucide-react\";\nimport { cn } from \"@/utils\";\nimport { Truncated } from \"@/components/truncated\";\n\nexport interface LocaleOption {\n locale: string;\n}\n\nexport interface LanguageSelectorProps<T extends LocaleOption = LocaleOption> {\n tenant: T[];\n selectedLocale?: string;\n onSelectLocale: (lang: T) => void;\n errorLocales?: string[];\n enableErrorHighlight?: boolean;\n sortLocales?: boolean;\n priorityLocale?: string;\n className?: string;\n visibleLocalesCount?: number;\n localeButtonWidth?: number;\n localeGap?: number;\n}\n\nexport function LanguageSelector<T extends LocaleOption = LocaleOption>({\n tenant,\n selectedLocale,\n onSelectLocale,\n errorLocales = [],\n enableErrorHighlight = false,\n sortLocales = true,\n priorityLocale = \"en\",\n className,\n visibleLocalesCount = 3,\n localeButtonWidth = 35,\n localeGap = 4\n}: LanguageSelectorProps<T>) {\n const orderedTenant = React.useMemo(() => {\n const normalizedPriority = priorityLocale.trim().toLowerCase();\n const localeAwareSorted =\n sortLocales ?\n [...tenant].sort((a, b) =>\n a.locale.localeCompare(b.locale, undefined, { sensitivity: \"base\", numeric: true })\n )\n : [...tenant];\n\n if (!normalizedPriority) {\n return localeAwareSorted;\n }\n\n return localeAwareSorted.sort((a, b) => {\n const aIsPriority = a.locale.toLowerCase() === normalizedPriority;\n const bIsPriority = b.locale.toLowerCase() === normalizedPriority;\n\n if (aIsPriority && !bIsPriority) return -1;\n if (!aIsPriority && bIsPriority) return 1;\n return 0;\n });\n }, [priorityLocale, sortLocales, tenant]);\n\n const selectedIndex = orderedTenant.findIndex((t) => t.locale === selectedLocale);\n const currentIndex = selectedIndex >= 0 ? selectedIndex : 0;\n\n const isFirst = currentIndex <= 0;\n const isLast = currentIndex >= orderedTenant.length - 1;\n const safeVisibleCount = Math.min(orderedTenant.length, Math.max(1, visibleLocalesCount));\n const halfWindow = Math.floor((safeVisibleCount - 1) / 2);\n const maxStart = Math.max(0, orderedTenant.length - safeVisibleCount);\n const windowStart = Math.min(maxStart, Math.max(0, currentIndex - halfWindow));\n const visibleLocales = orderedTenant.slice(windowStart, windowStart + safeVisibleCount);\n const safeLocaleButtonWidth = Math.max(28, localeButtonWidth);\n const safeLocaleGap = Math.max(0, localeGap);\n const localeAreaWidth =\n safeVisibleCount * safeLocaleButtonWidth + (safeVisibleCount - 1) * safeLocaleGap;\n const localeWindowRef = React.useRef<HTMLDivElement | null>(null);\n const previousWindowStartRef = React.useRef(windowStart);\n\n React.useEffect(() => {\n const previousWindowStart = previousWindowStartRef.current;\n if (previousWindowStart === windowStart) {\n return;\n }\n\n previousWindowStartRef.current = windowStart;\n\n const localeWindow = localeWindowRef.current;\n if (!localeWindow) {\n return;\n }\n\n if (window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches) {\n return;\n }\n\n const movingRight = windowStart > previousWindowStart;\n const offsetX = movingRight ? 10 : -10;\n\n localeWindow.animate(\n [\n { opacity: 0.86, transform: `translate3d(${offsetX}px, 0, 0) scale(0.992)` },\n { opacity: 1, transform: \"translate3d(0, 0, 0) scale(1)\" }\n ],\n {\n duration: 460,\n easing: \"cubic-bezier(0.22, 1, 0.36, 1)\"\n }\n );\n }, [windowStart]);\n\n if (orderedTenant.length <= 1) {\n return null;\n }\n\n return (\n <div className={cn(\"flex items-center gap-1 min-w-0\", className)}>\n <button\n type=\"button\"\n disabled={isFirst}\n aria-label=\"Select previous locale\"\n onClick={() => !isFirst && onSelectLocale(orderedTenant[currentIndex - 1])}\n className={cn(\n \"inline-flex h-8 w-8 items-center justify-center rounded-md transform-gpu motion-safe:transition-[transform,background-color,color,box-shadow] motion-safe:duration-400 motion-safe:ease-[cubic-bezier(0.22,1,0.36,1)] active:scale-[0.985]\",\n isFirst ?\n \"text-muted-foreground/30 cursor-not-allowed\"\n : \"text-muted-foreground hover:text-foreground hover:bg-muted hover:shadow-sm\"\n )}\n >\n <ChevronLeft className=\"h-4 w-4\" />\n </button>\n\n <div className=\"min-w-0 overflow-hidden\" style={{ width: localeAreaWidth, maxWidth: \"100%\" }}>\n <div\n ref={localeWindowRef}\n className=\"grid gap-1\"\n style={{\n gridTemplateColumns: `repeat(${safeVisibleCount}, minmax(0, 1fr))`,\n columnGap: safeLocaleGap\n }}\n >\n {visibleLocales.map((lang) => (\n <button\n key={lang.locale}\n type=\"button\"\n data-locale={lang.locale}\n aria-label={lang.locale.toUpperCase()}\n onClick={() => onSelectLocale(lang)}\n className={cn(\n \"h-8 min-w-0 px-2 text-xs font-medium rounded-md transform-gpu motion-safe:transition-[transform,background-color,color,box-shadow] motion-safe:duration-400 motion-safe:ease-[cubic-bezier(0.22,1,0.36,1)] active:scale-[0.985] select-none\",\n selectedLocale === lang.locale ?\n \"bg-primary text-primary-foreground shadow-sm\"\n : \"bg-muted text-muted-foreground hover:bg-muted/80 hover:shadow-sm\",\n enableErrorHighlight &&\n errorLocales.includes(lang.locale) &&\n \"ring-1 ring-inset ring-red-500\"\n )}\n >\n <Truncated\n as=\"span\"\n className=\"block w-full text-center\"\n tooltipContentProps={{ side: \"bottom\", sideOffset: 6 }}\n >\n {lang.locale.toUpperCase()}\n </Truncated>\n </button>\n ))}\n </div>\n </div>\n\n <button\n type=\"button\"\n disabled={isLast}\n aria-label=\"Select next locale\"\n onClick={() => !isLast && onSelectLocale(orderedTenant[currentIndex + 1])}\n className={cn(\n \"inline-flex h-8 w-8 items-center justify-center rounded-md transform-gpu motion-safe:transition-[transform,background-color,color,box-shadow] motion-safe:duration-400 motion-safe:ease-[cubic-bezier(0.22,1,0.36,1)] active:scale-[0.985]\",\n isLast ?\n \"text-muted-foreground/30 cursor-not-allowed\"\n : \"text-muted-foreground hover:text-foreground hover:bg-muted hover:shadow-sm\"\n )}\n >\n <ChevronRight className=\"h-4 w-4\" />\n </button>\n </div>\n );\n}\n","import React from \"react\";\nimport { Spinner } from \"../ui\";\nimport { cn } from \"../../utils\";\n\nexport interface LoadingPageProps {\n /** Custom loading message */\n message?: string;\n /** Spinner variant */\n variant?: \"primary\" | \"secondary\" | \"destructive\" | \"muted\";\n /** Spinner size */\n size?: \"sm\" | \"default\" | \"lg\" | \"xl\" | \"2xl\" | number;\n /** Show/hide message */\n showMessage?: boolean;\n /** Show/hide dots */\n showDots?: boolean;\n /** Animate dots in the message */\n animateDots?: boolean;\n /** Custom className for container */\n containerClassName?: string;\n /** Custom className for message */\n messageClassName?: string;\n /** Custom data-testid prefix */\n testIdPrefix?: string;\n}\n\nconst AnimatedDots = () => {\n const dotAnimation = `\n @keyframes dot1 {\n 0% { opacity: 1; }\n 75% { opacity: 1; }\n 76% { opacity: 0; }\n 100% { opacity: 0; }\n }\n @keyframes dot2 {\n 0% { opacity: 0; }\n 25% { opacity: 0; }\n 26% { opacity: 1; }\n 75% { opacity: 1; }\n 76% { opacity: 0; }\n 100% { opacity: 0; }\n }\n @keyframes dot3 {\n 0% { opacity: 0; }\n 50% { opacity: 0; }\n 51% { opacity: 1; }\n 75% { opacity: 1; }\n 76% { opacity: 0; }\n 100% { opacity: 0; }\n }\n `;\n\n return (\n <>\n <style>{dotAnimation}</style>\n <span\n className=\"inline-block\"\n style={{\n animation: \"dot1 1.5s ease-in-out infinite\"\n }}\n >\n .\n </span>\n <span\n className=\"inline-block\"\n style={{\n animation: \"dot2 1.5s ease-in-out infinite\"\n }}\n >\n .\n </span>\n <span\n className=\"inline-block\"\n style={{\n animation: \"dot3 1.5s ease-in-out infinite\"\n }}\n >\n .\n </span>\n </>\n );\n};\n\nexport default function LoadingPage({\n message = \"Loading...\",\n variant = \"primary\",\n size = \"2xl\",\n showMessage = true,\n showDots = true,\n animateDots = false,\n containerClassName,\n messageClassName,\n testIdPrefix = \"loading-page\"\n}: LoadingPageProps) {\n const messageWithoutDots = message.replace(/\\.{3}\\s*$/, \"\").trim();\n const hasDots = message.match(/\\.{3}\\s*$/);\n\n return (\n <div\n data-testid={`${testIdPrefix}-div-container`}\n className={cn(\n \"flex-1 w-full h-full flex flex-col justify-center items-center gap-4\",\n containerClassName\n )}\n >\n <Spinner data-testid={`${testIdPrefix}-ico-spinner`} variant={variant} size={size} />\n {showMessage && (\n <p\n data-testid={`${testIdPrefix}-lbl-message`}\n className={cn(\"text-xl text-sus-gray-5 animate-pulse\", messageClassName)}\n >\n {hasDots && showDots && animateDots ?\n <>\n {messageWithoutDots} <AnimatedDots />\n </>\n : hasDots && showDots ?\n message\n : messageWithoutDots}\n </p>\n )}\n </div>\n );\n}\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 { EditorState, SerializedEditorState, SerializedLexicalNode } from \"lexical\";\nimport { ImagePayload } from \"./nodes/ImageNode\";\n\nexport type RichTextSerializedState = string;\n\nexport type EditorSerializedState = SerializedEditorState<SerializedLexicalNode>;\n\nexport type ImageUploadResult = ImagePayload | string;\n\n/**\n * Configuration for mapping mention item fields\n * Allows flexible field names for different data structures\n */\nexport type MentionConfig<T> = {\n /** Function to get the unique identifier from mention item */\n getId: (item: T) => string;\n /** Function to get the mention key/name (e.g., \"{{FIRSTNAME}}\") from mention item */\n getName: (item: T) => string;\n /** Function to get the display label (e.g., \"First Name\") from mention item */\n getLabel: (item: T) => string;\n};\n\n/**\n * Default mention item structure\n */\nexport type DefaultMentionItem = {\n id: string;\n name: string;\n fieldName: string;\n};\n\n/**\n * Create default mention config for standard structure {id, name, fieldName}\n */\nexport const createDefaultMentionConfig = <T extends DefaultMentionItem>(): MentionConfig<T> => ({\n getId: (item) => item.id,\n getName: (item) => item.name,\n getLabel: (item) => item.fieldName\n});\n\nexport type RichTextProps<T = DefaultMentionItem> = {\n value?: RichTextSerializedState;\n defaultValue?: RichTextSerializedState;\n onChange?: (serializedState: RichTextSerializedState, editorState: EditorState) => void;\n onHtmlChange?: (html: string, editorState: EditorState) => void;\n /** Callback for plain text output - useful for form validation. Returns text content without HTML */\n onTextChange?: (text: 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 onImageDialogUpload?: (file: File) => Promise<string>;\n onImageDialogUploadError?: (error: unknown) => void;\n hideImageUploadButton?: boolean;\n acceptImageMimeTypes?: string;\n allowImageUrlInsert?: boolean;\n /** Maximum number of characters allowed in the editor */\n maxLength?: number;\n /** Array of mention items that will be suggested */\n mentions?: T[];\n /** Configuration for mapping mention item fields. If not provided, assumes default structure {id, name, fieldName} */\n mentionConfig?: MentionConfig<T>;\n /** Optional trigger character for mentions (e.g., \"$\", \"@\", \"{{\"). If not provided, suggestions appear when typing matching text */\n mentionTrigger?: string;\n /** If true, suggestions will ONLY appear when the trigger is typed. Text matching is disabled. Requires mentionTrigger to be set. */\n mentionTriggerOnly?: boolean;\n /** If true, mentions will be rendered as plain text (e.g., {{FIRSTNAME}}) suitable for mail templates. If false, mentions will be styled HTML tags */\n plainTextMentions?: boolean;\n} & Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\">;\n","import { EditorSerializedState, RichTextSerializedState } from \"../types\";\n\nexport function parseSerializedEditorState(\n raw?: RichTextSerializedState\n): 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","import { createCommand, NodeKey } from \"lexical\";\nimport { ImagePayload } from \"../nodes/ImageNode\";\n\nconst cmd = {\n OPEN_LINK_DIALOG_COMMAND: createCommand<NodeKey>(\"OPEN_LINK_DIALOG_COMMAND\"),\n INSERT_IMAGE_COMMAND: createCommand<ImagePayload>(\"INSERT_IMAGE_COMMAND\"),\n OPEN_IMAGE_DIALOG_COMMAND: createCommand<NodeKey>(\"OPEN_IMAGE_DIALOG_COMMAND\")\n} as const;\n\nexport default cmd;\n","import * as React from \"react\";\nimport { useCallback, useEffect, useRef } from \"react\";\nimport type { LexicalCommand, LexicalNode, NodeKey, SerializedLexicalNode, Spread } from \"lexical\";\nimport { CLICK_COMMAND, COMMAND_PRIORITY_LOW, DecoratorNode } from \"lexical\";\nimport { useLexicalNodeSelection } from \"@lexical/react/useLexicalNodeSelection\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { Pencil } from \"lucide-react\";\n\nimport { cn } from \"@/utils\";\nimport { Button } from \"../../button\";\nimport cmd from \"../cmd\";\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 nodeKey,\n openImageDialogCommand\n}: {\n altText: string;\n src: string;\n width: number | \"inherit\";\n height: number | \"inherit\";\n nodeKey: NodeKey;\n openImageDialogCommand: LexicalCommand<NodeKey>;\n}) {\n const [editor] = useLexicalComposerContext();\n const imageRef = useRef<HTMLImageElement>(null);\n const [isSelected, setSelected, clearSelection] = useLexicalNodeSelection(nodeKey);\n\n const handleClick = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n if (event.shiftKey) {\n setSelected(!isSelected);\n } else {\n clearSelection();\n setSelected(true);\n }\n },\n [isSelected, setSelected, clearSelection]\n );\n\n const handleEditClick = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n editor.dispatchCommand(openImageDialogCommand, nodeKey);\n },\n [editor, nodeKey, openImageDialogCommand]\n );\n\n // Listen for clicks outside to deselect\n useEffect(() => {\n return mergeRegister(\n editor.registerCommand<MouseEvent>(\n CLICK_COMMAND,\n (event) => {\n if (imageRef.current && !imageRef.current.contains(event.target as Node)) {\n // Click was outside this image, handled by other logic\n return false;\n }\n return false;\n },\n COMMAND_PRIORITY_LOW\n )\n );\n }, [editor]);\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\n className=\"inline max-w-full cursor-pointer align-bottom\"\n contentEditable={false}\n onClick={handleClick}\n >\n <span className=\"relative inline-block\">\n <img\n ref={imageRef}\n src={src}\n alt={altText || \"\"}\n draggable={false}\n className={cn(\n \"max-w-full rounded-md border bg-muted object-contain\",\n \"shadow-sm transition-all\",\n isSelected ? \"ring-3 ring-primary/10 brightness-75\" : \"border-border/60 hover:shadow\"\n )}\n style={style}\n />\n {isSelected && (\n <Button\n type=\"button\"\n variant={\"default\"}\n color={\"black\"}\n onClick={handleEditClick}\n className={cn(\n \"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 flex items-center gap-1.5 rounded-md text-xs font-medium select-none\"\n )}\n >\n <Pencil className=\"h-3 w-3\" />\n Edit\n </Button>\n )}\n </span>\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 nodeKey={this.getKey()}\n openImageDialogCommand={cmd.OPEN_IMAGE_DIALOG_COMMAND}\n />\n );\n }\n\n isInline(): true {\n return true;\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 if (typeof this.__width === \"number\") {\n element.setAttribute(\"width\", this.__width.toString());\n element.style.width = `${this.__width}px`;\n }\n if (typeof this.__height === \"number\") {\n element.setAttribute(\"height\", this.__height.toString());\n element.style.height = `${this.__height}px`;\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 type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n LexicalNode,\n NodeKey,\n SerializedTextNode,\n Spread\n} from \"lexical\";\nimport { $applyNodeReplacement, TextNode, LexicalEditor } from \"lexical\";\n\nexport type SerializedMentionNode = Spread<\n {\n mentionKey: string;\n mentionLabel: string;\n },\n SerializedTextNode\n>;\n\nfunction convertMentionElement(domNode: HTMLElement): DOMConversionOutput | null {\n const mentionKey = domNode.getAttribute(\"data-mention-key\");\n const mentionLabel = domNode.getAttribute(\"data-mention-label\");\n const textContent = domNode.textContent;\n\n if (mentionKey !== null && textContent !== null) {\n const node = $createMentionNode(mentionKey, mentionLabel || textContent);\n return { node };\n }\n\n return null;\n}\n\nexport class MentionNode extends TextNode {\n __mentionKey: string;\n __mentionLabel: string;\n __editor: LexicalEditor | null = null;\n\n static plainTextMode = false;\n\n static getType(): string {\n return \"mention\";\n }\n\n static clone(node: MentionNode): MentionNode {\n return new MentionNode(node.__mentionKey, node.__mentionLabel, node.__key);\n }\n\n static importJSON(serializedNode: SerializedMentionNode): MentionNode {\n const node = $createMentionNode(serializedNode.mentionKey, serializedNode.mentionLabel);\n node.setTextContent(serializedNode.text);\n node.setFormat(serializedNode.format);\n node.setDetail(serializedNode.detail);\n node.setMode(serializedNode.mode);\n node.setStyle(serializedNode.style);\n return node;\n }\n\n constructor(mentionKey: string, mentionLabel: string, key?: NodeKey) {\n super(mentionKey, key);\n this.__mentionKey = mentionKey;\n this.__mentionLabel = mentionLabel;\n }\n\n setEditor(editor: LexicalEditor): void {\n this.__editor = editor;\n }\n\n exportJSON(): SerializedMentionNode {\n return {\n ...super.exportJSON(),\n mentionKey: this.__mentionKey,\n mentionLabel: this.__mentionLabel,\n type: \"mention\",\n version: 1\n };\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const dom = super.createDOM(config);\n dom.className =\n \"inline-flex items-center gap-1 rounded px-2 py-0.5 text-sm font-medium text-primary border border-sus-green-2 my-0.5 cursor-default\";\n dom.setAttribute(\"data-mention-key\", this.__mentionKey);\n dom.setAttribute(\"data-mention-label\", this.__mentionLabel);\n dom.setAttribute(\"data-mention-node-key\", this.__key);\n dom.contentEditable = \"false\";\n\n // Create delete button\n const deleteBtn = document.createElement(\"button\");\n deleteBtn.className =\n \"ml-1 inline-flex items-center justify-center w-4 h-4 rounded hover:bg-primary/20 text-primary/60 hover:text-primary transition-colors\";\n deleteBtn.textContent = \"×\";\n deleteBtn.type = \"button\";\n deleteBtn.setAttribute(\"aria-label\", \"Delete mention\");\n deleteBtn.contentEditable = \"false\";\n\n // Store node key for deletion\n deleteBtn.setAttribute(\"data-node-key\", this.__key);\n\n // Add click handler to delete the mention node\n deleteBtn.addEventListener(\"mousedown\", (e) => {\n e.preventDefault();\n e.stopPropagation();\n });\n\n deleteBtn.addEventListener(\"click\", (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n // Dispatch custom event that the plugin can listen to\n const nodeKey = this.__key;\n const event = new CustomEvent(\"mention-delete\", {\n detail: { nodeKey },\n bubbles: true,\n composed: true\n });\n document.dispatchEvent(event);\n });\n\n dom.appendChild(deleteBtn);\n return dom;\n }\n\n exportDOM(): DOMExportOutput {\n // If plain text mode, return plain text for mail templates\n if (MentionNode.plainTextMode) {\n const element = document.createElement(\"span\");\n element.textContent = this.__mentionKey;\n return { element };\n }\n\n // Otherwise return styled HTML\n const element = document.createElement(\"span\");\n element.className =\n \"inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-sm font-medium text-primary border border-sus-green-2 my-0.5\";\n element.setAttribute(\"data-mention-key\", this.__mentionKey);\n element.setAttribute(\"data-mention-label\", this.__mentionLabel);\n element.textContent = this.__mentionKey;\n\n // Add delete button to exported DOM as well (though it won't be interactive in static HTML)\n const deleteBtn = document.createElement(\"span\");\n deleteBtn.className = \"ml-1 text-primary/60\";\n deleteBtn.textContent = \"×\";\n element.appendChild(deleteBtn);\n\n return { element };\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n span: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-mention-key\")) {\n return null;\n }\n return {\n conversion: convertMentionElement,\n priority: 1\n };\n }\n };\n }\n\n isTextEntity(): true {\n return true;\n }\n\n canInsertTextBefore(): boolean {\n return false;\n }\n\n canInsertTextAfter(): boolean {\n return false;\n }\n\n canBeEmpty(): boolean {\n return false;\n }\n\n getMentionKey(): string {\n return this.__mentionKey;\n }\n\n getMentionLabel(): string {\n return this.__mentionLabel;\n }\n}\n\nexport function $createMentionNode(mentionKey: string, mentionLabel: string): MentionNode {\n const mentionNode = new MentionNode(mentionKey, mentionLabel);\n mentionNode.setMode(\"segmented\").toggleDirectionless();\n return $applyNodeReplacement(mentionNode);\n}\n\nexport function $isMentionNode(node: LexicalNode | null | undefined): node is MentionNode {\n return node instanceof MentionNode;\n}\n","import { forwardRef } from \"react\";\nimport { cn } from \"@/utils\";\n\ntype ToolbarButtonProps = {\n label: string;\n icon: React.ComponentType<React.SVGProps<SVGSVGElement>>;\n onClick?: () => void;\n active?: boolean;\n disabled?: boolean;\n iconColor?: string;\n};\n\nexport const ToolbarButton = forwardRef<HTMLButtonElement, ToolbarButtonProps>(function ToolbarButton(\n { label, icon: Icon, onClick, active, disabled, iconColor },\n ref\n) {\n return (\n <button\n ref={ref}\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 color={iconColor} />\n <span className=\"sr-only\">{label}</span>\n </button>\n );\n});\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n $createTextNode,\n $getNodeByKey,\n $getSelection,\n $insertNodes,\n $isRangeSelection,\n COMMAND_PRIORITY_NORMAL,\n LexicalNode,\n NodeKey\n} from \"lexical\";\nimport { ChangeEvent, useCallback, useEffect, useRef, useState } from \"react\";\nimport { $createImageNode, $isImageNode, ImageNode, ImagePayload } from \"../../nodes/ImageNode\";\nimport { ImageUploadResult } from \"../../types\";\nimport cmd from \"../../cmd\";\nimport { ToolbarButton } from \"../ToolbarButton\";\nimport { ImageIcon } from \"lucide-react\";\nimport {\n Button,\n Input,\n Dialog,\n DialogContent,\n DialogTitle,\n DialogFooter,\n FormField,\n FormItem,\n FormLabel,\n FormControl,\n FormMessage,\n Form\n} from \"@/components/ui\";\nimport { useForm } from \"react-hook-form\";\n\ntype ImageFormValues = {\n url: string;\n alt: string;\n width: string;\n height: string;\n};\n\ntype UploadImagePluginProps = {\n disabled: boolean;\n onImageUpload?: (file: File) => Promise<ImageUploadResult>;\n onImageUploadError?: (error: unknown) => void;\n onImageDialogUpload?: (file: File) => Promise<string>;\n onImageDialogUploadError?: (error: unknown) => void;\n hideImageUploadButton?: boolean;\n allowImageUrlInsert?: boolean;\n acceptImageMimeTypes?: string;\n};\n\nexport function UploadImagePlugin({\n disabled,\n allowImageUrlInsert = true,\n onImageUpload,\n onImageUploadError,\n onImageDialogUpload,\n onImageDialogUploadError,\n hideImageUploadButton,\n acceptImageMimeTypes\n}: UploadImagePluginProps) {\n const [editor] = useLexicalComposerContext();\n const [imageNodeKey, setImageNodeKey] = useState<NodeKey | null>(null);\n const fileInputRef = useRef<HTMLInputElement | null>(null);\n const [isImageDialogOpen, setImageDialogOpen] = useState(false);\n const [editingExistingImage, setEditingExistingImage] = useState(false);\n const imageForm = useForm<ImageFormValues>({\n defaultValues: { url: \"\", alt: \"\", width: \"\", height: \"\" }\n });\n\n const canInsertImage = allowImageUrlInsert || Boolean(onImageUpload) || Boolean(onImageDialogUpload);\n const imageAccept = acceptImageMimeTypes ?? \"image/*\";\n\n useEffect(() => {\n editor.registerCommand(\n cmd.OPEN_IMAGE_DIALOG_COMMAND,\n (nodeKey) => {\n if (disabled || !allowImageUrlInsert) {\n return false;\n }\n\n const targetImage = editor.getEditorState().read(() => {\n const node = $getNodeByKey<LexicalNode>(nodeKey);\n if ($isImageNode(node)) {\n return node;\n }\n return null;\n });\n\n if (!targetImage) {\n return false;\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(true);\n setImageNodeKey(nodeKey);\n setImageDialogOpen(true);\n return true;\n },\n COMMAND_PRIORITY_NORMAL\n );\n }, [allowImageUrlInsert, disabled, editor, imageForm]);\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\n setEditingExistingImage(false);\n setImageNodeKey(null);\n imageForm.reset();\n setTimeout(() => {\n editor.focus();\n }, 0);\n }, [editor, imageForm]);\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 if (onImageDialogUpload) {\n openImageDialog();\n }\n }, [canInsertImage, disabled, editor, onImageDialogUpload, 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(cmd.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 // image dialog file input change handler\n const [imageDialogLoading, setImageDialogLoading] = useState(false);\n const imageDialogFileInputRef = useRef<HTMLInputElement | null>(null);\n const imageDialogHandleFileChange = async (event: ChangeEvent<HTMLInputElement>) => {\n const files = Array.from(event.target.files ?? []);\n if (files.length === 0 || !onImageDialogUpload) {\n return;\n }\n try {\n setImageDialogLoading(true);\n imageForm.setValue(\"url\", \"Uploading Image...\");\n const url = await onImageDialogUpload(files[0]);\n imageForm.setValue(\"url\", url);\n } catch (error) {\n imageForm.setValue(\"url\", \"\");\n onImageDialogUploadError?.(error);\n console.error(\"[RichText] Failed to upload image via dialog:\", error);\n return;\n } finally {\n setImageDialogLoading(false);\n }\n };\n\n const imageDialogHandleUploadClick = () => {\n imageDialogFileInputRef.current?.click();\n };\n\n return (\n <>\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 <Dialog open={isImageDialogOpen} onOpenChange={handleImageDialogOpenChange}>\n <DialogContent header={editingExistingImage ? \"Edit image\" : \"Insert image\"}>\n <DialogTitle hidden></DialogTitle>\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 <div className=\"flex gap-2 items-center\">\n <Input\n placeholder=\"https://example.com/image.jpg\"\n {...field}\n disabled={imageDialogLoading}\n />\n {onImageDialogUpload && !hideImageUploadButton && (\n <Button\n type=\"button\"\n variant=\"defaultOutline\"\n color=\"blue\"\n onClick={imageDialogHandleUploadClick}\n disabled={imageDialogLoading}\n >\n Upload\n </Button>\n )}\n <input\n ref={imageDialogFileInputRef}\n type=\"file\"\n className=\"hidden\"\n onChange={imageDialogHandleFileChange}\n accept={imageAccept}\n />\n </div>\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} disabled={imageDialogLoading} />\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\n placeholder=\"Auto\"\n inputMode=\"numeric\"\n {...field}\n disabled={imageDialogLoading}\n />\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\n placeholder=\"Auto\"\n inputMode=\"numeric\"\n {...field}\n disabled={imageDialogLoading}\n />\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 type=\"button\" variant=\"defaultOutline\" color=\"red\" onClick={handleRemoveImage}>\n Remove image\n </Button>\n : null}\n <Button type=\"submit\" disabled={imageDialogLoading}>\n {editingExistingImage ? \"Save changes\" : \"Insert image\"}\n </Button>\n </DialogFooter>\n </form>\n </Form>\n </DialogContent>\n </Dialog>\n </>\n );\n}\n\nfunction placeCaretAfterImage(imageNode: ImageNode) {\n const nextSibling = imageNode.getNextSibling();\n\n if (!nextSibling || $isImageNode(nextSibling)) {\n const textNode = $createTextNode(\" \");\n imageNode.insertAfter(textNode);\n textNode.select(1, 1);\n return;\n }\n\n imageNode.selectNext(0, 0);\n}\n","import { $createLinkNode, $isLinkNode, LinkNode, TOGGLE_LINK_COMMAND } from \"@lexical/link\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n $createTextNode,\n $getNodeByKey,\n $getSelection,\n $insertNodes,\n $isRangeSelection,\n COMMAND_PRIORITY_NORMAL,\n LexicalNode,\n NodeKey\n} from \"lexical\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useForm } from \"react-hook-form\";\nimport cmd from \"../../cmd\";\nimport { ToolbarButton } from \"../ToolbarButton\";\nimport { ExternalLink, Link2Off, LinkIcon, Pencil } from \"lucide-react\";\nimport {\n Button,\n Input,\n Dialog,\n DialogContent,\n DialogTitle,\n DialogFooter,\n FormField,\n FormItem,\n FormLabel,\n FormControl,\n FormMessage,\n Form\n} from \"@/components/ui\";\n\ntype LinkFormValues = {\n url: string;\n label: string;\n};\n\ntype LinkPluginProps = {\n disabled: boolean;\n state: { isLink: boolean };\n};\n\ntype FloatingLinkPreviewState = {\n url: string;\n nodeKey: NodeKey;\n rect: DOMRect;\n} | null;\n\nexport function LinkPlugin({ disabled, state }: LinkPluginProps) {\n const [editor] = useLexicalComposerContext();\n const [isLinkDialogOpen, setLinkDialogOpen] = useState(false);\n const [editingExistingLink, setEditingExistingLink] = useState(false);\n const [linkNodeKey, setLinkNodeKey] = useState<NodeKey | null>(null);\n // preview\n const [linkPreview, setLinkPreview] = useState<FloatingLinkPreviewState>(null);\n const previewRef = useRef<HTMLDivElement | null>(null);\n\n const linkForm = useForm<LinkFormValues>({\n defaultValues: { url: \"\", label: \"\" }\n });\n\n useEffect(() => {\n editor.registerCommand(\n cmd.OPEN_LINK_DIALOG_COMMAND,\n (nodeKey) => {\n if (disabled) {\n return false;\n }\n\n const targetLink = editor.getEditorState().read(() => {\n const node = $getNodeByKey<LexicalNode>(nodeKey);\n if ($isLinkNode(node)) {\n return node;\n }\n return null;\n });\n\n if (!targetLink) {\n return false;\n }\n\n const initialUrl = targetLink.getURL();\n const initialLabel = targetLink.getTextContent().trim();\n\n linkForm.clearErrors();\n linkForm.reset({\n url: initialUrl,\n label: initialLabel\n });\n setEditingExistingLink(true);\n setLinkNodeKey(nodeKey);\n setLinkDialogOpen(true);\n return true;\n },\n COMMAND_PRIORITY_NORMAL\n );\n }, [disabled, editor, linkForm]);\n\n const findLink = useCallback(() => {\n return 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 }, [editor]);\n\n const openLinkDialog = useCallback(() => {\n if (disabled) {\n return;\n }\n\n const { initialUrl, initialLabel, detectedLink } = findLink();\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, findLink, 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 const textNode = $createTextNode(labelToApply);\n const children = existingNode.getChildren();\n existingNode.append(textNode);\n children.forEach((child) => child.remove());\n textNode.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 setLinkPreview(null);\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 // preview\n const hidePreview = useCallback(() => {\n setLinkPreview(null);\n }, []);\n\n const handleClick = useCallback(\n (event: MouseEvent) => {\n if (disabled) {\n return;\n }\n\n const target = event.target as HTMLElement;\n\n // If clicking inside the preview popover, don't do anything\n const previewElement = previewRef.current;\n if (previewElement && previewElement.contains(target)) {\n return;\n }\n\n // Check if clicking on a link element\n const linkElement = target.closest(\"a\") as HTMLAnchorElement | null;\n if (!linkElement) {\n hidePreview();\n return;\n }\n\n // Prevent default link navigation\n event.preventDefault();\n\n const { detectedLink, initialUrl } = findLink();\n if (!detectedLink) {\n hidePreview();\n return;\n }\n\n const nodeKey = detectedLink.getKey();\n const linkRect = linkElement.getBoundingClientRect();\n\n setLinkPreview({\n nodeKey,\n url: initialUrl,\n rect: linkRect\n });\n },\n [disabled, findLink, hidePreview]\n );\n\n // Close preview when clicking outside\n const handleClickOutside = useCallback(\n (event: MouseEvent) => {\n const target = event.target as HTMLElement;\n const previewElement = previewRef.current;\n const rootElement = editor.getRootElement();\n\n // If clicking inside the preview popover, don't close\n if (previewElement && previewElement.contains(target)) {\n return;\n }\n\n // If clicking inside the editor on a link, handleClick will manage it\n if (rootElement && rootElement.contains(target)) {\n return;\n }\n\n // Clicking outside editor and preview, close the preview\n hidePreview();\n },\n [editor, hidePreview]\n );\n\n const handleEditClick = useCallback(() => {\n if (!linkPreview) {\n return;\n }\n editor.dispatchCommand(cmd.OPEN_LINK_DIALOG_COMMAND, linkPreview.nodeKey);\n setLinkPreview(null);\n }, [editor, linkPreview]);\n\n const handleOpenLink = useCallback(() => {\n if (linkPreview?.url) {\n const lowerUrl = linkPreview.url.toLowerCase();\n const hasProtocol = lowerUrl.startsWith(\"http://\") || lowerUrl.startsWith(\"https://\");\n const url = hasProtocol ? linkPreview.url : \"https://\" + linkPreview.url;\n window.open(url, \"_blank\", \"noopener,noreferrer\");\n }\n }, [linkPreview?.url]);\n\n useEffect(() => {\n const rootElement = editor.getRootElement();\n if (!rootElement) {\n return;\n }\n\n rootElement.addEventListener(\"click\", handleClick);\n document.addEventListener(\"mousedown\", handleClickOutside);\n window.addEventListener(\"scroll\", hidePreview, true);\n\n return () => {\n rootElement.removeEventListener(\"click\", handleClick);\n document.removeEventListener(\"mousedown\", handleClickOutside);\n window.removeEventListener(\"scroll\", hidePreview, true);\n };\n }, [editor, handleClick, handleClickOutside, hidePreview]);\n\n return (\n <>\n <ToolbarButton\n label={state.isLink ? \"Edit link\" : \"Insert link\"}\n icon={LinkIcon}\n onClick={openLinkDialog}\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 <Dialog open={isLinkDialogOpen} onOpenChange={handleLinkDialogOpenChange}>\n <DialogContent\n className=\"max-w-[50vw]! min-w-[320px]!\"\n header={editingExistingLink ? \"Edit link\" : \"Insert link\"}\n >\n <DialogTitle hidden />\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 type=\"button\" variant=\"defaultOutline\" color=\"red\" onClick={handleRemoveLink}>\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 {linkPreview &&\n createPortal(\n <LinkPreviewPopover\n previewRef={previewRef}\n linkPreview={linkPreview}\n handleOpenLink={handleOpenLink}\n handleEditClick={handleEditClick}\n handleRemoveLink={handleRemoveLink}\n />,\n document.body\n )}\n </>\n );\n}\n\nconst PREVIEW_WIDTH = 300;\nconst PREVIEW_PADDING = 8;\nconst PREVIEW_HEIGHT = 40;\n\ntype LinkPreviewPopoverProps = {\n previewRef: React.RefObject<HTMLDivElement | null>;\n linkPreview: NonNullable<FloatingLinkPreviewState>;\n handleOpenLink: () => void;\n handleEditClick: () => void;\n handleRemoveLink: () => void;\n};\n\nfunction LinkPreviewPopover({\n previewRef,\n linkPreview,\n handleOpenLink,\n handleEditClick,\n handleRemoveLink\n}: LinkPreviewPopoverProps) {\n const { rect } = linkPreview;\n\n // Calculate position that keeps preview within viewport\n const viewportWidth = typeof window !== \"undefined\" ? window.innerWidth : 0;\n const viewportHeight = typeof window !== \"undefined\" ? window.innerHeight : 0;\n\n // Default: position below the link, aligned to the left\n let top = rect.bottom + 4;\n let left = rect.left;\n\n // Check if preview would overflow on the right\n if (left + PREVIEW_WIDTH > viewportWidth - PREVIEW_PADDING) {\n left = Math.max(PREVIEW_PADDING, viewportWidth - PREVIEW_WIDTH - PREVIEW_PADDING);\n }\n\n // Check if preview would overflow on the left\n if (left < PREVIEW_PADDING) {\n left = PREVIEW_PADDING;\n }\n\n // Check if preview would overflow at the bottom\n if (top + PREVIEW_HEIGHT > viewportHeight - PREVIEW_PADDING) {\n // Position above the link instead\n top = rect.top - PREVIEW_HEIGHT - 4;\n }\n\n // If it would still overflow at the top, just position at the top of viewport\n if (top < PREVIEW_PADDING) {\n top = PREVIEW_PADDING;\n }\n\n return (\n <div\n ref={previewRef}\n className=\"fixed z-9999 flex items-center gap-2 rounded-md border border-border bg-popover p-2 shadow-md\"\n style={{\n top: `${top}px`,\n left: `${left}px`,\n maxWidth: `${PREVIEW_WIDTH}px`\n }}\n >\n <a\n href={linkPreview.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"flex-1 truncate text-sm text-primary hover:underline\"\n onClick={(e) => {\n e.preventDefault();\n handleOpenLink();\n }}\n >\n {linkPreview.url}\n </a>\n <button\n type=\"button\"\n title=\"Open link\"\n onClick={handleOpenLink}\n className=\"cursor-pointer inline-flex h-6 w-6 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <ExternalLink className=\"h-3.5 w-3.5\" />\n </button>\n <button\n type=\"button\"\n title=\"Edit link\"\n onClick={handleEditClick}\n className=\"cursor-pointer inline-flex h-6 w-6 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <Pencil className=\"h-3.5 w-3.5\" />\n </button>\n <button\n type=\"button\"\n title=\"Remove link\"\n onClick={handleRemoveLink}\n className=\"cursor-pointer inline-flex h-6 w-6 shrink-0 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground\"\n >\n <Link2Off className=\"h-3.5 w-3.5\" />\n </button>\n </div>\n );\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { FORMAT_TEXT_COMMAND } from \"lexical\";\nimport { useCallback } from \"react\";\nimport { ToolbarButton } from \"../ToolbarButton\";\nimport { Bold, Italic, Strikethrough, Underline, Code as InlineCodeIcon } from \"lucide-react\";\n\ntype FormatState = {\n isBold: boolean;\n isItalic: boolean;\n isUnderline: boolean;\n isStrikethrough: boolean;\n isCode: boolean;\n};\n\ntype FormatPluginProps = {\n disabled: boolean;\n state: FormatState;\n};\n\nexport function FormatPlugin({ disabled, state }: FormatPluginProps) {\n const [editor] = useLexicalComposerContext();\n\n const toggleFormat = useCallback(\n (format: \"bold\" | \"italic\" | \"underline\" | \"strikethrough\" | \"code\") => {\n if (disabled) {\n return;\n }\n editor.focus();\n editor.dispatchCommand(FORMAT_TEXT_COMMAND, format);\n },\n [disabled, editor]\n );\n\n return (\n <>\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 </>\n );\n}\n","import { ChevronDown } from \"lucide-react\";\nimport { useCallback, useState } from \"react\";\nimport { $getSelection, $isRangeSelection } from \"lexical\";\nimport { $patchStyleText } from \"@lexical/selection\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { cn } from \"@/utils\";\n\ntype AdjustFontSizePluginProps = {\n disabled: boolean;\n state: { fontSize: string | null };\n};\n\nconst fontSizes = [8, 10, 12, 14, 16, 18, 20, 24, 28, 32, 36, 48, 64, 72];\nexport const DEFAULT_FONT_SIZE = 14;\n\nexport function AdjustFontSizePlugin({ disabled, state }: AdjustFontSizePluginProps) {\n const [editor] = useLexicalComposerContext();\n const [isOpen, setIsOpen] = useState(false);\n\n const currentSize = state.fontSize ? parseInt(state.fontSize, 10) : DEFAULT_FONT_SIZE;\n\n const applyFontSize = useCallback(\n (size: number = DEFAULT_FONT_SIZE) => {\n if (disabled) {\n return;\n }\n editor.focus();\n editor.update(() => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return;\n }\n\n $patchStyleText(selection, { \"font-size\": `${size}px` });\n });\n\n setIsOpen(false);\n editor.focus();\n },\n [disabled, editor]\n );\n\n return (\n <Popover open={isOpen} onOpenChange={setIsOpen}>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n title=\"Font size\"\n disabled={disabled}\n onMouseDown={(e) => e.preventDefault()}\n className={cn(\n \"inline-flex h-8 min-w-14 items-center justify-between gap-1 rounded-md border border-input bg-background px-2 text-sm font-medium transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\"\n )}\n >\n <span>{`${currentSize}px`}</span>\n <ChevronDown className=\"h-3.5 w-3.5 opacity-50\" />\n </button>\n </PopoverTrigger>\n <PopoverContent className=\"w-fit p-1\" align=\"start\" onOpenAutoFocus={(e) => e.preventDefault()}>\n <div className=\"flex flex-col max-h-60 overflow-y-auto [&::-webkit-scrollbar]:w-1 [&::-webkit-scrollbar-thumb]:rounded-full [&::-webkit-scrollbar-thumb]:bg-muted-foreground/30 [&::-webkit-scrollbar-track]:bg-transparent\">\n <button\n key={\"default\"}\n disabled={currentSize === DEFAULT_FONT_SIZE}\n type=\"button\"\n onClick={() => applyFontSize(DEFAULT_FONT_SIZE)}\n className={cn(\n \"rounded px-2 py-1 text-left text-sm\",\n currentSize !== DEFAULT_FONT_SIZE && \"hover:bg-muted\",\n currentSize === DEFAULT_FONT_SIZE && \"text-gray-400\"\n )}\n >\n Default\n </button>\n {fontSizes.map((size) => (\n <button\n key={size}\n type=\"button\"\n onClick={() => applyFontSize(size)}\n className={cn(\n \"rounded px-2 py-1 text-left text-sm hover:bg-muted\",\n currentSize === size && \"bg-muted font-medium\"\n )}\n >\n {size}px\n </button>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n );\n}\n","import { Popover, PopoverContent, PopoverTrigger } from \"@/components/ui/popover\";\nimport { BaselineIcon } from \"lucide-react\";\nimport { ToolbarButton } from \"../ToolbarButton\";\nimport { useCallback, useState } from \"react\";\nimport { $getSelection, $isRangeSelection } from \"lexical\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { cn } from \"@/utils\";\nimport { $patchStyleText } from \"@lexical/selection\";\n\ntype ColorPluginProps = {\n disabled: boolean;\n state: { textColor: string | null };\n};\n\nconst textColors = [\n { label: \"Default\", value: null },\n { label: \"Black\", value: \"#000000\" },\n { label: \"Dark Gray\", value: \"#4b5563\" },\n { label: \"Gray\", value: \"#9ca3af\" },\n { label: \"Red\", value: \"#ef4444\" },\n { label: \"Orange\", value: \"#f97316\" },\n { label: \"Yellow\", value: \"#eab308\" },\n { label: \"Green\", value: \"#22c55e\" },\n { label: \"Blue\", value: \"#3b82f6\" },\n { label: \"Purple\", value: \"#a855f7\" },\n { label: \"Pink\", value: \"#ec4899\" }\n];\n\nexport function ColorPlugin({ disabled, state }: ColorPluginProps) {\n const [editor] = useLexicalComposerContext();\n const [isColorPopoverOpen, setColorPopoverOpen] = useState(false);\n\n const applyTextColor = useCallback(\n (color: string | null) => {\n if (disabled) {\n return;\n }\n editor.focus();\n editor.update(() => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) {\n return;\n }\n\n $patchStyleText(selection, { color: color });\n });\n\n setColorPopoverOpen(false);\n editor.focus();\n },\n [disabled, editor]\n );\n\n return (\n <>\n <Popover open={isColorPopoverOpen} onOpenChange={setColorPopoverOpen}>\n <PopoverTrigger asChild>\n <ToolbarButton\n label=\"Text color\"\n icon={BaselineIcon}\n disabled={disabled}\n iconColor={state.textColor || undefined}\n />\n </PopoverTrigger>\n <PopoverContent className=\"w-auto p-2\" align=\"start\" onOpenAutoFocus={(e) => e.preventDefault()}>\n <div className=\"grid grid-cols-4 gap-2\">\n {textColors.map((color) => (\n <button\n key={color.label}\n type=\"button\"\n title={color.label}\n onClick={() => applyTextColor(color.value)}\n className={cn(\n \"h-6 w-6 rounded-full border border-border transition-transform hover:scale-110 focus:outline-none focus:ring-2 focus:ring-ring\",\n color.value === null && \"bg-background\"\n )}\n style={color.value ? { backgroundColor: color.value } : undefined}\n >\n {color.value === null && (\n <span className=\"flex h-full w-full items-center justify-center text-[8px] text-muted-foreground\">\n Auto\n </span>\n )}\n </button>\n ))}\n </div>\n </PopoverContent>\n </Popover>\n </>\n );\n}\n","import { useCallback } from \"react\";\nimport { $setBlocksType } from \"@lexical/selection\";\nimport { $createParagraphNode, $getSelection, $isRangeSelection } from \"lexical\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $createHeadingNode, $createQuoteNode } from \"@lexical/rich-text\";\nimport {\n INSERT_ORDERED_LIST_COMMAND,\n INSERT_UNORDERED_LIST_COMMAND,\n REMOVE_LIST_COMMAND\n} from \"@lexical/list\";\nimport { $createCodeNode } from \"@lexical/code\";\nimport { ToolbarButton } from \"../ToolbarButton\";\nimport {\n Pilcrow,\n Heading1,\n Heading2,\n Heading3,\n ListOrdered,\n QuoteIcon,\n CodeSquare,\n List as BulletListIcon\n} from \"lucide-react\";\n\nexport type ToolbarBlockType = \"paragraph\" | \"h1\" | \"h2\" | \"h3\" | \"bullet\" | \"number\" | \"quote\" | \"code\";\n\ntype BlockPluginProps = {\n disabled: boolean;\n state: { blockType: ToolbarBlockType };\n};\n\nexport function BlockPlugin({ disabled, state }: BlockPluginProps) {\n const [editor] = useLexicalComposerContext();\n\n const applyBlock = useCallback(\n (nextBlock: ToolbarBlockType) => {\n if (disabled) {\n return;\n }\n editor.focus();\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 return (\n <>\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 </>\n );\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { ElementFormatType, FORMAT_ELEMENT_COMMAND } from \"lexical\";\nimport { useCallback } from \"react\";\nimport { ToolbarButton } from \"../ToolbarButton\";\nimport { AlignCenter, AlignLeft, AlignRight } from \"lucide-react\";\n\ntype AlignPluginProps = {\n disabled: boolean;\n state: { elementFormat: ElementFormatType | null };\n};\n\nexport function AlignPlugin({ disabled, state }: AlignPluginProps) {\n const [editor] = useLexicalComposerContext();\n\n const applyElementFormat = useCallback(\n (format: ElementFormatType) => {\n if (disabled) {\n return;\n }\n editor.focus();\n editor.dispatchCommand(FORMAT_ELEMENT_COMMAND, format);\n },\n [disabled, editor]\n );\n\n return (\n <>\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 </>\n );\n}\n","import {\n $getSelection,\n $isRangeSelection,\n CAN_REDO_COMMAND,\n CAN_UNDO_COMMAND,\n COMMAND_PRIORITY_CRITICAL,\n COMMAND_PRIORITY_NORMAL,\n ElementFormatType,\n LexicalNode,\n REDO_COMMAND,\n SELECTION_CHANGE_COMMAND,\n UNDO_COMMAND\n} from \"lexical\";\nimport { ImageUploadResult } from \"../types\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { mergeRegister } from \"@lexical/utils\";\nimport { $getSelectionStyleValueForProperty } from \"@lexical/selection\";\nimport { $isLinkNode } from \"@lexical/link\";\nimport { Redo, Undo } from \"lucide-react\";\nimport { $isCodeNode } from \"@lexical/code\";\nimport { $isListNode } from \"@lexical/list\";\nimport { $isHeadingNode } from \"@lexical/rich-text\";\nimport { ToolbarButton } from \"./ToolbarButton\";\nimport { UploadImagePlugin } from \"./plugins/UploadImagePlugin\";\nimport { LinkPlugin } from \"./plugins/LinkPlugin\";\nimport { FormatPlugin } from \"./plugins/FormatPlugin\";\nimport { AdjustFontSizePlugin, DEFAULT_FONT_SIZE } from \"./plugins/AdjustFontSizePlugin\";\nimport { ColorPlugin } from \"./plugins/ColorPlugin\";\nimport { BlockPlugin, ToolbarBlockType } from \"./plugins/BlockPlugin\";\nimport { AlignPlugin } from \"./plugins/AlignPlugin\";\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 textColor: string | null;\n fontSize: string | null;\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 textColor: null,\n fontSize: `${DEFAULT_FONT_SIZE}px`\n};\n\ntype ToolbarPluginProps = {\n disabled: boolean;\n onImageUpload?: (file: File) => Promise<ImageUploadResult>;\n onImageUploadError?: (error: unknown) => void;\n onImageDialogUpload?: (file: File) => Promise<string>;\n onImageDialogUploadError?: (error: unknown) => void;\n hideImageUploadButton?: boolean;\n allowImageUrlInsert?: boolean;\n acceptImageMimeTypes?: string;\n};\n\nexport function ToolbarPlugin({ disabled, ...props }: ToolbarPluginProps) {\n const [editor] = useLexicalComposerContext();\n const [state, setState] = useState<ToolbarToggleState>(initialToolbarState);\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 const textColor = $getSelectionStyleValueForProperty(selection, \"color\", undefined);\n const fontSize = $getSelectionStyleValueForProperty(selection, \"font-size\", undefined);\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 textColor: textColor || null,\n fontSize: fontSize || null\n }));\n }, []);\n\n 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, disabled]);\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 <AdjustFontSizePlugin disabled={disabled} state={state} />\n <ColorPlugin disabled={disabled} state={state} />\n <span className=\"mx-1 h-5 w-px bg-border\" aria-hidden />\n <FormatPlugin disabled={false} state={state} />\n <span className=\"mx-1 h-5 w-px bg-border\" aria-hidden />\n <BlockPlugin disabled={disabled} state={state} />\n <span className=\"mx-1 h-5 w-px bg-border\" aria-hidden />\n <LinkPlugin disabled={disabled} state={state} />\n <UploadImagePlugin disabled={disabled} {...props} />\n <span className=\"mx-1 h-5 w-px bg-border\" aria-hidden />\n <AlignPlugin disabled={disabled} state={state} />\n </div>\n </>\n );\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useEffect } from \"react\";\nimport cmd from \"../cmd\";\nimport { $createTextNode, $insertNodes, COMMAND_PRIORITY_EDITOR } from \"lexical\";\nimport { $createImageNode, $isImageNode, ImageNode } from \"../nodes/ImageNode\";\n\nfunction placeCaretAfterImage(imageNode: ImageNode) {\n const nextSibling = imageNode.getNextSibling();\n\n if (!nextSibling || $isImageNode(nextSibling)) {\n const textNode = $createTextNode(\" \");\n imageNode.insertAfter(textNode);\n textNode.select(1, 1);\n return;\n }\n\n imageNode.selectNext(0, 0);\n}\n\nexport function ImagesPlugin() {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n return editor.registerCommand(\n cmd.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","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { useEffect } from \"react\";\n\nexport function EditableStatePlugin({ editable }: { editable: boolean }) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n editor.setEditable(editable);\n }, [editor, editable]);\n\n return null;\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { EditorSerializedState, RichTextSerializedState } from \"../types\";\nimport { useEffect } from \"react\";\n\nexport function ControlledValuePlugin({\n value,\n trackAppliedValue\n}: {\n value?: RichTextSerializedState;\n trackAppliedValue: React.MutableRefObject<RichTextSerializedState | undefined>;\n}) {\n const [editor] = useLexicalComposerContext();\n\n 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","import * as React from \"react\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n LexicalTypeaheadMenuPlugin,\n MenuOption,\n MenuTextMatch\n} from \"@lexical/react/LexicalTypeaheadMenuPlugin\";\nimport {\n $getSelection,\n $isRangeSelection,\n $isTextNode,\n TextNode,\n PASTE_COMMAND,\n COMMAND_PRIORITY_LOW,\n $createTextNode\n} from \"lexical\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"@/utils\";\nimport { $createMentionNode } from \"../nodes/MentionNode\";\nimport { MentionConfig } from \"../types\";\n\n// Regex to detect a complete variable pattern like {{FIRSTNAME}}\nconst COMPLETE_VARIABLE_REGEX = /\\{\\{([A-Z_]+)\\}\\}/gi;\n\n/**\n * Escape special regex characters in a string\n */\nfunction escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\n/**\n * Check if text ends with trigger character followed by optional query\n */\nfunction checkForTriggerMatch(text: string, trigger: string): MenuTextMatch | null {\n const escapedTrigger = escapeRegExp(trigger);\n const regex = new RegExp(`(${escapedTrigger})([A-Z_]*)$`, \"i\");\n const match = regex.exec(text);\n\n if (match !== null) {\n const matchingString = match[2] ?? \"\";\n const fullMatch = match[0];\n\n return {\n leadOffset: match.index,\n matchingString,\n replaceableString: fullMatch\n };\n }\n return null;\n}\n\n/**\n * Check if text ends with any partial match of mention keys\n * This allows suggestion to appear when user types part of a variable name\n */\nfunction checkForTextMatch<T>(\n text: string,\n mentions: T[],\n config: MentionConfig<T>\n): MenuTextMatch | null {\n // Get the last \"word\" being typed (letters and underscores)\n const wordMatch = /([A-Z_]+)$/i.exec(text);\n\n if (wordMatch) {\n const typedText = wordMatch[1].toLowerCase();\n\n // Check if this matches any mention name or fieldName\n const hasMatch = mentions.some((item) => {\n const keyWithoutBraces = config\n .getName(item)\n .replace(/^\\{\\{|\\}\\}$/g, \"\")\n .toLowerCase();\n return (\n keyWithoutBraces.startsWith(typedText) ||\n keyWithoutBraces.includes(typedText) ||\n config.getLabel(item).toLowerCase().startsWith(typedText) ||\n config.getLabel(item).toLowerCase().includes(typedText)\n );\n });\n\n if (hasMatch) {\n return {\n leadOffset: wordMatch.index,\n matchingString: wordMatch[1],\n replaceableString: wordMatch[1]\n };\n }\n }\n return null;\n}\n\nclass MentionTypeaheadOption extends MenuOption {\n name: string;\n fieldName: string;\n\n constructor(name: string, fieldName: string) {\n super(name);\n this.name = name;\n this.fieldName = fieldName;\n }\n}\n\nfunction MentionsTypeaheadMenuItem({\n index,\n isSelected,\n onClick,\n onMouseEnter,\n option\n}: {\n index: number;\n isSelected: boolean;\n onClick: () => void;\n onMouseEnter: () => void;\n option: MentionTypeaheadOption;\n}) {\n return (\n <li\n key={option.name}\n tabIndex={-1}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none\",\n isSelected && \"bg-sus-secondary-green-3 text-accent-foreground\"\n )}\n ref={(el) => {\n option.setRefElement(el);\n }}\n role=\"option\"\n aria-selected={isSelected}\n id={`typeahead-item-${index}`}\n onMouseEnter={onMouseEnter}\n onClick={onClick}\n >\n <span className=\"font-medium\">{option.name}</span>\n </li>\n );\n}\n\nexport type MentionsPluginProps<T> = {\n mentions?: T[];\n /** Configuration for mapping mention item fields */\n mentionConfig: MentionConfig<T>;\n /** Optional trigger character (e.g., \"$\", \"@\", \"{{\"). If not provided, suggestions appear when typing matching text */\n trigger?: string;\n /** If true, suggestions will ONLY appear when the trigger is typed. Text matching is disabled. */\n triggerOnly?: boolean;\n};\n\nexport function MentionsPlugin<T>({\n mentions = [],\n mentionConfig,\n trigger,\n triggerOnly = false\n}: MentionsPluginProps<T>): React.ReactNode {\n const [editor] = useLexicalComposerContext();\n const [queryString, setQueryString] = useState<string | null>(null);\n\n // Create a lookup map for quick variable matching\n const mentionKeyMap = useMemo(() => {\n const map = new Map<string, T>();\n mentions.forEach((item) => {\n // Extract the variable name without braces, e.g., \"FIRSTNAME\" from \"{{FIRSTNAME}}\"\n const keyWithoutBraces = mentionConfig\n .getName(item)\n .replace(/^\\{\\{|\\}\\}$/g, \"\")\n .toUpperCase();\n map.set(keyWithoutBraces, item);\n map.set(mentionConfig.getName(item).toUpperCase(), item);\n });\n return map;\n }, [mentions, mentionConfig]);\n\n // Listen for text changes and auto-convert complete variables to mention nodes\n useEffect(() => {\n if (mentions.length === 0) return;\n\n let isUpdating = false;\n\n return editor.registerUpdateListener(({ editorState, tags }) => {\n // Skip if we're already processing an update or if this is our own update\n if (isUpdating || tags.has(\"mention-conversion\")) return;\n\n editorState.read(() => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) return;\n\n const anchorNode = selection.anchor.getNode();\n if (!$isTextNode(anchorNode)) return;\n\n const textContent = anchorNode.getTextContent();\n const matches = [...textContent.matchAll(COMPLETE_VARIABLE_REGEX)];\n\n if (matches.length === 0) return;\n\n // Check if any match corresponds to a known variable\n for (const match of matches) {\n const fullMatch = match[0]; // e.g., \"{{FIRSTNAME}}\"\n const variableName = match[1]; // e.g., \"FIRSTNAME\"\n\n const mentionItem =\n mentionKeyMap.get(variableName.toUpperCase()) || mentionKeyMap.get(fullMatch.toUpperCase());\n\n if (mentionItem) {\n isUpdating = true;\n // Schedule the replacement outside of read\n setTimeout(() => {\n editor.update(\n () => {\n const currentSelection = $getSelection();\n if (!$isRangeSelection(currentSelection)) {\n isUpdating = false;\n return;\n }\n\n const node = currentSelection.anchor.getNode();\n if (!$isTextNode(node)) {\n isUpdating = false;\n return;\n }\n\n const text = node.getTextContent();\n const startIndex = text.indexOf(fullMatch);\n\n if (startIndex === -1) {\n isUpdating = false;\n return;\n }\n\n // Split the text node and insert mention\n const [before, after] = node.splitText(startIndex, startIndex + fullMatch.length);\n\n if (after) {\n const mentionNode = $createMentionNode(\n mentionConfig.getName(mentionItem),\n mentionConfig.getLabel(mentionItem)\n );\n after.replace(mentionNode);\n mentionNode.selectNext();\n } else if (before && before.getTextContent() === fullMatch) {\n const mentionNode = $createMentionNode(\n mentionConfig.getName(mentionItem),\n mentionConfig.getLabel(mentionItem)\n );\n before.replace(mentionNode);\n mentionNode.selectNext();\n }\n isUpdating = false;\n },\n { tag: \"mention-conversion\" }\n );\n }, 0);\n break; // Only process one at a time to avoid conflicts\n }\n }\n });\n });\n }, [editor, mentions, mentionKeyMap, mentionConfig]);\n\n // Handle paste event - convert {{...}} patterns to mention nodes immediately\n useEffect(() => {\n if (mentions.length === 0) return;\n\n return editor.registerCommand(\n PASTE_COMMAND,\n (event: ClipboardEvent) => {\n const clipboardData = event.clipboardData;\n if (!clipboardData) return false;\n\n const pastedText = clipboardData.getData(\"text/plain\");\n if (!pastedText) return false;\n\n // Check if pasted text contains variable patterns\n const variableMatches = [...pastedText.matchAll(COMPLETE_VARIABLE_REGEX)];\n\n // Check if any matches correspond to known variables\n const hasKnownVariable = variableMatches.some((match) => {\n const variableName = match[1];\n const fullMatch = match[0];\n return (\n mentionKeyMap.has(variableName.toUpperCase()) || mentionKeyMap.has(fullMatch.toUpperCase())\n );\n });\n\n if (!hasKnownVariable) return false;\n\n // Prevent default paste and handle custom insertion\n event.preventDefault();\n\n editor.update(\n () => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) return;\n\n // Split pasted text by variable patterns and insert nodes\n let lastIndex = 0;\n const nodesToInsert: (TextNode | ReturnType<typeof $createMentionNode>)[] = [];\n\n for (const match of variableMatches) {\n const fullMatch = match[0];\n const variableName = match[1];\n const matchIndex = match.index!;\n\n // Add text before the match\n if (matchIndex > lastIndex) {\n const textBefore = pastedText.slice(lastIndex, matchIndex);\n nodesToInsert.push($createTextNode(textBefore));\n }\n\n // Check if this is a known variable\n const mentionItem =\n mentionKeyMap.get(variableName.toUpperCase()) ||\n mentionKeyMap.get(fullMatch.toUpperCase());\n\n if (mentionItem) {\n // Create mention node\n nodesToInsert.push(\n $createMentionNode(\n mentionConfig.getName(mentionItem),\n mentionConfig.getLabel(mentionItem)\n )\n );\n // Add space after mention\n nodesToInsert.push($createTextNode(\" \"));\n } else {\n // Keep as text if not a known variable\n nodesToInsert.push($createTextNode(fullMatch));\n }\n\n lastIndex = matchIndex + fullMatch.length;\n }\n\n // Add remaining text after last match\n if (lastIndex < pastedText.length) {\n nodesToInsert.push($createTextNode(pastedText.slice(lastIndex)));\n }\n\n // Insert all nodes\n for (const node of nodesToInsert) {\n selection.insertNodes([node]);\n }\n },\n { tag: \"paste-mention-conversion\" }\n );\n\n return true;\n },\n COMMAND_PRIORITY_LOW\n );\n }, [editor, mentions, mentionKeyMap, mentionConfig]);\n\n const options = useMemo(() => {\n if (!queryString) {\n return mentions.map(\n (item) => new MentionTypeaheadOption(mentionConfig.getName(item), mentionConfig.getLabel(item))\n );\n }\n\n const lowerQuery = queryString.toLowerCase();\n return mentions\n .filter((item) => {\n const keyWithoutBraces = mentionConfig\n .getName(item)\n .replace(/^\\{\\{|\\}\\}$/g, \"\")\n .toLowerCase();\n return (\n mentionConfig.getLabel(item).toLowerCase().includes(lowerQuery) ||\n keyWithoutBraces.includes(lowerQuery) ||\n mentionConfig.getName(item).toLowerCase().includes(lowerQuery)\n );\n })\n .map(\n (item) => new MentionTypeaheadOption(mentionConfig.getName(item), mentionConfig.getLabel(item))\n );\n }, [mentions, queryString, mentionConfig]);\n\n const onSelectOption = useCallback(\n (selectedOption: MentionTypeaheadOption, nodeToReplace: TextNode | null, closeMenu: () => void) => {\n editor.update(() => {\n const mentionNode = $createMentionNode(selectedOption.name, selectedOption.fieldName);\n if (nodeToReplace) {\n nodeToReplace.replace(mentionNode);\n }\n // Insert a space after mention so user can continue typing or delete\n mentionNode.selectNext();\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n selection.insertText(\" \");\n }\n closeMenu();\n });\n },\n [editor]\n );\n\n const checkForMentionMatch = useCallback(\n (text: string) => {\n // If trigger is provided, check for trigger match first\n if (trigger) {\n const triggerMatch = checkForTriggerMatch(text, trigger);\n if (triggerMatch) {\n return triggerMatch;\n }\n // If triggerOnly is enabled, do not fall through to text match\n if (triggerOnly) {\n return null;\n }\n }\n // Check for text match (typing variable name directly)\n return checkForTextMatch(text, mentions, mentionConfig);\n },\n [trigger, triggerOnly, mentions, mentionConfig]\n );\n\n if (mentions.length === 0) {\n return null;\n }\n\n return (\n <LexicalTypeaheadMenuPlugin<MentionTypeaheadOption>\n onQueryChange={setQueryString}\n onSelectOption={onSelectOption}\n triggerFn={checkForMentionMatch}\n options={options}\n menuRenderFn={(\n anchorElementRef,\n { selectedIndex, selectOptionAndCleanUp, setHighlightedIndex }\n ) => {\n if (!anchorElementRef.current || options.length === 0) {\n return null;\n }\n\n const rect = anchorElementRef.current.getBoundingClientRect();\n const top = rect.bottom + window.scrollY;\n const left = rect.left + window.scrollX;\n\n return createPortal(\n <div\n className=\"absolute z-9999 min-w-[200px] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\"\n style={{\n top: `${top}px`,\n left: `${left}px`\n }}\n >\n <ul className=\"max-h-[200px] overflow-y-auto\">\n {options.map((option, i) => (\n <MentionsTypeaheadMenuItem\n index={i}\n isSelected={selectedIndex === i}\n onClick={() => {\n setHighlightedIndex(i);\n selectOptionAndCleanUp(option);\n }}\n onMouseEnter={() => {\n setHighlightedIndex(i);\n }}\n key={option.key}\n option={option}\n />\n ))}\n </ul>\n </div>,\n document.body\n );\n }}\n />\n );\n}\n","import { useEffect } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $getNodeByKey } from \"lexical\";\n\nexport function MentionDeletePlugin(): null {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n const handleMentionDelete = (e: Event) => {\n const customEvent = e as CustomEvent<{ nodeKey: string }>;\n const nodeKey = customEvent.detail.nodeKey;\n\n editor.update(() => {\n const node = $getNodeByKey(nodeKey);\n if (node) {\n node.remove();\n }\n });\n };\n\n // Listen on document level\n document.addEventListener(\"mention-delete\", handleMentionDelete, true);\n\n return () => {\n document.removeEventListener(\"mention-delete\", handleMentionDelete, true);\n };\n }, [editor]);\n\n return null;\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { EditorState, LexicalEditor } from \"lexical\";\nimport { useEffect, useRef } from \"react\";\n\nconst SKIP_TAGS = new Set([\"controlled-value-sync\", \"mention-conversion\"]);\n\nexport function OnChangePluginFiltered({\n onChange,\n ignoreSelectionChange = true\n}: {\n onChange: (editorState: EditorState, editor: LexicalEditor) => void;\n ignoreSelectionChange?: boolean;\n}) {\n const [editor] = useLexicalComposerContext();\n const lastEditorStateRef = useRef<string | null>(null);\n\n useEffect(() => {\n return editor.registerUpdateListener(({ editorState, tags, dirtyElements, dirtyLeaves }) => {\n // Skip updates with certain tags\n for (const tag of tags) {\n if (SKIP_TAGS.has(tag)) {\n return;\n }\n }\n\n // Skip selection-only changes if configured\n if (ignoreSelectionChange && dirtyElements.size === 0 && dirtyLeaves.size === 0) {\n return;\n }\n\n // Prevent duplicate onChange calls with same state\n const serialized = JSON.stringify(editorState.toJSON());\n if (lastEditorStateRef.current === serialized) {\n return;\n }\n lastEditorStateRef.current = serialized;\n\n onChange(editorState, editor);\n });\n }, [editor, onChange, ignoreSelectionChange]);\n\n return null;\n}\n","import { useEffect } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $getSelection, $isRangeSelection, RootNode } from \"lexical\";\nimport { trimTextContentFromAnchor } from \"@lexical/selection\";\n\nexport interface MaxLengthPluginProps {\n maxLength?: number;\n}\n\nexport function MaxLengthPlugin({ maxLength }: MaxLengthPluginProps) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n if (!maxLength) return;\n\n let lastRestoredTextLength = 0;\n\n return editor.registerNodeTransform(RootNode, (rootNode) => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return;\n }\n\n const prevTextLength = lastRestoredTextLength;\n const textLength = rootNode.getTextContentSize();\n\n if (prevTextLength !== textLength) {\n const delCount = textLength - maxLength;\n const anchor = selection.anchor;\n\n if (delCount > 0) {\n // Restore the old selection if the text content got trimmed\n if (prevTextLength === maxLength && lastRestoredTextLength !== maxLength) {\n lastRestoredTextLength = maxLength;\n $restoreTextContent(anchor);\n } else {\n trimTextContentFromAnchor(editor, anchor, delCount);\n }\n }\n }\n });\n }, [editor, maxLength]);\n\n return null;\n}\n\nfunction $restoreTextContent(anchor: { key: string; offset: number }) {\n const selection = $getSelection();\n\n if ($isRangeSelection(selection)) {\n selection.anchor.set(anchor.key, anchor.offset, \"text\");\n selection.focus.set(anchor.key, anchor.offset, \"text\");\n }\n}\n","import { $getRoot, EditorState, LexicalEditor } from \"lexical\";\nimport { forwardRef, useCallback, useEffect, useMemo, useRef } from \"react\";\nimport {\n EditorSerializedState,\n RichTextProps,\n RichTextSerializedState,\n createDefaultMentionConfig,\n DefaultMentionItem,\n MentionConfig\n} from \"./types\";\nimport { parseSerializedEditorState } from \"./utils\";\nimport { HeadingNode, QuoteNode } from \"@lexical/rich-text\";\nimport { ListItemNode, ListNode } from \"@lexical/list\";\nimport { LinkNode } from \"@lexical/link\";\nimport { CodeNode } from \"@lexical/code\";\nimport { ImageNode } from \"./nodes/ImageNode\";\nimport { MentionNode } from \"./nodes/MentionNode\";\nimport { $generateHtmlFromNodes } from \"@lexical/html\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { cn } from \"@/utils\";\nimport { TRANSFORMERS } from \"@lexical/markdown\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { ListPlugin } from \"@lexical/react/LexicalListPlugin\";\nimport { LinkPlugin } from \"@lexical/react/LexicalLinkPlugin\";\nimport { MarkdownShortcutPlugin } from \"@lexical/react/LexicalMarkdownShortcutPlugin\";\nimport { AutoFocusPlugin } from \"@lexical/react/LexicalAutoFocusPlugin\";\nimport { RichTextPlugin } from \"@lexical/react/LexicalRichTextPlugin\";\nimport { ContentEditable } from \"@lexical/react/LexicalContentEditable\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { ToolbarPlugin } from \"./toolbar\";\nimport { ImagesPlugin } from \"./plugins/ImagePlugin\";\nimport { EditableStatePlugin } from \"./plugins/EditableStatePlugin\";\nimport { ControlledValuePlugin } from \"./plugins/ControlledValuePlugin\";\nimport { MentionsPlugin } from \"./plugins/MentionsPlugin\";\nimport { MentionDeletePlugin } from \"./plugins/MentionDeletePlugin\";\nimport { OnChangePluginFiltered } from \"./plugins/OnChangePluginFiltered\";\nimport { MaxLengthPlugin } from \"./plugins/MaxLengthPlugin\";\n\nconst theme = {\n paragraph: \"mb-2 leading-normal 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: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-0.5 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 = [\n HeadingNode,\n QuoteNode,\n ListNode,\n ListItemNode,\n LinkNode,\n CodeNode,\n ImageNode,\n MentionNode\n];\n\nfunction RichTextInner<T = DefaultMentionItem>(\n {\n value,\n defaultValue,\n onChange,\n onHtmlChange,\n onTextChange,\n placeholder,\n readOnly,\n disabled,\n editorClassName,\n toolbarClassName,\n autoFocus,\n onImageUpload,\n onImageUploadError,\n onImageDialogUpload,\n onImageDialogUploadError,\n acceptImageMimeTypes = \"image/*\",\n allowImageUrlInsert = true,\n hideImageUploadButton = false,\n maxLength,\n mentions,\n mentionConfig,\n mentionTrigger,\n mentionTriggerOnly,\n plainTextMentions = false,\n className,\n id,\n ...rest\n }: RichTextProps<T>,\n ref: React.Ref<HTMLDivElement>\n) {\n // Use default config if not provided\n const finalMentionConfig = useMemo(\n () => mentionConfig || (createDefaultMentionConfig<DefaultMentionItem>() as MentionConfig<T>),\n [mentionConfig]\n );\n\n const initialSerializedStateRef = useRef<EditorSerializedState | undefined>(undefined);\n\n if (initialSerializedStateRef.current === undefined) {\n initialSerializedStateRef.current = parseSerializedEditorState(value ?? defaultValue);\n }\n\n // Set plain text mode for mentions export\n useEffect(() => {\n MentionNode.plainTextMode = plainTextMentions;\n }, [plainTextMentions]);\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 if (onTextChange) {\n let text = \"\";\n editorState.read(() => {\n text = $getRoot().getTextContent();\n });\n onTextChange(text, editorState);\n }\n },\n [onChange, onHtmlChange, onTextChange]\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-black bg-background text-sm shadow-sm\",\n \"flex min-h-48 flex-col rounded-md border transition-[color,border-color]\",\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) || Boolean(readOnly)}\n onImageUpload={onImageUpload}\n onImageUploadError={onImageUploadError}\n allowImageUrlInsert={allowImageUrlInsert}\n acceptImageMimeTypes={acceptImageMimeTypes}\n hideImageUploadButton={hideImageUploadButton}\n onImageDialogUpload={onImageDialogUpload}\n onImageDialogUploadError={onImageDialogUploadError}\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-40 whitespace-pre-wrap wrap-break-word px-3 py-2 text-sm leading-6 text-foreground outline-none\",\n editorClassName\n )}\n />\n }\n placeholder={<div className={theme.placeholder}>{placeholder}</div>}\n ErrorBoundary={LexicalErrorBoundary}\n />\n <HistoryPlugin />\n <ListPlugin />\n <LinkPlugin />\n <ImagesPlugin />\n <MentionsPlugin\n mentions={mentions}\n mentionConfig={finalMentionConfig}\n trigger={mentionTrigger}\n triggerOnly={mentionTriggerOnly}\n />\n <MentionDeletePlugin />\n <MarkdownShortcutPlugin transformers={TRANSFORMERS} />\n {autoFocus ?\n <AutoFocusPlugin />\n : null}\n <EditableStatePlugin editable={editable} />\n <ControlledValuePlugin value={value} trackAppliedValue={appliedValueRef} />\n <OnChangePluginFiltered onChange={handleChange} ignoreSelectionChange />\n {maxLength && <MaxLengthPlugin maxLength={maxLength} />}\n </div>\n </div>\n </LexicalComposer>\n );\n}\n\nconst RichText = forwardRef(RichTextInner) as <T = DefaultMentionItem>(\n props: RichTextProps<T> & { ref?: React.Ref<HTMLDivElement> }\n) => ReturnType<typeof RichTextInner>;\n\nexport { RichText };\nexport type { RichTextProps, RichTextSerializedState, MentionConfig } from \"./types\";\n","import * as React from \"react\";\n\nimport { cn } from \"@/utils\";\nimport { useTruncated } from \"@/hooks\";\nimport DefaultContainer from \"@/components/ui/container\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"@/components/ui/tooltip\";\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 const titleRef = React.useRef<HTMLSpanElement>(null);\n const isTruncated = useTruncated({ elementRef: titleRef });\n\n const textElement =\n title ?\n <span\n ref={titleRef}\n className={cn(\n \"text-lg font-semibold text-sus-green-1 truncate whitespace-pre\",\n classNames?.title\n )}\n >\n {title}\n </span>\n : null;\n\n return (\n <div className={cn(\"flex items-start justify-between gap-1\", classNames?.header)}>\n <div className=\"flex items-center gap-1 min-w-0\">\n {icon ?\n <div\n className={cn(\n \"w-10 h-10 rounded-full bg-sus-green-50 flex items-start justify-center\",\n classNames?.iconWrapper\n )}\n >\n {icon}\n </div>\n : null}\n\n <div className=\"flex flex-col min-w-0\">\n {subtitle ?\n <span className={cn(\"text-xs text-gray-500 whitespace-pre-wrap\", classNames?.subtitle)}>\n {subtitle}\n </span>\n : null}\n {textElement ?\n isTruncated ?\n <Tooltip>\n <TooltipTrigger asChild>{textElement}</TooltipTrigger>\n <TooltipContent className=\"whitespace-pre-wrap\">{title}</TooltipContent>\n </Tooltip>\n : textElement\n : null}\n </div>\n </div>\n {rightActions ?\n <div className=\"flex items-center gap-2\">{rightActions}</div>\n : null}\n </div>\n );\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 min-w-0 px-4 py-6 justify-center\", classNames?.body)}>\n <div\n className={cn(\n \"w-full max-w-3xl min-w-0 overflow-x-hidden overflow-y-auto\",\n classNames?.content\n )}\n >\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 type { SourceInfo } from \"react-number-format\";\nimport type React from \"react\";\n\nexport const createSourceInfo = (event?: React.SyntheticEvent<HTMLInputElement>): SourceInfo => ({\n event,\n source: (event ? \"event\" : \"prop\") as SourceInfo[\"source\"]\n});\n\nexport const parseToNumber = (val: unknown): number | undefined => {\n if (typeof val === \"number\") return Number.isFinite(val) ? val : undefined;\n if (typeof val === \"string\" && val !== \"\") {\n const parsed = parseFloat(val);\n if (Number.isFinite(parsed)) return parsed;\n }\n return undefined;\n};\n\n/** Truncate + zero-pad to a fixed number of decimal places, returned as a string.\n * Entirely string-based — never uses toFixed() which can round.\n * e.g. truncateToFixed(10.12222, 2) → \"10.12\"\n * truncateToFixed(10, 2) → \"10.00\"\n * truncateToFixed(5.1, 3) → \"5.100\" */\nexport const truncateToFixed = (num: number, scale: number): string => {\n if (scale === 0) return Math.trunc(num).toString();\n\n const sign = num < 0 ? \"-\" : \"\";\n const abs = Math.abs(num);\n const str = abs.toString();\n const dotIndex = str.indexOf(\".\");\n\n let intPart: string;\n let fracPart: string;\n\n if (dotIndex === -1) {\n intPart = str;\n fracPart = \"\";\n } else {\n intPart = str.slice(0, dotIndex);\n fracPart = str.slice(dotIndex + 1, dotIndex + 1 + scale);\n }\n\n // Zero-pad if needed\n fracPart = fracPart.padEnd(scale, \"0\");\n\n return `${sign}${intPart}.${fracPart}`;\n};\n\n/** Truncate + zero-pad a raw numeric *string* to a fixed number of decimal places.\n * Entirely string-based — safe for overflow numbers where floatValue loses precision.\n * e.g. truncateStringToFixed(\"123456789012345678901234567890.456\", 2) → \"123456789012345678901234567890.45\"\n * truncateStringToFixed(\"10\", 2) → \"10.00\"\n * truncateStringToFixed(\"5.1\", 3) → \"5.100\" */\nexport const truncateStringToFixed = (str: string, scale: number): string => {\n // Strip leading/trailing whitespace\n const trimmed = str.trim();\n if (trimmed === \"\" || trimmed === \"-\") return \"0\" + (scale > 0 ? \".\" + \"0\".repeat(scale) : \"\");\n\n // Handle sign\n const negative = trimmed.startsWith(\"-\");\n const unsigned = negative ? trimmed.slice(1) : trimmed;\n\n const dotIndex = unsigned.indexOf(\".\");\n\n let intPart: string;\n let fracPart: string;\n\n if (dotIndex === -1) {\n intPart = unsigned || \"0\";\n fracPart = \"\";\n } else {\n intPart = unsigned.slice(0, dotIndex) || \"0\";\n fracPart = unsigned.slice(dotIndex + 1, dotIndex + 1 + scale);\n }\n\n if (scale === 0) return (negative ? \"-\" : \"\") + intPart;\n\n fracPart = fracPart.padEnd(scale, \"0\");\n return (negative ? \"-\" : \"\") + intPart + \".\" + fracPart;\n};\n\n/** Clamp a number between min and max. */\nexport const clamp = (value: number, min?: number, max?: number): number => {\n if (max !== undefined && value > max) return max;\n if (min !== undefined && value < min) return min;\n return value;\n};\n\n/** Converts a number or string CSS dimension to a resolved CSS value.\n * Works for width, minWidth, maxWidth, etc.\n * e.g. 120 → \"120px\", \"50%\" → \"50%\", undefined → undefined */\nexport const resolveCssSize = (value: number | string | undefined): string | undefined =>\n value !== undefined ?\n typeof value === \"number\" ?\n `${value}px`\n : value\n : undefined;\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\";\nimport { resolveCssSize } from \"./helper\";\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 aria-invalid:hover:border-destructive aria-invalid:focus-visible: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\n/** Variants applied to the flex wrapper when addons are present */\nconst wrapperBorderVariants = cva(\n \"flex items-center overflow-hidden border bg-white transition-colors\",\n {\n variants: {\n controlSize: {\n sm: \"h-9 rounded-md text-sm\",\n md: \"h-10 rounded-lg text-sm\",\n lg: \"h-12 rounded-xl text-base\"\n },\n appearance: {\n filled: \"border-neutral-200 hover:border-neutral-500 focus-within:border-neutral-900\",\n unfilled: \"border-neutral-300 hover:border-neutral-500 focus-within:border-neutral-900\"\n }\n },\n defaultVariants: {\n controlSize: \"sm\",\n appearance: \"filled\"\n }\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 showPrefixDivider?: boolean;\n showSuffixDivider?: boolean;\n prefixWidth?: number | string;\n suffixWidth?: number | string;\n prefixMinWidth?: number | string;\n suffixMinWidth?: number | string;\n prefixMaxWidth?: number | string;\n suffixMaxWidth?: number | string;\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 showPrefixDivider,\n showSuffixDivider,\n prefixWidth,\n suffixWidth,\n prefixMinWidth,\n suffixMinWidth,\n prefixMaxWidth,\n suffixMaxWidth,\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 resolvedPrefixWidth = resolveCssSize(prefixWidth);\n const resolvedSuffixWidth = resolveCssSize(suffixWidth);\n const resolvedPrefixMinWidth = resolveCssSize(prefixMinWidth);\n const resolvedSuffixMinWidth = resolveCssSize(suffixMinWidth);\n const resolvedPrefixMaxWidth = resolveCssSize(prefixMaxWidth);\n const resolvedSuffixMaxWidth = resolveCssSize(suffixMaxWidth);\n\n const hasPrefixDimension = resolvedPrefixWidth || resolvedPrefixMinWidth || resolvedPrefixMaxWidth;\n const hasSuffixDimension = resolvedSuffixWidth || resolvedSuffixMinWidth || resolvedSuffixMaxWidth;\n\n // ---- No-addon path (unchanged) ----\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 // Only apply padding offsets in the legacy (non-flex) path\n !hasPrefix && !hasSuffix && 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 // ---- Flex wrapper (addon present) ----\n const flexWrapperClassName = cn(\n wrapperBorderVariants({ controlSize, appearance }),\n isFullWidth ? \"w-full\" : \"w-fit\",\n rest.disabled &&\n \"bg-sus-secondary-gray-3 border-sus-secondary-gray-5 hover:border-sus-secondary-gray-5\",\n resolvedAriaInvalid &&\n \"border-destructive hover:border-destructive focus-within:border-destructive\",\n !validationMessage && wrapperClassName\n );\n\n /** The divider element that inherits border color */\n const divider = (\n <div data-slot=\"addon-divider\" className=\"self-stretch w-px shrink-0 bg-neutral-200\" />\n );\n\n const flexInput = (\n <InputPrimitive\n ref={ref}\n type={type}\n data-slot=\"input\"\n className={cn(\n \"flex-1 min-w-0 h-full border-0 rounded-none bg-transparent px-3 outline-none ring-0\",\n \"placeholder:text-neutral-400 text-neutral-900 text-sm transition-colors\",\n \"focus-visible:ring-0 focus-visible:border-0\",\n \"disabled:cursor-not-allowed disabled:bg-transparent disabled:text-neutral-400\",\n className\n )}\n aria-invalid={resolvedAriaInvalid}\n aria-describedby={describedBy || undefined}\n onChange={handleChange}\n {...inputProps}\n />\n );\n\n const inputWithAffixes = (\n <div data-slot=\"input-wrapper\" className={cn(\"group/input-wrapper\", flexWrapperClassName)}>\n {hasPrefix && (\n <span\n {...prefixRest}\n data-slot=\"addon-prefix\"\n className={cn(\n \"shrink-0 inline-flex items-center px-3 text-sm text-muted-foreground\",\n hasPrefixDimension ? \"overflow-hidden\" : \"whitespace-nowrap\",\n rest.disabled && \"text-neutral-400\",\n !prefixInteractive && \"pointer-events-none\",\n prefixClassName\n )}\n style={\n hasPrefixDimension ?\n {\n ...(resolvedPrefixWidth && { width: resolvedPrefixWidth }),\n ...(resolvedPrefixMinWidth && { minWidth: resolvedPrefixMinWidth }),\n ...(resolvedPrefixMaxWidth && { maxWidth: resolvedPrefixMaxWidth }),\n boxSizing: \"border-box\",\n ...prefixRest?.style\n }\n : prefixRest?.style\n }\n >\n {addonPrefix}\n </span>\n )}\n\n {hasPrefix && showPrefixDivider && divider}\n\n {flexInput}\n\n {hasSuffix && showSuffixDivider && divider}\n\n {hasSuffix && (\n <span\n {...suffixRest}\n data-slot=\"addon-suffix\"\n className={cn(\n \"shrink-0 inline-flex items-center gap-2 px-3 text-sm text-muted-foreground\",\n hasSuffixDimension ? \"overflow-hidden\" : \"whitespace-nowrap\",\n rest.disabled && \"text-neutral-400\",\n !suffixInteractive && \"pointer-events-none\",\n suffixClassName\n )}\n style={\n hasSuffixDimension ?\n {\n ...(resolvedSuffixWidth && { width: resolvedSuffixWidth }),\n ...(resolvedSuffixMinWidth && { minWidth: resolvedSuffixMinWidth }),\n ...(resolvedSuffixMaxWidth && { maxWidth: resolvedSuffixMaxWidth }),\n boxSizing: \"border-box\",\n ...suffixRest?.style\n }\n : suffixRest?.style\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 * as React from \"react\";\nimport { clamp } from \"./helper\";\n\nexport interface UseStepperOptions {\n value: number | undefined;\n step: number;\n min: number | undefined;\n max: number | undefined;\n disabled: boolean | undefined;\n /** Called with the new clamped value after step */\n onStep: (value: number) => void;\n}\n\n/**\n * Manages stepper (increment/decrement) behavior.\n * Pure logic — no knowledge of formatting or NumericFormat.\n */\nexport function useStepper({ value, step, min, max, disabled, onStep }: UseStepperOptions) {\n const changeValue = React.useCallback(\n (delta: number) => {\n const current = value ?? 0;\n const clamped = clamp(current + delta, min, max);\n onStep(clamped);\n },\n [value, max, min, onStep]\n );\n\n const increment = React.useCallback(() => changeValue(step), [changeValue, step]);\n const decrement = React.useCallback(() => changeValue(-step), [changeValue, step]);\n\n const isIncrementDisabled = disabled || (max !== undefined && (value ?? 0) >= max);\n const isDecrementDisabled = disabled || (min !== undefined && (value ?? 0) <= min);\n\n return { increment, decrement, isIncrementDisabled, isDecrementDisabled };\n}\n","import * as React from \"react\";\nimport { NumericFormat, NumericFormatProps, NumberFormatValues, SourceInfo } from \"react-number-format\";\nimport { ChevronUp, ChevronDown } from \"lucide-react\";\nimport { Input, type InputProps } from \"./BaseInput\";\nimport { cn } from \"@/utils\";\nimport {\n createSourceInfo,\n parseToNumber,\n clamp,\n truncateToFixed,\n truncateStringToFixed\n} from \"./helper\";\nimport { useStepper } from \"./useStepper\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\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 showStepper?: boolean;\n step?: number;\n min?: number;\n max?: number;\n onStepChange?: (value: number) => void;\n fillDecimalOnBlur?: boolean;\n truncateDecimalOnBlur?: boolean;\n maxIntegerDigits?: number;\n invalid?: boolean;\n};\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nconst InputNumber = ({\n customInputProps,\n showStepper = false,\n step = 1,\n min,\n max,\n onStepChange,\n onValueChange,\n value,\n defaultValue,\n disabled,\n onBlur,\n isAllowed: isAllowedProp,\n fillDecimalOnBlur = false,\n truncateDecimalOnBlur = false,\n maxIntegerDigits,\n invalid,\n decimalScale: decimalScaleProp,\n fixedDecimalScale: fixedDecimalScaleProp,\n ...props\n}: InputNumberProps) => {\n const blurFormatEnabled = fillDecimalOnBlur || truncateDecimalOnBlur;\n const blurScale = blurFormatEnabled ? (decimalScaleProp ?? 2) : undefined;\n\n // --- State & refs ---\n // displayOverride: set by event handlers (blur/stepper) to override NumericFormat's display.\n // Cleared when user types or when external value prop changes.\n const [displayOverride, setDisplayOverride] = React.useState<string | undefined>(() => {\n if (!blurFormatEnabled) return undefined;\n const scale = decimalScaleProp ?? 2;\n const initial = parseToNumber(value) ?? parseToNumber(defaultValue);\n if (initial !== undefined) return truncateToFixed(initial, scale);\n return undefined;\n });\n\n // numericValue: internal numeric for stepper calculations and uncontrolled mode\n const [numericValue, setNumericValue] = React.useState<number | undefined>(\n () => parseToNumber(value) ?? parseToNumber(defaultValue)\n );\n\n const isEditingRef = React.useRef(false);\n const rawRef = React.useRef<string>(\"\");\n const prevValueRef = React.useRef(value);\n\n // --- Render-time prop sync (replaces useEffect) ---\n // Per https://react.dev/learn/you-might-not-need-an-effect#adjusting-some-state-when-a-prop-changes\n if (value !== prevValueRef.current) {\n prevValueRef.current = value;\n\n if (value === \"\" || value === null) {\n // External clear\n if (displayOverride !== undefined) setDisplayOverride(undefined);\n if (numericValue !== undefined) setNumericValue(undefined);\n isEditingRef.current = false;\n } else if (!isEditingRef.current) {\n const num = parseToNumber(value);\n if (num !== numericValue) setNumericValue(num);\n if (blurFormatEnabled && num !== undefined) {\n const formatted = truncateToFixed(num, blurScale!);\n if (formatted !== displayOverride) setDisplayOverride(formatted);\n } else {\n if (displayOverride !== undefined) setDisplayOverride(undefined);\n }\n }\n }\n\n // --- Compose isAllowed: maxIntegerDigits check + user-supplied isAllowed ---\n const isAllowed = React.useMemo(() => {\n if (maxIntegerDigits === undefined && !isAllowedProp) return undefined;\n\n return (values: NumberFormatValues) => {\n if (maxIntegerDigits !== undefined) {\n const raw = values.value;\n const unsigned = raw.replace(/^-/, \"\");\n const intPart = unsigned.split(\".\")[0].replace(/^0+/, \"\") || \"0\";\n if (intPart.length > maxIntegerDigits) return false;\n }\n return isAllowedProp ? isAllowedProp(values) : true;\n };\n }, [maxIntegerDigits, isAllowedProp]);\n\n // --- Stepper ---\n const stepper = useStepper({\n value: numericValue,\n step,\n min,\n max,\n disabled,\n onStep: React.useCallback(\n (clamped: number) => {\n setNumericValue(clamped);\n const formatted =\n blurScale !== undefined ? truncateToFixed(clamped, blurScale) : String(clamped);\n setDisplayOverride(formatted);\n rawRef.current = String(clamped);\n onStepChange?.(clamped);\n onValueChange?.(\n { floatValue: clamped, formattedValue: formatted, value: String(clamped) },\n createSourceInfo()\n );\n },\n [blurScale, onStepChange, onValueChange]\n )\n });\n\n // --- Event handlers ---\n const handleValueChange = React.useCallback(\n (values: NumberFormatValues, sourceInfo: SourceInfo) => {\n const safeFloatValue =\n typeof values.floatValue === \"number\" && Number.isFinite(values.floatValue) ?\n values.floatValue\n : undefined;\n const normalizedValues =\n safeFloatValue === values.floatValue ? values : { ...values, floatValue: safeFloatValue };\n\n if (sourceInfo.source === \"event\") {\n isEditingRef.current = true;\n setDisplayOverride(values.value);\n }\n setNumericValue(safeFloatValue);\n rawRef.current = values.value;\n onValueChange?.(normalizedValues, sourceInfo);\n if (safeFloatValue !== undefined) onStepChange?.(safeFloatValue);\n },\n [onValueChange, onStepChange]\n );\n\n const handleBlur = React.useCallback(\n (event: React.FocusEvent<HTMLInputElement>) => {\n isEditingRef.current = false;\n onBlur?.(event);\n\n const currentNumeric = numericValue;\n\n if (currentNumeric === undefined) {\n // Keep displayOverride as \"\" so the empty display persists even when the\n // controlled `value` prop hasn't updated (e.g. RHF field.onChange(undefined)\n // reverts to defaultValue instead of clearing).\n setDisplayOverride(\"\");\n return;\n }\n\n // --- Blur-time min/max clamping ---\n const clamped = clamp(currentNumeric, min, max);\n const wasClamped = clamped !== currentNumeric;\n\n if (wasClamped) {\n setNumericValue(clamped);\n rawRef.current = String(clamped);\n onValueChange?.(\n { floatValue: clamped, formattedValue: String(clamped), value: String(clamped) },\n createSourceInfo()\n );\n onStepChange?.(clamped);\n }\n\n // --- Blur-time decimal formatting ---\n if (blurFormatEnabled && blurScale !== undefined) {\n const rawStr = wasClamped ? String(clamped) : rawRef.current || String(clamped);\n setDisplayOverride(truncateStringToFixed(rawStr, blurScale));\n } else if (wasClamped) {\n setDisplayOverride(String(clamped));\n } else {\n setDisplayOverride(undefined);\n }\n },\n [onBlur, blurFormatEnabled, blurScale, numericValue, min, max, onValueChange, onStepChange]\n );\n\n // --- Derived display value ---\n const isValueExplicitlyEmpty = value === \"\" || value === null;\n\n const effectiveValue =\n isValueExplicitlyEmpty ? \"\"\n : displayOverride !== undefined ? displayOverride\n : value;\n\n const buttonClass = cn(\n \"flex items-center justify-center h-3 w-5 transition-colors outline-none\",\n \"text-neutral-400 hover:text-neutral-600 active:text-neutral-900\",\n disabled && \"opacity-50 cursor-not-allowed\"\n );\n\n // --- Render ---\n return (\n <NumericFormat\n customInput={Input}\n value={effectiveValue?.toString()}\n defaultValue={defaultValue}\n onValueChange={handleValueChange}\n onBlur={handleBlur}\n {...(isAllowed && { isAllowed })}\n {...(truncateDecimalOnBlur ?\n {} // unlimited typing, truncate on blur\n : fillDecimalOnBlur ?\n { decimalScale: decimalScaleProp } // limit typing to decimalScale\n : { decimalScale: decimalScaleProp, fixedDecimalScale: fixedDecimalScaleProp })}\n {...(displayOverride !== undefined && { valueIsNumericString: true })}\n {...props}\n disabled={disabled}\n invalid={invalid}\n {...customInputProps}\n addonSuffix={\n showStepper ?\n <div className=\"flex flex-col -space-y-px\">\n <button\n type=\"button\"\n onClick={stepper.increment}\n disabled={stepper.isIncrementDisabled}\n className={buttonClass}\n tabIndex={-1}\n aria-label=\"Increment\"\n >\n <ChevronUp className=\"h-4 w-4\" strokeWidth={2} />\n </button>\n <button\n type=\"button\"\n onClick={stepper.decrement}\n disabled={stepper.isDecrementDisabled}\n className={buttonClass}\n tabIndex={-1}\n aria-label=\"Decrement\"\n >\n <ChevronDown className=\"h-4 w-4\" strokeWidth={2} />\n </button>\n </div>\n : customInputProps?.addonSuffix\n }\n suffixInteractive={showStepper || customInputProps?.suffixInteractive}\n className={cn(\n showStepper &&\n \"[appearance:textfield] [&::-webkit-outer-spin-button]:appearance-none [&::-webkit-inner-spin-button]:appearance-none\",\n props.className\n )}\n />\n );\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, disabled, className }) => {\n const isDisabled = disabled || onPress === undefined;\n return (\n <button\n type=\"button\"\n disabled={isDisabled}\n onClick={(e) => {\n e.stopPropagation();\n if (isDisabled || !onPress) {\n return;\n }\n onPress();\n }}\n className={cn(\n \"action-menu-btn flex w-full items-center justify-start rounded-sm px-2 py-1.5 text-left text-sm\",\n \"cursor-pointer text-gray-800 hover:bg-[#DDE8E2]\",\n isDisabled && \"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=\"h-4 w-4 text-gray-600\" />}\n </Button>\n </PopoverTrigger>\n\n <PopoverContent\n className={cn(\n \"w-fit min-w-[10.5rem] p-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 disabled={btn.disabled}\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","import React from \"react\";\nimport { ChevronDown } from \"lucide-react\";\nimport {\n DropdownMenu,\n DropdownMenuCheckboxItem,\n DropdownMenuContent,\n DropdownMenuGroup,\n DropdownMenuItem,\n DropdownMenuLabel,\n DropdownMenuPortal,\n DropdownMenuRadioGroup,\n DropdownMenuRadioItem,\n DropdownMenuSeparator,\n DropdownMenuShortcut,\n DropdownMenuSub,\n DropdownMenuSubContent,\n DropdownMenuSubTrigger,\n DropdownMenuTrigger\n} from \"../ui/dropdownMenu\";\nimport { cn } from \"@/utils\";\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport type MenuItemType = \"item\" | \"checkbox\" | \"radio\";\n\nexport type MenuItem = {\n /** Text label rendered inside the menu item. */\n label: string;\n /** Optional icon rendered to the left of the label. */\n icon?: React.ReactNode;\n /** Whether the item is disabled. */\n disabled?: boolean;\n /** Visual variant — only applies to plain `item` type. */\n variant?: \"default\" | \"destructive\";\n /** Keyboard shortcut hint rendered on the right side. */\n shortcut?: string;\n /**\n * Item type:\n * - `'item'` (default) — standard clickable item\n * - `'checkbox'` — checkbox-style item; requires `checked` / `onCheckedChange`\n * - `'radio'` — radio-style item; must be inside a group with `radioGroupValue`\n */\n type?: MenuItemType;\n /** Controlled checked state (checkbox items only). */\n checked?: boolean;\n /** Called when the checked state changes (checkbox items only). */\n onCheckedChange?: (checked: boolean) => void;\n /** Value submitted to the radio group (radio items only). Falls back to `label`. */\n value?: string;\n /** Nested sub-menu items. When present, renders a sub-menu. */\n subItems?: MenuItem[];\n /** Click handler (plain items and sub-trigger items only). */\n onClick?: () => void;\n /** Extra class names forwarded to the rendered menu item element. */\n className?: string;\n};\n\nexport type ActionItemGroup = {\n /** Optional label rendered above the group. */\n groupLabel?: string;\n /** The items in this group. */\n menuItems: MenuItem[];\n /**\n * When provided, the entire group is wrapped in a `DropdownMenuRadioGroup`\n * and items with `type: 'radio'` are used as radio options.\n */\n radioGroupValue?: string;\n /** Called when the selected radio value changes. */\n onRadioValueChange?: (value: string) => void;\n};\n\nexport interface ActionDropdownProps {\n /**\n * Custom trigger element. Accepts any `ReactNode`.\n * When omitted the default label + chevron button is rendered.\n *\n * If you pass a complete button/component, also set `triggerAsChild={true}`\n * so the trigger wrapper does not add an extra element.\n */\n trigger?: React.ReactNode;\n /**\n * Simple string label for the default trigger button.\n * Ignored when `trigger` is provided.\n * @default 'Manage Data'\n */\n triggerLabel?: string;\n /**\n * Forwards `asChild` to `DropdownMenuTrigger`.\n * Use this when `trigger` is already a fully-styled button/component and you\n * don't want the extra wrapper element.\n */\n triggerAsChild?: boolean;\n /** Groups of menu items. Each group is separated by a divider. */\n actionItems?: ActionItemGroup[];\n /** Horizontal alignment of the content relative to the trigger. */\n align?: \"start\" | \"center\" | \"end\";\n /** Side of the trigger where the content appears. */\n side?: \"top\" | \"right\" | \"bottom\" | \"left\";\n /** Pixel distance between the trigger and content. */\n sideOffset?: number;\n /** Extra class names forwarded to the `DropdownMenuTrigger` wrapper. */\n className?: string;\n /** Extra class names forwarded to `DropdownMenuContent`. */\n contentClassName?: string;\n}\n\n// ---------------------------------------------------------------------------\n// Helpers\n// ---------------------------------------------------------------------------\n\nconst renderMenuItem = (item: MenuItem): React.ReactNode => {\n // Sub-menu\n if (item.subItems && item.subItems.length > 0) {\n return (\n <DropdownMenuSub key={item.label}>\n <DropdownMenuSubTrigger disabled={item.disabled} className={item.className}>\n {item.icon && <span className=\"mr-2 shrink-0\">{item.icon}</span>}\n {item.label}\n </DropdownMenuSubTrigger>\n <DropdownMenuPortal>\n <DropdownMenuSubContent>\n {item.subItems.map((subItem) => renderMenuItem(subItem))}\n </DropdownMenuSubContent>\n </DropdownMenuPortal>\n </DropdownMenuSub>\n );\n }\n\n // Checkbox item\n if (item.type === \"checkbox\") {\n return (\n <DropdownMenuCheckboxItem\n key={item.label}\n checked={item.checked}\n onCheckedChange={item.onCheckedChange}\n disabled={item.disabled}\n className={item.className}\n >\n {item.icon && <span className=\"mr-2 shrink-0\">{item.icon}</span>}\n {item.label}\n {item.shortcut && <DropdownMenuShortcut>{item.shortcut}</DropdownMenuShortcut>}\n </DropdownMenuCheckboxItem>\n );\n }\n\n // Radio item\n if (item.type === \"radio\") {\n return (\n <DropdownMenuRadioItem\n key={item.label}\n value={item.value ?? item.label}\n disabled={item.disabled}\n className={item.className}\n >\n {item.icon && <span className=\"mr-2 shrink-0\">{item.icon}</span>}\n {item.label}\n {item.shortcut && <DropdownMenuShortcut>{item.shortcut}</DropdownMenuShortcut>}\n </DropdownMenuRadioItem>\n );\n }\n\n // Default item\n return (\n <DropdownMenuItem\n key={item.label}\n onClick={item.onClick}\n disabled={item.disabled}\n variant={item.variant}\n className={item.className}\n >\n {item.icon && <span className=\"mr-2 shrink-0\">{item.icon}</span>}\n {item.label}\n {item.shortcut && <DropdownMenuShortcut>{item.shortcut}</DropdownMenuShortcut>}\n </DropdownMenuItem>\n );\n};\n\nconst renderGroup = (group: ActionItemGroup, index: number, total: number) => {\n const items =\n group.radioGroupValue !== undefined ?\n <DropdownMenuRadioGroup value={group.radioGroupValue} onValueChange={group.onRadioValueChange}>\n {group.menuItems.map((item) => renderMenuItem(item))}\n </DropdownMenuRadioGroup>\n : group.menuItems.map((item) => renderMenuItem(item));\n\n return (\n <React.Fragment key={`ddl-menu-group-${index}`}>\n <DropdownMenuGroup>\n {group.groupLabel && <DropdownMenuLabel>{group.groupLabel}</DropdownMenuLabel>}\n {items}\n </DropdownMenuGroup>\n {index < total - 1 && <DropdownMenuSeparator />}\n </React.Fragment>\n );\n};\n\n// ---------------------------------------------------------------------------\n// Component\n// ---------------------------------------------------------------------------\n\nconst ActionDropdown: React.FC<ActionDropdownProps> = ({\n trigger,\n triggerLabel = \"Manage Data\",\n triggerAsChild = false,\n actionItems,\n align,\n side,\n sideOffset,\n className,\n contentClassName\n}) => {\n const defaultTrigger = (\n <>\n <span className=\"text-muted-foreground\">{triggerLabel}</span>\n <ChevronDown className=\"h-4 w-4 text-gray-300 shrink-0 pointer-events-none\" />\n </>\n );\n\n return (\n <DropdownMenu>\n <DropdownMenuTrigger\n asChild={triggerAsChild}\n className={cn(\n !triggerAsChild && [\n \"border-input h-9 w-fit flex items-center justify-between gap-2\",\n \"rounded-md border bg-transparent px-3 py-2 text-sm whitespace-nowrap\",\n \"shadow-xs transition-[color,box-shadow] outline-none cursor-pointer\",\n \"focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:ring-[3px]\",\n \"data-[state=open]:border-ring\",\n \"disabled:cursor-not-allowed disabled:opacity-50\"\n ],\n className\n )}\n >\n {trigger ?? defaultTrigger}\n </DropdownMenuTrigger>\n <DropdownMenuContent\n align={align}\n side={side}\n sideOffset={sideOffset}\n className={contentClassName}\n >\n {actionItems?.map((group, index) => renderGroup(group, index, actionItems.length))}\n </DropdownMenuContent>\n </DropdownMenu>\n );\n};\n\nexport default ActionDropdown;\n","import { cn } from \"@/utils\";\nimport type { ReactNode } from \"react\";\nimport { memo, useMemo } from \"react\";\n\nexport type ProgressBarSize = \"sm\" | \"md\" | \"lg\" | number;\n\nexport type PercentPosition = {\n align?: \"start\" | \"center\" | \"end\";\n type?: \"inner\" | \"outer\";\n side?: \"top\" | \"bottom\" | \"left\" | \"right\";\n};\n\nexport type SuccessConfig = {\n percent: number;\n className?: string;\n};\n\nexport type ProgressBarProps = {\n percent?: number;\n size?: ProgressBarSize;\n showInfo?: boolean;\n format?: (percent: number) => ReactNode;\n precision?: number;\n success?: SuccessConfig;\n strokeLinecap?: \"round\" | \"butt\" | \"square\";\n percentPosition?: PercentPosition;\n barClassName?: string;\n trailClassName?: string;\n className?: string;\n};\n\nconst sizeMap: Record<string, string> = {\n sm: \"h-1\",\n md: \"h-2\",\n lg: \"h-3\"\n};\n\nconst resolveSize = (size: ProgressBarSize): { className?: string; style?: React.CSSProperties } =>\n typeof size === \"number\" ? { style: { height: size } } : { className: sizeMap[size] };\n\nconst linecapMap: Record<string, string> = {\n round: \"rounded-full\",\n butt: \"rounded-none\",\n square: \"rounded-none\"\n};\n\nconst alignClassMap: Record<string, string> = {\n start: \"justify-start\",\n center: \"justify-center\",\n end: \"justify-end\"\n};\n\nconst outerAlignClassMap: Record<string, string> = {\n start: \"self-start\",\n center: \"self-center\",\n end: \"self-end\"\n};\n\nconst ProgressBar = ({\n percent = 0,\n size = \"md\",\n showInfo = true,\n format,\n precision = 0,\n success,\n strokeLinecap = \"round\",\n percentPosition = { align: \"end\", type: \"outer\" },\n barClassName,\n trailClassName,\n className\n}: ProgressBarProps) => {\n const clamped = useMemo(() => Math.min(100, Math.max(0, percent)), [percent]);\n const displayValue = useMemo(() => parseFloat(clamped.toFixed(precision)), [clamped, precision]);\n const successClamped = useMemo(\n () => (success ? Math.min(100, Math.max(0, success.percent)) : 0),\n [success]\n );\n\n const linecapClass = linecapMap[strokeLinecap];\n const posType = percentPosition?.type ?? \"outer\";\n const posAlign = percentPosition?.align ?? \"end\";\n const posSide = percentPosition?.side;\n const isInner = posType === \"inner\";\n const isTopBottom = posSide === \"top\" || posSide === \"bottom\";\n const isLeftOuter =\n !isInner && !isTopBottom && (posSide === \"left\" || (!posSide && posAlign === \"start\"));\n const outerAlignClass = outerAlignClassMap[posAlign];\n\n const { className: sizeClass, style: sizeStyle } = resolveSize(size);\n\n const info = useMemo((): ReactNode => {\n if (!showInfo) return null;\n if (format) return format(displayValue);\n return `${displayValue}%`;\n }, [showInfo, format, displayValue]);\n\n return (\n <div\n className={cn(\n \"flex w-full min-w-0\",\n isTopBottom ? \"flex-col gap-1\" : \"items-center gap-2\",\n isLeftOuter && \"flex-row-reverse\",\n className\n )}\n >\n {posSide === \"top\" && info && (\n <span className={cn(\"text-xs shrink-0 tabular-nums\", outerAlignClass)}>{info}</span>\n )}\n <div\n className={cn(\n \"relative flex-1 overflow-hidden\",\n trailClassName ?? \"bg-muted\",\n linecapClass,\n isInner ? \"min-h-4\" : sizeClass\n )}\n style={isInner ? undefined : sizeStyle}\n >\n {success && (\n <div\n className={cn(\n \"absolute left-0 top-0 h-full transition-all duration-300\",\n success.className ?? \"bg-sus-green-1\",\n linecapClass\n )}\n style={{ width: `${successClamped}%` }}\n />\n )}\n <div\n className={cn(\n \"relative transition-all duration-300\",\n barClassName ?? \"bg-sus-primary-green-9\",\n linecapClass,\n isInner ?\n cn(\"min-h-4 flex items-center px-1\", alignClassMap[posAlign])\n : cn(\"h-full\", sizeClass)\n )}\n style={{ width: `${clamped}%`, ...(!isInner ? sizeStyle : undefined) }}\n >\n {isInner && info && (\n <span className=\"text-[10px] leading-none text-primary-foreground whitespace-nowrap tabular-nums\">\n {info}\n </span>\n )}\n </div>\n </div>\n {posSide === \"bottom\" && info && (\n <span className={cn(\"text-xs shrink-0 tabular-nums\", outerAlignClass)}>{info}</span>\n )}\n {!isInner && !isTopBottom && info && <span className=\"text-xs shrink-0 tabular-nums\">{info}</span>}\n </div>\n );\n};\n\nexport default memo(ProgressBar);\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 whitespace-pre\", 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","import React, { ComponentProps, useEffect, useState } from \"react\";\nimport { Separator } from \"../separator\";\nimport { cn } from \"@/utils\";\n\nexport type TabSelectItem<T extends string = string> = { id: T; label: string };\n\ninterface TabSelectProps<T extends string = string> {\n items: TabSelectItem<T>[];\n onSelectTab: (state: T) => void;\n labelWrapperClassName?: string;\n labelClassName?: string;\n activeBorderClassName?: string;\n separatorClassName?: string;\n}\n\nexport const TabSelect = <T extends string = string>({\n items,\n onSelectTab,\n labelWrapperClassName,\n labelClassName,\n activeBorderClassName,\n separatorClassName,\n ...rest\n}: ComponentProps<\"div\"> & TabSelectProps<T>) => {\n const [selected, setSelected] = useState<TabSelectItem<T>>(items[0]);\n\n useEffect(() => {\n onSelectTab(selected.id);\n }, [onSelectTab, selected]);\n\n if (items.length === 0) {\n return null;\n }\n\n return (\n <div\n className={cn(\n \"w-full px-3 flex justify-start items-center border-b border-sus-secondary-gray-3 overflow-x-auto overflow-y-hidden\"\n )}\n {...rest}\n >\n {items.length > 0 ?\n items.map((item, index) => {\n return (\n <div key={`key-${index}`} className=\"flex items-center w-fit h-10\">\n <div\n className={cn(\n \"text-sm cursor-pointer relative h-full px-2\",\n selected.id === item.id ?\n \"text-sus-primary-green-9 font-bold\"\n : \"text-black font-Semibold\",\n labelWrapperClassName\n )}\n key={`${item}.${index}`}\n onClick={() => setSelected(item)}\n >\n <span className={cn(\"inline-flex items-center h-full\", labelClassName)}>\n {item.label}\n </span>\n <span\n className={cn(\n \"absolute left-0 right-0 bottom-0 border-b-2\",\n selected.id === item.id ? \"border-sus-primary-green-9\" : \"border-transparent\",\n activeBorderClassName\n )}\n />\n </div>\n <Separator\n hidden={index >= items.length - 1}\n orientation=\"vertical\"\n className={cn(\"h-[70%]! mx-2 bg-sus-secondary-gray-3\", separatorClassName)}\n />\n </div>\n );\n })\n : \"\"}\n </div>\n );\n};\n","import { SerializedEditorState, SerializedLexicalNode } from \"lexical\";\n\nexport type InputMentionSerializedState = string;\n\nexport type EditorSerializedState = SerializedEditorState<SerializedLexicalNode>;\n\n/**\n * Configuration for mapping mention item fields\n * Allows flexible field names for different data structures\n */\nexport type MentionConfig<T> = {\n /** Function to get the unique identifier from mention item */\n getId: (item: T) => string;\n /** Function to get the mention key/name (e.g., \"{{FIRSTNAME}}\") from mention item */\n getName: (item: T) => string;\n /** Function to get the display label (e.g., \"First Name\") from mention item */\n getLabel: (item: T) => string;\n};\n\n/**\n * Default mention item structure\n */\nexport type DefaultMentionItem = {\n id: string;\n name: string;\n fieldName: string;\n};\n\n/**\n * Create default mention config for standard structure {id, name, fieldName}\n */\nexport const createDefaultMentionConfig = <T extends DefaultMentionItem>(): MentionConfig<T> => ({\n getId: (item) => item.id,\n getName: (item) => item.name,\n getLabel: (item) => item.fieldName\n});\n\nexport type InputMentionProps<T = DefaultMentionItem> = {\n value?: InputMentionSerializedState;\n onChange?: (plainText: InputMentionSerializedState) => void;\n placeholder?: string;\n readOnly?: boolean;\n disabled?: boolean;\n editorClassName?: string;\n autoFocus?: boolean;\n /** Maximum number of characters allowed in the editor */\n maxLength?: number;\n /** Array of mention items that will be suggested */\n mentions?: T[];\n /** Configuration for mapping mention item fields. If not provided, assumes default structure {id, name, fieldName} */\n mentionConfig?: MentionConfig<T>;\n /** Optional trigger character for mentions (e.g., \"$\", \"@\", \"{{\"). If not provided, suggestions appear when typing matching text */\n mentionTrigger?: string;\n /** If true, suggestions will ONLY appear when the trigger is typed. Text matching is disabled. Requires mentionTrigger to be set. */\n mentionTriggerOnly?: boolean;\n /** If true, mentions will be rendered as plain text (e.g., {{FIRSTNAME}}) suitable for mail templates. If false, mentions will be styled HTML tags */\n plainTextMentions?: boolean;\n} & Omit<React.HTMLAttributes<HTMLDivElement>, \"onChange\">;\n","import { EditorSerializedState, InputMentionSerializedState, MentionConfig } from \"../types\";\n\n/**\n * Convert plain text to editor state\n * Handles text with mention variables (e.g., \"{{FIRSTNAME}} test\")\n * Automatically converts {{VARIABLE}} patterns to mention nodes\n */\nexport function parseSerializedEditorState<T = any>(\n raw?: InputMentionSerializedState,\n mentions?: T[],\n mentionConfig?: MentionConfig<T>\n): EditorSerializedState | undefined {\n if (!raw) {\n return undefined;\n }\n\n // Create lookup map for mention labels\n const mentionMap = new Map<string, string>();\n if (mentions && mentionConfig) {\n mentions.forEach((item) => {\n const name = mentionConfig.getName(item);\n const label = mentionConfig.getLabel(item);\n mentionMap.set(name.toUpperCase(), label);\n });\n }\n\n // Parse text and extract mentions\n const mentionRegex = /(\\{\\{[A-Z_]+\\}\\})/g;\n const parts = raw.split(mentionRegex);\n\n const children: any[] = [];\n\n for (const part of parts) {\n if (!part) continue;\n\n // Check if this part is a mention variable\n if (mentionRegex.test(part)) {\n // Look up the label for this mention\n const label = mentionMap.get(part.toUpperCase()) || part;\n\n // Create mention node\n children.push({\n type: \"mention\",\n version: 1,\n mentionKey: part,\n mentionLabel: label,\n detail: 0,\n format: 0,\n mode: \"normal\",\n style: \"\",\n text: part\n });\n // Reset regex lastIndex after test\n mentionRegex.lastIndex = 0;\n } else {\n // Create text node\n children.push({\n detail: 0,\n format: 0,\n mode: \"normal\",\n style: \"\",\n text: part,\n type: \"text\",\n version: 1\n });\n }\n }\n\n // If no children, add empty text node\n if (children.length === 0) {\n children.push({\n detail: 0,\n format: 0,\n mode: \"normal\",\n style: \"\",\n text: \"\",\n type: \"text\",\n version: 1\n });\n }\n\n return {\n root: {\n children: [\n {\n children,\n direction: null,\n format: \"\",\n indent: 0,\n type: \"paragraph\",\n version: 1\n }\n ],\n direction: null,\n format: \"\",\n indent: 0,\n type: \"root\",\n version: 1\n }\n } as any as EditorSerializedState;\n}\n","import type {\n DOMConversionMap,\n DOMConversionOutput,\n DOMExportOutput,\n EditorConfig,\n LexicalNode,\n NodeKey,\n SerializedTextNode,\n Spread\n} from \"lexical\";\nimport { $applyNodeReplacement, TextNode, LexicalEditor } from \"lexical\";\n\nexport type SerializedMentionNode = Spread<\n {\n mentionKey: string;\n mentionLabel: string;\n },\n SerializedTextNode\n>;\n\nfunction convertMentionElement(domNode: HTMLElement): DOMConversionOutput | null {\n const mentionKey = domNode.getAttribute(\"data-mention-key\");\n const mentionLabel = domNode.getAttribute(\"data-mention-label\");\n const textContent = domNode.textContent;\n\n if (mentionKey !== null && textContent !== null) {\n const node = $createMentionNode(mentionKey, mentionLabel || textContent);\n return { node };\n }\n\n return null;\n}\n\nexport class MentionNode extends TextNode {\n __mentionKey: string;\n __mentionLabel: string;\n __editor: LexicalEditor | null = null;\n\n static plainTextMode = false;\n\n static getType(): string {\n return \"mention\";\n }\n\n static clone(node: MentionNode): MentionNode {\n return new MentionNode(node.__mentionKey, node.__mentionLabel, node.__key);\n }\n\n static importJSON(serializedNode: SerializedMentionNode): MentionNode {\n const node = $createMentionNode(serializedNode.mentionKey, serializedNode.mentionLabel);\n node.setTextContent(serializedNode.text);\n node.setFormat(serializedNode.format);\n node.setDetail(serializedNode.detail);\n node.setMode(serializedNode.mode);\n node.setStyle(serializedNode.style);\n return node;\n }\n\n constructor(mentionKey: string, mentionLabel: string, key?: NodeKey) {\n super(mentionKey, key);\n this.__mentionKey = mentionKey;\n this.__mentionLabel = mentionLabel;\n }\n\n setEditor(editor: LexicalEditor): void {\n this.__editor = editor;\n }\n\n exportJSON(): SerializedMentionNode {\n return {\n ...super.exportJSON(),\n mentionKey: this.__mentionKey,\n mentionLabel: this.__mentionLabel,\n type: \"mention\",\n version: 1\n };\n }\n\n createDOM(config: EditorConfig): HTMLElement {\n const dom = super.createDOM(config);\n dom.className =\n \"inline-flex items-center gap-1 rounded px-2 py-0.5 text-sm font-medium text-primary border border-sus-green-2 my-0.5 cursor-default\";\n dom.setAttribute(\"data-mention-key\", this.__mentionKey);\n dom.setAttribute(\"data-mention-label\", this.__mentionLabel);\n dom.setAttribute(\"data-mention-node-key\", this.__key);\n dom.contentEditable = \"false\";\n\n // Create delete button\n const deleteBtn = document.createElement(\"button\");\n deleteBtn.className =\n \"ml-1 inline-flex items-center justify-center w-4 h-4 rounded hover:bg-primary/20 text-primary/60 hover:text-primary transition-colors\";\n deleteBtn.textContent = \"×\";\n deleteBtn.type = \"button\";\n deleteBtn.setAttribute(\"aria-label\", \"Delete mention\");\n deleteBtn.contentEditable = \"false\";\n\n // Store node key for deletion\n deleteBtn.setAttribute(\"data-node-key\", this.__key);\n\n // Add click handler to delete the mention node\n deleteBtn.addEventListener(\"mousedown\", (e) => {\n e.preventDefault();\n e.stopPropagation();\n });\n\n deleteBtn.addEventListener(\"click\", (e) => {\n e.preventDefault();\n e.stopPropagation();\n\n // Dispatch custom event that the plugin can listen to\n const nodeKey = this.__key;\n const event = new CustomEvent(\"mention-delete\", {\n detail: { nodeKey },\n bubbles: true,\n composed: true\n });\n document.dispatchEvent(event);\n });\n\n dom.appendChild(deleteBtn);\n return dom;\n }\n\n exportDOM(): DOMExportOutput {\n // If plain text mode, return plain text for mail templates\n if (MentionNode.plainTextMode) {\n const element = document.createElement(\"span\");\n element.textContent = this.__mentionKey;\n return { element };\n }\n\n // Otherwise return styled HTML\n const element = document.createElement(\"span\");\n element.className =\n \"inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-sm font-medium text-primary border border-sus-green-2 my-0.5\";\n element.setAttribute(\"data-mention-key\", this.__mentionKey);\n element.setAttribute(\"data-mention-label\", this.__mentionLabel);\n element.textContent = this.__mentionKey;\n\n // Add delete button to exported DOM as well (though it won't be interactive in static HTML)\n const deleteBtn = document.createElement(\"span\");\n deleteBtn.className = \"ml-1 text-primary/60\";\n deleteBtn.textContent = \"×\";\n element.appendChild(deleteBtn);\n\n return { element };\n }\n\n static importDOM(): DOMConversionMap | null {\n return {\n span: (domNode: HTMLElement) => {\n if (!domNode.hasAttribute(\"data-mention-key\")) {\n return null;\n }\n return {\n conversion: convertMentionElement,\n priority: 1\n };\n }\n };\n }\n\n isTextEntity(): true {\n return true;\n }\n\n canInsertTextBefore(): boolean {\n return false;\n }\n\n canInsertTextAfter(): boolean {\n return false;\n }\n\n canBeEmpty(): boolean {\n return false;\n }\n\n getMentionKey(): string {\n return this.__mentionKey;\n }\n\n getMentionLabel(): string {\n return this.__mentionLabel;\n }\n\n getTextContent(): string {\n // Return the mention key (e.g., {{FIRSTNAME}}) for plain text extraction\n return this.__mentionKey;\n }\n}\n\nexport function $createMentionNode(mentionKey: string, mentionLabel: string): MentionNode {\n const mentionNode = new MentionNode(mentionKey, mentionLabel);\n mentionNode.setMode(\"segmented\").toggleDirectionless();\n return $applyNodeReplacement(mentionNode);\n}\n\nexport function $isMentionNode(node: LexicalNode | null | undefined): node is MentionNode {\n return node instanceof MentionNode;\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { InputMentionSerializedState, MentionConfig } from \"../types\";\nimport { useEffect } from \"react\";\nimport { parseSerializedEditorState } from \"../utils\";\n\nexport function ControlledValuePlugin<T>({\n value,\n trackAppliedValue,\n mentions,\n mentionConfig\n}: {\n value?: InputMentionSerializedState;\n trackAppliedValue: React.MutableRefObject<InputMentionSerializedState | undefined>;\n mentions?: T[];\n mentionConfig?: MentionConfig<T>;\n}) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n if (value == null || trackAppliedValue.current === value) {\n return;\n }\n\n // Convert plain text to editor state\n const parsed = parseSerializedEditorState(value, mentions, mentionConfig);\n if (!parsed) {\n console.error(\"[InputMention] Failed to parse value:\", value);\n return;\n }\n\n // Track the latest applied value BEFORE updating to prevent loops\n trackAppliedValue.current = value;\n\n editor.update(\n () => {\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 { tag: \"controlled-value-sync\", discrete: true }\n );\n }, [editor, trackAppliedValue, value]);\n\n return null;\n}\n","import * as React from \"react\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport {\n LexicalTypeaheadMenuPlugin,\n MenuOption,\n MenuTextMatch\n} from \"@lexical/react/LexicalTypeaheadMenuPlugin\";\nimport {\n $getSelection,\n $isRangeSelection,\n $isTextNode,\n TextNode,\n PASTE_COMMAND,\n COMMAND_PRIORITY_LOW,\n $createTextNode\n} from \"lexical\";\nimport { createPortal } from \"react-dom\";\nimport { cn } from \"@/utils\";\nimport { $createMentionNode } from \"../nodes/MentionNode\";\nimport { MentionConfig } from \"../types\";\n\n// Regex to detect a complete variable pattern like {{FIRSTNAME}}\nconst COMPLETE_VARIABLE_REGEX = /\\{\\{([A-Z_]+)\\}\\}/gi;\n\n/**\n * Escape special regex characters in a string\n */\nfunction escapeRegExp(str: string): string {\n return str.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n}\n\n/**\n * Check if text ends with trigger character followed by optional query\n */\nfunction checkForTriggerMatch(text: string, trigger: string): MenuTextMatch | null {\n const escapedTrigger = escapeRegExp(trigger);\n const regex = new RegExp(`(${escapedTrigger})([A-Z_]*)$`, \"i\");\n const match = regex.exec(text);\n\n if (match !== null) {\n const matchingString = match[2] ?? \"\";\n const fullMatch = match[0];\n\n return {\n leadOffset: match.index,\n matchingString,\n replaceableString: fullMatch\n };\n }\n return null;\n}\n\n/**\n * Check if text ends with any partial match of mention keys\n * This allows suggestion to appear when user types part of a variable name\n */\nfunction checkForTextMatch<T>(\n text: string,\n mentions: T[],\n config: MentionConfig<T>\n): MenuTextMatch | null {\n // Get the last \"word\" being typed (letters and underscores) - require at least 2 characters\n const wordMatch = /([A-Z_]{2,})$/i.exec(text);\n\n if (wordMatch) {\n const typedText = wordMatch[1].toLowerCase();\n\n // Check if this matches any mention name or fieldName\n const hasMatch = mentions.some((item) => {\n const keyWithoutBraces = config\n .getName(item)\n .replace(/^\\{\\{|\\}\\}$/g, \"\")\n .toLowerCase();\n return (\n keyWithoutBraces.startsWith(typedText) ||\n keyWithoutBraces.includes(typedText) ||\n config.getLabel(item).toLowerCase().startsWith(typedText) ||\n config.getLabel(item).toLowerCase().includes(typedText)\n );\n });\n\n if (hasMatch) {\n return {\n leadOffset: wordMatch.index,\n matchingString: wordMatch[1],\n replaceableString: wordMatch[1]\n };\n }\n }\n return null;\n}\n\nclass MentionTypeaheadOption extends MenuOption {\n name: string;\n fieldName: string;\n\n constructor(name: string, fieldName: string) {\n super(name);\n this.name = name;\n this.fieldName = fieldName;\n }\n}\n\nfunction MentionsTypeaheadMenuItem({\n index,\n isSelected,\n onClick,\n onMouseEnter,\n option\n}: {\n index: number;\n isSelected: boolean;\n onClick: () => void;\n onMouseEnter: () => void;\n option: MentionTypeaheadOption;\n}) {\n return (\n <li\n key={option.name}\n tabIndex={-1}\n className={cn(\n \"relative flex cursor-pointer select-none items-center rounded-sm px-2 py-1.5 text-sm outline-none\",\n isSelected && \"bg-sus-secondary-green-3 text-accent-foreground\"\n )}\n ref={(el) => {\n option.setRefElement(el);\n }}\n role=\"option\"\n aria-selected={isSelected}\n id={`typeahead-item-${index}`}\n onMouseEnter={onMouseEnter}\n onClick={onClick}\n >\n <span className=\"font-medium\">{option.name}</span>\n </li>\n );\n}\n\nexport type MentionsPluginProps<T> = {\n mentions?: T[];\n /** Configuration for mapping mention item fields */\n mentionConfig: MentionConfig<T>;\n /** Optional trigger character (e.g., \"$\", \"@\", \"{{\"). If not provided, suggestions appear when typing matching text */\n trigger?: string;\n /** If true, suggestions will ONLY appear when the trigger is typed. Text matching is disabled. */\n triggerOnly?: boolean;\n};\n\nexport function MentionsPlugin<T>({\n mentions = [],\n mentionConfig,\n trigger,\n triggerOnly = false\n}: MentionsPluginProps<T>): React.ReactNode {\n const [editor] = useLexicalComposerContext();\n const [queryString, setQueryString] = useState<string | null>(null);\n\n // Create a lookup map for quick variable matching\n const mentionKeyMap = useMemo(() => {\n const map = new Map<string, T>();\n mentions.forEach((item) => {\n // Extract the variable name without braces, e.g., \"FIRSTNAME\" from \"{{FIRSTNAME}}\"\n const keyWithoutBraces = mentionConfig\n .getName(item)\n .replace(/^\\{\\{|\\}\\}$/g, \"\")\n .toUpperCase();\n map.set(keyWithoutBraces, item);\n map.set(mentionConfig.getName(item).toUpperCase(), item);\n });\n return map;\n }, [mentions, mentionConfig]);\n\n // Listen for text changes and auto-convert complete variables to mention nodes\n useEffect(() => {\n if (mentions.length === 0) return;\n\n let isUpdating = false;\n\n return editor.registerUpdateListener(({ editorState, tags }) => {\n // Skip if we're already processing an update or if this is our own update\n if (isUpdating || tags.has(\"mention-conversion\")) return;\n\n editorState.read(() => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) return;\n\n const anchorNode = selection.anchor.getNode();\n if (!$isTextNode(anchorNode)) return;\n\n const textContent = anchorNode.getTextContent();\n const matches = [...textContent.matchAll(COMPLETE_VARIABLE_REGEX)];\n\n if (matches.length === 0) return;\n\n // Check if any match corresponds to a known variable\n for (const match of matches) {\n const fullMatch = match[0]; // e.g., \"{{FIRSTNAME}}\"\n const variableName = match[1]; // e.g., \"FIRSTNAME\"\n\n const mentionItem =\n mentionKeyMap.get(variableName.toUpperCase()) || mentionKeyMap.get(fullMatch.toUpperCase());\n\n if (mentionItem) {\n isUpdating = true;\n // Schedule the replacement outside of read\n setTimeout(() => {\n editor.update(\n () => {\n const currentSelection = $getSelection();\n if (!$isRangeSelection(currentSelection)) {\n isUpdating = false;\n return;\n }\n\n const node = currentSelection.anchor.getNode();\n if (!$isTextNode(node)) {\n isUpdating = false;\n return;\n }\n\n const text = node.getTextContent();\n const startIndex = text.indexOf(fullMatch);\n\n if (startIndex === -1) {\n isUpdating = false;\n return;\n }\n\n // Split the text node and insert mention\n const [before, after] = node.splitText(startIndex, startIndex + fullMatch.length);\n\n if (after) {\n const mentionNode = $createMentionNode(\n mentionConfig.getName(mentionItem),\n mentionConfig.getLabel(mentionItem)\n );\n after.replace(mentionNode);\n mentionNode.selectNext();\n } else if (before && before.getTextContent() === fullMatch) {\n const mentionNode = $createMentionNode(\n mentionConfig.getName(mentionItem),\n mentionConfig.getLabel(mentionItem)\n );\n before.replace(mentionNode);\n mentionNode.selectNext();\n }\n isUpdating = false;\n },\n { tag: \"mention-conversion\" }\n );\n }, 0);\n break; // Only process one at a time to avoid conflicts\n }\n }\n });\n });\n }, [editor, mentions, mentionKeyMap, mentionConfig]);\n\n // Handle paste event - convert {{...}} patterns to mention nodes immediately\n useEffect(() => {\n if (mentions.length === 0) return;\n\n return editor.registerCommand(\n PASTE_COMMAND,\n (event: ClipboardEvent) => {\n const clipboardData = event.clipboardData;\n if (!clipboardData) return false;\n\n const pastedText = clipboardData.getData(\"text/plain\");\n if (!pastedText) return false;\n\n // Check if pasted text contains variable patterns\n const variableMatches = [...pastedText.matchAll(COMPLETE_VARIABLE_REGEX)];\n\n // Check if any matches correspond to known variables\n const hasKnownVariable = variableMatches.some((match) => {\n const variableName = match[1];\n const fullMatch = match[0];\n return (\n mentionKeyMap.has(variableName.toUpperCase()) || mentionKeyMap.has(fullMatch.toUpperCase())\n );\n });\n\n if (!hasKnownVariable) return false;\n\n // Prevent default paste and handle custom insertion\n event.preventDefault();\n\n editor.update(\n () => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection)) return;\n\n // Split pasted text by variable patterns and insert nodes\n let lastIndex = 0;\n const nodesToInsert: (TextNode | ReturnType<typeof $createMentionNode>)[] = [];\n\n for (const match of variableMatches) {\n const fullMatch = match[0];\n const variableName = match[1];\n const matchIndex = match.index!;\n\n // Add text before the match\n if (matchIndex > lastIndex) {\n const textBefore = pastedText.slice(lastIndex, matchIndex);\n nodesToInsert.push($createTextNode(textBefore));\n }\n\n // Check if this is a known variable\n const mentionItem =\n mentionKeyMap.get(variableName.toUpperCase()) ||\n mentionKeyMap.get(fullMatch.toUpperCase());\n\n if (mentionItem) {\n // Create mention node\n nodesToInsert.push(\n $createMentionNode(\n mentionConfig.getName(mentionItem),\n mentionConfig.getLabel(mentionItem)\n )\n );\n // Add space after mention\n nodesToInsert.push($createTextNode(\" \"));\n } else {\n // Keep as text if not a known variable\n nodesToInsert.push($createTextNode(fullMatch));\n }\n\n lastIndex = matchIndex + fullMatch.length;\n }\n\n // Add remaining text after last match\n if (lastIndex < pastedText.length) {\n nodesToInsert.push($createTextNode(pastedText.slice(lastIndex)));\n }\n\n // Insert all nodes\n for (const node of nodesToInsert) {\n selection.insertNodes([node]);\n }\n },\n { tag: \"paste-mention-conversion\" }\n );\n\n return true;\n },\n COMMAND_PRIORITY_LOW\n );\n }, [editor, mentions, mentionKeyMap, mentionConfig]);\n\n const options = useMemo(() => {\n if (!queryString) {\n return mentions.map(\n (item) => new MentionTypeaheadOption(mentionConfig.getName(item), mentionConfig.getLabel(item))\n );\n }\n\n const lowerQuery = queryString.toLowerCase();\n return mentions\n .filter((item) => {\n const keyWithoutBraces = mentionConfig\n .getName(item)\n .replace(/^\\{\\{|\\}\\}$/g, \"\")\n .toLowerCase();\n return (\n mentionConfig.getLabel(item).toLowerCase().includes(lowerQuery) ||\n keyWithoutBraces.includes(lowerQuery) ||\n mentionConfig.getName(item).toLowerCase().includes(lowerQuery)\n );\n })\n .map(\n (item) => new MentionTypeaheadOption(mentionConfig.getName(item), mentionConfig.getLabel(item))\n );\n }, [mentions, queryString, mentionConfig]);\n\n const onSelectOption = useCallback(\n (selectedOption: MentionTypeaheadOption, nodeToReplace: TextNode | null, closeMenu: () => void) => {\n editor.update(\n () => {\n const mentionNode = $createMentionNode(selectedOption.name, selectedOption.fieldName);\n if (nodeToReplace) {\n nodeToReplace.replace(mentionNode);\n }\n // Insert a space after mention so user can continue typing or delete\n mentionNode.selectNext();\n const selection = $getSelection();\n if ($isRangeSelection(selection)) {\n selection.insertText(\" \");\n }\n closeMenu();\n },\n { tag: \"mention-insert\" }\n );\n },\n [editor]\n );\n\n const checkForMentionMatch = useCallback(\n (text: string) => {\n // If trigger is provided, check for trigger match first\n if (trigger) {\n const triggerMatch = checkForTriggerMatch(text, trigger);\n if (triggerMatch) {\n return triggerMatch;\n }\n // If triggerOnly is enabled, do not fall through to text match\n if (triggerOnly) {\n return null;\n }\n }\n // Check for text match (typing variable name directly)\n return checkForTextMatch(text, mentions, mentionConfig);\n },\n [trigger, triggerOnly, mentions, mentionConfig]\n );\n\n if (mentions.length === 0) {\n return null;\n }\n\n return (\n <LexicalTypeaheadMenuPlugin<MentionTypeaheadOption>\n onQueryChange={setQueryString}\n onSelectOption={onSelectOption}\n triggerFn={checkForMentionMatch}\n options={options}\n menuRenderFn={(\n anchorElementRef,\n { selectedIndex, selectOptionAndCleanUp, setHighlightedIndex }\n ) => {\n if (!anchorElementRef.current || options.length === 0) {\n return null;\n }\n\n const rect = anchorElementRef.current.getBoundingClientRect();\n const top = rect.bottom + window.scrollY;\n const left = rect.left + window.scrollX;\n\n return createPortal(\n <div\n className=\"absolute z-9999 min-w-[200px] overflow-hidden rounded-md border bg-popover p-1 text-popover-foreground shadow-md\"\n style={{\n top: `${top}px`,\n left: `${left}px`\n }}\n >\n <ul className=\"max-h-[200px] overflow-y-auto\">\n {options.map((option, i) => (\n <MentionsTypeaheadMenuItem\n index={i}\n isSelected={selectedIndex === i}\n onClick={() => {\n setHighlightedIndex(i);\n selectOptionAndCleanUp(option);\n }}\n onMouseEnter={() => {\n setHighlightedIndex(i);\n }}\n key={option.key}\n option={option}\n />\n ))}\n </ul>\n </div>,\n document.body\n );\n }}\n />\n );\n}\n","import { useEffect } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $getNodeByKey } from \"lexical\";\n\nexport function MentionDeletePlugin(): null {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n const handleMentionDelete = (e: Event) => {\n const customEvent = e as CustomEvent<{ nodeKey: string }>;\n const nodeKey = customEvent.detail.nodeKey;\n\n editor.update(() => {\n const node = $getNodeByKey(nodeKey);\n if (node) {\n node.remove();\n }\n });\n };\n\n // Listen on document level\n document.addEventListener(\"mention-delete\", handleMentionDelete, true);\n\n return () => {\n document.removeEventListener(\"mention-delete\", handleMentionDelete, true);\n };\n }, [editor]);\n\n return null;\n}\n","import { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { EditorState, LexicalEditor } from \"lexical\";\nimport { useEffect, useRef } from \"react\";\n\nconst SKIP_TAGS = new Set([\"controlled-value-sync\", \"mention-conversion\"]);\n\nexport function OnChangePluginFiltered({\n onChange,\n ignoreSelectionChange = true\n}: {\n onChange: (editorState: EditorState, editor: LexicalEditor) => void;\n ignoreSelectionChange?: boolean;\n}) {\n const [editor] = useLexicalComposerContext();\n const lastEditorStateRef = useRef<string | null>(null);\n\n useEffect(() => {\n return editor.registerUpdateListener(({ editorState, tags, dirtyElements, dirtyLeaves }) => {\n // Skip updates with certain tags\n for (const tag of tags) {\n if (SKIP_TAGS.has(tag)) {\n return;\n }\n }\n\n // Skip selection-only changes if configured\n if (ignoreSelectionChange && dirtyElements.size === 0 && dirtyLeaves.size === 0) {\n return;\n }\n\n // Prevent duplicate onChange calls with same state\n const serialized = JSON.stringify(editorState.toJSON());\n if (lastEditorStateRef.current === serialized) {\n return;\n }\n lastEditorStateRef.current = serialized;\n\n onChange(editorState, editor);\n });\n }, [editor, onChange, ignoreSelectionChange]);\n\n return null;\n}\n","import { useEffect } from \"react\";\nimport { useLexicalComposerContext } from \"@lexical/react/LexicalComposerContext\";\nimport { $getSelection, $isRangeSelection, RootNode } from \"lexical\";\nimport { trimTextContentFromAnchor } from \"@lexical/selection\";\n\nexport interface MaxLengthPluginProps {\n maxLength?: number;\n}\n\nexport function MaxLengthPlugin({ maxLength }: MaxLengthPluginProps) {\n const [editor] = useLexicalComposerContext();\n\n useEffect(() => {\n if (!maxLength) return;\n\n let lastRestoredTextLength = 0;\n\n return editor.registerNodeTransform(RootNode, (rootNode) => {\n const selection = $getSelection();\n if (!$isRangeSelection(selection) || !selection.isCollapsed()) {\n return;\n }\n\n const prevTextLength = lastRestoredTextLength;\n const textLength = rootNode.getTextContentSize();\n\n if (prevTextLength !== textLength) {\n const delCount = textLength - maxLength;\n const anchor = selection.anchor;\n\n if (delCount > 0) {\n // Restore the old selection if the text content got trimmed\n if (prevTextLength === maxLength && lastRestoredTextLength !== maxLength) {\n lastRestoredTextLength = maxLength;\n $restoreTextContent(anchor);\n } else {\n trimTextContentFromAnchor(editor, anchor, delCount);\n }\n }\n }\n });\n }, [editor, maxLength]);\n\n return null;\n}\n\nfunction $restoreTextContent(anchor: { key: string; offset: number }) {\n const selection = $getSelection();\n\n if ($isRangeSelection(selection)) {\n selection.anchor.set(anchor.key, anchor.offset, \"text\");\n selection.focus.set(anchor.key, anchor.offset, \"text\");\n }\n}\n","import { EditorState, $getRoot } from \"lexical\";\nimport { forwardRef, useCallback, useEffect, useMemo, useRef } from \"react\";\nimport {\n EditorSerializedState,\n InputMentionProps,\n InputMentionSerializedState,\n createDefaultMentionConfig,\n DefaultMentionItem,\n MentionConfig\n} from \"./types\";\nimport { parseSerializedEditorState } from \"./utils\";\nimport { MentionNode } from \"./nodes/MentionNode\";\nimport { LexicalComposer } from \"@lexical/react/LexicalComposer\";\nimport { cn } from \"@/utils\";\nimport { HistoryPlugin } from \"@lexical/react/LexicalHistoryPlugin\";\nimport { AutoFocusPlugin } from \"@lexical/react/LexicalAutoFocusPlugin\";\nimport { PlainTextPlugin } from \"@lexical/react/LexicalPlainTextPlugin\";\nimport { ContentEditable } from \"@lexical/react/LexicalContentEditable\";\nimport { LexicalErrorBoundary } from \"@lexical/react/LexicalErrorBoundary\";\nimport { ControlledValuePlugin } from \"./plugins/ControlledValuePlugin\";\nimport { MentionsPlugin } from \"./plugins/MentionsPlugin\";\nimport { MentionDeletePlugin } from \"./plugins/MentionDeletePlugin\";\nimport { OnChangePluginFiltered } from \"./plugins/OnChangePluginFiltered\";\nimport { MaxLengthPlugin } from \"./plugins/MaxLengthPlugin\";\n\nconst theme = {\n paragraph: \"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};\n\nconst nodes = [MentionNode];\n\nfunction InputMentionInner<T = DefaultMentionItem>(\n {\n value,\n onChange,\n placeholder,\n readOnly,\n disabled,\n editorClassName,\n autoFocus,\n maxLength,\n mentions,\n mentionConfig,\n mentionTrigger,\n mentionTriggerOnly,\n plainTextMentions = false,\n className,\n id,\n ...rest\n }: InputMentionProps<T>,\n ref: React.Ref<HTMLDivElement>\n) {\n // Use default config if not provided\n const finalMentionConfig = useMemo(\n () => mentionConfig || (createDefaultMentionConfig<DefaultMentionItem>() as MentionConfig<T>),\n [mentionConfig]\n );\n\n const initialSerializedStateRef = useRef<EditorSerializedState | undefined>(undefined);\n\n if (initialSerializedStateRef.current === undefined) {\n initialSerializedStateRef.current = parseSerializedEditorState(value, mentions, finalMentionConfig);\n }\n\n // Set plain text mode for mentions export\n useEffect(() => {\n MentionNode.plainTextMode = plainTextMentions;\n }, [plainTextMentions]);\n\n const initialConfig = useMemo(\n () => ({\n namespace: \"InputMentionEditor\",\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<InputMentionSerializedState | undefined>(value);\n\n const handleChange = useCallback(\n (editorState: EditorState) => {\n // Extract plain text from editor state\n let plainText = \"\";\n editorState.read(() => {\n const root = $getRoot();\n plainText = root.getTextContent();\n });\n\n appliedValueRef.current = plainText;\n onChange?.(plainText);\n },\n [onChange]\n );\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-black bg-background text-sm shadow-sm\",\n \"relative rounded-md border transition-[color,border-color]\",\n \"data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-60\",\n className\n )}\n {...rest}\n >\n <PlainTextPlugin\n contentEditable={\n <ContentEditable\n id={id}\n className={cn(\n \"min-h-10 whitespace-pre-wrap wrap-break-word px-3 py-2 text-sm leading-6 text-foreground outline-none\",\n editorClassName\n )}\n />\n }\n placeholder={<div className={theme.placeholder}>{placeholder}</div>}\n ErrorBoundary={LexicalErrorBoundary}\n />\n <HistoryPlugin />\n <MentionsPlugin\n mentions={mentions}\n mentionConfig={finalMentionConfig}\n trigger={mentionTrigger}\n triggerOnly={mentionTriggerOnly}\n />\n <MentionDeletePlugin />\n {autoFocus && <AutoFocusPlugin />}\n <ControlledValuePlugin\n value={value}\n trackAppliedValue={appliedValueRef}\n mentions={mentions}\n mentionConfig={finalMentionConfig}\n />\n <OnChangePluginFiltered onChange={handleChange} ignoreSelectionChange />\n {maxLength && <MaxLengthPlugin maxLength={maxLength} />}\n </div>\n </LexicalComposer>\n );\n}\n\nconst InputMention = forwardRef(InputMentionInner) as <T = DefaultMentionItem>(\n props: InputMentionProps<T> & { ref?: React.Ref<HTMLDivElement> }\n) => ReturnType<typeof InputMentionInner>;\n\nexport { InputMention };\nexport type {\n InputMentionProps,\n InputMentionSerializedState,\n MentionConfig,\n DefaultMentionItem\n} from \"./types\";\n"]}