@lax-wp/design-system 0.4.13 → 0.5.1

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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.es.js","sources":["../node_modules/classnames/index.js","../src/components/data-display/typography/Typography.tsx","../src/components/forms/input-field/InputField.tsx","../src/components/icons/HelpIcon.tsx","../src/components/icons/CloseIcon.tsx","../src/constants/colors.ts","../src/utils/tagUtils.ts","../src/components/data-display/tag/Tag.tsx","../src/components/data-display/label/Label.tsx","../src/hooks/useOS.ts","../src/components/tooltip/Tooltip.tsx","../src/components/icons/AIStarIcon.tsx","../src/components/icons/AIExtractedIndicator.tsx","../src/components/icons/Required.tsx","../src/components/forms/base-input-field/BaseInputField.tsx","../src/components/forms/text-field/TextField.tsx","../src/components/forms/text-area-field/TextAreaField.tsx","../src/components/button/IconButton.tsx","../src/components/forms/master-data-input/MasterDataInputField.tsx","../src/components/forms/select-field/SelectField.tsx","../src/components/forms/checkbox/Checkbox.tsx","../src/components/forms/checkbox/CheckboxComponent.tsx","../src/components/forms/color-picker/ColorPicker.tsx","../src/components/forms/creatable-select/CreatableSelect.tsx","../src/hooks/useOutsideClick.ts","../src/components/forms/customizable-select-field/CustomizableSelectField.tsx","../src/components/forms/currency-input/currency.constant.ts","../src/components/icons/CloseRounded.tsx","../src/components/icons/SearchIcon.tsx","../src/components/forms/search-bar/SearchBar.tsx","../src/constants/toggle.ts","../src/components/forms/toggle/Toggle.tsx","../src/utils/utilities.ts","../src/components/shortcut-kbd/ShortcutKbd.tsx","../src/components/buttons/option-button/OptionButton.tsx","../src/utils/countryFlags.tsx","../src/components/forms/currency-input/CurrencyInputField.tsx","../src/components/forms/date-range/DateRange2.tsx","../node_modules/dayjs/dayjs.min.js","../src/components/forms/date-range/DateRange.tsx","../node_modules/dayjs/plugin/customParseFormat.js","../node_modules/dayjs/plugin/localeData.js","../node_modules/dayjs/plugin/utc.js","../node_modules/dayjs/plugin/weekday.js","../src/components/forms/date-time-field/DateTimeField.tsx","../src/components/forms/debounce-input/DebounceInputField.tsx","../src/components/forms/dynamic-data-input/DynamicDataInputField.tsx","../src/components/button/Button.tsx","../src/hooks/useModalContainer.ts","../src/components/data-display/modal/Modal.tsx","../node_modules/lodash.debounce/index.js","../src/utils/messageConstants.ts","../src/hooks/usePythonSyntax.ts","../src/services/monacoManager.ts","../src/types/icon-picker.ts","../src/components/data-display/json-grid-viewer/types.ts","../src/components/data-display/json-grid-viewer/JsonGridViewerContext.tsx","../src/components/data-display/json-grid-viewer/utils.ts","../src/components/data-display/json-grid-viewer/hooks.ts","../src/components/data-display/json-grid-viewer/JsonValueDisplay.tsx","../src/components/data-display/json-grid-viewer/NestedJsonGrid.tsx","../src/components/data-display/json-grid-viewer/JsonGridCore.tsx","../src/components/feedback/confirmation-modal/ConfirmationModal.tsx","../src/components/floating-bar/FloatingBar.tsx","../src/components/data-display/json-grid-viewer/JsonGridBulkFloatingBar.tsx","../src/components/data-display/json-grid-viewer/AddKeyModal.tsx","../src/components/data-display/json-grid-viewer/JsonGridViewer.tsx","../src/components/data-display/code-editor/Tabs.tsx","../src/components/data-display/code-editor/CodeEditor.tsx","../src/components/data-display/dynamic-data-modal/DynamicDataModal.tsx","../src/components/icons/EditIcon.tsx","../src/components/forms/dynamic-data-input/DynamicDataInput.tsx","../src/components/forms/percentage-input/PercentageInputField.tsx","../src/hooks/useIsomorphicLayoutEffect.ts","../src/hooks/useEventListener.ts","../src/components/layout/CustomScrollbar.tsx","../src/components/forms/md-input/MdInput.tsx","../src/components/forms/multi-file-upload/MultiFileUpload.tsx","../src/components/forms/icon-picker/IconPicker.tsx","../src/components/data-display/status-color-mapping/StatusColorMapping.tsx","../src/components/data-display/badge/Badge.tsx","../src/components/layout/HelmetTitle.tsx","../src/components/data-display/card/Card.tsx","../src/components/modal/drawer/Drawer.tsx","../src/components/data-display/floating-element-wrapper/floating-element-dragger.tsx","../src/utils/formatters.ts","../src/components/data-display/label-value/LabelValue.tsx","../src/components/icons/CheckCircle.tsx","../src/components/icons/InfoAlert.tsx","../src/components/icons/ArchivedIcon.tsx","../src/components/icons/InfoCircleIcon.tsx","../src/components/data-display/banner/Banner.tsx","../src/components/data-display/resizable-sidebar/ResizableSidebar.tsx","../src/components/data-display/pdf-viewer/PdfViewer.tsx","../src/components/data-display/popper/Popper.tsx","../src/components/feedback/toast/Toast.tsx","../src/hooks/useTheme.ts","../src/components/icons/LaxIcon.tsx","../src/components/icons/ComingSoonIcon.tsx","../src/components/icons/CheckSmallIcon.tsx","../src/components/data-display/access-denied-modal/AccessDeniedModal.tsx","../src/components/data-display/in-progress/InProgress.tsx","../src/components/data-display/unsaved-changes-modal/UnsavedChangesModal.tsx","../src/components/data-display/error-modal/ErrorModal.tsx","../src/components/data-display/delete-modal/DeleteModal.tsx","../src/components/data-display/diff-viewer/DiffViewer.tsx","../src/components/button/Radio.tsx","../src/components/button/ButtonThreeDots.tsx","../src/components/button/ButtonGroup.tsx","../src/hooks/useScrollToTop.ts","../node_modules/clsx/dist/clsx.mjs","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.ts","../src/constants/layout.ts","../src/components/layout/PageContainer.tsx","../src/components/layout/Helmet.tsx","../src/components/layout/ComponentLoader.tsx","../src/components/layout/LogoLoader.tsx","../src/components/navigation/breadcrumbs/BreadCrumbItem.tsx","../src/components/navigation/breadcrumbs/BreadCrumb.tsx","../src/components/data-display/divider/Divider.tsx","../src/components/data-display/skeleton/Skeleton.tsx","../src/components/data-display/skeleton/constants.ts","../src/components/data-display/skeleton/enums.ts","../src/components/data-display/skeleton/utils.ts","../src/components/data-display/skeleton/SkeletonGrid.tsx","../src/components/data-display/skeleton/loaders/ProfileSettingsLoader.tsx","../src/components/data-display/skeleton/loaders/AgreementHeaderLoader.tsx","../src/components/data-display/skeleton/loaders/ClauseDetailsLoader.tsx","../src/components/data-display/skeleton/loaders/SingleLineLoader.tsx","../src/components/data-display/skeleton/loaders/FlowNodesLoader.tsx","../src/components/data-display/skeleton/loaders/TaskCardLoader.tsx","../src/components/data-display/skeleton/loaders/AppItemLoader.tsx","../src/components/data-display/skeleton/loaders/NotificationListLoader.tsx","../src/components/data-display/skeleton/loaders/EventDetailsLoader.tsx","../src/components/data-display/skeleton/loaders/ExecutionNoteLoader.tsx","../src/components/data-display/skeleton/loaders/LogItemSkeleton.tsx","../src/components/data-display/skeleton/loaders/DoubleLineLoader.tsx","../src/components/data-display/skeleton/loaders/InstalledAppItemLoader.tsx","../src/components/data-display/skeleton/loaders/PilotDetailsSkeleton.tsx","../src/components/data-display/skeleton/loaders/TutorialsSkeleton.tsx","../src/components/data-display/skeleton/loaders/app-store/RecentlyAddedAppsSkeleton.tsx","../src/components/data-display/skeleton/loaders/app-store/SingleAppCardSkeleton.tsx","../src/components/data-display/skeleton/loaders/CalendarExportItemLoader.tsx","../src/components/data-display/text/Text.tsx","../src/components/data-display/text-with-strike/TextWithStrike.tsx","../src/components/data-display/dynamic-items-cell/DynamicItemsCell.tsx","../src/components/forms/number-input-field/NumberInputField.tsx","../src/components/navigation/accordion/Accordion.tsx","../src/components/navigation/stepper/Stepper.tsx","../src/components/modal/confirm-popup/ConfirmPopUp.tsx","../src/components/cards/card-header-view/CardHeaderView.tsx","../src/components/cards/card-main/CardMain.tsx","../src/components/cards/tab-content/TabContent.tsx","../src/components/drag-and-drop/draggable-container/DraggableContainer.tsx","../src/components/drag-and-drop/drag-overlay/DragOverlay.tsx","../src/components/sidebar/Sidebar.tsx","../node_modules/@popperjs/core/lib/enums.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","../node_modules/@popperjs/core/lib/dom-utils/getWindow.js","../node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","../node_modules/@popperjs/core/lib/modifiers/applyStyles.js","../node_modules/@popperjs/core/lib/utils/getBasePlacement.js","../node_modules/@popperjs/core/lib/utils/math.js","../node_modules/@popperjs/core/lib/utils/userAgent.js","../node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","../node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","../node_modules/@popperjs/core/lib/dom-utils/contains.js","../node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","../node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","../node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","../node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","../node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","../node_modules/@popperjs/core/lib/utils/within.js","../node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","../node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","../node_modules/@popperjs/core/lib/utils/expandToHashMap.js","../node_modules/@popperjs/core/lib/modifiers/arrow.js","../node_modules/@popperjs/core/lib/utils/getVariation.js","../node_modules/@popperjs/core/lib/modifiers/computeStyles.js","../node_modules/@popperjs/core/lib/modifiers/eventListeners.js","../node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","../node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","../node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","../node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","../node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","../node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","../node_modules/@popperjs/core/lib/utils/rectToClientRect.js","../node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","../node_modules/@popperjs/core/lib/utils/computeOffsets.js","../node_modules/@popperjs/core/lib/utils/detectOverflow.js","../node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","../node_modules/@popperjs/core/lib/modifiers/flip.js","../node_modules/@popperjs/core/lib/modifiers/hide.js","../node_modules/@popperjs/core/lib/modifiers/offset.js","../node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","../node_modules/@popperjs/core/lib/utils/getAltAxis.js","../node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","../node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","../node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","../node_modules/@popperjs/core/lib/utils/orderModifiers.js","../node_modules/@popperjs/core/lib/utils/debounce.js","../node_modules/@popperjs/core/lib/utils/mergeByName.js","../node_modules/@popperjs/core/lib/createPopper.js","../node_modules/@popperjs/core/lib/popper.js","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../src/components/user-avatar/UserAvatarPopper.tsx","../src/components/user-avatar/StatusInfoRow.tsx","../src/components/user-avatar/constants.ts","../src/components/user-avatar/PersonIcon.tsx","../src/components/user-avatar/useDynamicPosition.ts","../src/components/user-avatar/UserAvatar.tsx","../src/components/user-avatar/NameInitialLogo.tsx","../src/components/user-avatar/UserProfilePic.tsx","../src/components/forms/file-upload-dragger/icons.tsx","../src/components/forms/file-upload-dragger/FileUpload.tsx","../src/components/data-display/lottie-animation/LottieAnimation.tsx","../src/components/data-display/datatype-icon/DataTypeIcon.tsx","../src/components/data-display/empty-state/NoDataFound.tsx","../src/components/data-display/empty-state/PageNotFound.tsx","../src/components/data-display/empty-state/UserNotFound.tsx","../src/components/data-display/empty-state/EmptyEvent.tsx","../src/components/data-display/empty-state/empty-widget/EmptyBarChartData.tsx","../src/components/data-display/empty-state/empty-widget/EmptyCountWidgetData.tsx","../src/components/data-display/empty-state/empty-widget/EmptyCardChartData.tsx","../src/components/data-display/empty-state/empty-widget/EmptyPieChatData.tsx","../src/components/data-display/empty-state/empty-widget/EmptyDonutChartData.tsx","../src/components/data-display/empty-state/empty-widget/EmptyTimelineChartData.tsx","../src/components/data-display/empty-state/empty-widget/EmptyTableWidgetData.tsx","../src/components/data-display/empty-state/empty-widget/EmptyContentChart.tsx","../src/components/data-display/empty-state/NoDataFoundWidgets.tsx","../src/components/data-display/context-menu/ContextMenu.tsx","../src/components/data-display/permission-wrapper/PermissionWrapper.tsx","../node_modules/array-move/index.js","../src/components/forms/field-options/Header.tsx","../src/components/forms/field-options/Icon.tsx","../src/components/forms/field-options/Item.tsx","../src/components/forms/field-options/FieldOptions.tsx","../src/components/data-display/progress-bar/LinearProgressBar.tsx","../src/components/data-display/progress-bar/CircularProgressBar.tsx","../src/components/data-display/comparison/constants.ts","../node_modules/memoize-one/dist/memoize-one.esm.js","../src/components/data-display/comparison/utils.ts","../src/components/data-display/comparison/ComparisonContext.tsx","../src/components/data-display/comparison/icons/ExitIcon.tsx","../src/components/data-display/comparison/icons/LayoutOneIcon.tsx","../src/components/data-display/comparison/icons/LayoutTwoIcon.tsx","../src/components/data-display/comparison/icons/LayoutThreeIcon.tsx","../src/components/data-display/comparison/icons/CloseIcon.tsx","../src/components/data-display/comparison/icons/SearchIcon.tsx","../src/components/data-display/comparison/components/GridItemHandle.tsx","../src/components/data-display/comparison/components/NoAvailableContent.tsx","../src/components/data-display/comparison/components/SortableItem.tsx","../src/components/data-display/comparison/components/GridLayout.tsx","../src/components/data-display/comparison/components/Header.tsx","../src/components/data-display/comparison/Comparison.tsx","../src/components/forms/formula-input/utils.ts","../src/components/forms/formula-input/FormulaInput.tsx"],"sourcesContent":["/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","import classNames from \"classnames\";\nimport React from \"react\";\n\n// TODO: Replace this from types\nexport interface TypographyProps {\n children: React.ReactNode;\n variant?: \"regular\" | \"medium\" | \"semibold\" | \"bold\" | \"extrablack\";\n size?:\n | \"extra-small\"\n | \"small\"\n | \"display-small\"\n | \"medium\"\n | \"display-medium\"\n | \"large\"\n | \"extra-large\";\n className?: string;\n onClick?(event: React.MouseEvent<HTMLDivElement>): void;\n highlight?: boolean;\n appearance?: \"title\" | \"body\" | \"subtitle\" | \"custom\";\n style?: React.CSSProperties;\n}\n\nexport const Typography = ({\n children,\n variant = \"regular\",\n size = \"medium\",\n onClick,\n className,\n highlight,\n appearance = \"title\",\n style,\n}: TypographyProps) => {\n const getFontSize = (): string => {\n switch (size) {\n case \"extra-small\":\n return \"text-xs\";\n case \"small\":\n return \"text-sm\";\n case \"display-small\":\n return \"text-xl\";\n case \"medium\":\n return \"text-base\";\n case \"display-medium\":\n return \"text-2xl\";\n case \"large\":\n return \"text-lg\";\n case \"extra-large\":\n return \"text-4xl\";\n default:\n return \"text-base\";\n }\n };\n\n const getFontColor = (): string => {\n switch (appearance) {\n case \"title\":\n return \"text-neutral-900 dark:text-white\";\n case \"body\":\n return \"text-neutral-600 dark:text-neutral-300\";\n case \"subtitle\":\n return \"text-neutral-500 dark:text-neutral-400\";\n case \"custom\":\n return \"\";\n }\n };\n\n const getFontWeight = (): string => {\n switch (variant) {\n case \"regular\":\n return \"font-normal\";\n case \"medium\":\n return \"font-medium\";\n case \"semibold\":\n return \"font-semibold\";\n case \"bold\":\n return \"font-bold\";\n case \"extrablack\":\n return \"font-black\";\n default:\n return \"font-normal\";\n }\n };\n\n const typographyClasses = `${getFontSize()} ${getFontWeight()} ${getFontColor()}`;\n const combinedClasses = classNames(\n typographyClasses,\n className,\n highlight ? \"bg-yellow-100 dark:bg-yellow-900\" : \"\"\n );\n\n return (\n <div className={combinedClasses} onClick={onClick} style={style}>\n {children}\n </div>\n );\n};\nTypography.displayName = \"Typography\";\n","import cn from \"classnames\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport React, { forwardRef, useEffect, useRef, useState } from \"react\";\nimport { Typography } from \"../../data-display/typography/Typography\";\n\n/**\n * Props for the InputField component\n */\nexport interface InputFieldProps {\n /** Unique identifier for the input field */\n id: string;\n /** The current value of the input field */\n value?: string;\n /** Callback function called when the input value changes */\n onChange: (value: string) => void;\n /** Callback function called on key down events */\n onKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;\n /** Error message to display below the input */\n message?: string;\n /** Success message to display below the input */\n messageType?: \"success\" | \"error\" | \"info\" | \"default\";\n /** Default value for the input field */\n defaultValue?: string;\n /** Whether the input field is disabled */\n disabled?: boolean;\n /** Maximum value for number inputs */\n max?: number;\n /** Minimum value for number inputs */\n min?: number;\n /** Whether the field is required */\n required?: boolean;\n /** Label text for the input field */\n label?: string;\n /** Input type (text, email, password, number, etc.) */\n type?: string;\n /** Placeholder text for the input */\n placeholder?: string;\n /** Icon or element to display at the end of the input */\n fieldSuffix?: React.ReactNode;\n /** Additional CSS classes for the wrapper container */\n wrapperClassNames?: string;\n /** Additional CSS classes for the input element */\n inputClassNames?: string;\n /** Inline styles for the input element */\n inputStyle?: React.CSSProperties;\n /** Additional props to pass to the input element */\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n}\n/**\n * A highly customizable input field component with label, validation, and styling support.\n *\n * @example\n * ```tsx\n * <InputField\n * id=\"email\"\n * label=\"Email Address\"\n * type=\"email\"\n * value={email}\n * onChange={setEmail}\n * placeholder=\"Enter your email\"\n * required\n * errorMessage={emailError}\n * />\n * ```\n */\nexport const InputField = forwardRef<HTMLInputElement, InputFieldProps>(\n (\n {\n id,\n value,\n onChange,\n onKeyDown,\n message,\n messageType = \"default\",\n defaultValue,\n disabled = false,\n max,\n min,\n required = false,\n label,\n type = \"text\",\n placeholder,\n fieldSuffix,\n wrapperClassNames,\n inputClassNames,\n inputStyle = {},\n inputProps,\n },\n ref\n ) => {\n // Refs and state for dynamic padding\n const suffixRef = useRef<HTMLDivElement>(null);\n const [suffixWidth, setSuffixWidth] = useState<number>(0);\n\n // Base styles for different states\n const getInputBorderClasses = (): string => {\n if (messageType === \"error\")\n return \"border-red-300 focus:border-red-500 focus:ring-red-200\";\n if (messageType === \"success\")\n return \"border-green-300 focus:border-green-500 focus:ring-green-200\";\n if (messageType === \"info\")\n return \"border-blue-300 focus:border-blue-500 focus:ring-blue-200\";\n return \"border-neutral-200 dark:border-black-600 focus:border-primary-500 dark:focus:border-primary-400 focus:ring-primary-200 dark:focus:ring-primary-400/20\";\n };\n\n // Typography class for message\n const getMessageTypographyClass = (): string => {\n if (messageType === \"error\") return \"text-red-500 dark:text-red-400\";\n if (messageType === \"success\")\n return \"text-green-500 dark:text-green-400\";\n if (messageType === \"info\") return \"text-blue-500 dark:text-blue-400\";\n return \"text-neutral-500 dark:text-black-100\";\n };\n\n const inputId = id || `input-${label?.replace(/\\s+/g, \"-\").toLowerCase()}`;\n\n // Effect to measure suffix width and update input padding\n useEffect(() => {\n if (fieldSuffix && suffixRef.current) {\n const resizeObserver = new ResizeObserver((entries) => {\n const suffixElement = entries[0];\n if (suffixElement) {\n // Add extra padding (8px base + 4px buffer) to prevent overlap\n const calculatedWidth =\n Math.ceil(suffixElement.contentRect.width) + 24;\n setSuffixWidth(calculatedWidth);\n }\n });\n\n resizeObserver.observe(suffixRef.current);\n\n // Initial measurement\n const initialWidth = Math.ceil(suffixRef.current.offsetWidth) + 12;\n setSuffixWidth(initialWidth);\n\n return () => {\n resizeObserver.disconnect();\n };\n } else {\n setSuffixWidth(0);\n }\n }, [fieldSuffix]);\n\n // Calculate dynamic padding style\n const getDynamicInputStyle = (): React.CSSProperties => {\n const basePadding = 12; // Default px-3 is 12px\n const rightPadding = fieldSuffix\n ? Math.max(basePadding, suffixWidth)\n : basePadding;\n\n return {\n \"--input-bg-color\": \"var(--tw-bg-opacity, 1) rgb(var(--bg-color))\",\n \"--text-color\": \"#111827\",\n paddingRight: `${rightPadding}px`,\n ...inputStyle,\n } as React.CSSProperties;\n };\n\n return (\n <div className={cn(\"flex flex-col w-full\", wrapperClassNames)}>\n {/* Autofill styles */}\n <style>\n {`\n .input-field input:-webkit-autofill,\n .input-field input:-webkit-autofill:hover,\n .input-field input:-webkit-autofill:focus {\n -webkit-text-fill-color: var(--text-color) !important;\n -webkit-box-shadow: 0 0 0px 1000px var(--input-bg-color) inset !important;\n transition: background-color 5000s ease-in-out 0s;\n }\n \n .dark .input-field input:-webkit-autofill,\n .dark .input-field input:-webkit-autofill:hover,\n .dark .input-field input:-webkit-autofill:focus {\n -webkit-text-fill-color: white !important;\n -webkit-box-shadow: 0 0 0px 1000px var(--input-bg-color) inset !important;\n }\n `}\n </style>\n\n {/* Label */}\n {label ? (\n <label\n htmlFor={inputId}\n className=\"mb-1 text-xs font-medium text-gray-600 dark:text-gray-300 inline-flex items-center gap-1\"\n >\n <div className=\"flex flex-wrap items-center justify-between w-full\">\n <div className=\"inline-flex flex-wrap items-center gap-1\">\n <Typography\n variant=\"medium\"\n size=\"extra-small\"\n appearance=\"subtitle\"\n >\n {label}\n {required && <span className=\"text-red-500 ml-1\">*</span>}\n </Typography>\n {/* TODO: Add tooltip support when Tooltip component is available */}\n {/* {tooltip && (\n <Tooltip placement=\"top\" title={tooltip}>\n <div className=\"cursor-pointer\">\n <HelpIcon className=\"text-neutral-500 w-3 h-3\" />\n </div>\n </Tooltip>\n )} */}\n </div>\n </div>\n </label>\n ) : null}\n\n {/* Input Container */}\n <div className=\"relative input-field\">\n <input\n {...inputProps}\n ref={ref}\n id={inputId}\n type={type}\n value={value}\n defaultValue={defaultValue}\n placeholder={placeholder}\n required={required}\n disabled={disabled}\n max={max}\n min={min}\n onKeyDown={onKeyDown}\n style={getDynamicInputStyle()}\n className={cn(\n // Base styles\n \"border border-solid h-8 rounded-md block w-full pl-3\",\n \"text-sm font-medium text-neutral-900 dark:text-black-100\",\n \"bg-white dark:bg-black-600\",\n \"transition-colors duration-200 ease-in-out\",\n \"focus:outline-none focus:ring-2\",\n\n // State-specific styles\n getInputBorderClasses(),\n\n // Disabled styles\n disabled &&\n \"opacity-70 cursor-not-allowed bg-neutral-50 dark:bg-black-700\",\n\n // Custom classes\n inputClassNames\n )}\n onChange={(e) => onChange(e.target.value)}\n onClick={(e) => e.stopPropagation()}\n />\n\n {/* Suffix Icon */}\n {fieldSuffix && (\n <div\n ref={suffixRef}\n className=\"absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none\"\n >\n {fieldSuffix}\n </div>\n )}\n </div>\n\n {/* Error Message */}\n <AnimatePresence>\n {message && (\n <motion.div\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n transition={{ duration: 0.2 }}\n >\n <Typography\n className={cn(\"mt-1\", getMessageTypographyClass())}\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {message}\n </Typography>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n );\n }\n);\n\nInputField.displayName = \"InputField\";\n","import React, { SVGAttributes } from 'react';\n\nexport interface HelpIconProps extends SVGAttributes<SVGElement> {\n size?: number;\n className?: string;\n}\n\nexport const HelpIcon: React.FC<HelpIconProps> = ({ \n size = 16, \n className = '', \n ...props \n}) => {\n return (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={`text-neutral-500 hover:text-neutral-700 ${className}`}\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3\" />\n <line x1=\"12\" y1=\"17\" x2=\"12.01\" y2=\"17\" />\n </svg>\n );\n};\n","import cn from \"classnames\";\nimport { forwardRef, type SVGAttributes } from \"react\";\n\n/**\n * Props for the Close icon component\n */\nexport interface CloseIconProps extends SVGAttributes<SVGElement> {\n /** Size of the icon */\n size?: number;\n /** Fill color of the icon */\n fill?: string;\n /** Additional CSS classes */\n className?: string;\n}\n\n/**\n * Close icon component\n */\nexport const CloseIcon = forwardRef<SVGSVGElement, CloseIconProps>(\n ({ size = 24, fill = \"currentColor\", className, ...props }, ref) => (\n <svg\n ref={ref}\n className={cn(className)}\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill={fill}\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <path d=\"M10.0002 11.1666L5.91683 15.2499C5.76405 15.4027 5.56961 15.4791 5.3335 15.4791C5.09739 15.4791 4.90294 15.4027 4.75016 15.2499C4.59738 15.0971 4.521 14.9027 4.521 14.6666C4.521 14.4305 4.59738 14.236 4.75016 14.0833L8.8335 9.99992L4.75016 5.91659C4.59738 5.76381 4.521 5.56936 4.521 5.33325C4.521 5.09714 4.59738 4.9027 4.75016 4.74992C4.90294 4.59714 5.09739 4.52075 5.3335 4.52075C5.56961 4.52075 5.76405 4.59714 5.91683 4.74992L10.0002 8.83325L14.0835 4.74992C14.2363 4.59714 14.4307 4.52075 14.6668 4.52075C14.9029 4.52075 15.0974 4.59714 15.2502 4.74992C15.4029 4.9027 15.4793 5.09714 15.4793 5.33325C15.4793 5.56936 15.4029 5.76381 15.2502 5.91659L11.1668 9.99992L15.2502 14.0833C15.4029 14.236 15.4793 14.4305 15.4793 14.6666C15.4793 14.9027 15.4029 15.0971 15.2502 15.2499C15.0974 15.4027 14.9029 15.4791 14.6668 15.4791C14.4307 15.4791 14.2363 15.4027 14.0835 15.2499L10.0002 11.1666Z\" />\n </svg>\n )\n);\n\nCloseIcon.displayName = \"CloseIcon\";\n","/**\n * Color palette for tag components\n */\nexport const COLORS = {\n primary: {\n 50: '#E6F1FC',\n 100: '#C6E1F9',\n 200: '#8AC0F2',\n 300: '#54A4EC',\n 400: '#3392E9',\n 500: '#0077E3',\n 600: '#016DCF',\n 700: '#0054A1',\n 800: '#00417D',\n 900: '#00325F',\n 950: '#001c35',\n 975: '#00111f',\n },\n black: {\n 50: '#f0f0f0',\n 100: '#d9d9d9',\n 200: '#bfbfbf',\n 300: '#8c8c8c',\n 400: '#595959',\n 500: '#454545',\n 600: '#262626',\n 700: '#1f1f1f',\n 800: '#141414',\n 900: '#000000',\n 950: '#0a0a0a',\n 975: '#050505',\n },\n blue: {\n 50: '#E6F1FC',\n 100: '#C6E1F9',\n 200: '#8AC0F2',\n 300: '#54A4EC',\n 400: '#3392E9',\n 500: '#0077E3',\n 600: '#016DCF',\n 700: '#0054A1',\n 800: '#00417D',\n 900: '#00325F',\n 950: '#002547',\n 975: '#001529',\n },\n success: {\n 50: '#ECFDF3',\n 100: '#D1FADF',\n 200: '#A6F4C5',\n 300: '#6CE9A6',\n 400: '#32D583',\n 500: '#12B76A',\n 600: '#039855',\n 700: '#027A48',\n 800: '#05603A',\n 900: '#054F31',\n 950: '#033625',\n 975: '#022419',\n },\n neutral: {\n 50: '#F9FAFB',\n 100: '#F2F4F7',\n 200: '#EAECF0',\n 300: '#D0D5DD',\n 400: '#98A2B3',\n 500: '#667085',\n 600: '#475467',\n 700: '#344054',\n 800: '#1D2939',\n 900: '#101828',\n 950: '#0c1219',\n 975: '#080a0f',\n },\n error: {\n 50: '#FEF3F2',\n 100: '#FEE4E2',\n 200: '#FECDCA',\n 300: '#FDA29B',\n 400: '#F97066',\n 500: '#F04438',\n 600: '#D92D20',\n 700: '#B42318',\n 800: '#912018',\n 900: '#7A271A',\n 950: '#3d1008',\n 975: '#2a0b05',\n },\n warning: {\n 50: '#FFFAEB',\n 100: '#FEF0C7',\n 200: '#FEDF89',\n 300: '#FEC84B',\n 400: '#FDB022',\n 500: '#F79009',\n 600: '#DC6803',\n 700: '#B54708',\n 800: '#93370D',\n 900: '#7A2E0E',\n 950: '#662505',\n 975: '#451803',\n },\n teal: {\n 50: '#ebf5f5',\n 100: '#c2e0df',\n 200: '#a4d1d0',\n 300: '#7abcba',\n 400: '#61afad',\n 500: '#399b98',\n 600: '#348d8a',\n 700: '#286e6c',\n 800: '#1f5554',\n 900: '#184140',\n 950: '#133534',\n 975: '#0c2222',\n },\n green: {\n 50: '#f2f7f2',\n 100: '#d5e5d5',\n 200: '#c1d9c1',\n 300: '#a5c7a5',\n 400: '#94bd93',\n 500: '#79ac78',\n 600: '#6e9d6d',\n 700: '#567a55',\n 800: '#435f42',\n 900: '#334832',\n 950: '#001e00',\n 975: '#182818',\n },\n yellow: {\n 50: '#fffaed',\n 100: '#fff0c7',\n 200: '#ffe8ac',\n 300: '#ffde86',\n 400: '#ffd76f',\n 500: '#ffcd4b',\n 600: '#e8bb44',\n 700: '#b59235',\n 800: '#8c7129',\n 900: '#6b5620',\n 950: '#524314',\n 975: '#382e0e',\n },\n orange: {\n 50: '#fef4e8',\n 100: '#fddeb7',\n 200: '#fcce94',\n 300: '#fbb764',\n 400: '#faa945',\n 500: '#f99417',\n 600: '#e38715',\n 700: '#b16910',\n 800: '#89510d',\n 900: '#693e0a',\n 950: '#4d2d07',\n 975: '#331e05',\n },\n peach: {\n 50: '#fceef3',\n 100: '#f5cad9',\n 200: '#f0b0c6',\n 300: '#ea8cad',\n 400: '#e5759d',\n 500: '#df5384',\n 600: '#cb4c78',\n 700: '#9e3b5e',\n 800: '#7b2e49',\n 900: '#5e2337',\n 950: '#451a2b',\n 975: '#2e111d',\n },\n red: {\n 50: '#fceaeb',\n 100: '#f6bec0',\n 200: '#f29ea2',\n 300: '#ec7278',\n 400: '#e9575d',\n 500: '#e32d35',\n 600: '#cf2930',\n 700: '#a12026',\n 800: '#7d191d',\n 900: '#5f1316',\n 950: '#470c0f',\n 975: '#2f080a',\n },\n purple: {\n 50: '#f5e7ff',\n 100: '#dfb4ff',\n 200: '#d090ff',\n 300: '#bb5dff',\n 400: '#ad3dff',\n 500: '#990dff',\n 600: '#8b0ce8',\n 700: '#6d09b5',\n 800: '#54078c',\n 900: '#40056b',\n 950: '#300450',\n 975: '#200336',\n },\n navy: {\n 50: '#eaebf6',\n 100: '#bebfe2',\n 200: '#9ea1d3',\n 300: '#7276bf',\n 400: '#575bb3',\n 500: '#2d32a0',\n 600: '#292e92',\n 700: '#202472',\n 800: '#191c58',\n 900: '#131543',\n 950: '#0d0e2f',\n 975: '#090a20',\n },\n grey: {\n 50: '#f2f2f2',\n 100: '#d5d5d5',\n 200: '#c1c1c1',\n 300: '#a5a5a5',\n 400: '#939393',\n 500: '#787878',\n 600: '#6d6d6d',\n 700: '#555555',\n 800: '#424242',\n 900: '#323232',\n 950: '#252525',\n 975: '#191919',\n },\n} as const;\n\n/**\n * Available color names for tag components\n */\nexport const SELECT_COLORS = [\n { title: 'Blue', color: 'blue' },\n { title: 'Green', color: 'green' },\n { title: 'Teal', color: 'teal' },\n { title: 'Red', color: 'red' },\n { title: 'Yellow', color: 'yellow' },\n { title: 'Orange', color: 'orange' },\n { title: 'Peach', color: 'peach' },\n { title: 'Grey', color: 'grey' },\n { title: 'Purple', color: 'purple' },\n { title: 'Navy', color: 'navy' },\n] as const;\n","/**\n * Generate a consistent hash color from a string\n */\nexport const getHashColor = (str: string): string => {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = str.charCodeAt(i) + ((hash << 5) - hash);\n }\n\n const c = (hash & 0x00ffffff).toString(16).toUpperCase();\n const hex = '00000'.substring(0, 6 - c.length) + c;\n return `#${hex}`;\n};\n\n/**\n * Lighten a hex color by a percentage\n */\nexport const getLighterColor = (hex: string, percent: number = 80): string => {\n let r = parseInt(hex.slice(1, 3), 16);\n let g = parseInt(hex.slice(3, 5), 16);\n let b = parseInt(hex.slice(5, 7), 16);\n\n r = Math.min(255, r + (255 - r) * (percent / 100));\n g = Math.min(255, g + (255 - g) * (percent / 100));\n b = Math.min(255, b + (255 - b) * (percent / 100));\n\n return `#${Math.round(r).toString(16).padStart(2, '0')}${Math.round(g).toString(16).padStart(2, '0')}${Math.round(b)\n .toString(16)\n .padStart(2, '0')}`;\n};\n\n/**\n * Darken a hex color by a percentage\n */\nexport const getDarkerColor = (hex: string, percent: number = 30): string => {\n let r = parseInt(hex.slice(1, 3), 16);\n let g = parseInt(hex.slice(3, 5), 16);\n let b = parseInt(hex.slice(5, 7), 16);\n\n r = Math.max(0, r * (1 - percent / 100));\n g = Math.max(0, g * (1 - percent / 100));\n b = Math.max(0, b * (1 - percent / 100));\n\n return `#${Math.round(r).toString(16).padStart(2, '0')}${Math.round(g).toString(16).padStart(2, '0')}${Math.round(b)\n .toString(16)\n .padStart(2, '0')}`;\n};\n","import cn from \"classnames\";\nimport { forwardRef, useMemo } from \"react\";\nimport { CloseIcon } from \"../../icons/CloseIcon\";\nimport { COLORS } from \"../../../constants/colors\";\nimport { getDarkerColor, getHashColor, getLighterColor } from \"../../../utils/tagUtils\";\n\n/**\n * Available tag size options\n */\nexport type TagSize = \"xs\" | \"sm\" | \"md\" | \"lg\";\n\n/**\n * Available color names for tags\n */\nexport type TagColor = keyof typeof COLORS;\n\n/**\n * Theme mode for styling\n */\nexport type ThemeMode = \"light\" | \"dark\";\n\n/**\n * Upload handler function type\n */\nexport type UploadHandler = (file: File) => void | Promise<void>;\n\n/**\n * Props for the Tag component\n */\nexport interface TagProps {\n /** The text content to display */\n label: string;\n /** Color name or hex color value */\n color?: TagColor | string;\n /** Size variant */\n size?: TagSize;\n /** Additional CSS classes */\n className?: string;\n /** Click handler for the tag */\n onClick?: (e: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n /** Mouse down handler */\n onMouseDown?: (e: React.MouseEvent<HTMLElement, MouseEvent>) => void;\n /** Maximum character length before truncation */\n truncate?: number;\n /** Whether to use hash color generation for string colors */\n isHashColor?: boolean;\n /** Icon to display before the label */\n icon?: React.ReactNode;\n /** Whether the tag is removable (shows close button) */\n removable?: boolean;\n /** Handler for remove button click */\n onRemove?: (e: React.MouseEvent<HTMLButtonElement, MouseEvent>) => void;\n /** Upload handler function */\n onUpload?: UploadHandler;\n /** Whether the tag accepts file uploads */\n acceptsUpload?: boolean;\n /** Custom aria-label for accessibility */\n \"aria-label\"?: string;\n}\n\n/**\n * Tag component displays labels with customizable colors and styling\n *\n * @example\n * ```tsx\n * <Tag label=\"React\" color=\"blue\" size=\"md\" />\n * <Tag label=\"TypeScript\" color=\"#3178c6\" isHashColor />\n * <Tag label=\"Removable\" removable onRemove={handleRemove} />\n * <Tag label=\"Upload\" acceptsUpload onUpload={handleUpload} />\n * ```\n */\n/**\n * Get predefined color styling\n */\nconst getPredefinedColorStyle = (colorKey: TagColor, isDarkMode: boolean) => ({\n background: isDarkMode ? COLORS[colorKey]?.[975] : COLORS[colorKey]?.[50],\n borderColor: isDarkMode ? COLORS[colorKey]?.[900] : COLORS[colorKey]?.[100],\n color: isDarkMode ? COLORS[colorKey]?.[500] : COLORS[colorKey]?.[600],\n});\n\n/**\n * Get custom color styling\n */\nconst getCustomColorStyle = (color: string, isDarkMode: boolean) => {\n const baseColor = color.startsWith('#') ? color : getHashColor(color);\n return {\n background: isDarkMode ? getDarkerColor(baseColor, 80) : getLighterColor(baseColor, 90),\n borderColor: isDarkMode ? getDarkerColor(baseColor, 40) : getLighterColor(baseColor, 50),\n color: isDarkMode ? getLighterColor(baseColor, 40) : baseColor,\n };\n};\n\n/**\n * Get default styling for tags without color\n */\nconst getDefaultStyle = (isDarkMode: boolean) => ({\n background: isDarkMode ? '#2D3748' : '#F7FAFC',\n borderColor: isDarkMode ? '#4A5568' : '#E2E8F0',\n color: isDarkMode ? '#A0AEC0' : '#4A5568',\n});\n\n/**\n * Get size-based styling classes\n */\nconst getSizeClasses = (size: TagSize): string => {\n switch (size) {\n case \"xs\":\n return \"text-xs px-1 py-0.5\";\n case \"lg\":\n return \"text-sm px-2.5 py-1.5\";\n case \"md\":\n return \"text-sm px-2 py-1\";\n default: // sm\n return \"text-xs px-1.5 py-0.5\";\n }\n};\n\n/**\n * Get close icon color\n */\nconst getCloseIconColor = (color: string | undefined, colorStyle: any, isHashColor: boolean, isDarkMode: boolean) => {\n if (!color) return isDarkMode ? '#A0AEC0' : '#4A5568';\n \n if (isHashColor) return colorStyle.color;\n \n return COLORS[color as TagColor]?.[500] || colorStyle.color;\n};\n\nexport const Tag = forwardRef<HTMLDivElement, TagProps>(\n (\n {\n label,\n color,\n size = \"sm\",\n className,\n onClick,\n onMouseDown,\n truncate,\n isHashColor = false,\n icon,\n removable = false,\n onRemove,\n onUpload,\n acceptsUpload = false,\n \"aria-label\": ariaLabel,\n },\n ref\n ) => {\n const theme = useMemo(() => {\n if (typeof window === \"undefined\") return \"light\";\n return (localStorage.getItem(\"vite-ui-theme\") as ThemeMode) || \"light\";\n }, []);\n const isDarkMode = theme === \"dark\";\n\n /**\n * Get color-based styling\n */\n const getColorStyle = () => {\n if (!color) return getDefaultStyle(isDarkMode);\n\n const isPredefinedColor = color in COLORS;\n \n if (isPredefinedColor) {\n return getPredefinedColorStyle(color as TagColor, isDarkMode);\n }\n\n return getCustomColorStyle(color, isDarkMode);\n };\n\n /**\n * Handle file upload\n */\n const handleFileUpload = (event: React.ChangeEvent<HTMLInputElement>) => {\n const file = event.target.files?.[0];\n if (file && onUpload) {\n onUpload(file);\n }\n // Reset input value to allow same file selection\n event.target.value = '';\n };\n\n /**\n * Handle keyboard events for accessibility\n */\n const handleKeyDown = (event: React.KeyboardEvent<HTMLDivElement>) => {\n if ((event.key === 'Enter' || event.key === ' ') && (onClick || acceptsUpload)) {\n event.preventDefault();\n if (onClick) {\n onClick(event as any);\n }\n }\n };\n\n const colorStyle = getColorStyle();\n const closeIconColor = getCloseIconColor(color, colorStyle, isHashColor, isDarkMode);\n\n return (\n <div\n ref={ref}\n className={cn(\n // Base styles\n \"inline-flex items-center border rounded-md transition-colors bg-primary-50 border-primary-100 text-primary-600 dark:bg-primary-900 dark:border-primary-800 dark:text-primary-400\",\n \n // Size-based styles\n getSizeClasses(size),\n \n // Interactive styles\n (onClick || acceptsUpload) && \"cursor-pointer hover:opacity-80\",\n \n // Custom classes\n className\n )}\n \n onMouseDown={onMouseDown}\n onClick={onClick}\n onKeyDown={handleKeyDown}\n aria-label={ariaLabel || `Tag: ${label}`}\n role=\"button\"\n tabIndex={onClick || acceptsUpload ? 0 : undefined}\n >\n <div className=\"flex items-center gap-0.5 truncate w-full overflow-hidden\">\n {icon}\n \n {truncate ? (\n <p \n title={label} \n className={`text-${size} ${onClick || acceptsUpload ? 'cursor-pointer' : ''}`}\n >\n {label.length > truncate ? `${label.slice(0, truncate)}...` : label}\n </p>\n ) : (\n <p className={`text-${size}`}>{label}</p>\n )}\n \n {acceptsUpload && (\n <input\n type=\"file\"\n onChange={handleFileUpload}\n className=\"absolute inset-0 w-full h-full opacity-0 cursor-pointer\"\n aria-label={`Upload file for ${label}`}\n />\n )}\n \n {removable && onRemove && (\n <button\n onClick={onRemove}\n className=\"ml-1 flex-shrink-0\"\n aria-label={`Remove ${label}`}\n type=\"button\"\n >\n <CloseIcon\n size={12}\n fill={closeIconColor}\n className=\"cursor-pointer text-primary-600 dark:text-primary-400\"\n />\n </button>\n )}\n </div>\n </div>\n );\n }\n);\n\nTag.displayName = \"Tag\";\n","import { Tag } from \"../tag/Tag\";\n\n\nexport type LabelType = {\n id?: string;\n label: string;\n color: string;\n};\n\ntype LabelProps = {\n labels?: (string | LabelType)[];\n};\n\nexport const Label: React.FC<LabelProps> = ({ labels = [] }) => {\n const uniqueLabels: string[] = [];\n const uniqueObjects: LabelType[] = [];\n\n labels.forEach((item) => {\n if (typeof item === 'string' && !uniqueLabels.includes(item)) {\n uniqueLabels.push(item);\n } else if (typeof item !== 'string' && !uniqueObjects.some((obj) => obj.label === item.label)) {\n uniqueObjects.push(item);\n }\n });\n\n return (\n <>\n {uniqueLabels?.map((label) => (\n <Tag size='xs' key={label} label={label} color={'primary'} />\n ))}\n {uniqueObjects?.map((obj, index) => (\n <Tag size='xs' key={obj?.id || index} label={obj?.label} color={obj?.color} />\n ))}\n </>\n );\n};\n","import { useMemo } from 'react';\n\nexport type OS = 'macos' | 'windows' | 'linux' | 'other';\n\n/**\n * Detects the current operating system\n */\nexport const detectOS = (): OS => {\n if (typeof window === 'undefined' || typeof navigator === 'undefined') {\n return 'other';\n }\n\n const platform = navigator.platform?.toLowerCase() || '';\n const userAgent = navigator.userAgent?.toLowerCase() || '';\n\n if (platform.includes('mac') || userAgent.includes('mac')) {\n return 'macos';\n }\n if (platform.includes('win') || userAgent.includes('win')) {\n return 'windows';\n }\n if (platform.includes('linux') || userAgent.includes('linux')) {\n return 'linux';\n }\n\n return 'other';\n};\n\n/**\n * Hook to detect the current operating system\n */\nexport const useOS = (): OS => {\n return useMemo(() => detectOS(), []);\n};\n\n/**\n * Check if the current OS is macOS\n */\nexport const isMacOS = (): boolean => detectOS() === 'macos';\n\n/**\n * Mapping of generic shortcut keys to OS-specific symbols\n */\nexport const SHORTCUT_KEY_MAP: Record<string, { macos: string; other: string }> = {\n Meta: { macos: '⌘', other: 'Ctrl' },\n Alt: { macos: '⌥', other: 'Alt' },\n Shift: { macos: '⇧', other: 'Shift' },\n Control: { macos: '⌃', other: 'Ctrl' },\n Enter: { macos: '↵', other: 'Enter' },\n Delete: { macos: '⌫', other: 'Delete' },\n};\n\n/**\n * Converts a shortcut key to its OS-specific representation\n */\nexport const mapShortcutKey = (key: string, os?: OS): string => {\n const currentOS = os ?? detectOS();\n const mapping = SHORTCUT_KEY_MAP[key];\n \n if (!mapping) {\n return key;\n }\n \n return currentOS === 'macos' ? mapping.macos : mapping.other;\n};\n\n/**\n * Converts an array of shortcut keys to their OS-specific representations\n */\nexport const mapShortcutKeys = (keys: string[], os?: OS): string[] => {\n const currentOS = os ?? detectOS();\n return keys.map((key) => mapShortcutKey(key, currentOS));\n};\n\n/**\n * Hook to convert shortcut keys to OS-specific representations\n */\nexport const useShortcutKeys = (keys: string[]): string[] => {\n const os = useOS();\n return useMemo(() => mapShortcutKeys(keys, os), [keys, os]);\n};\n","import './styles.css';\nimport * as React from 'react';\nimport { useState, useMemo } from 'react';\nimport { createPortal } from 'react-dom';\nimport { usePopperTooltip } from 'react-popper-tooltip';\nimport { mapShortcutKeys, useOS } from '../../hooks/useOS';\n\nexport type TooltipPlacement =\n | 'auto'\n | 'auto-start'\n | 'auto-end'\n | 'top'\n | 'top-start'\n | 'top-end'\n | 'bottom'\n | 'bottom-start'\n | 'bottom-end'\n | 'right'\n | 'right-start'\n | 'right-end'\n | 'left'\n | 'left-start'\n | 'left-end';\n\nexport interface TooltipProps {\n title: React.ReactNode;\n placement?: TooltipPlacement;\n children: React.ReactNode;\n className?: string;\n hideTooltip?: boolean;\n delayShow?: boolean;\n whiteSpace?: 'normal' | 'nowrap' | 'pre' | 'pre-wrap' | 'pre-line' | 'initial' | 'inherit';\n /** Array of keyboard shortcut keys to display (e.g., ['Cmd', 'S'] or ['Ctrl', 'Enter']) */\n shortcuts?: string[];\n}\n\nconst Tooltip = ({\n children,\n title,\n hideTooltip = false,\n delayShow = false,\n whiteSpace = 'initial',\n placement = 'top',\n className,\n shortcuts,\n}: TooltipProps) => {\n const { getArrowProps, getTooltipProps, setTooltipRef, setTriggerRef, visible } = usePopperTooltip({\n placement,\n });\n\n const [showTooltip, setShowTooltip] = useState(!delayShow);\n const [timer, setTimer] = useState<ReturnType<typeof setTimeout> | null>(null);\n\n const os = useOS();\n const mappedShortcuts = useMemo(\n () => (shortcuts ? mapShortcutKeys(shortcuts, os) : undefined),\n [shortcuts, os]\n );\n\n const handleMouseEnter = () => {\n if (delayShow) {\n const newTimer = setTimeout(() => {\n setShowTooltip(true);\n }, 1000);\n setTimer(newTimer);\n } else {\n setShowTooltip(true);\n }\n };\n\n const handleMouseLeave = () => {\n if (timer) {\n clearTimeout(timer);\n setTimer(null);\n }\n if (delayShow) {\n setShowTooltip(false);\n }\n };\n\n return (\n <>\n <div ref={setTriggerRef} className={className} onMouseEnter={handleMouseEnter} onMouseLeave={handleMouseLeave}>\n {children}\n </div>\n {visible &&\n (delayShow ? showTooltip && title : title) &&\n !hideTooltip &&\n createPortal(\n <div\n ref={setTooltipRef}\n {...getTooltipProps({\n className: 'tooltip-container',\n style: { whiteSpace: whiteSpace },\n })}\n >\n <div className=\"flex items-center gap-2\">\n <span className=\"flex-1\">{title}</span>\n {mappedShortcuts && mappedShortcuts.length > 0 && (\n <span className=\"flex items-center gap-0.5 flex-shrink-0\">\n {mappedShortcuts.map((key, index) => (\n <kbd\n key={index}\n className=\"inline-flex items-center justify-center min-w-[20px] h-5 px-1 bg-neutral-800 rounded text-[11px] font-medium text-[#E5E7EB] leading-none\"\n >\n {key}\n </kbd>\n ))}\n </span>\n )}\n </div>\n <div {...getArrowProps({ className: 'tooltip-arrow' })} />\n </div>,\n document.body,\n )}\n </>\n );\n};\n\nexport default Tooltip;","import { type FC, type SVGAttributes } from 'react';\n\ntype TProps = SVGAttributes<SVGElement> & {\n size?: number;\n fill?: string;\n fillSecondary?: string;\n};\n\nexport const AIStarIcon: FC<TProps> = ({ size = 24, fill = 'currentColor', fillSecondary = 'white' }) => {\n return (\n <svg xmlns='http://www.w3.org/2000/svg' width={size} height={size} viewBox='0 0 24 24' fill='none'>\n <path\n d='M17.5128 13.6276L13.7184 11.9717C12.8016 11.5708 12.0696 10.8389 11.6688 9.92205L10.0128 6.12765C9.88322 5.83245 9.46802 5.83245 9.33842 6.12765L7.68242 9.92205C7.28162 10.8389 6.54962 11.5708 5.63282 11.9717L1.83122 13.63C1.53842 13.7572 1.53602 14.1748 1.83122 14.3044L5.69762 16.0132C6.61202 16.4188 7.34162 17.1532 7.73762 18.0724L9.34082 21.7948C9.46802 22.09 9.88802 22.0924 10.0152 21.7948L11.6688 18.0052C12.0696 17.0884 12.8016 16.3565 13.7184 15.9557L17.5128 14.2997C17.808 14.17 17.808 13.7548 17.5128 13.6252V13.6276Z'\n fill={fill}\n />\n <path\n d='M22.2624 6.43876L20.0688 5.48116C19.5384 5.25076 19.116 4.82596 18.8856 4.29796L17.928 2.10436C17.8536 1.93396 17.6136 1.93396 17.5392 2.10436L16.5816 4.29796C16.3512 4.82836 15.9264 5.25076 15.3984 5.48116L13.2024 6.43876C13.032 6.51316 13.032 6.75316 13.2024 6.82756L15.4368 7.81636C15.9648 8.04916 16.3872 8.47636 16.6152 9.00676L17.5416 11.1572C17.616 11.3276 17.8584 11.3276 17.9328 11.1572L18.888 8.96836C19.1184 8.43796 19.5432 8.01556 20.0712 7.78516L22.2648 6.82756C22.4352 6.75316 22.4352 6.51316 22.2648 6.43876H22.2624Z'\n fill={fill}\n />\n </svg>\n );\n};\n","import Tooltip, { type TooltipPlacement } from \"../tooltip/Tooltip\";\nimport { AIStarIcon } from \"./AIStarIcon\";\n\n\ntype TProps = {\n position?: TooltipPlacement;\n title?: string;\n};\n\nexport const AIExtractedIndicator = ({\n position = 'top',\n title = 'AI Extracted Field',\n}: TProps) => {\n return (\n <Tooltip placement={position} title={title}>\n <div className='cursor-pointer'>\n <AIStarIcon size={12} fill='#016DCF' fillSecondary='#54A4EC' />\n </div>\n </Tooltip>\n );\n};\n","export const Required = ({ isConditional }: { isConditional?: boolean }) => (\n <span className={`${isConditional ? 'text-yellow-500' : 'text-red-500'}`}>{'*'}</span>\n);\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport cn from \"classnames\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport React, { forwardRef, useState } from \"react\";\nimport { useTranslation } from 'react-i18next';\nimport { Tooltip as AntTooltip } from \"antd\";\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport { HelpIcon } from \"../../icons/HelpIcon\";\nimport { Label } from \"../../data-display/label/Label\";\nimport type { LabelType } from \"../../data-display/label/Label\";\nimport { NoteAddOutlined, BoltOutlined } from \"@mui/icons-material\";\nimport { AIExtractedIndicator } from \"../../icons/AIExtractedIndicator\";\nimport { Required } from \"../../icons/Required\";\n\n/**\n * Risk details interface\n */\nexport interface RiskDetails {\n color?: string;\n description?: string;\n hexBgColor?: string;\n hexBorderColor?: string;\n [key: string]: any;\n}\n\n/**\n * Risk details card component props\n */\nexport interface RiskDetailsCardProps {\n riskDetails: RiskDetails;\n maxWidth?: string;\n showAllRisksSuggestions?: boolean;\n}\n\n/**\n * Eye icon for password visibility toggle\n */\nconst EyeIcon = ({ className, size = 16 }: { className?: string; size?: number }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <path d=\"M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z\" />\n <circle cx=\"12\" cy=\"12\" r=\"3\" />\n </svg>\n);\n\n/**\n * Eye off icon for password visibility toggle\n */\nconst EyeOffIcon = ({ className, size = 16 }: { className?: string; size?: number }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <path d=\"M17.94 17.94A10.07 10.07 0 0 1 12 20c-7 0-11-8-11-8a18.45 18.45 0 0 1 5.06-5.94M9.9 4.24A9.12 9.12 0 0 1 12 4c7 0 11 8 11 8a18.5 18.5 0 0 1-2.16 3.19m-6.72-1.07a3 3 0 1 1-4.24-4.24\" />\n <line x1=\"1\" y1=\"1\" x2=\"23\" y2=\"23\" />\n </svg>\n);\n\n/**\n * Close icon for clearable input\n */\nconst CloseIcon = ({ className, size = 16 }: { className?: string; size?: number }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\" />\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\" />\n </svg>\n);\n\n/**\n * Revert icon for revert back value\n */\nconst RevertIcon = ({ className, size = 16 }: { className?: string; size?: number }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n className={className}\n >\n <path d=\"M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8\" />\n <path d=\"M3 3v5h5\" />\n </svg>\n);\n\n/**\n * Props for the BaseInputField component\n */\nexport type TBaseInputFieldProps = any & {\n /** Current value of the input */\n value: string;\n /** Callback function called when the input value changes */\n onChange(data: any): void;\n /** Callback function for key down events */\n onKeyDown?: void;\n /** Error message to display */\n errorMessage: string;\n /** Default value for the input */\n defaultValue?: string;\n /** Whether the input is disabled */\n disabled?: boolean;\n /** Maximum value for number inputs */\n max?: number;\n /** Minimum value for number inputs */\n min?: number;\n /** Whether the field is required */\n required?: boolean;\n /** Whether the required indicator shows as conditional */\n isRequiredConditional?: boolean;\n /** Background color class */\n bg?: string;\n /** Tags to display with the label */\n tags?: (string | LabelType)[];\n /** Text color class */\n color?: string;\n /** Unique identifier for the input */\n id: string;\n /** Label text for the input */\n label?: string;\n /** Input type (text, email, password, number, etc.) */\n type?: string;\n /** Value to revert back to */\n revertBackValue?: any;\n /** Placeholder text */\n placeholder?: string;\n /** Whether this is a password field with visibility toggle */\n isPasswordField?: boolean;\n /** Callback to set password visibility */\n setIsPasswordVisible?: any;\n /** Tooltip text */\n tooltip?: string;\n /** Whether to preserve original case in the label */\n originalCase?: boolean;\n /** Icon or element to display at the end of the input */\n suffixIcon?: React.ReactNode;\n /** Text size class */\n textSize?: string;\n /** Whether the value was AI extracted */\n isAiExtracted?: boolean;\n /** Whether this is a GTN field */\n isGTN?: boolean;\n /** GTN name for document integration */\n gtnName?: any;\n /** Success message to display */\n successMessage?: string;\n /** Additional CSS classes for the input element */\n inputClassName?: string;\n /** Inline styles for the input element */\n inputStyle?: React.CSSProperties;\n /** Additional CSS classes for the label */\n labelClassName?: string;\n /** Whether this is a live field */\n isLiveField?: boolean;\n /** Callback function for blur events */\n onBlur?: () => void;\n /** Whether the input is clearable */\n isClearable?: boolean;\n /** Additional CSS classes for the wrapper */\n className?: string;\n /** Ref for the input element */\n inputRef?: React.RefObject<HTMLInputElement>;\n /** Risk details data */\n riskDetails?: RiskDetails;\n /** Whether risk analysis is open */\n isRiskAnalysisOpen?: boolean;\n /** Custom risk details card component */\n RiskDetailsCard?: React.ComponentType<RiskDetailsCardProps>;\n /** Handler for adding GTN to document */\n onAddGTNToDocument?: (keyValuePair: { key: string; value: string }) => void;\n};\n\n/**\n * A feature-rich input field component with label, validation, GTN integration,\n * risk analysis support, and comprehensive styling options.\n *\n * @example\n * ```tsx\n * <BaseInputField\n * id=\"email\"\n * label=\"Email Address\"\n * type=\"email\"\n * value={email}\n * onChange={setEmail}\n * placeholder=\"Enter your email\"\n * required\n * errorMessage={emailError}\n * />\n * ```\n */\nexport const BaseInputField = forwardRef<HTMLInputElement, TBaseInputFieldProps>(\n (\n {\n id,\n label,\n onChange,\n errorMessage,\n successMessage,\n required,\n isRequiredConditional = false,\n bg,\n tags,\n color,\n className,\n isPasswordField,\n setIsPasswordVisible,\n inputRef,\n tooltip,\n suffixIcon,\n revertBackValue,\n originalCase = false,\n textSize,\n isAiExtracted = false,\n isGTN = false,\n gtnName = null,\n inputClassName = \"\",\n inputStyle = {},\n labelClassName,\n onBlur,\n isLiveField = false,\n isClearable = false,\n riskDetails,\n isRiskAnalysisOpen = false,\n RiskDetailsCard,\n onAddGTNToDocument,\n ...props\n },\n ref\n ) => {\n const { t } = useTranslation();\n const [showPassword, setShowPassword] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n\n const handleAddGTNToDocument = (value: string) => {\n if (onAddGTNToDocument) {\n const keyValuePair = {\n key: gtnName,\n value,\n };\n onAddGTNToDocument(keyValuePair);\n }\n };\n\n return (\n <div\n className={cn(\n \"flex gap-0.5 relative\",\n isHovered && isGTN\n ? \"border rounded-lg border-primary-100 bg-primary-50 p-1 focus:ring-blue-500 focus:border-blue-500 dark:focus:ring-neutral-50 dark:focus:border-neutral-50\"\n : \"\"\n )}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {isGTN && !isHovered ? (\n <div className=\"w-1 h-1 bg-primary-600 rounded-full animate-blink mt-1.5\" />\n ) : null}\n <div className={cn(\"flex flex-col w-full\", className)}>\n <style>\n {`\n .dark input:-webkit-autofill,\n .dark input:-webkit-autofill:hover,\n .dark input:-webkit-autofill:focus {\n -webkit-text-fill-color: white !important;\n -webkit-box-shadow: 0 0 0px 1000px var(--input-bg-color) inset !important;\n transition: background-color 5000s ease-in-out 0s;\n }\n \n input:-webkit-autofill,\n input:-webkit-autofill:hover,\n input:-webkit-autofill:focus {\n -webkit-text-fill-color: #111827 !important;\n -webkit-box-shadow: 0 0 0px 1000px white inset !important;\n transition: background-color 5000s ease-in-out 0s;\n }\n `}\n </style>\n {label && (\n <label\n id={id}\n htmlFor=\"text\"\n className={`mb-1 text-xs font-medium text-gray-600 inline-flex items-center gap-1 ${\n !originalCase ? \"capitalize\" : \"\"\n } ${labelClassName || \"\"}`}\n >\n <div className=\"flex flex-wrap items-center justify-between w-full\">\n <div className=\"inline-flex flex-wrap items-center gap-1\">\n <Typography\n variant=\"medium\"\n size=\"extra-small\"\n appearance=\"subtitle\"\n >\n {label}\n {required ? (\n <Required isConditional={isRequiredConditional} />\n ) : required ? (\n <span\n className={`ml-0.5 ${\n isRequiredConditional\n ? \"text-yellow-500\"\n : \"text-red-500\"\n }`}\n >\n *\n </span>\n ) : null}\n </Typography>\n {revertBackValue?.length > 0 &&\n revertBackValue !== props.value && (\n <AntTooltip placement=\"top\" title={revertBackValue}>\n <button\n className=\"cursor-pointer\"\n onClick={() => onChange(revertBackValue)}\n type=\"button\"\n >\n <RevertIcon\n size={16}\n className=\"cursor-pointer pb-0.5 text-primary-600\"\n />\n </button>\n </AntTooltip>\n )}\n {isLiveField && (\n <BoltOutlined\n sx={{\n fontSize: 16,\n color: \"var(--color-primary-600)\",\n rotate: \"15deg\",\n }}\n />\n )}\n {isAiExtracted && <AIExtractedIndicator />}\n <Label labels={tags} />\n {tooltip && (\n <AntTooltip placement=\"top\" title={tooltip}>\n <div className=\"cursor-pointer\">\n <HelpIcon />\n </div>\n </AntTooltip>\n )}\n </div>\n {isGTN && isHovered && onAddGTNToDocument ? (\n <button\n id={`btn-base-input-field-add-to-document-${id}`}\n className=\"cursor-pointer\"\n onClick={() => handleAddGTNToDocument(props?.value)}\n type=\"button\"\n >\n <AntTooltip placement=\"top\" title={t(\"Add to document\")}>\n <NoteAddOutlined\n className=\"text-primary-600\"\n sx={{\n fontSize: 16,\n }}\n />\n </AntTooltip>\n </button>\n ) : null}\n </div>\n </label>\n )}\n <label className=\"relative block\">\n <div className=\"relative\">\n <input\n {...props}\n ref={inputRef || ref}\n id={id || label}\n key={id}\n required={required}\n style={\n {\n \"--input-bg-color\":\n \"var(--tw-bg-opacity, 1) rgb(var(--bg-color))\",\n ...inputStyle,\n } as React.CSSProperties\n }\n className={cn(\n \"border text-neutral-900 dark:text-black-100 border-solid h-[32px] hover:border-primary-500 dark:hover:border-primary-400\",\n errorMessage\n ? \"border-red-300\"\n : successMessage\n ? \"border-green-300\"\n : \"border-neutral-200 dark:border-black-600\",\n bg && bg,\n color ? color : \"text-neutral-900 dark:text-black-100\",\n textSize ? textSize : \"text-sm\",\n \"rounded-md block w-full px-3 py-1.5 font-medium disabled:opacity-70 focus:outline-none focus:ring-2\",\n \"focus:ring-primary-500 dark:focus:ring-primary-400 focus:border-primary-500 dark:focus:border-primary-400 disabled:!bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400\",\n inputClassName ? inputClassName : \"\",\n isRiskAnalysisOpen && riskDetails?.color\n ? `bg-${riskDetails?.color}-50 border-${riskDetails?.color}-300`\n : \"bg-white dark:bg-black-600\"\n )}\n onChange={(e) => {\n onChange(e.target.value);\n }}\n onClick={(e) => e.stopPropagation()}\n autoComplete=\"off\"\n onBlur={onBlur}\n />\n {isPasswordField ? (\n <button\n className=\"absolute inset-y-0 flex items-center cursor-pointer right-2\"\n onClick={() => {\n setShowPassword(!showPassword);\n setIsPasswordVisible?.(!showPassword);\n }}\n type=\"button\"\n >\n {showPassword ? (\n <EyeIcon className=\"text-gray-400\" size={16} />\n ) : (\n <EyeOffIcon className=\"text-gray-400\" size={16} />\n )}\n </button>\n ) : isClearable && props.value ? (\n <button\n id={`btn-input-field-clear-${id}`}\n className=\"absolute inset-y-0 flex items-center cursor-pointer right-2 focus:outline-none\"\n onClick={(e) => {\n e.stopPropagation();\n onChange(\"\");\n }}\n type=\"button\"\n >\n <CloseIcon\n className=\"text-neutral-200 dark:text-black-500\"\n size={16}\n />\n </button>\n ) : suffixIcon ? (\n <div className=\"absolute inset-y-0 flex items-center right-2\">\n {suffixIcon}\n </div>\n ) : null}\n </div>\n </label>\n <AnimatePresence>\n {errorMessage && (\n <motion.div\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n transition={{ duration: 0.2 }}\n >\n <Typography\n className=\"mt-1 text-error-500\"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {errorMessage}\n </Typography>\n </motion.div>\n )}\n </AnimatePresence>\n <AnimatePresence>\n {successMessage && (\n <motion.div\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n transition={{ duration: 0.2 }}\n >\n <Typography\n className=\"mt-1 text-success-500 dark:text-success-300\"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {successMessage}\n </Typography>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n\n {isHovered &&\n riskDetails &&\n isRiskAnalysisOpen &&\n RiskDetailsCard && (\n <div\n role=\"tooltip\"\n tabIndex={0}\n className=\"absolute left-0 right-0 top-[95%] mt-1 z-50 bg-white dark:bg-black-600 rounded-xl\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.preventDefault()}\n onKeyDown={(e) => {\n if (e.key === \"Escape\") {\n setIsHovered(false);\n }\n }}\n >\n <RiskDetailsCard riskDetails={riskDetails} />\n </div>\n )}\n </div>\n );\n }\n);\n\nBaseInputField.displayName = \"BaseInputField\";\n\nexport default BaseInputField;\n\n","import cn from \"classnames\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { forwardRef } from \"react\";\nimport type { RefObject } from \"react\";\nimport { Typography } from \"../../data-display/typography/Typography\";\n\n/**\n * Props for the TextAreaField component\n */\nexport interface TextFieldProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"onChange\"> {\n /** The label text to display above the textarea */\n label?: string;\n /** Placeholder text for the textarea */\n placeholder: string;\n /** Current value of the textarea */\n value?: string;\n /** Callback function called when the textarea value changes */\n onChange: (value: string) => void;\n /** Number of visible text lines for the textarea */\n rows?: number;\n /** Message to display below the textarea */\n message?: string;\n /** Type of message to display */\n messageType?: \"success\" | \"error\" | \"info\" | \"default\";\n /** Default value for the textarea */\n defaultValue?: string;\n /** Whether the field is required */\n required?: boolean;\n /** Whether the textarea is disabled */\n disabled?: boolean;\n /** Additional CSS classes for the wrapper container */\n className?: string;\n /** Ref object for the textarea element */\n inputRef?: RefObject<HTMLTextAreaElement>;\n /** Maximum character length allowed */\n maxLength?: number;\n /** Whether to preserve original case in the label */\n originalCase?: boolean;\n /** Whether to remove border styling */\n noBorder?: boolean;\n /** Unique identifier for the textarea */\n id?: string;\n /** Custom inline styles for the textarea */\n inputStyle?: React.CSSProperties;\n}\n\n/**\n * A customizable textarea field component with label, validation, and styling support.\n * Features dark mode support, accessibility enhancements, and character count display.\n *\n * @param props - The props for the TextAreaField component\n * @returns The rendered TextAreaField component\n */\nexport const TextField = forwardRef<HTMLTextAreaElement, TextFieldProps>(\n (\n {\n label,\n placeholder,\n value,\n onChange,\n rows = 4,\n message,\n messageType = \"default\",\n defaultValue,\n required = false,\n disabled = false,\n className,\n inputRef,\n maxLength,\n originalCase = false,\n noBorder = false,\n id,\n inputStyle,\n ...textareaProps\n },\n ref\n ) => {\n const textareaId =\n id || `textarea-${Math.random().toString(36).substr(2, 9)}`;\n const characterCount = value?.length || 0;\n const isNearLimit =\n maxLength && characterCount > maxLength - Math.min(50, maxLength / 5);\n const isOverLimit = maxLength && characterCount >= maxLength;\n\n // Helper function to get border classes based on message type\n const getTextareaBorderClasses = (): string => {\n if (messageType === \"error\")\n return \"border-red-300 dark:border-red-500 focus:border-red-500 focus:ring-red-200 dark:focus:ring-red-400\";\n if (messageType === \"success\")\n return \"border-green-300 dark:border-green-500 focus:border-green-500 focus:ring-green-200 dark:focus:ring-green-400\";\n if (messageType === \"info\")\n return \"border-blue-300 dark:border-blue-500 focus:border-blue-500 focus:ring-blue-200 dark:focus:ring-blue-400\";\n return \"border-gray-300 dark:border-gray-600\";\n };\n\n // Helper function to get message typography class\n const getMessageTypographyClass = (): string => {\n if (messageType === \"error\") return \"text-red-500 dark:text-red-400\";\n if (messageType === \"success\")\n return \"text-green-500 dark:text-green-400\";\n if (messageType === \"info\") return \"text-blue-500 dark:text-blue-400\";\n return \"text-gray-500 dark:text-gray-400\";\n };\n\n return (\n <div className={cn(\"flex flex-col gap-0.5 relative\", className)}>\n {label && (\n <label\n htmlFor={textareaId}\n className={cn(\n \"mb-1 text-xs font-medium text-gray-600 dark:text-gray-300 inline-flex items-center gap-1\",\n {\n capitalize: !originalCase,\n }\n )}\n >\n <Typography\n size=\"extra-small\"\n variant=\"medium\"\n appearance=\"subtitle\"\n >\n {label}\n {required && <span className=\"text-red-500 ml-1\">*</span>}\n </Typography>\n </label>\n )}\n\n <textarea\n {...textareaProps}\n id={textareaId}\n ref={ref || inputRef}\n onChange={(e) => onChange(e.target.value)}\n defaultValue={defaultValue}\n value={value}\n required={required}\n disabled={disabled}\n rows={rows}\n placeholder={placeholder}\n maxLength={maxLength || undefined}\n style={inputStyle}\n className={cn(\n // Base styles\n \"border rounded-lg bg-white dark:bg-black-600 block w-full py-2.5 px-3\",\n \"font-inter font-medium text-sm transition-colors duration-200\",\n \"focus:ring-2 focus:outline-none resize-vertical min-h-[2.5rem]\",\n\n // State-based border styles\n !noBorder && getTextareaBorderClasses(),\n\n // State-based styles\n {\n // No border\n \"border-none focus:border-none focus:ring-0\": noBorder,\n // Disabled state\n \"bg-gray-50 dark:bg-gray-700 text-gray-400 dark:text-gray-500 cursor-not-allowed\":\n disabled,\n \"placeholder:text-gray-400 dark:placeholder:text-gray-500\":\n disabled,\n // Enabled state\n \"text-gray-900 dark:text-gray-100\": !disabled,\n \"placeholder:text-gray-400 dark:placeholder:text-gray-400\":\n !disabled,\n }\n )}\n onClick={(e) => e.stopPropagation()}\n aria-invalid={message && messageType === \"error\" ? \"true\" : \"false\"}\n aria-describedby={message ? `${textareaId}-message` : undefined}\n />\n\n {/* Character count display */}\n {maxLength && (\n <Typography\n className=\"mt-0.5 text-right text-gray-600 dark:text-gray-400\"\n appearance=\"custom\"\n size=\"extra-small\"\n >\n <span\n className={cn({\n \"text-red-500 dark:text-red-400\": isOverLimit,\n \"text-yellow-500 dark:text-yellow-400\":\n isNearLimit && !isOverLimit,\n })}\n >\n {characterCount}\n </span>\n <span className=\"text-gray-400 dark:text-gray-500\">\n {\" \"}\n / {maxLength}\n </span>\n </Typography>\n )}\n\n {/* Message */}\n <AnimatePresence>\n {message && (\n <motion.div\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n transition={{ duration: 0.2 }}\n id={`${textareaId}-message`}\n role={messageType === \"error\" ? \"alert\" : undefined}\n >\n <Typography\n className={cn(\"mt-1\", getMessageTypographyClass())}\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {message}\n </Typography>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n );\n }\n);\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport cn from \"classnames\";\nimport { forwardRef, useState } from \"react\";\nimport type { RefObject } from \"react\";\nimport { Tooltip as AntTooltip } from \"antd\";\nimport { useTranslation } from 'react-i18next';\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport { HelpIcon } from \"../../icons/HelpIcon\";\nimport { Label } from \"../../data-display/label/Label\";\nimport type { LabelType } from \"../../data-display/label/Label\";\nimport { NoteAddOutlined, BoltOutlined } from \"@mui/icons-material\";\nimport { AIExtractedIndicator } from \"../../icons/AIExtractedIndicator\";\nimport { Required } from \"../../icons/Required\";\n\n/**\n * Risk details interface\n */\nexport interface RiskDetails {\n color?: string;\n description?: string;\n hexBgColor?: string;\n hexBorderColor?: string;\n [key: string]: any;\n}\n\n/**\n * Risk details card component props - generic to allow consumer-specific risk types\n */\nexport interface RiskDetailsCardProps<T = any> {\n riskDetails: T;\n maxWidth?: string;\n showAllRisksSuggestions?: boolean;\n}\n\n/**\n * Props for the TextAreaField component\n */\nexport interface TextAreaFieldProps\n extends Omit<React.TextareaHTMLAttributes<HTMLTextAreaElement>, \"onChange\" | \"maxLength\"> {\n /** The label text to display above the textarea */\n label?: string;\n /** Placeholder text for the textarea */\n placeholder: string;\n /** Current value of the textarea */\n value?: string | any;\n /** Callback function called when the textarea value changes */\n onChange: (value: string) => void;\n /** Number of visible text lines for the textarea (alias for rows) */\n row?: number;\n /** Error message to display below the textarea */\n errorMessage?: string;\n /** Default value for the textarea */\n defaultValue?: string;\n /** Whether the field is required */\n required?: boolean;\n /** Whether the required indicator shows as conditional (yellow instead of red) */\n isRequiredConditional?: boolean;\n /** Tags/labels to display next to the label */\n tags?: (string | LabelType)[];\n /** Whether the textarea is disabled */\n disabled?: boolean;\n /** Additional CSS classes for the textarea element */\n className?: string;\n /** Ref object for the textarea element */\n inputRef?: RefObject<HTMLTextAreaElement>;\n /** Maximum character length allowed */\n maxLength?: number | null;\n /** Tooltip text to display */\n tooltip?: string;\n /** Whether to preserve original case in the label */\n originalCase?: boolean;\n /** Whether the value was AI extracted */\n isAiExtracted?: boolean;\n /** Whether this is a GTN (Global Term Name) field */\n isGTN?: boolean;\n /** GTN field name for document integration */\n gtnName?: any;\n /** Whether to remove border styling */\n noBorder?: boolean;\n /** Unique identifier for the textarea */\n id?: string;\n /** Custom inline styles for the textarea */\n inputStyle?: React.CSSProperties;\n /** Additional CSS classes for the label */\n labelClassName?: string;\n /** Whether this is a live field */\n isLiveField?: boolean;\n /** Callback function called when the textarea loses focus */\n onBlur?: () => void;\n /** Risk details data */\n riskDetails?: RiskDetails;\n /** Whether risk analysis is open */\n isRiskAnalysisOpen?: boolean;\n /** Custom risk details card component */\n RiskDetailsCard?: React.ComponentType<RiskDetailsCardProps<any>>;\n /** Handler for adding GTN to document */\n onAddGTNToDocument?: (keyValuePair: { key: string; value: string }) => void;\n}\n\n/**\n * A customizable textarea field component with label, validation, GTN integration,\n * risk analysis support, and styling support. Features dark mode support,\n * accessibility enhancements, and character count display.\n *\n * @example\n * ```tsx\n * <TextAreaField\n * label=\"Description\"\n * placeholder=\"Enter a description...\"\n * value={description}\n * onChange={(value) => setDescription(value)}\n * required\n * />\n *\n * <TextAreaField\n * label=\"Comments\"\n * placeholder=\"Enter comments...\"\n * value={comments}\n * onChange={(value) => setComments(value)}\n * maxLength={500}\n * isGTN\n * gtnName=\"comments_field\"\n * onAddGTNToDocument={(kv) => handleAddToDocument(kv)}\n * />\n * ```\n */\nexport const TextAreaField = forwardRef<HTMLDivElement, TextAreaFieldProps>(\n (\n {\n label,\n placeholder,\n value,\n onChange,\n row = 4,\n errorMessage,\n defaultValue,\n required,\n isRequiredConditional = false,\n tags = [],\n disabled,\n className,\n inputRef,\n maxLength = undefined,\n tooltip = \"\",\n originalCase = false,\n isAiExtracted = false,\n isGTN = false,\n gtnName = \"\",\n noBorder = false,\n id,\n inputStyle,\n labelClassName,\n isLiveField = false,\n onBlur,\n riskDetails,\n isRiskAnalysisOpen = false,\n RiskDetailsCard,\n onAddGTNToDocument,\n ...textareaProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n const [isHovered, setIsHovered] = useState(false);\n\n const handleAddGTNToDocument = () => {\n if (onAddGTNToDocument) {\n const keyValuePair = {\n key: gtnName,\n value: value || \"\",\n };\n onAddGTNToDocument(keyValuePair);\n }\n };\n\n return (\n <div\n ref={ref}\n id={id}\n className={cn(\n \"flex gap-0.5 relative\",\n isHovered && isGTN\n ? \"border rounded-lg border-primary-100 bg-primary-50 p-1\"\n : \"\"\n )}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {isGTN && !isHovered ? (\n <div className=\"w-1 h-1 bg-primary-600 rounded-full animate-blink mt-1.5\" />\n ) : null}\n <div className={cn(\"w-full flex flex-col\")}>\n <label\n htmlFor=\"text\"\n className={`mb-1 text-xs font-medium text-gray-600 dark:text-black-300 inline-flex items-center gap-1 ${\n !originalCase ? \"capitalize\" : \"\"\n } ${labelClassName || \"\"}`}\n >\n <div className=\"w-full flex items-center justify-between flex-wrap\">\n <div className=\"inline-flex items-center gap-1 flex-wrap\">\n <Typography\n size=\"extra-small\"\n variant=\"medium\"\n appearance=\"subtitle\"\n >\n {label}\n {required && <Required />}\n </Typography>\n {isLiveField && (\n <BoltOutlined\n sx={{\n fontSize: 16,\n color: \"var(--color-primary-600)\",\n rotate: \"15deg\",\n }}\n />\n )}\n {isAiExtracted && <AIExtractedIndicator />}\n <Label labels={tags || []} />\n {tooltip && (\n <AntTooltip placement=\"top\" title={tooltip}>\n <div\n className=\"cursor-pointer\"\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n }\n }}\n >\n <HelpIcon />\n </div>\n </AntTooltip>\n )}\n </div>\n\n {isGTN && isHovered ? (\n <button\n id=\"btn-textarea-field-add-to-document\"\n className=\"cursor-pointer\"\n onClick={handleAddGTNToDocument}\n type=\"button\"\n >\n <AntTooltip placement=\"top\" title={t(\"Add to document\")}>\n <NoteAddOutlined\n className=\"text-primary-600\"\n sx={{ fontSize: 16 }}\n />\n </AntTooltip>\n </button>\n ) : null}\n </div>\n </label>\n <textarea\n {...textareaProps}\n onBlur={onBlur}\n onChange={(e) => onChange(e.target.value)}\n defaultValue={defaultValue}\n value={value}\n required={required}\n className={cn(\n `border rounded-lg bg-white dark:bg-black-600 focus:ring-primary-500 focus:border-primary-500 \n dark:focus:ring-primary-400 dark:focus:border-primary-400 block w-full py-2.5 px-3 font-inter font-medium text-sm \n disabled:bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400`,\n {\n \"border-red-300\": errorMessage,\n \"border-gray-300 dark:border-black-700\": !errorMessage,\n \"text-neutral-400 dark:text-neutral-500\": disabled,\n \"text-neutral-900 dark:text-neutral-50\": !disabled,\n \"border-none\": noBorder,\n \"focus:border-none\": noBorder,\n \"placeholder:text-neutral-400 dark:placeholder:text-black-400\":\n disabled,\n \"placeholder:text-neutral-400 dark:placeholder:text-black-300\":\n !disabled,\n },\n className,\n isRiskAnalysisOpen &&\n riskDetails?.color &&\n `!bg-${riskDetails.color}-50 border-${riskDetails.color}-300`\n )}\n style={\n isRiskAnalysisOpen && riskDetails\n ? {\n backgroundColor: riskDetails.hexBgColor || undefined,\n borderColor: riskDetails.hexBorderColor || undefined,\n ...inputStyle,\n }\n : inputStyle\n }\n rows={row}\n placeholder={placeholder}\n disabled={disabled}\n maxLength={maxLength || undefined}\n id={id}\n ref={inputRef}\n onClick={(e) => e.stopPropagation()}\n autoComplete=\"off\"\n />\n {maxLength ? (\n <Typography\n className=\"mt-0.5 text-right text-neutral-900 dark:text-white\"\n appearance=\"custom\"\n size=\"extra-small\"\n >\n <span\n className={`${\n value?.length >= maxLength\n ? \"text-error-500\"\n : value?.length > maxLength - Math.min(50, maxLength / 5)\n ? \"text-warning-500 dark:text-warning-300\"\n : \"\"\n }`}\n >\n {value?.length || 0}{\" \"}\n </span>\n / {maxLength}\n </Typography>\n ) : null}\n\n {errorMessage && (\n <Typography\n className=\"text-error-500 mt-1\"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {errorMessage}\n </Typography>\n )}\n </div>\n\n {isHovered && isRiskAnalysisOpen && riskDetails && RiskDetailsCard && (\n <div\n role=\"tooltip\"\n tabIndex={0}\n className=\"absolute left-0 right-0 top-[95%] mt-1 z-50 bg-white dark:bg-black-600 rounded-xl\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.preventDefault()}\n onKeyDown={(e) => {\n if (e.key === \"Escape\") {\n setIsHovered(false);\n }\n }}\n >\n <RiskDetailsCard riskDetails={riskDetails} />\n </div>\n )}\n </div>\n );\n }\n);\n\nTextAreaField.displayName = \"TextAreaField\";\n\n","import React, { type ReactNode } from 'react';\nimport Tooltip from '../tooltip/Tooltip';\n\nexport interface IconButtonProps {\n children: ReactNode;\n className?: string;\n onClick?(event: React.MouseEvent<HTMLButtonElement>): void;\n variant?: 'default' | 'secondary' | 'native' | 'ghost';\n disabled?: boolean;\n tooltip?: string;\n tooltipPlacement?: 'top' | 'bottom' | 'left' | 'right';\n noborder?: boolean;\n id?: string;\n}\n\nconst IconButton: React.FC<IconButtonProps> = ({\n children,\n className,\n variant = 'default',\n onClick,\n disabled,\n tooltip,\n tooltipPlacement = 'top',\n noborder,\n id,\n}) => {\n const baseClasses = 'flex items-center';\n const variantClasses = {\n default: `bg-white dark:bg-black-800 hover:bg-neutral-100 dark:hover:bg-black-700 rounded-lg ${\n noborder ? '' : 'border border-neutral-300 dark:border-neutral-800'\n } p-2 hover:opacity-80`,\n secondary: `bg-transparent rounded-lg ${noborder ? '' : 'border border-neutral-300 dark:border-black-400'} p-2 hover:opacity-80`,\n native: `bg-transparent rounded-lg ${noborder ? '' : 'border border-neutral-300'} p-2 hover:opacity-80`,\n ghost:\n 'text-neutral-400 hover:bg-neutral-100 hover:text-neutral-600 dark:hover:text-neutral-200 dark:hover:bg-neutral-800 p-1 cursor-pointer rounded-full hover:scale-75 transition-all duration-500 ease-in-out',\n };\n const disabledClasses = disabled ? 'cursor-not-allowed opacity-50' : 'cursor-pointer';\n\n return (\n <Tooltip title={tooltip} placement={tooltipPlacement} delayShow>\n <button\n id={id}\n disabled={disabled}\n className={`${baseClasses} ${variantClasses[variant]} ${className || ''} ${disabledClasses}`}\n onClick={onClick}\n >\n {children}\n </button>\n </Tooltip>\n );\n};\n\nexport default IconButton;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport cn from \"classnames\";\nimport { forwardRef, useEffect, useRef, useState } from \"react\";\nimport { Tooltip as AntTooltip } from \"antd\";\nimport { useTranslation } from 'react-i18next';\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport { Label } from \"../../data-display/label/Label\";\nimport type { LabelType } from \"../../data-display/label/Label\";\nimport {\n BoltOutlined,\n CloseRounded,\n NoteAddOutlined,\n TableChartRounded,\n} from \"@mui/icons-material\";\nimport { AIExtractedIndicator } from \"../../icons/AIExtractedIndicator\";\nimport { Required } from \"../../icons/Required\";\nimport { HelpIcon } from \"../../icons/HelpIcon\";\nimport Tooltip from \"../../tooltip/Tooltip\";\nimport IconButton from \"../../button/IconButton\";\n\n/**\n * Risk details interface for risk analysis integration\n */\nexport interface RiskDetails {\n color?: string;\n description?: string;\n hexBgColor?: string;\n hexBorderColor?: string;\n [key: string]: any;\n}\n\n/**\n * Risk details card component props - generic to allow consumer-specific risk types\n */\nexport interface RiskDetailsCardProps<T = any> {\n riskDetails: T;\n maxWidth?: string;\n showAllRisksSuggestions?: boolean;\n}\n\n/**\n * Props for the MasterDataModal component\n */\nexport interface MasterDataModalProps {\n isVisible: boolean;\n onSelected?: (masterDataValue: any, masterDataRow?: any) => void;\n onClose: () => void;\n masterDataColumnName?: string;\n masterDataFilters?: any;\n masterDataName?: string;\n masterDataId: string | null;\n showFilters?: boolean;\n}\n\n/**\n * Props for the MasterDataInputField component\n */\nexport interface MasterDataInputFieldProps {\n /** Unique identifier for the input */\n id: string;\n /** Label text to display above the input */\n label: string;\n /** Placeholder text for the input */\n placeholder?: string;\n /** Current value of the input */\n value: any;\n /** Callback function called when value changes */\n onChange: (value: any, masterDataRowValue?: any) => void;\n /** Error message to display below the input */\n errorMessage?: string;\n /** Callback to set error message */\n setErrorMessage: (message: string) => void;\n /** Callback to remove error message */\n removeErrorMessage: () => void;\n /** Default value for the input */\n defaultValue?: any;\n /** Whether the field is required */\n required?: boolean;\n /** Whether the required indicator shows as conditional (yellow instead of red) */\n isRequiredConditional?: boolean;\n /** Name of the master data source */\n masterDataName: string;\n /** Column name in the master data */\n masterDataColumnName: string;\n /** Formula for computing master data value */\n masterDataFormula?: string;\n /** Filters for master data */\n masterDataFilters?: any;\n /** Tags/labels to display next to the label */\n tags?: (string | LabelType)[];\n /** Index for array fields */\n index?: number;\n /** Tooltip text for the help icon */\n tooltip?: string;\n /** Whether to preserve original case in the label */\n originalCase?: boolean;\n /** Color for the input text */\n color?: string;\n /** Whether this is a GTN (Global Term Name) field */\n isGTN?: boolean;\n /** GTN field name for document integration */\n gtnName?: any;\n /** Whether the value was AI extracted */\n isAiExtracted?: boolean;\n /** Reference data for formula computation */\n reference?: any;\n /** Whether the input is disabled */\n disabled?: boolean;\n /** Additional CSS classes for the label */\n labelClassName?: string;\n /** Whether this is a live field */\n isLiveField?: boolean;\n /** Callback function called when input loses focus */\n onBlur?: () => void;\n /** Handler for adding GTN to document */\n onAddGTNToDocument?: (keyValuePair: { key: string; value: string }) => void;\n /** Risk details data */\n riskDetails?: RiskDetails;\n /** Whether risk analysis is open */\n isRiskAnalysisOpen?: boolean;\n /** Custom risk details card component */\n RiskDetailsCard?: React.ComponentType<RiskDetailsCardProps<any>>;\n /** Primary color shades for styling */\n primaryColorShades?: Record<number, string>;\n /** Callback to set disable actions state */\n setDisableActions?: (disabled: boolean) => void;\n /** Toast function for deprecated field warning */\n showDeprecatedFieldWarning?: () => void;\n /** Master data modal component */\n MasterDataModal?: React.ComponentType<MasterDataModalProps>;\n /** Function to parse master data formula */\n parseMasterDataFormula?: (formula: string, row: any) => string;\n}\n\n/**\n * A highly customizable master data input component with label, validation, and styling support.\n * Features master data modal integration, GTN support, risk analysis support,\n * and comprehensive prop support for various use cases.\n *\n * @example\n * ```tsx\n * <MasterDataInputField\n * id=\"master-field\"\n * label=\"Master Field\"\n * value={fieldValue}\n * onChange={(value, rowValue) => setFieldValue(value)}\n * setErrorMessage={(msg) => setError(msg)}\n * removeErrorMessage={() => setError('')}\n * masterDataName=\"customers\"\n * masterDataColumnName=\"name\"\n * required\n * />\n * ```\n */\nexport const MasterDataInputField = forwardRef<\n HTMLInputElement,\n MasterDataInputFieldProps\n>(\n (\n {\n id,\n label,\n placeholder,\n value,\n onChange,\n errorMessage,\n defaultValue,\n required = false,\n isRequiredConditional = false,\n masterDataName,\n masterDataColumnName,\n masterDataFormula,\n masterDataFilters,\n tags,\n index,\n tooltip = \"\",\n originalCase = false,\n color = \"\",\n isGTN = false,\n labelClassName,\n gtnName = null,\n isAiExtracted = false,\n disabled = false,\n reference = {},\n isLiveField = false,\n onBlur,\n onAddGTNToDocument,\n riskDetails,\n isRiskAnalysisOpen = false,\n RiskDetailsCard,\n primaryColorShades,\n setDisableActions,\n showDeprecatedFieldWarning,\n MasterDataModal,\n parseMasterDataFormula,\n },\n ref\n ) => {\n const { t } = useTranslation();\n const [isHovered, setIsHovered] = useState(false);\n const [inputValue, setInputValue] = useState<string | null>(null);\n const [showMasterDataModal, setShowMasterDataModal] = useState(false);\n const [suggestion, setSuggestion] = useState(\"\");\n const [masterDataRowValue, setMasterDataRowValue] = useState<any>(null);\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Use forwarded ref or internal ref\n const combinedRef = (ref as React.RefObject<HTMLInputElement>) || inputRef;\n\n useEffect(() => {\n setInputValue(value);\n }, [index]);\n\n useEffect(() => {\n if (inputValue !== null && inputValue !== value) {\n onChange(inputValue, masterDataRowValue);\n }\n }, [inputValue, masterDataRowValue]);\n\n const toggleMasterDataModal = () => {\n if (showMasterDataModal) {\n setDisableActions?.(false);\n } else {\n setDisableActions?.(true);\n }\n setShowMasterDataModal(!showMasterDataModal);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.keyCode === 9 || event.key === \"Enter\") {\n const currentRef = combinedRef.current || inputRef.current;\n if (currentRef) {\n setInputValue(suggestion);\n currentRef.blur();\n }\n }\n };\n\n const handleSetMasterData = (masterDataValue: any, masterDataRow?: any) => {\n let _value = masterDataValue;\n\n if (masterDataFormula && parseMasterDataFormula) {\n _value = parseMasterDataFormula(masterDataFormula, masterDataRow);\n }\n\n setSuggestion(\"\");\n setInputValue(_value);\n toggleMasterDataModal();\n setMasterDataRowValue(masterDataRow);\n };\n\n const handleClear = () => {\n setInputValue(\"\");\n setMasterDataRowValue(null);\n };\n\n const handleAddGTNToDocument = (_value: string) => {\n if (onAddGTNToDocument && gtnName) {\n const keyValuePair = {\n key: gtnName,\n value: _value,\n };\n onAddGTNToDocument(keyValuePair);\n }\n };\n\n const getClassName = (): string => {\n const baseClasses =\n \"border h-[32px] text-sm rounded-lg block w-full p-2.5 font-inter font-medium\";\n const borderColor = errorMessage\n ? \"border-red-300\"\n : isRiskAnalysisOpen && riskDetails?.color\n ? `border-${riskDetails?.color}-300`\n : \"border-gray-300 dark:border-black-600\";\n const placeholderColor = `placeholder:text-neutral-900 dark:placeholder:text-black-400`;\n const backgroundColor = `${\n isRiskAnalysisOpen && riskDetails?.color\n ? `bg-${riskDetails?.color}-50`\n : \"bg-gray-200 dark:bg-black-600 \"\n } ${color ? color : \"text-neutral-900 dark:text-black-200\"}`;\n\n return `${baseClasses} ${borderColor} ${backgroundColor} ${placeholderColor}`;\n };\n\n const resolveMasterDataValue = () => {\n if (inputValue !== null) {\n return inputValue;\n }\n if (masterDataFormula && parseMasterDataFormula) {\n return parseMasterDataFormula(masterDataFormula, reference);\n }\n\n return value;\n };\n\n useEffect(() => {\n if (showMasterDataModal && !masterDataName) {\n showDeprecatedFieldWarning?.();\n setShowMasterDataModal(false);\n }\n }, [showMasterDataModal, masterDataName, showDeprecatedFieldWarning]);\n\n return (\n <div\n className={cn(\n `flex gap-0.5 w-full relative`,\n isHovered && isGTN\n ? \"border rounded-lg border-primary-100 bg-primary-50 p-1\"\n : \"\",\n { \"error-field\": !!errorMessage }\n )}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {isGTN && !isHovered ? (\n <div className=\"w-1 h-1 bg-primary-600 rounded-full animate-blink mt-1.5\" />\n ) : null}\n\n <div className={cn(`flex flex-col w-full`)}>\n <label\n htmlFor=\"text\"\n className={`text-xs font-medium text-gray-600 inline-flex items-center gap-1 ${\n !originalCase ? \"capitalize\" : \"\"\n } ${labelClassName || \"\"}`}\n >\n <div className=\"w-full flex items-center justify-between flex-wrap\">\n <div className=\"inline-flex items-center gap-1 flex-wrap\">\n <Typography\n variant=\"medium\"\n size=\"extra-small\"\n appearance=\"subtitle\"\n >\n {label}\n {required && <Required isConditional={isRequiredConditional} />}\n </Typography>\n {isLiveField && (\n <BoltOutlined\n sx={{\n fontSize: 16,\n color: \"var(--color-primary-600)\",\n rotate: \"15deg\",\n }}\n />\n )}\n {isAiExtracted && <AIExtractedIndicator />}\n <Label labels={tags} />\n {tooltip && (\n <Tooltip\n placement=\"top\"\n title={`${tooltip}${masterDataFormula ? ` | ${masterDataFormula}` : \"\"}`}\n >\n <div className=\"cursor-pointer\">\n <HelpIcon />\n </div>\n </Tooltip>\n )}\n </div>\n\n {isGTN && isHovered && onAddGTNToDocument ? (\n <button\n id=\"btn-master-data-input-add-to-document\"\n className=\"cursor-pointer\"\n onClick={() => handleAddGTNToDocument(value?.toString() || \"\")}\n type=\"button\"\n >\n <AntTooltip placement=\"top\" title={t(\"Add to document\")}>\n <NoteAddOutlined\n sx={{\n fontSize: 16,\n color:\n primaryColorShades?.[600] || \"var(--color-primary-600)\",\n }}\n />\n </AntTooltip>\n </button>\n ) : null}\n </div>\n </label>\n <label className=\"relative block mt-1\">\n <input\n id={id}\n ref={combinedRef}\n required={required}\n placeholder={placeholder}\n className={getClassName()}\n onChange={(e) => {\n onChange(e.target.value, masterDataRowValue);\n setInputValue(e.target?.value);\n }}\n onKeyDown={handleKeyDown}\n value={resolveMasterDataValue()}\n defaultValue={defaultValue}\n disabled={true}\n autoComplete=\"off\"\n onBlur={onBlur}\n />\n\n <IconButton\n id={`btn-dynamic-data-input-rx-cross`}\n onClick={handleClear}\n className=\"absolute inset-y-0 right-1 flex items-center px-2 focus:border-transparent\"\n variant=\"ghost\"\n disabled={disabled}\n >\n <CloseRounded\n className=\"text-neutral-900 dark:text-black-300\"\n sx={{ fontSize: 16 }}\n />\n </IconButton>\n\n <IconButton\n id={`btn-dynamic-data-input-ai-outline-pic-center`}\n onClick={toggleMasterDataModal}\n className=\"absolute inset-y-0 right-8 flex items-center px-2 focus:border-transparent\"\n variant=\"ghost\"\n disabled={disabled}\n >\n <TableChartRounded\n className=\"text-neutral-900 dark:text-black-300\"\n sx={{ fontSize: 16 }}\n />\n </IconButton>\n </label>\n\n {errorMessage && (\n <Typography\n className=\"text-error-500 mt-1\"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {errorMessage}\n </Typography>\n )}\n\n {showMasterDataModal && MasterDataModal && (\n <MasterDataModal\n isVisible={showMasterDataModal}\n onSelected={handleSetMasterData}\n onClose={toggleMasterDataModal}\n masterDataColumnName={masterDataColumnName}\n masterDataFilters={masterDataFilters}\n masterDataName={masterDataName}\n masterDataId={masterDataName}\n showFilters\n />\n )}\n </div>\n\n {isHovered &&\n riskDetails &&\n isRiskAnalysisOpen &&\n RiskDetailsCard && (\n <div\n role=\"tooltip\"\n tabIndex={0}\n className=\"absolute left-0 right-0 top-[95%] mt-1 z-50 bg-white dark:bg-black-600 rounded-xl\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.preventDefault()}\n onKeyDown={(e) => {\n if (e.key === \"Escape\") {\n setIsHovered(false);\n }\n }}\n >\n <RiskDetailsCard riskDetails={riskDetails} />\n </div>\n )}\n </div>\n );\n }\n);\n\nMasterDataInputField.displayName = \"MasterDataInputField\";\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Select as AntDSelect, Tooltip as AntTooltip, Skeleton } from 'antd';\nimport type { SelectProps } from 'antd';\nimport classNames from 'classnames';\nimport debounce from 'lodash/debounce';\nimport { forwardRef, useCallback, useMemo, useRef, useState } from 'react';\nimport type { ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Typography } from '../../data-display/typography/Typography';\nimport { HelpIcon } from '../../icons/HelpIcon';\nimport { Label } from '../../data-display/label/Label';\nimport type { LabelType } from '../../data-display/label/Label';\nimport { Tag } from \"../../data-display/tag/Tag\";\nimport { BoltOutlined, NoteAddOutlined } from '@mui/icons-material';\nimport { AIExtractedIndicator } from '../../icons/AIExtractedIndicator';\nimport { Required } from '../../icons/Required';\n\n/**\n * Label-value pair for select options\n */\nexport type TLabelValue = { label: string; value: string; icon?: JSX.Element };\n\n/**\n * Select option interface\n */\nexport interface SelectOption {\n label: string | any;\n value: string | number;\n color?: string;\n}\n\ntype TagRender = SelectProps['tagRender'];\n\n/**\n * Risk details interface\n */\nexport interface RiskDetails {\n color?: string;\n description?: string;\n hexBgColor?: string;\n hexBorderColor?: string;\n [key: string]: any;\n}\n\n/**\n * Risk details card component props - generic to allow consumer-specific risk types\n */\nexport interface RiskDetailsCardProps<T = any> {\n riskDetails: T;\n maxWidth?: string;\n showAllRisksSuggestions?: boolean;\n}\n\n/**\n * Props for the SelectField component\n */\nexport interface SelectFieldProps extends Omit<SelectProps, 'onChange'> {\n /** Select mode - multiple or tags */\n mode?: 'multiple' | 'tags';\n /** The label text to display above the select */\n label?: string | ReactNode;\n /** Current value of the select */\n value?: string | string[] | SelectOption | SelectOption[] | any;\n /** Array of select options */\n selectOptions?: SelectOption[];\n /** Whether content is loading */\n hasContentLoading?: boolean;\n /** Callback function called when the select value changes */\n onChange?: (value: any) => void;\n /** Callback function for search */\n onSearch?: (searchValue: string) => void;\n /** Callback function for scroll */\n onScroll?: (e: React.UIEvent<HTMLDivElement, UIEvent>) => void;\n /** Callback function for input change */\n onInputChange?: (newValue: string) => void;\n /** Debounce timeout for search */\n debounceTimeout?: number;\n /** Error message to display */\n errorMessage?: string;\n /** Whether the field is required */\n required?: boolean;\n /** Tooltip text for the help icon */\n tooltip?: string;\n /** Tags to display with the label */\n tags?: (string | LabelType)[];\n /** Whether the value was AI extracted */\n isAiExtracted?: boolean;\n /** Whether to preserve original case in the label */\n originalCase?: boolean;\n /** Whether this is a GTN (Global Technical Name) field */\n isGTN?: boolean;\n /** GTN name for the field */\n gtnName?: any;\n /** Handler for adding GTN to document */\n onAddGTNToDocument?: (keyValuePair: { key: string; value: string }) => void;\n /** Whether the field is hovered */\n isHovered?: boolean;\n /** Whether to enable filter option */\n filterOption?: boolean;\n /** Whether the select is loading */\n isLoading?: boolean;\n /** Whether to auto clear search value */\n autoClearSearchValue?: boolean;\n /** Whether to show label with full opacity */\n fullOpacityLabel?: boolean;\n /** Color for the select */\n color?: string;\n /** Whether to show all tags */\n showAllTags?: boolean;\n /** Custom tag render function */\n customTagRender?: TagRender;\n /** Custom inline styles for the select */\n inputStyles?: React.CSSProperties;\n /** Whether the select is disabled */\n disabled?: boolean;\n /** Whether to show select all option */\n showSelectAll?: boolean;\n /** Additional CSS classes for the label */\n labelClassName?: string;\n /** Additional CSS classes for the wrapper */\n className?: string;\n /** Risk details data */\n riskDetails?: RiskDetails;\n /** Whether risk analysis is open */\n isRiskAnalysisOpen?: boolean;\n /** Custom risk details card component */\n RiskDetailsCard?: React.ComponentType<RiskDetailsCardProps<any>>;\n /** Add to document icon component */\n AddToDocumentIcon?: React.ComponentType<{ fontSize?: number; color?: string }>;\n /** Primary color shades for styling */\n primaryColorShades?: Record<number, string>;\n /** User avatar component for option rendering */\n UserAvatar?: React.ComponentType<{\n firstName: string;\n lastName: string;\n profilePic: string;\n size: string;\n enablePopper: boolean;\n userId: string;\n }>;\n /** Whether the required indicator shows as conditional (yellow instead of red) */\n isRequiredConditional?: boolean;\n /** Whether this is a live field */\n isLiveField?: boolean;\n}\n\n/**\n * Parse value type alias for return type\n */\ntype ParsedValue = string | number | string[] | number[] | SelectOption | null;\n\n/**\n * Parse value to the correct format for Ant Design Select\n */\nconst parseValue = (\n value: string | string[] | SelectOption | SelectOption[]\n): ParsedValue => {\n if (Array.isArray(value)) {\n return value.map((item) => (typeof item === 'string' || typeof item === 'number' ? item : item.value)) as string[] | number[];\n }\n\n return value || null;\n};\n\n/**\n * Remove duplicate options\n */\nconst removeDuplicates = (arr: any[]) => {\n return arr.filter((item: { value: any; label: any }, index: any, self: any[]) => {\n return self.findIndex((t: { value: any; label: any }) => t.value === item.value && t.label === item.label) === index;\n });\n};\n\n/**\n * Prepare options from various input formats\n */\nconst prepareOptions = ({\n options,\n value,\n defaultValue,\n}: {\n options?: SelectOption[];\n value: string | string[] | SelectOption | SelectOption[];\n defaultValue?: string | string[] | SelectOption | SelectOption[];\n}): SelectOption[] => {\n if (options?.length) {\n return removeDuplicates(options.map((opt) => ({ ...opt, color: opt.color })));\n }\n\n if (Array.isArray(value) && value.length && typeof value[0] === 'object' && 'label' in value[0]) {\n return value.map((item: any) => ({\n label: String(item?.label || ''),\n value: String(item?.value || ''),\n color: item?.color,\n }));\n }\n\n if (value && typeof value === 'object' && 'label' in value) {\n return [\n {\n label: String((value as any).label || ''),\n value: String((value as any).value || ''),\n color: (value as any)?.color,\n },\n ];\n }\n\n if (Array.isArray(defaultValue) && defaultValue.length && typeof defaultValue[0] === 'object' && 'label' in defaultValue[0]) {\n return defaultValue.map((item: any) => ({\n label: String(item?.label || ''),\n value: String(item?.value || ''),\n color: item?.color,\n }));\n }\n\n if (defaultValue && typeof defaultValue === 'object' && 'label' in defaultValue) {\n return [\n {\n label: String((defaultValue as any).label || ''),\n value: String((defaultValue as any).value || ''),\n color: (defaultValue as any)?.color,\n },\n ];\n }\n\n return [];\n};\n\n/**\n * Loading indicator component for select dropdown\n */\nconst LoadingIndicator = ({ hasExistingData }: { hasExistingData: boolean }) => (\n <div className=\"!w-full px-3 py-1.5\">{hasExistingData ? <Skeleton paragraph={{ rows: 1, width: '100%' }} /> : <Skeleton />}</div>\n);\n\n/**\n * Props for SelectPopupRender component\n */\ninterface SelectPopupRenderProps {\n showSelectAll: boolean;\n mode?: 'multiple' | 'tags';\n options: SelectOption[];\n searchValue: string;\n handleSelectAll: () => void;\n isAllSelected: boolean;\n menu: ReactNode;\n isLoading: boolean;\n hasExistingData: boolean;\n t: (key: string) => string;\n}\n\n/**\n * SelectPopupRender component - Renders the custom popup content for the select dropdown\n */\nconst SelectPopupRender = ({\n showSelectAll,\n mode,\n options,\n searchValue,\n handleSelectAll,\n isAllSelected,\n menu,\n isLoading,\n hasExistingData,\n t,\n}: SelectPopupRenderProps) => (\n <>\n {showSelectAll && mode === 'multiple' && options.length > 0 && searchValue.trim().length === 0 && (\n <div\n role=\"button\"\n tabIndex={0}\n className=\"px-3 py-2 border-b border-gray-200 dark:border-gray-600 cursor-pointer hover:bg-gray-50 dark:hover:bg-gray-700\"\n onClick={(e) => {\n e.stopPropagation();\n handleSelectAll();\n }}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleSelectAll();\n }\n }}\n >\n <Typography size=\"small\" variant=\"semibold\" className=\"text-primary-600 dark:text-primary-300\" appearance=\"custom\">\n {isAllSelected ? t('Deselect all') : t('Select all')}\n </Typography>\n </div>\n )}\n {menu}\n {isLoading && <LoadingIndicator hasExistingData={hasExistingData} />}\n </>\n);\n\n/**\n * SelectField component - A feature-rich select dropdown with multi-select, tags, search, and more\n *\n * @example\n * ```tsx\n * <SelectField\n * label=\"Country\"\n * value=\"us\"\n * selectOptions={[\n * { label: 'United States', value: 'us' },\n * { label: 'Canada', value: 'ca' }\n * ]}\n * onChange={(value) => console.log(value)}\n * />\n * \n * <SelectField\n * label=\"Tags\"\n * mode=\"multiple\"\n * value={['tag1', 'tag2']}\n * selectOptions={tagOptions}\n * onChange={(values) => console.log(values)}\n * />\n * ```\n */\nexport const SelectField = forwardRef<HTMLDivElement, SelectFieldProps>(\n (\n {\n label,\n value: valueProp,\n mode,\n errorMessage,\n selectOptions = [],\n required = false,\n tags,\n className,\n onInputChange,\n tooltip,\n originalCase = false,\n isAiExtracted = false,\n isGTN = false,\n gtnName: _gtnName = null,\n onChange,\n onSearch,\n debounceTimeout = 500,\n filterOption = true,\n onScroll,\n isLoading = false,\n allowClear = true,\n autoClearSearchValue = true,\n fullOpacityLabel = false,\n showAllTags = false,\n customTagRender,\n inputStyles: _inputStyles,\n disabled = false,\n showSelectAll = false,\n labelClassName,\n riskDetails,\n isRiskAnalysisOpen = false,\n RiskDetailsCard,\n AddToDocumentIcon,\n primaryColorShades,\n UserAvatar,\n onAddGTNToDocument,\n isRequiredConditional,\n isLiveField = false,\n ...props\n },\n ref\n ) => {\n const { t } = useTranslation();\n const [isHoveredState, setIsHoveredState] = useState(false);\n const selectRef = useRef<HTMLDivElement>(null);\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\n const [searchValue, setSearchValue] = useState('');\n\n const handleAddGTNToDocument = () => {\n if (onAddGTNToDocument) {\n let _value: string = '';\n\n if (value == null) {\n _value = '';\n } else if (typeof value === 'string' || typeof value === 'number') {\n _value = String(value);\n } else if (Array.isArray(value)) {\n // If array of SelectOption, string, or number\n _value = value.map((item) => (typeof item === 'object' && item !== null && 'value' in item ? item.value : item)).join(', ');\n } else if (typeof value === 'object' && 'value' in value) {\n _value = String(value.value);\n }\n\n const keyValuePair = {\n key: _gtnName,\n value: _value,\n };\n onAddGTNToDocument(keyValuePair);\n }\n };\n\n const value = parseValue(valueProp);\n const debounceFetcher = useMemo(() => (onSearch ? debounce(onSearch, debounceTimeout) : null), [onSearch, debounceTimeout]);\n\n const handleChange = (_newValue: string | string[], selectedOptions: any) => {\n if (selectRef.current && props.id) {\n const containerElement = document.getElementById(props.id);\n if (containerElement) {\n const valueToStore = Array.isArray(selectedOptions) ? selectedOptions.map((opt: any) => opt.value) : selectedOptions?.value;\n\n containerElement.dataset.selectedValue = JSON.stringify(valueToStore);\n const changeEvent = new Event('change', { bubbles: true });\n\n Object.defineProperty(changeEvent, 'target', {\n writable: false,\n value: containerElement,\n });\n\n containerElement.dispatchEvent(changeEvent);\n\n const pilotEvent = new CustomEvent('pilot-change', {\n bubbles: true,\n detail: {\n selector: `#${props.id}`,\n value: valueToStore,\n type: 'change',\n },\n });\n containerElement.dispatchEvent(pilotEvent);\n }\n }\n\n if (mode === 'tags') {\n const _values = Array.isArray(_newValue) ? _newValue : [_newValue];\n onChange?.(_values?.map((item) => ({ label: item, value: item })));\n } else {\n onChange?.(selectedOptions);\n }\n };\n\n const options = prepareOptions({\n options: selectOptions,\n value: valueProp,\n defaultValue: props?.defaultValue,\n });\n\n const hasExistingData = useMemo(() => {\n return options.length > 0 || (value !== null && value !== undefined);\n }, [options, value]);\n\n const isAllSelected = useMemo(() => {\n if (!mode || mode !== 'multiple' || options.length === 0) return false;\n\n const currentValues = Array.isArray(value) ? value : [];\n const allOptionValues = options.map((option) => option.value);\n\n return allOptionValues.every((optionValue) =>\n currentValues.some((currentValue: any) =>\n typeof currentValue === 'object' && currentValue !== null && 'value' in currentValue\n ? String(currentValue.value) === String(optionValue)\n : String(currentValue) === String(optionValue)\n )\n );\n }, [value, options, mode]);\n\n const handleSelectAll = () => {\n if (!mode || mode !== 'multiple' || !onChange) return;\n\n onChange(isAllSelected ? [] : options);\n };\n\n const triggerSubmit = useCallback((formEl: HTMLFormElement | null) => {\n if (!formEl) return;\n\n const submitEvent = new Event('submit', { bubbles: true, cancelable: true });\n formEl.dispatchEvent(submitEvent);\n\n const submitBtn = formEl.querySelector<HTMLButtonElement>('button[type=\"submit\"]');\n if (submitBtn) {\n submitBtn.click();\n }\n }, []);\n\n const handleKeyDown = useCallback((e: React.KeyboardEvent) => {\n if (e.key === 'Enter' && !isDropdownOpen) {\n if (value) {\n e.preventDefault();\n e.stopPropagation();\n\n const form = e.currentTarget.closest('form') as HTMLFormElement;\n triggerSubmit(form);\n }\n }\n }, [isDropdownOpen, value, triggerSubmit]);\n\n const tagRender: TagRender = useCallback(\n (renderProps: any) => {\n const { label: tagLabel, value: tagValue, onClose } = renderProps;\n\n const option = options.find((opt) => String(opt.value) === String(tagValue));\n const tagColor = option?.color || 'blue';\n\n const onPreventMouseDown = (event: React.MouseEvent<HTMLSpanElement>) => {\n event.preventDefault();\n event.stopPropagation();\n };\n\n return (\n <div className=\"cursor-pointer me-1 inline-flex\">\n <Tag\n label={tagLabel as string}\n color={tagColor}\n size=\"sm\"\n onMouseDown={onPreventMouseDown}\n onClick={disabled ? undefined : onClose}\n isHashColor\n removable\n onRemove={onClose}\n />\n </div>\n );\n },\n [options, disabled]\n );\n\n const handleOnInputChange = useCallback((value: string) => {\n setSearchValue(value);\n (onInputChange || debounceFetcher)?.(value);\n }, [onInputChange, debounceFetcher]);\n\n return (\n <div\n ref={ref}\n className={classNames(\n \"flex gap-0.5 w-full relative\",\n isHoveredState && isGTN\n ? \"border rounded-lg border-primary-100 bg-primary-50 p-1\"\n : \"\"\n )}\n onMouseEnter={() => setIsHoveredState(true)}\n onMouseLeave={() => setIsHoveredState(false)}\n id={props.id}\n >\n {isGTN && !isHoveredState ? (\n <div className=\"w-1 h-1 bg-primary-600 rounded-full animate-blink mt-1.5\" />\n ) : null}\n <div\n className={classNames(\n \"w-full flex flex-col gap-1 risk-analysis-select-field\",\n className\n )}\n onMouseDown={(e) => e.stopPropagation()}\n role=\"group\"\n aria-labelledby={label ? \"select-field-label\" : undefined}\n >\n {label ? (\n <label\n id=\"select-field-label\"\n htmlFor=\"label\"\n className={`text-xs font-medium text-gray-600 dark:text-black-300 inline-flex items-center gap-1 ${!originalCase ? \"capitalize\" : \"\"} ${\n labelClassName || \"\"\n }`}\n >\n <div className=\"w-full flex items-center justify-between flex-wrap\">\n <div className=\"inline-flex items-center gap-1 flex-wrap\">\n <Typography\n size=\"extra-small\"\n className={\n fullOpacityLabel\n ? \"text-black-900 dark:text-black-300\"\n : \"\"\n }\n variant=\"medium\"\n appearance=\"subtitle\"\n >\n {label}\n {required && <Required isConditional={isRequiredConditional}/>}\n </Typography>\n {isLiveField && (\n <BoltOutlined\n sx={{\n fontSize: 16,\n color: \"var(--color-primary-600)\",\n rotate: \"15deg\",\n }}\n />\n )}\n {isAiExtracted && <AIExtractedIndicator />}\n <Label labels={tags} />\n {tooltip && (\n <AntTooltip placement=\"top\" title={tooltip}>\n <div\n className=\"cursor-pointer\"\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === \"Enter\" || e.key === \" \") {\n e.preventDefault();\n // Tooltip will show on focus\n }\n }}\n >\n <HelpIcon />\n </div>\n </AntTooltip>\n )}\n </div>\n\n {isGTN && isHoveredState && AddToDocumentIcon ? (\n <button\n id=\"btn-select-field-base-add-to-document\"\n className=\"cursor-pointer\"\n onClick={handleAddGTNToDocument}\n type=\"button\"\n >\n <AntTooltip placement=\"top\" title={t(\"Add to document\")}>\n <NoteAddOutlined className=\"text-primary-600\" sx={{ fontSize: 16 }} />\n </AntTooltip> \n </button>\n ) : null}\n </div>\n </label>\n ) : null}\n <AntDSelect\n onKeyDown={handleKeyDown}\n onOpenChange={setIsDropdownOpen}\n disabled={disabled}\n className={`w-full text-black-900 dark:text-black-200 ${errorMessage && required ? \"ant-select-status-error\" : \"#e2e8f0\"} ${\n isRiskAnalysisOpen && riskDetails?.color\n ? \"risk-select-field\"\n : \"\"\n }`}\n classNames={{\n popup: {\n root: \"!z-[5001]\",\n },\n }}\n style={\n {\n width: \"100%\",\n \"--risk-color\":\n isRiskAnalysisOpen && riskDetails?.hexBgColor\n ? riskDetails?.hexBgColor\n : \"\",\n \"--risk-border-color\":\n isRiskAnalysisOpen && riskDetails?.hexBorderColor\n ? riskDetails?.hexBorderColor\n : \"\",\n } as React.CSSProperties\n }\n aria-required={required}\n mode={mode}\n value={value as string | string[] | null | undefined}\n onChange={handleChange}\n filterOption={\n onSearch\n ? filterOption\n : (input, option) =>\n ((option?.label as string) || \"\")\n ?.toLowerCase()\n ?.includes(input?.toLowerCase())\n }\n showSearch\n onSearch={handleOnInputChange || undefined}\n onPopupScroll={onScroll}\n popupClassName=\"select-field-dropdown-popup\"\n popupRender={(menu) => (\n <SelectPopupRender\n showSelectAll={showSelectAll}\n mode={mode}\n options={options}\n searchValue={searchValue}\n handleSelectAll={handleSelectAll}\n isAllSelected={isAllSelected}\n menu={menu}\n isLoading={isLoading}\n hasExistingData={hasExistingData}\n t={t}\n />\n )}\n options={options.map(\n ({\n label: optionLabel,\n value: optionValue,\n color: optionColor,\n ...rest\n }) => ({\n label: String(optionLabel),\n value: String(optionValue),\n key: String(optionValue),\n id: String(optionValue),\n color: optionColor,\n ...rest,\n })\n )}\n optionRender={(option) => {\n const fullname = option?.data?.fullname;\n\n if (fullname && UserAvatar) {\n const [firstName, lastName] = fullname.split(\" \");\n\n return (\n <div className=\"flex items-center justify-start gap-1\">\n <UserAvatar\n firstName={firstName}\n lastName={lastName}\n profilePic={option?.data?.url || \"\"}\n size=\"xs\"\n enablePopper={true}\n userId={option?.data?.value as string}\n />\n <span className=\"ml-2\">{option.label}</span>\n </div>\n );\n }\n return <span>{option.label}</span>;\n }}\n autoClearSearchValue={autoClearSearchValue}\n onClear={() =>\n onChange &&\n onChange(mode === \"tags\" || mode === \"multiple\" ? [] : null)\n }\n maxTagCount={\n mode === \"tags\" && showAllTags ? undefined : \"responsive\"\n }\n maxTagPlaceholder={(omittedValues) => (\n <AntTooltip\n styles={{\n root: {\n zIndex: 5002,\n },\n }}\n trigger={\"hover\"}\n title={\n omittedValues.length > 3\n ? omittedValues\n .slice(0, 3)\n .map(({ label: l }) => l)\n .join(\", \") + \"...\"\n : omittedValues.map(({ label: l }) => l).join(\", \")\n }\n overlayStyle={{\n pointerEvents: \"none\",\n }}\n >\n <span>+{omittedValues.length} more</span>\n </AntTooltip>\n )}\n tagRender={customTagRender || tagRender}\n allowClear={allowClear}\n {...props}\n />\n {errorMessage && (\n <Typography\n className=\"text-error-500\"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {errorMessage}\n </Typography>\n )}\n </div>\n\n {isHoveredState &&\n riskDetails &&\n isRiskAnalysisOpen &&\n RiskDetailsCard && (\n <div\n role=\"tooltip\"\n tabIndex={0}\n className=\"absolute left-0 right-0 top-[95%] mt-1 z-50 bg-white dark:bg-black-600 rounded-xl\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.preventDefault()}\n onKeyDown={(e) => {\n if (e.key === \"Escape\") {\n setIsHoveredState(false);\n }\n }}\n >\n <RiskDetailsCard riskDetails={riskDetails} />\n </div>\n )}\n </div>\n );\n }\n);\n\nSelectField.displayName = 'SelectField';\n\n","import { Checkbox as AntdCheckbox } from \"antd\";\nimport type { CheckboxChangeEvent, CheckboxProps, CheckboxRef } from \"antd\";\nimport cn from \"classnames\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { forwardRef } from \"react\";\nimport { Typography } from \"../../data-display/typography/Typography\";\n\n/**\n * Props for the Checkbox component\n */\nexport interface CheckboxComponentProps {\n /** Unique identifier for the checkbox */\n id: string;\n /** Label text to display next to the checkbox */\n label?: string;\n /** Whether the checkbox is checked */\n checked?: boolean;\n /** Whether the checkbox is checked (alias for checked) */\n isChecked?: boolean;\n /** Callback function called when checkbox state changes */\n onChange: (checked: boolean, event: CheckboxChangeEvent) => void;\n /** Whether the checkbox is disabled */\n disabled?: boolean;\n /** Whether the field is required */\n required?: boolean;\n /** Message to display below the checkbox */\n message?: string;\n /** Type of message to display */\n messageType?: \"success\" | \"error\" | \"info\" | \"default\";\n /** Additional CSS classes for the wrapper container */\n wrapperClassName?: string;\n /** Additional CSS classes for the checkbox input */\n checkboxClassName?: string;\n /** Additional CSS classes for the label */\n labelClassName?: string;\n /** Size variant for the checkbox */\n size?: \"small\" | \"medium\" | \"large\";\n /** Visual variant for the checkbox */\n variant?: \"default\" | \"outline\" | \"solid\";\n /** Whether to show the label on the left side */\n labelPosition?: \"left\" | \"right\";\n /** Additional props to pass to the Ant Design Checkbox */\n checkboxProps?: Omit<\n CheckboxProps,\n \"checked\" | \"onChange\" | \"id\" | \"disabled\"\n >;\n}\n\n/**\n * A highly customizable checkbox component with label, validation, and styling support.\n * Features dark mode support, accessibility enhancements, and comprehensive prop support.\n *\n * @example\n * ```tsx\n * <Checkbox\n * id=\"terms\"\n * label=\"I agree to the terms and conditions\"\n * checked={agreedToTerms}\n * onChange={(checked) => setAgreedToTerms(checked)}\n * required\n * />\n * ```\n */\nexport const Checkbox = forwardRef<CheckboxRef, CheckboxComponentProps>(\n (\n {\n id,\n label,\n checked,\n isChecked,\n onChange,\n disabled = false,\n required = false,\n message,\n messageType = \"default\",\n wrapperClassName,\n checkboxClassName,\n labelClassName,\n size = \"medium\",\n variant = \"default\",\n labelPosition = \"right\",\n checkboxProps,\n },\n ref\n ) => {\n // Use checked prop, fallback to isChecked for backward compatibility\n const isCheckboxChecked =\n checked !== undefined ? checked : isChecked || false;\n\n // Size-based styling\n const getSizeClasses = (): string => {\n switch (size) {\n case \"small\":\n return \"w-3 h-3\";\n case \"large\":\n return \"w-5 h-5\";\n default:\n return \"w-4 h-4\";\n }\n };\n\n // Variant-based styling\n const getVariantClasses = (): string => {\n if (messageType === \"error\") {\n return \"text-red-600 border-red-300 focus:ring-red-500 dark:focus:ring-red-600\";\n }\n if (messageType === \"success\") {\n return \"text-green-600 border-green-300 focus:ring-green-500 dark:focus:ring-green-600\";\n }\n if (messageType === \"info\") {\n return \"text-blue-600 border-blue-300 focus:ring-blue-500 dark:focus:ring-blue-600\";\n }\n\n switch (variant) {\n case \"outline\":\n return \"text-primary-600 bg-transparent border-neutral-300 focus:ring-primary-500 dark:focus:ring-primary-600\";\n case \"solid\":\n return \"text-primary-600 bg-primary-50 border-primary-300 focus:ring-primary-500 dark:focus:ring-primary-600 dark:bg-primary-900/20\";\n default:\n return \"text-primary-600 bg-gray-100 border-gray-300 focus:ring-primary-500 dark:focus:ring-primary-600 dark:bg-neutral-600 dark:border-gray-600\";\n }\n };\n\n // Message typography class\n const getMessageTypographyClass = (): string => {\n if (messageType === \"error\") return \"text-red-500 dark:text-red-400\";\n if (messageType === \"success\")\n return \"text-green-500 dark:text-green-400\";\n if (messageType === \"info\") return \"text-blue-500 dark:text-blue-400\";\n return \"text-neutral-500 dark:text-neutral-400\";\n };\n\n // Label typography size based on checkbox size\n const getLabelSize = (): \"extra-small\" | \"small\" | \"medium\" => {\n switch (size) {\n case \"small\":\n return \"extra-small\";\n case \"large\":\n return \"medium\";\n default:\n return \"small\";\n }\n };\n\n const handleChange = (e: CheckboxChangeEvent) => {\n onChange(e.target.checked, e);\n };\n\n const checkboxElement = (\n <AntdCheckbox\n {...checkboxProps}\n ref={ref}\n id={id}\n checked={isCheckboxChecked}\n onChange={handleChange}\n disabled={disabled}\n className={cn(\n // Base styles\n \"rounded focus:ring-2 focus:ring-offset-gray-800 transition-colors duration-200\",\n\n // Size classes\n getSizeClasses(),\n\n // Variant classes\n getVariantClasses(),\n\n // Disabled styles\n disabled && \"opacity-50 cursor-not-allowed\",\n\n // Custom classes\n checkboxClassName\n )}\n aria-required={required}\n aria-invalid={message && messageType === \"error\" ? \"true\" : \"false\"}\n aria-describedby={message ? `${id}-message` : undefined}\n />\n );\n\n const labelElement = label ? (\n <label\n htmlFor={id}\n className={cn(\n \"font-medium cursor-pointer transition-colors duration-200\",\n disabled\n ? \"text-neutral-400 dark:text-neutral-600 cursor-not-allowed\"\n : \"text-neutral-900 dark:text-neutral-100\",\n labelPosition === \"right\" ? \"ml-2\" : \"mr-2\",\n labelClassName\n )}\n >\n <Typography variant=\"medium\" size={getLabelSize()} appearance=\"body\">\n {label}\n {required && <span className=\"text-red-500 ml-1\">*</span>}\n </Typography>\n </label>\n ) : null;\n\n return (\n <div className={cn(\"flex flex-col\", wrapperClassName)}>\n <div\n className={cn(\n \"flex items-center\",\n labelPosition === \"left\" && \"flex-row-reverse justify-end\"\n )}\n >\n {labelPosition === \"left\" ? (\n <>\n {checkboxElement}\n {labelElement}\n </>\n ) : (\n <>\n {checkboxElement}\n {labelElement}\n </>\n )}\n </div>\n\n {/* Message */}\n <AnimatePresence>\n {message && (\n <motion.div\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n transition={{ duration: 0.2 }}\n id={`${id}-message`}\n role={messageType === \"error\" ? \"alert\" : undefined}\n >\n <Typography\n className={cn(\"mt-1\", getMessageTypographyClass())}\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {message}\n </Typography>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n );\n }\n);\n\nCheckbox.displayName = \"Checkbox\";\n\n// Export type alias for backward compatibility\nexport type TCheckboxComponentProps = CheckboxComponentProps;\n","import { Checkbox, type CheckboxChangeEvent, type CheckboxProps } from \"antd\";\n\ntype TCheckboxComponentProps = {\n label?: string;\n isChecked: boolean;\n onChange: (e: CheckboxChangeEvent) => void;\n id: string;\n} & CheckboxProps;\n\nexport const CheckboxComponent = ({\n label,\n isChecked,\n onChange,\n id,\n ...props\n}: TCheckboxComponentProps) => {\n return (\n <div className=\"flex items-center\">\n <Checkbox\n checked={isChecked}\n onChange={onChange}\n id={id}\n type=\"checkbox\"\n value=\"\"\n className=\"w-4 h-4 text-blue-600 bg-gray-100 border-gray-300 rounded focus:ring-blue-500 dark:focus:ring-blue-600 dark:ring-offset-gray-800 focus:ring-2 dark:!bg-neutral-600 dark:border-gray-600\"\n {...props}\n />\n <label className=\"ml-2 text-sm font-medium text-neutral-900 dark:text-neutral-100\">\n {label}\n </label>\n </div>\n );\n};\n\nexport type { TCheckboxComponentProps };\n\n","import type { ChangeEvent } from \"react\";\nimport { forwardRef } from \"react\";\nimport cn from \"classnames\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { Typography } from \"../../data-display/typography/Typography\";\n\n/**\n * Props for the ColorPicker component\n */\nexport interface ColorPickerProps {\n /** Unique identifier for the color picker */\n id: string;\n /** Label text to display above the color picker */\n label?: string;\n /** Current color value (hex format) */\n value?: string;\n /** Default color value (hex format) */\n defaultValue?: string;\n /** Callback function called when color value changes */\n onChange: (color: string, event: ChangeEvent<HTMLInputElement>) => void;\n /** Callback function called when color value changes (legacy) */\n onColorChange?: (color: string) => void;\n /** Whether the color picker is disabled */\n disabled?: boolean;\n /** Whether the field is required */\n required?: boolean;\n /** Message to display below the color picker */\n message?: string;\n /** Type of message to display */\n messageType?: \"success\" | \"error\" | \"info\" | \"default\";\n /** Additional CSS classes for the wrapper container */\n wrapperClassName?: string;\n /** Additional CSS classes for the color input */\n inputClassName?: string;\n /** Additional CSS classes for the label */\n labelClassName?: string;\n /** Size variant for the color picker */\n size?: \"small\" | \"medium\" | \"large\";\n /** Whether to show the color value as text */\n showValue?: boolean;\n /** Format for displaying the color value */\n valueFormat?: \"hex\" | \"rgb\" | \"hsl\";\n /** Additional props to pass to the input element */\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n /** Help text to display below the label */\n helpText?: string;\n}\n\n/**\n * A highly customizable color picker component with label, validation, and styling support.\n * Features dark mode support, accessibility enhancements, and comprehensive prop support.\n *\n * @example\n * ```tsx\n * <ColorPicker\n * id=\"theme-color\"\n * label=\"Theme Color\"\n * value={themeColor}\n * onChange={(color) => setThemeColor(color)}\n * showValue\n * required\n * />\n * ```\n */\nexport const ColorPicker = forwardRef<HTMLInputElement, ColorPickerProps>(\n (\n {\n id,\n label,\n value,\n defaultValue = \"#000000\",\n onChange,\n onColorChange,\n disabled = false,\n required = false,\n message,\n messageType = \"default\",\n wrapperClassName,\n inputClassName,\n labelClassName,\n size = \"medium\",\n showValue = false,\n valueFormat = \"hex\",\n inputProps,\n helpText,\n },\n ref\n ) => {\n // Use controlled value if provided, otherwise use defaultValue\n const colorValue = value !== undefined ? value : defaultValue;\n\n // Size-based styling\n const getSizeClasses = (): string => {\n switch (size) {\n case \"small\":\n return \"w-8 h-8\";\n case \"large\":\n return \"w-16 h-16\";\n default:\n return \"w-12 h-12\";\n }\n };\n\n // Message typography class\n const getMessageTypographyClass = (): string => {\n if (messageType === \"error\") return \"text-red-500 dark:text-red-400\";\n if (messageType === \"success\")\n return \"text-green-500 dark:text-green-400\";\n if (messageType === \"info\") return \"text-blue-500 dark:text-blue-400\";\n return \"text-neutral-500 dark:text-neutral-400\";\n };\n\n // Border styling based on message type\n const getBorderClasses = (): string => {\n if (messageType === \"error\") {\n return \"border-red-300 focus:border-red-500 focus:ring-red-200 dark:focus:ring-red-400/20\";\n }\n if (messageType === \"success\") {\n return \"border-green-300 focus:border-green-500 focus:ring-green-200 dark:focus:ring-green-400/20\";\n }\n if (messageType === \"info\") {\n return \"border-blue-300 focus:border-blue-500 focus:ring-blue-200 dark:focus:ring-blue-400/20\";\n }\n return \"border-neutral-300 dark:border-neutral-600 focus:border-primary-500 dark:focus:border-primary-400 focus:ring-primary-200 dark:focus:ring-primary-400/20\";\n };\n\n // Label typography size based on picker size\n const getLabelSize = (): \"extra-small\" | \"small\" | \"medium\" => {\n switch (size) {\n case \"small\":\n return \"extra-small\";\n case \"large\":\n return \"medium\";\n default:\n return \"small\";\n }\n };\n\n // Convert hex to RGB\n const hexToRgb = (hex: string): string => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) return hex;\n\n const r = parseInt(result[1], 16);\n const g = parseInt(result[2], 16);\n const b = parseInt(result[3], 16);\n\n return `rgb(${r}, ${g}, ${b})`;\n };\n\n // Convert hex to HSL\n const hexToHsl = (hex: string): string => {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n if (!result) return hex;\n\n const r = parseInt(result[1], 16) / 255;\n const g = parseInt(result[2], 16) / 255;\n const b = parseInt(result[3], 16) / 255;\n\n const max = Math.max(r, g, b);\n const min = Math.min(r, g, b);\n let h = 0;\n let s = 0;\n const l = (max + min) / 2;\n\n if (max !== min) {\n const d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n case g:\n h = (b - r) / d + 2;\n break;\n case b:\n h = (r - g) / d + 4;\n break;\n }\n h /= 6;\n }\n\n return `hsl(${Math.round(h * 360)}, ${Math.round(s * 100)}%, ${Math.round(\n l * 100\n )}%)`;\n };\n\n // Format color value for display\n const getFormattedValue = (): string => {\n switch (valueFormat) {\n case \"rgb\":\n return hexToRgb(colorValue);\n case \"hsl\":\n return hexToHsl(colorValue);\n default:\n return colorValue.toUpperCase();\n }\n };\n\n const handleChange = (event: ChangeEvent<HTMLInputElement>) => {\n const newColor = event.target.value;\n onChange(newColor, event);\n onColorChange?.(newColor); // Legacy callback support\n };\n\n return (\n <div className={cn(\"flex flex-col w-full\", wrapperClassName)}>\n {/* Label */}\n {label && (\n <label\n htmlFor={id}\n className={cn(\n \"mb-1 text-xs font-medium text-gray-600 dark:text-gray-300 inline-flex items-center gap-1\",\n labelClassName\n )}\n >\n <div className=\"flex flex-wrap items-center justify-between w-full\">\n <div className=\"inline-flex flex-wrap items-center gap-1\">\n <Typography\n variant=\"medium\"\n size={getLabelSize()}\n appearance=\"subtitle\"\n >\n {label}\n {required && <span className=\"text-red-500 ml-1\">*</span>}\n </Typography>\n </div>\n </div>\n </label>\n )}\n\n {/* Help text */}\n {helpText && (\n <Typography\n className=\"mb-2 text-neutral-600 dark:text-neutral-400\"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"regular\"\n >\n {helpText}\n </Typography>\n )}\n\n {/* Color Picker Container */}\n <div className=\"flex items-center gap-3\">\n {/* Color Input */}\n <div className=\"relative\">\n <input\n {...inputProps}\n ref={ref}\n type=\"color\"\n id={id}\n value={colorValue}\n onChange={handleChange}\n disabled={disabled}\n required={required}\n className={cn(\n // Base styles\n \"border rounded-md cursor-pointer transition-all duration-200\",\n \"focus:outline-none focus:ring-2\",\n\n // Size classes\n getSizeClasses(),\n\n // Border and focus styles\n getBorderClasses(),\n\n // Disabled styles\n disabled && \"opacity-50 cursor-not-allowed\",\n\n // Custom classes\n inputClassName\n )}\n style={{\n backgroundColor: colorValue,\n }}\n aria-required={required}\n aria-invalid={\n message && messageType === \"error\" ? \"true\" : \"false\"\n }\n aria-describedby={\n message || helpText ? `${id}-description` : undefined\n }\n />\n </div>\n\n {/* Color Value Display */}\n {showValue && (\n <div className=\"flex-1\">\n <Typography\n variant=\"medium\"\n size=\"small\"\n appearance=\"body\"\n className=\"font-mono text-neutral-700 dark:text-neutral-300\"\n >\n {getFormattedValue()}\n </Typography>\n </div>\n )}\n </div>\n\n {/* Message */}\n <AnimatePresence>\n {message && (\n <motion.div\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n transition={{ duration: 0.2 }}\n id={`${id}-description`}\n role={messageType === \"error\" ? \"alert\" : undefined}\n >\n <Typography\n className={cn(\"mt-1\", getMessageTypographyClass())}\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {message}\n </Typography>\n </motion.div>\n )}\n </AnimatePresence>\n\n {/* Help text description for accessibility */}\n {helpText && !message && (\n <div id={`${id}-description`} className=\"sr-only\">\n {helpText}\n </div>\n )}\n </div>\n );\n }\n);\n\nColorPicker.displayName = \"ColorPicker\";\n\n// Export type alias for backward compatibility\nexport type ColorPickerComponentProps = ColorPickerProps;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport cn from \"classnames\";\nimport CreatableSelect from \"react-select/creatable\";\nimport { ChevronLeftRounded } from \"@mui/icons-material\";\nimport { Tooltip } from \"antd\";\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport { Required } from \"../../icons/Required\";\nimport { HelpIcon } from \"../../icons/HelpIcon\";\nimport { Label } from \"../../data-display/label/Label\";\nimport type { LabelType } from \"../../data-display/label/Label\";\nimport type { ComponentProps } from \"react\";\n\n/**\n * Option type for the CreatableSelect component\n */\nexport interface SelectOption {\n /** The value of the option */\n value: string | number;\n /** The label displayed for the option */\n label: string;\n /** Whether the option is disabled */\n isDisabled?: boolean;\n /** Additional data for the option */\n data?: Record<string, unknown>;\n}\n\n/**\n * Props for the CreatableSelectField component\n * Matches the lax-web-portal implementation for drop-in replacement\n */\nexport type TProps = {\n /** Unique identifier for the select */\n id: string;\n /** Label text to display above the select */\n label: string;\n /** Placeholder text for the select */\n placeholder?: string;\n /** Current value for single select */\n value?: any;\n /** Callback function called when selection changes */\n onChange(data: any): void;\n /** Error message to display below the select */\n errorMessage?: string;\n /** Array of available options */\n selectOptions: any[];\n /** Whether the select is in loading state */\n loading?: boolean;\n /** Whether multiple selections are allowed */\n multiSelect?: boolean;\n /** Current values for multi select */\n selectedValues?: any[];\n /** Custom filter function for options */\n filterOption?: any;\n /** Whether to preserve original case in the label */\n originalCase?: boolean;\n /** Whether the select is disabled */\n disabled?: boolean;\n /** Whether the select is clearable */\n isClearable?: boolean;\n /** Whether the field is required */\n required?: boolean;\n /** Tags/labels to display next to the label */\n tags?: (string | LabelType)[];\n /** Tooltip text for the help icon */\n tooltip?: string;\n /** Additional CSS classes for the wrapper */\n className?: string;\n /** Whether the component is in dark mode */\n isDarkMode?: boolean;\n};\n\n// Export type alias for backward compatibility\nexport type CreatableSelectProps = TProps & ComponentProps<typeof CreatableSelect>;\n\n/**\n * A creatable select component with label, validation, and styling support.\n * Features dark mode support, accessibility enhancements, and comprehensive prop support.\n * Built on top of react-select/creatable for advanced functionality.\n *\n * This component is designed as a drop-in replacement for the lax-web-portal\n * CreatableSelectField component.\n *\n * @example\n * ```tsx\n * <CreatableSelectField\n * id=\"tags\"\n * label=\"Tags\"\n * selectOptions={tagOptions}\n * value={selectedTag}\n * onChange={(newValue) => setSelectedTag(newValue)}\n * placeholder=\"Select or create tags...\"\n * multiSelect\n * />\n * ```\n */\nexport const CreatableSelectField = ({\n id,\n label,\n errorMessage,\n selectOptions,\n loading,\n isClearable,\n multiSelect,\n selectedValues,\n disabled,\n required,\n value,\n className,\n tooltip,\n tags,\n originalCase = false,\n onChange,\n filterOption,\n placeholder,\n isDarkMode = false,\n ...props\n}: TProps & ComponentProps<typeof CreatableSelect>) => {\n // Enhanced onChange handler that dispatches pilot events\n const handleChange = (newValue: any, _actionMeta?: any) => {\n // Call the original onChange handler\n if (onChange) {\n onChange(newValue);\n }\n\n // Dispatch pilot-change event for recording\n const containerElement = document.getElementById(id);\n if (containerElement) {\n const pilotChangeEvent = new CustomEvent(\"pilot-change\", {\n bubbles: true,\n detail: {\n selector: `#${id}`,\n value: newValue,\n type: \"change\",\n },\n });\n containerElement.dispatchEvent(pilotChangeEvent);\n }\n };\n\n const styleProps = {\n control: (baseStyles: any, state: any) => ({\n ...baseStyles,\n borderColor:\n errorMessage && required\n ? isDarkMode\n ? \"#F04438\" /* error-500 */\n : \"rgb(253 164 155)\" /* red-300 */\n : state.isFocused\n ? isDarkMode\n ? \"rgb(64 64 64)\" /* neutral-700 */\n : \"var(--color-primary-600)\" /* primary-600 */\n : isDarkMode\n ? \"rgb(38 38 38)\" /* neutral-800 */\n : \"rgb(229 229 229)\" /* neutral-200 */,\n backgroundColor: isDarkMode\n ? state.isDisabled\n ? \"rgb(38 38 38)\" /* black-600 */\n : \"rgb(38 38 38)\" /* black-600 */\n : state.isDisabled\n ? \"rgb(245 245 245)\" /* neutral-100 */\n : \"rgb(255 255 255)\" /* white */,\n borderRadius: \"6px\",\n height: \"32px\",\n minHeight: \"32px\",\n fontSize: \"14px\",\n padding: \"4px 10px\",\n opacity: state.isDisabled ? 0.6 : 1,\n cursor: state.isDisabled ? \"not-allowed\" : \"default\",\n boxShadow: state.isFocused ? \"none\" : \"none\",\n \"&:hover\": {\n borderColor: state.isFocused\n ? isDarkMode\n ? \"rgb(64 64 64)\" /* neutral-700 */\n : \"var(--color-primary-600)\" /* primary-600 */\n : isDarkMode\n ? \"rgb(38 38 38)\" /* neutral-800 */\n : \"rgb(229 229 229)\" /* neutral-200 */,\n },\n placeholder: {\n color: isDarkMode ? \"rgb(38 38 38)\" : \"rgb(163 163 163)\",\n },\n }),\n valueContainer: (baseStyles: any) => ({\n ...baseStyles,\n fontSize: \"14px\",\n padding: 0,\n height: \"20px\",\n }),\n input: (baseStyles: any) => ({\n ...baseStyles,\n margin: \"0\",\n padding: \"0\",\n color: isDarkMode ? \"rgb(229 229 229)\" : \"inherit\", // white text in dark mode\n }),\n indicatorsContainer: (baseStyles: any) => ({\n ...baseStyles,\n fontSize: \"14px\",\n padding: 0,\n height: \"20px\",\n }),\n option: (baseStyles: any, state: any) => ({\n ...baseStyles,\n fontFamily: \"Inter\",\n fontWeight: 500,\n fontSize: \"14px\",\n lineHeight: \"1\",\n borderBottom: isDarkMode\n ? \"1px solid rgb(38 38 38)\" /* neutral-800 */\n : \"1px solid rgb(229 229 229)\" /* neutral-200 */,\n backgroundColor: isDarkMode\n ? \"rgb(10 10 10)\" /* black-900 */\n : \"rgb(255 255 255)\" /* white */,\n color: state.isDisabled\n ? isDarkMode\n ? \"rgb(115 115 115)\" /* neutral-500 */\n : \"rgb(163 163 163)\" /* neutral-400 */\n : isDarkMode\n ? \"rgb(229 229 229)\" /* neutral-200 */\n : \"inherit\",\n cursor: state.isDisabled ? \"not-allowed\" : \"pointer\",\n opacity: state.isDisabled ? 0.6 : 1,\n \"&:hover\": {\n backgroundColor: state.isDisabled\n ? isDarkMode\n ? \"rgb(38 38 38)\" /* neutral-800 */\n : \"rgb(255 255 255)\" /* white */\n : isDarkMode\n ? \"rgb(64 64 64)\" /* neutral-700 */\n : \"rgb(245 245 245)\" /* neutral-100 */,\n },\n }),\n singleValue: (baseStyles: any, state: any) => ({\n ...baseStyles,\n fontFamily: \"Inter\",\n fontWeight: 500,\n fontSize: \"14px\",\n lineHeight: \"1.25rem\",\n display: \"block\",\n color: state.isDisabled\n ? isDarkMode\n ? \"rgb(115 115 115)\" /* neutral-500 */\n : \"rgb(163 163 163)\" /* neutral-400 */\n : isDarkMode\n ? \"rgb(229 229 229)\" /* neutral-200 */\n : \"inherit\",\n }),\n placeholder: (baseStyles: any, state: any) => ({\n ...baseStyles,\n fontFamily: \"Inter\",\n fontSize: \"14px\",\n fontWeight: 500,\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n color: state.isDisabled\n ? isDarkMode\n ? \"rgb(82 82 82)\" /* neutral-600 */\n : \"rgb(163 163 163)\" /* neutral-400 */\n : isDarkMode\n ? \"rgb(115 115 115)\" /* neutral-500 */\n : \"rgb(115 115 115)\" /* neutral-500 */,\n }),\n multiValue: (baseStyles: any) => ({\n ...baseStyles,\n backgroundColor: \"rgb(230 241 252)\" /* blue-50 */,\n border: \"1px solid rgb(198 225 249)\" /* blue-200 */,\n borderRadius: \"6px\",\n font: \"Inter\",\n }),\n multiValueLabel: (baseStyles: any) => ({\n ...baseStyles,\n color: \"var(--color-primary-600)\" /* primary-600 */,\n }),\n multiValueRemove: (baseStyles: any) => ({\n ...baseStyles,\n color: \"var(--color-primary-600)\" /* primary-600 */,\n \":hover\": {\n backgroundColor: \"rgb(230 241 252)\" /* blue-50 */,\n },\n }),\n menu: (baseStyles: any) => ({\n ...baseStyles,\n backgroundColor: isDarkMode\n ? \"rgb(10 10 10)\" /* black-900 */\n : \"rgb(255 255 255)\" /* white */,\n border: isDarkMode\n ? \"1px solid rgb(64 64 64)\" /* neutral-700 */\n : \"1px solid rgb(229 229 229)\" /* neutral-200 */,\n }),\n };\n\n const IndicatorsContainer = () => {\n return (\n <div>\n <ChevronLeftRounded className=\"-rotate-90\" sx={{ fontSize: \"16px\" }} />\n </div>\n );\n };\n\n const SingleValue = ({ ..._props }: any) => {\n return (\n <div className=\"absolute top-0 left-0 h-full flex items-center dark:text-black-100\">\n {_props.data.label}\n </div>\n );\n };\n\n const hasSelectedValues = !!selectedValues?.length;\n const hasValue = !!value;\n const isFieldClearable = isClearable ? hasSelectedValues || hasValue : false;\n\n return (\n <div id={id} className={cn(\"flex flex-col font-inter\", className)}>\n {label && (\n <label\n id={id + \"Label\"}\n htmlFor=\"text\"\n className={`mb-1 text-xs font-medium ${\n isDarkMode ? \"text-black-300\" : \"text-neutral-600\"\n } inline-flex items-center gap-1 ${!originalCase ? \"capitalize\" : \"\"}`}\n >\n <div className=\"text-black-300 dark:text-black-300\">\n {label}\n {required && <Required />}\n </div>\n <Label labels={tags} />\n {tooltip && (\n <Tooltip placement=\"top\" title={tooltip}>\n <div className=\"cursor-pointer\">\n <HelpIcon />\n </div>\n </Tooltip>\n )}\n </label>\n )}\n\n <CreatableSelect\n {...props}\n id={\"cm\" + label}\n required={required}\n options={selectOptions}\n isClearable={isFieldClearable}\n isLoading={loading}\n isDisabled={disabled}\n styles={styleProps}\n isMulti={multiSelect}\n value={multiSelect ? selectedValues : value}\n onChange={handleChange}\n filterOption={filterOption}\n placeholder={placeholder}\n classNames={{\n menuList: () => \"nowheel\",\n // root: () => \"dark:text-neutral-100 react-select__control\",\n }}\n components={{\n IndicatorsContainer,\n SingleValue,\n }}\n />\n {errorMessage && (\n <Typography\n className=\"text-error-500 mt-1\"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {errorMessage}\n </Typography>\n )}\n </div>\n );\n};\n\nCreatableSelectField.displayName = \"CreatableSelectField\";\n","import { useEffect, type RefObject } from \"react\";\n\n/**\n * Props for the useOutsideClick hook\n */\nexport interface UseOutsideClickProps {\n /** Reference to the element to detect outside clicks for */\n ref: RefObject<HTMLElement>;\n /** Handler function called when clicking outside the referenced element */\n handler: () => void;\n /** Whether the hook is active */\n enabled?: boolean;\n}\n\n/**\n * Custom hook to detect clicks outside a referenced element\n *\n * @example\n * ```tsx\n * const menuRef = useRef<HTMLDivElement>(null);\n *\n * useOutsideClick({\n * ref: menuRef,\n * handler: () => setIsOpen(false),\n * enabled: isOpen\n * });\n * ```\n */\nexport const useOutsideClick = ({\n ref,\n handler,\n enabled = true,\n}: UseOutsideClickProps): void => {\n useEffect(() => {\n if (!enabled) return;\n\n const handleClickOutside = (event: MouseEvent | TouchEvent) => {\n // Check if the clicked element is outside the referenced element\n if (ref.current && !ref.current.contains(event.target as Node)) {\n handler();\n }\n };\n\n // Add event listeners for both mouse and touch events\n document.addEventListener(\"mousedown\", handleClickOutside);\n document.addEventListener(\"touchstart\", handleClickOutside);\n\n // Cleanup event listeners on unmount or when dependencies change\n return () => {\n document.removeEventListener(\"mousedown\", handleClickOutside);\n document.removeEventListener(\"touchstart\", handleClickOutside);\n };\n }, [ref, handler, enabled]);\n};\n\nexport default useOutsideClick;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport cn from \"classnames\";\nimport { useRef, useState } from \"react\";\nimport Select, {\n type MultiValueProps,\n type SingleValueProps,\n components,\n} from \"react-select\";\nimport type { StylesConfig, GroupBase } from \"react-select\";\n\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport { useOutsideClick } from \"../../../hooks/useOutsideClick\";\nimport { Required } from \"../../icons/Required\";\n\ninterface ColorShades {\n 50: string;\n 100: string;\n 200: string;\n 300: string;\n 400: string;\n 500: string;\n 600: string;\n 700: string;\n 800: string;\n 850: string;\n 900: string;\n 950: string;\n 975: string;\n }\n/**\n * Option type for CustomizableSelectField\n */\nexport interface CustomizableSelectOption {\n label: string;\n value: string;\n [key: string]: any;\n}\n\n/**\n * Option config for customizing option rendering\n */\nexport interface OptionConfig {\n /** Custom component to render for options */\n component?: React.ComponentType<any>;\n /** Props to pass to the custom component */\n componentProps?: Record<string, any>;\n /** Indicator to show when option is selected */\n selectIndecator?: React.ReactNode;\n}\n\n/**\n * Menu config for customizing menu rendering\n */\nexport interface MenuConfig {\n /** Additional CSS class for the menu */\n className?: string;\n /** Additional CSS class for each option */\n optionClassName?: string;\n}\n\n/**\n * Props for the CustomizableSelectField component\n */\nexport interface CustomizableSelectFieldProps {\n /** Unique identifier for the select */\n id: string;\n /** Label text to display above the select */\n label?: string;\n /** Array of select options */\n options: CustomizableSelectOption[];\n /** Placeholder text for the select */\n placeholder: string;\n /** Callback function called when selection changes */\n onChange: (_value: any) => void;\n /** Whether the select is in loading state */\n isLoading?: boolean;\n /** Whether to hide the label */\n hideLabel?: boolean;\n /** Error message to display */\n errorMessage?: string;\n /** Whether the field is required */\n required?: boolean;\n /** Configuration for option rendering */\n optionConfig?: OptionConfig;\n /** Configuration for menu rendering */\n menuConfig?: MenuConfig;\n /** Parent container selector (deprecated, not used) */\n parentContainer?: string;\n /** Current value of the select */\n value?: any;\n /** Whether multiple selections are allowed */\n isMulti?: boolean;\n /** Whether the select is clearable */\n isClearable?: boolean;\n /** Whether the select is disabled */\n disabled?: boolean;\n /** Additional CSS classes */\n className?: string;\n /** Whether dark mode is enabled */\n isDark?: boolean;\n /** Primary color shades for styling */\n primaryColorShades?: ColorShades;\n /** Additional props */\n [key: string]: any;\n}\n\n/**\n * Default primary color shades (blue-based)\n */\nconst DEFAULT_PRIMARY_SHADES: ColorShades = {\n 50: \"#eff6ff\",\n 100: \"#dbeafe\",\n 200: \"#bfdbfe\",\n 300: \"#93c5fd\",\n 400: \"#60a5fa\",\n 500: \"#3b82f6\",\n 600: \"#2563eb\",\n 700: \"#1d4ed8\",\n 800: \"#1e40af\",\n 850: \"#1e3a8a\",\n 900: \"#1e3a8a\",\n 950: \"#172554\",\n 975: \"#121f47\",\n};\n\n/**\n * A highly customizable select field component with custom option and menu rendering support.\n * Features dark mode support, multi-select capability, and comprehensive prop support.\n * Built on top of react-select for advanced functionality.\n *\n * @example\n * ```tsx\n * <CustomizableSelectField\n * id=\"country\"\n * label=\"Country\"\n * options={[\n * { label: 'United States', value: 'us' },\n * { label: 'Canada', value: 'ca' }\n * ]}\n * placeholder=\"Select a country\"\n * onChange={(value) => console.log(value)}\n * />\n *\n * // With custom option rendering\n * <CustomizableSelectField\n * id=\"user\"\n * label=\"User\"\n * options={users}\n * placeholder=\"Select a user\"\n * onChange={(value) => console.log(value)}\n * optionConfig={{\n * component: UserOption,\n * componentProps: { showAvatar: true },\n * selectIndecator: <CheckIcon />\n * }}\n * />\n * ```\n */\nexport const CustomizableSelectField = ({\n id,\n label,\n options,\n placeholder,\n onChange,\n isLoading = false,\n hideLabel = false,\n errorMessage,\n required = false,\n optionConfig,\n menuConfig,\n value,\n isMulti = false,\n isClearable = true,\n disabled = false,\n className,\n isDark = false,\n primaryColorShades = DEFAULT_PRIMARY_SHADES,\n}: CustomizableSelectFieldProps) => {\n const menuRef = useRef<HTMLDivElement>(null);\n const [selectedOption, setSelectedOption] = useState<any>(null);\n const [searchKey, setSearchKey] = useState<string>(\"\");\n\n useOutsideClick({\n ref: menuRef,\n handler: () => {\n setSelectedOption(null);\n },\n });\n\n const styleProps: StylesConfig<\n CustomizableSelectOption,\n boolean,\n GroupBase<CustomizableSelectOption>\n > = {\n control: (baseStyles, state) => ({\n ...baseStyles,\n borderColor:\n errorMessage && required\n ? \"#F04438\"\n : state.isFocused\n ? isDark\n ? \"#1e1e1e\"\n : primaryColorShades[600]\n : isDark\n ? \"#1e1e1e\"\n : \"#e2e8f0\",\n backgroundColor: state.isDisabled\n ? isDark\n ? \"#1a1a1a\"\n : \"#f5f5f5\"\n : isDark\n ? \"#262626\"\n : \"#FFFFFF\",\n color: state.isDisabled\n ? isDark\n ? \"#666666\"\n : \"#a0a0a0\"\n : isDark\n ? \"#d4d4d4\"\n : \"#0F172A\",\n borderRadius: \"6px\",\n minHeight: \"32px\",\n fontSize: \"14px\",\n padding: \"0px 10px\",\n cursor: state.isDisabled ? \"not-allowed\" : \"default\",\n opacity: state.isDisabled ? 1 : 1,\n boxShadow: state.isFocused\n ? isDark\n ? `0 0 0 2px ${primaryColorShades[400]}`\n : `0 0 0 2px ${primaryColorShades[500]}`\n : \"none\",\n }),\n valueContainer: (baseStyles) => ({\n ...baseStyles,\n fontSize: \"14px\",\n maxHeight: \"60px\",\n overflowY: \"auto\",\n padding: \"0px\",\n margin: \"0px\",\n color: isDark ? \"#d4d4d4\" : \"inherit\",\n \"::-webkit-scrollbar\": { display: \"none\" },\n }),\n input: (baseStyles) => ({\n ...baseStyles,\n margin: \"0\",\n }),\n indicatorSeparator: () => ({\n display: \"none\",\n }),\n option: (baseStyles) => ({\n ...baseStyles,\n fontWeight: 500,\n fontSize: \"14px\",\n lineHeight: \"1\",\n borderBottom: isDark ? \"1px solid #1e1e1e\" : \"1px solid #eee\",\n backgroundColor: isDark ? \"#000000\" : \"#FFFFFF\",\n color: isDark ? \"#d4d4d4\" : \"#0F172A\",\n display: \"flex\",\n alignItems: \"center\",\n zIndex: 200,\n \":hover\": {\n backgroundColor: isDark ? \"#171717\" : primaryColorShades[50],\n },\n \".icon\": {\n height: \"14px\",\n width: \"14px\",\n },\n }),\n singleValue: (baseStyles, state) => ({\n ...baseStyles,\n fontWeight: 500,\n fontSize: \"14px\",\n lineHeight: \"1.25rem\",\n color: state.isDisabled\n ? isDark\n ? \"#d4d4d4\"\n : \"#0F172A\"\n : isDark\n ? \"#d4d4d4\"\n : \"#0F172A\",\n display: \"flex\",\n alignItems: \"center\",\n \".icon\": {\n height: \"14px\",\n width: \"14px\",\n },\n }),\n placeholder: (baseStyles, state) => ({\n ...baseStyles,\n fontSize: \"14px\",\n fontWeight: 500,\n whiteSpace: \"nowrap\",\n textOverflow: \"ellipsis\",\n overflow: \"hidden\",\n color: state.isDisabled\n ? isDark\n ? \"#595959\"\n : \"#9CA3AF\"\n : isDark\n ? \"#595959\"\n : \"#9CA3AF\",\n }),\n multiValue: (baseStyles) => ({\n ...baseStyles,\n backgroundColor: isDark ? \"#000000\" : primaryColorShades[50],\n borderRadius: \"6px\",\n fontFamily: \"Inter\",\n fontSize: \"12px\",\n height: \"20px\",\n alignItems: \"center\",\n }),\n indicatorsContainer: (baseStyles) => ({\n ...baseStyles,\n padding: \"0\",\n height: \"30px\",\n }),\n multiValueLabel: (baseStyles) => ({\n ...baseStyles,\n color: isDark ? \"#d4d4d4\" : primaryColorShades[600],\n fontSize: \"12px\",\n }),\n multiValueRemove: (baseStyles) => ({\n ...baseStyles,\n color: isDark ? \"#d4d4d4\" : primaryColorShades[600],\n height: \"12px\",\n fontSize: \"8px\",\n \":hover\": {\n backgroundColor: isDark ? \"#171717\" : primaryColorShades[50],\n },\n svg: {\n height: \"12px\",\n width: \"12px\",\n },\n }),\n };\n\n const MenuList = (menuProps: any) => {\n const filteredOptions = options.filter((option) =>\n option?.label?.toLowerCase()?.includes(searchKey?.toLowerCase())\n );\n\n return (\n <components.MenuList\n {...menuProps}\n className={cn(\n \"!z-50 rounded !visible overflow-x-scroll\",\n isDark ? \"bg-black-800\" : \"bg-white\",\n isDark ? \"text-neutral-300\" : \"text-slate-900\",\n menuConfig?.className\n )}\n ref={menuRef}\n >\n {filteredOptions?.length ? (\n filteredOptions.map((option, index) => (\n <div\n key={index}\n className={cn(\n \"item z-[9999] flex items-center justify-between px-4 py-1.5 no-wheel\",\n disabled ? \"cursor-not-allowed opacity-50\" : \"cursor-pointer\",\n isDark ? \"text-neutral-300\" : \"text-slate-900\",\n !disabled && isSelected(option)\n ? isDark\n ? \"bg-black-700\"\n : \"bg-primary-50\"\n : !disabled\n ? isDark\n ? \"hover:bg-black-700\"\n : \"hover:bg-primary-50\"\n : \"\",\n menuConfig?.optionClassName\n ? \"\"\n : isDark\n ? \"border-b border-black-700\"\n : \"border-b border-[#eee]\"\n )}\n onClick={(e) => {\n if (!disabled) {\n e.stopPropagation();\n menuProps.selectOption(option);\n }\n }}\n >\n {optionConfig?.component ? (\n <optionConfig.component\n {...optionConfig.componentProps}\n {...option}\n />\n ) : (\n <div>{option.label}</div>\n )}\n\n <div className=\"flex items-center gap-1\">\n {isSelected(option) && optionConfig?.selectIndecator\n ? optionConfig?.selectIndecator\n : null}\n </div>\n </div>\n ))\n ) : (\n <div\n className={cn(\n \"opacity-50 flex justify-center items-center p-1 font-medium\",\n isDark ? \"text-neutral-400\" : \"text-gray-700\"\n )}\n >\n No options\n </div>\n )}\n </components.MenuList>\n );\n };\n\n const isSelected = (option: any) => {\n if (isMulti) {\n return selectedOption?.some(\n (selected: any) => selected.value === option.value\n );\n }\n return option.value === selectedOption?.value;\n };\n\n const SingleValueComponent = (props: SingleValueProps<any>) => {\n const { children, innerProps, isDisabled, getValue } = props;\n const selectedOptions = getValue();\n\n return (\n <components.SingleValue\n {...props}\n innerProps={innerProps}\n isDisabled={isDisabled}\n >\n {selectedOptions.length > 0 ? (\n selectedOptions.map((option, index) => (\n <span key={index}>\n {optionConfig?.component ? (\n <optionConfig.component\n {...optionConfig.componentProps}\n {...option}\n />\n ) : (\n <div>{option.label}</div>\n )}\n </span>\n ))\n ) : (\n <>{children}</>\n )}\n </components.SingleValue>\n );\n };\n\n const MultiValueComponent = (props: MultiValueProps<any>) => {\n const { innerProps, isDisabled, data } = props;\n\n return (\n <components.MultiValue\n {...props}\n innerProps={innerProps}\n isDisabled={isDisabled}\n >\n {optionConfig?.component ? (\n <optionConfig.component {...optionConfig.componentProps} {...data} />\n ) : (\n <div>{data.label}</div>\n )}\n </components.MultiValue>\n );\n };\n\n const customFilterOption = (_option: any, inputValue: string) => {\n setSearchKey(inputValue);\n return true;\n };\n\n return (\n <div\n className={cn(\n \"flex flex-col\",\n isDark ? \"text-black-300\" : \"text-slate-900\",\n isLoading ? \"opacity-50\" : \"opacity-100\",\n disabled ? \"cursor-not-allowed\" : \"\"\n )}\n id={id}\n >\n {hideLabel || !label ? null : (\n <div className=\"w-full inline-flex items-center text-xs mb-1\">\n <Typography\n size=\"extra-small\"\n variant=\"medium\"\n className={cn(\n \"font-medium text-left\",\n isDark ? \"text-black-300\" : \"text-neutral-400\"\n )}\n appearance=\"custom\"\n >\n {label}\n </Typography>\n {required &&\n <Required />\n }\n </div>\n )}\n\n <Select\n required\n options={options}\n placeholder={placeholder}\n value={value}\n onChange={(option) => {\n setSelectedOption(option);\n onChange(option);\n }}\n styles={styleProps}\n isMulti={isMulti}\n className={cn(isDark && \"bg-black-800 border-black-700\", className)}\n components={{\n MenuList,\n SingleValue: SingleValueComponent,\n MultiValue: MultiValueComponent,\n }}\n filterOption={customFilterOption}\n closeMenuOnSelect={true}\n isClearable={isClearable}\n isDisabled={disabled}\n />\n\n {errorMessage && (\n <Typography\n className={cn(\"mt-1\", isDark ? \"text-red-400\" : \"text-red-500\")}\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {errorMessage}\n </Typography>\n )}\n </div>\n );\n};\n\nCustomizableSelectField.displayName = \"CustomizableSelectField\";\n\n","/**\n * Available currencies for the CurrencyInputField component\n */\nexport const CURRENCIES: { value: string; label: string }[] = [\n { value: \"AED\", label: \"UAE Dirham\" },\n { value: \"AFN\", label: \"Afghan Afghani\" },\n { value: \"ALL\", label: \"Albanian Lek\" },\n { value: \"AMD\", label: \"Armenian Dram\" },\n { value: \"AOA\", label: \"Angolan Kwanza\" },\n { value: \"ARS\", label: \"Argentine Peso\" },\n { value: \"AUD\", label: \"Australian Dollar\" },\n { value: \"AWG\", label: \"Aruban Florin\" },\n { value: \"AZN\", label: \"Azerbaijani Manat\" },\n { value: \"BBD\", label: \"Barbadian Dollar\" },\n { value: \"BDT\", label: \"Bangladeshi Taka\" },\n { value: \"BGN\", label: \"Bulgarian Lev\" },\n { value: \"BHD\", label: \"Bahraini Dinar\" },\n { value: \"BIF\", label: \"Burundian Franc\" },\n { value: \"BMD\", label: \"Bermudian Dollar\" },\n { value: \"BND\", label: \"Brunei Dollar\" },\n { value: \"BRL\", label: \"Brazilian Real\" },\n { value: \"BSD\", label: \"Bahamian Dollar\" },\n { value: \"BTN\", label: \"Bhutanese Ngultrum\" },\n { value: \"BWP\", label: \"Botswanan Pula\" },\n { value: \"BYN\", label: \"Belarusian Ruble\" },\n { value: \"BZD\", label: \"Belize Dollar\" },\n { value: \"CAD\", label: \"Canadian Dollar\" },\n { value: \"CDF\", label: \"Congolese Franc\" },\n { value: \"CHE\", label: \"WIR Euro\" },\n { value: \"CHF\", label: \"Swiss Franc\" },\n { value: \"CHW\", label: \"WIR Franc\" },\n { value: \"CLP\", label: \"Chilean Peso\" },\n { value: \"CNY\", label: \"Chinese Yuan\" },\n { value: \"COP\", label: \"Colombian Peso\" },\n { value: \"CRC\", label: \"Costa Rican Colón\" },\n { value: \"CUC\", label: \"Cuban Convertible Peso\" },\n { value: \"CUP\", label: \"Cuban Peso\" },\n { value: \"CVE\", label: \"Cape Verdean Escudo\" },\n { value: \"CZK\", label: \"Czech Koruna\" },\n { value: \"DJF\", label: \"Djiboutian Franc\" },\n { value: \"DKK\", label: \"Danish Krone\" },\n { value: \"DOP\", label: \"Dominican Peso\" },\n { value: \"DZD\", label: \"Algerian Dinar\" },\n { value: \"EGP\", label: \"Egyptian Pound\" },\n { value: \"ERN\", label: \"Eritrean Nakfa\" },\n { value: \"ESP\", label: \"Spanish Peseta\" },\n { value: \"ETB\", label: \"Ethiopian Birr\" },\n { value: \"EUR\", label: \"Euro\" },\n { value: \"FJD\", label: \"Fijian Dollar\" },\n { value: \"FKP\", label: \"Falkland Islands Pound\" },\n { value: \"GBP\", label: \"British Pound\" },\n { value: \"GEL\", label: \"Georgian Lari\" },\n { value: \"GHS\", label: \"Ghanaian Cedi\" },\n { value: \"GIP\", label: \"Gibraltar Pound\" },\n { value: \"GMD\", label: \"Gambian Dalasi\" },\n { value: \"GNF\", label: \"Guinean Franc\" },\n { value: \"GTQ\", label: \"Guatemalan Quetzal\" },\n { value: \"GYD\", label: \"Guyanese Dollar\" },\n { value: \"HKD\", label: \"Hong Kong Dollar\" },\n { value: \"HNL\", label: \"Honduran Lempira\" },\n { value: \"HRK\", label: \"Croatian Kuna\" },\n { value: \"HTG\", label: \"Haitian Gourde\" },\n { value: \"HUF\", label: \"Hungarian Forint\" },\n { value: \"IDR\", label: \"Indonesian Rupiah\" },\n { value: \"ILS\", label: \"Israeli New Shekel\" },\n { value: \"INR\", label: \"Indian Rupee\" },\n { value: \"IQD\", label: \"Iraqi Dinar\" },\n { value: \"IRR\", label: \"Iranian Rial\" },\n { value: \"ISK\", label: \"Icelandic Króna\" },\n { value: \"JMD\", label: \"Jamaican Dollar\" },\n { value: \"JOD\", label: \"Jordanian Dinar\" },\n { value: \"JPY\", label: \"Japanese Yen\" },\n { value: \"KES\", label: \"Kenyan Shilling\" },\n { value: \"KGS\", label: \"Kyrgyzstani Som\" },\n { value: \"KHR\", label: \"Cambodian Riel\" },\n { value: \"KMF\", label: \"Comorian Franc\" },\n { value: \"KPW\", label: \"North Korean Won\" },\n { value: \"KRW\", label: \"South Korean Won\" },\n { value: \"KWD\", label: \"Kuwaiti Dinar\" },\n { value: \"KYD\", label: \"Caymanian Dollar\" },\n { value: \"KZT\", label: \"Kazakhstani Tenge\" },\n { value: \"LAK\", label: \"Lao Kip\" },\n { value: \"LBP\", label: \"Lebanese Pound\" },\n { value: \"LKR\", label: \"Sri Lankan Rupee\" },\n { value: \"LRD\", label: \"Liberian Dollar\" },\n { value: \"LSL\", label: \"Lesotho Loti\" },\n { value: \"LTL\", label: \"Lithuanian Litas\" },\n { value: \"LVL\", label: \"Latvian Lats\" },\n { value: \"LYD\", label: \"Libyan Dinar\" },\n { value: \"MAD\", label: \"Moroccan Dirham\" },\n { value: \"MDL\", label: \"Moldovan Leu\" },\n { value: \"MGA\", label: \"Malagasy Ariary\" },\n { value: \"MKD\", label: \"Macedonian Denar\" },\n { value: \"MMK\", label: \"Myanmar Kyat\" },\n { value: \"MNT\", label: \"Mongolian Tögrög\" },\n { value: \"MOP\", label: \"Macanese Pataca\" },\n { value: \"MRU\", label: \"Mauritanian Ouguiya\" },\n { value: \"MUR\", label: \"Mauritian Rupee\" },\n { value: \"MVR\", label: \"Maldivian Rufiyaa\" },\n { value: \"MWK\", label: \"Malawian Kwacha\" },\n { value: \"MXN\", label: \"Mexican Peso\" },\n { value: \"MYR\", label: \"Malaysian Ringgit\" },\n { value: \"MZN\", label: \"Mozambican Metical\" },\n { value: \"NAD\", label: \"Namibian Dollar\" },\n { value: \"NGN\", label: \"Nigerian Naira\" },\n { value: \"NIO\", label: \"Nicaraguan Córdoba\" },\n { value: \"NOK\", label: \"Norwegian Krone\" },\n { value: \"NPR\", label: \"Nepalese Rupee\" },\n { value: \"NZD\", label: \"New Zealand Dollar\" },\n { value: \"OMR\", label: \"Omani Rial\" },\n { value: \"PAB\", label: \"Panamanian Balboa\" },\n { value: \"PEN\", label: \"Peruvian Sol\" },\n { value: \"PHP\", label: \"Philippine Peso\" },\n { value: \"PKR\", label: \"Pakistani Rupee\" },\n { value: \"PLN\", label: \"Polish Zloty\" },\n { value: \"PRB\", label: \"Transnistrian Ruble\" },\n { value: \"PYG\", label: \"Paraguayan Guarani\" },\n { value: \"QAR\", label: \"Qatari Riyal\" },\n { value: \"RON\", label: \"Romanian Leu\" },\n { value: \"RSD\", label: \"Serbian Dinar\" },\n { value: \"RUB\", label: \"Russian Ruble\" },\n { value: \"RWF\", label: \"Rwandan Franc\" },\n { value: \"SAR\", label: \"Saudi Riyal\" },\n { value: \"SCR\", label: \"Seychellois Rupee\" },\n { value: \"SDG\", label: \"Sudanese Pound\" },\n { value: \"SEK\", label: \"Swedish Krona\" },\n { value: \"SGD\", label: \"Singapore Dollar\" },\n { value: \"SHP\", label: \"Saint Helena Pound\" },\n { value: \"SLL\", label: \"Sierra Leonean Leone\" },\n { value: \"SOS\", label: \"Somali Shilling\" },\n { value: \"SRD\", label: \"Surinamese Dollar\" },\n { value: \"SSP\", label: \"South Sudanese Pound\" },\n { value: \"SVC\", label: \"Salvadoran Colón\" },\n { value: \"SYP\", label: \"Syrian Pound\" },\n { value: \"SZL\", label: \"Swazi Lilangeni\" },\n { value: \"THB\", label: \"Thai Baht\" },\n { value: \"TJS\", label: \"Tajikistani Somoni\" },\n { value: \"TMT\", label: \"Turkmenistani Manat\" },\n { value: \"TND\", label: \"Tunisian Dinar\" },\n { value: \"TOP\", label: \"Tongan Paʻanga\" },\n { value: \"TRY\", label: \"Turkish Lira\" },\n { value: \"TWD\", label: \"New Taiwan Dollar\" },\n { value: \"TZS\", label: \"Tanzanian Shilling\" },\n { value: \"UAH\", label: \"Ukrainian Hryvnia\" },\n { value: \"UGX\", label: \"Ugandan Shilling\" },\n { value: \"USD\", label: \"United States Dollar\" },\n { value: \"UYU\", label: \"Uruguayan Peso\" },\n { value: \"UZS\", label: \"Uzbekistani Som\" },\n { value: \"VEF\", label: \"Venezuelan Bolívar\" },\n { value: \"VND\", label: \"Vietnamese Dong\" },\n { value: \"VUV\", label: \"Vanuatu Vatu\" },\n { value: \"WST\", label: \"Samoan Tala\" },\n { value: \"YER\", label: \"Yemeni Rial\" },\n { value: \"ZAR\", label: \"South African Rand\" },\n { value: \"ZMW\", label: \"Zambian Kwacha\" },\n { value: \"ZWL\", label: \"Zimbabwean Dollar\" },\n];\n\n/**\n * Currency symbols mapping for display purposes\n */\nexport const CURRENCY_SYMBOLS: { [key: string]: string } = {\n AED: \"د.إ\",\n AFN: \"؋\",\n ALL: \"Lek\",\n AMD: \"դր\",\n ANG: \"ƒ\",\n AOA: \"Kz\",\n ARS: \"$\",\n AUD: \"$\",\n AWG: \"ƒ\",\n AZN: \"₼\",\n BAM: \"KM\",\n BBD: \"$\",\n BDT: \"৳\",\n BGN: \"лв\",\n BHD: \".د.ب\",\n BIF: \"Fr\",\n BMD: \"$\",\n BND: \"$\",\n BOB: \"Bs.\",\n BOV: \"Bs.\",\n BRL: \"R$\",\n BSD: \"$\",\n BTN: \"Nu.\",\n BWP: \"P\",\n BYN: \"Br\",\n BZD: \"$\",\n CAD: \"$\",\n CDF: \"Fr\",\n CHE: \"Fr\",\n CHF: \"Fr\",\n CHW: \"Fr\",\n CLP: \"$\",\n CNY: \"¥\",\n COP: \"$\",\n CRC: \"₡\",\n CUC: \"$\",\n CUP: \"₱\",\n CVE: \"$\",\n CZK: \"Kč\",\n DJF: \"Fr\",\n DKK: \"kr\",\n DOP: \"$\",\n DZD: \"د.ج\",\n EGP: \"£\",\n ERN: \"Nkf\",\n ESP: \"₧\",\n ETB: \"Br\",\n EUR: \"€\",\n FJD: \"$\",\n FKP: \"£\",\n GBP: \"£\",\n GEL: \"₾\",\n GHS: \"₵\",\n GIP: \"£\",\n GMD: \"D\",\n GNF: \"Fr\",\n GTQ: \"Q\",\n GYD: \"$\",\n HKD: \"$\",\n HNL: \"L\",\n HRK: \"kn\",\n HTG: \"G\",\n HUF: \"Ft\",\n IDR: \"Rp\",\n ILS: \"₪\",\n INR: \"₹\",\n IQD: \"ع.د\",\n IRR: \"ریال\",\n ISK: \"kr\",\n JMD: \"$\",\n JOD: \"د.ا\",\n JPY: \"¥\",\n KES: \"Sh\",\n KGS: \"лв\",\n KHR: \"៛\",\n KMF: \"Fr\",\n KPW: \"₩\",\n KRW: \"₩\",\n KWD: \"د.ك\",\n KYD: \"$\",\n KZT: \"₸\",\n LAK: \"₭\",\n LBP: \"ل.ل\",\n LKR: \"₨\",\n LRD: \"$\",\n LSL: \"M\",\n LTL: \"Lt\",\n LVL: \"Ls\",\n LYD: \"د.ل\",\n MAD: \"د.م.\",\n MDL: \"lei\",\n MGA: \"Ar\",\n MKD: \"ден\",\n MMK: \"K\",\n MNT: \"₮\",\n MOP: \"P\",\n MRU: \"UM\",\n MUR: \"₨\",\n MVR: \"Rf\",\n MWK: \"MK\",\n MXN: \"$\",\n MYR: \"RM\",\n MZN: \"MT\",\n NAD: \"$\",\n NGN: \"₦\",\n NIO: \"C$\",\n NOK: \"kr\",\n NPR: \"₨\",\n NZD: \"$\",\n OMR: \"ر.ع.\",\n PAB: \"B/.\",\n PEN: \"S/\",\n PGK: \"K\",\n PHP: \"₱\",\n PKR: \"₨\",\n PLN: \"zł\",\n PRB: \"₽\",\n PYG: \"₲\",\n QAR: \"ر.ق\",\n RON: \"lei\",\n RSD: \"дин.\",\n RUB: \"₽\",\n RWF: \"Fr\",\n SAR: \"ر.س\",\n SBD: \"$\",\n SCR: \"₨\",\n SDG: \"ج.س.\",\n SEK: \"kr\",\n SGD: \"$\",\n SHP: \"£\",\n SLL: \"Le\",\n SOS: \"Sh\",\n SRD: \"$\",\n SSP: \"£\",\n STN: \"Db\",\n SVC: \"$\",\n SYP: \"ل.س\",\n SZL: \"L\",\n THB: \"฿\",\n TJS: \"SM\",\n TMT: \"m\",\n TND: \"د.ت\",\n TOP: \"T$\",\n TRY: \"₺\",\n TTD: \"$\",\n TWD: \"NT$\",\n TZS: \"Sh\",\n UAH: \"₴\",\n UGX: \"Sh\",\n USD: \"$\",\n UYU: \"$\",\n UZS: \"сўм\",\n VEF: \"Bs.F\",\n VND: \"₫\",\n VUV: \"Vt\",\n WST: \"T\",\n XAF: \"Fr\",\n XAG: \"XAG\",\n XAU: \"XAU\",\n XBA: \"XBA\",\n XBB: \"XBB\",\n XBC: \"XBC\",\n XBD: \"XBD\",\n XCD: \"$\",\n XDR: \"XDR\",\n XOF: \"Fr\",\n XPD: \"XPD\",\n XPF: \"₣\",\n XPT: \"XPT\",\n XSU: \"XSU\",\n XTS: \"XTS\",\n XUA: \"XUA\",\n YER: \"ر.ي\",\n ZAR: \"R\",\n ZMW: \"K\",\n ZWL: \"$\",\n};\n","import cn from \"classnames\";\nimport { FC, SVGAttributes } from \"react\";\n\ntype TProps = SVGAttributes<SVGElement> & {\n classValue?: cn.Value;\n fill?: string;\n size?: number;\n};\n\nexport const CloseRounded: FC<TProps> = ({\n classValue,\n size = 24,\n fill = \"currentColor\",\n ...props\n}) => (\n <svg\n className={cn(classValue)}\n width={size}\n height={size}\n viewBox=\"0 0 12 12\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n {...props}\n >\n <rect width=\"12\" height=\"12\" rx=\"6\" fill={fill} />\n <g clipPath=\"url(#clip0_8212_362816)\">\n <path\n d=\"M8.10023 3.90357C7.97023 3.77357 7.76023 3.77357 7.63023 3.90357L6.00023 5.53023L4.37023 3.90023C4.24023 3.77023 4.03023 3.77023 3.90023 3.90023C3.77023 4.03023 3.77023 4.24023 3.90023 4.37023L5.53023 6.00023L3.90023 7.63023C3.77023 7.76023 3.77023 7.97023 3.90023 8.10023C4.03023 8.23023 4.24023 8.23023 4.37023 8.10023L6.00023 6.47023L7.63023 8.10023C7.76023 8.23023 7.97023 8.23023 8.10023 8.10023C8.23023 7.97023 8.23023 7.76023 8.10023 7.63023L6.47023 6.00023L8.10023 4.37023C8.2269 4.24357 8.2269 4.03023 8.10023 3.90357Z\"\n fill=\"#98A2B3\"\n />\n </g>\n <defs>\n <clipPath id=\"clip0_8212_362816\">\n <rect width=\"8\" height=\"8\" fill=\"white\" transform=\"translate(2 2)\" />\n </clipPath>\n </defs>\n </svg>\n);\n\nCloseRounded.displayName = \"CloseRounded\";\n","import { type FC, type SVGAttributes } from 'react';\n\ntype TSVGProps = SVGAttributes<SVGElement> & {\n width?: string | number;\n height?: string | number;\n fill?: string;\n className?: string;\n};\nexport const SearchIcon: FC<TSVGProps> = ({\n width = 15,\n height = 15,\n fill = '#98A2B3',\n className,\n}) => (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width={width.toString()}\n height={height.toString()}\n viewBox='0 0 20 20'\n fill='none'\n className={className}\n >\n <path\n d='M17.5 17.5L12.5001 12.5M14.1667 8.33333C14.1667 11.555 11.555 14.1667 8.33333 14.1667C5.11167 14.1667 2.5 11.555 2.5 8.33333C2.5 5.11167 5.11167 2.5 8.33333 2.5C11.555 2.5 14.1667 5.11167 14.1667 8.33333Z'\n stroke={fill}\n strokeWidth='2'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n </svg>\n);\n","import {type FC, type HTMLAttributes, useRef, useState } from 'react';\nimport { DebounceInput } from 'react-debounce-input';\nimport { useTranslation } from 'react-i18next';\nimport cn from 'classnames';\nimport { Typography } from '../../data-display/typography/Typography';\nimport { CloseRounded } from '../../icons/CloseRounded';\nimport { SearchIcon } from '../../icons/SearchIcon';\n\nexport type TSearchConfig = {\n searchCount?: number;\n searchPointer?: number;\n setSearchPointer?: React.Dispatch<React.SetStateAction<number | undefined>>;\n};\n\nexport type TSearchBarProps = Omit<HTMLAttributes<HTMLInputElement>, 'onChange'> & {\n value?: string;\n onChange?(value: string): void;\n debounceTimeout?: number;\n classValues?: string;\n handleKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;\n isClearable?: boolean;\n id: string;\n onFocus?: (e: React.FocusEvent<HTMLInputElement>) => void;\n onBlur?: (e: React.FocusEvent<HTMLInputElement>) => void;\n isAnimated?: boolean;\n onFocusText?: string;\n autoComplete?: string;\n searchRef?: React.RefObject<HTMLInputElement>;\n placeholder?: string;\n autoFocus?: boolean;\n hasNavigation?: boolean;\n searchConfig?: TSearchConfig;\n hideSearchIcon?: boolean;\n allowAStarSearch?: boolean;\n};\n\nexport const SearchBar: FC<TSearchBarProps> = (props) => {\n const {\n value,\n placeholder,\n onChange,\n id,\n debounceTimeout = 0,\n classValues,\n handleKeyDown,\n isClearable,\n onFocusText,\n autoComplete = 'false',\n searchRef,\n hasNavigation = false,\n autoFocus = false,\n searchConfig,\n hideSearchIcon,\n allowAStarSearch = false,\n ...inputProps\n } = props;\n\n const { t } = useTranslation();\n const [isFocused, setIsFocused] = useState(false);\n const [focusedPlaceHolder, setFocusedPlaceHolder] = useState('search');\n const inputRef = useRef<HTMLInputElement>(null);\n const { searchCount, searchPointer, setSearchPointer } = searchConfig || {};\n\n const handleFocus = () => {\n setIsFocused(true);\n setFocusedPlaceHolder(onFocusText || placeholder || t('Search'));\n const ref = searchRef || inputRef;\n if (ref.current) {\n ref.current.focus();\n }\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n setFocusedPlaceHolder('');\n };\n\n return (\n <label\n className={cn(\n `relative flex items-center justify-start px-4 py-[9px] w-full dark:bg-neutral-900 bg-white dark:bg-black-700 rounded-lg text-neutral-400 h-8`,\n classValues,\n )}\n >\n {!hideSearchIcon && (\n <div className='flex items-center h-6 w-6 pointer-events-none'>\n <SearchIcon width=\"16\" height=\"16\" />\n </div>\n )}\n\n <DebounceInput\n {...inputProps}\n spellCheck='false'\n debounceTimeout={debounceTimeout}\n id={id}\n inputRef={searchRef || inputRef}\n type='text'\n className={cn(\n `absolute inset-0 dark:text-[#98A2B3] text-neutral-900 ${hideSearchIcon ? 'pl-2' : 'pl-10'} pl-10 pr-7 w-full text-sm dark:text-white bg-transparent rounded-lg focus:outline-none focus:!ring-primary-500 focus:!border-primary-500`,\n 'border border-solid',\n 'dark:border-neutral-800 border-neutral-200',\n 'dark:caret-white',\n classValues,\n )}\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n }\n handleKeyDown && handleKeyDown(e);\n }}\n value={value || ''}\n placeholder={isFocused ? focusedPlaceHolder : allowAStarSearch ? '' : `${t('Search')}`}\n onChange={(e) => onChange?.(e.target.value)}\n autoComplete={autoComplete}\n onFocus={(e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true);\n handleFocus();\n if (props.onFocus) props.onFocus(e);\n }}\n onBlur={(e) => {\n setIsFocused(false);\n handleBlur();\n if (props.onBlur) props.onBlur(e);\n }}\n autoFocus={autoFocus}\n />\n\n {hasNavigation && value && (\n <div className={cn('absolute mr-2 focus:outline-none flex gap-1', isClearable ? 'right-6' : 'right-0')}>\n {Boolean(searchCount) && (searchCount || 0) > 0 && (\n <span className='text-xs border-r pr-2 border-gray-200'>\n {(searchPointer || 0) + 1}/{searchCount}\n </span>\n )}\n <div className='flex gap-1 items-center'>\n <button\n id={`btn-search-bar-set-search-pointer-forward`}\n onClick={() => {\n if (setSearchPointer) setSearchPointer((state) => (state || 0) - 1);\n }}\n disabled={searchPointer === 0}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M15 18l-6-6 6-6\" stroke=\"#98A2B3\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n </button>\n <button\n id={`btn-search-bar-set-search-pointer-backward`}\n onClick={() => {\n if (setSearchPointer) setSearchPointer((state) => (state || 0) + 1);\n }}\n disabled={searchPointer === (searchCount || 0) - 1}\n >\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path d=\"M9 18l6-6-6-6\" stroke=\"#98A2B3\" strokeWidth=\"2\" strokeLinecap=\"round\" strokeLinejoin=\"round\"/>\n </svg>\n </button>\n </div>\n </div>\n )}\n\n {allowAStarSearch && !(isClearable && value) && !isFocused && !value ? (\n <div className='absolute flex ml-6 items-center justify-center focus:outline-none gap-1 flex-wrap-none'>\n <Typography className='text-[#98A2B3] dark:text-black-400 font-inter text-sm font-medium leading-5'>{t('Search')} (use</Typography>\n\n <button className=' bg-[#EAECF0] dark:bg-black-800 rounded-sm text-sm w-3 h-5'>\n <div className='text-[#475467] dark:text-black-300 dark:bg-black-600'>*</div>\n </button>\n <Typography className='text-[#98A2B3] dark:text-black-400 font-inter text-sm font-medium leading-5'>as a wildcard)</Typography>\n </div>\n ) : (\n isClearable &&\n value && (\n <button id={`btn-search-bar-close`} className='absolute right-0 mr-2 focus:outline-none' onClick={() => onChange?.('')}>\n <CloseRounded classValue='text-neutral-200 dark:text-black-500' size={16} />\n </button>\n )\n )}\n </label>\n );\n};\n\n","/**\n * Toggle label direction options\n */\nexport enum TOGGLE_LABEL_DIRECTION {\n LEFT = 'left',\n RIGHT = 'right',\n TOP = 'top',\n}\n\n/**\n * Type derived from TOGGLE_LABEL_DIRECTION enum\n */\nexport type TToggleDirection = `${TOGGLE_LABEL_DIRECTION}`;\n\n","import cn from \"classnames\";\nimport { forwardRef, type ReactNode, useState } from \"react\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { Tooltip as AntTooltip } from \"antd\";\nimport { useTranslation } from 'react-i18next';\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport { TOGGLE_LABEL_DIRECTION } from \"../../../constants/toggle\";\nimport type { TToggleDirection } from \"../../../constants/toggle\";\nimport { BoltOutlined, NoteAddOutlined } from \"@mui/icons-material\";\nimport { AIExtractedIndicator } from \"../../icons/AIExtractedIndicator\";\nimport { Label, type LabelType } from \"../../data-display/label/Label\";\nimport Tooltip from \"../../tooltip/Tooltip\";\nimport { HelpIcon } from \"../../icons/HelpIcon\";\n\n// Re-export LabelType from Label component for external use\nexport type { LabelType };\n\n/**\n * Props for the Toggle component\n */\nexport interface ToggleProps {\n /** Whether this is a GTN (Global Term Name) field */\n isGTN?: boolean;\n /** Unique identifier for the toggle */\n id?: string;\n /** Whether the toggle is checked */\n isChecked: boolean;\n /** Callback function called when toggle state changes */\n onChange: (val: boolean) => void;\n /** Label text or element to display */\n label?: ReactNode;\n /** Whether to preserve original case in the label */\n originalCase?: boolean;\n /** Whether the field is required */\n required?: boolean;\n /** Whether the required indicator shows as conditional (yellow instead of red) */\n isRequiredConditional?: boolean;\n /** Tags/labels to display next to the label */\n tags?: (string | LabelType)[];\n /** Whether to hide the status text (Yes/No) */\n hideStatus?: boolean;\n /** Label direction relative to toggle */\n labelDirection?: TToggleDirection;\n /** Custom status text instead of Yes/No */\n statusText?: string;\n /** Whether to show icons in the toggle */\n withIcon?: boolean;\n /** Whether the value was AI extracted */\n isAiExtracted?: boolean;\n /** Tooltip text to display */\n tooltip?: string;\n /** Additional CSS classes for the toggle input */\n className?: string;\n /** Whether the toggle is disabled */\n isDisabled?: boolean;\n /** Custom icons for checked/unchecked states */\n icon?: {\n checkedIcon: ReactNode;\n uncheckedIcon: ReactNode;\n };\n /** Whether to stop click propagation */\n stopClickPropagation?: boolean;\n /** GTN field name for document integration */\n gtnName?: any;\n /** Visual variant for the toggle */\n variant?: 'primary' | 'secondary';\n /** Additional CSS classes for the label */\n labelClassName?: string;\n /** Whether this is a live field */\n isLiveField?: boolean;\n /** Message to display below the toggle */\n message?: string;\n /** Type of message to display */\n messageType?: \"success\" | \"error\" | \"info\" | \"default\";\n /** Additional CSS classes for the wrapper container */\n wrapperClassName?: string;\n /** Help text to display below the label */\n helpText?: string;\n /** Size variant for the toggle */\n size?: \"small\" | \"medium\" | \"large\";\n /** Custom render function for AI extracted indicator */\n renderAiExtractedIndicator?: () => ReactNode;\n /** Custom render function for labels/tags */\n renderLabels?: (labels?: (string | LabelType)[]) => ReactNode;\n /** Custom render function for required indicator */\n renderRequired?: (isConditional: boolean) => ReactNode;\n /** Custom render function for tooltip */\n renderTooltip?: (tooltip: string) => ReactNode;\n /** Custom render function for live field icon */\n renderLiveFieldIcon?: () => ReactNode;\n /** Custom render function for GTN add to document button */\n renderGTNAddButton?: (onClick: () => void) => ReactNode;\n /** Handler for adding GTN to document */\n onAddGTNToDocument?: (keyValuePair: { key: string; value: string }) => void;\n /** Add to document icon component */\n AddToDocumentIcon?: React.ComponentType<{ fontSize?: number; color?: string }>;\n /** Primary color shades for styling */\n primaryColorShades?: Record<number, string>;\n}\n\n/**\n * Get toggle class names based on state and options\n */\nconst getToggleClassNames = (\n isChecked: boolean,\n withIcon: boolean,\n isDisabled: boolean,\n size: \"small\" | \"medium\" | \"large\" = \"medium\"\n): string => {\n const sizeClasses = {\n small: \"w-7 h-4 after:h-3 after:w-3 after:top-0.5 after:left-0.5\",\n medium: \"w-9 h-5 after:h-4 after:w-4 after:top-0.5 after:left-0.5\",\n large: \"w-11 h-6 after:h-5 after:w-5 after:top-0.5 after:left-0.5\",\n };\n\n const translateClasses = {\n small: \"peer-checked:after:translate-x-3\",\n medium: \"peer-checked:after:translate-x-full\",\n large: \"peer-checked:after:translate-x-5\",\n };\n\n return cn(\n \"p-0.5 rounded-full peer after:content-[''] after:absolute after:rounded-full after:transition-all bg-gray-200 dark:bg-black-400\",\n sizeClasses[size],\n translateClasses[size],\n {\n 'peer-checked:bg-primary-600 dark:peer-checked:bg-primary-700 peer-checked:after:translate-x-full after:bg-white dark:after:bg-primary-500':\n isChecked,\n 'after:bg-white dark:after:bg-black-500': !isChecked,\n 'text-white dark:text-black-900': withIcon,\n 'cursor-not-allowed opacity-70': isDisabled,\n }\n );\n};\n\n/**\n * Default Check icon component\n */\nconst CheckIcon = ({ size = 18, fill = '#016DCF' }: { size?: number; fill?: string }) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41L9 16.17z\"\n fill={fill}\n />\n </svg>\n);\n\n/**\n * Default Close icon component\n */\nconst CloseIcon = ({ size = 18, fill = '#101828' }: { size?: number; fill?: string }) => (\n <svg width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <path\n d=\"M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12 19 6.41z\"\n fill={fill}\n />\n </svg>\n);\n\n/**\n * A highly customizable toggle component with label, validation, and styling support.\n * Features multiple sizes, variants, icon support, GTN integration, and comprehensive prop support.\n *\n * @example\n * ```tsx\n * <Toggle\n * id=\"notifications\"\n * label=\"Enable Notifications\"\n * isChecked={notificationsEnabled}\n * onChange={(checked) => setNotificationsEnabled(checked)}\n * required\n * />\n * ```\n */\nexport const Toggle = forwardRef<HTMLInputElement, ToggleProps>(\n (\n {\n isGTN = false,\n isChecked,\n id,\n onChange,\n label,\n required,\n isRequiredConditional = false,\n originalCase = false,\n hideStatus = false,\n labelDirection = TOGGLE_LABEL_DIRECTION.TOP,\n statusText,\n withIcon = false,\n tags,\n isAiExtracted = false,\n tooltip = '',\n className = '',\n isDisabled = false,\n icon,\n stopClickPropagation = true,\n gtnName: _gtnName,\n variant: _variant = 'primary',\n labelClassName,\n isLiveField = false,\n message,\n messageType = \"default\",\n wrapperClassName,\n helpText,\n size = \"medium\",\n renderAiExtractedIndicator,\n renderLabels,\n renderRequired,\n renderTooltip,\n renderLiveFieldIcon,\n renderGTNAddButton,\n onAddGTNToDocument,\n AddToDocumentIcon,\n },\n ref\n ) => {\n const { t } = useTranslation();\n const isLabelDirectionTop = labelDirection === TOGGLE_LABEL_DIRECTION.TOP;\n const isLabelDirectionLeft = labelDirection === TOGGLE_LABEL_DIRECTION.LEFT;\n const isLabelDirectionRight = labelDirection === TOGGLE_LABEL_DIRECTION.RIGHT;\n const [isHovered, setIsHovered] = useState(false);\n\n const handleAddGTNToDocument = () => {\n if (onAddGTNToDocument) {\n const keyValuePair = {\n key: _gtnName,\n value: isChecked ? 'Yes' : 'No',\n };\n onAddGTNToDocument(keyValuePair);\n }\n };\n\n // Message typography class\n const getMessageTypographyClass = (): string => {\n if (messageType === \"error\") return \"text-red-500 dark:text-red-400\";\n if (messageType === \"success\")\n return \"text-green-500 dark:text-green-400\";\n if (messageType === \"info\") return \"text-primary-500 dark:text-primary-400\";\n return \"text-neutral-500 dark:text-neutral-400\";\n };\n\n // Default required indicator\n const defaultRenderRequired = (isConditional: boolean) => (\n <span className={`ml-0.5 ${isConditional ? 'text-yellow-500' : 'text-red-500'}`}>*</span>\n );\n\n // Default labels renderer\n const defaultRenderLabels = (labels?: (string | LabelType)[]) => {\n if (!labels || labels.length === 0) return null;\n return (\n <span className=\"inline-flex gap-1 ml-1\">\n {labels.map((tag, index) => {\n const label = typeof tag === 'string' ? tag : tag.label;\n const color = typeof tag === 'string' ? undefined : tag.color;\n return (\n <span\n key={index}\n className=\"px-1.5 py-0.5 text-xs rounded bg-gray-100 dark:bg-gray-700 text-gray-600 dark:text-gray-300\"\n style={color ? { backgroundColor: color } : undefined}\n >\n {label}\n </span>\n );\n })}\n </span>\n );\n };\n\n return (\n <div\n className={cn(\n 'flex gap-0.5',\n isHovered && isGTN ? 'border rounded-lg border-primary-100 bg-primary-50 p-1' : '',\n wrapperClassName\n )}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n onClick={(e) => {\n if (stopClickPropagation) e.stopPropagation();\n }}\n >\n {isGTN && !isHovered ? (\n <div className=\"w-1 h-1 bg-primary-600 rounded-full animate-pulse mt-1.5\" />\n ) : null}\n <div className=\"w-full flex flex-col\">\n {isLabelDirectionTop && label && (\n <div className=\"w-full flex justify-between flex-wrap\">\n <h1\n className={cn(\n 'mb-1 font-inter text-neutral-600 font-medium text-xs flex items-center gap-0.5 flex-wrap',\n labelClassName\n )}\n >\n <Typography\n size=\"extra-small\"\n variant=\"medium\"\n className={!originalCase ? 'capitalize' : ''}\n appearance=\"subtitle\"\n >\n {label}\n {required && (renderRequired ? renderRequired(isRequiredConditional) : defaultRenderRequired(isRequiredConditional))}\n </Typography>\n {isLiveField && <BoltOutlined sx={{ fontSize: 16, color: 'var(--color-primary-600)', rotate: '15deg' }} />}\n {isAiExtracted && <AIExtractedIndicator />}\n <Label labels={tags || []} />\n {tooltip && (\n <Tooltip placement='top' title={tooltip}>\n <div className='cursor-pointer'>\n <HelpIcon />\n </div>\n </Tooltip>\n )}\n\n </h1>\n {isGTN && isHovered ? (\n renderGTNAddButton ? (\n renderGTNAddButton(handleAddGTNToDocument)\n ) : (\n <button\n id=\"btn-toggle-add-to-document\"\n className=\"cursor-pointer\"\n onClick={handleAddGTNToDocument}\n type=\"button\"\n >\n <AntTooltip placement=\"top\" title={t(\"Add to document\")}>\n <NoteAddOutlined className=\"text-primary-600\" sx={{ fontSize: 16 }} />\n </AntTooltip>\n </button>\n )\n ) : null}\n </div>\n )}\n\n {/* Help text */}\n {helpText && (\n <Typography\n className=\"mb-2 text-neutral-600 dark:text-neutral-400\"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"regular\"\n >\n {helpText}\n </Typography>\n )}\n\n <div className=\"flex\">\n {isLabelDirectionLeft && (\n <Typography\n size=\"small\"\n variant=\"medium\"\n className={cn('mr-2 text-neutral-700 dark:text-black-200', labelClassName)}\n appearance=\"custom\"\n >\n {label}\n </Typography>\n )}\n\n <label\n className={cn(\n 'relative inline-flex items-center',\n isLabelDirectionRight || statusText ? '' : 'w-min',\n !isDisabled ? 'cursor-pointer' : 'cursor-not-allowed opacity-50'\n )}\n onClick={(e) => e.stopPropagation()}\n >\n <input\n ref={ref}\n type=\"checkbox\"\n id={id}\n onChange={(e) => !isDisabled && onChange(e.target.checked)}\n value=\"\"\n disabled={isDisabled}\n checked={isChecked}\n className={cn('sr-only peer w-full', className)}\n aria-required={required}\n aria-invalid={\n message && messageType === \"error\" ? \"true\" : \"false\"\n }\n aria-describedby={\n message || helpText ? `${id}-description` : undefined\n }\n />\n <div className={getToggleClassNames(isChecked, withIcon, isDisabled, size)}>\n {withIcon ? (\n <div className=\"flex items-center justify-center h-full w-full\">\n <div\n className={cn(\n \"z-10 transition-all transform\",\n size === \"small\" &&\n (isChecked\n ? \"translate-x-2\"\n : \"translate-x-[-6px]\"),\n size === \"medium\" &&\n (isChecked\n ? \"translate-x-[8.5px]\"\n : \"translate-x-[-8px]\"),\n size === \"large\" &&\n (isChecked\n ? \"translate-x-2.5\"\n : \"translate-x-[-10px]\")\n )}\n >\n {isChecked ? (\n icon?.checkedIcon ? (\n icon.checkedIcon\n ) : (\n <CheckIcon size={18} fill=\"#016DCF\" />\n )\n ) : icon?.uncheckedIcon ? (\n icon.uncheckedIcon\n ) : (\n <CloseIcon size={18} fill=\"#101828\" />\n )}\n </div>\n </div>\n ) : null}\n </div>\n\n {isLabelDirectionRight && (\n <Typography\n size=\"small\"\n variant=\"medium\"\n className={cn('ml-2 text-neutral-700 dark:text-black-300', labelClassName)}\n appearance=\"custom\"\n >\n {label}\n </Typography>\n )}\n\n {hideStatus ? null : (\n <Typography\n size=\"small\"\n variant=\"medium\"\n className=\"ml-2 text-neutral-900 dark:text-black-100\"\n appearance=\"custom\"\n >\n {statusText ? statusText : isChecked ? 'Yes' : 'No'}\n </Typography>\n )}\n </label>\n </div>\n\n {/* Message */}\n <AnimatePresence>\n {message && (\n <motion.div\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n transition={{ duration: 0.2 }}\n id={`${id}-description`}\n role={messageType === \"error\" ? \"alert\" : undefined}\n >\n <Typography\n className={cn(\"mt-1\", getMessageTypographyClass())}\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {message}\n </Typography>\n </motion.div>\n )}\n </AnimatePresence>\n\n {/* Help text description for accessibility */}\n {helpText && !message && (\n <div id={`${id}-description`} className=\"sr-only\">\n {helpText}\n </div>\n )}\n </div>\n </div>\n );\n }\n);\n\nToggle.displayName = \"Toggle\";\n","/**\n * Parses a JSON string and returns the parsed JSON object\n * @param json - The JSON string to parse\n * @returns The parsed JSON object or null if the JSON is invalid\n */\nexport const parseJson = (json: string) => {\n try {\n return JSON.parse(json);\n } catch {\n return null;\n }\n};\n\n/**\n* Generates a random hexadecimal string of specified length\n* @param length - The length of the hex string to generate\n* @returns A random hex string\n*/\nexport const randomHexString = (length: number): string => {\n let result = '';\n const characters = '0123456789abcdef';\n for (let i = 0; i < length; i++) {\n result += characters.charAt(Math.floor(Math.random() * characters.length));\n }\n return result;\n};\n\n/**\n * Escape special regex characters in a string\n * @param string - The string to escape\n * @returns The escaped string\n */\nexport const escapeRegExp = (string: string): string => {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n};\n\n/**\n * Filters top level paths from a list of paths\n * @param paths - The list of paths to filter\n * @returns The filtered list of top level paths\n */\nexport const filterTopLevelPaths = (paths: string[]) => {\n // Sort shortest to longest (parents come before children)\n const sorted = [...paths].sort((a, b) => a.length - b.length);\n const result: string[] = [];\n\n for (const path of sorted) {\n // Only keep if no parent is present in the result\n const isChild = result.some((parent) => path !== parent && path.startsWith(parent + '.'));\n if (!isChild) {\n result.push(path);\n }\n }\n return result;\n};\n\n\nexport const buildQueryParams = (params: any) => {\n let queryParams = '';\n if (params) {\n let totalParam = 0;\n Object.keys(params).forEach((key) => {\n if (params[key] !== undefined && params[key] !== null && params[key] !== '') {\n let value = params[key];\n \n if (typeof value === 'object') {\n value = JSON.stringify(value);\n } else if (Array.isArray(value)) {\n value = value.join(',');\n }\n \n if (value !== undefined && value !== null && value !== '') {\n if (totalParam === 0) {\n queryParams += `?${key}=${encodeURIComponent(value)}`;\n } else {\n queryParams += `&${key}=${encodeURIComponent(value)}`;\n }\n \n totalParam += 1;\n }\n }\n });\n }\n return queryParams;\n };","import { useMemo } from 'react';\nimport cn from 'classnames';\nimport { useOS, SHORTCUT_KEY_MAP } from '../../hooks/useOS';\n\nexport type ShortcutKbdVariant = 'dark' | 'light';\n\nexport interface ShortcutKbdProps {\n /** Array of keyboard shortcut keys to display (e.g., ['Meta', 'S'] or ['Ctrl', 'Enter']) */\n shortcuts: string[];\n /** Visual variant of the keyboard shortcuts */\n variant?: ShortcutKbdVariant;\n /** Additional CSS class name */\n className?: string;\n}\n\n/**\n * ShortcutKbd component displays keyboard shortcuts with OS-aware key symbols.\n * \n * Keys like 'Meta', 'Alt', 'Shift', 'Control', 'Enter', 'Delete' are automatically\n * converted to OS-specific symbols (e.g., ⌘ on macOS, Ctrl on Windows/Linux).\n * \n * @example\n * ```tsx\n * // macOS: Shows \"⌘ S\", Windows: Shows \"Ctrl S\"\n * <ShortcutKbd shortcuts={['Meta', 'S']} />\n * \n * // Light variant for dark backgrounds\n * <ShortcutKbd shortcuts={['Meta', 'Shift', 'P']} variant=\"light\" />\n * ```\n */\nexport const ShortcutKbd = ({ \n shortcuts, \n variant = 'dark',\n className,\n}: ShortcutKbdProps) => {\n const os = useOS();\n const isMac = os === 'macos';\n\n const displayKeys = useMemo(() => {\n return shortcuts.map((key) => {\n const mapping = SHORTCUT_KEY_MAP[key];\n if (mapping) {\n return isMac ? mapping.macos : mapping.other;\n }\n return key;\n });\n }, [shortcuts, isMac]);\n\n return (\n <div className={cn('flex flex-1 gap-1', className)}>\n {displayKeys.map((key, index) => (\n <kbd\n key={index}\n className={cn(\n 'flex items-center rounded-[3px] px-1.5 py-[2px] min-w-[26px] justify-center text-xs font-medium',\n {\n 'bg-neutral-800 text-white': variant === 'dark',\n 'bg-neutral-100 text-neutral-500 dark:bg-neutral-800 dark:text-white': variant === 'light',\n }\n )}\n >\n {key}\n </kbd>\n ))}\n </div>\n );\n};\n\nexport default ShortcutKbd;\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport cn from \"classnames\";\nimport { useCallback, type FC, type ReactNode } from \"react\";\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport { Toggle } from \"../../forms/toggle/Toggle\";\nimport Tooltip from \"../../tooltip/Tooltip\";\nimport { escapeRegExp } from \"../../../utils/utilities\";\nimport { ShortcutKbd } from \"../../shortcut-kbd/ShortcutKbd\";\n\n/**\n * Check icon component for showing tick state\n */\nconst CheckSmall = ({ className = '', fill = \"var(--color-primary-600)\", size = 24 }: { className?: string, fill?: string, size?: number }) => (\n <svg\n className={className}\n width={size}\n height={size}\n viewBox='0 0 20 20'\n fill={fill}\n xmlns='http://www.w3.org/2000/svg'\n >\n <g mask='url(#mask0_6752_28309)'>\n <path\n d='M8.33317 11.3333L13.2498 6.41667C13.4026 6.26389 13.5971 6.1875 13.8332 6.1875C14.0693 6.1875 14.2637 6.26389 14.4165 6.41667C14.5693 6.56944 14.6457 6.76389 14.6457 7C14.6457 7.23611 14.5693 7.43056 14.4165 7.58333L8.9165 13.0833C8.74984 13.25 8.55539 13.3333 8.33317 13.3333C8.11095 13.3333 7.9165 13.25 7.74984 13.0833L5.58317 10.9167C5.43039 10.7639 5.354 10.5694 5.354 10.3333C5.354 10.0972 5.43039 9.90278 5.58317 9.75C5.73595 9.59722 5.93039 9.52083 6.1665 9.52083C6.40262 9.52083 6.59706 9.59722 6.74984 9.75L8.33317 11.3333Z'\n fill={fill}\n />\n </g>\n </svg>\n);\n\n/**\n * Props for the OptionButton component\n */\nexport interface OptionButtonProps {\n /** Unique identifier for the button */\n id?: string;\n /** Click handler for the button */\n onClick?(e?: any): void;\n /** Icon to display before the text */\n icon?: ReactNode;\n /** Button text content */\n text: string;\n /** Additional CSS classes */\n className?: string;\n /** Whether the button is disabled */\n isDisabled?: boolean;\n /** Callback when the button is closed */\n onClose?(): void;\n /** Whether the button should be hidden */\n notVisible?: boolean;\n /** Whether to hide hover effects */\n hideHoverEffect?: boolean;\n /** Icon to display after the text (trailing) */\n leadingIcon?: ReactNode;\n /** Suffix record object for badge content lookup by text */\n suffixRecord?: Record<string, string | number>;\n /** Whether to stop event propagation on click */\n stopPropagation?: boolean;\n /** Toggle functionality callback */\n onToggle?: () => void;\n /** Whether the toggle is checked (if onToggle is provided) */\n isChecked?: boolean;\n /** Text to highlight within the button text */\n highlight?: string;\n /** Whether to truncate text */\n truncateText?: boolean;\n /** Whether to show a checkmark tick */\n showTick?: boolean;\n /** Custom width for the text container */\n width?: string;\n /** Tooltip text to display */\n tooltip?: string;\n /** Whether the flow is available (controls button enabled state) */\n isFlowAvailable?: boolean;\n /** Array of keyboard shortcut keys to display inline in the button (e.g., ['Meta', 'S'] or ['Ctrl', 'Enter']) */\n shortcuts?: string[];\n}\n\n/**\n * OptionButton component provides a flexible button for lists, menus, and option selections.\n * Based on the web portal implementation for consistency across apps.\n *\n * @example\n * ```tsx\n * <OptionButton\n * text=\"Save Document\"\n * icon={<SaveIcon />}\n * onClick={() => console.log('Save clicked')}\n * />\n * ```\n */\nexport const OptionButton: FC<OptionButtonProps> = ({\n id,\n onClick,\n icon,\n text,\n className,\n isDisabled,\n onClose,\n notVisible,\n hideHoverEffect,\n leadingIcon,\n suffixRecord,\n stopPropagation,\n onToggle,\n isChecked = false,\n highlight,\n truncateText = false,\n showTick = false,\n width = \"100%\",\n tooltip,\n isFlowAvailable = true,\n shortcuts,\n}) => {\n const handleClick = useCallback(\n (e: React.MouseEvent) => {\n if (onClose) onClose();\n e.preventDefault();\n onClick?.(e);\n stopPropagation && e.stopPropagation();\n },\n [onClose, onClick, stopPropagation]\n );\n\n const highlightSubstring = (value: string, search: string) => {\n if (!search) return value;\n if (!value || (typeof value !== \"string\" && typeof value !== \"number\"))\n return value;\n\n const escapedSearch = escapeRegExp(search);\n const regex = new RegExp(`(${escapedSearch?.trim()})`, \"gi\");\n const searchValue = value?.toString()?.split(regex);\n return (\n <span className=\"overflow-clip text-ellipsis\">\n {searchValue[0]}\n <span className=\"bg-yellow-300 dark:bg-primary-100 dark:text-black-900 rounded-sm\">\n {searchValue[1]}\n </span>\n {searchValue?.slice(2)?.join(\"\")}\n </span>\n );\n };\n\n const handleToggle = useCallback(\n (e: React.MouseEvent) => {\n onToggle?.();\n e.stopPropagation();\n },\n [onToggle]\n );\n\n const isDestructiveAction = (() => {\n const destructiveKeywords = [\n \"delete\",\n \"remove\",\n \"clear\",\n \"terminate session\",\n \"terminate sessions\",\n \"terminate all sessions\",\n ];\n return destructiveKeywords.some((keyword) =>\n text?.toLowerCase().includes(keyword)\n );\n })();\n\n const isButtonDisabled = isDisabled || !isFlowAvailable;\n\n if (notVisible) {\n return null;\n }\n\n return (\n <button\n id={id}\n className={cn(\n \"w-full p-1 bg-white dark:bg-black-800 group\",\n className,\n isButtonDisabled && \"opacity-60\"\n )}\n onClick={onToggle ? () => null : handleClick}\n disabled={isButtonDisabled}\n onMouseMove={(e) => e.stopPropagation()}\n >\n <div\n className={cn(\n \"flex w-full justify-start items-center gap-2 px-2 py-1 rounded-lg transition-all duration-300 ease-in-out\",\n !hideHoverEffect &&\n \"hover:bg-gray-50 dark:hover:bg-black-600 hover:shadow-md dark:hover:shadow-lg dark:hover:shadow-primary-500/20\"\n )}\n >\n {icon ? (\n <div\n className={cn(\n \"h-5 w-5 flex-shrink-0 flex items-center text-neutral-900 dark:text-white transition-colors duration-300 ease-in-out\",\n isDestructiveAction\n ? \"group-hover:!text-red-600\"\n : \"group-hover:text-primary-600 dark:group-hover:text-primary-400\"\n )}\n >\n <Tooltip placement=\"top\" title={tooltip}>\n {icon}\n </Tooltip>\n </div>\n ) : null}\n\n <div className=\"flex gap-2 flex-1 min-w-0 text-left justify-between items-center\">\n <div\n className={cn(\"flex-1 min-w-0\", truncateText && \"max-w-[150px]\")}\n style={{ width }}\n >\n <Typography\n className={cn(\n \"font-medium text-sm truncate transition-colors duration-300 ease-in-out\",\n isDestructiveAction\n ? \"group-hover:!text-red-600\"\n : \"group-hover:!text-primary-600 dark:group-hover:!text-primary-400\"\n )}\n appearance=\"custom\"\n >\n {highlight ? highlightSubstring(text, highlight) : text}\n </Typography>\n </div>\n {suffixRecord?.[text] ? (\n <span className=\"flex-shrink-0 text-neutral-500 dark:text-neutral-200 bg-neutral-100 dark:bg-black-700 border-[#D0D5DD] dark:border-black-700 text-xs leading-[18px] font-normal border rounded-full px-2 py-0.5\">\n {suffixRecord[text] || \"\"}\n </span>\n ) : null}\n {showTick ? (\n <div className=\"flex-shrink-0\">\n <CheckSmall fill=\"var(--color-primary-600)\" />\n </div>\n ) : null}\n </div>\n {leadingIcon ? (\n <>\n {tooltip ? (\n <Tooltip placement=\"top\" title={tooltip}>\n <div\n className={cn(\n \"flex-shrink-0 transition-colors duration-300 ease-in-out\",\n isDestructiveAction\n ? \"group-hover:!text-red-600\"\n : \"group-hover:text-primary-600 dark:group-hover:text-primary-400\"\n )}\n >\n {leadingIcon}\n </div>\n </Tooltip>\n ) : (\n <div\n className={cn(\n \"flex-shrink-0 transition-colors duration-300 ease-in-out\",\n isDestructiveAction\n ? \"group-hover:!text-red-600\"\n : \"group-hover:text-primary-600 dark:group-hover:text-primary-400\"\n )}\n >\n {leadingIcon}\n </div>\n )}\n </>\n ) : null}\n\n {shortcuts ? (\n <div className='flex items-center justify-end'>\n <ShortcutKbd variant='light' shortcuts={shortcuts} />\n </div>\n ) : null}\n {onToggle ? (\n <div className=\"flex-shrink-0\">\n <Toggle\n onChange={handleToggle as any}\n isChecked={isChecked}\n isDisabled={isDisabled}\n hideStatus\n />\n </div>\n ) : null}\n </div>\n </button>\n );\n};\n\nOptionButton.displayName = \"OptionButton\";\n","import * as Flags from 'country-flag-icons/react/1x1';\nimport React from 'react';\n\nexport const getFlagComponent = (countryCode: string, isHovering?: boolean) => {\n const flagCode = countryCode.slice(0, 2);\n const FlagComponent = Flags[flagCode as keyof typeof Flags];\n \n return FlagComponent ? (\n <div\n className={`\n w-5 h-5 rounded-full overflow-hidden border-[0.9px] flex items-center justify-center relative\n ${isHovering ? 'border-neutral-100 dark:border-neutral-100' : 'border-neutral-400 dark:border-neutral-500'}\n `}\n >\n <FlagComponent\n style={{\n width: '110%',\n height: '110%',\n transform: 'translate(-50%, -50%)',\n position: 'absolute',\n top: '50%',\n left: '50%',\n }}\n />\n </div>\n ) : null;\n};\n\nexport const getFlagComponentSm = (countryCode: string) => {\n const flagCode = countryCode.slice(0, 2);\n const FlagComponent = Flags[flagCode as keyof typeof Flags];\n\n if (!FlagComponent) return null;\n\n return (\n <div className='w-4 h-4 rounded-full overflow-hidden flex items-center justify-center relative'>\n <FlagComponent\n style={{\n width: '120%',\n height: '120%',\n transform: 'translate(-50%, -50%)',\n position: 'absolute',\n top: '50%',\n left: '50%',\n }}\n />\n </div>\n );\n};\n\nexport const getFlagComponentRectangle = (countryCode: string) => {\n const flagCode = countryCode.slice(0, 2);\n const FlagComponent = Flags[flagCode as keyof typeof Flags];\n\n if (!FlagComponent) return null;\n\n return (\n <div className='w-7 h-5 rounded-md overflow-hidden border border-neutral-300 dark:border-neutral-300 flex items-center justify-center relative'>\n <FlagComponent\n style={{\n width: '110%',\n height: '110%',\n transform: 'translate(-50%, -50%)',\n position: 'absolute',\n top: '50%',\n left: '50%',\n }}\n />\n </div>\n );\n};\n\nexport const getFlagComponentRectangleSm = (countryCode: string) => {\n const flagCode = countryCode.slice(0, 2);\n const FlagComponent = Flags[flagCode as keyof typeof Flags];\n\n if (!FlagComponent) return null;\n\n return (\n <div className='w-4 h-3 rounded-sm overflow-hidden border border-neutral-300 dark:border-neutral-300 flex items-center justify-center relative'>\n <FlagComponent\n style={{\n width: '120%',\n height: '120%',\n transform: 'translate(-50%, -50%)',\n position: 'absolute',\n top: '50%',\n left: '50%',\n }}\n />\n </div>\n );\n};\n\nexport const getFlagComponentRectangleMd = (countryCode: string) => {\n const flagCode = countryCode.slice(0, 2);\n const FlagComponent = Flags[flagCode as keyof typeof Flags];\n\n if (!FlagComponent) return null;\n\n return (\n <div className='w-5 h-4 rounded-sm overflow-hidden border border-neutral-300 dark:border-neutral-300 flex items-center justify-center relative'>\n <FlagComponent\n style={{\n width: '115%',\n height: '115%',\n transform: 'translate(-50%, -50%)',\n position: 'absolute',\n top: '50%',\n left: '50%',\n }}\n />\n </div>\n );\n};\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport cn from \"classnames\";\nimport { forwardRef, useEffect, useState } from \"react\";\nimport { Dropdown, Tooltip as AntTooltip } from \"antd\";\nimport { useTranslation } from 'react-i18next';\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport { Label } from \"../../data-display/label/Label\";\nimport type { LabelType } from \"../../data-display/label/Label\";\nimport { CURRENCIES, CURRENCY_SYMBOLS } from \"./currency.constant\";\nimport { NoteAddOutlined, BoltOutlined } from \"@mui/icons-material\";\nimport { AIExtractedIndicator } from \"../../icons/AIExtractedIndicator\";\nimport { Required } from \"../../icons/Required\";\nimport { HelpIcon } from \"../../icons/HelpIcon\";\nimport Tooltip from \"../../tooltip/Tooltip\";\nimport { SearchBar } from \"../search-bar/SearchBar\";\nimport { OptionButton } from \"../../buttons/option-button/OptionButton\";\nimport { getFlagComponent } from \"../../../utils/countryFlags\";\n\n/**\n * Risk details interface for risk analysis integration\n */\nexport interface RiskDetails {\n color?: string;\n description?: string;\n hexBgColor?: string;\n hexBorderColor?: string;\n [key: string]: any;\n}\n\n/**\n * Risk details card component props - generic to allow consumer-specific risk types\n */\nexport interface RiskDetailsCardProps<T = any> {\n riskDetails: T;\n maxWidth?: string;\n showAllRisksSuggestions?: boolean;\n}\n\n/**\n * Props for the CurrencyInputField component\n */\nexport interface CurrencyInputFieldProps {\n /** Unique identifier for the currency input */\n id: string;\n /** Label text to display above the input */\n label?: string;\n /** Current value of the input (string for compatibility) */\n value: string;\n /** Callback function called when value changes */\n onChange: (data: any, currencyCode?: string) => void;\n /** Error message to display below the input */\n errorMessage?: string;\n /** Default value for the input */\n defaultValue?: string;\n /** Whether the field is required */\n required?: boolean;\n /** Whether the required indicator shows as conditional (yellow instead of red) */\n isRequiredConditional?: boolean;\n /** Tags/labels to display next to the label */\n tags?: (string | LabelType)[];\n /** Additional CSS classes for the wrapper */\n className?: string;\n /** Whether to preserve original case in the label */\n originalCase?: boolean;\n /** Tooltip text for the help icon */\n tooltip?: string;\n /** Whether to use simple mode (inline label style) */\n simpleMode?: boolean;\n /** Additional CSS classes for the input field */\n inputFieldClassName?: string;\n /** Whether the value was AI extracted */\n isAiExtracted?: boolean;\n /** Whether this is a GTN (Global Term Name) field */\n isGTN?: boolean;\n /** GTN field name for document integration */\n gtnName?: any;\n /** Whether to allow multi-currency selection with dropdown */\n allowMultiCurrency?: boolean;\n /** Placeholder text for the input */\n placeholder?: string;\n /** Whether the input is disabled */\n disabled?: boolean;\n /** Current currency code */\n currencyCode?: string;\n /** Inline styles for the input element */\n inputStyle?: React.CSSProperties;\n /** Additional CSS classes for the label */\n labelClassName?: string;\n /** Whether this is a live field */\n isLiveField?: boolean;\n /** Callback function called when input loses focus */\n onBlur?: () => void;\n /** Whether the input should auto-focus */\n autoFocus?: boolean;\n /** Whether recording is active (for pilot context) */\n isRecording?: boolean;\n /** Whether playback is active (for pilot context) */\n isPlaying?: boolean;\n /** Handler for adding GTN to document */\n onAddGTNToDocument?: (keyValuePair: { key: string; value: string }) => void;\n /** Risk details data */\n riskDetails?: RiskDetails;\n /** Whether risk analysis is open */\n isRiskAnalysisOpen?: boolean;\n /** Custom risk details card component */\n RiskDetailsCard?: React.ComponentType<RiskDetailsCardProps<any>>;\n}\n\n/**\n * A highly customizable currency input component with label, validation, and styling support.\n * Features currency selection, formatting, validation, GTN integration, risk analysis support,\n * and comprehensive prop support for various use cases.\n *\n * @example\n * ```tsx\n * <CurrencyInputField\n * id=\"price\"\n * label=\"Price\"\n * value={price}\n * onChange={(value, currency) => setPrice(value)}\n * currencyCode=\"USD\"\n * allowMultiCurrency\n * required\n * />\n * ```\n */\nexport const CurrencyInputField = forwardRef<\n HTMLInputElement,\n CurrencyInputFieldProps\n>(\n (\n {\n id,\n label,\n value,\n onChange,\n errorMessage,\n defaultValue,\n required = false,\n isRequiredConditional = false,\n tags,\n className,\n originalCase = false,\n tooltip,\n simpleMode = false,\n inputFieldClassName = \"\",\n isAiExtracted = false,\n isGTN = false,\n gtnName = null,\n allowMultiCurrency = false,\n placeholder,\n disabled = false,\n currencyCode = \"USD\",\n inputStyle,\n labelClassName,\n isLiveField = false,\n onBlur: onBlurProp,\n autoFocus = false,\n isRecording = false,\n isPlaying = false,\n onAddGTNToDocument,\n riskDetails,\n isRiskAnalysisOpen = false,\n RiskDetailsCard,\n ...props\n },\n ref\n ) => {\n const { t } = useTranslation();\n const [isFocused, setIsFocused] = useState(false);\n const [filteredCurrencyOptions, setFilteredCurrencyOptions] = useState<\n { label: React.ReactNode; key: string }[]\n >([]);\n const [searchKeyForCurrency, setSearchKeyForCurrency] = useState(\"\");\n const [selectedCurrency, setSelectedCurrency] = useState<string>(\n currencyCode ? currencyCode : \"USD\"\n );\n const [isHovered, setIsHovered] = useState(false);\n\n const handleAddGTNToDocument = (_value: string) => {\n if (onAddGTNToDocument) {\n const keyValuePair = {\n key: gtnName,\n value: _value,\n };\n onAddGTNToDocument(keyValuePair);\n }\n };\n\n const formatCurrency = (targetValue: any): string => {\n if (targetValue === null || targetValue === undefined) return \"\";\n\n const number = Number(targetValue);\n if (isNaN(number)) return targetValue;\n\n return number?.toLocaleString(\"en-US\", {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n });\n };\n\n const handleOnChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const _value = e.target.value;\n const numericValue =\n _value === \"\" || _value === null || _value === undefined\n ? 0\n : Number(_value);\n onChange(numericValue, selectedCurrency);\n const element = document.getElementById(id);\n if (element) {\n element.setAttribute(\n \"data-selected-value\",\n JSON.stringify({\n value: numericValue,\n currency_code: selectedCurrency,\n })\n );\n }\n if (element && (isRecording || isPlaying)) {\n const pilotEvent = new CustomEvent(\"pilot-change\", {\n bubbles: true,\n detail: {\n selector: `#${id}`,\n value: {\n value: numericValue,\n currency_code: selectedCurrency,\n },\n type: \"change\",\n },\n });\n element.dispatchEvent(pilotEvent);\n }\n };\n\n const onFocus = () => {\n setIsFocused(true);\n };\n\n const onBlur = () => {\n setIsFocused(false);\n if (value === null || value === undefined || value === \"\") {\n handleOnChange({\n target: { value: \"0.00\" },\n } as React.ChangeEvent<HTMLInputElement>);\n }\n onBlurProp?.();\n };\n\n const getClassName = (): string => {\n const baseClasses =\n \"pl-11 border h-[32px] text-sm rounded-lg block w-full p-2.5 font-inter font-medium text-neutral-900 dark:text-black-200 disabled:bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400\";\n const borderColor = errorMessage\n ? \"border-red-300\"\n : isRiskAnalysisOpen && riskDetails?.color\n ? `border-${riskDetails.color}-300`\n : \"border-gray-300 dark:border-black-600\";\n const backgroundColor = `${\n isRiskAnalysisOpen && riskDetails?.color\n ? `bg-${riskDetails.color}-50`\n : \"bg-white dark:bg-black-600\"\n }`;\n\n return `${baseClasses} ${borderColor} ${backgroundColor} ${inputFieldClassName}`;\n };\n\n useEffect(() => {\n if (currencyCode) {\n setSelectedCurrency(currencyCode);\n }\n }, [currencyCode]);\n\n useEffect(() => {\n if (selectedCurrency) {\n const numericValue =\n value === \"\" || value === null || value === undefined\n ? 0\n : Number(value);\n if (currencyCode !== selectedCurrency) {\n onChange(numericValue, selectedCurrency);\n }\n const element = document.getElementById(id);\n if (element) {\n element.setAttribute(\n \"data-selected-value\",\n JSON.stringify({\n value: numericValue,\n currency_code: selectedCurrency,\n })\n );\n if (isRecording || isPlaying) {\n const pilotEvent = new CustomEvent(\"pilot-change\", {\n bubbles: true,\n detail: {\n selector: `#${id}`,\n value: {\n value: numericValue,\n currency_code: selectedCurrency,\n },\n type: \"change\",\n },\n });\n element.dispatchEvent(pilotEvent);\n }\n }\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedCurrency]);\n\n useEffect(() => {\n const currencyOptions = CURRENCIES.filter((item) =>\n (item.value + \" - \" + item.label)\n .toLowerCase()\n .includes(searchKeyForCurrency.toLowerCase())\n ).map((item) => ({\n label: (\n <OptionButton\n text={`${item.value} - ${item.label}`}\n icon={getFlagComponent(item.value)}\n showTick={selectedCurrency === item.value}\n onClick={() => setSelectedCurrency(item.value)}\n className=\"text-black-900 dark:text-white\"\n />\n ),\n key: item.value,\n }));\n\n setFilteredCurrencyOptions(currencyOptions);\n }, [searchKeyForCurrency, selectedCurrency]);\n\n useEffect(() => {\n setSearchKeyForCurrency(\"\");\n }, [selectedCurrency]);\n\n // Simple mode rendering\n if (simpleMode) {\n return (\n <label\n id={id}\n className={`mb-1 text-xs font-medium text-gray-600 h-full inline-flex items-center gap-1 ${\n !originalCase ? \"capitalize\" : \"\"\n } ${labelClassName || \"\"}`}\n >\n <span className=\"absolute inset-y-0 left-1 top-0.5 flex items-center pl-3\">\n {\"$\"}\n </span>\n <input\n {...props}\n ref={ref}\n type={isFocused ? \"number\" : \"text\"}\n required={required}\n className={cn(inputFieldClassName, \"pl-8 h-[32px]\")}\n onChange={handleOnChange}\n min={0}\n onFocus={onFocus}\n onBlur={onBlur}\n value={!isFocused ? formatCurrency(value) : value}\n {...(defaultValue && !value\n ? {\n defaultValue: !isFocused\n ? formatCurrency(defaultValue)\n : defaultValue,\n }\n : {})}\n id={id || label}\n autoFocus={autoFocus}\n />\n </label>\n );\n }\n\n // Full mode rendering\n return (\n <div\n className={cn(\n \"flex gap-0.5 relative\",\n isHovered && isGTN\n ? \"border rounded-lg border-primary-100 bg-primary-50 p-1\"\n : \"\"\n )}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {isGTN && !isHovered ? (\n <div className=\"w-1 h-1 bg-primary-600 rounded-full animate-blink mt-1.5\" />\n ) : null}\n <div className={cn(\"w-full flex flex-col\", className)}>\n <label\n htmlFor=\"text\"\n className={`mb-1 text-xs font-medium text-gray-600 inline-flex items-center gap-1 ${\n !originalCase ? \"uppercase\" : \"\"\n } ${labelClassName || \"\"}`}\n >\n <div className=\"w-full flex items-center justify-between flex-wrap\">\n <div className=\"inline-flex items-center gap-1 flex-wrap\">\n <Typography\n size=\"extra-small\"\n variant=\"medium\"\n appearance=\"subtitle\"\n >\n {label}\n {required && <Required isConditional={isRequiredConditional} />}\n </Typography>\n {isLiveField && (\n <BoltOutlined\n sx={{\n fontSize: 16,\n color: \"var(--color-primary-600)\",\n rotate: \"15deg\",\n }}\n />\n )}\n {isAiExtracted && <AIExtractedIndicator />}\n <Label labels={tags} />\n {tooltip && (\n <Tooltip placement=\"top\" title={tooltip}>\n <div className=\"cursor-pointer\">\n <HelpIcon />\n </div>\n </Tooltip>\n )}\n </div>\n {isGTN && isHovered && onAddGTNToDocument ? (\n <button\n id=\"btn-currency-input-add-to-document\"\n className=\"cursor-pointer\"\n onClick={() => handleAddGTNToDocument(formatCurrency(value))}\n type=\"button\"\n >\n <AntTooltip placement=\"top\" title={t(\"Add to document\")}>\n <NoteAddOutlined\n className=\"text-primary-600\"\n sx={{\n fontSize: 16\n }}\n />\n </AntTooltip>\n </button>\n ) : null}\n </div>\n </label>\n <label className=\"relative block\">\n <span className=\"absolute inset-y-0 left-1 flex items-center pl-3 text-neutral-900 dark:text-white\">\n {CURRENCY_SYMBOLS[selectedCurrency]}\n </span>\n\n <input\n {...props}\n ref={ref}\n placeholder={placeholder}\n type={isFocused ? \"number\" : \"text\"}\n required={required}\n disabled={disabled}\n className={getClassName()}\n onChange={handleOnChange}\n min={0}\n onFocus={onFocus}\n onBlur={onBlur}\n value={!isFocused ? formatCurrency(value) : value}\n defaultValue={\n !isFocused ? formatCurrency(defaultValue) : defaultValue\n }\n id={id || label}\n style={inputStyle}\n autoComplete=\"off\"\n autoFocus={autoFocus}\n />\n <span\n className={`absolute inset-y-0 right-2 flex items-center z-[1000px] h-full cursor-pointer dark:text-black-200 ${\n allowMultiCurrency ? \"cursor-pointer\" : \"\"\n }`}\n >\n {allowMultiCurrency ? (\n <Dropdown\n menu={{\n items: [\n ...filteredCurrencyOptions,\n ],\n }}\n trigger={[\"click\"]}\n overlayClassName=\"row-option-cell\"\n placement=\"bottomRight\"\n overlayStyle={{ zIndex: 999 }}\n getPopupContainer={(trigger) =>\n trigger.parentElement as HTMLElement\n }\n popupRender={(menu) => (\n <div\n style={{\n maxHeight: \"200px\",\n width: \"330px\",\n textOverflow: \"ellipsis\",\n overflowY: \"auto\",\n zIndex: \"999px\",\n borderRadius: \"6px\",\n }}\n className=\"[&>*:nth-child(2)]:!shadow-none [&>*:nth-child(2)>*]:!px-2 flex flex-col gap-2 p-2 bg-white dark:bg-black-700 border border-solid border-neutral-200 dark:border-black-600\"\n >\n <SearchBar\n id={`search-bar-currency-input`}\n value={searchKeyForCurrency}\n onChange={(_value) =>\n setSearchKeyForCurrency(_value)\n }\n className=\"mb-2\"\n />\n {menu}\n </div>\n )}\n >\n <div className=\"pl-4 pr-2 py-1.5 text-sm text-gray-700 dark:text-black-200 flex items-center gap-1\">\n {getFlagComponent(selectedCurrency)} {selectedCurrency}\n </div>\n </Dropdown>\n ) : (\n selectedCurrency\n )}\n </span>\n </label>\n {errorMessage && (\n <Typography\n className=\"text-error-500 mt-1\"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {errorMessage}\n </Typography>\n )}\n </div>\n {isHovered &&\n riskDetails &&\n isRiskAnalysisOpen &&\n RiskDetailsCard && (\n <div\n role=\"tooltip\"\n tabIndex={0}\n className=\"absolute left-0 right-0 top-[95%] mt-1 z-50 bg-white dark:bg-black-600 rounded-xl\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.preventDefault()}\n onKeyDown={(e) => {\n if (e.key === \"Escape\") {\n setIsHovered(false);\n }\n }}\n >\n <RiskDetailsCard riskDetails={riskDetails} />\n </div>\n )}\n </div>\n );\n }\n);\n\nCurrencyInputField.displayName = \"CurrencyInputField\";\n","import cn from \"classnames\";\nimport { forwardRef } from \"react\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { Typography } from \"../../data-display/typography/Typography\";\n\n/**\n * Date range value type\n */\nexport interface DateRangeValue {\n /** Start date */\n startDate: Date | null;\n /** End date */\n endDate: Date | null;\n}\n\n/**\n * Props for the DateRange component\n */\nexport interface DateRangeProps {\n /** Unique identifier for the date range */\n id: string;\n /** Label text to display above the date range */\n label?: string;\n /** Current date range value */\n value?: DateRangeValue;\n /** Default date range value */\n defaultValue?: DateRangeValue;\n /** Callback function called when date range changes */\n onChange: (value: DateRangeValue) => void;\n /** Whether the date range is disabled */\n disabled?: boolean;\n /** Whether the field is required */\n required?: boolean;\n /** Message to display below the date range */\n message?: string;\n /** Type of message to display */\n messageType?: \"success\" | \"error\" | \"info\" | \"default\";\n /** Additional CSS classes for the wrapper container */\n wrapperClassName?: string;\n /** Additional CSS classes for the input containers */\n inputClassName?: string;\n /** Additional CSS classes for the label */\n labelClassName?: string;\n /** Help text to display below the label */\n helpText?: string;\n /** Size variant for the inputs */\n size?: \"small\" | \"medium\" | \"large\";\n /** Date format for display */\n dateFormat?: string;\n /** Minimum date allowed */\n minDate?: Date;\n /** Maximum date allowed */\n maxDate?: Date;\n /** Placeholder text for start date */\n startPlaceholder?: string;\n /** Placeholder text for end date */\n endPlaceholder?: string;\n /** Whether to allow clearing the selection */\n allowClear?: boolean;\n /** Additional props to pass to the input elements */\n inputProps?: React.InputHTMLAttributes<HTMLInputElement>;\n}\n\n/**\n * A highly customizable date range component with label, validation, and styling support.\n * Features proper date handling, validation, and comprehensive prop support.\n *\n * @example\n * ```tsx\n * <DateRange\n * id=\"event-dates\"\n * label=\"Event Duration\"\n * value={dateRange}\n * onChange={(range) => setDateRange(range)}\n * required\n * />\n * ```\n */\nexport const DateRange2 = forwardRef<HTMLDivElement, DateRangeProps>(\n (\n {\n id,\n label,\n value,\n defaultValue,\n onChange,\n disabled = false,\n required = false,\n message,\n messageType = \"default\",\n wrapperClassName,\n inputClassName,\n labelClassName,\n helpText,\n size = \"medium\",\n minDate,\n maxDate,\n startPlaceholder = \"Start date\",\n endPlaceholder = \"End date\",\n allowClear = true,\n inputProps,\n },\n ref\n ) => {\n // Use controlled value if provided, otherwise use defaultValue\n const currentValue =\n value !== undefined\n ? value\n : defaultValue || { startDate: null, endDate: null };\n\n // Size-based styling\n const getSizeClasses = () => {\n switch (size) {\n case \"small\":\n return {\n height: \"h-7\",\n padding: \"px-2 py-1\",\n fontSize: \"text-xs\",\n };\n case \"large\":\n return {\n height: \"h-10\",\n padding: \"px-4 py-2\",\n fontSize: \"text-base\",\n };\n default:\n return {\n height: \"h-8\",\n padding: \"px-3 py-1.5\",\n fontSize: \"text-sm\",\n };\n }\n };\n\n // Border styling based on message type\n const getBorderClasses = (): string => {\n if (messageType === \"error\") {\n return \"border-red-300 focus:border-red-500 focus:ring-red-200 dark:focus:ring-red-400/20\";\n }\n if (messageType === \"success\") {\n return \"border-green-300 focus:border-green-500 focus:ring-green-200 dark:focus:ring-green-400/20\";\n }\n if (messageType === \"info\") {\n return \"border-blue-300 focus:border-blue-500 focus:ring-blue-200 dark:focus:ring-blue-400/20\";\n }\n return \"border-neutral-300 dark:border-neutral-600 focus:border-primary-500 dark:focus:border-primary-400 focus:ring-primary-200 dark:focus:ring-primary-400/20\";\n };\n\n // Message typography class\n const getMessageTypographyClass = (): string => {\n if (messageType === \"error\") return \"text-red-500 dark:text-red-400\";\n if (messageType === \"success\")\n return \"text-green-500 dark:text-green-400\";\n if (messageType === \"info\") return \"text-blue-500 dark:text-blue-400\";\n return \"text-neutral-500 dark:text-neutral-400\";\n };\n\n // Label typography size based on input size\n const getLabelSize = (): \"extra-small\" | \"small\" | \"medium\" => {\n switch (size) {\n case \"small\":\n return \"extra-small\";\n case \"large\":\n return \"medium\";\n default:\n return \"small\";\n }\n };\n\n // Format date for input value\n const formatDateForInput = (date: Date | null): string => {\n if (!date) return \"\";\n\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n\n return `${year}-${month}-${day}`;\n };\n\n // Parse input value to date\n const parseInputDate = (value: string): Date | null => {\n if (!value) return null;\n const date = new Date(value);\n return isNaN(date.getTime()) ? null : date;\n };\n\n // Handle start date change\n const handleStartDateChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newStartDate = parseInputDate(e.target.value);\n onChange({\n startDate: newStartDate,\n endDate: currentValue.endDate,\n });\n };\n\n // Handle end date change\n const handleEndDateChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const newEndDate = parseInputDate(e.target.value);\n onChange({\n startDate: currentValue.startDate,\n endDate: newEndDate,\n });\n };\n\n // Handle clear\n const handleClear = () => {\n onChange({ startDate: null, endDate: null });\n };\n\n // Format min/max dates for input\n const formatMinMaxDate = (date: Date | undefined): string | undefined => {\n return date ? formatDateForInput(date) : undefined;\n };\n\n const sizeClasses = getSizeClasses();\n\n return (\n <div className={cn(\"flex flex-col w-full\", wrapperClassName)} ref={ref}>\n {/* Label */}\n {label && (\n <label\n htmlFor={`${id}-start`}\n className={cn(\n \"mb-1 text-xs font-medium text-gray-600 dark:text-gray-300 inline-flex items-center gap-1\",\n labelClassName\n )}\n >\n <div className=\"flex flex-wrap items-center justify-between w-full\">\n <div className=\"inline-flex flex-wrap items-center gap-1\">\n <Typography\n variant=\"medium\"\n size={getLabelSize()}\n appearance=\"subtitle\"\n >\n {label}\n {required && <span className=\"text-red-500 ml-1\">*</span>}\n </Typography>\n </div>\n </div>\n </label>\n )}\n\n {/* Help text */}\n {helpText && (\n <Typography\n className=\"mb-2 text-neutral-600 dark:text-neutral-400\"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"regular\"\n >\n {helpText}\n </Typography>\n )}\n\n {/* Date Range Inputs */}\n <div className=\"flex items-center gap-2\">\n {/* Start Date Input */}\n <div className=\"flex-1\">\n <input\n {...inputProps}\n id={`${id}-start`}\n type=\"date\"\n value={formatDateForInput(currentValue.startDate)}\n onChange={handleStartDateChange}\n disabled={disabled}\n required={required}\n min={formatMinMaxDate(minDate)}\n max={formatMinMaxDate(maxDate)}\n placeholder={startPlaceholder}\n className={cn(\n // Base styles\n \"border rounded-md bg-white dark:bg-neutral-800 block w-full font-medium text-neutral-900 dark:text-neutral-100\",\n \"transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2\",\n\n // Size classes\n sizeClasses.height,\n sizeClasses.padding,\n sizeClasses.fontSize,\n\n // Border and focus styles\n getBorderClasses(),\n\n // Disabled styles\n disabled &&\n \"opacity-50 cursor-not-allowed bg-neutral-50 dark:bg-neutral-700\",\n\n // Custom classes\n inputClassName\n )}\n aria-required={required}\n aria-invalid={\n message && messageType === \"error\" ? \"true\" : \"false\"\n }\n aria-describedby={\n message || helpText ? `${id}-description` : undefined\n }\n />\n </div>\n\n {/* Separator */}\n <div className=\"flex-shrink-0 text-neutral-500 dark:text-neutral-400\">\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M18 12H6\"\n />\n </svg>\n </div>\n\n {/* End Date Input */}\n <div className=\"flex-1\">\n <input\n {...inputProps}\n id={`${id}-end`}\n type=\"date\"\n value={formatDateForInput(currentValue.endDate)}\n onChange={handleEndDateChange}\n disabled={disabled}\n required={required}\n min={formatMinMaxDate(currentValue.startDate || minDate)}\n max={formatMinMaxDate(maxDate)}\n placeholder={endPlaceholder}\n className={cn(\n // Base styles\n \"border rounded-md bg-white dark:bg-neutral-800 block w-full font-medium text-neutral-900 dark:text-neutral-100\",\n \"transition-colors duration-200 ease-in-out focus:outline-none focus:ring-2\",\n\n // Size classes\n sizeClasses.height,\n sizeClasses.padding,\n sizeClasses.fontSize,\n\n // Border and focus styles\n getBorderClasses(),\n\n // Disabled styles\n disabled &&\n \"opacity-50 cursor-not-allowed bg-neutral-50 dark:bg-neutral-700\",\n\n // Custom classes\n inputClassName\n )}\n aria-required={required}\n aria-invalid={\n message && messageType === \"error\" ? \"true\" : \"false\"\n }\n aria-describedby={\n message || helpText ? `${id}-description` : undefined\n }\n />\n </div>\n\n {/* Clear Button */}\n {allowClear &&\n (currentValue.startDate || currentValue.endDate) &&\n !disabled && (\n <button\n type=\"button\"\n onClick={handleClear}\n className=\"flex-shrink-0 p-1 text-neutral-500 hover:text-neutral-700 dark:text-neutral-400 dark:hover:text-neutral-200 transition-colors\"\n aria-label=\"Clear date range\"\n >\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M6 18L18 6M6 6l12 12\"\n />\n </svg>\n </button>\n )}\n </div>\n\n {/* Calendar Icon */}\n <div className=\"absolute right-3 top-1/2 transform -translate-y-1/2 pointer-events-none text-neutral-400 dark:text-neutral-500\">\n <svg\n className=\"w-4 h-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z\"\n />\n </svg>\n </div>\n\n {/* Message */}\n <AnimatePresence>\n {message && (\n <motion.div\n initial={{ opacity: 0, y: -10 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -10 }}\n transition={{ duration: 0.2 }}\n id={`${id}-description`}\n role={messageType === \"error\" ? \"alert\" : undefined}\n >\n <Typography\n className={cn(\"mt-1\", getMessageTypographyClass())}\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {message}\n </Typography>\n </motion.div>\n )}\n </AnimatePresence>\n\n {/* Help text description for accessibility */}\n {helpText && !message && (\n <div id={`${id}-description`} className=\"sr-only\">\n {helpText}\n </div>\n )}\n </div>\n );\n }\n);\n\nDateRange2.displayName = \"DateRange2\";\n","!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs=e()}(this,(function(){\"use strict\";var t=1e3,e=6e4,n=36e5,r=\"millisecond\",i=\"second\",s=\"minute\",u=\"hour\",a=\"day\",o=\"week\",c=\"month\",f=\"quarter\",h=\"year\",d=\"date\",l=\"Invalid Date\",$=/^(\\d{4})[-/]?(\\d{1,2})?[-/]?(\\d{0,2})[Tt\\s]*(\\d{1,2})?:?(\\d{1,2})?:?(\\d{1,2})?[.:]?(\\d+)?$/,y=/\\[([^\\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g,M={name:\"en\",weekdays:\"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday\".split(\"_\"),months:\"January_February_March_April_May_June_July_August_September_October_November_December\".split(\"_\"),ordinal:function(t){var e=[\"th\",\"st\",\"nd\",\"rd\"],n=t%100;return\"[\"+t+(e[(n-20)%10]||e[n]||e[0])+\"]\"}},m=function(t,e,n){var r=String(t);return!r||r.length>=e?t:\"\"+Array(e+1-r.length).join(n)+t},v={s:m,z:function(t){var e=-t.utcOffset(),n=Math.abs(e),r=Math.floor(n/60),i=n%60;return(e<=0?\"+\":\"-\")+m(r,2,\"0\")+\":\"+m(i,2,\"0\")},m:function t(e,n){if(e.date()<n.date())return-t(n,e);var r=12*(n.year()-e.year())+(n.month()-e.month()),i=e.clone().add(r,c),s=n-i<0,u=e.clone().add(r+(s?-1:1),c);return+(-(r+(n-i)/(s?i-u:u-i))||0)},a:function(t){return t<0?Math.ceil(t)||0:Math.floor(t)},p:function(t){return{M:c,y:h,w:o,d:a,D:d,h:u,m:s,s:i,ms:r,Q:f}[t]||String(t||\"\").toLowerCase().replace(/s$/,\"\")},u:function(t){return void 0===t}},g=\"en\",D={};D[g]=M;var p=\"$isDayjsObject\",S=function(t){return t instanceof _||!(!t||!t[p])},w=function t(e,n,r){var i;if(!e)return g;if(\"string\"==typeof e){var s=e.toLowerCase();D[s]&&(i=s),n&&(D[s]=n,i=s);var u=e.split(\"-\");if(!i&&u.length>1)return t(u[0])}else{var a=e.name;D[a]=e,i=a}return!r&&i&&(g=i),i||!r&&g},O=function(t,e){if(S(t))return t.clone();var n=\"object\"==typeof e?e:{};return n.date=t,n.args=arguments,new _(n)},b=v;b.l=w,b.i=S,b.w=function(t,e){return O(t,{locale:e.$L,utc:e.$u,x:e.$x,$offset:e.$offset})};var _=function(){function M(t){this.$L=w(t.locale,null,!0),this.parse(t),this.$x=this.$x||t.x||{},this[p]=!0}var m=M.prototype;return m.parse=function(t){this.$d=function(t){var e=t.date,n=t.utc;if(null===e)return new Date(NaN);if(b.u(e))return new Date;if(e instanceof Date)return new Date(e);if(\"string\"==typeof e&&!/Z$/i.test(e)){var r=e.match($);if(r){var i=r[2]-1||0,s=(r[7]||\"0\").substring(0,3);return n?new Date(Date.UTC(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)):new Date(r[1],i,r[3]||1,r[4]||0,r[5]||0,r[6]||0,s)}}return new Date(e)}(t),this.init()},m.init=function(){var t=this.$d;this.$y=t.getFullYear(),this.$M=t.getMonth(),this.$D=t.getDate(),this.$W=t.getDay(),this.$H=t.getHours(),this.$m=t.getMinutes(),this.$s=t.getSeconds(),this.$ms=t.getMilliseconds()},m.$utils=function(){return b},m.isValid=function(){return!(this.$d.toString()===l)},m.isSame=function(t,e){var n=O(t);return this.startOf(e)<=n&&n<=this.endOf(e)},m.isAfter=function(t,e){return O(t)<this.startOf(e)},m.isBefore=function(t,e){return this.endOf(e)<O(t)},m.$g=function(t,e,n){return b.u(t)?this[e]:this.set(n,t)},m.unix=function(){return Math.floor(this.valueOf()/1e3)},m.valueOf=function(){return this.$d.getTime()},m.startOf=function(t,e){var n=this,r=!!b.u(e)||e,f=b.p(t),l=function(t,e){var i=b.w(n.$u?Date.UTC(n.$y,e,t):new Date(n.$y,e,t),n);return r?i:i.endOf(a)},$=function(t,e){return b.w(n.toDate()[t].apply(n.toDate(\"s\"),(r?[0,0,0,0]:[23,59,59,999]).slice(e)),n)},y=this.$W,M=this.$M,m=this.$D,v=\"set\"+(this.$u?\"UTC\":\"\");switch(f){case h:return r?l(1,0):l(31,11);case c:return r?l(1,M):l(0,M+1);case o:var g=this.$locale().weekStart||0,D=(y<g?y+7:y)-g;return l(r?m-D:m+(6-D),M);case a:case d:return $(v+\"Hours\",0);case u:return $(v+\"Minutes\",1);case s:return $(v+\"Seconds\",2);case i:return $(v+\"Milliseconds\",3);default:return this.clone()}},m.endOf=function(t){return this.startOf(t,!1)},m.$set=function(t,e){var n,o=b.p(t),f=\"set\"+(this.$u?\"UTC\":\"\"),l=(n={},n[a]=f+\"Date\",n[d]=f+\"Date\",n[c]=f+\"Month\",n[h]=f+\"FullYear\",n[u]=f+\"Hours\",n[s]=f+\"Minutes\",n[i]=f+\"Seconds\",n[r]=f+\"Milliseconds\",n)[o],$=o===a?this.$D+(e-this.$W):e;if(o===c||o===h){var y=this.clone().set(d,1);y.$d[l]($),y.init(),this.$d=y.set(d,Math.min(this.$D,y.daysInMonth())).$d}else l&&this.$d[l]($);return this.init(),this},m.set=function(t,e){return this.clone().$set(t,e)},m.get=function(t){return this[b.p(t)]()},m.add=function(r,f){var d,l=this;r=Number(r);var $=b.p(f),y=function(t){var e=O(l);return b.w(e.date(e.date()+Math.round(t*r)),l)};if($===c)return this.set(c,this.$M+r);if($===h)return this.set(h,this.$y+r);if($===a)return y(1);if($===o)return y(7);var M=(d={},d[s]=e,d[u]=n,d[i]=t,d)[$]||1,m=this.$d.getTime()+r*M;return b.w(m,this)},m.subtract=function(t,e){return this.add(-1*t,e)},m.format=function(t){var e=this,n=this.$locale();if(!this.isValid())return n.invalidDate||l;var r=t||\"YYYY-MM-DDTHH:mm:ssZ\",i=b.z(this),s=this.$H,u=this.$m,a=this.$M,o=n.weekdays,c=n.months,f=n.meridiem,h=function(t,n,i,s){return t&&(t[n]||t(e,r))||i[n].slice(0,s)},d=function(t){return b.s(s%12||12,t,\"0\")},$=f||function(t,e,n){var r=t<12?\"AM\":\"PM\";return n?r.toLowerCase():r};return r.replace(y,(function(t,r){return r||function(t){switch(t){case\"YY\":return String(e.$y).slice(-2);case\"YYYY\":return b.s(e.$y,4,\"0\");case\"M\":return a+1;case\"MM\":return b.s(a+1,2,\"0\");case\"MMM\":return h(n.monthsShort,a,c,3);case\"MMMM\":return h(c,a);case\"D\":return e.$D;case\"DD\":return b.s(e.$D,2,\"0\");case\"d\":return String(e.$W);case\"dd\":return h(n.weekdaysMin,e.$W,o,2);case\"ddd\":return h(n.weekdaysShort,e.$W,o,3);case\"dddd\":return o[e.$W];case\"H\":return String(s);case\"HH\":return b.s(s,2,\"0\");case\"h\":return d(1);case\"hh\":return d(2);case\"a\":return $(s,u,!0);case\"A\":return $(s,u,!1);case\"m\":return String(u);case\"mm\":return b.s(u,2,\"0\");case\"s\":return String(e.$s);case\"ss\":return b.s(e.$s,2,\"0\");case\"SSS\":return b.s(e.$ms,3,\"0\");case\"Z\":return i}return null}(t)||i.replace(\":\",\"\")}))},m.utcOffset=function(){return 15*-Math.round(this.$d.getTimezoneOffset()/15)},m.diff=function(r,d,l){var $,y=this,M=b.p(d),m=O(r),v=(m.utcOffset()-this.utcOffset())*e,g=this-m,D=function(){return b.m(y,m)};switch(M){case h:$=D()/12;break;case c:$=D();break;case f:$=D()/3;break;case o:$=(g-v)/6048e5;break;case a:$=(g-v)/864e5;break;case u:$=g/n;break;case s:$=g/e;break;case i:$=g/t;break;default:$=g}return l?$:b.a($)},m.daysInMonth=function(){return this.endOf(c).$D},m.$locale=function(){return D[this.$L]},m.locale=function(t,e){if(!t)return this.$L;var n=this.clone(),r=w(t,e,!0);return r&&(n.$L=r),n},m.clone=function(){return b.w(this.$d,this)},m.toDate=function(){return new Date(this.valueOf())},m.toJSON=function(){return this.isValid()?this.toISOString():null},m.toISOString=function(){return this.$d.toISOString()},m.toString=function(){return this.$d.toUTCString()},M}(),k=_.prototype;return O.prototype=k,[[\"$ms\",r],[\"$s\",i],[\"$m\",s],[\"$H\",u],[\"$W\",a],[\"$M\",c],[\"$y\",h],[\"$D\",d]].forEach((function(t){k[t[1]]=function(e){return this.$g(e,t[0],t[1])}})),O.extend=function(t,e){return t.$i||(t(e,_,O),t.$i=!0),O},O.locale=w,O.isDayjs=S,O.unix=function(t){return O(1e3*t)},O.en=D[g],O.Ls=D,O.p={},O}));","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { DatePicker } from \"antd\";\nimport cn from \"classnames\";\nimport dayjs from \"dayjs\";\nimport { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Required } from \"../../icons/Required\";\nimport { BiCalendar } from \"react-icons/bi\";\nimport { BsDash } from \"react-icons/bs\";\nimport IconButton from \"../../button/IconButton\";\n\nconst { RangePicker } = DatePicker;\n\n// Keyboard keys constant\nconst KEYBOARD_KEYS = {\n ENTER: \"Enter\",\n} as const;\n\n/**\n * Generate a short UUID\n */\nconst generateShortUUID = (): string => {\n return Math.random().toString(36).substring(2, 9);\n};\n\n/**\n * Hook to add event listeners\n */\nconst useEventListener = <K extends keyof DocumentEventMap>(\n eventName: K,\n handler: (event: DocumentEventMap[K]) => void\n) => {\n const savedHandler = useRef(handler);\n\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const eventListener = (event: DocumentEventMap[K]) =>\n savedHandler.current(event);\n document.addEventListener(eventName, eventListener);\n return () => {\n document.removeEventListener(eventName, eventListener);\n };\n }, [eventName]);\n};\n\n/**\n * Props for the DateRange component\n * Matches the lax-web-portal implementation for drop-in replacement\n */\nexport type TDateRangeProps = {\n /** Unique identifier for the date range */\n id: string;\n /** Label text to display above the date range */\n label?: string;\n /** Start date value (ISO string or formatted date string) */\n startDate: string;\n /** End date value (ISO string or formatted date string) */\n endDate: string;\n /** Callback function called when date range changes */\n onChange(data: any): void;\n /** Callback function called when calendar selection changes */\n onCalendarChange?(data: any): void;\n /** Whether the field is required */\n required?: boolean;\n /** Error message to display below the date range */\n errorMessage?: string;\n /** Additional CSS classes for the wrapper */\n className?: string;\n /** Whether the date range is disabled */\n disabled?: boolean;\n /** Custom date format */\n dateFormat?: string;\n /** Whether popup should render inside parent element */\n shouldPopOnParent?: boolean;\n /** Custom function to get popup container */\n getPopupContainer?: (trigger: HTMLElement | null) => HTMLElement;\n /** Maximum date range in days */\n maxDateRange?: number;\n /** Whether the picker is open */\n open?: boolean;\n /** Callback function called when open state changes */\n onOpenChange?(open: boolean): void;\n /** Placement of the dropdown */\n placement?: \"bottomLeft\" | \"bottomRight\" | \"topLeft\" | \"topRight\";\n /** Whether to render as an icon button that triggers the date picker */\n renderAsIconButton?: boolean;\n /** Additional CSS classes for the icon button */\n iconButtonClassName?: string;\n /** Additional CSS classes for the calendar icon inside the button */\n iconClassName?: string;\n};\n\n/**\n * A date range picker component with label, validation, and styling support.\n * Features proper date handling, validation, and comprehensive prop support.\n * Built on top of Ant Design's RangePicker for advanced functionality.\n *\n * This component is designed as a drop-in replacement for the lax-web-portal\n * DateRange component.\n *\n * @example\n * ```tsx\n * <DateRange\n * id=\"event-dates\"\n * label=\"Event Duration\"\n * startDate={startDate}\n * endDate={endDate}\n * onChange={(dates) => {\n * setStartDate(dates[0]);\n * setEndDate(dates[1]);\n * }}\n * required\n * />\n * ```\n */\nexport const DateRange = ({\n onCalendarChange = undefined,\n onChange,\n required,\n label,\n startDate,\n endDate,\n errorMessage,\n className,\n id,\n disabled = false,\n dateFormat,\n shouldPopOnParent = true,\n getPopupContainer: customGetPopupContainer,\n maxDateRange,\n open,\n onOpenChange,\n placement = \"bottomLeft\",\n renderAsIconButton = false,\n iconButtonClassName,\n iconClassName,\n}: TDateRangeProps) => {\n const [isOpen, setIsOpen] = useState(false);\n const pickerRef = useRef<any>(null);\n\n const parseDate = (str: string | number | Date | dayjs.Dayjs) => {\n if (!str) return null;\n return dayjs(str);\n };\n\n const START_ID = `date-range-start-${generateShortUUID()}`;\n const END_ID = `date-range-end-${generateShortUUID()}`;\n\n const handleIconClick = () => {\n setIsOpen(true);\n setTimeout(() => {\n if (pickerRef.current) {\n pickerRef.current.focus();\n }\n }, 0);\n };\n\n useEventListener(\"keydown\", (e: KeyboardEvent) => {\n if (\n e.key === KEYBOARD_KEYS.ENTER &&\n document.activeElement instanceof HTMLInputElement\n ) {\n if (document?.activeElement?.id === START_ID) {\n const date = dayjs(document?.activeElement?.value);\n if (date.isValid()) {\n onChange([date, parseDate(endDate)]);\n }\n }\n if (document?.activeElement?.id === END_ID) {\n const date = dayjs(document?.activeElement?.value);\n if (date.isValid()) {\n onChange([parseDate(startDate), date]);\n }\n }\n }\n });\n\n const disabledDate = useCallback(\n (current: dayjs.Dayjs) => {\n const [start, end] = [parseDate(startDate), parseDate(endDate)];\n\n if (!maxDateRange) return false;\n\n if (start) {\n return (\n current.isBefore(start.startOf(\"day\")) ||\n current.isAfter(start.add(maxDateRange, \"day\").endOf(\"day\"))\n );\n }\n\n if (end) {\n return (\n current.isBefore(end.subtract(maxDateRange, \"day\").startOf(\"day\")) ||\n current.isAfter(end.endOf(\"day\"))\n );\n }\n\n return false;\n },\n [startDate, endDate, maxDateRange]\n );\n\n if (renderAsIconButton) {\n return (\n <div id={id} className={className}>\n <IconButton\n onClick={handleIconClick}\n disabled={disabled}\n variant=\"default\"\n className={iconButtonClassName}\n >\n <BiCalendar className={cn(\"w-5 h-5\", iconClassName)} />\n </IconButton>\n <RangePicker\n ref={pickerRef}\n onChange={(dates) => {\n onChange(dates);\n setIsOpen(false);\n }}\n onCalendarChange={onCalendarChange}\n value={[parseDate(startDate), parseDate(endDate)]}\n id={{ start: START_ID, end: END_ID }}\n allowClear\n format={dateFormat ? dateFormat : \"DD MMM, YYYY\"}\n separator={<BsDash className=\"dark:text-gray-100\" />}\n suffixIcon={<BiCalendar className=\"dark:text-gray-100\" />}\n getPopupContainer={\n customGetPopupContainer\n ? customGetPopupContainer\n : shouldPopOnParent\n ? (trigger) => trigger.parentElement as HTMLElement\n : () => document.body\n }\n disabled={disabled}\n disabledDate={maxDateRange ? disabledDate : undefined}\n autoComplete=\"off\"\n open={isOpen}\n onOpenChange={setIsOpen}\n placement={placement}\n style={{ position: \"absolute\", opacity: 0, pointerEvents: \"none\", width: 0, height: 0 }}\n />\n </div>\n );\n }\n\n return (\n <div id={id} className={cn(\"flex flex-col\", className)}>\n <label\n id=\"date\"\n htmlFor=\"text\"\n className={cn(\n \"block text-xs capitalize font-medium leading-5 font-inter font-xs text-gray-600 dark:text-gray-300\",\n )}\n >\n {label}\n {required && <Required />}\n </label>\n <RangePicker\n onChange={onChange}\n onCalendarChange={onCalendarChange}\n value={[parseDate(startDate), parseDate(endDate)]}\n id={{ start: START_ID, end: END_ID }}\n allowClear\n format={dateFormat ? dateFormat : \"DD MMM, YYYY\"}\n separator={\n <BsDash className='dark:text-gray-100' />\n }\n suffixIcon={\n <BiCalendar className='dark:text-gray-100' />\n }\n getPopupContainer={\n customGetPopupContainer\n ? customGetPopupContainer\n : shouldPopOnParent\n ? (trigger) => trigger.parentElement as HTMLElement\n : () => document.body\n }\n disabled={disabled}\n disabledDate={maxDateRange ? disabledDate : undefined}\n open={open}\n onOpenChange={onOpenChange}\n autoComplete=\"off\"\n placement={placement}\n />\n {errorMessage && (\n <p\n className={cn(\n \"text-sm font-inter font-normal text-left pt-[6px]\",\n \"text-red-500\"\n )}\n >\n {errorMessage}\n </p>\n )}\n </div>\n );\n};\n\nDateRange.displayName = \"DateRange\";\n\n","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_customParseFormat=t()}(this,(function(){\"use strict\";var e={LTS:\"h:mm:ss A\",LT:\"h:mm A\",L:\"MM/DD/YYYY\",LL:\"MMMM D, YYYY\",LLL:\"MMMM D, YYYY h:mm A\",LLLL:\"dddd, MMMM D, YYYY h:mm A\"},t=/(\\[[^[]*\\])|([-_:/.,()\\s]+)|(A|a|Q|YYYY|YY?|ww?|MM?M?M?|Do|DD?|hh?|HH?|mm?|ss?|S{1,3}|z|ZZ?)/g,n=/\\d/,r=/\\d\\d/,i=/\\d\\d?/,o=/\\d*[^-_:/,()\\s\\d]+/,s={},a=function(e){return(e=+e)+(e>68?1900:2e3)};var f=function(e){return function(t){this[e]=+t}},h=[/[+-]\\d\\d:?(\\d\\d)?|Z/,function(e){(this.zone||(this.zone={})).offset=function(e){if(!e)return 0;if(\"Z\"===e)return 0;var t=e.match(/([+-]|\\d\\d)/g),n=60*t[1]+(+t[2]||0);return 0===n?0:\"+\"===t[0]?-n:n}(e)}],u=function(e){var t=s[e];return t&&(t.indexOf?t:t.s.concat(t.f))},d=function(e,t){var n,r=s.meridiem;if(r){for(var i=1;i<=24;i+=1)if(e.indexOf(r(i,0,t))>-1){n=i>12;break}}else n=e===(t?\"pm\":\"PM\");return n},c={A:[o,function(e){this.afternoon=d(e,!1)}],a:[o,function(e){this.afternoon=d(e,!0)}],Q:[n,function(e){this.month=3*(e-1)+1}],S:[n,function(e){this.milliseconds=100*+e}],SS:[r,function(e){this.milliseconds=10*+e}],SSS:[/\\d{3}/,function(e){this.milliseconds=+e}],s:[i,f(\"seconds\")],ss:[i,f(\"seconds\")],m:[i,f(\"minutes\")],mm:[i,f(\"minutes\")],H:[i,f(\"hours\")],h:[i,f(\"hours\")],HH:[i,f(\"hours\")],hh:[i,f(\"hours\")],D:[i,f(\"day\")],DD:[r,f(\"day\")],Do:[o,function(e){var t=s.ordinal,n=e.match(/\\d+/);if(this.day=n[0],t)for(var r=1;r<=31;r+=1)t(r).replace(/\\[|\\]/g,\"\")===e&&(this.day=r)}],w:[i,f(\"week\")],ww:[r,f(\"week\")],M:[i,f(\"month\")],MM:[r,f(\"month\")],MMM:[o,function(e){var t=u(\"months\"),n=(u(\"monthsShort\")||t.map((function(e){return e.slice(0,3)}))).indexOf(e)+1;if(n<1)throw new Error;this.month=n%12||n}],MMMM:[o,function(e){var t=u(\"months\").indexOf(e)+1;if(t<1)throw new Error;this.month=t%12||t}],Y:[/[+-]?\\d+/,f(\"year\")],YY:[r,function(e){this.year=a(e)}],YYYY:[/\\d{4}/,f(\"year\")],Z:h,ZZ:h};function l(n){var r,i;r=n,i=s&&s.formats;for(var o=(n=r.replace(/(\\[[^\\]]+])|(LTS?|l{1,4}|L{1,4})/g,(function(t,n,r){var o=r&&r.toUpperCase();return n||i[r]||e[r]||i[o].replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(e,t,n){return t||n.slice(1)}))}))).match(t),a=o.length,f=0;f<a;f+=1){var h=o[f],u=c[h],d=u&&u[0],l=u&&u[1];o[f]=l?{regex:d,parser:l}:h.replace(/^\\[|\\]$/g,\"\")}return function(e){for(var t={},n=0,r=0;n<a;n+=1){var i=o[n];if(\"string\"==typeof i)r+=i.length;else{var s=i.regex,f=i.parser,h=e.slice(r),u=s.exec(h)[0];f.call(t,u),e=e.replace(u,\"\")}}return function(e){var t=e.afternoon;if(void 0!==t){var n=e.hours;t?n<12&&(e.hours+=12):12===n&&(e.hours=0),delete e.afternoon}}(t),t}}return function(e,t,n){n.p.customParseFormat=!0,e&&e.parseTwoDigitYear&&(a=e.parseTwoDigitYear);var r=t.prototype,i=r.parse;r.parse=function(e){var t=e.date,r=e.utc,o=e.args;this.$u=r;var a=o[1];if(\"string\"==typeof a){var f=!0===o[2],h=!0===o[3],u=f||h,d=o[2];h&&(d=o[2]),s=this.$locale(),!f&&d&&(s=n.Ls[d]),this.$d=function(e,t,n,r){try{if([\"x\",\"X\"].indexOf(t)>-1)return new Date((\"X\"===t?1e3:1)*e);var i=l(t)(e),o=i.year,s=i.month,a=i.day,f=i.hours,h=i.minutes,u=i.seconds,d=i.milliseconds,c=i.zone,m=i.week,M=new Date,Y=a||(o||s?1:M.getDate()),p=o||M.getFullYear(),v=0;o&&!s||(v=s>0?s-1:M.getMonth());var D,w=f||0,g=h||0,y=u||0,L=d||0;return c?new Date(Date.UTC(p,v,Y,w,g,y,L+60*c.offset*1e3)):n?new Date(Date.UTC(p,v,Y,w,g,y,L)):(D=new Date(p,v,Y,w,g,y,L),m&&(D=r(D).week(m).toDate()),D)}catch(e){return new Date(\"\")}}(t,a,r,n),this.init(),d&&!0!==d&&(this.$L=this.locale(d).$L),u&&t!=this.format(a)&&(this.$d=new Date(\"\")),s={}}else if(a instanceof Array)for(var c=a.length,m=1;m<=c;m+=1){o[1]=a[m-1];var M=n.apply(this,o);if(M.isValid()){this.$d=M.$d,this.$L=M.$L,this.init();break}m===c&&(this.$d=new Date(\"\"))}else i.call(this,e)}}}));","!function(n,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define(e):(n=\"undefined\"!=typeof globalThis?globalThis:n||self).dayjs_plugin_localeData=e()}(this,(function(){\"use strict\";return function(n,e,t){var r=e.prototype,o=function(n){return n&&(n.indexOf?n:n.s)},u=function(n,e,t,r,u){var i=n.name?n:n.$locale(),a=o(i[e]),s=o(i[t]),f=a||s.map((function(n){return n.slice(0,r)}));if(!u)return f;var d=i.weekStart;return f.map((function(n,e){return f[(e+(d||0))%7]}))},i=function(){return t.Ls[t.locale()]},a=function(n,e){return n.formats[e]||function(n){return n.replace(/(\\[[^\\]]+])|(MMMM|MM|DD|dddd)/g,(function(n,e,t){return e||t.slice(1)}))}(n.formats[e.toUpperCase()])},s=function(){var n=this;return{months:function(e){return e?e.format(\"MMMM\"):u(n,\"months\")},monthsShort:function(e){return e?e.format(\"MMM\"):u(n,\"monthsShort\",\"months\",3)},firstDayOfWeek:function(){return n.$locale().weekStart||0},weekdays:function(e){return e?e.format(\"dddd\"):u(n,\"weekdays\")},weekdaysMin:function(e){return e?e.format(\"dd\"):u(n,\"weekdaysMin\",\"weekdays\",2)},weekdaysShort:function(e){return e?e.format(\"ddd\"):u(n,\"weekdaysShort\",\"weekdays\",3)},longDateFormat:function(e){return a(n.$locale(),e)},meridiem:this.$locale().meridiem,ordinal:this.$locale().ordinal}};r.localeData=function(){return s.bind(this)()},t.localeData=function(){var n=i();return{firstDayOfWeek:function(){return n.weekStart||0},weekdays:function(){return t.weekdays()},weekdaysShort:function(){return t.weekdaysShort()},weekdaysMin:function(){return t.weekdaysMin()},months:function(){return t.months()},monthsShort:function(){return t.monthsShort()},longDateFormat:function(e){return a(n,e)},meridiem:n.meridiem,ordinal:n.ordinal}},t.months=function(){return u(i(),\"months\")},t.monthsShort=function(){return u(i(),\"monthsShort\",\"months\",3)},t.weekdays=function(n){return u(i(),\"weekdays\",null,null,n)},t.weekdaysShort=function(n){return u(i(),\"weekdaysShort\",\"weekdays\",3,n)},t.weekdaysMin=function(n){return u(i(),\"weekdaysMin\",\"weekdays\",2,n)}}}));","!function(t,i){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(i):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).dayjs_plugin_utc=i()}(this,(function(){\"use strict\";var t=\"minute\",i=/[+-]\\d\\d(?::?\\d\\d)?/g,e=/([+-]|\\d\\d)/g;return function(s,f,n){var u=f.prototype;n.utc=function(t){var i={date:t,utc:!0,args:arguments};return new f(i)},u.utc=function(i){var e=n(this.toDate(),{locale:this.$L,utc:!0});return i?e.add(this.utcOffset(),t):e},u.local=function(){return n(this.toDate(),{locale:this.$L,utc:!1})};var o=u.parse;u.parse=function(t){t.utc&&(this.$u=!0),this.$utils().u(t.$offset)||(this.$offset=t.$offset),o.call(this,t)};var r=u.init;u.init=function(){if(this.$u){var t=this.$d;this.$y=t.getUTCFullYear(),this.$M=t.getUTCMonth(),this.$D=t.getUTCDate(),this.$W=t.getUTCDay(),this.$H=t.getUTCHours(),this.$m=t.getUTCMinutes(),this.$s=t.getUTCSeconds(),this.$ms=t.getUTCMilliseconds()}else r.call(this)};var a=u.utcOffset;u.utcOffset=function(s,f){var n=this.$utils().u;if(n(s))return this.$u?0:n(this.$offset)?a.call(this):this.$offset;if(\"string\"==typeof s&&(s=function(t){void 0===t&&(t=\"\");var s=t.match(i);if(!s)return null;var f=(\"\"+s[0]).match(e)||[\"-\",0,0],n=f[0],u=60*+f[1]+ +f[2];return 0===u?0:\"+\"===n?u:-u}(s),null===s))return this;var u=Math.abs(s)<=16?60*s:s,o=this;if(f)return o.$offset=u,o.$u=0===s,o;if(0!==s){var r=this.$u?this.toDate().getTimezoneOffset():-1*this.utcOffset();(o=this.local().add(u+r,t)).$offset=u,o.$x.$localOffset=r}else o=this.utc();return o};var h=u.format;u.format=function(t){var i=t||(this.$u?\"YYYY-MM-DDTHH:mm:ss[Z]\":\"\");return h.call(this,i)},u.valueOf=function(){var t=this.$utils().u(this.$offset)?0:this.$offset+(this.$x.$localOffset||this.$d.getTimezoneOffset());return this.$d.valueOf()-6e4*t},u.isUTC=function(){return!!this.$u},u.toISOString=function(){return this.toDate().toISOString()},u.toString=function(){return this.toDate().toUTCString()};var l=u.toDate;u.toDate=function(t){return\"s\"===t&&this.$offset?n(this.format(\"YYYY-MM-DD HH:mm:ss:SSS\")).toDate():l.call(this)};var c=u.diff;u.diff=function(t,i,e){if(t&&this.$u===t.$u)return c.call(this,t,i,e);var s=this.local(),f=n(t).local();return c.call(s,f,i,e)}}}));","!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=\"undefined\"!=typeof globalThis?globalThis:e||self).dayjs_plugin_weekday=t()}(this,(function(){\"use strict\";return function(e,t){t.prototype.weekday=function(e){var t=this.$locale().weekStart||0,i=this.$W,n=(i<t?i+7:i)-t;return this.$utils().u(e)?n:this.subtract(n,\"day\").add(e,\"day\")}}}));","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Tooltip as AntTooltip } from \"antd\";\nimport { DatePicker, type DatePickerProps } from \"antd\";\nimport cn from \"classnames\";\nimport { useTranslation } from 'react-i18next';\nimport dayjs, { Dayjs } from \"dayjs\";\nimport customParseFormat from \"dayjs/plugin/customParseFormat\";\nimport localeData from \"dayjs/plugin/localeData\";\nimport utc from \"dayjs/plugin/utc\";\nimport weekday from \"dayjs/plugin/weekday\";\nimport { forwardRef, useCallback, useEffect, useRef, useState } from \"react\";\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport { Label } from \"../../data-display/label/Label\";\nimport type { LabelType } from \"../../data-display/label/Label\";\nimport { Required } from \"../../icons/Required\";\nimport { AIExtractedIndicator } from \"../../icons/AIExtractedIndicator\";\nimport { HelpIcon } from \"../../icons/HelpIcon\";\nimport Tooltip from \"../../tooltip/Tooltip\";\nimport { BoltOutlined, NoteAddOutlined } from \"@mui/icons-material\";\n\ndayjs.extend(utc);\ndayjs.extend(customParseFormat);\ndayjs.extend(weekday);\ndayjs.extend(localeData);\n\n// Date format constants\nexport const UNIVERSAL_DATE_FORMAT = \"MM/DD/YYYY\";\nexport const UNIVERSAL_DATETIME_FORMAT = \"MM/DD/YYYY - hh:mm A\";\n\n// ISO-like format for internal value storage (parseable by new Date() and dayjs)\nconst ISO_DATE_FORMAT = \"YYYY-MM-DD\";\nconst ISO_DATETIME_FORMAT = \"YYYY-MM-DDTHH:mm:ss\";\n\n// Keyboard keys constant\nconst KEYBOARD_KEYS = {\n ENTER: \"Enter\",\n} as const;\n\nconst FLEXIBLE_DATE_FORMATS = [\n \"MM/DD/YYYY\",\n \"M/DD/YYYY\",\n \"MM/D/YYYY\",\n \"M/D/YYYY\",\n\n \"MM/DD/YY\",\n \"M/DD/YY\",\n \"MM/D/YY\",\n \"M/D/YY\",\n\n \"YYYY-MM-DD\",\n \"YYYY-MM-DDTHH:mm:ss.SSSZ\",\n \"YYYY-MM-DDTHH:mm:ssZ\",\n];\n\nconst FLEXIBLE_DATETIME_FORMATS = [\n \"MM/DD/YYYY - hh:mm A\",\n \"M/DD/YYYY - hh:mm A\",\n \"MM/D/YYYY - hh:mm A\",\n \"M/D/YYYY - hh:mm A\",\n \"MM/DD/YYYY hh:mm A\",\n \"M/DD/YYYY hh:mm A\",\n \"MM/D/YYYY hh:mm A\",\n \"M/D/YYYY hh:mm A\",\n \"MM/DD/YYYY HH:mm\",\n \"M/DD/YYYY HH:mm\",\n \"MM/D/YYYY HH:mm\",\n \"M/D/YYYY HH:mm\",\n\n \"MM/DD/YY - hh:mm A\",\n \"M/DD/YY - hh:mm A\",\n \"MM/D/YY - hh:mm A\",\n \"M/D/YY - hh:mm A\",\n \"MM/DD/YY hh:mm A\",\n \"M/DD/YY hh:mm A\",\n \"MM/D/YY hh:mm A\",\n \"M/D/YY hh:mm A\",\n \"MM/DD/YY HH:mm\",\n \"M/DD/YY HH:mm\",\n \"MM/D/YY HH:mm\",\n \"M/D/YY HH:mm\",\n\n ...FLEXIBLE_DATE_FORMATS,\n\n \"YYYY-MM-DDTHH:mm:ss.SSSZ\",\n \"YYYY-MM-DDTHH:mm:ssZ\",\n];\n\n/**\n * Generate a short UUID\n */\nconst generateShortUUID = (): string => {\n return Math.random().toString(36).substring(2, 9);\n};\n\n/**\n * Try to parse a date string using multiple flexible formats\n * Handles single-digit months/days and 2-digit years\n */\nconst tryParseFlexibleDate = (\n dateStr: string,\n withTime: boolean = false\n): Dayjs | null => {\n if (!dateStr) return null;\n\n const formats = withTime ? FLEXIBLE_DATETIME_FORMATS : FLEXIBLE_DATE_FORMATS;\n\n // First try with explicit formats\n for (const format of formats) {\n const parsed = dayjs(dateStr, format, true); // strict mode\n if (parsed.isValid()) {\n return parsed;\n }\n }\n\n // Fallback to dayjs default parsing (handles ISO strings, etc.)\n const defaultParsed = dayjs(dateStr);\n if (defaultParsed.isValid()) {\n return defaultParsed;\n }\n\n return null;\n};\n\n/**\n * Risk details interface\n */\nexport interface RiskDetails {\n color?: string;\n description?: string;\n hexBgColor?: string;\n hexBorderColor?: string;\n [key: string]: any;\n}\n\n/**\n * Risk details card component props - generic to allow consumer-specific risk types\n */\nexport interface RiskDetailsCardProps<T = any> {\n riskDetails: T;\n maxWidth?: string;\n showAllRisksSuggestions?: boolean;\n}\n\n/**\n * Props for the DateTimeField component\n */\nexport interface DateTimeFieldProps\n extends Omit<DatePickerProps, \"onChange\" | \"value\"> {\n /** The label text to display above the date picker */\n label?: string;\n /** Current value of the date picker (ISO string or formatted date string) */\n value?: string;\n /** Additional CSS classes for the wrapper */\n className?: string;\n /** Whether the field is required */\n required?: boolean;\n /** Whether the required indicator shows as conditional (yellow instead of red) */\n isRequiredConditional?: boolean;\n /** Error message to display */\n errorMessage?: string;\n /** Whether the date picker is disabled */\n disabled?: boolean;\n /** Callback function called when date changes */\n handleOnChange: (value: string | null) => void;\n /** Whether to use simple mode (minimal styling) */\n simpleMode?: boolean;\n /** Whether to show time picker */\n showTime?: boolean;\n /** Custom date format */\n dateFormat?: string;\n /** Tooltip text for the help icon */\n tooltip?: string;\n /** Tags to display with the label */\n tags?: (string | LabelType)[];\n /** Whether to preserve original case in the label */\n originalCase?: boolean;\n /** Whether the value was AI extracted */\n isAiExtracted?: boolean;\n /** Whether this is a GTN (Global Term Name) field */\n isGTN?: boolean;\n /** GTN name for the field */\n gtnName?: any;\n /** Whether to allow timezone conversion */\n allowTimezoneConversion?: boolean;\n /** Whether to allow copying */\n allowCopy?: boolean;\n /** Unique identifier for the date picker */\n id: string;\n /** Date picker type */\n picker?: \"date\" | \"week\" | \"month\" | \"quarter\" | \"year\";\n /** Whether popup should render inside parent element */\n shouldPopOnParent?: boolean;\n /** Custom inline styles for the input */\n inputStyle?: React.CSSProperties;\n /** Additional CSS classes for the label */\n labelClassName?: string;\n /** Whether this is a live field */\n isLiveField?: boolean;\n /** Risk details data */\n riskDetails?: RiskDetails;\n /** Whether risk analysis is open */\n isRiskAnalysisOpen?: boolean;\n /** Custom risk details card component */\n RiskDetailsCard?: React.ComponentType<RiskDetailsCardProps<any>>;\n /** Handler for adding GTN to document */\n onAddGTNToDocument?: (keyValuePair: { key: string; value: string }) => void;\n /** Custom format date function for GTN values */\n formatDateForGTN?: (\n value: string,\n options: { skipTimezone: boolean; withTime: boolean }\n ) => string;\n}\n\n/**\n * Hook to add event listeners\n */\nconst useEventListener = <K extends keyof DocumentEventMap>(\n eventName: K,\n handler: (event: DocumentEventMap[K]) => void\n) => {\n const savedHandler = useRef(handler);\n\n useEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n const eventListener = (event: DocumentEventMap[K]) =>\n savedHandler.current(event);\n document.addEventListener(eventName, eventListener);\n return () => {\n document.removeEventListener(eventName, eventListener);\n };\n }, [eventName]);\n};\n\n/**\n * DateTimeField component - A feature-rich date/time picker with support for\n * GTN integration, risk analysis, AI extraction indicators, and more.\n *\n * @example\n * ```tsx\n * // Basic usage\n * <DateTimeField\n * id=\"start-date\"\n * label=\"Start Date\"\n * value={startDate}\n * handleOnChange={(date) => setStartDate(date)}\n * />\n *\n * // With time picker\n * <DateTimeField\n * id=\"event-datetime\"\n * label=\"Event Date & Time\"\n * value={eventDateTime}\n * handleOnChange={(date) => setEventDateTime(date)}\n * showTime={true}\n * />\n *\n * // With GTN integration\n * <DateTimeField\n * id=\"contract-date\"\n * label=\"Contract Date\"\n * value={contractDate}\n * handleOnChange={(date) => setContractDate(date)}\n * isGTN={true}\n * gtnName=\"contract_date\"\n * onAddGTNToDocument={(kv) => dispatch(setVariableValueToEditor(kv))}\n * />\n * ```\n */\nexport const DateTimeField = forwardRef<HTMLDivElement, DateTimeFieldProps>(\n (\n {\n label,\n value,\n required,\n isRequiredConditional = false,\n disabled,\n className = undefined,\n errorMessage,\n handleOnChange,\n showTime = true,\n tags,\n needConfirm = false,\n simpleMode,\n originalCase = false,\n dateFormat = undefined,\n tooltip,\n isAiExtracted = false,\n isGTN = false,\n gtnName = null,\n shouldPopOnParent = false,\n allowTimezoneConversion = true,\n inputStyle,\n labelClassName,\n isLiveField = false,\n riskDetails,\n isRiskAnalysisOpen = false,\n RiskDetailsCard,\n onAddGTNToDocument,\n formatDateForGTN,\n ...props\n },\n ref\n ) => {\n const { t } = useTranslation();\n /*** States ***/\n const [isHovered, setIsHovered] = useState(false);\n const [tempDate, setTempDate] = useState<Dayjs | null>(null);\n const [lastUpdatedValue, setLastUpdatedValue] = useState<string | null>(\n null\n );\n\n /*** Constants ***/\n const finalDateFormat = dateFormat\n ? dateFormat\n : showTime\n ? UNIVERSAL_DATETIME_FORMAT\n : UNIVERSAL_DATE_FORMAT;\n const ID = props?.id || `date-picker-${generateShortUUID()}`;\n\n /*** Refs ***/\n const datePickerRef = useRef<any>(null);\n\n /*** Event Listeners ***/\n useEventListener(\"paste\", (e: ClipboardEvent) => {\n if (document.activeElement?.id === ID) {\n e.preventDefault();\n navigator.clipboard.readText().then((text) => {\n const date = tryParseFlexibleDate(text, showTime);\n if (date) {\n setDateIfValid(date);\n }\n });\n }\n });\n\n useEventListener(\"keydown\", (e: KeyboardEvent) => {\n if (\n e.key === KEYBOARD_KEYS.ENTER &&\n document.activeElement instanceof HTMLInputElement &&\n document.activeElement.id === ID\n ) {\n const date = tryParseFlexibleDate(document?.activeElement?.value, showTime);\n if (date) {\n setDateIfValid(date);\n }\n }\n });\n\n /*** Handlers ***/\n const handleAddGTNToDocument = useCallback(\n (_value: string | undefined) => {\n if (!onAddGTNToDocument) return;\n\n let formattedValue = _value || \"\";\n if (formatDateForGTN && _value) {\n formattedValue = formatDateForGTN(_value, {\n skipTimezone: true,\n withTime: showTime,\n });\n } else if (_value) {\n // Default formatting if no custom formatter provided\n const parsed = dayjs(_value);\n if (parsed.isValid()) {\n formattedValue = parsed.format(finalDateFormat);\n }\n }\n\n const keyValuePair = {\n key: gtnName,\n value: formattedValue,\n };\n\n onAddGTNToDocument(keyValuePair);\n },\n [onAddGTNToDocument, gtnName, formatDateForGTN, showTime, finalDateFormat]\n );\n\n const handleHidePickerFooter = useCallback(() => {\n const pickerFooter = document.getElementsByClassName(\n \"ant-picker-footer\"\n )[0] as HTMLElement;\n if (pickerFooter) {\n pickerFooter.style.display = \"none\";\n }\n }, []);\n\n const handleDateChange = useCallback(\n (date: Dayjs | null) => {\n if (!allowTimezoneConversion) {\n // Use ISO-like format for value storage (parseable by new Date() and dayjs)\n const isoFormat = showTime ? ISO_DATETIME_FORMAT : ISO_DATE_FORMAT;\n handleOnChange(date ? date.format(isoFormat) : null);\n // Dispatch custom pilot event for recording\n if (date) {\n const element = document.getElementById(ID);\n if (element) {\n const pilotEvent = new CustomEvent(\"pilot-date-change\", {\n bubbles: true,\n detail: {\n selector: `#${ID}`,\n value: date.format ? date.format(finalDateFormat) : date,\n type: \"date-change\",\n elementId: ID,\n },\n });\n element.dispatchEvent(pilotEvent);\n }\n }\n return;\n }\n if (date) {\n let utcDate;\n if (showTime) {\n utcDate = dayjs(date).utc().toISOString();\n } else {\n utcDate = dayjs(date)\n .utc()\n .add(dayjs(date).utcOffset(), \"minute\")\n .startOf(\"day\")\n .toISOString();\n }\n if (utcDate) {\n handleOnChange(utcDate);\n // Dispatch custom pilot event for recording\n const element = document.getElementById(ID);\n if (element) {\n const pilotEvent = new CustomEvent(\"pilot-date-change\", {\n bubbles: true,\n detail: {\n selector: `#${ID}`,\n value: date.format(finalDateFormat),\n type: \"date-change\",\n elementId: ID,\n },\n });\n element.dispatchEvent(pilotEvent);\n }\n }\n } else {\n handleOnChange(null);\n }\n },\n [allowTimezoneConversion, handleOnChange, showTime, ID, finalDateFormat]\n );\n\n const parseDate = useCallback(\n (str: any): Dayjs | null => {\n if (!str) return null;\n if (!allowTimezoneConversion) {\n try {\n // First try default dayjs parsing (handles ISO formats like \"YYYY-MM-DDTHH:mm:ss\")\n const defaultParsed = dayjs(str);\n if (defaultParsed.isValid()) {\n return defaultParsed;\n }\n // Then try parsing with display format for backward compatibility\n const parsed = dayjs(str, finalDateFormat);\n return parsed.isValid() ? parsed : null;\n } catch (_error) {\n return null;\n }\n }\n if (showTime) {\n // For time values, parse directly to preserve the local time\n const parsed = dayjs(str);\n return dayjs(parsed).isValid() ? parsed : null;\n } else {\n if (str?.toString()?.includes(\"Z\")) {\n const parsed = dayjs.utc(str);\n return dayjs(parsed).isValid() ? parsed : null;\n } else {\n const parsed = dayjs(str);\n return dayjs(parsed).isValid() ? parsed : null;\n }\n }\n },\n [allowTimezoneConversion, finalDateFormat, showTime]\n );\n\n const setDateIfValid = useCallback(\n (date: Dayjs | null) => {\n if (date?.isValid() || date === null) {\n setTempDate(date);\n // Use ISO-like format when not converting timezone (parseable by new Date() and dayjs)\n const isoFormat = showTime ? ISO_DATETIME_FORMAT : ISO_DATE_FORMAT;\n const formattedValue = allowTimezoneConversion\n ? date?.toISOString()\n : date\n ? date.format(isoFormat)\n : \"\";\n handleOnChange(formattedValue || null);\n\n // Dispatch custom pilot event for recording\n if (date?.isValid()) {\n const element = document.getElementById(ID);\n if (element) {\n const pilotEvent = new CustomEvent(\"pilot-date-change\", {\n bubbles: true,\n detail: {\n selector: `#${ID}`,\n value: date.format(finalDateFormat),\n type: \"date-change\",\n elementId: ID,\n },\n });\n element.dispatchEvent(pilotEvent);\n }\n }\n }\n },\n [allowTimezoneConversion, finalDateFormat, handleOnChange, ID, showTime]\n );\n\n /*** Effects ***/\n useEffect(() => {\n setTempDate(parseDate(value));\n }, [value, parseDate]);\n\n useEffect(() => {\n if (lastUpdatedValue) {\n setLastUpdatedValue(null);\n }\n }, [lastUpdatedValue]);\n\n // Listen for pilot playback events\n useEffect(() => {\n const element = document.getElementById(ID);\n if (!element) return;\n\n const handlePilotPlayback = (e: CustomEvent) => {\n const { value: playbackValue, type } = e.detail;\n if (type === \"date-playback\" && playbackValue) {\n const parsedDate = tryParseFlexibleDate(playbackValue, showTime);\n if (parsedDate && parsedDate.isValid()) {\n setTempDate(parsedDate);\n handleDateChange(parsedDate);\n\n setTimeout(() => {\n const pickerInput = element.querySelector(\"input\");\n if (pickerInput) {\n (pickerInput as HTMLInputElement).focus();\n setTimeout(() => {\n (pickerInput as HTMLInputElement).blur();\n }, 10);\n }\n\n if (datePickerRef.current) {\n try {\n const pickerInstance = datePickerRef.current as any;\n if (typeof pickerInstance.blur === \"function\") {\n pickerInstance.blur();\n }\n } catch (_error) {\n // Ignore errors\n }\n }\n\n setTimeout(() => {\n const openDropdowns = document.querySelectorAll(\n \".ant-picker-dropdown:not(.ant-picker-dropdown-hidden)\"\n );\n openDropdowns.forEach((dropdown) => {\n if (dropdown instanceof HTMLElement) {\n dropdown.style.display = \"none\";\n dropdown.classList.add(\"ant-picker-dropdown-hidden\");\n }\n });\n }, 50);\n }, 50);\n }\n }\n };\n\n element.addEventListener(\n \"pilot-date-playback\",\n handlePilotPlayback as EventListener\n );\n\n return () => {\n element.removeEventListener(\n \"pilot-date-playback\",\n handlePilotPlayback as EventListener\n );\n };\n }, [ID, finalDateFormat, handleDateChange, showTime]);\n\n /*** Render ***/\n if (simpleMode) {\n return (\n <DatePicker\n {...props}\n showTime={showTime}\n format={finalDateFormat}\n placeholder={\n finalDateFormat === UNIVERSAL_DATETIME_FORMAT\n ? \"MM/DD/YYYY hh:mm\"\n : finalDateFormat\n }\n value={tempDate}\n needConfirm={false}\n onChange={(date) => {\n setTempDate(date);\n handleDateChange(date);\n setLastUpdatedValue(date?.toISOString() || null);\n }}\n className={className}\n showNow={false}\n onFocus={handleHidePickerFooter}\n onBlur={(e) => {\n const inputValue = (e.target as HTMLInputElement).value;\n if (inputValue) {\n const parsedDate = tryParseFlexibleDate(inputValue, showTime);\n if (parsedDate) {\n setDateIfValid(parsedDate);\n }\n }\n }}\n ref={datePickerRef}\n disabled={disabled}\n id={ID}\n />\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn(\n \"flex gap-0.5 relative\",\n isHovered && isGTN\n ? \"border rounded-lg border-primary-100 bg-primary-50 p-1\"\n : \"\"\n )}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {isGTN && !isHovered ? (\n <div className=\"w-1 h-1 bg-primary-600 rounded-full animate-blink mt-1.5\" />\n ) : null}\n <div className={`w-full flex flex-col font-inter ${className || \"\"}`}>\n {label ? (\n <label\n className={`mb-1 text-xs font-medium text-gray-600 inline-flex items-center gap-1 ${!originalCase ? \"capitalize\" : \"\"} ${\n labelClassName || \"\"\n }`}\n >\n <div className=\"w-full flex items-center justify-between flex-wrap\">\n <div className=\"inline-flex items-center gap-1 flex-wrap\">\n <div>\n <Typography\n size=\"extra-small\"\n variant=\"medium\"\n appearance=\"subtitle\"\n >\n {label}\n {required && (\n <Required isConditional={isRequiredConditional} />\n )}\n </Typography>\n </div>\n {isLiveField && (\n <BoltOutlined\n sx={{\n fontSize: 16,\n color: \"var(--color-primary-600)\",\n rotate: \"15deg\",\n }}\n />\n )}\n {isAiExtracted && <AIExtractedIndicator />}\n <Label labels={tags} />\n {tooltip && (\n <Tooltip placement=\"top\" title={tooltip}>\n <div className=\"cursor-pointer\">\n <HelpIcon />\n </div>\n </Tooltip>\n )}\n </div>\n\n {isGTN && isHovered && onAddGTNToDocument ? (\n <button\n id=\"btn-date-field-add-to-document\"\n className=\"cursor-pointer\"\n onClick={() => handleAddGTNToDocument(value)}\n type=\"button\"\n >\n <AntTooltip placement=\"top\" title={t(\"Add to document\")}>\n <NoteAddOutlined\n className=\"text-primary-600\"\n sx={{\n fontSize: 16,\n }}\n />\n </AntTooltip>\n </button>\n ) : null}\n </div>\n </label>\n ) : null}\n <DatePicker\n {...props}\n showTime={showTime ? { use12Hours: true } : false}\n format={finalDateFormat}\n placeholder={\n finalDateFormat === UNIVERSAL_DATETIME_FORMAT\n ? \"MM/DD/YYYY - HH:MM\"\n : finalDateFormat\n }\n className={`w-full h-8 text-inter font-medium ${errorMessage ? \"border-red-400\" : \"\"} dark:text-black-300 ${\n isRiskAnalysisOpen &&\n riskDetails?.color &&\n `bg-${riskDetails.color}-50 border-${riskDetails.color}-300`\n }`}\n styles={{\n root: {\n ...inputStyle,\n borderRadius: \"7px\",\n },\n }}\n showNow={false}\n value={tempDate}\n onChange={(date) => {\n setTempDate(date);\n handleDateChange(date);\n setLastUpdatedValue(date?.toISOString() || null);\n }}\n onBlur={(e) => {\n const inputValue = (e.target as HTMLInputElement).value;\n if (inputValue) {\n const parsedDate = tryParseFlexibleDate(inputValue, showTime);\n if (parsedDate) {\n setTempDate(parsedDate);\n handleDateChange(parsedDate);\n }\n }\n }}\n needConfirm={needConfirm}\n ref={datePickerRef}\n disabled={disabled}\n inputReadOnly={false}\n getPopupContainer={\n shouldPopOnParent\n ? (trigger) => trigger.parentElement as HTMLElement\n : () => document.body\n }\n id={ID}\n autoComplete=\"off\"\n />\n {errorMessage && (\n <Typography\n className=\"text-error-500 mt-1\"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {errorMessage}\n </Typography>\n )}\n </div>\n\n {isHovered && riskDetails && isRiskAnalysisOpen && RiskDetailsCard && (\n <div\n role=\"tooltip\"\n tabIndex={0}\n className=\"absolute left-0 right-0 top-[95%] mt-1 z-50 bg-white dark:bg-black-600 rounded-xl\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.preventDefault()}\n onKeyDown={(e) => {\n if (e.key === \"Escape\") {\n setIsHovered(false);\n }\n }}\n >\n <RiskDetailsCard riskDetails={riskDetails} />\n </div>\n )}\n </div>\n );\n }\n);\n\nDateTimeField.displayName = \"DateTimeField\";\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport cn from \"classnames\";\nimport { DebounceInput } from \"react-debounce-input\";\nimport { AnimatePresence, motion } from \"framer-motion\";\n\nimport { Label } from \"../../data-display/label/Label\";\nimport type { LabelType } from \"../../data-display/label/Label\";\nimport { Required } from \"../../icons/Required\";\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport type { ComponentProps } from \"react\";\n\n/**\n * Props for the DebounceInputField component\n * Drop-in replacement matching the lax-web-portal API\n */\nexport type DebounceInputFieldProps = Omit<ComponentProps<typeof DebounceInput>, 'onChange'> & {\n /** Current value of the input */\n value: string;\n /** Callback function called when the input value changes (debounced) */\n onChange(data: any): void;\n /** Error message to display */\n errorMessage?: string;\n /** Default value for the input */\n defaultValue?: string;\n /** Whether the input is disabled */\n disabled?: boolean;\n /** Maximum value for number inputs */\n max?: number;\n /** Minimum value for number inputs */\n min?: number;\n /** Whether the field is required */\n required?: boolean;\n /** Background color class */\n bg?: string;\n /** Tags to display with the label */\n tags?: (string | LabelType)[];\n /** Text color class */\n color?: string;\n /** Unique identifier for the input */\n id: string;\n /** Label text for the input */\n label?: string;\n /** Input type (text, email, password, number, etc.) */\n type?: string;\n /** Placeholder text */\n placeholder?: string;\n /** Debounce timeout in milliseconds */\n debounceTimeout?: number;\n /** Additional CSS classes */\n className?: string;\n /** Whether dark mode is enabled (optional - uses CSS dark: classes if not provided) */\n isDarkMode?: boolean;\n};\n\n/**\n * A debounced input field component that delays onChange calls until the user stops typing.\n * This is a drop-in replacement for the lax-web-portal DebounceInputField component.\n *\n * @example\n * ```tsx\n * <DebounceInputField\n * id=\"search\"\n * label=\"Search\"\n * value={searchTerm}\n * onChange={(value) => setSearchTerm(value)}\n * debounceTimeout={300}\n * placeholder=\"Type to search...\"\n * errorMessage=\"\"\n * />\n * ```\n */\nexport const DebounceInputField = ({\n id,\n label,\n onChange,\n errorMessage,\n required,\n bg,\n tags,\n color,\n debounceTimeout = 0,\n className,\n isDarkMode,\n ...props\n}: DebounceInputFieldProps) => {\n const { inputRef, ...rest } = props;\n return (\n <div className={cn(\"flex flex-col\", className)}>\n {label && (\n <label\n htmlFor={id}\n className=\"block mb-1 text-xs font-medium leading-[18px] text-neutral-600 dark:text-black-300 font-inter capitalize\"\n >\n <div className=\"inline-flex items-center gap-1\">\n {label}\n {required && <Required />}\n </div>\n <Label labels={tags} />\n </label>\n )}\n <label className=\"relative block h-8\">\n <DebounceInput\n {...rest}\n debounceTimeout={debounceTimeout}\n id={id}\n key={id}\n required={required}\n className={cn(\n \"border\",\n errorMessage ? \"!border-error-300\" : \"border-neutral-200 dark:border-black-600\",\n bg,\n color,\n \"dark:bg-black-700 text-neutral-900 dark:text-neutral-100 text-[14px] rounded-md\",\n \"focus:outline-none focus:ring-2 focus:ring-primary-500 dark:focus:ring-primary-400\",\n \"focus:border-primary-500 dark:focus:border-primary-400\",\n \"block w-full h-8 px-3 py-1.5 font-inter font-medium\",\n \"disabled:opacity-70 disabled:!bg-neutral-50 dark:disabled:!bg-black-800\"\n )}\n onChange={(e: React.ChangeEvent<HTMLInputElement>) => {\n onChange(e.target.value);\n }}\n autoComplete=\"off\"\n />\n </label>\n <AnimatePresence>\n {errorMessage && (\n <motion.div\n initial={{ opacity: 0, y: -5 }}\n animate={{ opacity: 1, y: 0 }}\n exit={{ opacity: 0, y: -5 }}\n transition={{ duration: 0.15 }}\n >\n <Typography\n className=\"pt-1 text-error-500\"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {errorMessage}\n </Typography>\n </motion.div>\n )}\n </AnimatePresence>\n </div>\n );\n};\n\nDebounceInputField.displayName = \"DebounceInputField\";\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport cn from \"classnames\";\nimport { forwardRef, useEffect, useRef, useState } from \"react\";\nimport { Tooltip as AntTooltip } from \"antd\";\nimport { useTranslation } from 'react-i18next';\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport { Label } from \"../../data-display/label/Label\";\nimport type { LabelType } from \"../../data-display/label/Label\";\nimport { BoltOutlined, CloseRounded, NoteAddOutlined, TableChartRounded } from \"@mui/icons-material\";\nimport { AIExtractedIndicator } from \"../../icons/AIExtractedIndicator\";\nimport { Required } from \"../../icons/Required\";\nimport { HelpIcon } from \"../../icons/HelpIcon\";\nimport Tooltip from \"../../tooltip/Tooltip\";\nimport IconButton from \"../../button/IconButton\";\n\n/**\n * Risk details interface for risk analysis integration\n */\nexport interface RiskDetails {\n color?: string;\n description?: string;\n hexBgColor?: string;\n hexBorderColor?: string;\n [key: string]: any;\n}\n\n/**\n * Risk details card component props - generic to allow consumer-specific risk types\n */\nexport interface RiskDetailsCardProps<T = any> {\n riskDetails: T;\n maxWidth?: string;\n showAllRisksSuggestions?: boolean;\n}\n\n/**\n * Props for the DynamicDataModal component\n */\nexport interface DynamicDataModalProps {\n isVisible: boolean;\n onSelect: (data: string | number | readonly string[] | undefined) => void;\n onClose: () => void;\n dataKey: string;\n dataSource: string;\n}\n\n/**\n * Props for the DynamicDataInputField component\n */\nexport interface DynamicDataInputFieldProps {\n /** Unique identifier for the input */\n id: string;\n /** Label text to display above the input */\n label: string;\n /** Placeholder text for the input */\n placeholder?: string;\n /** Color for the input text */\n color?: string;\n /** Current value of the input */\n value: string | number | readonly string[] | undefined;\n /** Whether the field is required */\n required?: boolean;\n /** Whether the required indicator shows as conditional (yellow instead of red) */\n isRequiredConditional?: boolean;\n /** Tags/labels to display next to the label */\n tags?: (string | LabelType)[];\n /** Error message to display below the input */\n errorMessage?: string;\n /** Default value for the input */\n defaultValue?: string | number | readonly string[] | undefined;\n /** Data source for dynamic data */\n dataSource: string;\n /** Data key for dynamic data */\n dataKey: string;\n /** Tooltip text for the help icon */\n tooltip?: string;\n /** Whether this is a GTN (Global Term Name) field */\n isGTN?: boolean;\n /** GTN field name for document integration */\n gtnName?: string;\n /** Whether the value was AI extracted */\n isAiExtracted?: boolean;\n /** Whether the input is disabled */\n disabled?: boolean;\n /** Callback function called when value changes */\n onChange: (value: string | number | readonly string[] | undefined) => void;\n /** Additional CSS classes for the label */\n labelClassName?: string;\n /** Whether this is a live field */\n isLiveField?: boolean;\n /** Whether to preserve original case in the label */\n originalCase?: boolean;\n /** Handler for adding GTN to document */\n onAddGTNToDocument?: (keyValuePair: { key: string; value: string }) => void;\n /** Risk details data */\n riskDetails?: RiskDetails;\n /** Whether risk analysis is open */\n isRiskAnalysisOpen?: boolean;\n /** Custom risk details card component */\n RiskDetailsCard?: React.ComponentType<RiskDetailsCardProps<any>>;\n /** Primary color shades for styling */\n primaryColorShades?: Record<number, string>;\n /** Whether recording is active (for pilot context) */\n isRecording?: boolean;\n /** Whether playback is active (for pilot context) */\n isPlaying?: boolean;\n /** Callback to set disable actions state */\n setDisableActions?: (disabled: boolean) => void;\n /** Toast function for deprecated field warning */\n showDeprecatedFieldWarning?: () => void;\n /** Dynamic data modal component */\n DynamicDataModal?: React.ComponentType<DynamicDataModalProps>;\n}\n\n/**\n * A highly customizable dynamic data input component with label, validation, and styling support.\n * Features dynamic data modal integration, GTN support, risk analysis support,\n * and comprehensive prop support for various use cases.\n *\n * @example\n * ```tsx\n * <DynamicDataInputField\n * id=\"dynamic-field\"\n * label=\"Dynamic Field\"\n * value={fieldValue}\n * onChange={(value) => setFieldValue(value)}\n * dataSource=\"sourceTable\"\n * dataKey=\"fieldKey\"\n * required\n * />\n * ```\n */\nexport const DynamicDataInputField = forwardRef<\n HTMLInputElement,\n DynamicDataInputFieldProps\n>(\n (\n {\n id,\n label,\n placeholder,\n value,\n onChange,\n errorMessage,\n defaultValue,\n required = false,\n isRequiredConditional = false,\n dataSource,\n dataKey,\n tags,\n tooltip = \"\",\n originalCase = false,\n color = \"\",\n isGTN = false,\n gtnName,\n isAiExtracted = false,\n labelClassName,\n disabled = false,\n isLiveField = false,\n onAddGTNToDocument,\n riskDetails,\n isRiskAnalysisOpen = false,\n RiskDetailsCard,\n primaryColorShades,\n isRecording = false,\n isPlaying = false,\n setDisableActions,\n showDeprecatedFieldWarning,\n DynamicDataModal,\n },\n ref\n ) => {\n const { t } = useTranslation();\n const [isHovered, setIsHovered] = useState(false);\n const [inputValue, setInputValue] = useState<\n string | number | readonly string[] | undefined\n >(value);\n const [showDynamicDataModal, setShowDynamicDataModal] = useState(false);\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Use forwarded ref or internal ref\n const combinedRef = (ref as React.RefObject<HTMLInputElement>) || inputRef;\n\n const toggleDynamicDataModal = () => {\n if (showDynamicDataModal) {\n setDisableActions?.(false);\n } else {\n setDisableActions?.(true);\n }\n setShowDynamicDataModal(!showDynamicDataModal);\n };\n\n const handleKeyDown = (event: React.KeyboardEvent<HTMLInputElement>) => {\n if (event.keyCode === 9 || event.key === \"Enter\") {\n const currentRef = combinedRef.current || inputRef.current;\n if (currentRef) {\n if (inputValue !== null) {\n onChange(inputValue);\n }\n setInputValue(inputValue);\n currentRef.blur();\n }\n }\n };\n\n const handleClear = () => {\n setInputValue(\"\");\n onChange(\"\");\n };\n\n const handleAddGTNToDocument = (_value: string) => {\n if (onAddGTNToDocument && gtnName) {\n const keyValuePair = {\n key: gtnName,\n value: _value,\n };\n onAddGTNToDocument(keyValuePair);\n }\n };\n\n const getClassName = (): string => {\n const baseClasses =\n \"border h-[32px] text-sm rounded-lg block w-full p-2.5 font-inter font-medium\";\n const borderColor = errorMessage\n ? \"border-red-300\"\n : isRiskAnalysisOpen && riskDetails?.color\n ? `border-${riskDetails?.color}-300`\n : \"border-gray-300 dark:border-black-600\";\n const placeholderColor = `placeholder:text-neutral-900 dark:placeholder:text-black-400`;\n const backgroundColor = `${\n isRiskAnalysisOpen && riskDetails?.color\n ? `bg-${riskDetails?.color}-50`\n : \"bg-gray-200 dark:bg-black-600 \"\n } ${color ? color : \"text-neutral-900 dark:text-black-200\"}`;\n\n return `${baseClasses} ${borderColor} ${backgroundColor} ${placeholderColor}`;\n };\n\n useEffect(() => {\n if (showDynamicDataModal && !dataSource) {\n showDeprecatedFieldWarning?.();\n setShowDynamicDataModal(false);\n }\n }, [showDynamicDataModal, dataSource, showDeprecatedFieldWarning]);\n\n // Sync inputValue with value prop\n useEffect(() => {\n setInputValue(value);\n }, [value]);\n\n return (\n <div\n className={cn(\n `flex gap-0.5 w-full relative`,\n isHovered && isGTN\n ? \"border rounded-lg border-primary-100 bg-primary-50 p-1\"\n : \"\",\n { \"error-field\": !!errorMessage }\n )}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {isGTN && !isHovered ? (\n <div className=\"w-1 h-1 bg-primary-600 rounded-full animate-blink mt-1.5\" />\n ) : null}\n\n <div className={cn(`flex flex-col w-full`)}>\n <label\n htmlFor=\"text\"\n className={`text-xs font-medium text-gray-600 inline-flex items-center gap-1 ${\n !originalCase ? \"capitalize\" : \"\"\n } ${labelClassName || \"\"}`}\n >\n <div className=\"w-full flex items-center justify-between flex-wrap\">\n <div className=\"inline-flex items-center gap-1 flex-wrap\">\n <Typography\n variant=\"medium\"\n size=\"extra-small\"\n appearance=\"subtitle\"\n >\n {label}\n {required && <Required isConditional={isRequiredConditional} />}\n </Typography>\n {isLiveField && (\n <BoltOutlined\n sx={{\n fontSize: 16,\n color: \"var(--color-primary-600)\",\n rotate: \"15deg\",\n }}\n />\n )}\n {isAiExtracted && <AIExtractedIndicator />}\n <Label labels={tags} />\n {tooltip && (\n <Tooltip placement=\"top\" title={tooltip}>\n <div className=\"cursor-pointer\">\n <HelpIcon />\n </div>\n </Tooltip>\n )}\n </div>\n\n {isGTN && isHovered && onAddGTNToDocument ? (\n <button\n id=\"btn-dynamic-data-input-add-to-document\"\n className=\"cursor-pointer\"\n onClick={() => handleAddGTNToDocument(value?.toString() || \"\")}\n type=\"button\"\n >\n <AntTooltip placement=\"top\" title={t(\"Add to document\")}>\n <NoteAddOutlined\n sx={{\n fontSize: 16,\n color:\n primaryColorShades?.[600] || \"var(--color-primary-600)\",\n }}\n />\n </AntTooltip>\n </button>\n ) : null}\n </div>\n </label>\n <label className=\"relative block mt-1\">\n <input\n id={id}\n ref={combinedRef}\n required={required}\n placeholder={placeholder}\n className={getClassName()}\n onChange={(e) => {\n onChange(e.target.value);\n setInputValue(e.target?.value);\n }}\n onKeyDown={handleKeyDown}\n value={inputValue !== null ? inputValue : value}\n defaultValue={defaultValue}\n disabled={true}\n />\n\n <IconButton\n id={`btn-dynamic-data-input-rx-cross`}\n onClick={handleClear}\n className=\"absolute inset-y-0 right-1 flex items-center px-2 focus:border-transparent\"\n variant=\"ghost\"\n disabled={disabled}\n >\n <CloseRounded\n className=\"text-neutral-900 dark:text-black-300\"\n sx={{ fontSize: 16 }}\n />\n </IconButton>\n\n <IconButton\n id={`btn-dynamic-data-input-ai-outline-pic-center`}\n onClick={toggleDynamicDataModal}\n className=\"absolute inset-y-0 right-8 flex items-center px-2 focus:border-transparent\"\n variant=\"ghost\"\n disabled={disabled}\n >\n <TableChartRounded\n className=\"text-neutral-900 dark:text-black-300\"\n sx={{ fontSize: 16 }}\n />\n </IconButton>\n </label>\n\n {errorMessage && (\n <Typography\n className=\"text-error-500 mt-1\"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {errorMessage}\n </Typography>\n )}\n\n {showDynamicDataModal && DynamicDataModal && (\n <DynamicDataModal\n isVisible={showDynamicDataModal}\n onSelect={(data) => {\n onChange(data);\n setInputValue(data);\n }}\n onClose={toggleDynamicDataModal}\n dataKey={dataKey}\n dataSource={dataSource}\n />\n )}\n </div>\n\n {isHovered &&\n riskDetails &&\n isRiskAnalysisOpen &&\n RiskDetailsCard && (\n <div\n role=\"tooltip\"\n tabIndex={0}\n className=\"absolute left-0 right-0 top-[95%] mt-1 z-50 bg-white dark:bg-black-600 rounded-xl\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.preventDefault()}\n onKeyDown={(e) => {\n if (e.key === \"Escape\") {\n setIsHovered(false);\n }\n }}\n >\n <RiskDetailsCard riskDetails={riskDetails} />\n </div>\n )}\n </div>\n );\n }\n);\n\nDynamicDataInputField.displayName = \"DynamicDataInputField\";\n\n","import { Dropdown } from 'antd';\nimport { type ItemType } from 'antd/es/menu/interface';\nimport React, { type CSSProperties, useCallback, useMemo } from 'react';\nimport Tooltip from '../tooltip/Tooltip';\nimport { useOS, SHORTCUT_KEY_MAP } from '../../hooks/useOS';\nimport { CgSpinner } from 'react-icons/cg';\nimport { ChevronRightRounded } from '@mui/icons-material';\n\nexport interface IButtonProps {\n children: React.ReactNode;\n className?: string;\n disabled?: boolean;\n isLoading?: boolean;\n primary?: boolean;\n title?: string;\n id: string;\n status?: IButtonStatus;\n appearance?: IButtonAppearance;\n onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void;\n onKeyDown?: (event: React.KeyboardEvent<HTMLButtonElement>) => void;\n badge?: string | number;\n type?: 'button' | 'submit' | 'reset';\n options?: ItemType[];\n tooltip?: string;\n tooltipPlacement?: 'top' | 'bottom' | 'left' | 'right';\n /** Array of keyboard shortcut keys to display inline in the button (e.g., ['Meta', 'S'] or ['Ctrl', 'Enter']) */\n shortcuts?: string[];\n /** Array of keyboard shortcut keys to display in the tooltip (e.g., ['Meta', 'S']). Falls back to shortcuts if not provided. */\n tooltipShortcuts?: string[];\n theme?: 'light' | 'dark';\n}\n\nexport type IButtonStatus =\n | 'secondary-neutral'\n | 'primary'\n | 'secondary'\n | 'error'\n | 'warning'\n | 'success'\n | 'error-secondary'\n | 'cancel'\n | 'no-background'\n | 'publish'\n | 'default';\n\nexport type IButtonAppearance = 'filled' | 'outline' | 'ghost' | 'dashed';\n\nconst Button: React.FC<IButtonProps> = ({\n status = 'primary',\n appearance,\n className,\n disabled,\n children,\n isLoading,\n title,\n id,\n onClick,\n onKeyDown,\n badge,\n type = 'button',\n options,\n tooltip,\n tooltipPlacement = 'top',\n shortcuts,\n tooltipShortcuts,\n theme = 'light',\n}) => {\n\n const appearanceStyle = useCallback(() => {\n switch (appearance) {\n case 'outline':\n return outlineStyle();\n case 'ghost':\n return ghostStyle();\n case 'dashed':\n return dashedStyle();\n default:\n return filledStyle();\n }\n }, [appearance, status, disabled, theme]);\n\n const cssStyle = useCallback(() => {\n switch (appearance) {\n case 'dashed':\n return dashedCssStyle();\n default:\n return {};\n }\n }, [appearance, status, disabled, theme]);\n\n const filledStyle = useCallback(() => {\n switch (status) {\n case 'primary':\n return 'bg-primary-600 text-white focus:border-primary-200 hover:bg-primary-700 disabled:opacity-60';\n\n case 'secondary':\n return 'bg-primary-50 dark:bg-black-800 text-primary-600 dark:hover:text-primary-400 border border-primary-200 dark:border-primary-600 hover:bg-primary-100 dark:hover:bg-black-800 focus:border-primary-200 hover:border-primary-200 dark:hover:border-primary-400 disabled:opacity-60';\n\n case 'error':\n return 'bg-error-600 dark:bg-error-500 text-white hover:bg-error-700 dark:hover:bg-error-600 focus:!border-error-300 dark:focus:!border-error-600 dark:focus:bg-error-800 disabled:opacity-60';\n\n case 'error-secondary':\n return 'bg-error-100 dark:bg-black-800 text-error-600 border !border-error-300 dark:!border-error-900 hover:bg-error-200 focus:!border-error-300 dark:focus:!border-error-400 disabled:opacity-60';\n\n case 'secondary-neutral':\n return 'bg-white dark:bg-black-800 text-neutral-900 border border-neutral-300 dark:border-black-600 dark:hover:bg-black-600 dark:text-black-200 hover:bg-neutral-100 focus:border-primary-200 disabled:opacity-60';\n\n case 'warning':\n return 'bg-warning-300 dark:bg-warning-600 text-white border-warning-300 border hover:bg-warning-400 disabled:opacity-60';\n\n case 'success':\n return 'bg-success-600 text-white border-success-600 border hover:bg-success-700 disabled:opacity-60';\n\n case 'publish':\n return 'bg-teal-800 text-white border-teal-800 border hover:bg-teal-900 disabled:opacity-60';\n\n case 'no-background':\n return 'bg-transparent text-neutral-900 dark:text-black-100 border-transparent border';\n\n default:\n return 'bg-white dark:bg-black-800 text-neutral-900 dark:text-white border-white border hover:bg-neutral-100 dark:hover:bg-black-600 disabled:opacity-60';\n }\n }, [status, disabled, theme]);\n\n const outlineStyle = useCallback(() => {\n switch (status) {\n case 'primary':\n return 'text-primary-700 dark:text-primary-600 border-primary-700 border dark:border-primary-600 hover:bg-primary-100 disabled:opacity-60';\n\n case 'secondary':\n return 'text-primary-700 dark:text-primary-600 border-primary-100 dark:border-primary-600 border bg-primary-50 dark:bg-black-800 hover:bg-primary-100 disabled:opacity-60';\n\n case 'secondary-neutral':\n return 'text-neutral-900 dark:text-white border-neutral-300 dark:border-neutral-700 border bg-white dark:bg-black-800 hover:bg-neutral-100 dark:hover:bg-black-600 disabled:opacity-60';\n\n case 'error':\n return 'text-error-600 dark:text-error-500 !border-error-600 dark:!border-error-500 border hover:bg-[#FEF3F2] disabled:opacity-60';\n\n case 'warning':\n return 'text-warning-300 dark:text-warning-500 border-warning-300 dark:border-warning-500 border hover:bg-[#FFFAEB] disabled:opacity-60';\n\n case 'success':\n return 'text-success-600 dark:text-success-500 border-success-600 dark:border-success-500 border hover:bg-[#ECFDF3] disabled:opacity-60';\n\n default:\n return 'bg-white dark:bg-black-800 text-neutral-900 dark:text-white border-neutral-300 dark:border-neutral-700 border hover:bg-neutral-100 dark:hover:bg-black-600 disabled:opacity-60';\n }\n }, [status, theme]);\n\n const ghostStyle = useCallback(() => {\n switch (status) {\n case 'primary':\n return 'text-primary-700 dark:text-primary-600 border border-transparent dark:border-transparent hover:text-primary-700 disabled:opacity-60';\n\n case 'secondary':\n return 'text-primary-50 dark:text-primary-900 border border-transparent dark:border-transparent hover:text-primary-100 disabled:opacity-60';\n\n case 'error':\n return 'text-error-600 dark:text-error-500 border border-transparent dark:border-transparent hover:text-error-600 disabled:opacity-60';\n\n case 'warning':\n return 'text-warning-300 dark:text-warning-500 border border-transparent dark:border-transparent hover:text-warning-400 disabled:opacity-60';\n\n case 'success':\n return 'text-success-600 dark:text-success-500 border border-transparent dark:border-transparent hover:text-success-700 disabled:opacity-60';\n\n default:\n return 'text-neutral-900 dark:text-white border border-transparent dark:border-transparent hover:text-[#667085] disabled:opacity-60';\n }\n }, [status, theme]);\n\n const dashedStyle = useCallback(() => {\n switch (status) {\n case 'primary':\n return 'bg-primary-50 dark:bg-black-700 text-primary-600 dark:text-primary-600 disabled:text-primary-100 hover:bg-primary-100 dark:hover:bg-black-600';\n default:\n return 'bg-primary-50 dark:bg-black-700 text-primary-600 dark:text-primary-600 disabled:text-primary-100 hover:bg-primary-100 dark:hover:bg-black-600';\n }\n }, [status, theme]);\n\n const dashedCssStyle: () => CSSProperties = useCallback(() => {\n switch (status) {\n case 'primary':\n return {\n backgroundImage:\n 'repeating-linear-gradient(3deg, #016DCF, #016DCF 10px, transparent 10px, transparent 19px, #016DCF 19px), repeating-linear-gradient(93deg, #016DCF, #016DCF 10px, transparent 10px, transparent 19px, #016DCF 19px), repeating-linear-gradient(183deg, #016DCF, #016DCF 10px, transparent 10px, transparent 19px, #016DCF 19px), repeating-linear-gradient(273deg, #016DCF, #016DCF 10px, transparent 10px, transparent 19px, #016DCF 19px)',\n backgroundSize: '1px 100%, 100% 1px, 1px 100% , 100% 1px',\n backgroundPosition: '0 0, 0 0, 100% 0, 0 100%',\n backgroundRepeat: 'no-repeat',\n };\n default:\n return {};\n }\n }, [status, theme]);\n\n /**\n * Returns Tailwind classes for inline <kbd> elements that adapt to the button's status and appearance.\n * Uses a subtle/muted approach � slightly deeper shade of the button's own color.\n */\n const getKbdClasses = useCallback((): string => {\n const isFilled = !appearance || appearance === 'filled';\n\n if (isFilled) {\n switch (status) {\n case 'primary':\n return 'bg-primary-700 text-primary-100';\n case 'secondary':\n return 'bg-primary-100 text-primary-700 dark:bg-black-700 dark:text-primary-400';\n case 'secondary-neutral':\n return 'bg-neutral-100 text-neutral-500 dark:bg-black-700 dark:text-black-300';\n case 'error':\n return 'bg-error-700 text-error-100 dark:bg-error-600 dark:text-error-100';\n case 'error-secondary':\n return 'bg-error-200 text-error-700 dark:bg-black-700 dark:text-error-400';\n case 'warning':\n return 'bg-warning-400 text-white dark:bg-warning-700 dark:text-warning-100';\n case 'success':\n return 'bg-success-700 text-success-100';\n case 'publish':\n return 'bg-teal-900 text-teal-200';\n case 'no-background':\n return 'bg-neutral-100 text-neutral-500 dark:bg-black-700 dark:text-neutral-400';\n default:\n return 'bg-neutral-100 text-neutral-500 dark:bg-black-700 dark:text-neutral-400';\n }\n }\n\n // outline, ghost, dashed � colored text on transparent/light bg\n switch (status) {\n case 'primary':\n case 'secondary':\n return 'bg-primary-100 text-primary-800 dark:bg-primary-950 dark:text-primary-400';\n case 'error':\n case 'error-secondary':\n return 'bg-error-100 text-error-700 dark:bg-error-950 dark:text-error-400';\n case 'warning':\n return 'bg-warning-100 text-warning-700 dark:bg-warning-950 dark:text-warning-400';\n case 'success':\n return 'bg-success-100 text-success-700 dark:bg-success-950 dark:text-success-400';\n default:\n return 'bg-neutral-100 text-neutral-500 dark:bg-black-700 dark:text-neutral-400';\n }\n }, [status, appearance]);\n\n const os = useOS();\n const displayKeys = useMemo(() => {\n if (!shortcuts?.length) return [];\n return shortcuts.map((key) => {\n const mapping = SHORTCUT_KEY_MAP[key];\n if (mapping) {\n return os === 'macos' ? mapping.macos : mapping.other;\n }\n return key;\n });\n }, [shortcuts, os]);\n\n const renderSpinner = () => (\n <>\n <CgSpinner size={24} className='inline mr-2 spinner' />\n </>\n );\n\n return (\n <Tooltip title={tooltip} placement={tooltipPlacement} shortcuts={tooltipShortcuts} delayShow>\n <button\n className={`\n ${className || ''}\n cursor-pointer\n font-inter \n font-medium \n py-[6px] \n px-3 \n rounded-lg \n text-sm\n whitespace-nowrap\n disabled:cursor-not-allowed\n flex\n items-center\n justify-center\n gap-1.5\n relative\n max-h-[32px]\n ${appearanceStyle()}\n `}\n style={{ ...cssStyle() }}\n disabled={disabled || isLoading}\n id={id}\n onClick={onClick}\n onKeyDown={onKeyDown}\n title={title}\n type={type}\n >\n {isLoading && renderSpinner()}\n {children}\n {displayKeys.length > 0 ? (\n <span className='inline-flex items-center gap-0.5 ml-1 flex-shrink-0'>\n {displayKeys.map((key, index) => (\n <kbd\n key={index}\n className={`inline-flex items-center justify-center min-w-[20px] h-5 px-1 rounded text-[11px] font-medium leading-none ${getKbdClasses()}`}\n >\n {key}\n </kbd>\n ))}\n </span>\n ) : null}\n {options?.length ? (\n <div onClick={(e) => e.stopPropagation()}>\n <Dropdown\n menu={{\n items: options,\n }}\n trigger={['click']}\n overlayClassName='row-option-cell'\n placement='bottomRight'\n >\n <ChevronRightRounded className='rotate-90 text-neutral-300 hover:opacity-50' />\n </Dropdown>\n </div>\n ) : null}\n {badge ? (\n <span className='absolute -top-2 -right-2 bg-zinc-500 text-white rounded-full min-w-[1.5rem] min-h-[1.5rem] text-xs flex justify-center items-center'>\n {badge}\n </span>\n ) : null}\n </button>\n </Tooltip>\n );\n};\n\nexport default Button;\n","import { useEffect, useState } from \"react\";\n\nexport interface UseModalContainerOptions {\n /** Primary container ID to search for */\n primaryContainerId?: string;\n /** Fallback container ID if primary not found */\n fallbackContainerId?: string;\n /** Maximum number of retry attempts */\n maxRetries?: number;\n /** Delay between retries in milliseconds */\n retryDelay?: number;\n}\n\n/**\n * Hook to find a modal container element with retry mechanism\n * Searches across current document and parent frame if available\n *\n * @example\n * ```tsx\n * const container = useModalContainer({\n * primaryContainerId: 'layout-app-main-content-container',\n * fallbackContainerId: 'full-screen-container'\n * });\n * ```\n */\nexport const useModalContainer = (options: UseModalContainerOptions = {}) => {\n const {\n primaryContainerId = \"layout-app-main-content-container\",\n fallbackContainerId = \"full-screen-container\",\n maxRetries = 10,\n retryDelay = 100,\n } = options;\n\n const [container, setContainer] = useState<HTMLElement | null>(null);\n\n useEffect(() => {\n let retryCount = 0;\n let timeoutId: ReturnType<typeof setTimeout>;\n\n const findContainer = (containerId: string): HTMLElement | null => {\n // Try current document first\n if (typeof document !== \"undefined\") {\n const local = document.getElementById(containerId);\n if (local) return local;\n }\n\n // Try parent frame if available\n if (\n typeof globalThis !== \"undefined\" &&\n globalThis.window &&\n globalThis.window.parent &&\n globalThis.window.parent !== globalThis.window\n ) {\n try {\n const inParent = globalThis.window.parent.document?.getElementById(containerId);\n if (inParent) return inParent;\n } catch {\n // Ignore cross-origin access errors\n }\n }\n\n return null;\n };\n\n const searchForContainer = () => {\n // Try primary container first\n let found = findContainer(primaryContainerId);\n\n // If not found, try fallback\n if (!found && fallbackContainerId) {\n found = findContainer(fallbackContainerId);\n }\n\n if (found) {\n setContainer(found);\n return;\n }\n\n // Retry if not found and we haven't exceeded max retries\n if (retryCount < maxRetries) {\n retryCount++;\n timeoutId = setTimeout(searchForContainer, retryDelay);\n } else {\n // Fall back to document.body after all retries exhausted\n setContainer(document.body);\n }\n };\n\n searchForContainer();\n\n return () => {\n if (timeoutId) {\n clearTimeout(timeoutId);\n }\n };\n }, [primaryContainerId, fallbackContainerId, maxRetries, retryDelay]);\n\n return container;\n};\n\n","import { CloseRounded } from \"@mui/icons-material\";\nimport { Modal as AntDModal, type ModalProps as AntDModalProps } from \"antd\";\nimport type { ReactNode } from \"react\";\n// no-op\nimport { Typography } from \"../typography/Typography\";\nimport { useModalContainer } from \"../../../hooks/useModalContainer\";\n\n/**\n * Custom props extending Ant Design Modal props\n */\nexport interface ModalProps extends AntDModalProps {\n /** Whether to show only the body content without header */\n onlyBody?: boolean;\n /** Whether to add spacing to the body */\n bodySpacing?: boolean;\n /** Container element ID for portal rendering */\n parentContainer?: string;\n /** Custom header content on the right side */\n headerRightContent?: ReactNode;\n /** Whether to add a line after the header */\n addLineAfterHeader?: boolean;\n /** Custom z-index for the modal */\n zIndex?: number;\n /** Whether to render as a form */\n asForm?: boolean;\n /** Form submit handler */\n onSubmit?: () => void;\n /** Whether to show the close button */\n showCloseButton?: boolean;\n /** Whether to remove padding */\n noPadding?: boolean;\n /** Close handler */\n onClose?: () => void;\n}\n\n/**\n * Modal component for displaying overlay content\n *\n * @example\n * ```tsx\n * <Modal open={isOpen} onCancel={() => setIsOpen(false)} title=\"Example Modal\">\n * <p>Modal content goes here</p>\n * </Modal>\n * ```\n */\nexport const Modal = (props: ModalProps) => {\n const {\n open,\n children,\n title,\n mask = true,\n onlyBody = false,\n bodySpacing = true,\n headerRightContent,\n parentContainer,\n zIndex,\n asForm,\n onSubmit,\n showCloseButton = true,\n noPadding = false,\n ...rest\n } = props;\n\n // Use the hook to find the container with retry mechanism\n const autoContainer = useModalContainer({\n primaryContainerId: \"layout-app-main-content-container\",\n fallbackContainerId: \"full-screen-container\",\n });\n\n const header = (\n <>\n <div className=\"flex justify-between items-center\">\n {showCloseButton ? (\n <Typography size=\"large\" variant=\"semibold\" className=\"tour__title\">\n {title}\n </Typography>\n ) : (\n <div className=\"flex flex-col w-full\">{title}</div>\n )}\n\n {headerRightContent\n ? headerRightContent\n : showCloseButton && (\n <button id=\"btn-modal-close\" onClick={rest.onCancel} className=\"\" type=\"button\">\n <CloseRounded sx={{ fontSize: \"20px\" }} className=\"cursor-pointer text-neutral-400 hover:text-neutral-600\" />\n </button>\n )}\n </div>\n {rest.addLineAfterHeader && <hr className=\"mt-2\" />}\n </>\n );\n\n const Wrapper = asForm ? \"form\" : \"div\";\n\n // Determine target container: use custom prop if provided, otherwise use auto-detected container\n const getTargetContainer = (): HTMLElement | null => {\n if (parentContainer) {\n // If a specific container is provided, search for it\n if (typeof document !== \"undefined\") {\n const local = document.getElementById(parentContainer);\n if (local) return local;\n }\n if (typeof globalThis !== \"undefined\" && globalThis.window && globalThis.window.parent && globalThis.window.parent !== globalThis.window) {\n try {\n const inParent = globalThis.window.parent.document?.getElementById(parentContainer);\n if (inParent) return inParent;\n } catch {\n // Ignore cross-origin access errors\n }\n }\n }\n // Use auto-detected container\n return autoContainer;\n };\n\n if (!open) return null;\n const targetContainer = getTargetContainer();\n \n // Don't render until we have a container\n if (!targetContainer) return null;\n \n const isScopedToContainer = targetContainer !== document.body;\n\n const modalNode = (\n <AntDModal\n open={open}\n centered\n closable={false}\n title={onlyBody ? null : header}\n modalRender={(modal) => (\n <Wrapper\n onSubmit={(e) => {\n e.preventDefault();\n if (onSubmit) {\n onSubmit();\n }\n }}\n >\n {/* Prevent outside click bubbling from custom wrappers */}\n <div role=\"none\" onClick={(e) => e.stopPropagation()}>{modal}</div>\n </Wrapper>\n )}\n styles={{\n content: {\n padding: noPadding ? \"0px\" : \"20px 0px\",\n },\n header: {\n padding: noPadding ? \"0px\" : \"0px 20px\",\n },\n body: {\n padding: noPadding ? \"0px\" : bodySpacing ? \"0px 20px\" : \"0px\",\n },\n footer: {\n padding: noPadding ? \"0px\" : \"0px 20px\",\n },\n mask: {\n zIndex: zIndex || 1000,\n position: isScopedToContainer ? \"absolute\" : undefined,\n top: isScopedToContainer ? 0 : undefined,\n right: isScopedToContainer ? 0 : undefined,\n bottom: isScopedToContainer ? 0 : undefined,\n left: isScopedToContainer ? 0 : undefined,\n },\n wrapper: {\n zIndex: zIndex || 1000,\n position: isScopedToContainer ? \"absolute\" : undefined,\n top: isScopedToContainer ? 0 : undefined,\n right: isScopedToContainer ? 0 : undefined,\n bottom: isScopedToContainer ? 0 : undefined,\n left: isScopedToContainer ? 0 : undefined,\n backgroundColor: mask ? \"rgb(16 24 40 / 80%)\" : undefined,\n },\n }}\n mask={mask}\n {...rest}\n getContainer={() => targetContainer}\n >\n {children}\n </AntDModal>\n );\n\n // No outer portal or mask; rely on AntD's getContainer to scope to the target container\n return modalNode;\n};\n\nexport default Modal;\n","/**\n * lodash (Custom Build) <https://lodash.com/>\n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors <https://jquery.org/>\n * Released under MIT license <https://lodash.com/license>\n * Based on Underscore.js 1.8.3 <http://underscorejs.org/LICENSE>\n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match leading and trailing whitespace. */\nvar reTrim = /^\\s+|\\s+$/g;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeMax = Math.max,\n nativeMin = Math.min;\n\n/**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\nvar now = function() {\n return root.Date.now();\n};\n\n/**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\nfunction debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n result = wait - timeSinceLastCall;\n\n return maxing ? nativeMin(result, maxWait - timeSinceLastInvoke) : result;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\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(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\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 debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = value.replace(reTrim, '');\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = debounce;\n","export const systemMessages = {\n // Common messages\n createSuccess: function (value: string) {\n return `${value} created successfully.`;\n },\n createFailure: function (value: string) {\n return `${value} creation failed. Please retry.`;\n },\n updateSuccess: function (value: string) {\n return `${value} updated successfully.`;\n },\n updateFailure: function (value: string) {\n return `${value} update failed. Please retry.`;\n },\n copySuccess: function (value: string) {\n return `${value} copied successfully.`;\n },\n copyFailure: function (value: string) {\n return `${value} copy failed. Please retry.`;\n },\n copyToClipboard: function (value: string) {\n return `${value} copied to clipboard.`;\n },\n moveSuccess: function (value: string) {\n return `${value} moved successfully.`;\n },\n moveFailure: function (value: string) {\n return `${value} move failed. Please retry.`;\n },\n restoreSuccess: function (value: string) {\n return `${value} restored successfully.`;\n },\n resetSuccess: function (value: string) {\n return `${value} reset successfully.`;\n },\n resetFailure: function (value: string) {\n return `${value} reset failed. Please retry.`;\n },\n restoreFailure: function (value: string) {\n return `${value} restore failed. Please retry.`;\n },\n deleteSuccess: function (value: string) {\n return `${value} deleted successfully.`;\n },\n deleteFailure: function (value: string) {\n return `${value} delete failed. Please retry.`;\n },\n addSuccess: function (value: string) {\n return `${value} added successfully.`;\n },\n addFailure: function (value: string) {\n return `${value} add failed. Please retry.`;\n },\n removeSuccess: function (value: string) {\n return `${value} removed successfully.`;\n },\n removeFailure: function (value: string) {\n return `${value} remove failed. Please retry.`;\n },\n importSuccess: function (value: string) {\n return `${value} imported successfully.`;\n },\n importFailure: function (value: string) {\n return `${value} import failed. Please retry.`;\n },\n exportSuccess: function (value: string) {\n return `${value} exported successfully.`;\n },\n exportFailure: function (value: string) {\n return `${value} export failed. Please retry.`;\n },\n installSuccess: function (value: string) {\n return `${value} installed successfully.`;\n },\n duplicateSuccess: function (value: string) {\n return `${value} duplicated successfully.`;\n },\n installFailure: function (value: string) {\n return `${value} install failed. Please retry.`;\n },\n uninstallSuccess: function (value: string) {\n return `${value} uninstalled successfully.`;\n },\n uninstallFailure: function (value: string) {\n return `${value} uninstall failed. Please retry.`;\n },\n approveSuccess: function (value: string) {\n return `${value} approved successfully.`;\n },\n approveFailure: function (value: string) {\n return `${value} approve failed. Please retry.`;\n },\n rejectSuccess: function (value: string) {\n return `${value} rejected successfully.`;\n },\n rejectFailure: function (value: string) {\n return `${value} reject failed. Please retry.`;\n },\n archiveSuccess: function (value: string) {\n return `${value} archived successfully.`;\n },\n archiveFailure: function (value: string) {\n return `${value} archive failed. Please retry.`;\n },\n activateSuccess: function (value: string) {\n return `${value} activated successfully.`;\n },\n activateFailure: function (value: string) {\n return `${value} activation failed. Please retry.`;\n },\n deactivateSuccess: function (value: string) {\n return `${value} deactivated successfully.`;\n },\n deactivateFailure: function (value: string) {\n return `${value} deactivation failed. Please retry.`;\n },\n\n fileSizeLimit: function (size: string, unit: string) {\n return `File size exceeds the limit of ${size} ${unit}.`;\n },\n fetchFailure: function (value: string) {\n return `An error occurred while fetching ${value}. Please retry.`;\n },\n requiredField: function (value: string) {\n return `${value} is required.`;\n },\n existsError: function (value: string) {\n return `${value} already exists.`;\n },\n shouldNotContainOnlySpaces: function (value: string) {\n return `${value} shouldn't contain only spaces.`;\n },\n notAllowed: function (value: string) {\n return `${value} not allowed.`;\n },\n\n allowed: function (value: string) {\n return `${value} allowed.`;\n },\n multipleNotAllowed: function (value: string) {\n return `Multiple ${value} not allowed.`;\n },\n notFound: function (value: string) {\n return `${value} not found.`;\n },\n sendForApproval: function (value: string) {\n return `${value} sent for approval.`;\n },\n invalidError: function (value: string) {\n return `Invalid ${value}.`;\n },\n success: function (value: string) {\n return `${value} successful.`;\n },\n initializationError: function (value: string) {\n return `Please initialize the ${value}.`;\n },\n selectError: function (value: string) {\n return `Please select ${value}.`;\n },\n importStarted: function (value: string) {\n return `${value} import has started.`;\n },\n initiationSuccess: function (value: string) {\n return `${value} initiated successfully.`;\n },\n initiationFailure: function (value: string) {\n return `${value} initiation failed. Please retry.`;\n },\n transferSuccess: function (value: string) {\n return `${value} has been successfully transferred.`;\n },\n transferFailure: function (value: string) {\n return `${value} transfer has failed, Please retry.`;\n },\n terminatedSuccess: function (value: string) {\n return `${value} terminated successfully.`;\n },\n terminatedFailure: function (value: string) {\n return `${value} termination failed, Please retry.`;\n },\n markedAs: function (value: string) {\n return `Marked as ${value}.`;\n },\n bulkStatusChangeSuccess: function (value: boolean) {\n return `Status changed to ${value ? 'locked' : 'unlocked'} successfully.`;\n },\n bulkStatusChangeFailure: function (value: boolean) {\n return `Status change to ${value ? 'locked' : 'unlocked'} failed, Please retry.`;\n },\n downloading: function (value: string) {\n return `Downloading ${value}...`;\n },\n downloadFailure: function (value: string) {\n return `Download ${value} failed. Please retry.`;\n },\n // Specific messages\n\n bulkStatusChangeInfo: 'Status change default info',\n bulkStatusChangeDefault: 'Unknown response type',\n bulkDeleteUsersSuccess: 'Users deleted successfully.',\n bulkDeleteUsersFailure: 'Bulk user delete failed, Please retry.',\n errorMessage: 'Something went wrong.',\n requiredFieldError: 'Please fill out all mandatory fields.',\n resetPasswordSuccess: 'Password reset successfully.',\n noItemSelected: 'No item selected.',\n fieldAlreadyExist: 'Field has already been added to this step.',\n fetchingError: 'An error occurred while fetching configuration details.',\n secondaryOwnerLimitExceed: `Can't add more than 3 users to 'Secondary Owner'.`,\n saveChangesAlert: 'Please save the changes before switching tabs.',\n visibleColumnError: 'There must be at least one visible column.',\n sessionExpired: 'Session expired. Please login.',\n invalidFileType: 'Non acceptable file type.',\n triggerNodeError: 'Trigger is required!',\n formatFailed: 'Failed to format.',\n memberRemoveSuccess: 'Team member removed successfully.',\n memberRemoveInfo: 'Team member removed default info.',\n memberRemoveError: 'Unable to remove team member.',\n memberRemoveWarning: 'Unable to remove team member.',\n memberRemoveDefault: 'Unknown response type.',\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable no-console */\nimport debounce from 'lodash.debounce';\nimport { useEffect, useState } from 'react';\nimport { type Monaco } from '@monaco-editor/react';\nimport { systemMessages } from '../utils/messageConstants';\nimport { toast } from 'react-toastify';\n\nexport interface UsePythonSyntaxProps {\n monacoEditor: Monaco | null;\n currentEditorModel: any;\n code: string;\n setCode: (code: string) => void;\n enable: boolean;\n // Optional API functions for Python syntax checking and formatting\n checkSyntaxAPI?: (code: string) => Promise<{ data: { error?: { message: string; line?: number; column?: number } } }>;\n formatCodeAPI?: (code: string) => Promise<{ data: { formatted_code?: string } }>;\n}\n\nexport const usePythonSyntax = ({\n monacoEditor,\n currentEditorModel,\n code,\n setCode,\n enable,\n checkSyntaxAPI,\n formatCodeAPI\n}: UsePythonSyntaxProps) => {\n const [pythonError, setPythonError] = useState<any>(null);\n const [pythonLoading, setPythonLoading] = useState<boolean>(false);\n\n function replacePlaceholders(codeString: string): {\n result: string;\n originalValues: Record<string, string>;\n } {\n const originalValues: Record<string, string> = {};\n let index = 0;\n\n const result = codeString.replace(/{{(.*?)}}/g, (match, p1, offset, string) => {\n // Check if the match is inside quotes\n const beforeMatch = string.slice(0, offset);\n const afterMatch = string.slice(offset + match.length);\n\n // Regular expressions to check if the placeholder is within quotes\n const isInsideDoubleQuotes = beforeMatch.endsWith('\"') && afterMatch.startsWith('\"');\n const isInsideSingleQuotes = beforeMatch.endsWith(\"'\") && afterMatch.startsWith(\"'\");\n\n // If it's inside quotes, don't replace it\n if (isInsideDoubleQuotes || isInsideSingleQuotes) {\n return match;\n }\n\n // Store the original value and replace with the index\n originalValues[`__dynamic_value_${index}`] = match;\n return `\"__dynamic_value_${index++}\"`;\n });\n\n return { result, originalValues };\n }\n\n function restorePlaceholders(modifiedCode: string, originalValues: Record<string, string>): string {\n // Replace all instances of __dynamic_value_{index} with the original value\n return modifiedCode.replace(/\"__dynamic_value_\\d+\"/g, (match) => {\n // Remove the quotes and get the key without the quotes\n const key = match.slice(1, -1);\n\n // Return the original value from the originalValues object\n return originalValues[key] || match; // If key doesn't exist, return the original match\n });\n }\n\n const handleCheckSyntax = async () => {\n if (!monacoEditor || !currentEditorModel || !checkSyntaxAPI) {\n console.warn('Monaco editor, model, or syntax check API not available');\n return;\n }\n\n setPythonLoading(true);\n try {\n const { result } = replacePlaceholders(code);\n const response = await checkSyntaxAPI(result);\n const error = response?.data?.error;\n\n if (error?.message) {\n setPythonError(error);\n // Safely set markers with proper defaults\n const markers = [\n {\n startLineNumber: error.line || 1,\n endLineNumber: error.line || 1,\n startColumn: error.column || 1,\n endColumn: error.column || 1,\n message: error.message,\n severity: monacoEditor.MarkerSeverity?.Error || 8, // 8 is Error severity fallback\n },\n ];\n\n try {\n monacoEditor.editor.setModelMarkers(currentEditorModel, 'owner', markers);\n } catch (markerError) {\n console.warn('Failed to set error markers:', markerError);\n }\n } else {\n setPythonError(null);\n try {\n monacoEditor.editor.setModelMarkers(currentEditorModel, 'owner', []);\n } catch (markerError) {\n console.warn('Failed to clear error markers:', markerError);\n }\n }\n } catch (error) {\n console.warn('Syntax check failed:', error);\n setPythonError(null);\n // Only clear markers if editor is still available\n if (monacoEditor && currentEditorModel) {\n try {\n monacoEditor.editor.setModelMarkers(currentEditorModel, 'owner', []);\n } catch (markerError) {\n console.warn('Failed to clear error markers after error:', markerError);\n }\n }\n } finally {\n setPythonLoading(false);\n }\n };\n\n const handleFormatCode = async () => {\n if (!monacoEditor || !currentEditorModel || !formatCodeAPI) {\n console.warn('Monaco editor, model, or format API not available');\n return;\n }\n\n setPythonLoading(true);\n try {\n const { result, originalValues } = replacePlaceholders(code);\n\n const response = await formatCodeAPI(result);\n if (response?.data?.formatted_code) {\n const formattedCode = restorePlaceholders(response.data.formatted_code, originalValues);\n setCode(formattedCode);\n } else {\n console.warn('No formatted code received from service');\n }\n } catch (error: any) {\n const errorMessage = error?.message || systemMessages.formatFailed;\n console.warn('Code formatting failed:', errorMessage);\n toast.error(errorMessage, {\n toastId: errorMessage,\n });\n } finally {\n setPythonLoading(false);\n }\n };\n\n useEffect(() => {\n if (monacoEditor && enable && checkSyntaxAPI) {\n const debouncedCheckSyntax = debounce(handleCheckSyntax, 500);\n debouncedCheckSyntax();\n return () => {\n debouncedCheckSyntax.cancel();\n };\n }\n }, [code, monacoEditor]);\n\n return {\n pythonError,\n pythonLoading,\n handleCheckSyntax,\n handleFormatCode,\n };\n};\n","/* eslint-disable no-console */\nimport { type Monaco, loader } from '@monaco-editor/react';\n\nclass MonacoManager {\n private static instance: MonacoManager;\n private monaco: Monaco | null = null;\n private initialized = false;\n private initializationPromise: Promise<Monaco> | null = null;\n\n static getInstance(): MonacoManager {\n if (!MonacoManager.instance) {\n MonacoManager.instance = new MonacoManager();\n }\n return MonacoManager.instance;\n }\n\n async initialize(): Promise<Monaco> {\n // If already initialized, return the cached instance\n if (this.initialized && this.monaco) {\n return this.monaco;\n }\n\n // If initialization is in progress, return the existing promise\n if (this.initializationPromise) {\n return this.initializationPromise;\n }\n\n // Start initialization\n this.initializationPromise = this.performInitialization();\n return this.initializationPromise;\n }\n\n private async performInitialization(): Promise<Monaco> {\n try {\n // Configure loader only once, globally\n // loader.config({\n // paths: { vs: 'https://cdnjs.cloudflare.com/ajax/libs/monaco-editor/0.43.0/min/vs/' },\n // });\n\n this.monaco = await loader.init();\n this.initialized = true;\n\n // Clear the promise since initialization is complete\n this.initializationPromise = null;\n\n return this.monaco;\n } catch (error) {\n // Clear the promise on error so we can retry\n this.initializationPromise = null;\n console.error('Failed to initialize Monaco Editor:', error);\n throw new Error(`Monaco Editor initialization failed: ${error instanceof Error ? error.message : 'Unknown error'}`);\n }\n }\n\n getMonaco(): Monaco | null {\n return this.monaco;\n }\n\n isInitialized(): boolean {\n return this.initialized;\n }\n\n /**\n * Safely get an editor instance by index\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n getEditorInstance(index: number = 0): any {\n if (!this.monaco) {\n console.warn('Monaco Editor not initialized');\n return null;\n }\n\n const editors = this.monaco.editor.getEditors();\n if (editors.length <= index) {\n console.warn(`No editor found at index ${index}. Available editors: ${editors.length}`);\n return null;\n }\n\n return editors[index];\n }\n\n /**\n * Get the first available editor instance\n */\n getFirstEditorInstance(): Monaco | null {\n return this.getEditorInstance(0);\n }\n\n /**\n * Safely dispose of disposables with error handling\n */\n static safeDispose(disposables: Array<{ dispose: () => void } | null | undefined>): void {\n disposables.forEach((disposable) => {\n try {\n if (disposable && typeof disposable.dispose === 'function') {\n disposable.dispose();\n }\n } catch (error) {\n console.warn('Error disposing Monaco resource:', error);\n }\n });\n }\n}\n\nexport const monacoManager = MonacoManager.getInstance();\nexport type { Monaco };\n","export const COUNTRY_CODES = [\n 'US', // United States\n 'GB', // United Kingdom\n 'IN', // India\n 'DE', // Germany\n 'FR', // France\n 'CN', // China\n 'JP', // Japan\n 'BR', // Brazil\n 'CA', // Canada\n 'AU', // Australia\n 'IT', // Italy\n 'ES', // Spain\n 'RU', // Russia\n 'KR', // South Korea\n 'ZA', // South Africa\n 'MX', // Mexico\n 'TR', // Turkey\n 'ID', // Indonesia\n 'SA', // Saudi Arabia\n 'AR', // Argentina\n 'NL', // Netherlands\n 'CH', // Switzerland\n 'SE', // Sweden\n 'BE', // Belgium\n 'PL', // Poland\n 'EG', // Egypt\n 'SG', // Singapore\n 'TH', // Thailand\n 'UA', // Ukraine\n 'PK', // Pakistan\n 'BD', // Bangladesh\n 'PH', // Philippines\n 'VN', // Vietnam\n 'MY', // Malaysia\n 'CO', // Colombia\n 'CL', // Chile\n 'NO', // Norway\n 'DK', // Denmark\n 'FI', // Finland\n 'IE', // Ireland\n 'AT', // Austria\n 'GR', // Greece\n 'PT', // Portugal\n 'HU', // Hungary\n 'CZ', // Czech Republic\n 'RO', // Romania\n 'NZ', // New Zealand\n 'AE', // United Arab Emirates\n 'GH', // Ghana\n 'EU', // European Union\n 'MA', // Morocco\n 'NG', // Nigeria\n 'TW', // Taiwan\n 'HK', // Hong Kong\n 'KE', // Kenya\n 'IR', // Iran\n 'PE', // Peru\n 'QA', // Qatar\n 'KW', // Kuwait\n 'LK', // Sri Lanka\n 'NP', // Nepal\n];\n\n// Helper to get country name from code\nexport function countryNameFromCode(code: string): string {\n const map: Record<string, string> = {\n US: 'United States',\n GB: 'United Kingdom',\n IN: 'India',\n DE: 'Germany',\n FR: 'France',\n CN: 'China',\n JP: 'Japan',\n BR: 'Brazil',\n CA: 'Canada',\n AU: 'Australia',\n IT: 'Italy',\n ES: 'Spain',\n RU: 'Russia',\n KR: 'South Korea',\n ZA: 'South Africa',\n MX: 'Mexico',\n TR: 'Turkey',\n ID: 'Indonesia',\n SA: 'Saudi Arabia',\n AR: 'Argentina',\n NL: 'Netherlands',\n CH: 'Switzerland',\n SE: 'Sweden',\n BE: 'Belgium',\n PL: 'Poland',\n EG: 'Egypt',\n SG: 'Singapore',\n TH: 'Thailand',\n UA: 'Ukraine',\n PK: 'Pakistan',\n BD: 'Bangladesh',\n PH: 'Philippines',\n VN: 'Vietnam',\n MY: 'Malaysia',\n CO: 'Colombia',\n CL: 'Chile',\n NO: 'Norway',\n DK: 'Denmark',\n FI: 'Finland',\n IE: 'Ireland',\n AT: 'Austria',\n GR: 'Greece',\n PT: 'Portugal',\n HU: 'Hungary',\n CZ: 'Czech Republic',\n RO: 'Romania',\n NZ: 'New Zealand',\n AE: 'United Arab Emirates',\n GH: 'Ghana',\n EU: 'European Union',\n MA: 'Morocco',\n NG: 'Nigeria',\n TW: 'Taiwan',\n HK: 'Hong Kong',\n KE: 'Kenya',\n IR: 'Iran',\n PE: 'Peru',\n QA: 'Qatar',\n KW: 'Kuwait',\n LK: 'Sri Lanka',\n NP: 'Nepal',\n };\n return map[code] || code;\n}\n\n","import { Dispatch, SetStateAction } from 'react';\n\nexport type JsonValue = string | number | boolean | null | JsonObject | JsonArray;\nexport type JsonObject = { [key: string]: JsonValue };\nexport type JsonArray = JsonValue[];\n\nexport interface IJsonGridProps {\n onChange?: (value: string) => void;\n isEditMode?: boolean;\n isDarkMode?: boolean;\n style?: React.CSSProperties;\n}\n\nexport interface IJsonGridViewerContext {\n allExpanded: boolean;\n toggleAll: () => void;\n isEditMode: boolean;\n isDarkMode: boolean;\n selectedPaths: string[];\n setSelectedPaths: Dispatch<SetStateAction<string[]>>;\n selectedTopLevelPaths: string[];\n setSelectedTopLevelPaths: Dispatch<SetStateAction<string[]>>;\n selectedPathModification: string | null;\n setSelectedPathModification: Dispatch<SetStateAction<string | null>>;\n selectedPathForEdit: string | null;\n setSelectedPathForEdit: Dispatch<SetStateAction<string | null>>;\n jsonData: JsonObject | JsonArray;\n setJsonData: Dispatch<SetStateAction<JsonObject | JsonArray>>;\n error: string | null;\n setError: Dispatch<SetStateAction<string | null>>;\n handleDelete: (paths: string[]) => void;\n handleDuplicate: (paths: string[]) => void;\n handleCopy: (paths: string[]) => Promise<boolean>;\n setIsAddKeyModalOpen: Dispatch<SetStateAction<boolean>>;\n isAddKeyModalOpen: boolean;\n handleAddKey: (path: string, key: string, v: string | number | boolean | null | JsonArray | JsonObject | undefined) => void;\n}\n\nexport const DataType = {\n STRING: 'string',\n NUMBER: 'number',\n BOOLEAN: 'boolean',\n NULL: 'null',\n OBJECT: 'object',\n ARRAY: 'array',\n} as const;\n\nexport const DataTypeBadgeClass: Record<string, string> = {\n [DataType.ARRAY]: 'text-purple-600 bg-purple-100',\n [DataType.OBJECT]: 'text-warning-600 bg-warning-100',\n [DataType.STRING]: 'text-success-600 bg-success-100',\n [DataType.NUMBER]: 'text-blue-600 bg-blue-100',\n [DataType.BOOLEAN]: 'text-purple-600 bg-purple-100',\n [DataType.NULL]: 'text-neutral-600 bg-neutral-100',\n};\n\nexport const DataTypeOptions = [\n { label: 'String', value: DataType.STRING },\n { label: 'Number', value: DataType.NUMBER },\n { label: 'Boolean', value: DataType.BOOLEAN },\n { label: 'Null', value: DataType.NULL },\n { label: 'Object', value: DataType.OBJECT },\n { label: 'Array', value: DataType.ARRAY },\n];\n\n\n\n","import { createContext, useContext } from 'react';\nimport { IJsonGridViewerContext } from './types';\n\nexport const JsonGridViewerContext = createContext<IJsonGridViewerContext | null>(null);\n\nexport const JsonGridViewerContextProvider = JsonGridViewerContext.Provider;\n\nexport const useJsonGridViewerContext = () => {\n const context = useContext(JsonGridViewerContext);\n if (!context) {\n throw new Error('useJsonGridViewerContext must be used within a JsonGridViewerContextProvider');\n }\n return context;\n};\n\n\n\n","import { DataType, JsonValue } from './types';\n\nexport const getDataType = (value: JsonValue): string => {\n if (value === null) return DataType.NULL;\n if (Array.isArray(value)) return DataType.ARRAY;\n if (typeof value === 'object') return DataType.OBJECT;\n return typeof value;\n};\n\nexport const filterTopLevelPaths = (paths: string[]): string[] => {\n // Sort shortest to longest (parents come before children)\n const sorted = [...paths].sort((a, b) => a.length - b.length);\n const result: string[] = [];\n\n for (const path of sorted) {\n // Only keep if no parent is present in the result\n const isChild = result.some((parent) => path !== parent && path.startsWith(parent + '.'));\n if (!isChild) {\n result.push(path);\n }\n }\n return result;\n};\n\nexport const parseJson = (value: string): any => {\n if (!value || value.trim() === '') {\n return {};\n }\n return JSON.parse(value);\n};\n\n\n\n","import { useCallback } from 'react';\nimport { JsonArray, JsonObject, JsonValue } from './types';\n\nexport const useCheckboxSelection = (\n selectedPaths: string[],\n setSelectedPaths: (paths: string[]) => void\n) => {\n // Helper function to get all child paths for a given parent path\n const getAllChildPaths = useCallback(\n (parentPath: string, sourceData: JsonObject | JsonArray): string[] => {\n const childPaths: string[] = [];\n\n const collectChildPaths = (obj: JsonObject | JsonArray, currentPath: string) => {\n if (Array.isArray(obj)) {\n obj.forEach((value, index) => {\n const newPath = `${currentPath}.${index}`;\n childPaths.push(newPath);\n if (typeof value === 'object' && value !== null) {\n collectChildPaths(value as JsonObject | JsonArray, newPath);\n }\n });\n } else if (obj && typeof obj === 'object') {\n Object.entries(obj).forEach(([key, value]) => {\n const newPath = `${currentPath}.${key}`;\n childPaths.push(newPath);\n if (typeof value === 'object' && value !== null) {\n collectChildPaths(value as JsonObject | JsonArray, newPath);\n }\n });\n }\n };\n\n collectChildPaths(sourceData, parentPath);\n return childPaths;\n },\n []\n );\n\n // Handler for checkbox selection with hierarchical behavior\n const handleCheckboxChange = useCallback(\n (fullPath: string, isChecked: boolean, value: JsonValue, isExpandable: boolean) => {\n if (isChecked) {\n // When selecting, include the current path and all its children\n const pathsToAdd = [fullPath];\n if (isExpandable) {\n const childPaths = getAllChildPaths(fullPath, value as JsonObject | JsonArray);\n pathsToAdd.push(...childPaths);\n }\n setSelectedPaths(Array.from(new Set([...selectedPaths, ...pathsToAdd])));\n } else {\n // When deselecting, remove the current path and all its children\n const pathsToRemove = [fullPath];\n if (isExpandable) {\n const childPaths = getAllChildPaths(fullPath, value as JsonObject | JsonArray);\n pathsToRemove.push(...childPaths);\n }\n setSelectedPaths(selectedPaths?.filter((p) => !pathsToRemove.includes(p)) || []);\n }\n },\n [selectedPaths, setSelectedPaths, getAllChildPaths]\n );\n\n // Check if a path is selected\n const isPathSelected = useCallback(\n (path: string) => {\n return selectedPaths?.includes(path) || false;\n },\n [selectedPaths]\n );\n\n return {\n handleCheckboxChange,\n isPathSelected,\n getAllChildPaths,\n };\n};\n\n\n\n","import cn from 'classnames';\nimport { ChangeEventHandler, FC, useEffect, useState } from 'react';\nimport { useJsonGridViewerContext } from './JsonGridViewerContext';\nimport { DataType, JsonValue } from './types';\nimport { getDataType } from './utils';\nimport { BaseInputField } from '../../forms/base-input-field/BaseInputField';\nimport { Toggle } from '../../forms/toggle/Toggle';\n\nexport const JsonValueDisplay: FC<{\n value: JsonValue;\n path: string;\n onChange: (path: string, newValue: JsonValue) => void;\n isDarkMode?: boolean;\n}> = ({ value, path, onChange, isDarkMode = false }) => {\n const [inputValue, setInputValue] = useState<string>('');\n const dataType = getDataType(value);\n const { selectedPathForEdit, setSelectedPathForEdit } = useJsonGridViewerContext();\n\n useEffect(() => {\n if (dataType === DataType.STRING) {\n setInputValue(value as string);\n } else if (dataType === DataType.NUMBER) {\n setInputValue(String(value));\n } else if (dataType === DataType.BOOLEAN) {\n setInputValue(String(value));\n } else if (dataType === DataType.NULL) {\n setInputValue('null');\n }\n }, [value, dataType]);\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLSelectElement>) => {\n setInputValue(e.target.value);\n };\n\n const handleBlur = () => {\n try {\n let parsedValue: JsonValue;\n if (dataType === DataType.NUMBER) {\n parsedValue = Number(inputValue);\n if (inputValue.trim() === '') throw new Error('Empty number');\n parsedValue = Number(inputValue);\n if (Number.isNaN(parsedValue)) {\n throw new Error('Invalid number');\n }\n } else if (dataType === DataType.BOOLEAN) {\n if (inputValue.toLowerCase() === 'true') {\n parsedValue = true;\n } else if (inputValue.toLowerCase() === 'false') {\n parsedValue = false;\n } else {\n throw new Error('Invalid boolean value');\n }\n } else if (dataType === DataType.NULL) {\n if (inputValue.toLowerCase() === 'null') {\n parsedValue = null;\n } else {\n throw new Error('Invalid null value');\n }\n } else {\n parsedValue = inputValue;\n }\n onChange(path, parsedValue);\n setSelectedPathForEdit(null);\n } catch (_error) {\n if (dataType === DataType.STRING) {\n setInputValue(value as string);\n } else if (dataType === DataType.NUMBER) {\n setInputValue(String(value));\n } else if (dataType === DataType.BOOLEAN) {\n setInputValue(String(value));\n } else if (dataType === DataType.NULL) {\n setInputValue('null');\n }\n }\n };\n\n if (dataType === DataType.BOOLEAN) {\n return <Toggle isChecked={value as boolean} onChange={(val) => onChange(path, val)} />;\n }\n\n if (dataType === DataType.NULL) {\n return <span className={isDarkMode ? 'text-neutral-400 italic' : 'text-neutral-500 italic'}>null</span>;\n }\n\n if (selectedPathForEdit === path && dataType === DataType.NUMBER)\n return (\n <BaseInputField\n value={inputValue}\n onChange={(v) => {\n const withSingleDot = v.replace(/\\.(?=.*\\.)/g, '');\n const numericValue = withSingleDot.replace(/[^\\d.-]/g, '');\n setInputValue(numericValue);\n }}\n className='w-full'\n onBlur={handleBlur}\n />\n );\n\n return selectedPathForEdit === path && dataType === DataType.STRING ? (\n <div className='w-full min-w-36'>\n <textarea\n value={inputValue}\n onChange={handleChange as unknown as ChangeEventHandler<HTMLTextAreaElement>}\n onBlur={handleBlur}\n className={`w-full min-w-36 rounded-lg px-2 py-1 text-sm focus:outline-none focus:border-blue-500 border resize-none hover:resize-y ${\n isDarkMode ? 'bg-black-800 text-white' : 'bg-white text-black'\n }`}\n rows={1}\n />\n </div>\n ) : (\n <span className={cn(isDarkMode ? 'text-neutral-400' : 'text-neutral-900', 'text-sm font-medium')}>{value as string}</span>\n );\n};\n\n\n\n","import cn from 'classnames';\nimport { FC, useEffect, useState } from 'react';\nimport { useJsonGridViewerContext } from './JsonGridViewerContext';\nimport { useCheckboxSelection } from './hooks';\nimport { DataType, DataTypeBadgeClass, JsonArray, JsonObject, JsonValue } from './types';\nimport { getDataType } from './utils';\nimport { JsonValueDisplay } from './JsonValueDisplay';\nimport { CheckboxComponent } from '../../forms/checkbox/CheckboxComponent';\n\n// Simple icons for the grid\nconst KeyboardArrowRightIcon = ({ isExpanded }: { isExpanded: boolean }) => (\n <svg\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n className={cn(isExpanded ? 'rotate-90' : 'rotate-0', 'transition-transform duration-200')}\n >\n <path d=\"M8.59 16.59L13.17 12 8.59 7.41 10 6l6 6-6 6-1.41-1.41z\" />\n </svg>\n);\n\nconst ContentCopyIcon = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\" />\n </svg>\n);\n\nconst MoreVertIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"text-neutral-500 dark:text-neutral-400\">\n <path d=\"M12 8c1.1 0 2-.9 2-2s-.9-2-2-2-2 .9-2 2 .9 2 2 2zm0 2c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2zm0 6c-1.1 0-2 .9-2 2s.9 2 2 2 2-.9 2-2-.9-2-2-2z\" />\n </svg>\n);\n\nexport const NestedJsonGrid: FC<{\n data: JsonObject | JsonArray;\n path: string;\n onChange: (path: string, newValue: JsonValue) => void;\n}> = ({ data, path, onChange }) => {\n const isArray = Array.isArray(data);\n\n const [expandedKeys, setExpandedKeys] = useState<string[]>([]);\n const { allExpanded, isDarkMode, selectedPaths, setSelectedPaths, setSelectedPathModification, isEditMode, handleCopy } =\n useJsonGridViewerContext();\n\n const { handleCheckboxChange, isPathSelected } = useCheckboxSelection(selectedPaths, setSelectedPaths);\n\n const getAllExpandablePaths = () => {\n const paths: string[] = [];\n\n const collectPaths = (obj: JsonObject | JsonArray, currentPath: string) => {\n if (Array.isArray(obj)) {\n obj.forEach((value, index) => {\n const newPath = `${currentPath}.${index}`;\n if (typeof value === 'object' && value !== null) {\n paths.push(newPath);\n collectPaths(value as JsonObject | JsonArray, newPath);\n }\n });\n } else if (obj && typeof obj === 'object') {\n Object.entries(obj).forEach(([key, value]) => {\n const newPath = `${currentPath}.${key}`;\n if (typeof value === 'object' && value !== null) {\n paths.push(newPath);\n collectPaths(value as JsonObject | JsonArray, newPath);\n }\n });\n }\n };\n\n collectPaths(data, path);\n return paths;\n };\n\n useEffect(() => {\n if (!data) {\n return;\n }\n if (allExpanded) {\n setExpandedKeys(getAllExpandablePaths());\n } else {\n setExpandedKeys([]);\n }\n }, [allExpanded, data, path]);\n\n const toggleExpand = (key: string) => {\n setExpandedKeys((prev) => (prev.includes(key) ? prev.filter((k) => k !== key) : [...prev, key]));\n };\n\n const handleNestedChange = (fullPath: string, newValue: JsonValue) => {\n onChange(fullPath, newValue);\n };\n\n const isOutermost = path === '';\n\n const renderNestedValue = (key: string | number, value: JsonValue, currentPath: string, isFirst: boolean, isLast: boolean) => {\n const dataType = getDataType(value);\n const isExpandable = dataType === DataType.OBJECT || dataType === DataType.ARRAY;\n const fullPath = `${currentPath}.${key}`;\n const isExpanded = expandedKeys.includes(fullPath);\n\n return (\n <tr key={fullPath} className={cn('border-neutral-300 dark:border-neutral-700', isOutermost ? 'border-b' : isLast ? 'border-b-0' : 'border-b')}>\n <td\n className={cn(\n `px-3 py-4 align-top border-r text-sm font-medium w-1/4`,\n isDarkMode ? 'text-neutral-200 bg-black-700' : 'bg-neutral-100 text-[#101828]',\n isFirst && !isOutermost && 'rounded-tl-xl',\n isLast && !isOutermost && 'rounded-bl-xl',\n )}\n >\n <div className='flex items-center'>\n {isEditMode && (\n <CheckboxComponent\n id={`checkbox-${fullPath}`}\n label={''}\n isChecked={isPathSelected(fullPath)}\n onChange={(event) => handleCheckboxChange(fullPath, event.target.checked, value, isExpandable)}\n />\n )}\n <span className='text-neutral-500 dark:text-neutral-400 whitespace-nowrap'>{key}</span>\n </div>\n </td>\n <td className='!w-[120px] py-4 px-3 align-top bg-white dark:bg-black-800'>\n <div className='flex items-start justify-center h-full'>\n <span className={`${DataTypeBadgeClass[dataType]} px-2 py-1 rounded-xl text-xs`}>{dataType?.toUpperCase()}</span>\n </div>\n </td>\n <td\n className={cn(\n 'border-l border-neutral-300 dark:border-neutral-700 bg-white dark:bg-black-800',\n !isEditMode && isFirst && !isOutermost && 'rounded-tr-xl',\n !isEditMode && isLast && !isOutermost && 'rounded-br-xl',\n '!min-w-36',\n )}\n >\n <div className='py-2 px-3 flex items-center justify-start h-full'>\n {isExpandable ? (\n <div>\n <div className='flex items-center'>\n <button\n onClick={() => toggleExpand(fullPath)}\n className={`mr-1 p-0.5 flex items-center justify-center rounded ${\n isDarkMode ? 'hover:bg-black-700 text-neutral-200' : 'hover:bg-neutral-300 text-neutral-600'\n }`}\n >\n <KeyboardArrowRightIcon isExpanded={isExpanded} />\n </button>\n <span className={cn(isDarkMode ? 'text-neutral-400' : 'text-neutral-900', 'text-sm font-medium')}>\n {isExpanded\n ? dataType === DataType.ARRAY\n ? `[${(value as JsonArray).length} items]`\n : `{${Object.keys(value as JsonObject).length} items}`\n : dataType === DataType.ARRAY\n ? `[${(value as JsonArray).length} items]`\n : `{...}`}\n </span>\n {!isEditMode && (\n <button className='ml-2' onClick={() => handleCopy([fullPath])}>\n <ContentCopyIcon />\n </button>\n )}\n </div>\n {isExpanded && ((Array.isArray(value) && value?.length > 0) || Object.keys(value as JsonObject).length > 0) && (\n <div className='ml-1.5 mt-3'>\n <NestedJsonGrid data={value as JsonObject | JsonArray} path={fullPath} onChange={handleNestedChange} />\n </div>\n )}\n </div>\n ) : (\n <JsonValueDisplay value={value} path={fullPath} onChange={handleNestedChange} isDarkMode={isDarkMode} />\n )}\n </div>\n </td>\n {isEditMode && (\n <td\n className={cn(\n 'w-6 py-3.5 align-top bg-white dark:bg-black-800',\n isFirst && !isOutermost && 'rounded-tr-xl',\n isLast && !isOutermost && 'rounded-br-xl',\n )}\n >\n <button\n onClick={() => setSelectedPathModification(fullPath)}\n className=\"p-1 rounded hover:bg-neutral-100 dark:hover:bg-black-700\"\n >\n <MoreVertIcon />\n </button>\n </td>\n )}\n </tr>\n );\n };\n\n if (!data) {\n return null;\n }\n\n return (\n <div className={!isOutermost ? 'border border-neutral-300 dark:border-neutral-700 rounded-xl' : 'border-none'}>\n <table className={cn('w-full')}>\n <tbody>\n {isArray\n ? (data as JsonArray).map((value, index) => renderNestedValue(index, value, path, index === 0, index === (data as JsonArray).length - 1))\n : Object.entries(data as JsonObject).map(([key, value], index) =>\n renderNestedValue(key, value, path, index === 0, index === Object.keys(data as JsonObject).length - 1),\n )}\n </tbody>\n </table>\n </div>\n );\n};\n\n\n\n","import { FC } from 'react';\nimport cn from 'classnames';\nimport { useJsonGridViewerContext } from './JsonGridViewerContext';\nimport { IJsonGridProps, JsonArray, JsonObject, JsonValue } from './types';\nimport { NestedJsonGrid } from './NestedJsonGrid';\n\nexport const JsonGridCore: FC<IJsonGridProps> = ({ onChange, style }) => {\n const { isDarkMode, error, jsonData, setJsonData } = useJsonGridViewerContext();\n\n if (!jsonData) {\n return null;\n }\n\n const handleChange = (path: string, newValue: JsonValue) => {\n if (!path || path === '.') {\n return;\n }\n\n const pathParts = path.split('.');\n pathParts.shift();\n\n const newJsonData = structuredClone(jsonData);\n let target: any = newJsonData;\n\n for (let i = 0; i < pathParts.length - 1; i++) {\n const key = pathParts[i];\n if (Array.isArray(target)) {\n const index = parseInt(key, 10);\n target = target[index] as JsonObject | JsonArray;\n } else {\n target = target[key] as JsonObject | JsonArray;\n }\n }\n\n const finalKey = pathParts[pathParts.length - 1];\n if (Array.isArray(target)) {\n const index = parseInt(finalKey, 10);\n target[index] = newValue;\n } else {\n target[finalKey] = newValue;\n }\n\n setJsonData(newJsonData);\n onChange?.(JSON.stringify(newJsonData, null, 2));\n };\n\n if (error) {\n return (\n <div\n className={\n isDarkMode ? 'p-4 bg-red-900 text-red-300 border border-red-800 rounded' : 'p-4 bg-red-50 text-red-600 border border-red-300 rounded'\n }\n >\n {error}\n </div>\n );\n }\n\n return (\n <div\n className={cn(isDarkMode ? 'shadow-sm overflow-auto' : 'bg-white dark:bg-black-800 shadow-sm overflow-auto')}\n style={style}\n id='json-grid-core-container'\n >\n <div className='p-0 overflow-auto'>\n <NestedJsonGrid data={jsonData} path='' onChange={handleChange} />\n </div>\n </div>\n );\n};\n\n\n\n"," import { type FC, useMemo } from 'react';\nimport Button from '../../button/Button';\nimport { Modal } from '../../data-display/modal/Modal';\n\nexport interface IConfirmationModalProps {\n /** Whether the modal is visible */\n visible: boolean;\n /** Callback when modal is closed */\n onClose: (value: any) => void;\n /** Content/message of the confirmation popup */\n content: React.ReactNode;\n /** Title of the confirmation popup */\n title: React.ReactNode;\n /** Callback when confirmed */\n onConfirm: () => void;\n /** Whether the action is in loading state */\n isLoading?: boolean;\n /** Variant of the modal ('destructive' for delete actions) */\n variant?: 'destructive' | 'default';\n /** Text for the cancel button (default: 'Cancel') */\n cancelText?: string;\n /** Text for the confirm button (default: 'Confirm' or 'Delete' based on variant) */\n confirmText?: string;\n}\n\n/**\n * ConfirmationModal component for displaying confirmation dialogs\n *\n * @example\n * ```tsx\n * <ConfirmationModal\n * visible={isOpen}\n * title=\"Delete Item\"\n * content=\"Are you sure you want to delete this item?\"\n * onConfirm={() => handleDelete()}\n * onClose={() => setIsOpen(false)}\n * variant=\"destructive\"\n * />\n * ```\n */\nexport const ConfirmationModal: FC<IConfirmationModalProps> = ({\n visible,\n onClose,\n content,\n title,\n onConfirm,\n isLoading,\n variant,\n cancelText = 'Cancel',\n confirmText,\n}: IConfirmationModalProps) => {\n \n const footer = useMemo(\n () => (\n <div className='flex justify-end gap-3'>\n <Button\n id={`btn-confirmation-modal-cancel`}\n onClick={onClose}\n disabled={isLoading}\n status='secondary-neutral'\n >\n {cancelText}\n </Button>\n <Button\n id={`btn-confirmation-modal-${variant === 'destructive' ? 'Delete' : 'Confirm'}`}\n onClick={onConfirm}\n isLoading={isLoading}\n status={variant === 'destructive' ? 'error' : 'primary'}\n >\n {confirmText || (variant === 'destructive' ? 'Delete' : 'Confirm')}\n </Button>\n </div>\n ),\n [onClose, onConfirm, isLoading, variant, cancelText, confirmText],\n );\n \n if (!visible) return null;\n \n return (\n <Modal title={title} open={visible} footer={footer} onCancel={onClose} zIndex={9999}>\n <div className='my-5'>\n <div className='text-neutral-400 font-inter text-base'>{content}</div>\n </div>\n </Modal>\n );\n};\n\nexport default ConfirmationModal;\n\n","import { Dropdown } from \"antd\";\nimport cn from \"classnames\";\nimport { motion } from \"framer-motion\";\nimport { useEffect, useRef, useState, type FC, type ReactNode } from \"react\";\nimport { useTranslation } from \"react-i18next\";\nimport { Typography } from \"../data-display/typography/Typography\";\nimport { OptionButton } from \"../buttons/option-button/OptionButton\";\nimport IconButton from \"../button/IconButton\";\nimport Tooltip from \"../tooltip/Tooltip\";\n\n/**\n * Close icon component\n */\nconst CloseIcon: FC<{ size?: number; fill?: string; className?: string }> = ({\n size = 24,\n fill = \"currentColor\",\n className,\n}) => (\n <svg\n className={className}\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill={fill}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M10.0002 11.1666L5.91683 15.2499C5.76405 15.4027 5.56961 15.4791 5.3335 15.4791C5.09739 15.4791 4.90294 15.4027 4.75016 15.2499C4.59738 15.0971 4.521 14.9027 4.521 14.6666C4.521 14.4305 4.59738 14.236 4.75016 14.0833L8.8335 9.99992L4.75016 5.91659C4.59738 5.76381 4.521 5.56936 4.521 5.33325C4.521 5.09714 4.59738 4.9027 4.75016 4.74992C4.90294 4.59714 5.09739 4.52075 5.3335 4.52075C5.56961 4.52075 5.76405 4.59714 5.91683 4.74992L10.0002 8.83325L14.0835 4.74992C14.2363 4.59714 14.4307 4.52075 14.6668 4.52075C14.9029 4.52075 15.0974 4.59714 15.2502 4.74992C15.4029 4.9027 15.4793 5.09714 15.4793 5.33325C15.4793 5.56936 15.4029 5.76381 15.2502 5.91659L11.1668 9.99992L15.2502 14.0833C15.4029 14.236 15.4793 14.4305 15.4793 14.6666C15.4793 14.9027 15.4029 15.0971 15.2502 15.2499C15.0974 15.4027 14.9029 15.4791 14.6668 15.4791C14.4307 15.4791 14.2363 15.4027 14.0835 15.2499L10.0002 11.1666Z\" />\n </svg>\n);\n\n/**\n * Dropdown arrow icon component\n */\nconst DropdownArrowIcon: FC<{ fill?: string; className?: string }> = ({\n fill = \"#cccccc\",\n className,\n}) => (\n <svg\n height=\"20\"\n width=\"20\"\n viewBox=\"0 0 20 20\"\n focusable=\"false\"\n className={className}\n >\n <path\n fill={fill}\n d=\"M4.516 7.548c0.436-0.446 1.043-0.481 1.576 0l3.908 3.747 3.908-3.747c0.533-0.481 1.141-0.446 1.574 0 0.436 0.445 0.408 1.197 0 1.615-0.406 0.418-4.695 4.502-4.695 4.502-0.217 0.223-0.502 0.335-0.787 0.335s-0.57-0.112-0.789-0.335c0 0-4.287-4.084-4.695-4.502s-0.436-1.17 0-1.615z\"\n />\n </svg>\n);\n\n/**\n * Trash icon component\n */\nconst TrashIcon: FC<{\n size?: number;\n fill?: string;\n className?: string;\n onClick?: () => void;\n}> = ({ size = 24, fill = \"currentColor\", className, onClick }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill={fill}\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n onClick={onClick}\n >\n <g mask=\"url(#mask0_6454_18843)\">\n <path d=\"M5.8335 17.5C5.37516 17.5 4.9828 17.3368 4.65641 17.0104C4.33002 16.684 4.16683 16.2917 4.16683 15.8333V5C3.93072 5 3.7328 4.92014 3.57308 4.76042C3.41336 4.60069 3.3335 4.40278 3.3335 4.16667C3.3335 3.93056 3.41336 3.73264 3.57308 3.57292C3.7328 3.41319 3.93072 3.33333 4.16683 3.33333H7.50016C7.50016 3.09722 7.58002 2.89931 7.73975 2.73958C7.89947 2.57986 8.09738 2.5 8.3335 2.5H11.6668C11.9029 2.5 12.1009 2.57986 12.2606 2.73958C12.4203 2.89931 12.5002 3.09722 12.5002 3.33333H15.8335C16.0696 3.33333 16.2675 3.41319 16.4272 3.57292C16.587 3.73264 16.6668 3.93056 16.6668 4.16667C16.6668 4.40278 16.587 4.60069 16.4272 4.76042C16.2675 4.92014 16.0696 5 15.8335 5V15.8333C15.8335 16.2917 15.6703 16.684 15.3439 17.0104C15.0175 17.3368 14.6252 17.5 14.1668 17.5H5.8335ZM5.8335 5V15.8333H14.1668V5H5.8335ZM7.50016 13.3333C7.50016 13.5694 7.58002 13.7674 7.73975 13.9271C7.89947 14.0868 8.09738 14.1667 8.3335 14.1667C8.56961 14.1667 8.76752 14.0868 8.92725 13.9271C9.08697 13.7674 9.16683 13.5694 9.16683 13.3333V7.5C9.16683 7.26389 9.08697 7.06597 8.92725 6.90625C8.76752 6.74653 8.56961 6.66667 8.3335 6.66667C8.09738 6.66667 7.89947 6.74653 7.73975 6.90625C7.58002 7.06597 7.50016 7.26389 7.50016 7.5V13.3333ZM10.8335 13.3333C10.8335 13.5694 10.9134 13.7674 11.0731 13.9271C11.2328 14.0868 11.4307 14.1667 11.6668 14.1667C11.9029 14.1667 12.1009 14.0868 12.2606 13.9271C12.4203 13.7674 12.5002 13.5694 12.5002 13.3333V7.5C12.5002 7.26389 12.4203 7.06597 12.2606 6.90625C12.1009 6.74653 11.9029 6.66667 11.6668 6.66667C11.4307 6.66667 11.2328 6.74653 11.0731 6.90625C10.9134 7.06597 10.8335 7.26389 10.8335 7.5V13.3333Z\" />\n </g>\n </svg>\n);\n\n/**\n * Configuration for action buttons in the floating bar\n */\nexport type ButtonConfig = {\n /** Button label text */\n label?: string;\n /** Icon element to display */\n icon: ReactNode;\n /** Click handler for the action */\n onClick?: () => void;\n /** Icon for dropdown mode */\n dropdownIcon?: ReactNode;\n /** Whether the action is visible */\n visible?: boolean;\n /** Whether the action is disabled */\n disabled?: boolean;\n /** Tooltip text */\n tooltip?: string;\n /** Whether to hide the label text */\n hideLabel?: boolean;\n /** Action type */\n type?: \"button\" | \"dropdown\";\n /** Dropdown trigger mode */\n dropdownTrigger?: \"click\" | \"hover\";\n /** Dropdown menu items */\n dropdownItems?: Array<{\n label: ReactNode;\n key: string;\n disabled?: boolean;\n }>;\n};\n\n/**\n * Props for the FloatingBar component\n */\nexport type TFloatingBar = {\n /** Whether the floating bar is visible */\n show?: boolean;\n /** Close handler */\n onClose: () => void;\n /** Whether this is used in flow dashboard layout */\n isFlowDashboard?: boolean;\n /** Array of action configurations */\n actionItems: ButtonConfig[];\n /** Number of selected items */\n selectedItemsCount?: number;\n /** Delete action configuration */\n deleteConfig?: {\n label?: string;\n disabled?: boolean;\n onClick?: () => void;\n };\n /** Whether to show action background */\n showActionBg?: boolean;\n};\n\n/**\n * FloatingBar component provides a floating action bar for bulk operations.\n * Drop-in replacement matching the lax-web-portal implementation.\n *\n * @example\n * ```tsx\n * <FloatingBar\n * show={selectedItems.length > 0}\n * onClose={() => setSelectedItems([])}\n * selectedItemsCount={selectedItems.length}\n * actionItems={[\n * {\n * label: \"Edit\",\n * icon: <EditIcon size={16} />,\n * onClick: handleEdit,\n * },\n * {\n * label: \"Archive\",\n * icon: <ArchiveIcon size={16} />,\n * onClick: handleArchive,\n * },\n * ]}\n * deleteConfig={{\n * label: \"Delete\",\n * onClick: handleDelete,\n * }}\n * />\n * ```\n */\nexport const FloatingBar: FC<TFloatingBar> = (props) => {\n const {\n show,\n isFlowDashboard,\n onClose,\n actionItems,\n selectedItemsCount,\n deleteConfig,\n showActionBg,\n } = props;\n\n const { t } = useTranslation();\n const [showDropdown, setShowDropdown] = useState<boolean>(false);\n const [showButtons, setShowButtons] = useState<boolean>(true);\n\n const containerRef = useRef<HTMLDivElement>(null);\n const actionContainerRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n const observer = new ResizeObserver(() => {\n if (containerRef.current && actionContainerRef.current) {\n const containerWidth = containerRef.current.scrollWidth - 100;\n const totalActionItemsWidth = actionItems.length * 180 + 100;\n if (totalActionItemsWidth > containerWidth) {\n setShowButtons(false);\n } else {\n setShowButtons(true);\n }\n }\n });\n\n if (containerRef.current) {\n observer.observe(containerRef.current);\n }\n\n return () => {\n if (containerRef.current) {\n observer.unobserve(containerRef.current);\n }\n };\n });\n\n const deleteButtonConfig = {\n label: t(\"Delete\"),\n icon: <TrashIcon size={16} className=\"text-error-500\" />,\n onClick: deleteConfig?.onClick,\n ...deleteConfig,\n };\n\n const dropDownItems = actionItems\n .filter((button) => button.visible !== false)\n .map((button, index) => ({\n key: index,\n label: (\n <OptionButton\n icon={button.dropdownIcon}\n text={button?.label || \"\"}\n onClick={button.onClick}\n className=\"font-inter text-[14px] font-medium text-black-900 dark:text-black-200 gap-1.5\"\n />\n ),\n children: button.dropdownItems,\n disabled: false,\n }));\n\n return !show ? null : (\n <motion.div\n initial={{ y: 20, opacity: 0 }}\n animate={{ y: 0, opacity: 1 }}\n exit={{ y: 20, opacity: 0 }}\n transition={{\n duration: 0.2,\n ease: [0.4, 0, 0.2, 1],\n opacity: { duration: 0.15 },\n }}\n ref={containerRef}\n className={cn(\n \"h-[40px]\",\n isFlowDashboard ? \"ml-60 w-1/2\" : \"w-full\"\n )}\n >\n <div\n className={cn(\n \"h-[40px] border py-1.5 px-2 text-white bg-primary-800 dark:bg-black-700 flex justify-between items-center\"\n )}\n >\n <div className=\"flex items-center\">\n <IconButton\n tooltip=\"Close\"\n variant=\"ghost\"\n onClick={onClose}\n className=\"hover:bg-primary-100 !p-0\"\n >\n <CloseIcon size={20} />\n </IconButton>\n <div className=\"flex items-center gap-1.5 ml-2\">\n <span className=\"text-primary-600 dark:text-black-100 bg-primary-50 dark:bg-black-800 border-primary-200 dark:border-black-800 text-xs leading-4 font-normal border rounded-full pr-2 pl-2\">\n {selectedItemsCount || 0}\n </span>\n <Typography\n size=\"extra-small\"\n appearance=\"custom\"\n className=\"text-white\"\n >\n {t(\"Selected\")}\n </Typography>\n </div>\n </div>\n <div\n ref={actionContainerRef}\n className={cn(\n \"h-[36px] flex items-center rounded-full font-inter\",\n showActionBg\n ? \"bg-primary-900 dark:bg-black-800 px-[10px] rounded-[43px]\"\n : \"\"\n )}\n >\n {showButtons ? (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2 }}\n className=\"flex bg-primary-800 dark:bg-black-800 px-4 rounded-full\"\n >\n {actionItems.map(\n (button, index) =>\n button.visible !== false && (\n <div key={index}>\n {button.type === \"dropdown\" ? (\n <Dropdown\n menu={{\n items: button.dropdownItems,\n }}\n trigger={[button.dropdownTrigger || \"click\"]}\n overlayClassName=\"!min-w-[148px]\"\n placement=\"bottomRight\"\n getPopupContainer={(trigger) =>\n trigger.parentElement as HTMLElement\n }\n open={showDropdown}\n onOpenChange={setShowDropdown}\n >\n <button\n key={index}\n id={`btn-floating-bar-${button.label}`}\n onClick={button.onClick}\n disabled={button.disabled}\n className={cn(\n !button?.label\n ? \"bg-transparent p-1.5 hover:bg-primary-800 rounded-xl\"\n : \"flex items-center mx-1 gap-1.5 py-1 pr-3 pl-2 rounded-md text-white hover:text-primary-50 transition-all duration-300 bg-transparent\",\n button?.hideLabel && \"!p-1.5\",\n (button.label === \"Delete\" ||\n button.label === \"Remove\") &&\n \"!text-error-500\"\n )}\n >\n <Tooltip\n hideTooltip={!button.tooltip}\n title={button.tooltip}\n className=\"flex items-center\"\n >\n {button.icon}\n </Tooltip>\n {!button?.hideLabel && button.label && (\n <Typography\n size=\"small\"\n variant=\"medium\"\n className={\"text-inherit\"}\n appearance=\"custom\"\n >\n {button.label}\n </Typography>\n )}\n </button>\n </Dropdown>\n ) : (\n <button\n id={`btn-floating-bar-${button.label}`}\n onClick={button.onClick}\n disabled={button.disabled}\n className={cn(\n !button?.label\n ? \"bg-transparent p-1.5 hover:bg-primary-800 rounded-xl\"\n : \"flex items-center mx-1 gap-1.5 py-1 pr-3 pl-2 rounded-md text-white hover:text-primary-50 transition-all duration-300 bg-transparent\",\n button?.hideLabel && \"!p-1.5\",\n (button.label === \"Delete\" ||\n button.label === \"Remove\") &&\n \"!text-error-500\"\n )}\n >\n <Tooltip\n hideTooltip={!button.tooltip}\n title={button.tooltip}\n className=\"flex items-center\"\n >\n {button.icon}\n </Tooltip>\n {!button?.hideLabel && button.label && (\n <Typography\n size=\"small\"\n variant=\"medium\"\n className={\"text-inherit\"}\n appearance=\"custom\"\n >\n {button.label}\n </Typography>\n )}\n </button>\n )}\n </div>\n )\n )}\n {deleteConfig ? (\n <button\n id={`btn-floating-bar-${deleteButtonConfig.label}`}\n onClick={deleteButtonConfig.onClick}\n disabled={false}\n className=\"flex items-center gap-1.5 py-1 pr-3 pl-2 rounded-md\"\n >\n {deleteButtonConfig.icon}\n <Typography\n size=\"small\"\n variant=\"medium\"\n className=\"text-error-500\"\n appearance=\"custom\"\n >\n {deleteButtonConfig.label}\n </Typography>\n </button>\n ) : null}\n </motion.div>\n ) : (\n <motion.div\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.2 }}\n className=\"minw-[150px] p-1.5 flex items-center\"\n >\n <Dropdown\n menu={{\n items: dropDownItems,\n }}\n trigger={[\"click\"]}\n overlayClassName=\"!min-w-[148px]\"\n placement=\"bottomRight\"\n getPopupContainer={(trigger) =>\n trigger.parentElement as HTMLElement\n }\n open={showDropdown}\n onOpenChange={setShowDropdown}\n >\n <button\n id={`btn-floating-bar-actions`}\n disabled={false}\n className=\"flex items-center gap-1.5 px-2 py-1 w-22 h-7 rounded-full bg-primary-700\"\n >\n <Typography size=\"small\" variant=\"medium\" className=\"text-white\">\n {t(\"Actions\")}\n </Typography>\n <DropdownArrowIcon fill=\"#FFFFFF\" className=\"w-[16px] h-[16px]\" />\n </button>\n </Dropdown>\n {deleteConfig ? (\n <button\n id={`btn-floating-bar-${deleteButtonConfig.label}`}\n onClick={deleteButtonConfig.onClick}\n disabled={false}\n className=\"flex items-center gap-1.5 py-1 pr-3 pl-2 rounded-md\"\n >\n {deleteButtonConfig.icon}\n <Typography\n size=\"small\"\n variant=\"medium\"\n className={\"text-error-500\"}\n appearance=\"custom\"\n >\n {deleteButtonConfig.label}\n </Typography>\n </button>\n ) : null}\n </motion.div>\n )}\n </div>\n </div>\n </motion.div>\n );\n};\n\nFloatingBar.displayName = \"FloatingBar\";\n\n// Re-export types for convenience\nexport type { ButtonConfig as FloatingBarActionConfig };\nexport type FloatingBarDeleteConfig = TFloatingBar[\"deleteConfig\"];\nexport type FloatingBarProps = TFloatingBar;\n\n// Legacy type exports for backwards compatibility\nexport type FloatingBarSize = \"small\" | \"medium\" | \"large\";\nexport type FloatingBarPosition = \"top\" | \"bottom\";\nexport type FloatingBarTheme = \"primary\" | \"dark\" | \"light\";\n","import { FC, useState } from 'react';\nimport { useJsonGridViewerContext } from './JsonGridViewerContext';\nimport { ConfirmationModal } from '../../feedback/confirmation-modal/ConfirmationModal';\nimport { FloatingBar } from '../../floating-bar/FloatingBar';\n\n// Simple icons\nconst CopyIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"text-white\">\n <path d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z\" />\n </svg>\n);\n\nconst DuplicateIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"text-white\">\n <path d=\"M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm-1 4l6 6v10c0 1.1-.9 2-2 2H7.99C6.89 23 6 22.1 6 21l.01-14c0-1.1.89-2 1.99-2h7zm-1 7h5.5L14 6.5V12z\" />\n </svg>\n);\n\nconst TrashIcon = () => (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"text-[#F04438]\">\n <path d=\"M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6v12zM19 4h-3.5l-1-1h-5l-1 1H5v2h14V4z\" />\n </svg>\n);\n\nexport const JsonGridBulkFloatingBar: FC = () => {\n const { selectedTopLevelPaths, setSelectedPaths, handleDelete, handleDuplicate, handleCopy } = useJsonGridViewerContext();\n const [showConfirmationModal, setShowConfirmationModal] = useState(false);\n\n const actionItems = [\n {\n id: 'copy',\n icon: <CopyIcon />,\n tooltip: 'Copy',\n label: 'Copy',\n hideLabel: true,\n onClick: () => handleCopy(selectedTopLevelPaths),\n },\n {\n id: 'duplicate',\n icon: <DuplicateIcon />,\n tooltip: 'Duplicate',\n label: 'Duplicate',\n hideLabel: true,\n onClick: () => handleDuplicate(selectedTopLevelPaths),\n },\n {\n id: 'delete',\n icon: <TrashIcon />,\n tooltip: 'Delete',\n label: 'Delete',\n hideLabel: true,\n onClick: () => setShowConfirmationModal(true),\n },\n ];\n\n return (\n <>\n <ConfirmationModal\n title={'Delete Keys'}\n content={'Are you sure you want to delete the selected keys?'}\n visible={showConfirmationModal}\n variant='destructive'\n onClose={() => setShowConfirmationModal(false)}\n onConfirm={() => {\n handleDelete(selectedTopLevelPaths);\n setSelectedPaths([]);\n setShowConfirmationModal(false);\n }}\n />\n <FloatingBar\n show={selectedTopLevelPaths.length > 0}\n onClose={() => setSelectedPaths([])}\n actionItems={actionItems}\n showActionBg\n selectedItemsCount={selectedTopLevelPaths.length}\n />\n </>\n );\n};\n\n","import { FC, useEffect, useState } from 'react';\nimport { useJsonGridViewerContext } from './JsonGridViewerContext';\nimport { DataType, DataTypeOptions, type JsonArray, type JsonObject } from './types';\nimport { Modal } from '../modal/Modal';\nimport { BaseInputField } from '../../forms/base-input-field/BaseInputField';\nimport { SelectField } from '../../forms/select-field/SelectField';\nimport { Toggle } from '../../forms/toggle/Toggle';\nimport { TextAreaField } from '../../forms/text-area-field/TextAreaField';\nimport Button from '../../button/Button';\n\nconst getEmptyValue = (type: string) => {\n if (type === DataType.BOOLEAN) {\n return false;\n } else if (type === DataType.STRING) {\n return '';\n } else if (type === DataType.NUMBER) {\n return 0;\n } else if (type === DataType.NULL) {\n return null;\n } else if (type === DataType.ARRAY) {\n return [];\n } else if (type === DataType.OBJECT) {\n return {};\n }\n};\n\nexport interface AddKeyModalProps {\n isVisible: boolean;\n onClose: () => void;\n parentContainer: string;\n}\n\nexport const AddKeyModal: FC<AddKeyModalProps> = ({ isVisible, onClose, parentContainer }) => {\n const [key, setKey] = useState('');\n const [type, setType] = useState(DataTypeOptions[0]);\n const [value, setValue] = useState<boolean | string | number | null | JsonArray | JsonObject>(null);\n const [rawTextValue, setRawTextValue] = useState('');\n const [errorMessage, setErrorMessage] = useState<string | null>(null);\n const { handleAddKey, selectedPathModification } = useJsonGridViewerContext();\n\n useEffect(() => {\n if (type.value === DataType.BOOLEAN) {\n setValue(false);\n } else if (type.value === DataType.STRING) {\n setValue('');\n } else if (type.value === DataType.NUMBER) {\n setValue(0);\n } else if (type.value === DataType.NULL) {\n setValue(null);\n } else if (type.value === DataType.ARRAY) {\n setValue([]);\n setRawTextValue('');\n } else if (type.value === DataType.OBJECT) {\n setValue({});\n setRawTextValue('');\n }\n }, [type]);\n\n const handleOnClose = () => {\n setKey('');\n setType(DataTypeOptions[0]);\n setValue(null);\n setRawTextValue('');\n onClose();\n setErrorMessage(null);\n };\n\n useEffect(() => {\n if (type.value === DataType.ARRAY || type.value === DataType.OBJECT) {\n if (rawTextValue.trim() === '') {\n setErrorMessage(null);\n return;\n }\n\n try {\n const parsed = JSON.parse(rawTextValue);\n if (type.value === DataType.ARRAY && !Array.isArray(parsed)) {\n setErrorMessage('Enter a valid JSON array.');\n } else if (type.value === DataType.OBJECT && (typeof parsed !== 'object' || parsed === null || Array.isArray(parsed))) {\n setErrorMessage('Enter a valid JSON object.');\n } else {\n setErrorMessage(null);\n }\n } catch (_error) {\n setErrorMessage('Enter valid JSON.');\n }\n }\n }, [rawTextValue, type]);\n\n const getFinalValue = () => {\n if (value === null && type.value === DataType.NULL) return null;\n if (!value && value !== 0 && value !== false) return getEmptyValue(type.value);\n if (type.value === DataType.NUMBER) return Number(value);\n return value;\n };\n\n return (\n <Modal\n open={isVisible}\n onCancel={handleOnClose}\n title='New Key'\n parentContainer={parentContainer}\n width={351}\n footer={\n <div className='flex justify-end mt-5 gap-4'>\n <Button\n id='btn-add-key-modal-add'\n status='primary'\n onClick={async () => {\n await handleAddKey(selectedPathModification || '', key, getFinalValue());\n handleOnClose();\n }}\n disabled={!key || (value === null && type.value !== DataType.NULL) || !!errorMessage}\n >\n Add\n </Button>\n </div>\n }\n >\n <div className='flex flex-col gap-4'>\n <BaseInputField\n required\n label={<span className='text-neutral-600 dark:text-white text-xs font-medium'>Key</span>}\n value={key}\n onChange={(v) => setKey(v)}\n placeholder='Enter key'\n />\n <SelectField\n label={<span className='text-neutral-600 dark:text-white text-xs font-medium'>Type</span>}\n options={DataTypeOptions}\n value={type}\n onChange={(v) => setType(v)}\n />\n {(() => {\n switch (type.value) {\n case DataType.NULL:\n return null;\n case DataType.BOOLEAN:\n return (\n <Toggle\n label={<span className='text-neutral-600 dark:text-white text-xs font-medium'>Value</span>}\n isChecked={Boolean(value)}\n onChange={(checked) => setValue(checked)}\n statusText={Boolean(value) ? 'true' : 'false'}\n />\n );\n case DataType.OBJECT:\n case DataType.ARRAY:\n return (\n <TextAreaField\n placeholder={type.value === DataType.ARRAY ? 'e.g. [1, 2, 3]' : 'e.g. {\"key_1\" : 1, \"key_2\":2}'}\n onChange={(e) => {\n const v = e;\n setRawTextValue(v);\n if (v.trim() === '') {\n setValue(type.value === DataType.ARRAY ? [] : {});\n } else {\n try {\n const parsed = JSON.parse(v);\n setValue(parsed);\n } catch (_error) {\n // Keep the previous value if parsing fails\n }\n }\n }}\n />\n );\n\n default:\n return (\n <BaseInputField\n label={<span className='text-neutral-600 dark:text-white text-xs font-medium'>Value</span>}\n className='w-full'\n value={value as string}\n onChange={(v) => {\n if (type.value === DataType.NUMBER) {\n const withSingleDot = v.replace(/\\.(?=.*\\.)/g, '');\n const numericValue = withSingleDot.replace(/[^\\d.-]/g, '');\n setValue(numericValue);\n } else {\n setValue(v);\n }\n }}\n placeholder='Enter value'\n />\n );\n }\n })()}\n </div>\n </Modal>\n );\n};\n\n","import { Dispatch, SetStateAction, useEffect, useState, FC } from 'react';\nimport { produce } from 'immer';\nimport { JsonGridViewerContextProvider } from './JsonGridViewerContext';\nimport { JsonArray, JsonObject, JsonValue } from './types';\nimport { filterTopLevelPaths, parseJson } from './utils';\nimport { JsonGridCore } from './JsonGridCore';\nimport { JsonGridBulkFloatingBar } from './JsonGridBulkFloatingBar';\nimport { AddKeyModal } from './AddKeyModal';\n\nexport interface JsonGridViewerProps {\n /** Whether the viewer is in full screen mode */\n isFullScreen: boolean;\n /** Whether all nodes are expanded */\n allExpanded: boolean;\n /** Toggle all nodes expanded/collapsed */\n toggleAll: () => void;\n /** Whether edit mode is enabled */\n isEditMode: boolean;\n /** Whether dark mode is enabled */\n isDarkMode: boolean;\n /** Custom styles for the grid */\n style: React.CSSProperties;\n /** JSON value as a string */\n value: string;\n /** Callback when the JSON value changes */\n onChange?: (v: string) => void;\n /** Setter for add key modal open state */\n setIsAddKeyModalOpen: Dispatch<SetStateAction<boolean>>;\n /** Whether the add key modal is open */\n isAddKeyModalOpen: boolean;\n}\n\n/**\n * JsonGridViewer component provides a visual grid editor for JSON data\n * \n * @example\n * ```tsx\n * const [value, setValue] = useState('{\"key\": \"value\"}');\n * const [allExpanded, setAllExpanded] = useState(false);\n * const [isAddKeyModalOpen, setIsAddKeyModalOpen] = useState(false);\n * \n * <JsonGridViewer\n * isFullScreen={false}\n * allExpanded={allExpanded}\n * toggleAll={() => setAllExpanded(!allExpanded)}\n * isEditMode={true}\n * isDarkMode={false}\n * style={{ maxHeight: '500px' }}\n * value={value}\n * onChange={setValue}\n * setIsAddKeyModalOpen={setIsAddKeyModalOpen}\n * isAddKeyModalOpen={isAddKeyModalOpen}\n * />\n * ```\n */\nexport const JsonGridViewer: FC<JsonGridViewerProps> = ({\n isFullScreen,\n allExpanded,\n toggleAll,\n isEditMode,\n isDarkMode,\n style,\n value,\n onChange,\n setIsAddKeyModalOpen,\n isAddKeyModalOpen,\n}) => {\n const [jsonData, setJsonData] = useState<JsonObject | JsonArray>({});\n const [error, setError] = useState<string | null>(null);\n const [selectedPaths, setSelectedPaths] = useState<string[]>([]);\n const [selectedTopLevelPaths, setSelectedTopLevelPaths] = useState<string[]>([]);\n const [selectedPathModification, setSelectedPathModification] = useState<string | null>(null);\n const [selectedPathForEdit, setSelectedPathForEdit] = useState<string | null>(null);\n\n useEffect(() => {\n setSelectedTopLevelPaths(filterTopLevelPaths(selectedPaths));\n }, [selectedPaths]);\n\n useEffect(() => {\n try {\n const parsed = parseJson(value);\n setJsonData(parsed);\n setError(null);\n } catch (e) {\n setError('Invalid JSON: ' + (e as Error).message);\n }\n }, [value]);\n\n const handleDelete = (paths: string[]) => {\n if (!paths.length) return;\n\n const newJsonData = produce(jsonData, (draft: JsonObject | JsonArray) => {\n paths.forEach((path) => {\n if (!path || path === '.') {\n return;\n }\n\n const pathParts = path.split('.');\n pathParts.shift();\n\n if (pathParts.length === 0) {\n return;\n }\n\n let current: any = draft;\n for (let i = 0; i < pathParts.length - 1; i++) {\n current = current[pathParts[i]];\n if (current === undefined) return;\n }\n const lastKey = pathParts[pathParts.length - 1];\n if (Array.isArray(current)) {\n const idx = Number(lastKey);\n if (!isNaN(idx) && idx >= 0 && idx < current.length) {\n current.splice(idx, 1);\n }\n } else if (current && typeof current === 'object') {\n delete current[lastKey];\n }\n });\n });\n\n onChange?.(JSON.stringify(newJsonData, null, 2));\n };\n\n const handleDuplicate = (paths: string[]) => {\n if (!paths.length) return;\n\n const newJsonData = produce(jsonData, (draft: JsonObject | JsonArray) => {\n paths.forEach((path) => {\n const pathParts = path.split('.');\n if (pathParts[0] === '') pathParts.shift();\n\n let current: any = draft;\n for (let i = 0; i < pathParts.length - 1; i++) {\n current = current[pathParts[i]];\n if (current === undefined) return;\n }\n const lastKey = pathParts[pathParts.length - 1];\n\n if (Array.isArray(current)) {\n const idx = Number(lastKey);\n if (!isNaN(idx) && idx >= 0 && idx < current.length) {\n const copy = JSON.parse(JSON.stringify(current[idx]));\n current.splice(idx + 1, 0, copy);\n }\n } else if (current && typeof current === 'object') {\n if (Object.hasOwn(current, lastKey)) {\n let copyKey = lastKey + '_copy';\n let counter = 2;\n while (current.hasOwnProperty(copyKey)) {\n copyKey = `${lastKey}_copy_${counter++}`;\n }\n current[copyKey] = JSON.parse(JSON.stringify(current[lastKey]));\n }\n }\n });\n });\n\n onChange?.(JSON.stringify(newJsonData, null, 2));\n };\n\n const handleCopy = async (paths: string[]): Promise<boolean> => {\n if (!paths.length) return false;\n\n if (paths.length === 1) {\n const pathParts = paths[0].split('.');\n if (pathParts[0] === '') pathParts.shift();\n\n let current: any = jsonData;\n for (const key of pathParts) {\n if (current == null) return false;\n current = current[key];\n }\n if (current === undefined) {\n return false;\n }\n let text;\n if (typeof current === 'object') {\n text = JSON.stringify(current, null, 2);\n } else {\n text = String(current);\n }\n try {\n await navigator.clipboard.writeText(text);\n return true;\n } catch (_err) {\n return false;\n }\n } else {\n const copiedValues: { [key: string]: JsonValue } = {};\n\n for (const path of paths) {\n const pathParts = path.split('.');\n if (pathParts[0] === '') pathParts.shift();\n\n let current: any = jsonData;\n for (const key of pathParts) {\n if (current == null) continue;\n current = current[key];\n }\n if (current !== undefined) {\n const lastKey = pathParts[pathParts.length - 1] || 'root';\n copiedValues[lastKey] = current;\n }\n }\n\n try {\n await navigator.clipboard.writeText(JSON.stringify(copiedValues, null, 2));\n return true;\n } catch (_err) {\n return false;\n }\n }\n };\n\n const handleAddKey = async (path: string, key: string, v: JsonValue | undefined) => {\n const pathParts = path.split('.');\n if (pathParts[0] === '') pathParts.shift();\n\n const newJsonData = produce(jsonData, (draft: JsonObject | JsonArray) => {\n let current: any = draft;\n\n if (pathParts.length === 0) {\n if (current.hasOwnProperty(key)) {\n let uniqueKey = key;\n let counter = 2;\n while (current.hasOwnProperty(uniqueKey)) {\n uniqueKey = `${key}_${counter++}`;\n }\n current[uniqueKey] = v;\n } else {\n current[key] = v;\n }\n return;\n }\n\n for (let i = 0; i < pathParts.length; i++) {\n current = current[pathParts[i]];\n if (current === undefined) return;\n }\n\n if (current.hasOwnProperty(key)) {\n let uniqueKey = key;\n let counter = 2;\n while (current.hasOwnProperty(uniqueKey)) {\n uniqueKey = `${key}_${counter++}`;\n }\n current[uniqueKey] = v;\n } else {\n current[key] = v;\n }\n });\n setSelectedPathModification(null);\n onChange?.(JSON.stringify(newJsonData, null, 2));\n };\n\n return (\n <JsonGridViewerContextProvider\n value={{\n allExpanded,\n toggleAll,\n isEditMode,\n isDarkMode,\n selectedPaths,\n setSelectedPaths,\n selectedTopLevelPaths,\n setSelectedTopLevelPaths,\n selectedPathModification,\n setSelectedPathModification,\n selectedPathForEdit,\n setSelectedPathForEdit,\n jsonData,\n setJsonData,\n error,\n setError,\n handleDelete,\n handleDuplicate,\n handleCopy,\n handleAddKey,\n setIsAddKeyModalOpen,\n isAddKeyModalOpen,\n }}\n >\n <div className='bg-white dark:bg-black-800 rounded-b-lg'>\n {isEditMode && <JsonGridBulkFloatingBar />}\n <JsonGridCore onChange={onChange} style={style} />\n {isEditMode && (\n <AddKeyModal\n parentContainer={isFullScreen ? 'json-grid-core-container' : 'full-screen-container'}\n isVisible={isAddKeyModalOpen}\n onClose={() => setIsAddKeyModalOpen(false)}\n />\n )}\n </div>\n </JsonGridViewerContextProvider>\n );\n};\n\n\n\n","import classNames from 'classnames';\nimport React from 'react';\n\nexport interface TabsProps<T extends string> {\n variant?: 'default' | 'switch';\n tabs: T[];\n activeTab: T;\n onTabClick: (tab: T) => void;\n size?: 'sm' | 'md' | 'lg';\n tabIcons?: Partial<Record<T, React.ReactNode>>;\n height?: string;\n className?: string;\n}\n\nexport const Tabs = <T extends string>({\n variant = 'default',\n tabs,\n activeTab,\n onTabClick,\n size = 'md',\n tabIcons = {} as Partial<Record<T, React.ReactNode>>,\n height = 'h-6',\n className\n}: TabsProps<T>) => {\n if (variant === 'switch') {\n return (\n <div className={classNames('inline', className)}>\n <ul className=\"inline-flex grow-0 p-1 rounded-lg bg-neutral-100 dark:bg-neutral-700 w-auto\">\n {tabs.map((title: T) => {\n const isSelected = activeTab === title;\n const icon = tabIcons?.[title];\n\n return (\n <li key={title} className=\"inline-flex w-auto\">\n <button\n onClick={() => onTabClick(title)}\n className={classNames(\n 'relative py-0.5 px-3 border-gray-200',\n height,\n 'w-auto flex items-center justify-center',\n 'relative text-xs font-semibold font-sans whitespace-nowrap',\n isSelected \n ? 'text-neutral-900 dark:text-neutral-100' \n : 'text-neutral-700 dark:text-neutral-100'\n )}\n >\n {isSelected && (\n <span className=\"absolute inset-0 bg-white dark:bg-neutral-800 rounded-md z-0\" />\n )}\n <span className=\"relative z-10 flex items-center gap-1\">\n {icon}\n {title}\n </span>\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n );\n }\n\n return (\n <div className={classNames('w-full', className)}>\n <ul className={classNames('flex items-center w-full', size === 'sm' ? 'gap-1' : 'gap-2')}>\n {tabs.map((title: T) => {\n const isSelected = activeTab === title;\n const icon = tabIcons?.[title];\n\n return (\n <li key={title} className=\"sm:mr-2\">\n <button\n onClick={() => onTabClick(title)}\n className={classNames(\n 'relative inline-flex pt-1 pb-3 px-2 pl-3 sm:px-2 rounded-t-lg group',\n 'relative uppercase font-sans font-semibold text-sm whitespace-nowrap',\n isSelected\n ? 'text-blue-600 dark:text-blue-500'\n : 'text-neutral-400 hover:text-neutral-500 dark:text-neutral-100 dark:hover:text-white'\n )}\n >\n <span className=\"flex items-center gap-1\">\n {icon}\n {title}\n </span>\n {isSelected && (\n <span className=\"absolute left-0 bottom-0 w-full h-[3px] bg-blue-600\" />\n )}\n </button>\n </li>\n );\n })}\n </ul>\n </div>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any, no-console */\nimport { CodeiumEditor } from '@codeium/react-code-editor';\nimport { type Monaco, type OnMount } from '@monaco-editor/react';\nimport classNames from 'classnames';\nimport { type FC, useEffect, useRef, useState } from 'react';\nimport { FullScreen, useFullScreenHandle } from 'react-full-screen';\nimport { toast } from 'react-toastify';\nimport { usePythonSyntax } from '../../../hooks/usePythonSyntax';\nimport { monacoManager } from '../../../services/monacoManager';\nimport { type CodeEditorProps } from '../../../types';\nimport { systemMessages } from '../../../utils/messageConstants';\nimport { JsonGrid } from './JsonGrid';\nimport { Tabs } from './Tabs';\nimport Tooltip from '../../tooltip/Tooltip';\n\n// Icon class styling (matching web portal)\nconst iconClass = classNames(\n 'text-neutral-600 cursor-pointer hover:text-neutral-800',\n 'dark:text-neutral-300 dark:hover:text-neutral-50'\n);\n\n// Material Icons converted to SVG components (matching web portal icons)\nconst CodeIcon = ({ fontSize }: { fontSize: number }) => (\n <svg width={fontSize} height={fontSize} viewBox=\"0 0 24 24\" fill=\"currentColor\" className={iconClass}>\n <path d=\"M9.4 16.6L4.8 12l4.6-4.6L8 6l-6 6 6 6 1.4-1.4zm5.2 0L19.2 12l-4.6-4.6L16 6l6 6-6 6-1.4-1.4z\"/>\n </svg>\n);\n\nconst GridOnOutlinedIcon = ({ fontSize }: { fontSize: number }) => (\n <svg width={fontSize} height={fontSize} viewBox=\"0 0 24 24\" fill=\"currentColor\" className={iconClass}>\n <path d=\"M20 2H4c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zM8 20H4v-4h4v4zm0-6H4v-4h4v4zm0-6H4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4zm6 12h-4v-4h4v4zm0-6h-4v-4h4v4zm0-6h-4V4h4v4z\"/>\n </svg>\n);\n\nconst AddIcon = ({ fontSize }: { fontSize: number }) => (\n <svg width={fontSize} height={fontSize} viewBox=\"0 0 24 24\" fill=\"currentColor\">\n <path d=\"M19 13h-6v6h-2v-6H5v-2h6V5h2v6h6v2z\"/>\n </svg>\n);\n\nconst ContentPasteRoundedIcon = ({ fontSize }: { fontSize: number }) => (\n <svg width={fontSize} height={fontSize} viewBox=\"0 0 24 24\" fill=\"currentColor\" className={iconClass}>\n <path d=\"M19 2h-4.18C14.4.84 13.3 0 12 0S9.6.84 9.18 2H5c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V4c0-1.1-.9-2-2-2zm-7 0c.55 0 1 .45 1 1s-.45 1-1 1-1-.45-1-1 .45-1 1-1zm7 18H5V4h2v3h10V4h2v16z\"/>\n </svg>\n);\n\nconst DarkModeOutlinedIcon = ({ fontSize }: { fontSize: number }) => (\n <svg width={fontSize} height={fontSize} viewBox=\"0 0 24 24\" fill=\"currentColor\" className={iconClass}>\n <path d=\"M9.5 2c-1.82 0-3.53.5-5 1.35 2.99 1.73 5 4.95 5 8.65s-2.01 6.92-5 8.65c1.47.85 3.18 1.35 5 1.35 5.52 0 10-4.48 10-10S15.02 2 9.5 2z\"/>\n </svg>\n);\n\nconst FileDownloadRoundedIcon = ({ fontSize }: { fontSize: number }) => (\n <svg width={fontSize} height={fontSize} viewBox=\"0 0 24 24\" fill=\"currentColor\" className={iconClass}>\n <path d=\"M18 15v3H6v-3H4v3c0 1.1.9 2 2 2h12c1.1 0 2-.9 2-2v-3h-2zm-1-4-5 5-5-5h3V4h4v7h3z\"/>\n </svg>\n);\n\nconst FullscreenRoundedIcon = ({ fontSize }: { fontSize: number }) => (\n <svg width={fontSize} height={fontSize} viewBox=\"0 0 24 24\" fill=\"currentColor\" className={iconClass}>\n <path d=\"M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z\"/>\n </svg>\n);\n\nconst KeyboardDoubleArrowDownIcon = ({ fontSize }: { fontSize: number }) => (\n <svg width={fontSize} height={fontSize} viewBox=\"0 0 24 24\" fill=\"currentColor\" className={iconClass}>\n <path d=\"M18 6.41 16.59 5 12 9.58 7.41 5 6 6.41l6 6z\"/>\n <path d=\"m18 13-1.41-1.41L12 16.17l-4.59-4.58L6 13l6 6z\"/>\n </svg>\n);\n\nconst KeyboardDoubleArrowUpIcon = ({ fontSize }: { fontSize: number }) => (\n <svg width={fontSize} height={fontSize} viewBox=\"0 0 24 24\" fill=\"currentColor\" className={iconClass}>\n <path d=\"M6 17.59 7.41 19 12 14.42 16.59 19 18 17.59l-6-6z\"/>\n <path d=\"m6 11 1.41 1.41L12 7.83l4.59 4.58L18 11l-6-6z\"/>\n </svg>\n);\n\nconst LightModeOutlinedIcon = ({ fontSize }: { fontSize: number }) => (\n <svg width={fontSize} height={fontSize} viewBox=\"0 0 24 24\" fill=\"currentColor\" className={iconClass}>\n <path d=\"M12 9c1.65 0 3 1.35 3 3s-1.35 3-3 3-3-1.35-3-3 1.35-3 3-3m0-2c-2.76 0-5 2.24-5 5s2.24 5 5 5 5-2.24 5-5-2.24-5-5-5zM2 13h2c.55 0 1-.45 1-1s-.45-1-1-1H2c-.55 0-1 .45-1 1s.45 1 1 1zm18 0h2c.55 0 1-.45 1-1s-.45-1-1-1h-2c-.55 0-1 .45-1 1s.45 1 1 1zM11 2v2c0 .55.45 1 1 1s1-.45 1-1V2c0-.55-.45-1-1-1s-1 .45-1 1zm0 18v2c0 .55.45 1 1 1s1-.45 1-1v-2c0-.55-.45-1-1-1s-1 .45-1 1zM5.99 4.58c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0s.39-1.03 0-1.41L5.99 4.58zm12.37 12.37c-.39-.39-1.03-.39-1.41 0-.39.39-.39 1.03 0 1.41l1.06 1.06c.39.39 1.03.39 1.41 0 .39-.39.39-1.03 0-1.41l-1.06-1.06zm1.06-10.96c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0l1.06-1.06zM7.05 18.36c.39-.39.39-1.03 0-1.41-.39-.39-1.03-.39-1.41 0l-1.06 1.06c-.39.39-.39 1.03 0 1.41s1.03.39 1.41 0l1.06-1.06z\"/>\n </svg>\n);\n\nconst SubjectOutlinedIcon = ({ fontSize }: { fontSize: number }) => (\n <svg width={fontSize} height={fontSize} viewBox=\"0 0 24 24\" fill=\"currentColor\" className={iconClass}>\n <path d=\"M14 17H4v2h10v-2zm6-8H4v2h16V9zM4 15h16v-2H4v2zM4 5v2h16V5H4z\"/>\n </svg>\n);\n\n// Tab icons configuration\nconst TabIcons = {\n JSON: <CodeIcon fontSize={16} />,\n Grid: <GridOnOutlinedIcon fontSize={15} />,\n};\n\nconst TABS: ('JSON' | 'Grid')[] = ['JSON', 'Grid'];\nexport type TTabKey = (typeof TABS)[number];\n\nexport const CodeEditor: FC<CodeEditorProps> = ({\n value,\n onChange = () => false,\n withFullScreen = true,\n withTheme = true,\n isEditMode = false,\n height = '55vh',\n language = 'json',\n monacoEditor,\n isShowCopy = true,\n isShowDownload = true,\n setIsDisableSave,\n withJsonGrid = true,\n // Theme props from parent (optional - uses internal state as fallback)\n editorTheme: externalEditorTheme,\n setEditorTheme: externalSetEditorTheme,\n theme: externalTheme,\n}) => {\n const editorRef = useRef<any>(null);\n \n // Internal theme state (used when not provided by parent)\n const [internalEditorTheme, setInternalEditorTheme] = useState<'vs' | 'vs-dark'>('vs');\n const [internalTheme, setInternalTheme] = useState<'light' | 'dark'>('light');\n \n // Use external theme if provided, otherwise use internal\n const editorTheme = externalEditorTheme ?? internalEditorTheme;\n const theme = externalTheme ?? internalTheme;\n const setEditorTheme = externalSetEditorTheme ?? ((newTheme: 'vs' | 'vs-dark') => {\n setInternalEditorTheme(newTheme);\n setInternalTheme(newTheme === 'vs-dark' ? 'dark' : 'light');\n });\n \n const [allExpanded, setAllExpanded] = useState<boolean>(false);\n const [currentEditorModel, setCurrentEditorModel] = useState<any>(null);\n const [monacoInstance, setMonacoInstance] = useState<Monaco | null>(null);\n const [isMonacoReady, setIsMonacoReady] = useState(false);\n\n // Initialize Monaco Editor\n useEffect(() => {\n const initializeMonaco = async () => {\n try {\n const monaco = await monacoManager.initialize();\n setMonacoInstance(monaco);\n setIsMonacoReady(true);\n } catch (error) {\n console.error('Failed to initialize Monaco Editor:', error);\n setIsMonacoReady(false);\n }\n };\n\n initializeMonaco();\n }, []);\n\n // Use provided monacoEditor prop or fall back to our managed instance\n const activeMonacoEditor = monacoEditor || monacoInstance;\n\n const {\n handleFormatCode: handleFormatPythonCode,\n pythonError,\n pythonLoading,\n } = usePythonSyntax({\n code: value,\n setCode: onChange,\n currentEditorModel,\n monacoEditor: activeMonacoEditor,\n enable: isEditMode === true && language === 'python',\n });\n \n const fullScreenHandle = useFullScreenHandle();\n const [activeTab, setActiveTab] = useState<TTabKey>(TABS[0]);\n const [isAddKeyModalOpen, setIsAddKeyModalOpen] = useState(false);\n const isLanguageJson = language === 'json';\n\n const toggleFocusMode = () => {\n if (fullScreenHandle?.active) {\n fullScreenHandle.exit();\n } else {\n fullScreenHandle.enter();\n }\n };\n\n const handleEditorDidMount: OnMount = (editor) => {\n editorRef.current = editor;\n\n // Use a more reliable method than setTimeout\n const initializeEditor = () => {\n try {\n if (language === 'python') {\n const model = editor.getModel();\n if (model) {\n setCurrentEditorModel(model);\n }\n }\n\n if (language === 'json') {\n // Delay JSON formatting to ensure editor is fully ready\n requestAnimationFrame(() => {\n handleFormatCode();\n });\n }\n\n editor.updateOptions({\n fontSize: 14,\n });\n } catch (error) {\n console.warn('Failed to initialize editor:', error);\n }\n };\n\n // Check if editor is ready, if not wait for it\n if (editor.getModel()) {\n initializeEditor();\n } else {\n // Editor model not ready yet, wait for it\n const disposable = editor.onDidChangeModel(() => {\n initializeEditor();\n disposable.dispose();\n });\n }\n };\n\n const handleFormatJsonCode = () => {\n try {\n const parsedJson = JSON.parse(value);\n const formattedJson = JSON.stringify(parsedJson, null, 4);\n onChange(formattedJson);\n\n // Also update the editor model if it exists\n if (currentEditorModel && activeMonacoEditor) {\n activeMonacoEditor.editor.setModelMarkers(currentEditorModel, 'json', []);\n }\n } catch (error) {\n // Display error visually instead of logging to console\n if (currentEditorModel && activeMonacoEditor) {\n const errorMessage = error instanceof Error ? error.message : 'Invalid JSON';\n try {\n activeMonacoEditor.editor.setModelMarkers(currentEditorModel, 'json', [\n {\n startLineNumber: 1,\n startColumn: 1,\n endLineNumber: 1,\n endColumn: 1,\n message: `Cannot format: ${errorMessage}`,\n severity: activeMonacoEditor.MarkerSeverity.Error,\n },\n ]);\n } catch (markerError) {\n console.warn('Failed to set JSON error markers:', markerError);\n }\n }\n }\n };\n\n const handleFormatCode = () => {\n if (language === 'python') {\n handleFormatPythonCode();\n return;\n }\n\n if (language === 'json') {\n handleFormatJsonCode();\n return;\n }\n\n if (editorRef.current) {\n try {\n const formatAction = editorRef.current.getAction('editor.action.formatDocument');\n if (formatAction) {\n formatAction.run();\n }\n } catch (error) {\n console.warn('Failed to format document:', error);\n }\n }\n };\n\n const handleChange = (newValue: string | undefined) => {\n if (typeof newValue === 'string') {\n onChange(newValue);\n }\n };\n\n useEffect(() => {\n if (setIsDisableSave) {\n setIsDisableSave(pythonError || pythonLoading);\n }\n }, [pythonError, pythonLoading, setIsDisableSave]);\n\n // Don't render the editor until Monaco is ready (unless we have a provided instance)\n if (!monacoEditor && !isMonacoReady) {\n return (\n <div className='flex items-center justify-center p-8 border border-neutral-200 dark:border-neutral-700 rounded-lg'>\n <div className='text-neutral-600 dark:text-neutral-400'>Loading editor...</div>\n </div>\n );\n }\n\n const hoverClass = classNames('hover:bg-neutral-300 hover:dark:bg-neutral-700 p-0.5 rounded-md flex items-center justify-center');\n \n const handleCopyCode = () => {\n if (language === 'python') {\n try {\n let formattedCode = value;\n if (formattedCode) {\n formattedCode = formattedCode.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n formattedCode = formattedCode\n .split('\\n')\n .map((line) => line.trimEnd())\n .join('\\n');\n formattedCode = formattedCode.replace(/\\n+$/, '') + '\\n';\n }\n\n navigator?.clipboard\n ?.writeText(formattedCode)\n .then(() => {\n // show success toast (kept silent as in web portal)\n })\n .catch((_error: unknown) => {\n const error = _error as Error;\n toast.error(error?.message || systemMessages.copyFailure('Python Code'), {\n toastId: systemMessages.copyFailure('Python Code'),\n });\n });\n } catch (_error: unknown) {\n const error = _error as Error;\n toast.error(error?.message || systemMessages.copyFailure('Python Code'), {\n toastId: systemMessages.copyFailure('Python Code'),\n });\n }\n } else if (language === 'json') {\n try {\n const parsedJson = JSON.parse(value);\n const formattedJson = JSON.stringify(parsedJson, null, 4);\n navigator?.clipboard?.writeText(formattedJson);\n } catch (_error: unknown) {\n const error = _error as Error;\n toast.error(error?.message || systemMessages.copyFailure('JSON Code'), {\n toastId: systemMessages.copyFailure('JSON Code'),\n });\n }\n } else {\n navigator?.clipboard?.writeText(value);\n }\n };\n\n const getConfig = (code: string) => {\n if (code === 'python') {\n return {\n type: 'text/x-python',\n extension: 'py',\n };\n }\n if (code === 'json') {\n return {\n type: 'application/json',\n extension: 'json',\n };\n }\n return {\n type: 'text/plain',\n extension: 'txt',\n };\n };\n\n // Sanitize filename utility (matching web portal implementation)\n const sanitizeFilename = (filename: string, fallback: string): string => {\n // Remove or replace potentially dangerous characters\n const sanitized = filename\n .replace(/[<>:\"/\\\\|?*\\x00-\\x1f]/g, '_') // Replace illegal chars\n .replace(/\\.{2,}/g, '.') // Replace multiple dots\n .replace(/^\\.+|\\.+$/g, '') // Remove leading/trailing dots\n .trim();\n \n return sanitized || fallback;\n };\n\n const handleDownloadCode = () => {\n try {\n const blob = new Blob([value], { type: getConfig(language)?.type });\n const url = URL.createObjectURL(blob);\n const anchor = document.createElement('a');\n anchor.href = url;\n const extension = getConfig(language)?.extension || 'txt';\n const sanitizedExtension = sanitizeFilename(extension, 'txt');\n anchor.download = sanitizeFilename(`code_${Date.now()}.${sanitizedExtension}`, `code_${Date.now()}.${sanitizedExtension}`);\n document.body.appendChild(anchor);\n anchor.click();\n document.body.removeChild(anchor);\n URL.revokeObjectURL(url);\n } catch (_error: unknown) {\n const error = _error as Error;\n toast.error(error?.message || systemMessages.copyFailure('Code download'), {\n toastId: systemMessages.copyFailure('Code download'),\n });\n }\n };\n\n return (\n <FullScreen handle={fullScreenHandle} className='h-full'>\n <div className='relative border border-neutral-200 dark:border-neutral-700 rounded-lg h-full' id='code-editor-container-with-json-grid'>\n <div\n className={classNames(\n `px-3 py-2 flex items-center bg-white rounded-t-lg dark:bg-neutral-800 ${\n withJsonGrid ? 'border-none' : 'border-b border-neutral-200 dark:border-neutral-700'\n } `,\n isLanguageJson ? 'justify-between' : 'justify-end',\n )}\n >\n {isLanguageJson && withJsonGrid && (\n <Tabs\n variant='switch'\n tabs={TABS}\n activeTab={activeTab}\n size='sm'\n onTabClick={(id) => setActiveTab(id)}\n tabIcons={TabIcons}\n height='h-[20px]'\n />\n )}\n <div className='flex items-center gap-0.5'>\n {activeTab === 'Grid' && isEditMode && withJsonGrid && (\n <span className='flex items-center justify-center border-r border-neutral-200 dark:border-neutral-700 mr-1.5 pr-1.5'>\n <Tooltip title='Add key'>\n <button\n id='btn-code-editor-json-grid-up'\n onClick={() => setIsAddKeyModalOpen(true)}\n className={classNames(\n 'p-0.5 rounded-md flex items-center justify-center',\n 'hover:bg-blue-100 hover:dark:bg-neutral-800 text-blue-600 dark:text-neutral-100',\n )}\n >\n <AddIcon fontSize={16} />\n </button>\n </Tooltip>\n </span>\n )}\n {activeTab === 'Grid' ? (\n <>\n <Tooltip title='Collapse all'>\n <button id='btn-code-editor-json-grid-up' onClick={() => setAllExpanded(false)} className={hoverClass}>\n <KeyboardDoubleArrowUpIcon fontSize={16} />\n </button>\n </Tooltip>\n\n <Tooltip title='Expand all'>\n <button id='btn-code-editor-json-grid-down' onClick={() => setAllExpanded(true)} className={hoverClass}>\n <KeyboardDoubleArrowDownIcon fontSize={16} />\n </button>\n </Tooltip>\n </>\n ) : null}\n {activeTab === 'JSON' && withJsonGrid ? (\n <Tooltip title='Format'>\n <button id='btn-code-editor-format-code' onClick={handleFormatCode} className={hoverClass}>\n <SubjectOutlinedIcon fontSize={14} />\n </button>\n </Tooltip>\n ) : null}\n {withTheme && activeTab === 'JSON' && withJsonGrid ? (\n <Tooltip title={editorTheme === 'vs' ? 'Dark mode' : 'Light mode'}>\n <button\n id='btn-code-editor-with-theme'\n onClick={() => setEditorTheme(editorTheme === 'vs' ? 'vs-dark' : 'vs')}\n className={hoverClass}\n >\n {editorTheme === 'vs' ? (\n <DarkModeOutlinedIcon fontSize={14} />\n ) : (\n <LightModeOutlinedIcon fontSize={14} />\n )}\n </button>\n </Tooltip>\n ) : null}\n {(language === 'python' || language === 'json') && isShowCopy ? (\n <Tooltip title='Copy'>\n <button id='btn-code-editor-copy-code' onClick={handleCopyCode} className={hoverClass}>\n <ContentPasteRoundedIcon fontSize={14} />\n </button>\n </Tooltip>\n ) : null}\n {(language === 'python' || language === 'json') && isShowDownload ? (\n <Tooltip title='Download'>\n <button id='btn-code-editor-download-code' onClick={handleDownloadCode} className={hoverClass}>\n <FileDownloadRoundedIcon fontSize={14} />\n </button>\n </Tooltip>\n ) : null}\n {withFullScreen ? (\n <Tooltip title='Fullscreen'>\n <button onClick={toggleFocusMode} id='btn-code-editor-fullscreen' className={hoverClass}>\n <FullscreenRoundedIcon fontSize={14} />\n </button>\n </Tooltip>\n ) : null}\n </div>\n </div>\n\n {activeTab === 'Grid' && language === 'json' ? (\n <div>\n <JsonGrid\n isFullScreen={fullScreenHandle?.active}\n allExpanded={allExpanded}\n toggleAll={() => setAllExpanded((prev) => !prev)}\n isEditMode={Boolean(isEditMode)}\n isDarkMode={theme === 'dark'}\n style={{\n height: fullScreenHandle?.active ? '100vh' : height,\n }}\n value={value}\n onChange={onChange}\n setIsAddKeyModalOpen={setIsAddKeyModalOpen}\n isAddKeyModalOpen={isAddKeyModalOpen}\n />\n </div>\n ) : (\n <CodeiumEditor\n height={fullScreenHandle?.active ? '100vh' : height}\n containerStyle={{\n height,\n }}\n language={language}\n value={value}\n onChange={handleChange}\n theme={editorTheme}\n onMount={handleEditorDidMount}\n options={{\n fontSize: 16,\n folding: true,\n fontFamily: \"Menlo, Monaco, 'Courier New', monospace\",\n fontLigatures: true,\n readOnly: !isEditMode,\n }}\n />\n )}\n </div>\n </FullScreen>\n );\n};\n","import type { FC, ReactNode } from 'react';\nimport { useEffect, useState } from 'react';\nimport { toast } from 'react-toastify';\nimport Button from '../../button/Button';\nimport { Modal } from '../modal/Modal';\nimport { CodeEditor } from '../code-editor/CodeEditor';\n\nexport const TABS = ['JSON', 'Grid'] as const;\nexport type TTabKey = (typeof TABS)[number];\n\nexport interface DynamicDataModalProps {\n isVisible: boolean;\n onClose: () => void;\n onChange: (value: string) => void;\n defaultValue: string;\n title?: string;\n saveText?: string;\n width?: number;\n}\n\n/**\n * DynamicDataModal component for editing JSON data\n *\n * @example\n * ```tsx\n * <DynamicDataModal\n * isVisible={isOpen}\n * onClose={() => setIsOpen(false)}\n * onChange={handleChange}\n * defaultValue={jsonData}\n * />\n * ```\n */\nexport const DynamicDataModal: FC<DynamicDataModalProps> = ({\n isVisible,\n onClose,\n onChange,\n defaultValue,\n title = 'Dynamic Data',\n saveText = 'Save',\n width = 1040,\n}) => {\n const [jsonData, setJsonData] = useState<string>(defaultValue);\n\n useEffect(() => {\n setJsonData(defaultValue);\n }, [isVisible, defaultValue]);\n\n const handleClose = () => {\n onClose();\n };\n\n const handleSave = () => {\n try {\n const data = JSON.parse(jsonData);\n onChange(JSON.stringify(data));\n onClose();\n } catch (error: unknown) {\n const errorMessage = error instanceof Error ? error.message : 'Invalid JSON';\n toast.error(errorMessage, {\n toastId: 'Invalid JSON',\n });\n }\n };\n\n const handleChangeJSONData = (data: string) => {\n setJsonData(data);\n };\n\n const footer: ReactNode = (\n <div key=\"submit\" className=\"flex justify-end mt-4\">\n <Button id=\"btn-dynamic-data-modal-save\" status=\"primary\" onClick={handleSave} type=\"submit\">\n {saveText}\n </Button>\n </div>\n );\n\n return (\n <Modal asForm title={title} open={isVisible} onCancel={handleClose} width={width} className=\"no-body-padding-modal\" footer={footer}>\n <div className=\"h-[calc(100vh-400px)] overflow-y-auto bg-neutral-50 dark:bg-black-800 px-6\">\n <div className=\"py-5 w-full overflow-x-auto\">\n <div className=\"border rounded-lg\">\n <CodeEditor height=\"420px\" value={jsonData} onChange={(x) => handleChangeJSONData(x)} isEditMode />\n </div>\n </div>\n </div>\n </Modal>\n );\n};\n\n","import React, { SVGAttributes } from 'react';\n\nexport interface EditIconProps extends SVGAttributes<SVGElement> {\n fill?: string;\n size?: string | number;\n className?: string;\n}\n\nexport const EditIcon: React.FC<EditIconProps> = ({ \n fill = 'currentColor', \n size = 20, \n className = '', \n ...props \n}) => {\n return (\n <svg \n xmlns=\"http://www.w3.org/2000/svg\" \n width={size} \n height={size} \n viewBox=\"0 0 20 20\" \n fill={fill} \n className={className}\n {...props}\n >\n <g>\n <path\n d=\"M16.0833 7.43749L12.5417 3.93749L13.7083 2.77082C14.0278 2.45138 14.4201 2.29166 14.8854 2.29166C15.3507 2.29166 15.7431 2.45138 16.0625 2.77082L17.2292 3.93749C17.5486 4.25693 17.7153 4.64235 17.7292 5.09374C17.7431 5.54513 17.5903 5.93055 17.2708 6.24999L16.0833 7.43749ZM3.33333 17.5C3.09722 17.5 2.89931 17.4201 2.73958 17.2604C2.57986 17.1007 2.5 16.9028 2.5 16.6667V14.3125C2.5 14.2014 2.52083 14.0937 2.5625 13.9896C2.60417 13.8854 2.66667 13.7917 2.75 13.7083L11.3333 5.12499L14.875 8.66666L6.29167 17.25C6.20833 17.3333 6.11458 17.3958 6.01042 17.4375C5.90625 17.4792 5.79861 17.5 5.6875 17.5H3.33333Z\"\n />\n </g>\n </svg>\n );\n};\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport cn from \"classnames\";\nimport { type FC, useEffect, useRef, useState } from \"react\";\n\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport { Label } from \"../../data-display/label/Label\";\nimport type { LabelType } from \"../../data-display/label/Label\";\nimport { DynamicDataModal } from \"../../data-display/dynamic-data-modal/DynamicDataModal\";\nimport { AIExtractedIndicator } from \"../../icons/AIExtractedIndicator\";\nimport { Required } from \"../../icons/Required\";\nimport { HelpIcon } from \"../../icons/HelpIcon\";\nimport { EditIcon } from \"../../icons/EditIcon\";\nimport Tooltip from \"../../tooltip/Tooltip\";\n\n/**\n * Props for the DynamicDataInput component\n * Drop-in replacement matching the lax-web-portal API\n */\nexport type DynamicDataInputProps = {\n /** Unique identifier for the input */\n id: string;\n /** Label text to display above the input */\n label?: string;\n /** Input type (text, email, password, number, etc.) */\n type?: string;\n /** Placeholder text for the input */\n placeholder?: string;\n /** Current value of the input (JSON string for dynamic data) */\n value: string;\n /** Callback function called when value changes */\n onChange: (value: string) => void;\n /** Error message to display below the input */\n errorMessage?: string;\n /** Whether to preserve original case in the label */\n originalCase?: boolean;\n /** Whether the field is required */\n required?: boolean;\n /** Background color class */\n bg?: string;\n /** Tags/labels to display next to the label */\n tags?: (string | LabelType)[];\n /** Index prop used for resetting input state */\n index?: number;\n /** Additional CSS classes for the wrapper */\n className?: string;\n /** Tooltip text for the help icon */\n tooltip?: string;\n /** Whether to use simple mode (no label, just input with edit button) */\n simpleMode?: boolean;\n /** Additional CSS classes for the input field in simple mode */\n inputFieldClassName?: string;\n /** Whether the value was AI extracted */\n isAiExtracted?: boolean;\n /** Whether the input is disabled */\n disabled?: boolean;\n} & Record<string, any>;\n\n/**\n * A dynamic data input component that displays a text input with a button to open\n * a modal for editing JSON data. The input shows \"{DYNAMIC}\" when there's a value.\n * \n * This is a drop-in replacement for the lax-web-portal DynamicDataInput component.\n *\n * @example\n * ```tsx\n * <DynamicDataInput\n * id=\"dynamic-field\"\n * label=\"Dynamic Field\"\n * type=\"text\"\n * placeholder=\"Enter value...\"\n * value={jsonData}\n * onChange={(value) => setJsonData(value)}\n * errorMessage=\"\"\n * />\n * ```\n */\nexport const DynamicDataInput: FC<DynamicDataInputProps> = (props) => {\n const {\n id,\n label = \"\",\n type = \"text\",\n placeholder = \"\",\n value,\n onChange,\n originalCase = false,\n errorMessage = \"\",\n required,\n bg,\n tags,\n index,\n className,\n tooltip = \"\",\n simpleMode,\n inputFieldClassName,\n isAiExtracted = false,\n disabled = false,\n ...rest\n } = props;\n\n const [inputValue, setInputValue] = useState<string | null>(null);\n const [showMasterDataModal, setShowMasterDataModal] = useState(false);\n\n const inputRef = useRef<HTMLInputElement>(null);\n\n // Reset input value when index changes\n useEffect(() => {\n setInputValue(null);\n }, [index]);\n\n // Trigger onChange when inputValue changes\n useEffect(() => {\n if (inputValue !== null) {\n onChange(inputValue);\n }\n }, [inputValue, onChange]);\n\n const toggleModal = () => {\n setShowMasterDataModal(!showMasterDataModal);\n };\n\n const handleSetData = (dynamicData: string) => {\n setInputValue(dynamicData);\n toggleModal();\n };\n\n return (\n <>\n {simpleMode ? (\n <div className=\"relative w-full h-full\">\n <input\n type={type}\n placeholder={placeholder}\n className={inputFieldClassName}\n onChange={(e) => {\n onChange(e.target.value);\n }}\n ref={inputRef}\n value={value ? \"{DYNAMIC}\" : \"\"}\n disabled={true}\n {...rest}\n />\n\n <button\n id=\"btn-dynamic-data-input-edit\"\n onClick={toggleModal}\n className={cn(\n \"absolute inset-y-0 right-0 flex items-center px-4 focus:border-transparent border-l\",\n disabled ? \"cursor-not-allowed\" : \"\"\n )}\n disabled={disabled}\n type=\"button\"\n >\n <EditIcon />\n </button>\n </div>\n ) : (\n <div className={cn(\"flex flex-col w-full\", className)}>\n <label\n htmlFor=\"text\"\n className={`mb-1 text-xs font-medium text-black-300 dark:text-black-300 inline-flex items-center gap-1 flex-wrap ${\n !originalCase ? \"capitalize\" : \"\"\n }`}\n >\n <Typography\n size=\"extra-small\"\n variant=\"medium\"\n appearance=\"subtitle\"\n >\n {label}\n {required && <Required />}\n </Typography>\n {isAiExtracted && <AIExtractedIndicator />}\n <Label labels={tags} />\n {tooltip && (\n <Tooltip placement=\"top\" title={tooltip}>\n <div className=\"cursor-pointer\">\n <HelpIcon />\n </div>\n </Tooltip>\n )}\n </label>\n <label className=\"relative block\">\n <input\n type={type}\n id={id}\n required={required}\n placeholder={placeholder}\n className={cn(\n \"border\",\n errorMessage\n ? \"border-red-300 focus:border-red-300\"\n : \"border-gray-300 dark:border-black-600 focus:border-blue-500 dark:focus:border-primary-400\",\n bg,\n \"text-sm rounded-lg block w-full p-2.5 font-inter font-medium\",\n type === \"currency\" ? \"pl-8\" : \"\",\n \"bg-white dark:bg-black-600 text-gray-900 dark:text-black-200\"\n )}\n onChange={(e) => {\n onChange(e.target.value);\n }}\n ref={inputRef}\n value={value ? \"{DYNAMIC}\" : \"\"}\n disabled={true}\n autoComplete=\"off\"\n {...rest}\n />\n\n <button\n onClick={toggleModal}\n className=\"absolute inset-y-0 right-0 flex items-center px-4 focus:border-transparent border-l\"\n type=\"button\"\n >\n <EditIcon />\n </button>\n </label>\n {errorMessage && (\n <Typography\n className=\"text-error-500 mt-1 \"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {errorMessage}\n </Typography>\n )}\n </div>\n )}\n <DynamicDataModal\n isVisible={showMasterDataModal}\n onChange={handleSetData}\n onClose={toggleModal}\n defaultValue={value}\n />\n </>\n );\n};\n\nDynamicDataInput.displayName = \"DynamicDataInput\";\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport cn from \"classnames\";\nimport { forwardRef, useState } from \"react\";\nimport { Tooltip as AntTooltip } from \"antd\";\nimport { useTranslation } from 'react-i18next';\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport { Label } from \"../../data-display/label/Label\";\nimport type { LabelType } from \"../../data-display/label/Label\";\nimport { BoltOutlined, NoteAddOutlined } from \"@mui/icons-material\";\nimport { AIExtractedIndicator } from \"../../icons/AIExtractedIndicator\";\nimport { Required } from \"../../icons/Required\";\nimport { HelpIcon } from \"../../icons/HelpIcon\";\nimport Tooltip from \"../../tooltip/Tooltip\";\n\n/**\n * Risk details interface for risk analysis integration\n */\nexport interface RiskDetails {\n color?: string;\n description?: string;\n hexBgColor?: string;\n hexBorderColor?: string;\n [key: string]: any;\n}\n\n/**\n * Risk details card component props - generic to allow consumer-specific risk types\n */\nexport interface RiskDetailsCardProps<T = any> {\n riskDetails: T;\n maxWidth?: string;\n showAllRisksSuggestions?: boolean;\n}\n\n/**\n * Props for the PercentageInputField component\n */\nexport interface PercentageInputFieldProps {\n /** Unique identifier for the input */\n id: string;\n /** Label text to display above the input */\n label?: string;\n /** Current value of the input */\n value: string;\n /** Callback function called when value changes */\n onChange: (data: any) => void;\n /** Error message to display below the input */\n errorMessage?: string;\n /** Default value for the input */\n defaultValue?: string;\n /** Whether the input is disabled */\n disabled?: boolean;\n /** Maximum value allowed */\n max?: number;\n /** Minimum value allowed */\n min?: number;\n /** Whether the field is required */\n required?: boolean;\n /** Whether the required indicator shows as conditional (yellow instead of red) */\n isRequiredConditional?: boolean;\n /** Background color class */\n bg?: string;\n /** Tags/labels to display next to the label */\n tags?: (string | LabelType)[];\n /** Text color class */\n color?: string;\n /** Additional CSS classes for the wrapper */\n className?: string;\n /** Whether to preserve original case in the label */\n originalCase?: boolean;\n /** Tooltip text for the help icon */\n tooltip?: string;\n /** Whether to use simple mode (inline label style) */\n simpleMode?: boolean;\n /** Additional CSS classes for the input field */\n inputFieldClassName?: string;\n /** Whether the value was AI extracted */\n isAiExtracted?: boolean;\n /** Whether this is a GTN (Global Term Name) field */\n isGTN?: boolean;\n /** GTN field name for document integration */\n gtnName?: any;\n /** Inline styles for the input element */\n inputStyle?: React.CSSProperties;\n /** Whether to show dollar sign (for simpleMode) */\n withDollarSign?: boolean;\n /** Additional CSS classes for the label */\n labelClassName?: string;\n /** Whether this is a live field */\n isLiveField?: boolean;\n /** Callback function called when input loses focus */\n onBlur?: () => void;\n /** Handler for adding GTN to document */\n onAddGTNToDocument?: (keyValuePair: { key: string; value: string }) => void;\n /** Risk details data */\n riskDetails?: RiskDetails;\n /** Whether risk analysis is open */\n isRiskAnalysisOpen?: boolean;\n /** Custom risk details card component */\n RiskDetailsCard?: React.ComponentType<RiskDetailsCardProps<any>>;\n /** Input placeholder */\n placeholder?: string\n}\n\n/**\n * A highly customizable percentage input component with label, validation, and styling support.\n * Features GTN integration, risk analysis support, AI extraction indicator, and comprehensive prop support.\n *\n * @example\n * ```tsx\n * <PercentageInputField\n * id=\"discount\"\n * label=\"Discount Percentage\"\n * value={discount}\n * onChange={(value) => setDiscount(value)}\n * required\n * />\n * ```\n */\nexport const PercentageInputField = forwardRef<\n HTMLInputElement,\n PercentageInputFieldProps\n>(\n (\n {\n id,\n label,\n value,\n onChange,\n errorMessage,\n defaultValue,\n disabled,\n max,\n min,\n required = false,\n isRequiredConditional = false,\n bg,\n tags,\n color,\n className,\n originalCase = false,\n tooltip,\n simpleMode = false,\n inputFieldClassName = \"\",\n isAiExtracted = false,\n isGTN = false,\n gtnName = null,\n inputStyle,\n withDollarSign = true,\n labelClassName,\n isLiveField = false,\n onBlur,\n onAddGTNToDocument,\n riskDetails,\n isRiskAnalysisOpen = false,\n RiskDetailsCard,\n placeholder,\n ...props\n },\n ref\n ) => {\n const { t } = useTranslation();\n const [isHovered, setIsHovered] = useState(false);\n\n const handleAddGTNToDocument = (_value: string) => {\n if (onAddGTNToDocument) {\n const keyValuePair = {\n key: gtnName,\n value: _value,\n };\n onAddGTNToDocument(keyValuePair);\n }\n };\n\n // Simple mode rendering\n if (simpleMode) {\n return (\n <label\n id={id}\n className={`mb-1 text-xs font-medium text-gray-600 dark:text-neutral-200 inline-flex items-center gap-1 ${\n !originalCase ? \"capitalize\" : \"\"\n } ${labelClassName || \"\"}`}\n >\n {withDollarSign && (\n <span className=\"absolute inset-y-0 left-1 flex items-center pl-3\">\n {\"$\"}\n </span>\n )}\n <input\n {...props}\n ref={ref}\n onBlur={onBlur}\n type=\"number\"\n required={required}\n className={cn(inputFieldClassName, \"pl-8 h-[32px]\")}\n onChange={(e) => {\n onChange(e.target.value);\n }}\n value={value}\n {...(defaultValue && !value ? { defaultValue: defaultValue } : {})}\n id={id || label}\n style={inputStyle}\n autoComplete=\"off\"\n />\n </label>\n );\n }\n\n // Full mode rendering\n return (\n <div\n className={cn(\n \"flex gap-0.5 relative\",\n isHovered && isGTN\n ? \"border rounded-lg border-primary-100 bg-primary-50 p-1\"\n : \"\"\n )}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {isGTN && !isHovered ? (\n <div className=\"w-1 h-1 bg-primary-600 rounded-full animate-blink mt-1.5\" />\n ) : null}\n <div className={cn(\"w-full flex flex-col\", className)}>\n <label\n htmlFor=\"text\"\n className={`mb-1 text-xs font-medium text-gray-600 dark:text-neutral-300 inline-flex items-center gap-1 ${\n !originalCase ? \"uppercase\" : \"\"\n } ${labelClassName || \"\"}`}\n >\n <div className=\"w-full flex items-center justify-between flex-wrap\">\n <div className=\"inline-flex items-center gap-1 flex-wrap dark:text-black-300\">\n <Typography\n size=\"extra-small\"\n variant=\"medium\"\n appearance=\"subtitle\"\n >\n {label}\n {required && <Required isConditional={isRequiredConditional} />}\n </Typography>\n {isLiveField && (\n <BoltOutlined\n sx={{\n fontSize: 16,\n color: \"var(--color-primary-600)\",\n rotate: \"15deg\",\n }}\n />\n )}\n {isAiExtracted && <AIExtractedIndicator />}\n <Label labels={tags} />\n {tooltip && (\n <Tooltip placement=\"top\" title={tooltip}>\n <div className=\"cursor-pointer\">\n <HelpIcon />\n </div>\n </Tooltip>\n )}\n </div>\n\n {isGTN && isHovered && onAddGTNToDocument ? (\n <button\n id=\"btn-percentage-input-add-to-document\"\n className=\"cursor-pointer\"\n onClick={() => handleAddGTNToDocument(value?.toString())}\n type=\"button\"\n >\n <AntTooltip placement=\"top\" title={t(\"Add to document\")}>\n <NoteAddOutlined\n className=\"text-primary-600\"\n sx={{ fontSize: 16 }}\n />\n </AntTooltip>\n </button>\n ) : null}\n </div>\n </label>\n <label className=\"relative block\">\n <input\n {...props}\n ref={ref}\n onBlur={onBlur}\n type=\"number\"\n required={required}\n disabled={disabled}\n min={min}\n max={max}\n className={`border ${\n errorMessage\n ? \"border-red-300\"\n : isRiskAnalysisOpen && riskDetails?.color\n ? `border-${riskDetails.color}-300`\n : \"border-gray-300\"\n } ${bg} h-[32px] text-gray-900 dark:bg-black-600 dark:text-neutral-200 text-sm rounded-lg focus:ring-blue-500 focus:border-blue-500 block w-full p-2.5 font-inter font-medium \n disabled:bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400\n ${\n isRiskAnalysisOpen &&\n riskDetails?.color &&\n `bg-${riskDetails.color}-50`\n }\n ${color || \"\"}\n `}\n onChange={(e) => {\n onChange(e.target.value);\n }}\n value={value}\n defaultValue={defaultValue}\n id={id || label}\n style={inputStyle}\n autoComplete=\"off\"\n placeholder={placeholder}\n />\n <span className=\"absolute inset-y-0 right-3 flex items-center z-[1000px] h-full dark:text-black-100\">\n %\n </span>\n </label>\n {errorMessage && (\n <Typography\n className=\"text-error-500 mt-1\"\n appearance=\"custom\"\n size=\"extra-small\"\n variant=\"medium\"\n >\n {errorMessage}\n </Typography>\n )}\n </div>\n\n {isHovered &&\n riskDetails &&\n isRiskAnalysisOpen &&\n RiskDetailsCard && (\n <div\n role=\"tooltip\"\n tabIndex={0}\n className=\"absolute left-0 right-0 top-[95%] mt-1 z-50 bg-white dark:bg-black-600 rounded-xl\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.preventDefault()}\n onKeyDown={(e) => {\n if (e.key === \"Escape\") {\n setIsHovered(false);\n }\n }}\n >\n <RiskDetailsCard riskDetails={riskDetails} />\n </div>\n )}\n </div>\n );\n }\n);\n\nPercentageInputField.displayName = \"PercentageInputField\";\n","import { useEffect, useLayoutEffect } from 'react';\n\nexport const useIsomorphicLayoutEffect =\n typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n\n","import { useEffect, useRef } from 'react';\n// eslint-disable-next-line no-duplicate-imports\nimport type { RefObject } from 'react';\n\n// See: https://usehooks-ts.com/react-hook/use-isomorphic-layout-effect\nimport { useIsomorphicLayoutEffect } from './useIsomorphicLayoutEffect';\n\n// Window Event based useEventListener interface\nexport function useEventListener<K extends keyof WindowEventMap>(\n eventName: K | null,\n handler: (event: WindowEventMap[K]) => void,\n element?: undefined,\n options?: boolean | AddEventListenerOptions,\n): void;\n\n// Element Event based useEventListener interface\nexport function useEventListener<\n K extends keyof HTMLElementEventMap,\n T extends HTMLElement = HTMLDivElement,\n>(\n eventName: K | null,\n handler: (event: HTMLElementEventMap[K]) => void,\n element: RefObject<T>,\n options?: boolean | AddEventListenerOptions,\n): void;\n\n// Document Event based useEventListener interface\nexport function useEventListener<K extends keyof DocumentEventMap>(\n eventName: K | null,\n handler: (event: DocumentEventMap[K]) => void,\n element: RefObject<Document>,\n options?: boolean | AddEventListenerOptions,\n): void;\n\nexport function useEventListener<\n KW extends keyof WindowEventMap,\n KH extends keyof HTMLElementEventMap,\n T extends HTMLElement | void = void,\n>(\n eventName: KW | KH | null,\n handler: (event: WindowEventMap[KW] | HTMLElementEventMap[KH] | Event) => void,\n element?: RefObject<T>,\n options?: boolean | AddEventListenerOptions,\n) {\n // Create a ref that stores handler\n const savedHandler = useRef(handler);\n useIsomorphicLayoutEffect(() => {\n savedHandler.current = handler;\n }, [handler]);\n\n useEffect(() => {\n // Define the listening target\n const targetElement: T | Window = element?.current || window;\n if (!(targetElement && targetElement.addEventListener) || eventName === null) {\n return;\n }\n\n // Create event listener that calls handler function stored in ref\n const eventListener: typeof handler = (event) => savedHandler.current(event);\n\n targetElement.addEventListener(eventName, eventListener, options);\n\n // Remove event listener on cleanup\n return () => {\n targetElement.removeEventListener(eventName, eventListener);\n };\n }, [eventName, element, options]);\n}\n\n","import { useEventListener } from '../../hooks/useEventListener';\nimport cn from 'classnames';\nimport React, { useImperativeHandle, useRef, useState } from 'react';\nimport type { ForwardedRef, CSSProperties } from 'react';\nimport { Scrollbars } from 'react-custom-scrollbars-2';\nimport type { ScrollbarProps } from 'react-custom-scrollbars-2';\n\n/**\n * Custom scrollbar handle for external control\n */\nexport interface CustomScrollbarHandle {\n /** Get the Scrollbars instance */\n getInstance?: Scrollbars | null;\n /** Scroll to the top of the container */\n scrollToTop?: () => void;\n /** Scroll to the right of the container */\n scrollToRight?: () => void;\n}\n\n/**\n * Props for the CustomScrollbar component\n */\nexport interface CustomScrollbarProps {\n /** Content to render inside the scrollbar */\n children: React.ReactNode;\n /** Whether to adjust height based on screen size */\n adjustWithScreen?: boolean;\n /** Additional CSS classes for the inner view */\n renderViewClassName?: string;\n /** Whether to use full height */\n fullHeight?: boolean;\n}\n\n/**\n * CustomScrollbar component provides a styled scrollable container\n * with custom scrollbar appearance\n *\n * @example\n * ```tsx\n * <CustomScrollbar>\n * <div>Scrollable content...</div>\n * </CustomScrollbar>\n *\n * // With ref for programmatic control\n * const scrollRef = useRef<CustomScrollbarHandle>(null);\n * <CustomScrollbar ref={scrollRef}>\n * <div>Content...</div>\n * </CustomScrollbar>\n * // scrollRef.current?.scrollToTop();\n * ```\n */\nexport const CustomScrollbar = React.memo(\n React.forwardRef(\n (\n { adjustWithScreen, children, renderViewClassName, fullHeight, ...props }: CustomScrollbarProps & ScrollbarProps,\n scrollBarRef: ForwardedRef<CustomScrollbarHandle>,\n ) => {\n const [height, setHeight] = useState<string | number>(window.innerHeight);\n const ref = useRef<Scrollbars | null>(null);\n\n const handleSize = () => {\n if (adjustWithScreen) {\n setHeight(window.innerHeight);\n }\n };\n\n useEventListener('resize', handleSize);\n\n useImperativeHandle(\n scrollBarRef,\n () => ({\n get getInstance() {\n return ref.current;\n },\n scrollToTop: () => {\n if (ref.current) {\n (ref.current as Scrollbars).scrollToTop();\n }\n },\n scrollToRight: () => {\n if (ref.current) {\n (ref.current as Scrollbars).scrollToRight();\n }\n },\n }),\n [],\n );\n\n return (\n <Scrollbars\n ref={ref}\n autoHide\n renderTrackVertical={({ style, ..._props }: { style: CSSProperties; [key: string]: unknown }) => (\n <div style={style} className='h-full top-0 right-0 rounded-md z-[1001] !w-scrollbar-size' {..._props} />\n )}\n renderThumbVertical={({ style, ..._props }: { style: CSSProperties; [key: string]: unknown }) => (\n <div style={style} className='rounded-md bg-[#00000033] dark:bg-black-500 absolute right-0.5 !w-2' {..._props} />\n )}\n renderTrackHorizontal={({ style, ..._props }: { style: CSSProperties; [key: string]: unknown }) => (\n <div style={style} className='w-full bottom-0 left-0 rounded-md z-[1001] !h-scrollbar-size ' {..._props} />\n )}\n renderThumbHorizontal={({ style, ..._props }: { style: CSSProperties; [key: string]: unknown }) => (\n <div style={style} className='rounded-md bg-[#00000033] dark:bg-black-500 absolute bottom-0.5 !h-2' {..._props} />\n )}\n renderView={(_props: React.HTMLAttributes<HTMLDivElement>) => (\n <div\n className={cn(\n '!-mr-scrollbar-size h-full !-mb-scrollbar-size',\n renderViewClassName,\n fullHeight ? '!h-[calc(100%+var(--scroll-bar-size))]' : '',\n )}\n {..._props}\n />\n )}\n {...props}\n style={{\n ...(props.style || {}),\n zIndex: 0,\n ...(!props.autoHeight && !props.style?.height ? { height: fullHeight ? '100%' : height, overflowX: 'hidden' } : {}),\n }}\n >\n {children}\n </Scrollbars>\n );\n },\n ),\n);\n\nCustomScrollbar.displayName = \"CustomScrollbar\";\n","import cn from \"classnames\";\nimport { useMemo, useState } from \"react\";\nimport ReactMarkdown from \"react-markdown\";\nimport remarkGfm from \"remark-gfm\";\nimport { OpenInFull } from \"@mui/icons-material\";\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport { Modal } from \"../../data-display/modal/Modal\";\nimport { CustomScrollbar } from \"../../layout/CustomScrollbar\";\n\n/**\n * Props for the MdInput component\n */\nexport interface MdInputProps {\n /** Unique identifier for the markdown input */\n id?: string;\n /** Current markdown value */\n value?: string;\n /** Callback function called when the markdown value changes */\n onChange: (value: string) => void;\n /** Placeholder text for the textarea */\n placeholder?: string;\n /** Number of visible text lines for the textarea */\n rows?: number;\n /** Whether the input is disabled */\n disabled?: boolean;\n /** Additional CSS classes for the wrapper container */\n className?: string;\n /** Additional CSS classes for the textarea */\n textareaClassName?: string;\n /** Additional CSS classes for the preview container */\n previewClassName?: string;\n /** Initial mode (markdown or preview) */\n defaultMode?: \"markdown\" | \"preview\";\n /** Current mode (markdown or preview) */\n mode?: \"markdown\" | \"preview\";\n /** Label text to display above the input */\n label?: string;\n /** Whether the field is required */\n required?: boolean;\n}\n\n/**\n * A markdown input component with preview mode support.\n * Features a toggle switch to switch between markdown editing and preview modes.\n *\n * @example\n * ```tsx\n * <MdInput\n * value={markdown}\n * onChange={setMarkdown}\n * placeholder=\"Enter markdown content...\"\n * defaultMode=\"markdown\"\n * />\n * ```\n */\nexport const MdInput = ({\n id,\n value = \"\",\n onChange,\n placeholder = \"Enter markdown content...\",\n rows: minRows = 1,\n disabled = false,\n className,\n textareaClassName,\n previewClassName,\n defaultMode = \"markdown\",\n mode: modeProp,\n label,\n required = false,\n}: MdInputProps) => {\n const [internalMode, setInternalMode] = useState<\"markdown\" | \"preview\">(\n defaultMode\n );\n const [isModalOpen, setIsModalOpen] = useState(false);\n const inputId = id || `md-input-${Math.random().toString(36).slice(2, 11)}`;\n\n const rows = useMemo(() => {\n if (!value) return minRows;\n\n const lineCount = (value.match(/\\n/g) || []).length + 1;\n return Math.min(18, lineCount);\n }, [value, minRows]);\n\n // Use modeProp if provided (controlled), otherwise use internal state (uncontrolled)\n const effectiveMode = modeProp ?? internalMode;\n const isControlled = modeProp !== undefined;\n\n return (\n <div className={cn(\"flex flex-col gap-2\", className)}>\n {/* Header with toggle and label */}\n <div className=\"flex items-center gap-3\">\n {/* Only show toggle when not controlled (mode prop not provided) */}\n {!isControlled && (\n <div className=\"flex items-center gap-2\">\n <div className=\"inline-flex grow-0 p-1 rounded-lg bg-neutral-100 dark:bg-black-700 w-auto\">\n <button\n className={cn(\n \"rounded-md p-1 flex items-center justify-center\",\n effectiveMode === \"markdown\"\n ? \"bg-white dark:bg-black-700 !text-neutral-900 dark:!text-neutral-100\"\n : \"\"\n )}\n onClick={() => setInternalMode(\"markdown\")}\n disabled={disabled}\n >\n <Typography\n variant=\"semibold\"\n size=\"extra-small\"\n appearance=\"subtitle\"\n className={cn(\n effectiveMode === \"markdown\"\n ? \"!text-neutral-900 dark:!text-neutral-100\"\n : \"\"\n )}\n >\n Markdown\n </Typography>\n </button>\n <button\n className={cn(\n \"rounded-md p-1 flex items-center justify-center\",\n effectiveMode === \"preview\"\n ? \"bg-white dark:bg-black-700 !text-neutral-900 dark:!text-neutral-100\"\n : \"\"\n )}\n onClick={() => setInternalMode(\"preview\")}\n disabled={disabled}\n >\n <Typography\n variant=\"semibold\"\n size=\"extra-small\"\n appearance=\"subtitle\"\n className={cn(\n effectiveMode === \"preview\"\n ? \"!text-neutral-900 dark:!text-neutral-100\"\n : \"\"\n )}\n >\n Preview\n </Typography>\n </button>\n </div>\n </div>\n )}\n {label && (\n <label\n htmlFor={inputId}\n className=\"text-xs font-medium text-gray-600 dark:text-gray-300\"\n >\n {label}\n {required && <span className=\"text-red-500 ml-1\">*</span>}\n </label>\n )}\n </div>\n\n {/* Content area */}\n <div className=\"relative\">\n {effectiveMode === \"markdown\" ? (\n <textarea\n id={inputId}\n value={value}\n onChange={(e) => onChange(e.target.value)}\n placeholder={placeholder}\n rows={rows}\n disabled={disabled}\n required={required}\n className={cn(\n // Base styles\n \"w-full border rounded-lg bg-white dark:bg-black-600\",\n \"py-2.5 px-3 font-inter font-medium text-sm\",\n \"text-gray-900 dark:text-gray-100\",\n \"placeholder:text-gray-400 dark:placeholder:text-gray-500\",\n \"transition-colors duration-200\",\n \"focus:ring-2 focus:outline-none resize-vertical\",\n \"border-gray-300 dark:border-gray-600\",\n \"focus:border-blue-500 focus:ring-blue-200 dark:focus:ring-blue-400/20\",\n // Disabled state\n {\n \"bg-gray-50 dark:bg-gray-700 text-gray-400 dark:text-gray-500 cursor-not-allowed\":\n disabled,\n },\n textareaClassName\n )}\n onClick={(e) => e.stopPropagation()}\n />\n ) : (\n <div className=\"relative\">\n <div\n className={cn(\n \"w-full rounded-lg\",\n \"py-2.5 px-3 min-h-[calc(2.5rem*var(--rows,8))]\",\n \"text-sm\",\n previewClassName\n )}\n style={{ \"--rows\": rows > 3 ? rows - 3 : rows } as React.CSSProperties}\n >\n <CustomScrollbar \n autoHeight \n autoHeightMax={`calc(1rem * ${rows > 3 ? rows - 3 : rows})`}\n >\n <div className=\"markdown-preview text-gray-900 dark:text-gray-100 [&_h1]:text-2xl [&_h1]:font-bold [&_h1]:mb-4 [&_h1]:mt-2 [&_h2]:text-xl [&_h2]:font-bold [&_h2]:mb-3 [&_h2]:mt-2 [&_h3]:text-lg [&_h3]:font-semibold [&_h3]:mb-2 [&_h3]:mt-2 [&_p]:mb-2 [&_p]:leading-relaxed [&_ul]:list-disc [&_ul]:ml-6 [&_ul]:mb-2 [&_ol]:list-decimal [&_ol]:ml-6 [&_ol]:mb-2 [&_li]:mb-1 [&_code]:bg-gray-100 [&_code]:dark:bg-gray-800 [&_code]:px-1 [&_code]:py-0.5 [&_code]:rounded [&_code]:text-sm [&_code]:font-mono [&_pre]:bg-gray-100 [&_pre]:dark:bg-gray-800 [&_pre]:p-3 [&_pre]:rounded [&_pre]:overflow-x-auto [&_pre]:mb-2 [&_blockquote]:border-l-4 [&_blockquote]:border-gray-300 [&_blockquote]:dark:border-gray-600 [&_blockquote]:pl-4 [&_blockquote]:italic [&_blockquote]:mb-2 [&_a]:text-blue-600 [&_a]:dark:text-blue-400 [&_a]:underline [&_strong]:font-bold [&_em]:italic [&_table]:w-full [&_table]:border-collapse [&_table]:mb-2 [&_th]:border [&_th]:border-gray-300 [&_th]:dark:border-gray-600 [&_th]:px-2 [&_th]:py-1 [&_th]:bg-gray-50 [&_th]:dark:bg-gray-700 [&_th]:font-semibold [&_td]:border [&_td]:border-gray-300 [&_td]:dark:border-gray-600 [&_td]:px-2 [&_td]:py-1 [&_hr]:my-4 [&_hr]:border-gray-300 [&_hr]:dark:border-gray-600\">\n <ReactMarkdown remarkPlugins={[remarkGfm]}>\n {value || \"*No content to preview*\"}\n </ReactMarkdown>\n </div>\n </CustomScrollbar>\n </div>\n {/* Expand button in bottom right */}\n <button\n onClick={() => setIsModalOpen(true)}\n className=\"absolute bottom-2 right-2 p-1 rounded-md bg-neutral-100 dark:bg-black-600 hover:bg-gray-200 dark:hover:bg-black-500 transition-colors shadow-sm flex items-center justify-center\"\n title=\"Expand preview\"\n type=\"button\"\n >\n <OpenInFull sx={{ fontSize: \"16px\" }} className=\"text-neutral-600 dark:text-neutral-400\" />\n </button>\n </div>\n )}\n </div>\n\n {/* Expanded Preview Modal */}\n <Modal\n open={isModalOpen}\n onCancel={() => setIsModalOpen(false)}\n title=\"Markdown Preview\"\n width={800}\n footer={null}\n >\n <CustomScrollbar autoHeight autoHeightMax=\"70vh\">\n <div className=\"markdown-preview text-gray-900 dark:text-gray-100 [&_h1]:text-2xl [&_h1]:font-bold [&_h1]:mb-4 [&_h1]:mt-2 [&_h2]:text-xl [&_h2]:font-bold [&_h2]:mb-3 [&_h2]:mt-2 [&_h3]:text-lg [&_h3]:font-semibold [&_h3]:mb-2 [&_h3]:mt-2 [&_p]:mb-2 [&_p]:leading-relaxed [&_ul]:list-disc [&_ul]:ml-6 [&_ul]:mb-2 [&_ol]:list-decimal [&_ol]:ml-6 [&_ol]:mb-2 [&_li]:mb-1 [&_code]:bg-gray-100 [&_code]:dark:bg-gray-800 [&_code]:px-1 [&_code]:py-0.5 [&_code]:rounded [&_code]:text-sm [&_code]:font-mono [&_pre]:bg-gray-100 [&_pre]:dark:bg-gray-800 [&_pre]:p-3 [&_pre]:rounded [&_pre]:overflow-x-auto [&_pre]:mb-2 [&_blockquote]:border-l-4 [&_blockquote]:border-gray-300 [&_blockquote]:dark:border-gray-600 [&_blockquote]:pl-4 [&_blockquote]:italic [&_blockquote]:mb-2 [&_a]:text-blue-600 [&_a]:dark:text-blue-400 [&_a]:underline [&_strong]:font-bold [&_em]:italic [&_table]:w-full [&_table]:border-collapse [&_table]:mb-2 [&_th]:border [&_th]:border-gray-300 [&_th]:dark:border-gray-600 [&_th]:px-2 [&_th]:py-1 [&_th]:bg-gray-50 [&_th]:dark:bg-gray-700 [&_th]:font-semibold [&_td]:border [&_td]:border-gray-300 [&_td]:dark:border-gray-600 [&_td]:px-2 [&_td]:py-1 [&_hr]:my-4 [&_hr]:border-gray-300 [&_hr]:dark:border-gray-600\">\n <ReactMarkdown remarkPlugins={[remarkGfm]}>\n {value || \"*No content to preview*\"}\n </ReactMarkdown>\n </div>\n </CustomScrollbar>\n </Modal>\n </div>\n );\n};\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Upload } from 'antd';\nimport { type FC, useEffect, useState } from 'react';\nimport { Typography } from '../../data-display/typography/Typography';\nimport { FiDownload, FiTrash2 } from 'react-icons/fi';\nimport { CgSpinner } from 'react-icons/cg';\nimport { BsFiletypePdf } from 'react-icons/bs';\nimport { DescriptionRounded } from '@mui/icons-material';\nimport { buildQueryParams } from '../../../utils/utilities';\n\nconst { Dragger } = Upload;\n\n/**\n * File upload service interface\n */\nexport interface FileUploadService {\n uploadFileToFileServer: (formData: FormData, queryParams: string) => Promise<{ fileUrl: string; fileName: string }>;\n deleteFileFromFileServer: (fileName: string, queryParams: string) => Promise<void>;\n}\n\n/**\n * System messages interface\n */\nexport interface SystemMessages {\n fileSizeLimit: (size: string, unit: string) => string;\n}\n\n// Default max size: 50MB\nconst DEFAULT_MAX_SIZE = 50 * 1024 * 1024;\n\nexport type MultiFileUploadProps = {\n /** Callback to receive the uploaded file */\n getFile: (file: any, fileName?: string) => any;\n /** Description text to display */\n description?: string;\n /** Error message to display */\n errorMessage?: string;\n /** Whether the upload is disabled */\n disabled?: boolean;\n /** Default file to display */\n defaultFile?: any;\n /** Accepted file types */\n acceptedFiles?: string;\n /** Whether loading state is active */\n isLoading?: boolean;\n /** Convert file to base64 */\n asBase64?: boolean;\n /** Upload to file server */\n toFileServer?: boolean;\n /** Whether file is currently uploading */\n fileUploading?: boolean;\n /** Callback to set file uploading state */\n setFileUploading?: (fileUploading: boolean) => void;\n /** Upload to document server path */\n uploadToDocServer?: boolean;\n /** Unique identifier for the upload */\n id?: string;\n /** Allow multiple file uploads */\n multiple?: boolean;\n /** Get original file name */\n getRealFileName?: boolean;\n /** Callback when file is deleted */\n onDelete?: () => void;\n /** Maximum file size in bytes */\n maxSize?: number;\n /** File upload service */\n fileUploadService?: FileUploadService;\n /** System messages for error handling */\n systemMessages?: SystemMessages;\n /** Toast function for displaying errors */\n toast?: {\n error: (message: string, options?: { toastId?: string }) => void;\n };\n};\n\nexport const MultiFileUpload: FC<MultiFileUploadProps> = ({\n getFile,\n id,\n description,\n errorMessage = null,\n disabled = false,\n defaultFile = null,\n acceptedFiles = null,\n isLoading = false,\n asBase64 = false,\n toFileServer = false,\n setFileUploading,\n fileUploading = false,\n uploadToDocServer = false,\n multiple = false,\n getRealFileName = false,\n onDelete: onDeleteProp,\n maxSize = DEFAULT_MAX_SIZE,\n fileUploadService,\n systemMessages,\n toast,\n}) => {\n const [selectedFile, setSelectedFile] = useState<File | null>(null);\n const [fileList, setFileList] = useState<File[]>([]);\n const [borderColor, setBorderColor] = useState('#d9d9d9');\n const [hover, setHover] = useState(false);\n const [uploadedFileData, setUploadedFileData] = useState<any>(null);\n\n const handleUploadFilesToServer = async () => {\n if (!fileUploadService) {\n console.warn('MultiFileUpload: File server upload requires fileUploadService');\n return;\n }\n\n Promise.all(\n fileList.map((_file) => {\n const formData = new FormData();\n\n formData.append('file', _file);\n\n const queryParams = buildQueryParams({\n file_upload_path: uploadToDocServer ? 'document-server' : null,\n token: localStorage.getItem('token'),\n });\n\n return fileUploadService.uploadFileToFileServer(formData, queryParams);\n }),\n ).then((response) => {\n getFile(\n multiple ? response?.map((file) => file?.fileUrl) : response?.[0]?.fileUrl,\n getRealFileName ? selectedFile?.name : response?.[0]?.fileName,\n );\n setFileUploading?.(null as any);\n setUploadedFileData(response?.[0]);\n });\n };\n\n const uploadProps = {\n accept: acceptedFiles ? acceptedFiles : '*',\n multiple: multiple,\n showUploadList: false,\n disabled,\n onRemove: () => {\n setFileList([]);\n },\n beforeUpload: (file: File, uploadedFiles: File[]) => {\n if (file.size > maxSize) {\n const sizeMB = Math.round(maxSize / (1024 * 1024));\n const message = systemMessages?.fileSizeLimit(String(sizeMB), 'MB') || `File size must be less than ${sizeMB}MB`;\n if (toast) {\n toast.error(message, { toastId: message });\n } else {\n console.error(message);\n }\n return false;\n }\n setSelectedFile(file);\n\n if (toFileServer) {\n setFileUploading?.(id || 'field-file-upload' as any);\n setFileList(uploadedFiles);\n } else {\n if (asBase64) {\n // Handle multiple files with Promise.all\n Promise.all(\n (multiple ? uploadedFiles : [file]).map((currentFile) => {\n return new Promise((resolve) => {\n const reader = new FileReader();\n reader.onload = (event) => {\n resolve({\n filename: currentFile.name,\n content: (event?.target?.result as string)?.split(',')[1],\n });\n };\n reader.readAsDataURL(currentFile);\n });\n }),\n ).then((results) => {\n getFile(multiple ? results : results[0]);\n });\n } else {\n getFile(file);\n }\n setSelectedFile(file);\n }\n return false;\n },\n };\n\n const onDelete = async () => {\n if (toFileServer && uploadedFileData && fileUploadService) {\n const queryParams = buildQueryParams({\n token: localStorage.getItem('token'),\n });\n fileUploadService.deleteFileFromFileServer(uploadedFileData?.fileName, queryParams).then(() => {\n setUploadedFileData(null);\n });\n }\n\n setSelectedFile(null);\n setFileList([]);\n getFile('');\n onDeleteProp?.();\n };\n\n useEffect(() => {\n if (defaultFile?.name) {\n setSelectedFile(defaultFile);\n }\n }, [defaultFile]);\n\n useEffect(() => {\n if (errorMessage) {\n setBorderColor('#EF4444');\n } else {\n setBorderColor('#d9d9d9');\n }\n }, [errorMessage]);\n\n useEffect(() => {\n if (fileList.length) {\n handleUploadFilesToServer();\n }\n }, [fileList]);\n\n const shortenFileName = (fileName: any) => {\n if (!fileName) return '';\n if (fileName.length <= 20) {\n return fileName;\n } else {\n const truncatedName = fileName.slice(0, 17 - 3); // 3 for the ellipsis\n return truncatedName + '....' + fileName.slice(-7);\n }\n };\n\n return (\n <div>\n <div className='h-32' onMouseEnter={() => setHover(true)} onMouseLeave={() => setHover(false)}>\n <Dragger\n {...uploadProps}\n style={{\n borderColor: hover && !errorMessage ? '#1890ff' : borderColor,\n }}\n disabled={disabled || fileUploading}\n >\n {selectedFile ? (\n <div className='flex items-center justify-between mx-5' title={selectedFile?.name || defaultFile?.name}>\n <div className='flex items-center justify-center gap-4'>\n {selectedFile?.type === 'application/pdf' ? (\n <div className='p-3 bg-[#E6F1FC] rounded-lg'>\n <BsFiletypePdf size={20} fill='#006CCF' />\n </div>\n ) : (\n <div className='p-3 bg-[#E6F1FC] rounded-lg'>\n <DescriptionRounded\n sx={{\n height: '20px',\n width: '20px',\n color: '#006CCF',\n }}\n />\n </div>\n )}\n\n <div className='text-left'>\n <Typography size='small' variant='medium' className='font-inter text-md font-medium text-base'>\n {shortenFileName(selectedFile?.name || defaultFile?.name)}\n </Typography>\n {fileUploading ? (\n <Typography size='small' variant='medium' appearance='subtitle'>\n Uploading...\n </Typography>\n ) : selectedFile?.size > 0 ? (\n <Typography size='small' variant='medium' appearance='subtitle'>\n {(selectedFile.size / 1000).toFixed(2)} {'KB'}\n </Typography>\n ) : null}\n </div>\n </div>\n {isLoading ? (\n <CgSpinner size={40} className='spinner text-primary-600' />\n ) : (\n <button\n id={`btn-file-upload`}\n className='ml-4'\n onClick={(e) => {\n e.stopPropagation();\n onDelete();\n }}\n disabled={disabled}\n >\n <FiTrash2 size={20} fill='#98A2B3' />\n </button>\n )}\n </div>\n ) : (\n <div className='flex items-center justify-center'>\n <div className='flex-col'>\n <div className='mb-4 flex justify-center'>\n <FiDownload size={24} fill='#98A2B3' />\n </div>\n <div>\n <div className='flex items-center justify-center'>\n <Typography size='small' variant='medium' className='text-primary-600 dark:text-primary-300' appearance='custom'>\n Click to upload\n </Typography>\n <Typography size='small' variant='medium' className='ml-1' appearance='subtitle'>\n or drag and drop\n </Typography>\n </div>\n {description ? (\n <Typography size='small' variant='medium' appearance='subtitle'>\n {description}\n </Typography>\n ) : null}\n </div>\n </div>\n </div>\n )}\n </Dragger>\n </div>\n\n {errorMessage && (\n <Typography className='text-error-500 mt-1' appearance='custom' size='extra-small' variant='medium'>\n {errorMessage}\n </Typography>\n )}\n </div>\n );\n};\n","import classNames from 'classnames';\nimport React, { Suspense, useState } from 'react';\nimport { FixedSizeGrid as Grid, type GridChildComponentProps } from 'react-window';\nimport * as AllIcons from '@mui/icons-material';\nimport { IconButton, type SvgIconOwnProps } from '@mui/material';\nimport { Popover, Tooltip } from \"antd\";\nimport { Typography } from \"../../data-display/typography/Typography\";\nimport { InputField } from \"../input-field/InputField\";\nimport { COUNTRY_CODES, countryNameFromCode } from \"../../../types/icon-picker\";\nimport { getFlagComponent } from \"../../../utils/countryFlags\";\n\nconst roundedIconNames = Object.keys(AllIcons).filter((name) =>\n name?.endsWith(\"Rounded\")\n);\n\n// Merge icon names and country codes for the picker\nconst mergedIconNames = [\n ...(roundedIconNames || []),\n ...(COUNTRY_CODES || []).map((code) => `flag-${code}`),\n];\n\n// Utility function to convert camelCase to human-readable format\nconst formatIconName = (iconName: string): string => {\n // Handle flag icons\n if (iconName?.startsWith(\"flag-\")) {\n const code = iconName?.replace(\"flag-\", \"\");\n return countryNameFromCode(code || \"\") || code;\n }\n\n // Convert camelCase to space-separated words\n // e.g., \"PersonRounded\" -> \"Person Rounded\"\n return iconName.replaceAll(/([A-Z])/g, \" $1\").trim();\n};\n\nexport interface IconPickerContentProps {\n selectedIcon: string | null;\n onChange: (iconName: string | null) => void;\n label?: string;\n required?: boolean;\n allowClear?: boolean;\n disabled?: boolean;\n errorMessage?: string;\n}\n\ninterface IconPickerContentInternalProps {\n onChange: (iconName: string | null) => void;\n selectedIcon: string | null;\n setOpen?: React.Dispatch<React.SetStateAction<boolean>>;\n}\n\nconst IconPickerContent = ({\n onChange,\n selectedIcon,\n setOpen,\n}: IconPickerContentInternalProps) => {\n const [searchTerm, setSearchTerm] = useState<string>(\"\");\n\n // Filter both icons and flags\n const filteredIcons = (mergedIconNames || []).filter((name) => {\n if (name?.startsWith(\"flag-\")) {\n // For flags, allow search by country code or country name\n const code = name?.replace(\"flag-\", \"\");\n return (\n code\n ?.toLowerCase()\n ?.includes(searchTerm?.trim()?.toLowerCase() || \"\") ||\n countryNameFromCode(code || \"\")\n ?.toLowerCase()\n ?.includes(searchTerm?.trim()?.toLowerCase() || \"\")\n );\n }\n return name\n ?.trim()\n ?.toLowerCase()\n ?.includes(searchTerm?.trim()?.toLowerCase() || \"\");\n });\n\n const handleClick = (icon: string, event: React.MouseEvent) => {\n event.stopPropagation();\n if (selectedIcon === icon) {\n onChange?.(null);\n return;\n }\n onChange?.(icon);\n setOpen?.(false);\n };\n\n return (\n <div className=\"flex flex-col gap-3\">\n <InputField\n id={`input-field-icon-picker`}\n placeholder=\"Search icons...\"\n onChange={(value) => setSearchTerm(value || \"\")}\n fieldSuffix={\n <AllIcons.Search\n sx={{\n width: 16,\n height: 16,\n color: \"rgb(152 162 179)\", // neutral-400\n }}\n />\n }\n />\n <Grid\n columnCount={5}\n rowCount={Math.ceil((filteredIcons?.length || 0) / 5)}\n columnWidth={40}\n rowHeight={40}\n width={220}\n height={240}\n >\n {({ columnIndex, rowIndex, style }: GridChildComponentProps) => {\n const itemIndex = rowIndex * 5 + columnIndex;\n const iconName = filteredIcons?.[itemIndex];\n return iconName ? (\n <div style={{ ...style, padding: \"4px\" }}>\n <Tooltip title={formatIconName(iconName)}>\n <IconButton\n className={classNames(\n \"flex items-center justify-center !rounded-md hover:bg-neutral-200 dark:hover:bg-black-700\",\n {\n \"!bg-primary-50 dark:!bg-black-800\":\n selectedIcon === iconName,\n }\n )}\n onClick={(event) => handleClick(iconName, event)}\n >\n <IconRenderer\n iconName={iconName}\n sx={{\n width: 20,\n height: 20,\n }}\n className=\"text-neutral-900 dark:text-white\"\n />\n </IconButton>\n </Tooltip>\n </div>\n ) : null;\n }}\n </Grid>\n </div>\n );\n};\n\ninterface IconRendererProps {\n iconName: string;\n sx?: SvgIconOwnProps['sx'];\n className?: string;\n isHovering?: boolean;\n}\n\nexport const IconRenderer = ({ iconName, sx, className, isHovering }: IconRendererProps) => {\n // Render flag if iconName starts with 'flag-'\n if (iconName?.startsWith?.('flag-')) {\n const code = iconName?.replace('flag-', '');\n return getFlagComponent?.(code || '', isHovering || false) || <div>-</div>;\n }\n const Icon = AllIcons?.[iconName as keyof typeof AllIcons] as React.ComponentType<{\n sx?: SvgIconOwnProps['sx'];\n className?: string;\n isHovering?: boolean;\n }>;\n\n if (!Icon) {\n return <div>-</div>;\n }\n\n return <Icon sx={sx} className={className} isHovering={isHovering} />;\n};\n\nconst IconPickerBase = ({\n selectedIcon,\n onChange,\n label,\n required = false,\n allowClear = true,\n disabled = false,\n errorMessage,\n}: IconPickerContentProps) => {\n const [open, setOpen] = useState(false);\n const handleClearIcon = (e: React.MouseEvent) => {\n e.stopPropagation();\n onChange?.('');\n };\n\n return (\n <Popover\n arrow={false}\n placement='bottom'\n trigger='click'\n getPopupContainer={(triggerNode) => triggerNode?.parentElement || document.body}\n open={open}\n onOpenChange={setOpen}\n content={<IconPickerContent onChange={onChange} selectedIcon={selectedIcon} setOpen={setOpen} />}\n >\n <div className='flex flex-col gap-1'>\n {label ? (\n <Typography size='extra-small' variant='medium' appearance='body'>\n {label}\n {required && <span className='text-red-500'>*</span>}\n </Typography>\n ) : null}\n <button\n id={`btn-icon-picker-icon-${selectedIcon ? 'selected' : 'unselected'}`}\n className={`min-w-[83px] py-1.5 px-3 rounded-md border ${\n disabled ? 'cursor-not-allowed opacity-60 bg-neutral-50 dark:bg-black-800' : 'bg-white dark:bg-black-800'\n } ${errorMessage ? 'border-red-500' : 'focus:border-primary-200 '} flex items-center justify-between gap-2`}\n disabled={disabled}\n onClick={(e) => {\n if (disabled) {\n e.preventDefault();\n e.stopPropagation();\n }\n }}\n >\n {selectedIcon ? (\n <IconRenderer iconName={selectedIcon} sx={{ width: 20, height: 20 }} className='text-neutral-900 dark:text-white' />\n ) : (\n <Typography\n size='small'\n variant='medium'\n appearance='subtitle'\n >\n Select Icon\n </Typography>\n )}\n {selectedIcon && allowClear && !disabled ? (\n <AllIcons.CloseRounded\n sx={{ width: 20, height: 20 }}\n className='hover:bg-neutral-100 dark:hover:bg-black-800 rounded-full transition-colors cursor-pointer text-neutral-400 dark:text-neutral-500'\n onClick={handleClearIcon}\n />\n ) : (\n null\n )}\n </button>\n {errorMessage && (\n <Typography size='extra-small' className='text-red-500 font-medium'>\n {errorMessage}\n </Typography>\n )}\n </div>\n </Popover>\n );\n};\n\nexport const IconPicker = React.lazy(() =>\n Promise.resolve({\n default: (props: IconPickerContentProps) => (\n <Suspense fallback={<div className='min-w-[83px] h-[30px] animate-pulse bg-neutral-100 dark:bg-black-800 rounded-md' />}>\n <IconPickerBase {...props} />\n </Suspense>\n ),\n }),\n);\n\n","import cn from \"classnames\";\nimport { forwardRef } from \"react\";\n\n/**\n * Available status color options for the StatusColorMapping component\n */\nexport type StatusColor =\n | \"blue\"\n | \"green\"\n | \"yellow\"\n | \"orange\"\n | \"red\"\n | \"navy\"\n | \"grey\"\n | \"purple\"\n | \"teal\"\n | \"peach\";\n\n/**\n * Props for the StatusColorMapping component\n */\nexport interface StatusColorMappingProps {\n /** The status color variant to apply */\n status?: StatusColor;\n /** The text content to display */\n children: string;\n /** Additional CSS classes for the wrapper */\n className?: string;\n /** Whether to use small size variant */\n size?: \"small\" | \"medium\" | \"large\";\n /** Custom aria-label for accessibility */\n \"aria-label\"?: string;\n}\n\n/**\n * StatusColorMapping component displays text with status-based color styling\n *\n * @example\n * ```tsx\n * <StatusColorMapping status=\"green\">Active</StatusColorMapping>\n * <StatusColorMapping status=\"red\" size=\"small\">Error</StatusColorMapping>\n * ```\n */\nexport const StatusColorMapping = forwardRef<\n HTMLSpanElement,\n StatusColorMappingProps\n>(\n (\n { status, children, className, size = \"medium\", \"aria-label\": ariaLabel },\n ref\n ) => {\n /**\n * Get size-based styling classes\n */\n const getSizeClasses = (): string => {\n switch (size) {\n case \"small\":\n return \"text-xs px-1.5 py-0.5\";\n case \"large\":\n return \"text-base px-3 py-1.5\";\n default:\n return \"text-md px-1.5 py-1\";\n }\n };\n\n /**\n * Get status-based color styling classes\n */\n const getStatusClasses = (): string => {\n switch (status?.toLowerCase() as StatusColor) {\n case \"purple\":\n return \"bg-purple-50 text-purple-500 border border-purple-100 dark:bg-purple-950 dark:text-purple-400 dark:border-purple-800\";\n\n case \"blue\":\n return \"bg-blue-50 text-blue-500 border border-blue-100 dark:bg-blue-950 dark:text-blue-400 dark:border-blue-800\";\n\n case \"teal\":\n return \"bg-teal-50 text-teal-500 border border-teal-100 dark:bg-teal-950 dark:text-teal-400 dark:border-teal-800\";\n\n case \"green\":\n return \"bg-green-50 text-green-500 border border-green-100 dark:bg-green-950 dark:text-green-400 dark:border-green-800\";\n\n case \"yellow\":\n return \"bg-yellow-50 text-yellow-600 border border-yellow-100 dark:bg-yellow-950 dark:text-yellow-400 dark:border-yellow-800\";\n\n case \"orange\":\n return \"bg-orange-50 text-orange-500 border border-orange-100 dark:bg-orange-950 dark:text-orange-400 dark:border-orange-800\";\n\n case \"peach\":\n return \"bg-orange-50 text-orange-400 border border-orange-100 dark:bg-orange-950 dark:text-orange-300 dark:border-orange-800\";\n\n case \"red\":\n return \"bg-red-50 text-red-500 border border-red-100 dark:bg-red-950 dark:text-red-400 dark:border-red-800\";\n\n case \"navy\":\n return \"bg-slate-50 text-slate-700 border border-slate-100 dark:bg-slate-950 dark:text-slate-400 dark:border-slate-800\";\n\n case \"grey\":\n return \"bg-neutral-50 text-neutral-500 border border-neutral-100 dark:bg-neutral-950 dark:text-neutral-400 dark:border-neutral-800\";\n\n default:\n return \"bg-blue-50 text-blue-600 border border-blue-200 dark:bg-blue-950 dark:text-blue-400 dark:border-blue-800\";\n }\n };\n\n return (\n <span\n ref={ref}\n className={cn(\n // Base styles\n \"inline-flex items-center justify-center font-medium rounded-md transition-colors\",\n\n // Size-based styles\n getSizeClasses(),\n\n // Status-based color styles\n getStatusClasses(),\n\n // Custom classes\n className\n )}\n aria-label={ariaLabel || `Status: ${status || \"default\"}`}\n role=\"status\"\n >\n {children}\n </span>\n );\n }\n);\n\nStatusColorMapping.displayName = \"StatusColorMapping\";\n","import cn from \"classnames\";\nimport { forwardRef } from \"react\";\n\n/**\n * Available badge status options\n */\nexport type BadgeStatus =\n | \"default\"\n | \"primary\"\n | \"warning\"\n | \"error\"\n | \"neutral\"\n | \"success\"\n | \"info\";\n\n/**\n * Badge appearance variants\n */\nexport type BadgeAppearance = \"filled\" | \"outline\";\n\n/**\n * Badge size variants\n */\nexport type BadgeSize = \"sm\" | \"md\" | \"lg\";\n\n/**\n * Props for the Badge component\n */\nexport interface BadgeProps {\n /** The badge status/color variant */\n status?: BadgeStatus;\n /** The text content to display */\n children: string;\n /** Visual appearance style */\n appearance?: BadgeAppearance;\n /** Size variant */\n size?: BadgeSize;\n /** Additional CSS classes for the wrapper */\n className?: string;\n /** Whether to use rounded pill shape */\n isRounded?: boolean;\n /** Whether to capitalize the text */\n capitalize?: boolean;\n /** Custom aria-label for accessibility */\n \"aria-label\"?: string;\n}\n\n/**\n * Badge component displays small status indicators or labels\n *\n * @example\n * ```tsx\n * <Badge status=\"success\">Active</Badge>\n * <Badge status=\"error\" appearance=\"filled\">Error</Badge>\n * <Badge status=\"warning\" size=\"sm\" isRounded>Warning</Badge>\n * ```\n */\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n status = \"default\",\n children,\n appearance = \"outline\",\n size = \"md\",\n className,\n isRounded = false,\n capitalize = true,\n \"aria-label\": ariaLabel,\n },\n ref\n ) => {\n /**\n * Capitalize the first letter of each word\n */\n const formatText = (text: string): string => {\n if (!text || !capitalize) return text;\n return text.replace(\n /\\w\\S*/g,\n (txt) => txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase()\n );\n };\n\n /**\n * Get size-based styling classes\n */\n const getSizeClasses = (): string => {\n switch (size) {\n case \"sm\":\n return \"text-xs px-1.5 py-0.5\";\n case \"lg\":\n return \"text-sm px-3 py-1.5\";\n default: // md\n return \"text-xs px-2 py-1\";\n }\n };\n\n /**\n * Get outline appearance styling classes\n */\n const getOutlineClasses = (): string => {\n switch (status) {\n case \"primary\":\n case \"default\":\n return \"bg-blue-50 dark:bg-blue-950 text-blue-600 dark:text-blue-300 border border-blue-300 dark:border-blue-700\";\n\n case \"warning\":\n return \"bg-yellow-50 dark:bg-yellow-950 text-yellow-600 dark:text-yellow-300 border border-yellow-300 dark:border-yellow-700\";\n\n case \"error\":\n return \"bg-red-50 dark:bg-red-950 text-red-600 dark:text-red-300 border border-red-300 dark:border-red-700\";\n\n case \"neutral\":\n return \"bg-neutral-50 dark:bg-neutral-950 text-neutral-600 dark:text-neutral-300 border border-neutral-300 dark:border-neutral-700\";\n\n case \"success\":\n return \"bg-green-50 dark:bg-green-950 text-green-600 dark:text-green-300 border border-green-300 dark:border-green-700\";\n\n case \"info\":\n return \"bg-blue-50 dark:bg-blue-950 text-blue-600 dark:text-blue-300 border border-blue-300 dark:border-blue-700\";\n\n default:\n return \"bg-blue-50 dark:bg-blue-950 text-blue-600 dark:text-blue-300 border border-blue-300 dark:border-blue-700\";\n }\n };\n\n /**\n * Get filled appearance styling classes\n */\n const getFilledClasses = (): string => {\n switch (status) {\n case \"primary\":\n case \"default\":\n return \"bg-blue-600 dark:bg-blue-700 text-white\";\n\n case \"warning\":\n return \"bg-yellow-600 dark:bg-yellow-700 text-white\";\n\n case \"success\":\n return \"bg-green-600 dark:bg-green-700 text-white\";\n\n case \"error\":\n return \"bg-red-600 dark:bg-red-700 text-white\";\n\n case \"neutral\":\n return \"bg-neutral-600 dark:bg-neutral-700 text-white\";\n\n case \"info\":\n return \"bg-blue-600 dark:bg-blue-700 text-white\";\n\n default:\n return \"bg-blue-600 dark:bg-blue-700 text-white\";\n }\n };\n\n /**\n * Get appearance-based styling classes\n */\n const getAppearanceClasses = (): string => {\n return appearance === \"filled\" ? getFilledClasses() : getOutlineClasses();\n };\n\n return (\n <span\n ref={ref}\n className={cn(\n // Base styles\n \"inline-flex items-center justify-center font-medium transition-colors\",\n\n // Shape styles\n isRounded ? \"rounded-full\" : \"rounded\",\n\n // Size-based styles\n getSizeClasses(),\n\n // Appearance-based styles\n getAppearanceClasses(),\n\n // Custom classes\n className\n )}\n aria-label={ariaLabel || `Badge: ${status}`}\n role=\"status\"\n >\n {formatText(children)}\n </span>\n );\n }\n);\n\nBadge.displayName = \"Badge\";\n","import { FC, ReactNode } from \"react\";\n\n/**\n * Props for the HelmetTitle component\n */\nexport interface HelmetTitleProps {\n /** The title to display (will be used by parent app's Helmet integration) */\n title?: string;\n /** Additional children to render */\n children?: ReactNode;\n}\n\n/**\n * HelmetTitle component for managing document title\n *\n * Note: This is a simple wrapper component. The parent application should\n * integrate this with react-helmet-async or similar library for actual\n * document title management.\n *\n * @example\n * ```tsx\n * <HelmetTitle title=\"Dashboard\" />\n * ```\n */\nexport const HelmetTitle: FC<HelmetTitleProps> = ({ title, children }) => {\n // This component doesn't render anything directly\n // It's meant to be used by parent applications that can integrate\n // with their own Helmet implementation\n if (!title) return null;\n\n return (\n <>\n {children}\n </>\n );\n};\n\nHelmetTitle.displayName = \"HelmetTitle\";\n\n","import { type FC, type CSSProperties, type ReactNode } from \"react\";\nimport { HelmetTitle } from \"../../layout/HelmetTitle\";\n\n/**\n * Props for the Card component\n */\nexport interface CardProps {\n /** Content to render inside the card */\n children: ReactNode;\n /** Additional CSS classes to apply */\n className?: string;\n /** Title to display in document head (via HelmetTitle) */\n title?: string;\n /** Inline styles to apply */\n style?: CSSProperties;\n /** HTML id attribute */\n id?: string;\n}\n\n/**\n * Card component for displaying content in a styled container\n *\n * This component provides a consistent card layout with shadow, rounded corners,\n * and proper dark mode support. It can optionally set the document title using\n * the HelmetTitle component.\n *\n * @example\n * ```tsx\n * <Card title=\"My Card\">\n * <div>Card content</div>\n * </Card>\n * ```\n */\nexport const Card: FC<CardProps> = ({\n children,\n className = \"\",\n title,\n style,\n id,\n}) => {\n return (\n <>\n <HelmetTitle title={title} />\n <div\n className={`bg-white dark:bg-black-800 border border-neutral-200 dark:border-black-600 rounded-lg shadow-100 w-full flex flex-col ${className}`}\n style={style}\n id={id}\n >\n {children}\n </div>\n </>\n );\n};\n\nCard.displayName = \"Card\";\n\n","import { Drawer as AntDrawer } from 'antd';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\n\nexport type DrawerProps = {\n id?: string;\n children: React.ReactNode;\n onClose: () => void;\n open: boolean;\n title: React.ReactNode;\n parentContainer?: string;\n resizable?: boolean;\n width?: number | string;\n placement?: 'left' | 'right' | 'top' | 'bottom';\n closable?: boolean;\n mask?: boolean;\n getContainer?: false | HTMLElement | (() => HTMLElement);\n zIndex?: number;\n footer?: React.ReactNode;\n} & React.ComponentProps<typeof AntDrawer>;\n\n/**\n * Drawer component for sliding panels from screen edges\n *\n * @example\n * ```tsx\n * <Drawer\n * open={isOpen}\n * onClose={() => setIsOpen(false)}\n * title=\"Drawer Title\"\n * width={400}\n * >\n * <div>Drawer content</div>\n * </Drawer>\n * ```\n */\nexport const Drawer: React.FC<DrawerProps> = ({\n id,\n children,\n onClose,\n open,\n title,\n parentContainer = 'full-screen-container',\n resizable,\n width = 400,\n placement = 'right',\n closable = false,\n mask,\n classNames,\n styles,\n getContainer,\n zIndex,\n footer,\n ...props\n}) => {\n const isResizingRef = useRef(false);\n const [drawerWidth, setDrawerWidth] = useState(width);\n\n useEffect(() => {\n setDrawerWidth(width);\n }, [open, width]);\n\n const handleMousemove = useCallback(\n (e: MouseEvent) => {\n if (!isResizingRef.current) return;\n if (placement === 'right') {\n const offsetRight = document.body.offsetWidth - (e.clientX - document.body.offsetLeft);\n const minWidth = 256;\n if (offsetRight > minWidth) {\n setDrawerWidth(offsetRight);\n }\n } else {\n const minWidth = 256;\n if (e.clientX > minWidth) {\n setDrawerWidth(e.clientX);\n }\n }\n },\n [placement, setDrawerWidth],\n );\n\n const onMouseUp = useCallback(() => {\n if (isResizingRef.current) {\n isResizingRef.current = false;\n }\n }, []);\n\n useEffect(() => {\n document.addEventListener('mousemove', handleMousemove);\n document.addEventListener('mouseup', onMouseUp);\n\n return () => {\n document.removeEventListener('mousemove', handleMousemove);\n document.removeEventListener('mouseup', onMouseUp);\n };\n }, [handleMousemove, onMouseUp]);\n\n const containerElement = typeof window !== 'undefined'\n ? (document.getElementById(parentContainer) || document.body)\n : null;\n\n if (!containerElement) {\n return null;\n }\n\n return createPortal(\n <AntDrawer\n id={id || ''}\n closable={closable}\n title={title}\n onClose={onClose}\n open={open}\n width={drawerWidth}\n getContainer={getContainer !== undefined ? getContainer : false}\n placement={placement}\n mask={mask}\n classNames={classNames}\n styles={styles}\n zIndex={zIndex}\n footer={footer}\n {...props}\n >\n {resizable && (\n <div\n className='cursor-ew-resize w-1 pl-[2px] absolute top-0 bottom-0 z-[2100] bg-transparent dark:bg-black-600 hover:bg-neutral-200 dark:hover:bg-black-700'\n onMouseDown={() => {\n isResizingRef.current = true;\n }}\n style={\n placement === 'right'\n ? { left: 0 }\n : {\n right: 0,\n }\n }\n />\n )}\n {children}\n </AntDrawer>,\n containerElement,\n );\n};\n\nDrawer.displayName = 'Drawer';\n\nexport default Drawer;\n\n\n\n","import { Modal } from '../modal/Modal';\nimport { Drawer } from '../../modal/drawer';\n\nexport const FloatingElementWrapper = ({ children, showAsModal, ...props }: any) => {\n if (showAsModal)\n return (\n <Modal onCancel={props.onClose} {...props}>\n {children}\n </Modal>\n );\n else return <Drawer {...props}>{children}</Drawer>;\n};\n","/**\n * Format a boolean value to display text\n */\nexport const formatBooleanValue = (value: any): string => {\n if (\n value === 1 ||\n value === '1' ||\n (typeof value === 'string' && value.toLowerCase() === 'yes') ||\n (typeof value === 'string' && value.toLowerCase() === 'true')\n ) {\n return 'Yes';\n } else if (\n value === 0 ||\n value === '0' ||\n (typeof value === 'string' && value.toLowerCase() === 'no') ||\n (typeof value === 'string' && value.toLowerCase() === 'false')\n ) {\n return 'No';\n }\n return value?.toString() || '-';\n};\n\n/**\n * Format a currency value\n */\nexport const formatCurrency = (value: any, currencyCode: string = 'USD'): string => {\n try {\n if (value === null || value === undefined) return '';\n\n const number = Number(value);\n if (isNaN(number)) return value?.toString() || '';\n\n const formattedNumber = number.toLocaleString('en-US', {\n minimumFractionDigits: 2,\n maximumFractionDigits: 2,\n });\n\n const currencySymbols: Record<string, string> = {\n USD: '$',\n EUR: '€',\n GBP: '£',\n JPY: '¥',\n CAD: 'C$',\n AUD: 'A$',\n CHF: 'CHF',\n CNY: '¥',\n SEK: 'kr',\n NOK: 'kr',\n DKK: 'kr',\n PLN: 'zł',\n CZK: 'Kč',\n HUF: 'Ft',\n RUB: '₽',\n BRL: 'R$',\n INR: '₹',\n KRW: '₩',\n SGD: 'S$',\n HKD: 'HK$',\n NZD: 'NZ$',\n MXN: '$',\n ZAR: 'R',\n TRY: '₺',\n ILS: '₪',\n AED: 'د.إ',\n SAR: '﷼',\n QAR: '﷼',\n KWD: 'د.ك',\n BHD: 'د.ب',\n OMR: '﷼',\n JOD: 'د.ا',\n LBP: 'ل.ل',\n EGP: '£',\n MAD: 'د.م.',\n TND: 'د.ت',\n DZD: 'د.ج',\n LYD: 'ل.د',\n SDG: 'ج.س.',\n ETB: 'Br',\n KES: 'KSh',\n UGX: 'USh',\n TZS: 'TSh',\n ZMW: 'ZK',\n BWP: 'P',\n ZWL: 'Z$',\n AOA: 'Kz',\n MZN: 'MT',\n GHS: '₵',\n NGN: '₦',\n XAF: 'FCFA',\n XOF: 'CFA',\n CDF: 'FC',\n RWF: 'RF',\n BIF: 'FBu',\n KMF: 'CF',\n DJF: 'Fdj',\n SOS: 'S',\n ERN: 'Nfk',\n };\n\n const symbol = currencySymbols[currencyCode] || '$';\n return `${symbol}${formattedNumber}`;\n } catch {\n return '-';\n }\n};\n\n/**\n * Format a date value\n */\nexport const formatDate = (\n date?: string,\n config: {\n format?: string;\n timezone?: string;\n relative?: boolean;\n withTime?: boolean;\n fallback?: string;\n skipTimezone?: boolean;\n onlyTime?: boolean;\n } = {}\n): string => {\n const {\n format: formatString,\n relative = false,\n withTime = true,\n fallback = '-',\n skipTimezone = false,\n onlyTime = false,\n } = config || {};\n\n if (!date) {\n return fallback;\n }\n\n try {\n // Check if the date is valid\n const parsedDate = new Date(date);\n if (isNaN(parsedDate.getTime())) {\n return fallback;\n }\n\n // Handle relative formatting\n if (relative) {\n const now = new Date();\n const diffInSeconds = Math.floor((now.getTime() - parsedDate.getTime()) / 1000);\n\n if (diffInSeconds < 60) return 'just now';\n if (diffInSeconds < 3600) return `${Math.floor(diffInSeconds / 60)} minutes ago`;\n if (diffInSeconds < 86400) return `${Math.floor(diffInSeconds / 3600)} hours ago`;\n if (diffInSeconds < 2592000) return `${Math.floor(diffInSeconds / 86400)} days ago`;\n if (diffInSeconds < 31536000) return `${Math.floor(diffInSeconds / 2592000)} months ago`;\n return `${Math.floor(diffInSeconds / 31536000)} years ago`;\n }\n\n // Determine format to use\n const dateFormat = 'MM/dd/yyyy';\n const timeFormat = 'hh:mm a';\n const shouldIncludeTime = withTime && !onlyTime;\n\n // Format the date\n return parsedDate.toLocaleDateString('en-US', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: withTime ? '2-digit' : undefined,\n minute: withTime ? '2-digit' : undefined,\n hour12: true,\n });\n } catch {\n return fallback;\n }\n};\n\n/**\n * Check if a value is a valid ISO date string\n */\nexport const isISODateString = (value: string): boolean => {\n return typeof value === 'string' && /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/.test(value);\n};","import React, { useState, forwardRef, type ReactNode } from 'react';\nimport cn from 'classnames';\nimport { Tag } from '../tag/Tag';\nimport { HelpIcon } from '../../icons/HelpIcon';\nimport { SearchIcon } from '../../icons/SearchIcon';\nimport { Typography } from '../typography/Typography';\nimport { formatCurrency, formatDate, formatBooleanValue, isISODateString } from '../../../utils/formatters';\nimport { Label } from '../label/Label';\nimport { Tooltip } from 'antd';\nimport { motion } from 'framer-motion';\nimport { ArrowUpwardRounded, ArrowDownwardRounded, BoltOutlined } from '@mui/icons-material';\n\n/**\n * Available label value size options\n */\nexport type LabelValueSize = 'small' | 'medium' | 'large';\n\n/**\n * Available highlight color options\n */\nexport type HighlightColor = 'success' | 'warning' | 'error' | 'info';\n\n/**\n * Theme mode for styling\n */\nexport type ThemeMode = 'light' | 'dark';\n\n/**\n * Upload handler function type\n */\nexport type UploadHandler = (file: File) => void | Promise<void>;\n\n/**\n * Master data item interface\n */\nexport interface MasterDataItem {\n is_master_data?: boolean;\n reference?: string;\n group_technical_name?: string;\n currency_code?: string;\n}\n\n/**\n * Risk details interface\n */\nexport interface RiskDetails {\n color?: string;\n description?: string;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n [key: string]: any;\n}\n\n/**\n * Master data modal component props\n */\nexport interface MasterDataModalProps {\n isVisible: boolean;\n onClose: () => void;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n masterdataInfo: any;\n}\n\n/**\n * Risk details card component props\n * Using generic to allow custom risk detail types from consumers\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport interface RiskDetailsCardProps<TRisk = any> {\n riskDetails: TRisk;\n maxWidth?: string;\n showAllRisksSuggestions?: boolean;\n}\n\n/**\n * Props for the LabelValue component\n */\nexport interface LabelValueProps {\n /** The id of the label value */\n id?: string;\n /** The label text to display */\n label?: string;\n /** The value to display */\n value?: string | number | boolean | ReactNode;\n /** Additional CSS classes */\n className?: string;\n /** Data type for formatting */\n type?: 'string' | 'number' | 'boolean' | 'currency' | 'date' | 'datetime' | 'percentage' | 'url';\n /** Tags to display with the label */\n tags?: Array<{ label: string; color?: string; value?: string }>;\n /** Tooltip text for the help icon */\n tooltip?: string;\n /** Master data item information */\n items?: MasterDataItem;\n /** Whether the value has been modified */\n isModified?: boolean;\n /** Whether the value has been changed */\n isChanged?: boolean;\n /** Size variant */\n size?: LabelValueSize;\n /** Whether the value is highlighted */\n isHighlighted?: boolean;\n /** Deleted value for diff display */\n deletedValue?: string;\n /** Highlight color for changes */\n highlightColor?: HighlightColor;\n /** Whether search is active */\n isSearchActive?: boolean;\n /** Whether to show original boolean value */\n originalValue?: boolean;\n /** Whether to show diff between old and new values */\n showDiff?: boolean;\n /** Whether this is a live field (shows bolt icon) */\n isLiveField?: boolean;\n /** Delta change value for currency fields */\n deltaChange?: number;\n /** Theme mode */\n theme?: ThemeMode;\n /** Upload handler function */\n onUpload?: UploadHandler;\n /** Whether the component accepts file uploads */\n acceptsUpload?: boolean;\n /** Master data modal component */\n MasterDataModal?: React.ComponentType<MasterDataModalProps>;\n /** Risk analysis data - accepts any risk object extending RiskDetails */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n riskDetails?: RiskDetails | any;\n /** Whether risk analysis is open */\n isRiskAnalysisOpen?: boolean;\n /** Custom risk details card component - accepts components with custom risk types */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RiskDetailsCard?: React.ComponentType<RiskDetailsCardProps<any>>;\n /** Custom aria-label for accessibility */\n 'aria-label'?: string;\n}\n\n/**\n * LabelValue component displays a label-value pair with various formatting options\n *\n * @example\n * ```tsx\n * <LabelValue \n * label=\"Status\" \n * value=\"Active\" \n * type=\"string\" \n * size=\"medium\" \n * />\n * <LabelValue \n * label=\"Price\" \n * value={99.99} \n * type=\"currency\" \n * items={{ currency_code: 'USD' }}\n * />\n * <LabelValue \n * label=\"Upload File\" \n * acceptsUpload \n * onUpload={handleUpload}\n * />\n * ```\n */\nexport const LabelValue = forwardRef<HTMLDivElement, LabelValueProps>(\n (\n {\n id,\n label,\n value,\n className,\n type = 'string',\n tags,\n tooltip,\n items,\n isModified = false,\n isChanged = false,\n size = 'medium',\n isHighlighted = false,\n deletedValue,\n highlightColor = 'warning',\n isSearchActive = false,\n originalValue = false,\n showDiff = false,\n isLiveField = false,\n deltaChange,\n theme = 'light',\n onUpload,\n acceptsUpload = false,\n MasterDataModal,\n riskDetails,\n isRiskAnalysisOpen = false,\n RiskDetailsCard,\n 'aria-label': ariaLabel,\n },\n ref\n ) => {\n const [collapseValue, setCollapseValue] = useState(true);\n const [isOpenMasterDataModal, setIsOpenMasterDataModal] = useState(false);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const [masterdataModalInfo, setMasterdataModalInfo] = useState<any>(null);\n const [isHovered, setIsHovered] = useState(false);\n\n // Theme is passed as prop but not used in current implementation\n\n /**\n * Handle collapse toggle for long text\n */\n const handleCollapse = () => {\n setCollapseValue(!collapseValue);\n };\n\n /**\n * Handle master data click\n */\n const handleMasterDataClick = (item: MasterDataItem) => {\n setIsOpenMasterDataModal(true);\n setMasterdataModalInfo({ ...item, value });\n };\n\n /**\n * Handle master data modal close\n */\n const handleMasterDataClose = () => {\n setIsOpenMasterDataModal(false);\n setMasterdataModalInfo(null);\n };\n\n /**\n * Handle file upload\n */\n const handleFileUpload = (event: React.ChangeEvent<HTMLInputElement>) => {\n const file = event.target.files?.[0];\n if (file && onUpload) {\n onUpload(file);\n }\n // Reset input value to allow same file selection\n event.target.value = '';\n };\n\n /**\n * Format and display the value based on type\n */\n const displayValue = () => {\n const isISODate = typeof value === 'string' && isISODateString(value);\n\n if (isSearchActive && typeof value === 'object') {\n return value;\n }\n\n if (value || (type === 'boolean' && value === 0) || (type === 'currency' && Number(value) >= 0)) {\n if ((value === true || value === 'True') && !originalValue) {\n return 'Yes';\n } else if ((value === false || value === 'False') && !originalValue) {\n return 'No';\n } else if (type === 'url') {\n return (\n <a href={value as string} className=\"text-primary-600 truncate\">\n {value}\n </a>\n );\n } else if (type === 'boolean') {\n return formatBooleanValue(value);\n } else if (type === 'currency') {\n return formatCurrency(value, items?.currency_code) || '-';\n } else if (type === 'datetime') {\n const dateValue = typeof value === 'string' && value.includes('Z') ? value.replace(/\\.000Z$/, 'Z') : value;\n return formatDate(dateValue as string, {\n skipTimezone: false,\n withTime: true,\n });\n } else if (type === 'date' || isISODate) {\n const dateValue = typeof value === 'string' && value.includes('Z') ? value.replace(/\\.000Z$/, 'Z') : value;\n return formatDate(dateValue as string, {\n skipTimezone: true,\n withTime: false,\n });\n } else if (type === 'percentage') {\n return `${value}%`;\n } else if (typeof value === 'string' && value.length > 100) {\n return (\n <p>\n {value.slice(0, collapseValue ? 100 : value.length)}\n {collapseValue ? '... ' : ' '}\n <button\n id={`btn-label-value-${collapseValue ? 'Show more' : 'Show less'}`}\n className=\"text-primary-400 text-sm hover:text-primary-500 cursor-pointer whitespace-nowrap\"\n onClick={handleCollapse}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleCollapse();\n }\n }}\n aria-label={collapseValue ? 'Show more content' : 'Show less content'}\n type=\"button\"\n >\n {collapseValue ? 'Show more' : 'Show less'}\n </button>\n </p>\n );\n } else {\n return value;\n }\n }\n return '-';\n };\n\n /**\n * Get Typography size based on LabelValue size\n */\n const getTypographySize = () => {\n switch (size) {\n case 'small':\n return 'extra-small' as const;\n case 'large':\n return 'large' as const;\n default: // medium\n return 'small' as const;\n }\n };\n\n /**\n * Get highlight color classes\n */\n const getHighlightClasses = (): string => {\n switch (highlightColor) {\n case 'success':\n return 'bg-success-100';\n case 'warning':\n return 'bg-warning-100';\n case 'error':\n return 'bg-error-100';\n case 'info':\n return 'bg-info-100';\n default:\n return 'bg-warning-100';\n }\n };\n\n return (\n <div\n id={id || ''}\n ref={ref}\n className={cn(\n 'font-medium relative',\n className\n )}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n aria-label={ariaLabel || `Label: ${label}, Value: ${value}`}\n >\n {/* Label section */}\n <Typography \n variant=\"medium\" \n size={getTypographySize()} \n className=\"flex gap-1 flex-wrap\" \n appearance=\"subtitle\"\n >\n {label} {<Label labels={tags?.map(tag => ({ ...tag, color: tag.color || 'primary' }))} />}\n \n {/* Live field indicator */}\n {isLiveField && <BoltOutlined sx={{ fontSize: 16, color: 'var(--color-primary-600)', rotate: '15deg' }} />}\n \n {/* Tags */}\n {tags && tags.length > 0 && (\n <>\n {tags.map((tag) => (\n <Tag\n key={`${tag.label}-${tag.value || tag.color}`}\n label={tag.label}\n color={tag.color}\n size=\"xs\"\n />\n ))}\n </>\n )}\n \n {/* Tooltip */}\n {tooltip && (\n <Tooltip placement=\"top\" title={tooltip}>\n <div \n className=\"cursor-pointer\"\n role=\"button\"\n tabIndex={0}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n // Tooltip will show on focus\n }\n }}\n >\n <HelpIcon size={14} />\n </div>\n </Tooltip>\n )}\n </Typography>\n\n {/* Value section */}\n <Typography\n variant=\"medium\"\n size={getTypographySize()}\n className={cn(\n 'text-- whitespace-normal break-all flex gap-1 pt-0.5',\n isModified && 'bg-neutral-50 dark:bg-black-700 p-1 rounded',\n isRiskAnalysisOpen && riskDetails?.color && \n `bg-${riskDetails.color}-50 border-${riskDetails.color}-300 px-0.5 rounded-lg`\n )}\n appearance=\"body\"\n >\n {/* Value display */}\n {showDiff && deletedValue && value ? (\n <div className=\"flex gap-2\">\n <span className=\"line-through\">{deletedValue}</span>\n <span>{displayValue()}</span>\n </div>\n ) : isChanged || isHighlighted ? (\n <mark className={cn('rounded-md py-0.5 px-1', getHighlightClasses())}>\n {displayValue()}\n </mark>\n ) : (\n displayValue()\n )}\n \n {/* Delta change indicator for currency fields */}\n {type === 'currency' && deltaChange !== 0 && deltaChange !== undefined && deltaChange !== null && (\n <motion.span\n initial={{ opacity: 0, y: 2 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.25 }}\n className={cn(\n 'inline-flex items-center gap-1 ml-1.5 text-xs font-medium',\n deltaChange > 0 ? 'text-emerald-600 dark:text-emerald-400' : 'text-red-600 dark:text-red-400'\n )}\n >\n <span className=\"flex items-center justify-center w-4 h-4\">\n {deltaChange > 0 ? (\n <ArrowUpwardRounded sx={{ fontSize: 16 }} className=\"text-emerald-600 dark:text-emerald-400\" />\n ) : (\n <ArrowDownwardRounded sx={{ fontSize: 16 }} className=\"text-red-600 dark:text-red-400\" />\n )}\n </span>\n <span>{formatCurrency(Math.abs(deltaChange), items?.currency_code || 'USD')}</span>\n </motion.span>\n )}\n\n {/* Master data search icon */}\n {items?.is_master_data && items?.reference && value && (\n <button\n onClick={() => handleMasterDataClick(items)}\n onKeyDown={(e) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n handleMasterDataClick(items);\n }\n }}\n aria-label={`Search master data for ${label}`}\n type=\"button\"\n className=\"cursor-pointer\"\n >\n <SearchIcon width={20} height={20} />\n </button>\n )}\n\n {/* File upload input */}\n {acceptsUpload && (\n <input\n type=\"file\"\n onChange={handleFileUpload}\n className=\"absolute inset-0 w-full h-full opacity-0 cursor-pointer\"\n aria-label={`Upload file for ${label}`}\n />\n )}\n </Typography>\n\n {/* Deleted value display */}\n {deletedValue && !showDiff && (\n <Typography \n variant=\"medium\" \n size=\"extra-small\" \n className=\"pt-0.5\" \n appearance=\"body\"\n >\n <mark className=\"rounded-md py-0.5 px-1 bg-error-100\">\n <del>\n {deletedValue || (type === 'boolean' && deletedValue === '0') ? (\n deletedValue === 'True' ? (\n 'Yes'\n ) : deletedValue === 'False' ? (\n 'No'\n ) : type === 'boolean' ? (\n formatBooleanValue(deletedValue)\n ) : type === 'currency' ? (\n formatCurrency(deletedValue, items?.currency_code)\n ) : type === 'date' ? (\n formatDate(deletedValue, {\n skipTimezone: true,\n withTime: false,\n })\n ) : type === 'datetime' ? (\n formatDate(deletedValue, {\n skipTimezone: true,\n withTime: true,\n })\n ) : type === 'percentage' ? (\n `${deletedValue}%`\n ) : deletedValue.length > 100 ? (\n <p>\n {deletedValue.slice(0, collapseValue ? 100 : deletedValue.length)}\n {collapseValue ? '... ' : ' '}\n <button\n id={`btn-label-value-${collapseValue ? 'Show more' : 'Show less'}`}\n className=\"text-primary-400 text-sm hover:text-primary-500 cursor-pointer whitespace-nowrap\"\n onClick={handleCollapse}\n >\n {collapseValue ? 'Show more' : 'Show less'}\n </button>\n </p>\n ) : (\n deletedValue\n )\n ) : (\n '-'\n )}\n </del>\n </mark>\n </Typography>\n )}\n\n {/* Master data modal */}\n {MasterDataModal && (\n <MasterDataModal\n isVisible={isOpenMasterDataModal}\n onClose={handleMasterDataClose}\n masterdataInfo={masterdataModalInfo}\n />\n )}\n\n {/* Risk details tooltip */}\n {isHovered && riskDetails && isRiskAnalysisOpen && (\n <div\n className=\"absolute left-0 right-0 top-[95%] mt-1 z-50 bg-white dark:bg-black-600 rounded-xl\"\n onClick={(e) => e.stopPropagation()}\n onMouseDown={(e) => e.preventDefault()}\n onKeyDown={(e) => {\n if (e.key === 'Escape') {\n setIsHovered(false);\n }\n }}\n role=\"tooltip\"\n aria-label=\"Risk analysis details\"\n tabIndex={0}\n >\n {RiskDetailsCard ? (\n <RiskDetailsCard riskDetails={riskDetails} />\n ) : (\n <div className=\"shadow-lg p-4\">\n <div className=\"text-sm\">\n <h4 className=\"font-semibold mb-2\">Risk Details</h4>\n <p className=\"text-neutral-600 dark:text-neutral-300\">\n {riskDetails.description || 'Risk analysis information'}\n </p>\n </div>\n </div>\n )}\n </div>\n )}\n </div>\n );\n }\n);\n\nLabelValue.displayName = 'LabelValue';\n","import React, { FC } from 'react';\n\nexport interface CheckCircleProps {\n fill?: string;\n size?: number;\n className?: string;\n}\n\nexport const CheckCircle: FC<CheckCircleProps> = ({ fill = 'currentColor', size = 20, className }) => (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width={size}\n height={size}\n viewBox='0 0 20 20'\n fill='none'\n className={className}\n >\n <mask id='mask0_540_1032' maskUnits='userSpaceOnUse' x='0' y='0' width='20' height='20'>\n <rect width='20' height='20' fill='#D9D9D9' />\n </mask>\n <g mask='url(#mask0_540_1032)'>\n <path\n d='M8.83329 11.5L7.02079 9.68749C6.86802 9.53471 6.67718 9.46193 6.44829 9.46916C6.21885 9.47582 6.02774 9.55555 5.87496 9.70832C5.72218 9.8611 5.64579 10.0555 5.64579 10.2917C5.64579 10.5278 5.72218 10.7222 5.87496 10.875L8.24996 13.25C8.40274 13.4028 8.59718 13.4792 8.83329 13.4792C9.0694 13.4792 9.26385 13.4028 9.41663 13.25L14.1458 8.52082C14.2986 8.36805 14.3716 8.17693 14.365 7.94749C14.3577 7.7186 14.2777 7.52777 14.125 7.37499C13.9722 7.22221 13.7777 7.14582 13.5416 7.14582C13.3055 7.14582 13.1111 7.22221 12.9583 7.37499L8.83329 11.5ZM9.99996 18.3333C8.84718 18.3333 7.76385 18.1144 6.74996 17.6767C5.73607 17.2394 4.85413 16.6458 4.10413 15.8958C3.35413 15.1458 2.76051 14.2639 2.32329 13.25C1.88551 12.2361 1.66663 11.1528 1.66663 9.99999C1.66663 8.84721 1.88551 7.76388 2.32329 6.74999C2.76051 5.7361 3.35413 4.85416 4.10413 4.10416C4.85413 3.35416 5.73607 2.76027 6.74996 2.32249C7.76385 1.88527 8.84718 1.66666 9.99996 1.66666C11.1527 1.66666 12.2361 1.88527 13.25 2.32249C14.2638 2.76027 15.1458 3.35416 15.8958 4.10416C16.6458 4.85416 17.2394 5.7361 17.6766 6.74999C18.1144 7.76388 18.3333 8.84721 18.3333 9.99999C18.3333 11.1528 18.1144 12.2361 17.6766 13.25C17.2394 14.2639 16.6458 15.1458 15.8958 15.8958C15.1458 16.6458 14.2638 17.2394 13.25 17.6767C12.2361 18.1144 11.1527 18.3333 9.99996 18.3333ZM9.99996 16.6667C11.8472 16.6667 13.4202 16.0175 14.7191 14.7192C16.0175 13.4203 16.6666 11.8472 16.6666 9.99999C16.6666 8.15277 16.0175 6.57971 14.7191 5.28082C13.4202 3.98249 11.8472 3.33332 9.99996 3.33332C8.15274 3.33332 6.57996 3.98249 5.28163 5.28082C3.98274 6.57971 3.33329 8.15277 3.33329 9.99999C3.33329 11.8472 3.98274 13.4203 5.28163 14.7192C6.57996 16.0175 8.15274 16.6667 9.99996 16.6667Z'\n fill={fill}\n />\n </g>\n </svg>\n);\n\n","import React, { FC } from 'react';\n\nexport interface InfoAlertProps {\n fill?: string;\n size?: number;\n className?: string;\n}\n\nexport const InfoAlert: FC<InfoAlertProps> = ({ fill = 'currentColor', size = 24, className }) => (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width={size}\n height={size}\n viewBox='0 0 24 24'\n fill='none'\n className={className}\n >\n <path\n d='M12 5.99L19.53 19H4.47L12 5.99ZM2.74 18C1.97 19.33 2.93 21 4.47 21H19.53C21.07 21 22.03 19.33 21.26 18L13.73 4.99C12.96 3.66 11.04 3.66 10.27 4.99L2.74 18ZM11 11V13C11 13.55 11.45 14 12 14C12.55 14 13 13.55 13 13V11C13 10.45 12.55 10 12 10C11.45 10 11 10.45 11 11ZM11 16H13V18H11V16Z'\n fill={fill}\n />\n </svg>\n);\n\n","import React, { FC } from 'react';\n\nexport interface ArchivedIconProps {\n className?: string;\n size?: string;\n fill?: string;\n}\n\nexport const ArchivedIcon: FC<ArchivedIconProps> = ({ className, size = '20', fill = '#475467' }) => {\n return (\n <svg xmlns='http://www.w3.org/2000/svg' width={size} height={size} viewBox='0 0 20 20' fill='none' className={className}>\n <mask id='mask0_3351_252036' maskUnits='userSpaceOnUse' x='0' y='0' width='20' height='20'>\n <rect width='20' height='20' fill='#D9D9D9' />\n </mask>\n <g mask='url(#mask0_3351_252036)'>\n <path\n d='M16.5 2.5C16.9125 2.5 17.2658 2.64668 17.5596 2.94043C17.8533 3.23418 18 3.5875 18 4V6.25C18 6.5375 17.9314 6.79102 17.7939 7.00977C17.6565 7.22843 17.4749 7.40649 17.25 7.54395V10.3174C16.7935 10.0396 16.2878 9.83528 15.75 9.7168V7.75H5.25V16H9.94727C10.1143 16.546 10.3723 17.0523 10.7051 17.5H5.25C4.8375 17.5 4.48418 17.3533 4.19043 17.0596C3.89668 16.7658 3.75 16.4125 3.75 16V7.54395C3.52506 7.40649 3.34354 7.22843 3.20605 7.00977C3.06855 6.79102 3 6.5375 3 6.25V4C3 3.5875 3.14668 3.23418 3.44043 2.94043C3.73418 2.64668 4.0875 2.5 4.5 2.5H16.5ZM12 10C12.1681 10 12.3134 10.0468 12.4385 10.1367C11.7915 10.466 11.2273 10.9334 10.7832 11.5H9C8.7875 11.5 8.60957 11.4279 8.46582 11.2842C8.32207 11.1404 8.25 10.9625 8.25 10.75C8.25 10.5375 8.32207 10.3596 8.46582 10.2158C8.60957 10.0721 8.7875 10 9 10H12ZM4.5 6.25H16.5V4H4.5V6.25Z'\n fill={fill}\n />\n <path\n d='M16.5 2.5C16.9125 2.5 17.2658 2.64668 17.5596 2.94043C17.8533 3.23418 18 3.5875 18 4V6.25C18 6.5375 17.9314 6.79102 17.7939 7.00977C17.6565 7.22843 17.4749 7.40649 17.25 7.54395V16C17.25 16.4125 17.1033 16.7658 16.8096 17.0596C16.5158 17.3533 16.1625 17.5 15.75 17.5H5.25C4.8375 17.5 4.48418 17.3533 4.19043 17.0596C3.89668 16.7658 3.75 16.4125 3.75 16V7.54395C3.52506 7.40649 3.34354 7.22843 3.20605 7.00977C3.06855 6.79102 3 6.5375 3 6.25V4C3 3.5875 3.14668 3.23418 3.44043 2.94043C3.73418 2.64668 4.0875 2.5 4.5 2.5H16.5ZM5.25 16H15.75V7.75H5.25V16ZM12 10C12.2125 10 12.3904 10.0721 12.5342 10.2158C12.6779 10.3596 12.75 10.5375 12.75 10.75C12.75 10.9625 12.6779 11.1404 12.5342 11.2842C12.3904 11.4279 12.2125 11.5 12 11.5H9C8.7875 11.5 8.60957 11.4279 8.46582 11.2842C8.32207 11.1404 8.25 10.9625 8.25 10.75C8.25 10.5375 8.32207 10.3596 8.46582 10.2158C8.60957 10.0721 8.7875 10 9 10H12ZM4.5 6.25H16.5V4H4.5V6.25Z'\n fill={fill}\n />\n </g>\n </svg>\n );\n};\n\n","import React, { FC } from 'react';\n\nexport interface InfoCircleIconProps {\n fill?: string;\n size?: number;\n className?: string;\n}\n\nexport const InfoCircleIcon: FC<InfoCircleIconProps> = ({ fill = 'currentColor', size = 24, className }) => (\n <svg\n width={size}\n height={size}\n viewBox='0 0 24 24'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n className={className}\n >\n <g mask='url(#mask0_1871_44063)'>\n <path\n d='M12 17C12.2833 17 12.5208 16.9042 12.7125 16.7125C12.9042 16.5208 13 16.2833 13 16V12C13 11.7167 12.9042 11.4792 12.7125 11.2875C12.5208 11.0958 12.2833 11 12 11C11.7167 11 11.4792 11.0958 11.2875 11.2875C11.0958 11.4792 11 11.7167 11 12V16C11 16.2833 11.0958 16.5208 11.2875 16.7125C11.4792 16.9042 11.7167 17 12 17ZM12 9C12.2833 9 12.5208 8.90417 12.7125 8.7125C12.9042 8.52083 13 8.28333 13 8C13 7.71667 12.9042 7.47917 12.7125 7.2875C12.5208 7.09583 12.2833 7 12 7C11.7167 7 11.4792 7.09583 11.2875 7.2875C11.0958 7.47917 11 7.71667 11 8C11 8.28333 11.0958 8.52083 11.2875 8.7125C11.4792 8.90417 11.7167 9 12 9ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22ZM12 20C14.2333 20 16.125 19.225 17.675 17.675C19.225 16.125 20 14.2333 20 12C20 9.76667 19.225 7.875 17.675 6.325C16.125 4.775 14.2333 4 12 4C9.76667 4 7.875 4.775 6.325 6.325C4.775 7.875 4 9.76667 4 12C4 14.2333 4.775 16.125 6.325 17.675C7.875 19.225 9.76667 20 12 20Z'\n fill={fill}\n />\n </g>\n </svg>\n);\n\n","import cn from \"classnames\";\nimport React, { forwardRef, useState } from \"react\";\nimport {\n DoDisturbRounded,\n Pending,\n PlayArrowRounded,\n RemoveCircleOutline,\n Timer,\n} from \"@mui/icons-material\";\nimport DoDisturbAltRoundedIcon from \"@mui/icons-material/DoDisturbAltRounded\";\nimport { MdKeyboardArrowDown, MdKeyboardArrowUp, MdOutlinePending } from \"react-icons/md\";\nimport { CheckCircle } from \"../../icons/CheckCircle\";\nimport { InfoAlert } from \"../../icons/InfoAlert\";\nimport { ArchivedIcon } from \"../../icons/ArchivedIcon\";\nimport { InfoCircleIcon } from \"../../icons/InfoCircleIcon\";\n\n/**\n * Available banner status options\n */\nexport type BannerStatus =\n | \"success\"\n | \"error\"\n | \"warning\"\n | \"info\"\n | \"infoGrey\"\n | \"archived\"\n | \"canceled\"\n | \"queued\"\n | \"paused\"\n | \"awaiting_action\"\n | \"skipped\"\n | \"pending\";\n\n/**\n * Props for the Banner component\n */\nexport interface BannerProps {\n /** The main content to display */\n children: React.ReactNode;\n /** The banner status/color variant */\n status: BannerStatus;\n /** Additional content to display on the right side */\n additionalChildren?: React.ReactNode;\n /** Component to render when expanded (for error status). Receives executionId as prop. */\n ExpandedComponent?: React.ComponentType<{ executionId?: string; children?: React.ReactNode }>;\n /** Execution ID to pass to the ExpandedComponent */\n executionId?: string;\n /** Additional CSS classes for the wrapper */\n className?: string;\n}\n\nconst statusColors: Record<BannerStatus, string> = {\n success: \"bg-success-100 dark:bg-success-950 text-success-500 dark:text-success-300 border border-b-success-200 dark:border-none\",\n error: \"bg-red-100 dark:bg-red-950 text-red-600 dark:text-red-300 border border-b-red-200 dark:border-none\",\n warning: \"bg-amber-100 dark:bg-amber-950 text-amber-600 dark:text-amber-300 border border-b-amber-200 dark:border-none\",\n info: \"bg-blue-100 dark:bg-blue-950 text-blue-600 dark:text-blue-300 border border-b-blue-200 dark:border-none\",\n infoGrey: \"bg-neutral-200 dark:bg-neutral-950 text-neutral-600 dark:text-neutral-300 border border-b-neutral-300 dark:border-none\",\n archived: \"bg-neutral-200 dark:bg-neutral-950 text-neutral-600 dark:text-neutral-300 border border-b-neutral-300 dark:border-none\",\n canceled: \"bg-gray-100 dark:bg-gray-950 text-gray-600 dark:text-gray-300\",\n queued: \"bg-blue-50 dark:bg-blue-950 text-blue-700 dark:text-blue-300 border border-b-blue-200 dark:border-none\",\n paused: \"bg-blue-100 dark:bg-blue-950 text-blue-600 dark:text-blue-300 border border-b-amber-200 dark:border-none\",\n awaiting_action: \"bg-orange-50 dark:bg-orange-950 text-orange-500 dark:text-orange-300 border border-b-amber-200 dark:border-none\",\n skipped: \"bg-gray-100 dark:bg-gray-950 text-gray-600 dark:text-gray-300 border border-b-gray-200 dark:border-none\",\n pending: \"bg-pink-100 dark:bg-pink-950 text-pink-500 dark:text-pink-300 border border-b-pink-200 dark:border-none\",\n};\n\nconst statusIcons: Record<BannerStatus, React.ReactNode> = {\n success: <CheckCircle size={20} className=\"text-green-600 dark:text-green-300\" />,\n error: <RemoveCircleOutline sx={{ height: 18, width: 18 }} className=\"text-red-600 dark:text-red-300\" />,\n warning: <InfoAlert size={20} className=\"text-amber-600 dark:text-amber-300\" />,\n paused: <PlayArrowRounded sx={{ height: 20, width: 20 }} className=\"text-blue-600 dark:text-blue-300\" />,\n info: <InfoAlert size={20} className=\"text-blue-600 dark:text-blue-300\" />,\n infoGrey: <InfoCircleIcon size={20} className=\"text-gray-600 dark:text-gray-300\" />,\n archived: <ArchivedIcon fill=\"currentColor\" size=\"20\" className=\"text-gray-500 dark:text-gray-300\" />,\n queued: <MdOutlinePending size={20} className=\"text-blue-700 dark:text-blue-300\" />,\n canceled: <DoDisturbAltRoundedIcon sx={{ height: 20, width: 20 }} className=\"text-gray-500 dark:text-gray-300\" />,\n awaiting_action: <Pending sx={{ height: 18, width: 18 }} className=\"text-orange-500 dark:text-orange-300\" />,\n skipped: <DoDisturbRounded sx={{ fontSize: \"18px\" }} className=\"text-gray-600 dark:text-gray-300\" />,\n pending: <Timer sx={{ height: 18, width: 18 }} className=\"text-pink-500 dark:text-pink-300\" />,\n};\n\n/**\n * Banner component displays important information with status-based styling\n *\n * @example\n * ```tsx\n * <Banner status=\"success\">Operation completed successfully</Banner>\n * <Banner status=\"error\" ExpandedComponent={FlowErrorBanner} executionId=\"123\">\n * Error occurred\n * </Banner>\n * ```\n */\nexport const Banner = forwardRef<HTMLDivElement, BannerProps>(\n (\n {\n children,\n status,\n additionalChildren,\n ExpandedComponent,\n executionId,\n className,\n },\n ref\n ) => {\n const [isExpanded, setIsExpanded] = useState(false);\n\n const isExpandable = status === \"error\" && ExpandedComponent;\n\n return (\n <div ref={ref} className={cn(\"w-full\", className)}>\n <div\n className={cn(\n statusColors[status],\n \"gap-2 font-semibold text-sm p-2 rounded-tl-xl w-full flex justify-between items-center\",\n isExpandable && \"cursor-pointer select-none\"\n )}\n onClick={() => isExpandable && setIsExpanded(!isExpanded)}\n >\n <div className=\"flex items-center gap-2 mx-auto\">\n {statusIcons[status]}\n <span>{children}</span>\n </div>\n {isExpandable && (\n <span className=\"ml-2\">\n {isExpanded ? <MdKeyboardArrowUp size={20} /> : <MdKeyboardArrowDown size={20} />}\n </span>\n )}\n {additionalChildren ? <span>{additionalChildren}</span> : null}\n </div>\n {isExpandable && isExpanded && (\n <ExpandedComponent executionId={executionId}>{children}</ExpandedComponent>\n )}\n </div>\n );\n }\n);\n\nBanner.displayName = \"Banner\";\n","import cn from \"classnames\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { forwardRef, useEffect, useRef, useState } from \"react\";\nimport ReactDOM from \"react-dom\";\nimport { Resizable } from \"re-resizable\";\n\n/**\n * Sidebar placement options\n */\nexport type ResizableSidebarPlacement = \"left\" | \"right\";\n\n/**\n * Props for the ResizableSidebar component\n */\nexport interface ResizableSidebarProps {\n /** Whether the sidebar is open */\n isOpen: boolean;\n /** Content to display in the sidebar */\n children: React.ReactNode;\n /** Whether to display in full screen mode */\n fullScreen?: boolean;\n /** Callback when drag/resize ends */\n onDragEnd?: (() => void) | null;\n /** Callback when resize occurs */\n onResize?: (width: number) => void;\n /** Additional CSS classes for the wrapper */\n className?: string;\n /** Default size of the sidebar */\n defaultSize?: string;\n /** Minimum width of the sidebar */\n minWidth?: number;\n /** Placement of the sidebar */\n placement?: ResizableSidebarPlacement;\n /** Parent container ID for portal rendering */\n parentContainer?: string;\n /** Header content */\n header?: React.ReactNode;\n /** Unique ID for the sidebar */\n id?: string;\n /** Additional CSS classes for the container */\n containerClassName?: string;\n /** Whether to ignore parent container height */\n ignoreParentContainerHeight?: boolean;\n /** Custom height */\n height?: string;\n /** Whether the main sidebar is expanded (affects max width calculation) */\n isMainSidebarExpanded?: boolean;\n /** Width of the main sidebar when expanded */\n mainSidebarExpandedWidth?: number;\n /** Width of the main sidebar when collapsed */\n mainSidebarCollapsedWidth?: number;\n /** Height offset for navbar */\n navbarHeight?: number;\n}\n\n/**\n * Drag handle component for the resizable sidebar\n */\nconst DragHandle = () => {\n return (\n <div className=\"cursor-ew-resize flex items-center justify-center rounded-full bg-[#1018288F] bg-opacity-55 w-8 h-8 shadow-200 border-[1.5px] border-[#FFFFFF3D]\">\n <svg\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <mask id=\"mask0_36675_12\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"20\" height=\"20\">\n <rect y=\"20\" width=\"20\" height=\"20\" transform=\"rotate(-90 0 20)\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask0_36675_12)\">\n <path\n d=\"M15.9583 10L12.7292 6.77084C12.5625 6.60418 12.4792 6.40973 12.4792 6.18751C12.4792 5.96529 12.5625 5.77084 12.7292 5.60418C12.8958 5.43751 13.0938 5.35418 13.3229 5.35418C13.5521 5.35418 13.75 5.43751 13.9167 5.60418L17.1458 8.81251C17.4653 9.13195 17.625 9.52779 17.625 10C17.625 10.4722 17.4653 10.8681 17.1458 11.1875L13.9167 14.4167C13.75 14.5833 13.5521 14.6632 13.3229 14.6563C13.0938 14.6493 12.8958 14.5625 12.7292 14.3958C12.5625 14.2292 12.4792 14.0313 12.4792 13.8021C12.4792 13.5729 12.5625 13.375 12.7292 13.2083L15.9583 10ZM4.04167 10L7.25 13.2083C7.41667 13.375 7.49653 13.5695 7.48958 13.7917C7.48264 14.0139 7.40278 14.2083 7.25 14.375C7.08333 14.5417 6.88542 14.6285 6.65625 14.6354C6.42708 14.6424 6.22917 14.5625 6.0625 14.3958L2.85417 11.1875C2.53472 10.8681 2.375 10.4722 2.375 10C2.375 9.52779 2.53472 9.13195 2.85417 8.81251L6.0625 5.60418C6.22917 5.43751 6.42708 5.35765 6.65625 5.36459C6.88542 5.37154 7.08333 5.45834 7.25 5.62501C7.40278 5.79168 7.48264 5.98612 7.48958 6.20834C7.49653 6.43057 7.41667 6.62501 7.25 6.79168L4.04167 10Z\"\n fill=\"white\"\n />\n </g>\n </svg>\n </div>\n );\n};\n\n/**\n * ResizableSidebar component displays a resizable sidebar panel\n *\n * @example\n * ```tsx\n * <ResizableSidebar\n * isOpen={isOpen}\n * onClose={() => setIsOpen(false)}\n * placement=\"right\"\n * minWidth={300}\n * >\n * <div>Sidebar content</div>\n * </ResizableSidebar>\n * ```\n */\n// Helper functions to reduce cognitive complexity\nconst findParentContainer = (parentContainer: string, setPortalTarget: (target: HTMLElement | null) => void) => {\n const el = document.getElementById(parentContainer);\n if (el) {\n setPortalTarget(el);\n } else {\n requestAnimationFrame(() => {\n const retryEl = document.getElementById(parentContainer);\n if (retryEl) setPortalTarget(retryEl);\n });\n }\n};\n\nconst handleFullScreenToggle = (resizableRef: React.RefObject<React.ElementRef<typeof Resizable>>, fullScreen: boolean) => {\n if (!resizableRef.current) return;\n\n if (fullScreen) {\n localStorage.setItem(\"resizable-sidebar-width-before-fullscreen\", String(resizableRef.current.size?.width));\n } else {\n const width = localStorage.getItem(\"resizable-sidebar-width-before-fullscreen\");\n if (width) {\n resizableRef.current.updateSize({ width: width, height: \"100%\" });\n return;\n }\n }\n resizableRef.current.updateSize({\n width: fullScreen ? \"100vw\" : \"\",\n height: \"100%\",\n });\n};\n\nconst useSidebarEffects = (\n parentContainer: string | undefined,\n isOpen: boolean,\n fullScreen: boolean,\n onResize: ((width: number) => void) | undefined,\n resizableRef: React.RefObject<React.ElementRef<typeof Resizable>>,\n minWidth: number\n) => {\n const [shouldRenderSidebar, setShouldRenderSidebar] = useState(false);\n const [portalTarget, setPortalTarget] = useState<HTMLElement | null>(null);\n\n useEffect(() => {\n if (!parentContainer || typeof window === \"undefined\") {\n setPortalTarget(null);\n return;\n }\n findParentContainer(parentContainer, setPortalTarget);\n }, [parentContainer]);\n\n useEffect(() => {\n handleFullScreenToggle(resizableRef, fullScreen);\n }, [fullScreen]);\n\n useEffect(() => {\n if (parentContainer && isOpen) {\n const frame = requestAnimationFrame(() => {\n setShouldRenderSidebar(true);\n });\n return () => {\n cancelAnimationFrame(frame);\n setShouldRenderSidebar(false);\n };\n }\n\n if (!parentContainer) {\n setShouldRenderSidebar(true);\n }\n\n if (!isOpen) {\n setShouldRenderSidebar(false);\n }\n }, [isOpen, parentContainer]);\n\n useEffect(() => {\n if (resizableRef.current?.size?.width && onResize) {\n onResize(resizableRef.current.size.width);\n }\n }, [resizableRef.current?.size?.width, onResize]);\n\n return { shouldRenderSidebar, portalTarget };\n};\n\nconst SidebarContent = ({\n isOpen,\n header,\n id,\n ref,\n className,\n containerClassName,\n widthStyle,\n heightStyle,\n motionVariants,\n resizableRef,\n fullScreen,\n maxResizableWidth,\n minWidth,\n handleKey,\n onDragEnd,\n onResize,\n children,\n}: {\n isOpen: boolean;\n header?: React.ReactNode;\n id?: string;\n ref: React.Ref<HTMLDivElement>;\n className?: string;\n containerClassName?: string;\n widthStyle?: string;\n heightStyle: string;\n motionVariants: any;\n resizableRef: React.RefObject<React.ElementRef<typeof Resizable>>;\n fullScreen: boolean;\n maxResizableWidth: number;\n minWidth: number;\n handleKey: string;\n onDragEnd?: (() => void) | null;\n onResize?: (width: number) => void;\n children: React.ReactNode;\n}) => (\n <AnimatePresence>\n {isOpen && (\n <motion.div\n ref={ref}\n id={id}\n initial={motionVariants.initial}\n animate={motionVariants.animate}\n exit={motionVariants.exit}\n transition={{ type: \"tween\", duration: 0.3 }}\n className={cn(\n \"flex-shrink-0 z-50 relative bg-white border-neutral-200 dark:bg-black-800 dark:border-black-700\",\n fullScreen ? \"fixed w-full transition translate-x-4 duration-300\" : \"sticky\",\n className,\n )}\n style={{\n width: widthStyle,\n height: heightStyle,\n }}\n >\n <Resizable\n onResize={(e) => {\n e.stopPropagation();\n const width = resizableRef.current?.size?.width;\n if (onResize) {\n onResize(width || minWidth);\n }\n }}\n onResizeStart={(e) => {\n e.stopPropagation();\n }}\n ref={resizableRef}\n maxWidth={fullScreen ? maxResizableWidth : maxResizableWidth * 0.75}\n minWidth={minWidth}\n minHeight={heightStyle}\n maxHeight={heightStyle}\n enable={fullScreen ? {} : { [handleKey]: true }}\n handleClasses={{\n [handleKey]: cn(\n \"relative w-6 -left-1 flex items-center justify-center bg-transparent transition-colors cursor-ew-resize group z-[9999] hover:bg-neutral-200 dark:hover:bg-neutral-700\",\n ),\n }}\n handleComponent={{\n [handleKey]: (\n <div\n className={cn(\n \"absolute -left-2.5 top-1/2 -translate-y-1/2 flex items-center justify-center w-8 h-12 cursor-ew-resize opacity-0 group-hover:opacity-100 hover:opacity-100 active:opacity-100 transition-opacity z-[9999]\",\n handleKey === \"left\" && \"-right-2.5 -left-auto\",\n )}\n >\n <DragHandle />\n </div>\n ),\n }}\n className=\"!h-full\"\n onResizeStop={onDragEnd || undefined}\n >\n <div\n className={cn(\n \"h-full w-full flex flex-col overflow-hidden @container/sidebar border-b border-neutral-200 dark:border-black-700 bg-white dark:bg-black-800 dark:border\",\n containerClassName,\n )}\n >\n {header ? <div className=\"py-4 px-6\">{header || null}</div> : null}\n <div className=\"flex-1 overflow-y-auto overflow-x-hidden\">{children}</div>\n </div>\n </Resizable>\n </motion.div>\n )} \n </AnimatePresence>\n);\n\nexport const ResizableSidebar = forwardRef<HTMLDivElement, ResizableSidebarProps>(\n (\n {\n isOpen,\n children,\n fullScreen = false,\n defaultSize = undefined,\n minWidth = 400,\n onDragEnd = null,\n onResize,\n className,\n placement = \"right\",\n parentContainer,\n header,\n id,\n containerClassName,\n ignoreParentContainerHeight = false,\n height,\n isMainSidebarExpanded = false,\n mainSidebarExpandedWidth = 280,\n mainSidebarCollapsedWidth = 80,\n navbarHeight = 64,\n },\n ref\n ) => {\n const mainSidebarWidth = isMainSidebarExpanded ? mainSidebarExpandedWidth : mainSidebarCollapsedWidth;\n const resizableRef = useRef<React.ElementRef<typeof Resizable>>(null);\n const { shouldRenderSidebar, portalTarget } = useSidebarEffects(\n parentContainer,\n isOpen,\n fullScreen,\n onResize,\n resizableRef,\n minWidth\n );\n\n const maxResizableWidth = typeof window !== \"undefined\" ? window.innerWidth - mainSidebarWidth : 0;\n\n const widthStyle = defaultSize;\n const isRight = placement === \"right\";\n const heightStyle = height || (parentContainer && !ignoreParentContainerHeight ? \"100%\" : `calc(100vh - ${navbarHeight}px)`);\n\n const motionVariants = {\n initial: { x: isRight ? \"100%\" : \"-100%\" },\n animate: { x: 0 },\n exit: { x: isRight ? \"100%\" : \"-100%\" },\n };\n\n const handleKey = isRight ? \"left\" : \"right\";\n\n const sidebarContent = (\n <SidebarContent\n isOpen={isOpen}\n header={header}\n id={id}\n ref={ref}\n className={className}\n containerClassName={containerClassName}\n widthStyle={widthStyle}\n heightStyle={heightStyle}\n motionVariants={motionVariants}\n resizableRef={resizableRef}\n fullScreen={fullScreen}\n maxResizableWidth={maxResizableWidth}\n minWidth={minWidth}\n handleKey={handleKey}\n onDragEnd={onDragEnd}\n onResize={onResize}\n >\n {children}\n </SidebarContent>\n );\n\n if (parentContainer) {\n if (!shouldRenderSidebar || !portalTarget) return null;\n return ReactDOM.createPortal(sidebarContent, portalTarget);\n }\n\n if (!shouldRenderSidebar) return null;\n\n return sidebarContent;\n }\n);\n\nResizableSidebar.displayName = \"ResizableSidebar\";\n","import cn from \"classnames\";\nimport { forwardRef, useState } from \"react\";\n\n/**\n * Props for the PdfViewer component\n */\nexport interface PdfViewerProps {\n /** URL of the PDF file to display */\n pdfUrl: string;\n /** Width of the viewer */\n width?: string | number;\n /** Height of the viewer */\n height?: string | number;\n /** Additional CSS classes for the wrapper */\n className?: string;\n /** Additional CSS classes for the iframe */\n iframeClassName?: string;\n /** Title for the PDF viewer iframe */\n title?: string;\n /** Whether to show loading state */\n showLoading?: boolean;\n /** Custom loading component */\n loadingComponent?: React.ReactNode;\n /** Custom error component */\n errorComponent?: React.ReactNode;\n /** Callback when PDF fails to load */\n onError?: () => void;\n /** Callback when PDF loads successfully */\n onLoad?: () => void;\n /** Whether to allow fullscreen */\n allowFullScreen?: boolean;\n /** Custom aria-label for accessibility */\n \"aria-label\"?: string;\n}\n\n/**\n * PdfViewer component displays PDF documents in an embedded iframe\n *\n * @example\n * ```tsx\n * <PdfViewer\n * pdfUrl=\"/documents/report.pdf\"\n * width=\"100%\"\n * height=\"600px\"\n * title=\"Monthly Report\"\n * />\n * ```\n */\nexport const PdfViewer = forwardRef<HTMLDivElement, PdfViewerProps>(\n (\n {\n pdfUrl,\n width = \"100%\",\n height = \"100vh\",\n className,\n iframeClassName,\n title = \"PDF Viewer\",\n showLoading = true,\n loadingComponent,\n errorComponent,\n onError,\n onLoad,\n allowFullScreen = true,\n \"aria-label\": ariaLabel,\n },\n ref\n ) => {\n const [isLoading, setIsLoading] = useState(true);\n const [hasError, setHasError] = useState(false);\n\n /**\n * Handle iframe load event\n */\n const handleLoad = () => {\n setIsLoading(false);\n setHasError(false);\n onLoad?.();\n };\n\n /**\n * Handle iframe error event\n */\n const handleError = () => {\n setIsLoading(false);\n setHasError(true);\n onError?.();\n };\n\n /**\n * Default loading component\n */\n const defaultLoadingComponent = (\n <div className=\"flex items-center justify-center h-full bg-neutral-50 dark:bg-neutral-900\">\n <div className=\"text-center\">\n <div className=\"animate-spin rounded-full h-8 w-8 border-b-2 border-blue-600 mx-auto mb-4\"></div>\n <p className=\"text-neutral-600 dark:text-neutral-400 text-sm\">\n Loading PDF...\n </p>\n </div>\n </div>\n );\n\n /**\n * Default error component\n */\n const defaultErrorComponent = (\n <div className=\"flex items-center justify-center h-full bg-neutral-50 dark:bg-neutral-900\">\n <div className=\"text-center p-6\">\n <svg\n className=\"mx-auto h-12 w-12 text-red-400 mb-4\"\n fill=\"none\"\n stroke=\"currentColor\"\n viewBox=\"0 0 24 24\"\n >\n <path\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n strokeWidth={2}\n d=\"M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-2.5L13.732 4c-.77-.833-1.998-.833-2.768 0L3.046 16.5c-.77.833.192 2.5 1.732 2.5z\"\n />\n </svg>\n <h3 className=\"text-lg font-medium text-neutral-900 dark:text-neutral-100 mb-2\">\n Failed to load PDF\n </h3>\n <p className=\"text-neutral-600 dark:text-neutral-400 text-sm mb-4\">\n The PDF document could not be displayed. Please check the URL or try\n again later.\n </p>\n <button\n onClick={() => {\n setHasError(false);\n setIsLoading(true);\n // Trigger reload by updating the iframe src\n const iframe = document.querySelector(\n `iframe[src=\"${pdfUrl}\"]`\n ) as HTMLIFrameElement;\n if (iframe) {\n iframe.src = iframe.src;\n }\n }}\n className=\"bg-blue-600 text-white px-4 py-2 rounded-md text-sm hover:bg-blue-700 transition-colors\"\n >\n Retry\n </button>\n </div>\n </div>\n );\n\n /**\n * Validate PDF URL\n */\n const isValidPdfUrl = (url: string): boolean => {\n try {\n const urlObj = new URL(url, window.location.href);\n return (\n urlObj.pathname.toLowerCase().endsWith(\".pdf\") || url.includes(\"pdf\")\n );\n } catch {\n return false;\n }\n };\n\n // Show error if invalid URL\n if (!pdfUrl || !isValidPdfUrl(pdfUrl)) {\n return (\n <div\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n style={{ width, height }}\n >\n {errorComponent || defaultErrorComponent}\n </div>\n );\n }\n\n return (\n <div\n ref={ref}\n className={cn(\"relative overflow-hidden\", className)}\n style={{ width, height }}\n aria-label={ariaLabel || `PDF Viewer: ${title}`}\n >\n {/* Loading overlay */}\n {isLoading && showLoading && (\n <div className=\"absolute inset-0 z-10\">\n {loadingComponent || defaultLoadingComponent}\n </div>\n )}\n\n {/* Error overlay */}\n {hasError && (\n <div className=\"absolute inset-0 z-10\">\n {errorComponent || defaultErrorComponent}\n </div>\n )}\n\n {/* PDF iframe */}\n {!hasError && (\n <iframe\n src={pdfUrl}\n title={title}\n className={cn(\n \"w-full h-full border-none\",\n isLoading && \"opacity-0\",\n iframeClassName\n )}\n onLoad={handleLoad}\n onError={handleError}\n allowFullScreen={allowFullScreen}\n loading=\"lazy\"\n sandbox=\"allow-same-origin allow-scripts allow-forms\"\n aria-label={ariaLabel || `PDF document: ${title}`}\n />\n )}\n\n {/* Accessibility enhancement */}\n <div className=\"sr-only\">\n PDF document viewer. Use your browser's PDF controls to navigate,\n zoom, or download the document.\n </div>\n </div>\n );\n }\n);\n\nPdfViewer.displayName = \"PdfViewer\";\n","import cn from \"classnames\";\nimport { AnimatePresence, motion } from \"framer-motion\";\nimport { forwardRef, useRef, useEffect } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { useOutsideClick } from \"../../../hooks/useOutsideClick\";\n\n/**\n * Available placement options for the Popper\n */\nexport type PopperPlacement =\n | \"top\"\n | \"top-start\"\n | \"top-end\"\n | \"bottom\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"left\"\n | \"left-start\"\n | \"left-end\"\n | \"right\"\n | \"right-start\"\n | \"right-end\";\n\n/**\n * Props for the Popper component\n */\nexport interface PopperProps {\n /** The trigger element (button content) */\n children: React.ReactNode;\n /** The popper content to display */\n component: React.ReactNode;\n /** Placement position relative to trigger */\n placement?: PopperPlacement;\n /** Whether the popper is open */\n isOpen: boolean;\n /** Function to toggle the popper open/closed state */\n toggleMenu?: (event?: React.MouseEvent<HTMLButtonElement>) => void;\n /** Portal container ID (defaults to document.body) */\n parentContainer?: string;\n /** Whether to remove default spacing on trigger */\n noSpacing?: boolean;\n /** Additional CSS classes for the trigger button */\n triggerClassName?: string;\n /** Additional CSS classes for the popper container */\n containerClassName?: string;\n /** Additional CSS classes for the wrapper */\n className?: string;\n /** Whether to show arrow pointing to trigger */\n showArrow?: boolean;\n /** Custom offset from trigger element */\n offset?: number;\n /** Whether to disable outside click handling */\n disableOutsideClick?: boolean;\n /** Custom aria-label for accessibility */\n \"aria-label\"?: string;\n /** Whether trigger is disabled */\n disabled?: boolean;\n}\n\n/**\n * Popper component provides positioned floating content relative to a trigger element\n *\n * @example\n * ```tsx\n * const [isOpen, setIsOpen] = useState(false);\n *\n * <Popper\n * isOpen={isOpen}\n * toggleMenu={() => setIsOpen(!isOpen)}\n * placement=\"bottom-start\"\n * component={<MenuContent />}\n * >\n * <button>Open Menu</button>\n * </Popper>\n * ```\n */\nexport const Popper = forwardRef<HTMLDivElement, PopperProps>(\n (\n {\n children,\n component,\n placement = \"bottom\",\n isOpen,\n toggleMenu,\n parentContainer,\n noSpacing = false,\n triggerClassName,\n containerClassName,\n className,\n showArrow = false,\n offset = 8,\n disableOutsideClick = false,\n \"aria-label\": ariaLabel,\n disabled = false,\n },\n ref\n ) => {\n const buttonRef = useRef<HTMLButtonElement>(null);\n const menuRef = useRef<HTMLDivElement>(null);\n\n // Handle outside click to close popper\n useOutsideClick({\n ref: menuRef,\n handler: () => {\n if (!disableOutsideClick && isOpen) {\n toggleMenu?.();\n }\n },\n enabled: isOpen && !disableOutsideClick,\n });\n\n /**\n * Calculate popper position based on placement\n */\n useEffect(() => {\n if (!isOpen || !buttonRef.current || !menuRef.current) return;\n\n const button = buttonRef.current;\n const menu = menuRef.current;\n const buttonRect = button.getBoundingClientRect();\n const menuRect = menu.getBoundingClientRect();\n const viewport = {\n width: window.innerWidth,\n height: window.innerHeight,\n };\n\n let top = 0;\n let left = 0;\n\n // Calculate base position based on placement\n switch (placement) {\n case \"top\":\n top = buttonRect.top - menuRect.height - offset;\n left = buttonRect.left + (buttonRect.width - menuRect.width) / 2;\n break;\n case \"top-start\":\n top = buttonRect.top - menuRect.height - offset;\n left = buttonRect.left;\n break;\n case \"top-end\":\n top = buttonRect.top - menuRect.height - offset;\n left = buttonRect.right - menuRect.width;\n break;\n case \"bottom\":\n top = buttonRect.bottom + offset;\n left = buttonRect.left + (buttonRect.width - menuRect.width) / 2;\n break;\n case \"bottom-start\":\n top = buttonRect.bottom + offset;\n left = buttonRect.left;\n break;\n case \"bottom-end\":\n top = buttonRect.bottom + offset;\n left = buttonRect.right - menuRect.width;\n break;\n case \"left\":\n top = buttonRect.top + (buttonRect.height - menuRect.height) / 2;\n left = buttonRect.left - menuRect.width - offset;\n break;\n case \"left-start\":\n top = buttonRect.top;\n left = buttonRect.left - menuRect.width - offset;\n break;\n case \"left-end\":\n top = buttonRect.bottom - menuRect.height;\n left = buttonRect.left - menuRect.width - offset;\n break;\n case \"right\":\n top = buttonRect.top + (buttonRect.height - menuRect.height) / 2;\n left = buttonRect.right + offset;\n break;\n case \"right-start\":\n top = buttonRect.top;\n left = buttonRect.right + offset;\n break;\n case \"right-end\":\n top = buttonRect.bottom - menuRect.height;\n left = buttonRect.right + offset;\n break;\n }\n\n // Boundary detection and adjustment\n if (left < 0) left = 8;\n if (left + menuRect.width > viewport.width) {\n left = viewport.width - menuRect.width - 8;\n }\n if (top < 0) top = 8;\n if (top + menuRect.height > viewport.height) {\n top = viewport.height - menuRect.height - 8;\n }\n\n // Apply position\n menu.style.top = `${top}px`;\n menu.style.left = `${left}px`;\n }, [isOpen, placement, offset]);\n\n /**\n * Handle trigger click\n */\n const handleTriggerClick = (event: React.MouseEvent<HTMLButtonElement>) => {\n if (!disabled) {\n toggleMenu?.(event);\n }\n };\n\n /**\n * Handle keyboard navigation\n */\n const handleKeyDown = (event: React.KeyboardEvent) => {\n if (event.key === \"Escape\" && isOpen) {\n toggleMenu?.();\n }\n };\n\n /**\n * Get arrow styles based on placement\n */\n const getArrowClasses = (): string => {\n const baseClasses =\n \"absolute w-2 h-2 bg-white dark:bg-neutral-800 transform rotate-45 border\";\n\n switch (placement) {\n case \"top\":\n case \"top-start\":\n case \"top-end\":\n return cn(baseClasses, \"bottom-[-4px] border-t-0 border-l-0\");\n case \"bottom\":\n case \"bottom-start\":\n case \"bottom-end\":\n return cn(baseClasses, \"top-[-4px] border-b-0 border-r-0\");\n case \"left\":\n case \"left-start\":\n case \"left-end\":\n return cn(baseClasses, \"right-[-4px] border-l-0 border-b-0\");\n case \"right\":\n case \"right-start\":\n case \"right-end\":\n return cn(baseClasses, \"left-[-4px] border-r-0 border-t-0\");\n default:\n return cn(baseClasses, \"top-[-4px] border-b-0 border-r-0\");\n }\n };\n\n /**\n * Get arrow position based on placement\n */\n const getArrowPosition = (): Record<string, string> => {\n switch (placement) {\n case \"top\":\n case \"bottom\":\n return { left: \"50%\", transform: \"translateX(-50%)\" };\n case \"top-start\":\n case \"bottom-start\":\n return { left: \"12px\" };\n case \"top-end\":\n case \"bottom-end\":\n return { right: \"12px\" };\n case \"left\":\n case \"right\":\n return { top: \"50%\", transform: \"translateY(-50%)\" };\n case \"left-start\":\n case \"right-start\":\n return { top: \"12px\" };\n case \"left-end\":\n case \"right-end\":\n return { bottom: \"12px\" };\n default:\n return { left: \"50%\", transform: \"translateX(-50%)\" };\n }\n };\n\n return (\n <div ref={ref} className={cn(\"relative inline-block\", className)}>\n {/* Trigger Button */}\n <button\n ref={buttonRef}\n onClick={handleTriggerClick}\n onKeyDown={handleKeyDown}\n className={cn(\n \"flex items-center justify-center outline-none focus:outline-none transition-colors\",\n !noSpacing && \"p-2\",\n disabled && \"opacity-50 cursor-not-allowed\",\n triggerClassName\n )}\n aria-label={ariaLabel}\n aria-expanded={isOpen}\n aria-haspopup=\"true\"\n disabled={disabled}\n type=\"button\"\n >\n {children}\n </button>\n\n {/* Popper Content */}\n {isOpen &&\n createPortal(\n <AnimatePresence>\n <motion.div\n ref={menuRef}\n initial={{ opacity: 0, scale: 0.95 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.95 }}\n transition={{ duration: 0.15 }}\n className={cn(\n \"fixed z-[9999] bg-white dark:bg-neutral-800 rounded-lg shadow-lg border border-neutral-200 dark:border-neutral-700\",\n \"focus:outline-none\",\n containerClassName\n )}\n style={{ minWidth: \"120px\" }}\n role=\"menu\"\n aria-orientation=\"vertical\"\n tabIndex={-1}\n >\n {/* Arrow */}\n {showArrow && (\n <div\n className={getArrowClasses()}\n style={getArrowPosition()}\n />\n )}\n\n {/* Content */}\n <div className=\"relative\">{component}</div>\n </motion.div>\n </AnimatePresence>,\n document.getElementById(parentContainer!) || document.body\n )}\n </div>\n );\n }\n);\n\nPopper.displayName = \"Popper\";\n","import React, { type ReactNode } from 'react';\nimport { ToastContainer, toast as toastifyToast, Slide } from 'react-toastify';\nimport 'react-toastify/dist/ReactToastify.css';\nimport './styles.css';\n\n// Toast Type Definition\nexport type ToastType = 'success' | 'error' | 'warning' | 'info' | 'in-progress';\n\n// Toast Position Type\nexport type ToastPosition = \n | 'top-left' \n | 'top-center' \n | 'top-right' \n | 'bottom-left' \n | 'bottom-center' \n | 'bottom-right';\n\n// Icon Components\nconst SuccessIcon = ({ size = 24, fill = '#12B76A' }: { size?: number; fill?: string }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill={fill}\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g mask=\"url(#mask0_4874_46615)\">\n <path\n d=\"M10.6 13.8L8.425 11.625C8.24167 11.4417 8.01267 11.3543 7.738 11.363C7.46267 11.371 7.23333 11.4667 7.05 11.65C6.86667 11.8333 6.775 12.0667 6.775 12.35C6.775 12.6333 6.86667 12.8667 7.05 13.05L9.9 15.9C10.0833 16.0833 10.3167 16.175 10.6 16.175C10.8833 16.175 11.1167 16.0833 11.3 15.9L16.975 10.225C17.1583 10.0417 17.246 9.81233 17.238 9.537C17.2293 9.26233 17.1333 9.03333 16.95 8.85C16.7667 8.66667 16.5333 8.575 16.25 8.575C15.9667 8.575 15.7333 8.66667 15.55 8.85L10.6 13.8ZM12 22C10.6167 22 9.31667 21.7373 8.1 21.212C6.88333 20.6873 5.825 19.975 4.925 19.075C4.025 18.175 3.31267 17.1167 2.788 15.9C2.26267 14.6833 2 13.3833 2 12C2 10.6167 2.26267 9.31667 2.788 8.1C3.31267 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.31233 8.1 2.787C9.31667 2.26233 10.6167 2 12 2C13.3833 2 14.6833 2.26233 15.9 2.787C17.1167 3.31233 18.175 4.025 19.075 4.925C19.975 5.825 20.6873 6.88333 21.212 8.1C21.7373 9.31667 22 10.6167 22 12C22 13.3833 21.7373 14.6833 21.212 15.9C20.6873 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6873 15.9 21.212C14.6833 21.7373 13.3833 22 12 22ZM12 20C14.2167 20 16.1043 19.221 17.663 17.663C19.221 16.1043 20 14.2167 20 12C20 9.78333 19.221 7.89567 17.663 6.337C16.1043 4.779 14.2167 4 12 4C9.78333 4 7.896 4.779 6.338 6.337C4.77933 7.89567 4 9.78333 4 12C4 14.2167 4.77933 16.1043 6.338 17.663C7.896 19.221 9.78333 20 12 20Z\"\n fill={fill}\n />\n </g>\n </svg>\n);\n\nconst ErrorIcon = ({ size = 24, fill = '#F04438' }: { size?: number; fill?: string }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g id=\"error\">\n <g mask=\"url(#mask0_4874_46622)\">\n <path\n id=\"error_2\"\n d=\"M12 17C12.2833 17 12.5208 16.9042 12.7125 16.7125C12.9042 16.5208 13 16.2833 13 16C13 15.7167 12.9042 15.4792 12.7125 15.2875C12.5208 15.0958 12.2833 15 12 15C11.7167 15 11.4792 15.0958 11.2875 15.2875C11.0958 15.4792 11 15.7167 11 16C11 16.2833 11.0958 16.5208 11.2875 16.7125C11.4792 16.9042 11.7167 17 12 17ZM12 13C12.2833 13 12.5208 12.9042 12.7125 12.7125C12.9042 12.5208 13 12.2833 13 12V8C13 7.71667 12.9042 7.47917 12.7125 7.2875C12.5208 7.09583 12.2833 7 12 7C11.7167 7 11.4792 7.09583 11.2875 7.2875C11.0958 7.47917 11 7.71667 11 8V12C11 12.2833 11.0958 12.5208 11.2875 12.7125C11.4792 12.9042 11.7167 13 12 13ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22ZM12 20C14.2333 20 16.125 19.225 17.675 17.675C19.225 16.125 20 14.2333 20 12C20 9.76667 19.225 7.875 17.675 6.325C16.125 4.775 14.2333 4 12 4C9.76667 4 7.875 4.775 6.325 6.325C4.775 7.875 4 9.76667 4 12C4 14.2333 4.775 16.125 6.325 17.675C7.875 19.225 9.76667 20 12 20Z\"\n fill={fill}\n />\n </g>\n </g>\n </svg>\n);\n\nconst WarningIcon = ({ size = 24, fill = '#F79009' }: { size?: number; fill?: string }) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n >\n <path\n d=\"M12 5.99L19.53 19H4.47L12 5.99ZM2.74 18C1.97 19.33 2.93 21 4.47 21H19.53C21.07 21 22.03 19.33 21.26 18L13.73 4.99C12.96 3.66 11.04 3.66 10.27 4.99L2.74 18ZM11 11V13C11 13.55 11.45 14 12 14C12.55 14 13 13.55 13 13V11C13 10.45 12.55 10 12 10C11.45 10 11 10.45 11 11ZM11 16H13V18H11V16Z\"\n fill={fill}\n />\n </svg>\n);\n\nconst InfoIcon = ({ size = 24, fill = '#016DCF' }: { size?: number; fill?: string }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <mask id=\"mask0_32271_5688\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"24\" height=\"24\">\n <rect width=\"24\" height=\"24\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask0_32271_5688)\">\n <path\n d=\"M12 17C12.2833 17 12.5208 16.9042 12.7125 16.7125C12.9042 16.5208 13 16.2833 13 16V12C13 11.7167 12.9042 11.4792 12.7125 11.2875C12.5208 11.0958 12.2833 11 12 11C11.7167 11 11.4792 11.0958 11.2875 11.2875C11.0958 11.4792 11 11.7167 11 12V16C11 16.2833 11.0958 16.5208 11.2875 16.7125C11.4792 16.9042 11.7167 17 12 17ZM12 9C12.2833 9 12.5208 8.90417 12.7125 8.7125C12.9042 8.52083 13 8.28333 13 8C13 7.71667 12.9042 7.47917 12.7125 7.2875C12.5208 7.09583 12.2833 7 12 7C11.7167 7 11.4792 7.09583 11.2875 7.2875C11.0958 7.47917 11 7.71667 11 8C11 8.28333 11.0958 8.52083 11.2875 8.7125C11.4792 8.90417 11.7167 9 12 9ZM12 22C10.6167 22 9.31667 21.7375 8.1 21.2125C6.88333 20.6875 5.825 19.975 4.925 19.075C4.025 18.175 3.3125 17.1167 2.7875 15.9C2.2625 14.6833 2 13.3833 2 12C2 10.6167 2.2625 9.31667 2.7875 8.1C3.3125 6.88333 4.025 5.825 4.925 4.925C5.825 4.025 6.88333 3.3125 8.1 2.7875C9.31667 2.2625 10.6167 2 12 2C13.3833 2 14.6833 2.2625 15.9 2.7875C17.1167 3.3125 18.175 4.025 19.075 4.925C19.975 5.825 20.6875 6.88333 21.2125 8.1C21.7375 9.31667 22 10.6167 22 12C22 13.3833 21.7375 14.6833 21.2125 15.9C20.6875 17.1167 19.975 18.175 19.075 19.075C18.175 19.975 17.1167 20.6875 15.9 21.2125C14.6833 21.7375 13.3833 22 12 22ZM12 20C14.2333 20 16.125 19.225 17.675 17.675C19.225 16.125 20 14.2333 20 12C20 9.76667 19.225 7.875 17.675 6.325C16.125 4.775 14.2333 4 12 4C9.76667 4 7.875 4.775 6.325 6.325C4.775 7.875 4 9.76667 4 12C4 14.2333 4.775 16.125 6.325 17.675C7.875 19.225 9.76667 20 12 20Z\"\n fill={fill}\n />\n </g>\n </svg>\n);\n\nconst InProgressIcon = ({ size = 24, fill = '#016DCF' }: { size?: number; fill?: string }) => (\n <svg xmlns=\"http://www.w3.org/2000/svg\" width={size} height={size} viewBox=\"0 0 24 24\" fill=\"none\">\n <mask id=\"mask0_35096_2621\" maskUnits=\"userSpaceOnUse\" x=\"0\" y=\"0\" width=\"24\" height=\"24\">\n <rect width=\"24\" height=\"24\" fill=\"#D9D9D9\" />\n </mask>\n <g mask=\"url(#mask0_35096_2621)\">\n <path\n d=\"M8 20H16V17C16 15.9 15.6083 14.9583 14.825 14.175C14.0417 13.3917 13.1 13 12 13C10.9 13 9.95833 13.3917 9.175 14.175C8.39167 14.9583 8 15.9 8 17V20ZM12 11C13.1 11 14.0417 10.6083 14.825 9.825C15.6083 9.04167 16 8.1 16 7V4H8V7C8 8.1 8.39167 9.04167 9.175 9.825C9.95833 10.6083 10.9 11 12 11ZM5 22C4.71667 22 4.47917 21.9042 4.2875 21.7125C4.09583 21.5208 4 21.2833 4 21C4 20.7167 4.09583 20.4792 4.2875 20.2875C4.47917 20.0958 4.71667 20 5 20H6V17C6 15.9833 6.2375 15.0292 6.7125 14.1375C7.1875 13.2458 7.85 12.5333 8.7 12C7.85 11.4667 7.1875 10.7542 6.7125 9.8625C6.2375 8.97083 6 8.01667 6 7V4H5C4.71667 4 4.47917 3.90417 4.2875 3.7125C4.09583 3.52083 4 3.28333 4 3C4 2.71667 4.09583 2.47917 4.2875 2.2875C4.47917 2.09583 4.71667 2 5 2H19C19.2833 2 19.5208 2.09583 19.7125 2.2875C19.9042 2.47917 20 2.71667 20 3C20 3.28333 19.9042 3.52083 19.7125 3.7125C19.5208 3.90417 19.2833 4 19 4H18V7C18 8.01667 17.7625 8.97083 17.2875 9.8625C16.8125 10.7542 16.15 11.4667 15.3 12C16.15 12.5333 16.8125 13.2458 17.2875 14.1375C17.7625 15.0292 18 15.9833 18 17V20H19C19.2833 20 19.5208 20.0958 19.7125 20.2875C19.9042 20.4792 20 20.7167 20 21C20 21.2833 19.9042 21.5208 19.7125 21.7125C19.5208 21.9042 19.2833 22 19 22H5Z\"\n fill={fill}\n />\n </g>\n </svg>\n);\n\nconst CloseIcon = ({ size = 16 }: { size?: number }) => (\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <path d=\"M18.3 5.71a.996.996 0 00-1.41 0L12 10.59 7.11 5.7A.996.996 0 105.7 7.11L10.59 12 5.7 16.89a.996.996 0 101.41 1.41L12 13.41l4.89 4.89a.996.996 0 101.41-1.41L13.41 12l4.89-4.89c.38-.38.38-1.02 0-1.4z\" />\n </svg>\n);\n\n// Toast Configuration Props\nexport interface ToastContainerProps {\n position?: ToastPosition;\n autoClose?: number | false;\n hideProgressBar?: boolean;\n newestOnTop?: boolean;\n closeOnClick?: boolean;\n pauseOnFocusLoss?: boolean;\n draggable?: boolean;\n pauseOnHover?: boolean;\n rtl?: boolean;\n className?: string;\n style?: React.CSSProperties;\n}\n\n// Get icon by type\nconst getIconByType = (type: ToastType): ReactNode => {\n switch (type) {\n case 'success':\n return (\n <div className=\"w-8 h-8 bg-green-50 dark:bg-green-900 rounded-full p-1 flex justify-center items-center\">\n <SuccessIcon size={24} fill=\"#12B76A\" />\n </div>\n );\n case 'error':\n return (\n <div className=\"w-8 h-8 bg-red-50 dark:bg-red-900 rounded-full p-1 flex justify-center items-center\">\n <ErrorIcon fill=\"#F04438\" size={24} />\n </div>\n );\n case 'warning':\n return (\n <div className=\"w-8 h-8 bg-yellow-50 dark:bg-yellow-900 rounded-full p-1 flex justify-center items-center\">\n <WarningIcon fill=\"#F79009\" size={24} />\n </div>\n );\n case 'info':\n return (\n <div className=\"w-8 h-8 bg-blue-50 dark:bg-blue-900 rounded-full p-1 flex justify-center items-center\">\n <InfoIcon />\n </div>\n );\n case 'in-progress':\n return (\n <div className=\"w-8 h-8 bg-blue-50 dark:bg-blue-900 rounded-full p-1 flex justify-center items-center\">\n <InProgressIcon />\n </div>\n );\n default:\n return null;\n }\n};\n\n// Toast context for styling\nconst toastContext = {\n success:\n 'border-b-[5px] !border-green-500 dark:!border-t-[1px] dark:!border-r-[1px] dark:!border-l-[1px] dark:!border-t-neutral-600 dark:!border-r-neutral-600 dark:!border-l-neutral-600',\n error:\n 'border-b-[5px] !border-red-500 dark:!border-t-[1px] dark:!border-r-[1px] dark:!border-l-[1px] dark:!border-t-neutral-600 dark:!border-r-neutral-600 dark:!border-l-neutral-600',\n warning:\n 'border-b-[5px] !border-yellow-500 dark:!border-t-[1px] dark:!border-r-[1px] dark:!border-l-[1px] dark:!border-t-neutral-600 dark:!border-r-neutral-600 dark:!border-l-neutral-600',\n info: 'border-b-[5px] !border-blue-500 dark:!border-t-[1px] dark:!border-r-[1px] dark:!border-l-[1px] dark:!border-t-neutral-600 dark:!border-r-neutral-600 dark:!border-l-neutral-600',\n 'in-progress': 'border-b-[5px] !border-blue-500 dark:!border-t-[1px] dark:!border-r-[1px] dark:!border-l-[1px] dark:!border-t-neutral-600 dark:!border-r-neutral-600 dark:!border-l-neutral-600',\n};\n\n// Close Button Component\nconst CloseButton = ({ closeToast }: { closeToast: (e: React.MouseEvent<HTMLElement, MouseEvent>) => void }) => (\n <button onClick={closeToast} className=\"text-neutral-900 dark:text-white hover:text-neutral-600 dark:hover:text-neutral-300 transition-colors\">\n <CloseIcon size={16} />\n </button>\n);\n\n// Toast Container Component\nexport const Toast: React.FC<ToastContainerProps> = ({\n position = 'bottom-right',\n autoClose = 3000,\n hideProgressBar = true,\n newestOnTop = true,\n closeOnClick = true,\n pauseOnFocusLoss = false,\n draggable = true,\n pauseOnHover = true,\n rtl = false,\n className,\n style = { zIndex: 100000 },\n ...props\n}) => {\n return (\n <ToastContainer\n position={position}\n transition={Slide}\n autoClose={autoClose}\n hideProgressBar={hideProgressBar}\n newestOnTop={newestOnTop}\n closeOnClick={closeOnClick}\n rtl={rtl}\n pauseOnFocusLoss={pauseOnFocusLoss}\n draggable={draggable}\n pauseOnHover={pauseOnHover}\n icon={({ type }) => getIconByType(type as ToastType)}\n bodyStyle={{\n gap: '4px',\n }}\n style={style}\n toastClassName={(context) => {\n const { type = '', defaultClassName = '' } = context || {};\n return `w-[100%] sm:w-[400px] bg-white dark:bg-neutral-800 rounded-[4px] font-medium text-sm text-neutral-900 dark:text-white shadow-lg p-[20px] min-h-0 ${defaultClassName} ${\n toastContext[type as keyof typeof toastContext]\n } ${className || ''}`;\n }}\n closeButton={CloseButton}\n {...props}\n />\n );\n};\n\n// Toast API Functions\nexport const toast = {\n success: (message: ReactNode, options?: any) => {\n return toastifyToast.success(message, options);\n },\n error: (message: ReactNode, options?: any) => {\n return toastifyToast.error(message, options);\n },\n warning: (message: ReactNode, options?: any) => {\n return toastifyToast.warning(message, options);\n },\n info: (message: ReactNode, options?: any) => {\n return toastifyToast.info(message, options);\n },\n // Custom type for in-progress\n inProgress: (message: ReactNode, options?: any) => {\n return toastifyToast(message, { ...options, type: 'in-progress' as any });\n },\n dismiss: (toastId?: string | number) => {\n return toastifyToast.dismiss(toastId);\n },\n isActive: (toastId: string | number) => {\n return toastifyToast.isActive(toastId);\n },\n};\n\nexport default Toast;\n","import { useState, useCallback } from 'react';\nimport { type ThemeContextType } from '../types';\n\n/**\n * Simple theme hook for the CodeEditor component\n * In a real application, this would be connected to a global theme context\n */\nexport const useTheme = (): ThemeContextType => {\n const [theme, setTheme] = useState<'light' | 'dark'>('light');\n const [editorTheme, setEditorTheme] = useState<'vs' | 'vs-dark'>('vs');\n\n const updateEditorTheme = useCallback((newTheme: 'vs' | 'vs-dark') => {\n setEditorTheme(newTheme);\n // Update main theme based on editor theme\n setTheme(newTheme === 'vs-dark' ? 'dark' : 'light');\n }, []);\n\n return {\n theme,\n editorTheme,\n setEditorTheme: updateEditorTheme,\n };\n};\n","import type { FC } from 'react';\n\nexport interface IconProps {\n className?: string;\n size?: number;\n}\n\nexport const LaxIcon: FC<IconProps> = ({ className, size = 26 }) => {\n return (\n <svg\n className={className}\n xmlns=\"http://www.w3.org/2000/svg\"\n width={size}\n height={size}\n viewBox=\"0 0 17 26\"\n fill=\"none\"\n >\n <path\n d=\"M16.391 21.56C16.3099 22.4852 15.9426 23.0065 15.5742 23.2995C15.0359 23.7274 14.279 23.7081 13.7516 23.2665C12.576 22.2823 11.8296 19.7923 11.6614 19.1309C11.6576 19.1158 11.6545 19.102 11.6514 19.0888C11.647 19.0705 11.6425 19.0529 11.6382 19.0346C11.6338 19.017 11.6301 18.9993 11.6257 18.9817C11.6226 18.9698 11.6201 18.9572 11.6175 18.9453L11.6169 18.9447C10.7862 15.4591 10.038 11.9535 9.19849 8.47039C8.80328 6.83134 7.88558 3.7089 7.535 2.52765C7.34951 1.90269 7.02007 1.32691 6.55686 0.867931C6.23628 0.55043 5.82141 0.254489 5.30765 0.106076C5.30573 0.104747 5.30322 0.104156 5.30071 0.104156L5.30012 0.103565C5.26819 0.0952957 5.23567 0.0873212 5.20271 0.0799375C3.917 -0.21305 2.58872 0.317547 1.79962 1.37342C1.35976 1.9622 1.14516 2.5529 1.0646 2.81532C1.01864 2.97274 0.977994 3.13208 0.942374 3.29349C0.777429 4.04043 0.716831 4.8271 0.689192 5.62558H1.20295C1.20295 5.62558 1.54702 4.31422 1.81779 3.75025C2.64577 2.02452 4.79153 1.83077 5.9296 3.36113C6.21929 3.74937 6.48695 4.18545 6.63564 4.64177C7.04948 5.9097 7.41159 7.19595 7.7536 8.48471C7.81789 8.72705 7.76557 9.04854 7.65664 9.28319C5.4089 14.2092 2.24523 21.0746 0 26H3.44507C3.44507 26 7.11126 17.6438 8.91871 13.5201C9.56238 16.1789 10.0637 18.8224 10.7408 21.4673C10.9505 22.2999 11.2137 23.1342 11.5476 23.9309C11.5476 23.9309 11.5482 23.9334 11.5501 23.9379C11.5507 23.9398 11.5521 23.9429 11.5532 23.946C11.5753 24.007 11.666 24.2462 11.8253 24.5507C12.19 25.2486 12.9155 26 13.9995 26C16.5943 26 16.9508 21.5599 16.9508 21.5599H16.391V21.56Z\"\n fill=\"#016DCF\"\n />\n </svg>\n );\n};\n\n","import type { FC } from 'react';\n\nexport interface IconProps {\n className?: string;\n fill?: string;\n size?: number;\n}\n\nexport const ComingSoonIcon: FC<IconProps> = ({ className, fill = 'currentColor', size = 140 }) => {\n return (\n <svg\n className={className}\n width={size}\n height={size}\n viewBox=\"0 0 128 128\"\n xmlns=\"http://www.w3.org/2000/svg\"\n fill={fill}\n >\n <path d=\"M82.2673 90.5993C81.9118 90.5993 81.5784 90.5438 81.2673 90.4327C80.9562 90.3216 80.6673 90.1327 80.4007 89.866L66.8007 76.266C66.534 75.9994 66.3451 75.7105 66.234 75.3994C66.1229 75.0882 66.0673 74.7549 66.0673 74.3994C66.0673 74.0438 66.1229 73.7105 66.234 73.3994C66.3451 73.0882 66.534 72.7994 66.8007 72.5327L72.4673 66.866C72.734 66.5993 73.0229 66.4105 73.334 66.2994C73.6451 66.1882 73.9784 66.1327 74.334 66.1327C74.6895 66.1327 75.0229 66.1882 75.334 66.2994C75.6451 66.4105 75.934 66.5993 76.2007 66.866L89.8007 80.466C90.0673 80.7327 90.2562 81.0216 90.3673 81.3327C90.4784 81.6438 90.534 81.9771 90.534 82.3327C90.534 82.6882 90.4784 83.0216 90.3673 83.3327C90.2562 83.6438 90.0673 83.9327 89.8007 84.1994L84.134 89.866C83.8673 90.1327 83.5784 90.3216 83.2673 90.4327C82.9562 90.5438 82.6229 90.5993 82.2673 90.5993ZM82.2673 84.266L84.2007 82.3327L74.4007 72.5327L72.4673 74.466L82.2673 84.266ZM45.6673 90.666C45.3118 90.666 44.9673 90.5994 44.634 90.466C44.3007 90.3327 44.0007 90.1327 43.734 89.866L38.134 84.266C37.8673 83.9994 37.6673 83.6994 37.534 83.366C37.4007 83.0327 37.334 82.6882 37.334 82.3327C37.334 81.9771 37.4007 81.6438 37.534 81.3327C37.6673 81.0216 37.8673 80.7327 38.134 80.466L52.2673 66.3327H57.934L60.2007 64.066L49.2007 53.066H45.4007L37.334 44.9993L44.8673 37.466L52.934 45.5327V49.3327L63.934 60.3327L71.6673 52.5993L68.8007 49.7327L72.534 45.9993H65.0007L63.134 44.1327L72.6007 34.666L74.4673 36.5327V44.066L78.2007 40.3327L87.6673 49.7993C88.4229 50.5549 89.0007 51.4105 89.4007 52.366C89.8007 53.3216 90.0007 54.3327 90.0007 55.3993C90.0007 56.466 89.8007 57.4882 89.4007 58.466C89.0007 59.4438 88.4229 60.3105 87.6673 61.066L82.0007 55.3993L78.2673 59.1327L75.4673 56.3327L61.6673 70.1327V75.7327L47.534 89.866C47.2673 90.1327 46.9784 90.3327 46.6673 90.466C46.3562 90.5994 46.0229 90.666 45.6673 90.666ZM45.6673 84.266L57.0007 72.9327V70.9994H55.0673L43.734 82.3327L45.6673 84.266ZM45.6673 84.266L43.734 82.3327L44.734 83.266L45.6673 84.266Z\" />\n </svg>\n );\n};\n\n","import type { FC } from 'react';\n\nexport interface IconProps {\n className?: string;\n fill?: string;\n size?: number;\n}\n\nexport const CheckSmallIcon: FC<IconProps> = ({ className = '', fill = 'currentColor', size = 20 }) => (\n <svg\n className={className}\n width={size}\n height={size}\n viewBox=\"0 0 20 20\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <g mask=\"url(#mask0_6752_28309)\">\n <path\n d=\"M8.33317 11.3333L13.2498 6.41667C13.4026 6.26389 13.5971 6.1875 13.8332 6.1875C14.0693 6.1875 14.2637 6.26389 14.4165 6.41667C14.5693 6.56944 14.6457 6.76389 14.6457 7C14.6457 7.23611 14.5693 7.43056 14.4165 7.58333L8.9165 13.0833C8.74984 13.25 8.55539 13.3333 8.33317 13.3333C8.11095 13.3333 7.9165 13.25 7.74984 13.0833L5.58317 10.9167C5.43039 10.7639 5.354 10.5694 5.354 10.3333C5.354 10.0972 5.43039 9.90278 5.58317 9.75C5.73595 9.59722 5.93039 9.52083 6.1665 9.52083C6.40262 9.52083 6.59706 9.59722 6.74984 9.75L8.33317 11.3333Z\"\n fill={fill}\n />\n </g>\n </svg>\n);\n\n","import type { FC } from 'react';\nimport Button from '../../button/Button';\nimport { Typography } from '../typography/Typography';\nimport { Modal } from '../modal/Modal';\nimport { LaxIcon } from '../../icons/LaxIcon';\n\nexport interface AccessDeniedModalProps {\n title: string;\n visible: boolean;\n onClose: () => void;\n content: string;\n}\n\n/**\n * AccessDeniedModal component for displaying access denied messages\n *\n * @example\n * ```tsx\n * <AccessDeniedModal\n * title=\"Access Denied\"\n * visible={isOpen}\n * onClose={() => setIsOpen(false)}\n * content=\"You don't have permission to access this resource.\"\n * />\n * ```\n */\nexport const AccessDeniedModal: FC<AccessDeniedModalProps> = ({ title, visible, onClose, content }) => {\n return (\n <Modal title={null} open={visible} footer={null} onCancel={onClose} zIndex={9999} showCloseButton={false} width={400}>\n <div>\n <div className=\"flex justify-center\">\n <div className=\"flex w-[48px] h-[48px] justify-center items-center gap-2 rounded-lg border border-[#54A4EC] shadow-[0_0_4px_2px_rgba(198,225,249,0.20)_inset]\">\n <LaxIcon />\n </div>\n </div>\n <Typography size=\"medium\" variant=\"semibold\" className=\"text-center mt-3\">\n {title}\n </Typography>\n <Typography size=\"small\" variant=\"medium\" className=\"text-center text-neutral-500 mt-2 dark:text-neutral-400\" appearance=\"custom\">\n {content}\n </Typography>\n </div>\n <div className=\"flex justify-center mt-4\">\n <Button id=\"btn-access-denied-modal-close\" appearance=\"outline\" status=\"secondary-neutral\" onClick={onClose}>\n Close\n </Button>\n </div>\n </Modal>\n );\n};\n\n","import classNames from 'classnames';\nimport type { FC } from 'react';\nimport { ComingSoonIcon } from '../../icons/ComingSoonIcon';\n\nexport interface InProgressProps {\n containerClass?: string;\n}\n\n/**\n * InProgress component for displaying a coming soon message\n *\n * @example\n * ```tsx\n * <InProgress containerClass=\"custom-class\" />\n * ```\n */\nexport const InProgress: FC<InProgressProps> = ({ containerClass }) => {\n return (\n <div className={classNames('flex justify-center items-center h-table', containerClass)}>\n <div className=\"flex flex-col items-center text-neutral-800 -mt-12\">\n <div className=\"-mb-4\">\n <ComingSoonIcon />\n </div>\n <div className=\"text-center\">\n <h1 className=\"text-3xl font-bold font-inter\">Feature Coming Soon</h1>\n <div className=\"py-2\" />\n <p className=\"font-inter text-sm\">We&apos;re in the process of crafting this page</p>\n </div>\n </div>\n </div>\n );\n};\n\n","import type { FC, ReactNode } from 'react';\nimport { useMemo } from 'react';\nimport Button from '../../button/Button';\nimport { Modal } from '../modal/Modal';\n\nexport interface UnsavedChangesModalProps {\n visible: boolean;\n onClose: () => void;\n onSaveAndExit: () => void;\n onDiscardChanges: () => void;\n onCancel: () => void;\n isLoading?: boolean;\n title?: string;\n content?: string;\n cancelText?: string;\n discardText?: string;\n saveText?: string;\n}\n\n/**\n * UnsavedChangesModal component for prompting users about unsaved changes\n *\n * @example\n * ```tsx\n * <UnsavedChangesModal\n * visible={isOpen}\n * onClose={() => setIsOpen(false)}\n * onSaveAndExit={handleSave}\n * onDiscardChanges={handleDiscard}\n * onCancel={handleCancel}\n * isLoading={isSaving}\n * />\n * ```\n */\nexport const UnsavedChangesModal: FC<UnsavedChangesModalProps> = ({\n visible,\n onClose,\n onSaveAndExit,\n onDiscardChanges,\n onCancel,\n isLoading = false,\n title = 'You have unsaved changes',\n content = 'Switching to view mode will discard any unsaved edits. What would you like to do?',\n cancelText = 'Cancel',\n discardText = 'Discard Changes',\n saveText = 'Save & Exit',\n}) => {\n const footer = useMemo<ReactNode>(\n () => (\n <div className=\"flex justify-end gap-3\">\n <Button id=\"btn-unsaved-changes-modal-cancel\" onClick={onCancel} disabled={isLoading} status=\"secondary-neutral\">\n {cancelText}\n </Button>\n <Button id=\"btn-unsaved-changes-modal-discard\" onClick={onDiscardChanges} disabled={isLoading} status=\"error\">\n {discardText}\n </Button>\n <Button id=\"btn-unsaved-changes-modal-save-exit\" onClick={onSaveAndExit} isLoading={isLoading} status=\"primary\">\n {saveText}\n </Button>\n </div>\n ),\n [onCancel, onDiscardChanges, onSaveAndExit, isLoading, cancelText, discardText, saveText]\n );\n\n if (!visible) return null;\n\n return (\n <Modal title={title} open={visible} footer={footer} onCancel={onClose} zIndex={9999}>\n <div className=\"my-5\">\n <div className=\"text-neutral-400 font-inter text-base\">{content}</div>\n </div>\n </Modal>\n );\n};\n\n","import type { FC, ReactNode } from 'react';\nimport Button from '../../button/Button';\nimport { Modal } from '../modal/Modal';\n\nexport interface ErrorModalProps {\n visible: boolean;\n onClose: () => void;\n content?: string;\n title?: string;\n okText?: string;\n}\n\n/**\n * ErrorModal component for displaying error messages\n *\n * @example\n * ```tsx\n * <ErrorModal\n * visible={isOpen}\n * onClose={() => setIsOpen(false)}\n * title=\"Error\"\n * content=\"An error occurred while processing your request.\"\n * />\n * ```\n */\nexport const ErrorModal: FC<ErrorModalProps> = ({ visible, onClose, content = '', title = 'Error', okText = 'OK' }) => {\n const handleClose = () => {\n onClose();\n };\n\n const footer: ReactNode = (\n <div className=\"flex justify-end\">\n <Button id=\"btn-error-modal-submit-ok\" status=\"primary\" onClick={handleClose} type=\"submit\">\n {okText}\n </Button>\n </div>\n );\n\n return (\n <Modal asForm title={title} open={visible} onCancel={handleClose} footer={footer}>\n <div className=\"text-neutral-400 text-base font-inter\">{content}</div>\n </Modal>\n );\n};\n\n","import type { FC, ReactNode } from 'react';\nimport { toast } from 'react-toastify';\nimport Button from '../../button/Button';\nimport { Modal } from '../modal/Modal';\nimport { Typography } from '../typography/Typography';\nimport { systemMessages } from '../../../utils/messageConstants';\n\nexport interface DeleteModalProps {\n visible: boolean;\n onClose: () => void;\n onSuccessClose?: () => void;\n sectionName?: string;\n suffix?: string;\n onAgreementDelete?: () => void;\n from?: string;\n text: string;\n additionalText?: string;\n title: string;\n deleteConfirm?: () => void;\n onDeleteConfirm?: () => void;\n onConfirmDelete?: () => void;\n isLoading?: boolean;\n isMod?: boolean;\n isBooleanButton?: boolean;\n cancelText?: string;\n deleteText?: string;\n yesText?: string;\n noText?: string;\n removeText?: string;\n}\n\n/**\n * DeleteModal component for confirming delete operations\n *\n * @example\n * ```tsx\n * <DeleteModal\n * visible={isOpen}\n * onClose={() => setIsOpen(false)}\n * title=\"Delete Item\"\n * text=\"Are you sure you want to delete\"\n * sectionName=\"this item\"\n * onConfirmDelete={handleDelete}\n * />\n * ```\n */\nexport const DeleteModal: FC<DeleteModalProps> = ({\n visible,\n onClose,\n onSuccessClose,\n sectionName,\n suffix,\n onAgreementDelete,\n from,\n text,\n additionalText,\n title,\n deleteConfirm,\n onDeleteConfirm,\n onConfirmDelete,\n isLoading = false,\n isMod = false,\n isBooleanButton = false,\n cancelText = 'Cancel',\n deleteText = 'Delete',\n yesText = 'Yes',\n noText = 'No',\n removeText = 'Remove',\n}) => {\n const handleDelete = async (event: React.MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n if (from === 'integration') {\n onConfirmDelete?.();\n return;\n }\n if (from === 'config') {\n onAgreementDelete?.();\n return;\n }\n if (from === 'field') {\n deleteConfirm?.();\n return;\n }\n if (from === 'fieldConfig') {\n onDeleteConfirm?.();\n return;\n }\n if (from === 'masterdata') {\n onDeleteConfirm?.();\n return;\n }\n if (from === 'attachment') {\n onDeleteConfirm?.();\n return;\n }\n if (from === 'agreement') {\n onDeleteConfirm?.();\n return;\n }\n if (from === 'analytics') {\n onDeleteConfirm?.();\n return;\n }\n if (from === 'clause') {\n onDeleteConfirm?.();\n return;\n }\n if (from === 'role') {\n onDeleteConfirm?.();\n return;\n }\n\n toast.success(systemMessages.deleteSuccess('Section'), {\n toastId: systemMessages.deleteSuccess('Section'),\n });\n onSuccessClose?.();\n };\n\n const handleCancel = () => {\n if (isLoading) return;\n onClose();\n };\n\n const footer: ReactNode = (\n <div key=\"\" className=\"flex justify-end gap-2 sm:mt-0 mt-20\">\n <Button\n id={`btn-delete-modal-${isBooleanButton ? 'no' : 'cancel'}`}\n appearance=\"outline\"\n status=\"secondary-neutral\"\n onClick={handleCancel}\n className=\"mt-10\"\n disabled={isLoading}\n >\n {isBooleanButton ? noText : cancelText}\n </Button>\n <Button\n id={`btn-delete-modal-${isBooleanButton ? 'yes' : isMod ? 'remove' : 'delete'}`}\n status=\"error\"\n onClick={handleDelete}\n className=\"mt-10\"\n disabled={isLoading}\n isLoading={isLoading}\n type=\"submit\"\n >\n {isBooleanButton ? yesText : isMod ? removeText : deleteText}\n </Button>\n </div>\n );\n\n return (\n <Modal asForm title={title} open={visible} onCancel={handleCancel} footer={footer}>\n <div className=\"mt-5 mb-8\">\n <Typography variant=\"regular\" size=\"medium\" appearance=\"body\" className=\"font-inter\">\n {text}\n {sectionName && (\n <span className=\"font-bold text-neutral-900 dark:text-neutral-100\"> {sectionName}</span>\n )}\n {suffix && <span> {suffix}</span>}\n {'?'}\n </Typography>\n {additionalText && (\n <Typography variant=\"regular\" size=\"medium\" className=\"text-neutral-700 font-inter mt-5\">\n {additionalText}\n </Typography>\n )}\n </div>\n </Modal>\n );\n};\n\n","import cn from \"classnames\";\nimport { type Change, diffWords, diffLines, diffChars } from \"diff\";\nimport { forwardRef, useMemo } from \"react\";\n\n/**\n * Available diff types for comparison\n */\nexport type DiffType = \"words\" | \"lines\" | \"chars\";\n\n/**\n * Theme variants for diff display\n */\nexport type DiffTheme = \"default\" | \"minimal\" | \"github\";\n\n/**\n * Props for the DiffViewer component\n */\nexport interface DiffViewerProps {\n /** The original/old text content */\n oldText: string;\n /** The new/updated text content */\n newText: string;\n /** Type of diff comparison to perform */\n diffType?: DiffType;\n /** Visual theme for the diff display */\n theme?: DiffTheme;\n /** Whether to show line numbers (for line diffs) */\n showLineNumbers?: boolean;\n /** Whether to enable word wrapping */\n wordWrap?: boolean;\n /** Additional CSS classes for the wrapper */\n className?: string;\n /** Additional CSS classes for diff segments */\n segmentClassName?: string;\n /** Custom styles for added content */\n addedClassName?: string;\n /** Custom styles for removed content */\n removedClassName?: string;\n /** Custom styles for unchanged content */\n unchangedClassName?: string;\n /** Whether to ignore case differences */\n ignoreCase?: boolean;\n /** Whether to ignore whitespace (for line diffs only) */\n ignoreWhitespace?: boolean;\n /** Maximum width for the diff container */\n maxWidth?: string | number;\n /** Custom aria-label for accessibility */\n \"aria-label\"?: string;\n /** Callback when diff changes are calculated */\n onDiffCalculated?: (changes: Change[]) => void;\n}\n\n/**\n * DiffViewer component displays text differences with visual highlighting\n *\n * @example\n * ```tsx\n * <DiffViewer\n * oldText=\"Hello world\"\n * newText=\"Hello beautiful world\"\n * diffType=\"words\"\n * theme=\"github\"\n * />\n * ```\n */\nexport const DiffViewer = forwardRef<HTMLDivElement, DiffViewerProps>(\n (\n {\n oldText,\n newText,\n diffType = \"words\",\n theme = \"default\",\n showLineNumbers = false,\n wordWrap = true,\n className,\n segmentClassName,\n addedClassName,\n removedClassName,\n unchangedClassName,\n ignoreCase = false,\n ignoreWhitespace = false,\n maxWidth,\n \"aria-label\": ariaLabel,\n onDiffCalculated,\n },\n ref\n ) => {\n /**\n * Calculate diff changes based on the specified type\n */\n const diffs: Change[] = useMemo(() => {\n let changes: Change[] = [];\n\n switch (diffType) {\n case \"lines\":\n changes = diffLines(oldText, newText, { ignoreWhitespace });\n break;\n case \"chars\":\n changes = diffChars(oldText, newText, { ignoreCase });\n break;\n case \"words\":\n default:\n changes = diffWords(oldText, newText, { ignoreCase });\n break;\n }\n\n onDiffCalculated?.(changes);\n return changes;\n }, [\n oldText,\n newText,\n diffType,\n ignoreCase,\n ignoreWhitespace,\n onDiffCalculated,\n ]);\n\n /**\n * Get theme-based styling classes\n */\n const getThemeClasses = (): Record<string, string> => {\n switch (theme) {\n case \"minimal\":\n return {\n added:\n \"bg-green-100 dark:bg-green-900/30 text-green-800 dark:text-green-200\",\n removed:\n \"bg-red-100 dark:bg-red-900/30 text-red-800 dark:text-red-200 line-through\",\n unchanged: \"text-neutral-700 dark:text-neutral-300\",\n };\n\n case \"github\":\n return {\n added:\n \"bg-green-50 dark:bg-green-900/20 text-green-900 dark:text-green-100 border-l-4 border-green-500 pl-2\",\n removed:\n \"bg-red-50 dark:bg-red-900/20 text-red-900 dark:text-red-100 border-l-4 border-red-500 pl-2 line-through\",\n unchanged: \"text-neutral-800 dark:text-neutral-200 pl-2\",\n };\n\n case \"default\":\n default:\n return {\n added:\n \"bg-success-100 dark:bg-success-900/70 text-success-800 dark:text-success-200 font-semibold rounded-sm px-1\",\n removed:\n \"bg-error-100 dark:bg-error-900 text-error-800 dark:text-error-200 font-semibold line-through rounded-sm px-1\",\n unchanged: \"text-neutral-700 dark:text-neutral-300\",\n };\n }\n };\n\n /**\n * Get base container classes\n */\n const getContainerClasses = (): string => {\n return cn(\n \"diff-viewer font-mono text-sm leading-relaxed\",\n wordWrap ? \"whitespace-pre-wrap\" : \"whitespace-pre overflow-x-auto\",\n theme === \"github\" &&\n \"border border-neutral-200 dark:border-neutral-700 rounded-lg\",\n theme === \"minimal\" &&\n \"border-l-2 border-neutral-200 dark:border-neutral-600 pl-4\"\n );\n };\n\n /**\n * Render line numbers if enabled\n */\n const renderWithLineNumbers = () => {\n if (!showLineNumbers || diffType !== \"lines\") return null;\n\n let lineNumber = 1;\n return (\n <div className=\"flex\">\n <div className=\"select-none text-neutral-400 dark:text-neutral-600 text-right pr-4 border-r border-neutral-200 dark:border-neutral-700\">\n {diffs.map((part, index) => {\n if (!part.added && !part.removed) {\n const lines = part.value.split(\"\\n\").length - 1;\n const numbers = Array.from(\n { length: lines },\n (_, i) => lineNumber + i\n );\n lineNumber += lines;\n return numbers.map((num, i) => (\n <div key={`${index}-${i}`} className=\"h-6\">\n {num}\n </div>\n ));\n }\n return null;\n })}\n </div>\n <div className=\"flex-1 pl-4\">{renderDiffContent()}</div>\n </div>\n );\n };\n\n /**\n * Render the main diff content\n */\n const renderDiffContent = () => {\n const themeClasses = getThemeClasses();\n\n return diffs.map((part, index) => {\n let className = \"\";\n\n if (part.added) {\n className = cn(themeClasses.added, addedClassName, segmentClassName);\n } else if (part.removed) {\n className = cn(\n themeClasses.removed,\n removedClassName,\n segmentClassName\n );\n } else {\n className = cn(\n themeClasses.unchanged,\n unchangedClassName,\n segmentClassName\n );\n }\n\n return (\n <span\n key={index}\n className={className}\n data-diff-type={\n part.added ? \"added\" : part.removed ? \"removed\" : \"unchanged\"\n }\n >\n {part.value}\n </span>\n );\n });\n };\n\n /**\n * Calculate diff statistics\n */\n const getDiffStats = () => {\n const added = diffs\n .filter((d) => d.added)\n .reduce((acc, d) => acc + d.value.length, 0);\n const removed = diffs\n .filter((d) => d.removed)\n .reduce((acc, d) => acc + d.value.length, 0);\n const unchanged = diffs\n .filter((d) => !d.added && !d.removed)\n .reduce((acc, d) => acc + d.value.length, 0);\n\n return { added, removed, unchanged, total: added + removed + unchanged };\n };\n\n const stats = getDiffStats();\n\n return (\n <div\n ref={ref}\n className={cn(getContainerClasses(), className)}\n style={{ maxWidth }}\n aria-label={\n ariaLabel ||\n `Text diff: ${stats.added} additions, ${stats.removed} deletions`\n }\n role=\"region\"\n aria-live=\"polite\"\n >\n {/* Diff Statistics (hidden by default, can be styled to show) */}\n <div className=\"sr-only\">\n Diff statistics: {stats.added} characters added, {stats.removed}{\" \"}\n characters removed, {stats.unchanged} characters unchanged.\n </div>\n\n {/* Render content with or without line numbers */}\n {showLineNumbers && diffType === \"lines\"\n ? renderWithLineNumbers()\n : renderDiffContent()}\n </div>\n );\n }\n);\n\nDiffViewer.displayName = \"DiffViewer\";\n\n/**\n * Legacy export for backward compatibility\n */\nexport const InlineDiffHighlighter = DiffViewer;\n","import React from 'react';\n\nexport interface RadioProps {\n className?: string;\n isChecked?: boolean;\n onSelect?: (e: React.MouseEvent<HTMLInputElement>) => void;\n}\nconst Radio: React.FC<RadioProps> = ({ className, isChecked, onSelect }) => {\n return (\n <input\n type='radio'\n className={className}\n id='connection'\n checked={isChecked}\n onClick={onSelect}\n ></input>\n );\n};\nexport default Radio;\n","import { type FC, type ButtonHTMLAttributes } from 'react';\nimport { BsThreeDotsVertical } from 'react-icons/bs';\n\nexport type TButtonThreeDotsProps = ButtonHTMLAttributes<HTMLButtonElement>;\nexport const ButtonThreeDots: FC<TButtonThreeDotsProps> = ({ className, disabled, ...buttonProps }) => {\n return (\n <button id={`btn-three-dots`} className='relative w-10 flex justify-center' {...buttonProps}>\n <BsThreeDotsVertical\n size={18}\n className={`text-neutral-500 dark:text-black-200 hover:text-neutral-700 dark:hover:text-neutral-400 ${\n disabled ? 'opacity-50' : ''\n } ${className || ''}`}\n />\n </button>\n );\n};\n","import React, { type ReactNode } from 'react';\n\nexport interface ButtonGroupProps {\n children: ReactNode;\n variant: 'group' | 'ungroup';\n}\n\nexport const ButtonGroup: React.FC<ButtonGroupProps> = ({ children, variant }) => {\n return (\n <div\n className={`inline-flex ${\n variant === 'group' ? 'border border-neutral-300 divide-x rounded-lg' : 'gap-2'\n }`}\n >\n {children}\n </div>\n );\n};\n","import { useEffect } from \"react\";\n\n/**\n * Hook that scrolls to the top of the page when dependencies change\n * @param deps - Array of dependencies to trigger scroll\n */\nexport const useScrollToTop = (deps: unknown[] = []) => {\n useEffect(() => {\n window.scrollTo(0, 0);\n }, deps);\n};\n\n","function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n for (const classGroupId in classGroups) {\n processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + MODIFIER_SEPARATOR_LENGTH;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n } else if (currentCharacter === '(') {\n parenDepth++;\n } else if (currentCharacter === ')') {\n parenDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);\n const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {\n isExternal: true,\n modifiers: [],\n hasImportantModifier: false,\n baseClassName: className,\n maybePostfixModifierPosition: undefined\n };\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\nconst stripImportantModifier = baseClassName => {\n if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(0, baseClassName.length - 1);\n }\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(1);\n }\n return baseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));\n const sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];\n if (isPositionSensitive) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n };\n return sortModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","/**\n * Layout-related constants\n */\n\n/**\n * Available page modes\n */\nexport enum MODES {\n COMPARISON = \"comparison\",\n EDIT = \"edit\",\n FOCUS_EDIT = \"focusEdit\",\n}\n\n/**\n * Animation duration for layout transitions in milliseconds\n */\nexport const OPEN_DURATION_MS = 500;\n\n","import { type ReactNode, useMemo } from \"react\";\nimport { cn } from \"../../lib/utils\";\nimport { Banner } from \"../data-display/banner/Banner\";\nimport { HelmetTitle } from \"./HelmetTitle\";\nimport { useScrollToTop } from \"../../hooks/useScrollToTop\";\nimport { MODES, OPEN_DURATION_MS } from \"../../constants/layout\";\n\n/**\n * Props for the PageContainer component\n */\nexport interface PageContainerProps {\n /** Page title for document head */\n title?: string;\n /** Main content to render */\n children: ReactNode;\n /** Current page mode (edit, comparison, etc.) */\n mode?: string | null;\n /** Display ID for edit mode banner */\n displayId?: string | null;\n /** Disable padding on the content area */\n noPadding?: boolean;\n /** Additional CSS classes for the container */\n className?: string;\n /** Hide the banner even if mode/displayId would show it */\n noBanner?: boolean;\n /** Additional CSS classes for the content area */\n contentClassName?: string;\n /** Callback when banner is clicked */\n onBannerClick?: () => void;\n /** Enable scroll to top on mount */\n scrollToTopOnMount?: boolean;\n}\n\n/**\n * PageContainer component provides a consistent layout wrapper for pages\n *\n * Features:\n * - Automatic height calculation\n * - Mode-based banners (edit/comparison)\n * - Flexible content area\n * - Dark mode support\n * - Smooth transitions\n *\n * @example\n * ```tsx\n * <PageContainer\n * title=\"Dashboard\"\n * mode=\"edit\"\n * displayId=\"AGR-123\"\n * >\n * <YourContent />\n * </PageContainer>\n * ```\n */\nexport const PageContainer = ({\n title,\n children,\n mode,\n displayId,\n noPadding = false,\n className,\n noBanner = false,\n contentClassName,\n onBannerClick,\n scrollToTopOnMount = true,\n}: PageContainerProps) => {\n // Scroll to top when component mounts or when scrollToTopOnMount changes\n useScrollToTop(scrollToTopOnMount ? [] : undefined);\n\n // Determine the current mode\n const currentMode = useMemo(() => {\n if (mode === MODES.EDIT || mode === MODES.FOCUS_EDIT) {\n return \"edit\";\n }\n if (mode === MODES.COMPARISON) {\n return \"compare\";\n }\n return null;\n }, [mode]);\n\n // Determine if banner should be visible\n const isBannerVisible = useMemo(() => {\n return (\n ((currentMode === \"edit\" && displayId) || currentMode === \"compare\") &&\n !noBanner\n );\n }, [currentMode, displayId, noBanner]);\n\n // Get banner message and status\n const bannerConfig = useMemo(() => {\n if (currentMode === \"edit\" && displayId) {\n return {\n status: \"warning\" as const,\n message: `You're currently editing ${displayId}`,\n };\n }\n if (currentMode === \"compare\") {\n return {\n status: \"success\" as const,\n message: \"You are now in Comparison Mode\",\n };\n }\n return null;\n }, [currentMode, displayId]);\n\n return (\n <>\n <HelmetTitle title={title} />\n <div\n className={cn(\n \"relative h-[calc(100vh-56px)] overflow-y-auto flex flex-col bg-primary-800 dark:bg-black-800\",\n `ease-in-out duration-${OPEN_DURATION_MS}`,\n className\n )}\n >\n {/* Banner */}\n {isBannerVisible && bannerConfig && (\n <Banner\n status={bannerConfig.status}\n // // onClick={onBannerClick}\n // expandable={false}\n >\n {bannerConfig.message}\n </Banner>\n )}\n\n {/* Content Area */}\n <div\n className={cn(\n \"flex-1 overflow-y-auto overflow-x-hidden bg-gray-50 dark:bg-black-700\",\n noPadding ? \"p-0\" : \"p-4\",\n isBannerVisible ? \"rounded-tl-none\" : \"!rounded-tl-xl\",\n contentClassName\n )}\n id=\"app-body-container\"\n >\n {children}\n </div>\n </div>\n </>\n );\n};\n\nPageContainer.displayName = \"PageContainer\";\n\n","import type { FC, ReactNode } from \"react\";\nimport { Helmet as _Helmet } from \"react-helmet-async\";\n\ntype TMeta = {\n name: string;\n content: string;\n};\n\n/**\n * Props for the Helmet component\n */\nexport interface HelmetProps {\n /** The document title to set */\n title: string;\n /** Optional meta tag configuration */\n meta?: TMeta;\n /** Additional children to render within Helmet */\n children?: ReactNode;\n}\n\n/**\n * Helmet component for managing document head metadata\n *\n * Note: Requires react-helmet-async to be installed and configured\n * in the parent application with HelmetProvider.\n *\n * @example\n * ```tsx\n * <Helmet title=\"Dashboard\" meta={{ name: \"description\", content: \"Dashboard page\" }} />\n * ```\n */\nexport const Helmet: FC<HelmetProps> = ({ title, meta, children }) => (\n <_Helmet>\n <title>{title}</title>\n {meta && <meta {...meta} />}\n {children}\n </_Helmet>\n);\n\nHelmet.displayName = \"Helmet\";\n\n","import type { FC } from \"react\";\n\n/**\n * Props for the ComponentLoader component\n */\nexport interface ComponentLoaderProps {\n /** Additional CSS classes for the wrapper */\n className?: string;\n /** Label text to display above the loader */\n label: string;\n}\n\n/**\n * ComponentLoader displays a loading indicator with a label\n *\n * @example\n * ```tsx\n * <ComponentLoader label=\"Loading...\" />\n * <ComponentLoader label=\"Loading data\" className=\"my-4\" />\n * ```\n */\nexport const ComponentLoader: FC<ComponentLoaderProps> = ({\n className,\n label,\n}) => {\n return (\n <div className={className}>\n <div className=\"font-bold text-xl mr-2\">{label}</div>\n <div className=\"mb-2 flex justify-center w-full\">\n <div className=\"flex items-center justify-center\">\n <div className=\"animate-spin rounded-full h-8 w-8 border-b-2 border-primary-600 dark:border-primary-400\"></div>\n </div>\n </div>\n </div>\n );\n};\n\nComponentLoader.displayName = \"ComponentLoader\";\n\n","import cn from \"classnames\";\nimport type { FC } from \"react\";\n\ntype ClassValue = string | number | boolean | undefined | null | ClassValue[];\n\n/**\n * Props for the LogoLoader component\n */\nexport interface LogoLoaderProps {\n /** Additional CSS classes for the wrapper */\n classValue?: ClassValue;\n /** Whether dark mode is enabled */\n isDarkMode: boolean;\n}\n\nconst LightLogo = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n width=\"300\"\n height=\"200\"\n viewBox=\"0 0 300 200\"\n >\n <defs>\n <style>\n {`\n @keyframes offset_one_light {\n 24%, 60% {\n stroke-dashoffset: 0;\n }\n 84%, 100% {\n stroke-dashoffset: 770;\n }\n }\n\n @keyframes offset_two_light {\n 24% {\n stroke-dashoffset: 220;\n }\n 38%, 70% {\n stroke-dashoffset: 0;\n }\n 84%, 100% {\n stroke-dashoffset: 220;\n }\n }\n \n @keyframes slide_light {\n 0% {\n transform: translateX(-45px);\n }\n 100% {\n transform: translateX(220px);\n }\n }\n `}\n </style>\n\n {/* Gradient for loading bar */}\n <linearGradient id=\"loaderGradient\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop\n offset=\"0%\"\n stopColor=\"var(--color-primary-500)\"\n stopOpacity=\"1\"\n />\n <stop\n offset=\"50%\"\n stopColor=\"var(--color-primary-300)\"\n stopOpacity=\"1\"\n />\n <stop\n offset=\"100%\"\n stopColor=\"var(--color-primary-500)\"\n stopOpacity=\"1\"\n />\n </linearGradient>\n\n {/* Gradient for glow with faded edges */}\n <linearGradient id=\"glowGradient\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop\n offset=\"0%\"\n stopColor=\"var(--color-primary-200)\"\n stopOpacity=\"0\"\n />\n <stop\n offset=\"20%\"\n stopColor=\"var(--color-primary-200)\"\n stopOpacity=\"1\"\n />\n <stop\n offset=\"80%\"\n stopColor=\"var(--color-primary-200)\"\n stopOpacity=\"1\"\n />\n <stop\n offset=\"100%\"\n stopColor=\"var(--color-primary-200)\"\n stopOpacity=\"0\"\n />\n </linearGradient>\n\n {/* Clean glow filter */}\n <filter\n id=\"barGlow\"\n filterUnits=\"userSpaceOnUse\"\n x=\"0\"\n y=\"100\"\n width=\"300\"\n height=\"80\"\n >\n <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"8\" result=\"blur\" />\n </filter>\n\n {/* Logo Clip Paths */}\n <clipPath id=\"SVGID_2_\">\n <path d=\"M161.3,212.3c-0.8,9.1-4.4,14.2-8,17.1c-5.3,4.2-12.7,4-17.9-0.3c-11.6-9.7-18.9-34.2-20.6-40.7 c0-0.1-0.1-0.3-0.1-0.4c0-0.2-0.1-0.4-0.1-0.5c0-0.2-0.1-0.3-0.1-0.5c0-0.1-0.1-0.2-0.1-0.4l0,0c-8.2-34.3-15.5-68.8-23.8-103.1 c-3.9-16.1-12.9-46.9-16.4-58.5c-1.8-6.2-5.1-11.8-9.6-16.3c-3.2-3.1-7.2-6-12.3-7.5c0,0,0,0-0.1,0l0,0c-0.3-0.1-0.6-0.2-1-0.2 C38.5-2.1,25.5,3.1,17.7,13.5c-4.3,5.8-6.4,11.6-7.2,14.2c-0.5,1.5-0.9,3.1-1.2,4.7c-1.6,7.4-2.2,15.1-2.5,23h5.1 c0,0,3.4-12.9,6-18.5c8.1-17,29.3-18.9,40.5-3.8c2.8,3.8,5.5,8.1,6.9,12.6c4.1,12.5,7.6,25.1,11,37.8c0.6,2.4,0.1,5.6-1,7.9 C53.2,139.9,22.1,207.5,0,256h33.9c0,0,36.1-82.3,53.8-122.9c6.3,26.2,11.3,52.2,17.9,78.2c2.1,8.2,4.7,16.4,7.9,24.3 c0,0,0,0,0,0.1c0,0,0,0,0,0.1c0.2,0.6,1.1,3,2.7,6c3.6,6.9,10.7,14.3,21.4,14.3c25.5,0,29-43.7,29-43.7L161.3,212.3L161.3,212.3z\" />\n </clipPath>\n\n <clipPath id=\"SVGID_4_\">\n <path d=\"M216.4,255.9h-10.7l-10.6-15.7L185,255.9h-10.8l15.7-22.5L175,212.2h10.7l9.7,14.6l9.4-14.6h10.8l-14.8,21.4L216.4,255.9z\" />\n </clipPath>\n\n {/* Clip path for loader */}\n <clipPath id=\"loaderClip\">\n <rect x=\"40\" y=\"135\" width=\"220\" height=\"3\" rx=\"1.5\" />\n </clipPath>\n\n {/* Clip path for glow (full track width) */}\n <clipPath id=\"glowClip\">\n <rect x=\"40\" y=\"0\" width=\"220\" height=\"200\" />\n </clipPath>\n </defs>\n\n {/* Logo (closer to loading bar) */}\n <g\n style={{ filter: \"drop-shadow(0 2px 8px rgba(0, 0, 0, 0.1))\" }}\n transform=\"translate(135, 65) scale(0.17)\"\n >\n <g style={{ clipPath: \"url(#SVGID_2_)\" }}>\n <path\n style={{\n fill: \"none\",\n stroke: \"#1a1a1a\",\n strokeWidth: 38,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeMiterlimit: 10,\n strokeDasharray: 770,\n strokeDashoffset: 770,\n animation: \"offset_one_light 3.5s ease-out infinite\",\n }}\n d=\"M6.7,65.7l8.3-38l15.3-14h27.3l-1.3-2.2c4.7,3.1,9,6.8,12.7,10.7C79.4,33,86.5,46.6,90,61.2l17.6,72.8l15.4,72 l4.8,23.8l14.3,17.7l13.7-28l2.2-19.3L106,62.7L13.5,263\"\n />\n </g>\n <g style={{ clipPath: \"url(#SVGID_4_)\" }}>\n <polyline\n style={{\n fill: \"none\",\n stroke: \"var(--color-primary-600)\",\n strokeWidth: 9,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeMiterlimit: 10,\n strokeDasharray: 220,\n strokeDashoffset: 220,\n animation: \"offset_two_light 3.5s ease-out infinite\",\n }}\n points=\"176.8,207.2 212.8,258 221.5,258 221.5,196.3 176,260\"\n />\n </g>\n </g>\n\n {/* Loading Bar Track */}\n <rect\n x=\"40\"\n y=\"135\"\n width=\"220\"\n height=\"3\"\n rx=\"2\"\n fill=\"rgba(0, 0, 0, 0.12)\"\n />\n\n {/* Glow layer (clipped on sides only) */}\n <g clipPath=\"url(#glowClip)\">\n <rect\n style={{ animation: \"slide_light 2.5s linear infinite\" }}\n x=\"40\"\n y=\"135.5\"\n width=\"45\"\n height=\"2\"\n rx=\"1\"\n fill=\"var(--color-primary-200)\"\n filter=\"url(#barGlow)\"\n opacity=\"0.6\"\n />\n </g>\n\n {/* Main gradient bar (clipped) */}\n <g clipPath=\"url(#loaderClip)\">\n <rect\n style={{ animation: \"slide_light 2.5s linear infinite\" }}\n x=\"40\"\n y=\"135\"\n width=\"45\"\n height=\"3\"\n rx=\"1.5\"\n fill=\"url(#loaderGradient)\"\n />\n </g>\n </svg>\n );\n};\n\nconst DarkLogo = () => {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n xmlnsXlink=\"http://www.w3.org/1999/xlink\"\n width=\"300\"\n height=\"200\"\n viewBox=\"0 0 300 200\"\n >\n <defs>\n <style>\n {`\n @keyframes offset_one_dark {\n 24%, 60% {\n stroke-dashoffset: 0;\n }\n 84%, 100% {\n stroke-dashoffset: 770;\n }\n }\n\n @keyframes offset_two_dark {\n 24% {\n stroke-dashoffset: 220;\n }\n 38%, 70% {\n stroke-dashoffset: 0;\n }\n 84%, 100% {\n stroke-dashoffset: 220;\n }\n }\n \n @keyframes slide_dark {\n 0% {\n transform: translateX(-45px);\n }\n 100% {\n transform: translateX(220px);\n }\n }\n `}\n </style>\n\n {/* Gradient for loading bar */}\n <linearGradient\n id=\"loaderGradientDark\"\n x1=\"0%\"\n y1=\"0%\"\n x2=\"100%\"\n y2=\"0%\"\n >\n <stop\n offset=\"0%\"\n stopColor=\"var(--color-primary-500)\"\n stopOpacity=\"1\"\n />\n <stop\n offset=\"50%\"\n stopColor=\"var(--color-primary-300)\"\n stopOpacity=\"1\"\n />\n <stop\n offset=\"100%\"\n stopColor=\"var(--color-primary-500)\"\n stopOpacity=\"1\"\n />\n </linearGradient>\n\n {/* Gradient for glow with faded edges */}\n <linearGradient\n id=\"glowGradientDark\"\n x1=\"0%\"\n y1=\"0%\"\n x2=\"100%\"\n y2=\"0%\"\n >\n <stop\n offset=\"0%\"\n stopColor=\"var(--color-primary-200)\"\n stopOpacity=\"0\"\n />\n <stop\n offset=\"20%\"\n stopColor=\"var(--color-primary-200)\"\n stopOpacity=\"1\"\n />\n <stop\n offset=\"80%\"\n stopColor=\"var(--color-primary-200)\"\n stopOpacity=\"1\"\n />\n <stop\n offset=\"100%\"\n stopColor=\"var(--color-primary-200)\"\n stopOpacity=\"0\"\n />\n </linearGradient>\n\n {/* Clean glow filter */}\n <filter\n id=\"barGlowDark\"\n filterUnits=\"userSpaceOnUse\"\n x=\"0\"\n y=\"100\"\n width=\"300\"\n height=\"80\"\n >\n <feGaussianBlur in=\"SourceGraphic\" stdDeviation=\"8\" result=\"blur\" />\n </filter>\n\n {/* Logo Clip Paths */}\n <clipPath id=\"SVGID_2_dark\">\n <path d=\"M161.3,212.3c-0.8,9.1-4.4,14.2-8,17.1c-5.3,4.2-12.7,4-17.9-0.3c-11.6-9.7-18.9-34.2-20.6-40.7 c0-0.1-0.1-0.3-0.1-0.4c0-0.2-0.1-0.4-0.1-0.5c0-0.2-0.1-0.3-0.1-0.5c0-0.1-0.1-0.2-0.1-0.4l0,0c-8.2-34.3-15.5-68.8-23.8-103.1 c-3.9-16.1-12.9-46.9-16.4-58.5c-1.8-6.2-5.1-11.8-9.6-16.3c-3.2-3.1-7.2-6-12.3-7.5c0,0,0,0-0.1,0l0,0c-0.3-0.1-0.6-0.2-1-0.2 C38.5-2.1,25.5,3.1,17.7,13.5c-4.3,5.8-6.4,11.6-7.2,14.2c-0.5,1.5-0.9,3.1-1.2,4.7c-1.6,7.4-2.2,15.1-2.5,23h5.1 c0,0,3.4-12.9,6-18.5c8.1-17,29.3-18.9,40.5-3.8c2.8,3.8,5.5,8.1,6.9,12.6c4.1,12.5,7.6,25.1,11,37.8c0.6,2.4,0.1,5.6-1,7.9 C53.2,139.9,22.1,207.5,0,256h33.9c0,0,36.1-82.3,53.8-122.9c6.3,26.2,11.3,52.2,17.9,78.2c2.1,8.2,4.7,16.4,7.9,24.3 c0,0,0,0,0,0.1c0,0,0,0,0,0.1c0.2,0.6,1.1,3,2.7,6c3.6,6.9,10.7,14.3,21.4,14.3c25.5,0,29-43.7,29-43.7L161.3,212.3L161.3,212.3z\" />\n </clipPath>\n\n <clipPath id=\"SVGID_4_dark\">\n <path d=\"M216.4,255.9h-10.7l-10.6-15.7L185,255.9h-10.8l15.7-22.5L175,212.2h10.7l9.7,14.6l9.4-14.6h10.8l-14.8,21.4L216.4,255.9z\" />\n </clipPath>\n\n {/* Clip path for loader */}\n <clipPath id=\"loaderClipDark\">\n <rect x=\"40\" y=\"135\" width=\"220\" height=\"3\" rx=\"1.5\" />\n </clipPath>\n\n {/* Clip path for glow (full track width) */}\n <clipPath id=\"glowClipDark\">\n <rect x=\"40\" y=\"0\" width=\"220\" height=\"200\" />\n </clipPath>\n </defs>\n\n {/* Logo (closer to loading bar) */}\n <g\n style={{ filter: \"drop-shadow(0 0 15px rgba(0, 85, 187, 0.15))\" }}\n transform=\"translate(135, 65) scale(0.17)\"\n >\n <g style={{ clipPath: \"url(#SVGID_2_dark)\" }}>\n <path\n style={{\n fill: \"none\",\n stroke: \"#ffffff\",\n strokeWidth: 38,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeMiterlimit: 10,\n strokeDasharray: 770,\n strokeDashoffset: 770,\n animation: \"offset_one_dark 3.5s ease-out infinite\",\n }}\n d=\"M6.7,65.7l8.3-38l15.3-14h27.3l-1.3-2.2c4.7,3.1,9,6.8,12.7,10.7C79.4,33,86.5,46.6,90,61.2l17.6,72.8l15.4,72 l4.8,23.8l14.3,17.7l13.7-28l2.2-19.3L106,62.7L13.5,263\"\n />\n </g>\n <g style={{ clipPath: \"url(#SVGID_4_dark)\" }}>\n <polyline\n style={{\n fill: \"none\",\n stroke: \"var(--color-primary-600)\",\n strokeWidth: 9,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeMiterlimit: 10,\n strokeDasharray: 220,\n strokeDashoffset: 220,\n animation: \"offset_two_dark 3.5s ease-out infinite\",\n }}\n points=\"176.8,207.2 212.8,258 221.5,258 221.5,196.3 176,260\"\n />\n </g>\n </g>\n\n {/* Loading Bar Track */}\n <rect\n x=\"40\"\n y=\"135\"\n width=\"220\"\n height=\"3\"\n rx=\"2\"\n fill=\"rgba(255, 255, 255, 0.1)\"\n />\n\n {/* Glow layer (clipped on sides only) */}\n <g clipPath=\"url(#glowClipDark)\">\n <rect\n style={{ animation: \"slide_dark 2.5s linear infinite\" }}\n x=\"40\"\n y=\"135.5\"\n width=\"45\"\n height=\"2\"\n rx=\"1\"\n fill=\"var(--color-primary-200)\"\n filter=\"url(#barGlowDark)\"\n opacity=\"0.8\"\n />\n </g>\n\n {/* Main gradient bar (clipped) */}\n <g clipPath=\"url(#loaderClipDark)\">\n <rect\n style={{ animation: \"slide_dark 2.5s linear infinite\" }}\n x=\"40\"\n y=\"135\"\n width=\"45\"\n height=\"3\"\n rx=\"1.5\"\n fill=\"url(#loaderGradientDark)\"\n />\n </g>\n </svg>\n );\n};\n\n/**\n * LogoLoader displays an animated LAX logo with a loading bar\n *\n * @example\n * ```tsx\n * <LogoLoader isDarkMode={false} />\n * <LogoLoader isDarkMode={true} classValue=\"h-screen\" />\n * ```\n */\nexport const LogoLoader: FC<LogoLoaderProps> = ({ classValue, isDarkMode }) => {\n return (\n <div className={`${cn(classValue)} flex justify-center items-center`}>\n {isDarkMode ? <DarkLogo /> : <LightLogo />}\n </div>\n );\n};\n\nLogoLoader.displayName = \"LogoLoader\";\n\n","import { forwardRef } from \"react\";\nimport { Typography } from \"../../data-display/typography/Typography\";\n\n/**\n * Breadcrumb item data structure\n */\nexport interface TBreadCrumbItem {\n /** Unique identifier for the item */\n id?: string | number;\n /** Display title for the breadcrumb item */\n title: string;\n /** Navigation link URL */\n link?: string;\n /** Optional source for navigation state */\n source?: string;\n}\n\n/**\n * Props for the BreadCrumbItem component\n */\nexport interface BreadCrumbItemProps {\n /** The breadcrumb item data */\n item: TBreadCrumbItem;\n /** Visual variant of the breadcrumb */\n variant?: \"primary\" | \"secondary\";\n /** Whether this is the last item in the breadcrumb trail */\n isLastItem?: boolean;\n /** Click handler when the item is clicked */\n onClick?: (id: string | number) => void;\n}\n\n/**\n * BreadCrumbItem component displays a single breadcrumb item with appropriate styling\n *\n * @example\n * ```tsx\n * <BreadCrumbItem\n * item={{ id: \"1\", title: \"Home\", link: \"/\" }}\n * variant=\"primary\"\n * isLastItem={false}\n * />\n * ```\n */\nexport const BreadCrumbItem = forwardRef<HTMLDivElement, BreadCrumbItemProps>(\n ({ item, variant, isLastItem = false, onClick }, ref) => {\n const getTextColor = () => {\n if (variant === \"secondary\") {\n return isLastItem\n ? \"text-neutral-900 dark:text-primary-500\"\n : \"text-neutral-400 dark:text-neutral-400 hover:text-neutral-900 dark:hover:text-neutral-300\";\n } else {\n return isLastItem\n ? \"text-white\"\n : \"text-primary-200 dark:text-neutral-400 hover:text-white\";\n }\n };\n\n const handleClick = () => {\n onClick?.(item?.id || \"\");\n };\n\n return (\n <div ref={ref} className=\"min-w-0 w-full\">\n <Typography\n size=\"small\"\n variant=\"medium\"\n className={`flex items-center ${getTextColor()} cursor-pointer min-w-0 ${\n !isLastItem\n ? variant === \"secondary\"\n ? \"hover:bg-neutral-200 dark:hover:bg-neutral-600\"\n : \"hover:bg-primary-400 dark:hover:bg-neutral-600\"\n : \"\"\n } px-1 py-0.5 rounded transition-colors duration-200`}\n appearance=\"custom\"\n onClick={handleClick}\n >\n <span className=\"truncate min-w-0 block\">{item?.title}</span>\n </Typography>\n </div>\n );\n }\n);\n\nBreadCrumbItem.displayName = \"BreadCrumbItem\";\n\n","import { Tooltip } from \"antd\";\nimport type { FC, ReactNode } from \"react\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { BreadCrumbItem, type TBreadCrumbItem } from \"./BreadCrumbItem\";\n\n/**\n * Arrow icon for breadcrumb separators\n */\n\nexport const ArrowBreadCums = ({\n fill = '#D9D9D9',\n size = 20,\n className,\n}: {\n fill?: string;\n size?: number;\n className?: string;\n}) => (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width={size}\n height={size}\n viewBox='0 0 20 20'\n fill={fill}\n className={className}\n >\n <path\n d='M7.25001 14.4167C7.09723 14.2639 7.02084 14.0694 7.02084 13.8333C7.02084 13.5972 7.09723 13.4028 7.25001 13.25L10.5 9.99999L7.25001 6.74999C7.09723 6.59721 7.02084 6.40277 7.02084 6.16666C7.02084 5.93055 7.09723 5.7361 7.25001 5.58332C7.40279 5.43055 7.59723 5.35416 7.83334 5.35416C8.06945 5.35416 8.2639 5.43055 8.41668 5.58332L12.25 9.41666C12.3333 9.49999 12.3925 9.59027 12.4275 9.68749C12.462 9.78471 12.4792 9.88888 12.4792 9.99999C12.4792 10.1111 12.462 10.2153 12.4275 10.3125C12.3925 10.4097 12.3333 10.5 12.25 10.5833L8.41668 14.4167C8.2639 14.5694 8.06945 14.6458 7.83334 14.6458C7.59723 14.6458 7.40279 14.5694 7.25001 14.4167Z'\n fill={fill}\n />\n </svg>\n);\n\n\n/**\n * Props for the BreadCrumb component\n */\nexport interface BreadCrumbProps {\n /** Array of breadcrumb items to display */\n items: TBreadCrumbItem[];\n /** Visual variant of the breadcrumb */\n variant?: \"primary\" | \"secondary\";\n /** Click handler when a breadcrumb item is clicked */\n onClick?: (id: string | number) => void;\n /**\n * Custom link renderer for navigation\n * Allows integration with any routing library (react-router, next/link, etc.)\n * If not provided, items will be rendered as clickable divs\n */\n renderLink?: (\n item: TBreadCrumbItem,\n children: ReactNode,\n isLastItem: boolean\n ) => ReactNode;\n}\n\n/**\n * BreadCrumb component displays a navigation trail with animated items\n *\n * @example\n * ```tsx\n * // Basic usage with onClick handler\n * <BreadCrumb\n * items={[\n * { id: \"1\", title: \"Home\" },\n * { id: \"2\", title: \"Products\" },\n * { id: \"3\", title: \"Product Details\" }\n * ]}\n * onClick={(id) => navigate(id)}\n * />\n *\n * // With custom link renderer (e.g., react-router)\n * <BreadCrumb\n * items={items}\n * renderLink={(item, children) => (\n * <Link to={item.link || \"/\"}>{children}</Link>\n * )}\n * />\n * ```\n */\nexport const BreadCrumb: FC<BreadCrumbProps> = ({\n items,\n variant = \"primary\",\n onClick,\n renderLink,\n}) => {\n const itemRefs = useRef<HTMLDivElement[]>([]);\n const [truncateStates, setTruncateStates] = useState<boolean[]>([]);\n\n useEffect(() => {\n const updateTruncateStates = () => {\n const newTruncateStates =\n itemRefs?.current?.map((ref: HTMLDivElement | null) => {\n if (!ref) return false;\n const textElement =\n ref.querySelector(\"span\") ||\n ref.querySelector('[class*=\"truncate\"]') ||\n ref;\n if (!textElement) return false;\n return textElement.scrollWidth > textElement.clientWidth;\n }) || [];\n setTruncateStates(newTruncateStates);\n };\n const timer = setTimeout(updateTruncateStates, 100);\n window.addEventListener(\"resize\", updateTruncateStates);\n let resizeObserver: ResizeObserver | null = null;\n if (window.ResizeObserver && itemRefs.current.length > 0) {\n resizeObserver = new ResizeObserver(() => {\n setTimeout(updateTruncateStates, 10);\n });\n itemRefs.current.forEach((ref) => {\n if (ref) resizeObserver?.observe(ref);\n });\n }\n\n return () => {\n clearTimeout(timer);\n window.removeEventListener(\"resize\", updateTruncateStates);\n if (resizeObserver) {\n resizeObserver.disconnect();\n }\n };\n }, [items]);\n\n const renderBreadcrumbItem = (\n item: TBreadCrumbItem,\n index: number\n ): ReactNode => {\n const isLastItem = index === items?.length - 1;\n const breadcrumbItemElement = (\n <BreadCrumbItem\n item={item}\n variant={variant}\n isLastItem={isLastItem}\n onClick={onClick}\n />\n );\n\n if (item?.link && renderLink) {\n return (\n <Tooltip\n title={truncateStates[index] ? item?.title : \"\"}\n placement=\"bottom\"\n >\n {renderLink(item, breadcrumbItemElement, isLastItem)}\n </Tooltip>\n );\n }\n\n return (\n <Tooltip\n title={truncateStates[index] ? item?.title : \"\"}\n placement=\"bottom\"\n >\n <div>{breadcrumbItemElement}</div>\n </Tooltip>\n );\n };\n\n return (\n <div className=\"flex items-center justify-start min-w-0 w-full overflow-hidden animate-fade-in gap-1 pr-2\">\n {items.map((item: TBreadCrumbItem, index: number) => (\n <div\n className=\"flex items-center min-w-0 animate-slide-in-left\"\n style={{\n animationDelay: `${index * 100}ms`,\n animationFillMode: \"both\",\n flexShrink:\n index === 0 ? 0.2 : index === 1 ? 0.4 : index === 2 ? 0.6 : 1,\n }}\n key={index}\n >\n <div\n className={`min-w-0 flex-1 ${\n index === 0\n ? \"max-w-none\"\n : index === 1\n ? \"max-w-80 sm:max-w-96 md:max-w-none lg:max-w-none xl:max-w-none\"\n : index === 2\n ? \"max-w-64 sm:max-w-80 md:max-w-96 lg:max-w-none xl:max-w-none\"\n : \"max-w-32 sm:max-w-48 md:max-w-64 lg:max-w-80 xl:max-w-96\"\n }`}\n ref={(el) => (itemRefs.current[index] = el as HTMLDivElement)}\n >\n {renderBreadcrumbItem(item, index)}\n </div>\n\n {/* Arrow separator */}\n {index < items?.length - 1 && (\n <div className=\"flex-shrink-0 mx-2\">\n <ArrowBreadCums\n size={variant === \"secondary\" ? 14 : 20}\n className={\n variant === \"secondary\"\n ? \"text-primary-400 dark:text-primary-400\"\n : \"text-primary-400 dark:text-primary-400\"\n }\n />\n </div>\n )}\n </div>\n ))}\n </div>\n );\n};\n\nBreadCrumb.displayName = \"BreadCrumb\";\n\n","import cn from \"classnames\";\nimport type { FC, ReactNode } from \"react\";\n\n/**\n * Props for the Divider component\n */\nexport interface DividerProps {\n /** Optional content to display in the center of the divider */\n children?: ReactNode;\n /** Additional CSS classes */\n className?: string;\n}\n\n/**\n * Divider component displays a horizontal line with optional centered content\n *\n * @example\n * ```tsx\n * <Divider />\n * <Divider>OR</Divider>\n * <Divider className=\"my-4\">Section</Divider>\n * ```\n */\nexport const Divider: FC<DividerProps> = ({ children, className }) => {\n const dividerClasses = cn(\n `w-full justify-center items-center ${children ? \"gap-1\" : \"gap-0\"} inline-flex`,\n className\n );\n\n return (\n <div className={dividerClasses}>\n <div className=\"grow shrink basis-0 h-[1px] border border-gray-200 dark:border-neutral-700\"></div>\n {children && (\n <div className=\"text-gray-400 text-xs font-medium uppercase tracking-tight\">\n {children}\n </div>\n )}\n <div className=\"grow shrink basis-0 h-[1px] border border-gray-200 dark:border-neutral-700\"></div>\n </div>\n );\n};\n\nDivider.displayName = \"Divider\";\n\n","import { Skeleton as AntdSkeleton } from \"antd\";\nimport type { FC } from \"react\";\n\n/**\n * Props for the Skeleton component\n */\nexport interface SkeletonProps {\n /** Whether to show animation */\n active?: boolean;\n}\n\n/**\n * Skeleton component displays a placeholder loading state\n *\n * @example\n * ```tsx\n * <Skeleton />\n * <Skeleton active={false} />\n * ```\n */\nexport const Skeleton: FC<SkeletonProps> = ({ active = true }) => (\n <AntdSkeleton active={active} />\n);\n\nSkeleton.displayName = \"Skeleton\";\n\n","export const VARIANTS = {\n grey: {\n main: 'rgb(237 237 237)',\n gradient: 'rgb(230 230 230)',\n },\n dark: {\n main: 'rgb(80 80 80)',\n gradient: 'rgb(60 60 60)',\n },\n};\n\nexport const DEFAULT_SKELETON_WIDTH = '100%';\nexport const DEFAULT_GRID_CONTAINER_WIDTH = '1fr';\nexport const DEFAULT_HEIGHT = '100%';\nexport const DEFAULT_DIRECTION_GRID_COLS = 'row';\nexport const DEFAULT_JUSTIFY_ALIGNMENT = 'flex-start';\nexport const DEFAULT_ALIGN_ITEMS_ALIGNMENT = 'flex-start';\nexport const DEFAULT_GRID_STYLE = '1fr / 1fr';\nexport const DEFAULT_GAP = 10;\nexport const DEFAULT_REPEAT_COUNT = 0;\nexport const DEFAULT_VARIANT = 'grey';\nexport const DEFAULT_SKELETON_GRADIENT_WIDTH = 100;\n\n","export const enum DIRECTION {\n row = 'row',\n column = 'column',\n}\n\n","import { DEFAULT_GRID_CONTAINER_WIDTH } from './constants';\nimport { SkeletonsType } from './types';\n\nexport const generateMargin = (\n marginProp: Array<number | string> | number,\n directionProp?: 'right' | 'center' | 'left',\n) => {\n let margin = '0px';\n let direction;\n const marginDetect = () => {\n return (marginProp as Array<string | number>).reduce((acc, item) => {\n acc += typeof item === 'number' ? item + 'px ' : item + ' ';\n return acc;\n }, '') as string;\n };\n if (Array.isArray(marginProp) || !isNaN(marginProp as number)) {\n margin = typeof marginProp === 'number' ? marginProp + 'px' : marginDetect() || '0px';\n }\n if (directionProp) {\n direction = {\n ...(directionProp === 'center'\n ? {\n marginLeft: 'auto',\n marginRight: 'auto',\n }\n : {}),\n [directionProp === 'right' ? 'marginLeft' : 'marginRight']: 'auto',\n };\n }\n return {\n margin,\n ...direction,\n };\n};\n\nexport const generateGridArea = (row: { w: string | number }[]) =>\n row.reduce((acc, item) => {\n acc += Array.isArray(item) ? DEFAULT_GRID_CONTAINER_WIDTH : item.w + ' ';\n return acc;\n }, '1fr / ');\n\nexport const itemsWithRepeat = (skeletons: SkeletonsType, repeatCount: number): SkeletonsType => {\n return repeatCount > 0 ? [].constructor(repeatCount).fill(skeletons[0]) : skeletons;\n};\n\nexport const setOpacity = (\n viewIndex: number,\n repeatCount: number,\n withOpacity: boolean,\n rowsLength: number,\n) => {\n return (repeatCount || rowsLength) > 0 && withOpacity\n ? 1 - (1 / (repeatCount || rowsLength)) * viewIndex\n : 1;\n};\n\n","/* eslint-disable */\nimport { cn } from \"../../../lib/utils\";\nimport React, { useEffect, useState } from \"react\";\n\nimport * as CONSTANTS from \"./constants\";\nimport { DIRECTION } from \"./enums\";\nimport {\n ComponentPropTypes,\n GridType,\n SkeletonType,\n SkeletonsType,\n} from \"./types\";\nimport {\n generateGridArea,\n generateMargin,\n itemsWithRepeat,\n setOpacity,\n} from \"./utils\";\n\nexport type { GridType as SkeletonGridType } from \"./types\";\n\n/**\n * Hook to detect dark mode from document class\n * This matches the design system's dark mode detection pattern\n */\nconst useIsDarkMode = (): boolean => {\n const [isDark, setIsDark] = useState(false);\n\n useEffect(() => {\n const checkDarkMode = () => {\n setIsDark(document.documentElement.classList.contains(\"dark\"));\n };\n\n // Initial check\n checkDarkMode();\n\n // Create observer to watch for class changes on html element\n const observer = new MutationObserver((mutations) => {\n mutations.forEach((mutation) => {\n if (mutation.attributeName === \"class\") {\n checkDarkMode();\n }\n });\n });\n\n observer.observe(document.documentElement, { attributes: true });\n\n return () => observer.disconnect();\n }, []);\n\n return isDark;\n};\n\nconst SkeletonGrid: React.FC<ComponentPropTypes> = ({\n grid,\n style = {},\n variant = CONSTANTS.DEFAULT_VARIANT,\n}) => {\n const isDark = useIsDarkMode();\n\n const generateSkeletons = (\n skeletons: SkeletonsType,\n gridKey: string,\n repeatCount: number,\n withOpacity: boolean\n ) => {\n return skeletons.map(\n (skeleton: SkeletonType & GridType, index: number) =>\n skeleton.hasOwnProperty(\"children\") ? (\n generateGrid(skeleton, `${gridKey}_${index}`)\n ) : (\n <div\n data-key={`skeleton__${gridKey}-${index}`}\n key={`skeleton__${gridKey}-${index}`}\n style={{\n width:\n skeleton.w === CONSTANTS.DEFAULT_GRID_CONTAINER_WIDTH\n ? CONSTANTS.DEFAULT_SKELETON_WIDTH\n : skeleton.w || CONSTANTS.DEFAULT_SKELETON_WIDTH,\n height: skeleton.h || CONSTANTS.DEFAULT_HEIGHT,\n borderRadius: skeleton.r || \"0px\",\n margin: generateMargin(skeleton.margin || []).margin,\n backgroundColor: isDark\n ? CONSTANTS.VARIANTS.dark.main\n : CONSTANTS.VARIANTS[variant].main,\n opacity: setOpacity(\n index,\n repeatCount,\n withOpacity,\n skeletons.length\n ),\n }}\n className=\"relative overflow-hidden\"\n >\n <div\n className=\"left-0 absolute h-full top-0 animate-[skeleton_1s_infinite_linear]\"\n style={{\n width:\n skeleton.skeletonW || CONSTANTS.DEFAULT_SKELETON_GRADIENT_WIDTH,\n backgroundImage: `linear-gradient(\n 90deg,\n ${isDark ? CONSTANTS.VARIANTS.dark.main : CONSTANTS.VARIANTS[variant].main} 0px,\n ${isDark ? CONSTANTS.VARIANTS.dark.gradient : CONSTANTS.VARIANTS[variant].gradient} ${\n (skeleton.skeletonW ||\n CONSTANTS.DEFAULT_SKELETON_GRADIENT_WIDTH) /\n 2\n }px,\n ${isDark ? CONSTANTS.VARIANTS.dark.main : CONSTANTS.VARIANTS[variant].main} ${\n skeleton.skeletonW || CONSTANTS.DEFAULT_SKELETON_GRADIENT_WIDTH\n }px\n )`,\n }}\n />\n </div>\n )\n );\n };\n\n const generateGrid = (grid: GridType, indexLevel?: string) => {\n const key_level: string = indexLevel || \"1\";\n const gridGap = grid.gridGap || CONSTANTS.DEFAULT_GAP,\n hasChildren = grid.hasOwnProperty(\"children\"),\n hasSkeletons = grid.hasOwnProperty(\"skeletons\"),\n repeatCount = grid.repeatCount || CONSTANTS.DEFAULT_REPEAT_COUNT,\n children = hasChildren\n ? itemsWithRepeat(grid.children!, repeatCount)\n : [],\n gridStyle =\n grid.direction === DIRECTION.row\n ? generateGridArea(\n (hasChildren\n ? children\n : itemsWithRepeat(grid.skeletons!, repeatCount)\n ).map(\n ({ w = CONSTANTS.DEFAULT_GRID_CONTAINER_WIDTH }) => ({\n w,\n })\n )\n )\n : CONSTANTS.DEFAULT_GRID_STYLE,\n withOpacity = grid.withOpacity || false;\n return (\n <div\n data-key={key_level}\n key={key_level}\n className={cn(\"grid\", grid.className)}\n style={{\n gap: gridGap,\n margin: generateMargin(grid.margin || []).margin,\n grid: gridStyle,\n height: grid.h || CONSTANTS.DEFAULT_HEIGHT,\n alignItems: grid.alignItems || CONSTANTS.DEFAULT_ALIGN_ITEMS_ALIGNMENT,\n justifyContent:\n grid.justifyContent || CONSTANTS.DEFAULT_JUSTIFY_ALIGNMENT,\n }}\n >\n {hasChildren\n ? children.map((gridItem: GridType, gridItemIndex: number) =>\n generateGrid(gridItem, `${key_level}_${gridItemIndex}`)\n )\n : hasSkeletons\n ? generateSkeletons(\n itemsWithRepeat(grid.skeletons!, repeatCount),\n key_level,\n repeatCount,\n withOpacity\n )\n : null}\n </div>\n );\n };\n\n return <div style={style}>{generateGrid(grid)}</div>;\n};\n\nexport default React.memo(SkeletonGrid);\n\n","import SkeletonGrid, { SkeletonGridType } from '../SkeletonGrid';\nimport React, { useMemo } from 'react';\n\nconst ProfileSettingsLoader: React.FC<Record<string, unknown>> = () => {\n const gridArea: SkeletonGridType = useMemo(\n () => ({\n direction: 'column',\n children: [\n {\n h: 'auto',\n skeletons: [{ w: '130px', h: '40px', margin: [20, 0] }],\n },\n {\n h: 'auto',\n className: 'bg-white dark:bg-black-700 p-base rounded-md',\n skeletons: [\n { w: '150px', h: '30px', margin: [10, 0, 5] },\n { w: '450px', h: '20px', margin: [0] },\n {\n h: 'auto',\n w: '100%',\n direction: 'row',\n margin: [30, 0, 0],\n className: 'lg:!grid-cols-[300px_1fr] xl:!grid-cols-[392px_1fr] md:!grid-cols-1',\n children: [\n {\n h: 'auto',\n skeletons: [{ w: '150px', h: '30px', margin: [20, 0] }],\n },\n {\n h: 'auto',\n direction: 'row',\n alignItems: 'center',\n className: 'w-full',\n skeletons: [\n { w: '120px', h: '120px', r: '50%' },\n { w: '120px', h: '40px', r: '6px', margin: [0, 10] },\n { w: '120px', h: '40px', r: '6px', margin: [0, 10] },\n ],\n },\n ],\n },\n {\n h: 'auto',\n w: '100%',\n direction: 'row',\n margin: [30, 0, 0],\n className: 'lg:!grid-cols-[300px_1fr] xl:!grid-cols-[392px_1fr] md:!grid-cols-1',\n children: [\n {\n h: 'auto',\n skeletons: [{ w: '130px', h: '30px', margin: [20, 0] }],\n },\n {\n h: 'auto',\n direction: 'row',\n repeatCount: 2,\n children: [\n {\n h: 'auto',\n gridGap: 5,\n skeletons: [\n { w: '80px', h: '20px' },\n { w: '100%', h: '45px', r: '6px', margin: [0, 0, 10] },\n { w: '80px', h: '20px' },\n { w: '100%', h: '45px', r: '6px', margin: [0, 0, 10] },\n { w: '80px', h: '20px' },\n { w: '100%', h: '45px', r: '6px', margin: [0, 0, 10] },\n ],\n },\n ],\n },\n ],\n },\n {\n h: 'auto',\n w: '100%',\n direction: 'row',\n className: 'lg:!grid-cols-[300px_1fr] xl:!grid-cols-[392px_1fr] md:!grid-cols-1',\n children: [\n {\n h: 'auto',\n skeletons: [{ w: '100%', h: '0px' }],\n },\n {\n h: 'auto',\n direction: 'row',\n className: '!justify-between',\n alignItems: 'center',\n skeletons: [\n { w: '120px', h: '20px' },\n { w: '100px', h: '40px', r: '6px' },\n ],\n },\n ],\n },\n ],\n },\n {\n h: 'auto',\n margin: [20, 0, 0],\n className: 'bg-white dark:bg-black-700 p-base rounded-md',\n skeletons: [\n { w: '150px', h: '30px', margin: [10, 0, 5] },\n { w: '450px', h: '20px', margin: [0] },\n {\n h: 'auto',\n w: '100%',\n direction: 'row',\n margin: [30, 0, 0],\n className: 'lg:!grid-cols-[300px_1fr] xl:!grid-cols-[392px_1fr] md:!grid-cols-1',\n children: [\n {\n h: 'auto',\n skeletons: [{ w: '170px', h: '30px', margin: [20, 0] }],\n },\n {\n h: 'auto',\n direction: 'row',\n children: [\n {\n h: 'auto',\n gridGap: 10,\n skeletons: [\n { w: '80px', h: '20px' },\n { w: '100%', h: '45px', r: '6px', margin: [0, 0, 10] },\n { w: '80px', h: '20px' },\n { w: '100%', h: '45px', r: '6px', margin: [0, 0, 10] },\n ],\n },\n {\n h: 'auto',\n gridGap: 10,\n skeletons: [\n { w: '80px', h: '20px' },\n { w: '100%', h: '45px', r: '6px', margin: [0, 0, 10] },\n ],\n },\n ],\n },\n ],\n },\n {\n h: 'auto',\n w: '100%',\n direction: 'row',\n margin: [30, 0, 0],\n className: 'lg:!grid-cols-[300px_1fr] xl:!grid-cols-[392px_1fr] md:!grid-cols-1',\n children: [\n {\n h: 'auto',\n skeletons: [{ w: '170px', h: '30px', margin: [20, 0] }],\n },\n {\n h: 'auto',\n direction: 'row',\n children: [\n {\n h: 'auto',\n gridGap: 10,\n skeletons: [\n { w: '80px', h: '20px' },\n { w: '100%', h: '45px', margin: [0, 0, 10] },\n ],\n },\n {\n h: 'auto',\n gridGap: 10,\n skeletons: [\n { w: '80px', h: '0' },\n { w: '100%', h: '0', margin: [0, 0, 10] },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n }),\n [],\n );\n\n return <SkeletonGrid grid={gridArea} />;\n};\nexport default React.memo(ProfileSettingsLoader);\n\n","import SkeletonGrid, { SkeletonGridType } from '../SkeletonGrid';\nimport React, { useMemo } from 'react';\n\nconst AgreementHeaderLoader: React.FC<Record<string, unknown>> = ({ rows = 3 }: { rows?: number }) => {\n const gridArea: SkeletonGridType = useMemo(\n () => ({\n direction: 'column',\n repeatCount: rows,\n withOpacity: true,\n children: [\n {\n h: 'auto',\n skeletons: [\n { w: '100%', h: '40px', r: '6px', margin: [0, 0, 20] },\n {\n w: '100%',\n h: 'auto',\n direction: 'row',\n repeatCount: 3,\n margin: [0, 0, 40],\n children: [\n {\n skeletons: [\n { w: '90%', h: '25px', r: '6px', margin: [0] },\n { w: '100%', h: '25px', r: '6px', margin: [0] },\n { w: '70%', h: '25px', r: '6px', margin: [0] },\n { w: '40%', h: '25px', r: '6px', margin: [0] },\n ],\n },\n ],\n },\n ],\n },\n ],\n }),\n [],\n );\n\n return <SkeletonGrid grid={gridArea} />;\n};\nexport default React.memo(AgreementHeaderLoader);\n\n","import SkeletonGrid, { SkeletonGridType } from '../SkeletonGrid';\nimport React, { useMemo } from 'react';\n\nconst ClauseDetailsLoader: React.FC<Record<string, unknown>> = () => {\n const gridArea: SkeletonGridType = useMemo(\n () => ({\n direction: 'column',\n repeatCount: 3,\n withOpacity: true,\n children: [\n {\n h: 'auto',\n skeletons: [\n { w: '100%', h: '40px', r: '6px', margin: [0, 0, 20] },\n {\n w: '100%',\n h: 'auto',\n direction: 'row',\n repeatCount: 3,\n margin: [0, 0, 40],\n children: [\n {\n skeletons: [\n { w: '90%', h: '25px', r: '6px', margin: [0] },\n { w: '100%', h: '25px', r: '6px', margin: [0] },\n { w: '70%', h: '25px', r: '6px', margin: [0] },\n { w: '40%', h: '25px', r: '6px', margin: [0] },\n ],\n },\n ],\n },\n ],\n },\n ],\n }),\n [],\n );\n\n return <SkeletonGrid grid={gridArea} />;\n};\nexport default React.memo(ClauseDetailsLoader);\n\n","import SkeletonGrid, { SkeletonGridType } from '../SkeletonGrid';\nimport React, { useMemo } from 'react';\n\ntype TProps = {\n lineHeight?: string;\n repeat?: number;\n};\n\nconst SingleLineLoader: React.FC<Record<string, unknown>> = ({\n repeat = 1,\n lineHeight = '30px',\n}: TProps) => {\n const gridArea: SkeletonGridType = useMemo(\n () => ({\n direction: 'column',\n repeatCount: repeat,\n withOpacity: true,\n children: [\n {\n h: 'auto',\n skeletons: [{ w: '100%', h: lineHeight, r: '4px', margin: [0, 0, 0, 0] }],\n },\n ],\n }),\n [],\n );\n\n return <SkeletonGrid grid={gridArea} />;\n};\n\nexport default React.memo(SingleLineLoader);\n\n","import SkeletonGrid, { SkeletonGridType } from '../SkeletonGrid';\nimport React, { useMemo } from 'react';\n\ntype TProps = {\n rows?: number;\n};\n\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nconst FlowNodesLoader: React.FC<Record<string, unknown>> = ({ rows = 2 }: TProps) => {\n const gridArea: SkeletonGridType = useMemo(\n () => ({\n w: '100%',\n h: 'auto',\n direction: 'row',\n repeatCount: 1,\n margin: [0, 0, 40],\n children: [\n {\n skeletons: Array(rows).fill({ w: '500px', h: '80px', r: '6px', margin: [0] }),\n },\n ],\n }),\n [rows],\n );\n\n return <SkeletonGrid grid={gridArea} />;\n};\nexport default React.memo(FlowNodesLoader);\n\n","import SkeletonGrid, { SkeletonGridType } from '../SkeletonGrid';\nimport React, { useMemo } from 'react';\nimport styled, { keyframes } from 'styled-components';\n\nconst pulseAnimation = keyframes`\n 0% {\n opacity: 0.5;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n opacity: 0.5;\n }\n`;\n\nconst AnimatedSkeleton = styled.div`\n animation: ${pulseAnimation} 1.5s ease-in-out infinite;\n display: flex;\n flex-direction: column;\n background-color: white;\n`;\n\nconst TaskCardLoader: React.FC<Record<string, unknown>> = ({ circleSize = '30px', lineHeight = '16px', repeat = 1, gap = 16, avatarSize = '24px' }) => {\n const gridArea: SkeletonGridType = useMemo(\n () => ({\n direction: 'column',\n repeatCount: repeat as number,\n withOpacity: true,\n w: '100%',\n gridGap: gap as number,\n children: [\n {\n direction: 'row',\n gridGap: 4,\n alignItems: 'center',\n justifyContent: 'space-between',\n w: '100%',\n className: 'bg-white dark:bg-black-700 p-2 rounded-md border border-neutral-200',\n skeletons: [\n {\n w: '70%',\n children: [\n {\n w: '100%',\n direction: 'row',\n alignItems: 'center',\n skeletons: [\n { w: circleSize as string, h: circleSize as string, r: '50%' },\n {\n w: '80%',\n direction: 'column',\n gridGap: 4,\n children: [\n {\n skeletons: [{ w: '100%', h: lineHeight as string, r: '4px' }],\n },\n {\n repeatCount: 3,\n direction: 'row',\n gridGap: 4,\n skeletons: [{ w: '33%', h: lineHeight as string, r: '4px' }],\n },\n ],\n },\n ],\n },\n ],\n },\n {\n w: '30%',\n children: [\n {\n w: '100%',\n direction: 'row',\n alignItems: 'center',\n justifyContent: 'flex-end',\n skeletons: [\n { w: avatarSize as string, h: avatarSize as string, r: '50%' },\n { w: '70%', h: lineHeight as string, r: '4px' },\n ],\n },\n ],\n },\n ],\n },\n ],\n }),\n [circleSize, lineHeight, gap, avatarSize],\n );\n\n return (\n <AnimatedSkeleton>\n <SkeletonGrid grid={gridArea} />\n </AnimatedSkeleton>\n );\n};\n\nexport default React.memo(TaskCardLoader);\n\n","import SkeletonGrid, { SkeletonGridType } from '../SkeletonGrid';\nimport React, { useMemo } from 'react';\n\nconst AppItemLoader: React.FC<Record<string, unknown>> = () => {\n const gridArea: SkeletonGridType = useMemo(\n () => ({\n direction: 'row',\n repeatCount: 2,\n withOpacity: true,\n gridGap: 2,\n children: [\n {\n h: 'auto',\n skeletons: [\n {\n w: '100%',\n h: 'auto',\n direction: 'row',\n margin: [0],\n children: [\n {\n w: '80px',\n skeletons: [{ w: '80px', h: '80px', r: '6px' }],\n },\n {\n skeletons: [\n { w: '10%', h: '20px', r: '6px' },\n { w: '70%', h: '15px', r: '6px' },\n { w: '70%', h: '15px', r: '6px' },\n { w: '70%', h: '15px', r: '6px' },\n ],\n },\n ],\n },\n ],\n },\n ],\n }),\n [],\n );\n\n return <SkeletonGrid grid={gridArea} />;\n};\n\nexport default React.memo(AppItemLoader);\n\n","import SkeletonGrid, { SkeletonGridType } from '../SkeletonGrid';\nimport { DIRECTION } from '../enums';\nimport React, { FC, useMemo } from 'react';\n\ntype NotificationListLoaderProps = {\n count?: number;\n};\nconst NotificationListLoader: FC<NotificationListLoaderProps> = ({ count = 3 }) => {\n const gridArea: SkeletonGridType = useMemo(\n () => ({\n direction: DIRECTION.column,\n repeatCount: count,\n withOpacity: true,\n gridGap: 0,\n children: [\n {\n h: 'auto',\n className: 'border-b border-neutral-200 dark:border-black-700',\n children: [\n {\n w: '100%',\n h: 'auto',\n direction: DIRECTION.row,\n className: 'p-3',\n children: [\n {\n w: '40px',\n h: 'auto',\n skeletons: [{ w: '32px', h: '32px', r: '50%' }],\n },\n {\n w: 'calc(100% - 40px)',\n h: 'auto',\n skeletons: [\n { w: '75%', h: '16px', r: '4px', margin: [0, 0, 8, 0] },\n { w: '25%', h: '12px', r: '4px', margin: [0, 0, 12, 0] },\n ],\n },\n ],\n },\n ],\n },\n ],\n }),\n [count],\n );\n\n return <SkeletonGrid grid={gridArea} />;\n};\n\nexport default React.memo(NotificationListLoader);\n\n","import SkeletonGrid, { SkeletonGridType } from '../SkeletonGrid';\nimport { DIRECTION } from '../enums';\nimport React, { FC, useMemo } from 'react';\nimport styled, { keyframes } from 'styled-components';\n\nconst pulseAnimation = keyframes`\n 0% {\n opacity: 0.5;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n opacity: 0.5;\n }\n`;\n\nconst AnimatedSkeleton = styled.div`\n animation: ${pulseAnimation} 1.5s ease-in-out infinite;\n`;\n\ntype EventDetailsLoaderProps = {\n width?: string;\n};\n\nconst EventDetailsLoader: FC<EventDetailsLoaderProps> = ({ width = '480px' }) => {\n const gridArea: SkeletonGridType = useMemo(\n () => ({\n direction: DIRECTION.column,\n repeatCount: 1,\n withOpacity: true,\n gridGap: 16,\n className: 'overflow-y-auto',\n children: [\n {\n // Title and date section\n w: '100%',\n h: 'auto',\n direction: DIRECTION.column,\n gridGap: 8,\n children: [\n {\n w: '100%',\n h: 'auto',\n skeletons: [\n { w: '75%', h: '24px', r: '4px' }, // Title\n { w: '50%', h: '16px', r: '4px', margin: [8, 0, 0, 0] }, // Date\n ],\n },\n ],\n },\n {\n // Separator line\n w: '100%',\n className: 'border-t border-gray-200 dark:border-black-600',\n skeletons: [{ w: '100%', h: '1px', r: '0px' }],\n },\n {\n // Description section\n w: '100%',\n h: 'auto',\n direction: DIRECTION.column,\n gridGap: 8,\n children: [\n {\n w: '100%',\n h: 'auto',\n skeletons: [\n { w: '25%', h: '16px', r: '4px' }, // Section header\n { w: '100%', h: '80px', r: '6px', margin: [8, 0, 0, 0] }, // Description content\n ],\n },\n ],\n },\n {\n // Another separator line\n w: '100%',\n className: 'border-t border-gray-200 dark:border-black-600',\n skeletons: [{ w: '100%', h: '1px', r: '0px' }],\n },\n {\n // Status and priority section\n w: '100%',\n h: 'auto',\n direction: DIRECTION.column,\n gridGap: 12,\n children: [\n {\n w: '100%',\n h: 'auto',\n skeletons: [\n { w: '30%', h: '16px', r: '4px' }, // Section header\n { w: '80px', h: '32px', r: '16px', margin: [8, 0, 0, 0] }, // Status tag\n ],\n },\n ],\n },\n ],\n }),\n [],\n );\n\n return (\n <AnimatedSkeleton style={{ width }}>\n <SkeletonGrid grid={gridArea} />\n </AnimatedSkeleton>\n );\n};\n\nexport default React.memo(EventDetailsLoader);\n\n","import SkeletonGrid, { SkeletonGridType } from '../SkeletonGrid';\nimport { DIRECTION } from '../enums';\nimport React, { FC, useMemo } from 'react';\n\ntype ExecutionNoteLoaderProps = {\n count?: number;\n};\n\nconst ExecutionNoteLoader: FC<ExecutionNoteLoaderProps> = ({ count = 3 }) => {\n const gridArea: SkeletonGridType = useMemo(\n () => ({\n direction: DIRECTION.column,\n repeatCount: count,\n withOpacity: true,\n gridGap: 16,\n children: [\n {\n w: '100%',\n h: 'auto',\n className: 'p-2 bg-white dark:bg-black-800 border border-neutral-200 dark:border-black-700 rounded-lg',\n children: [\n // Header section with title and actions\n {\n w: '100%',\n h: 'auto',\n direction: DIRECTION.row,\n className: 'mb-3',\n children: [\n {\n // Title section with icon\n w: '70%',\n h: 'auto',\n direction: DIRECTION.row,\n children: [\n {\n w: '24px',\n h: 'auto',\n skeletons: [{ w: '20px', h: '20px', r: '4px' }],\n className: 'animate-pulse',\n },\n {\n w: 'calc(100% - 24px)',\n h: 'auto',\n skeletons: [{ w: '80%', h: '20px', r: '4px', margin: [0, 0, 0, 8] }],\n className: 'animate-pulse',\n },\n ],\n },\n {\n // Action buttons\n w: '30%',\n h: 'auto',\n direction: DIRECTION.row,\n children: [\n {\n w: '32px',\n h: 'auto',\n skeletons: [{ w: '24px', h: '24px', r: '6px' }],\n className: 'animate-pulse',\n },\n {\n w: '32px',\n h: 'auto',\n skeletons: [{ w: '24px', h: '24px', r: '6px', margin: [0, 0, 0, 8] }],\n className: 'animate-pulse',\n },\n ],\n },\n ],\n },\n // Content section\n {\n w: '100%',\n h: 'auto',\n skeletons: [\n { w: '100%', h: '16px', r: '4px', margin: [0, 0, 4, 0] },\n { w: '80%', h: '16px', r: '4px', margin: [0, 0, 16, 0] },\n ],\n className: 'animate-pulse',\n },\n // Footer section with user info and date\n {\n w: '100%',\n h: 'auto',\n direction: DIRECTION.row,\n children: [\n {\n // User info section\n w: '60%',\n h: 'auto',\n direction: DIRECTION.row,\n children: [\n {\n w: '32px',\n h: 'auto',\n skeletons: [{ w: '24px', h: '24px', r: '50%' }],\n className: 'animate-pulse',\n },\n {\n w: 'calc(100% - 32px)',\n h: 'auto',\n skeletons: [{ w: '80%', h: '16px', r: '4px', margin: [4, 0, 0, 8] }],\n className: 'animate-pulse',\n },\n ],\n },\n {\n // Date\n w: '40%',\n h: 'auto',\n direction: DIRECTION.row,\n skeletons: [{ w: '120px', h: '16px', r: '4px', margin: [4, 0, 0, 0] }],\n className: 'animate-pulse',\n },\n ],\n },\n ],\n },\n ],\n }),\n [count],\n );\n\n return <SkeletonGrid grid={gridArea} />;\n};\n\nexport default React.memo(ExecutionNoteLoader);\n\n","import SkeletonGrid, { SkeletonGridType } from '../SkeletonGrid';\nimport { DIRECTION } from '../enums';\nimport React, { FC, useMemo } from 'react';\n\nconst SKELETON_COUNT = 5;\n\nexport const LogItemSkeleton: FC = () => {\n const gridArea: SkeletonGridType = useMemo(\n () => ({\n direction: DIRECTION.column,\n repeatCount: SKELETON_COUNT,\n gridGap: 8,\n withOpacity: true,\n className: 'mt-5',\n children: [\n {\n className: 'border rounded-lg w-full border-l-[6px] border-neutral-200 dark:border-black-700 px-4.5 py-3',\n direction: DIRECTION.row,\n gridGap: 12,\n alignItems: 'center',\n children: [\n {\n w: '20px',\n skeletons: [{ w: '20px', h: '20px', r: '4px' }],\n },\n {\n w: 'calc(100% - 50px)',\n direction: DIRECTION.column,\n gridGap: 4,\n skeletons: [\n { w: '75%', h: '16px', r: '4px', margin: [0, 0, 4, 0] },\n { w: '40%', h: '12px', r: '4px' },\n ],\n },\n {\n w: '20px',\n skeletons: [{ w: '20px', h: '20px', r: '4px' }],\n },\n ],\n },\n ],\n }),\n [],\n );\n\n return <SkeletonGrid grid={gridArea} />;\n};\n\n","import SkeletonGrid, { SkeletonGridType } from '../SkeletonGrid';\nimport React, { useMemo } from 'react';\nimport styled, { keyframes } from 'styled-components';\n\nconst pulseAnimation = keyframes`\n 0% {\n opacity: 0.5;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n opacity: 0.5;\n }\n`;\n\nconst AnimatedSkeleton = styled.div`\n animation: ${pulseAnimation} 1.5s ease-in-out infinite;\n`;\n\nconst DoubleLineLoader: React.FC<Record<string, unknown>> = ({ lineHeight = '30px', gap = 10 }) => {\n const gridArea: SkeletonGridType = useMemo(\n () => ({\n direction: 'row',\n repeatCount: 1,\n withOpacity: true,\n children: [\n {\n gridGap: gap as number,\n skeletons: [\n { w: '100%', h: lineHeight as string, r: '2px', margin: [0, 0, 0] },\n { w: '70%', h: lineHeight as string, r: '2px', margin: [0, 0, 0] },\n ],\n },\n ],\n }),\n [],\n );\n\n return (\n <AnimatedSkeleton>\n <SkeletonGrid grid={gridArea} />\n </AnimatedSkeleton>\n );\n};\n\nexport default React.memo(DoubleLineLoader);\n\n","import SkeletonGrid, { SkeletonGridType } from '../SkeletonGrid';\nimport React, { useMemo } from 'react';\n\nconst InstalledAppItemLoader: React.FC<Record<string, unknown>> = () => {\n const gridArea: SkeletonGridType = useMemo(\n () => ({\n direction: 'row',\n repeatCount: 3,\n withOpacity: true,\n gridGap: 2,\n children: [\n {\n h: 'auto',\n skeletons: [\n {\n w: '100%',\n h: '100',\n direction: 'row',\n margin: [0],\n children: [\n {\n skeletons: [\n { w: '10%', h: '20px', r: '6px' },\n { w: '70%', h: '15px', r: '6px' },\n { w: '70%', h: '15px', r: '6px' },\n { w: '70%', h: '15px', r: '6px' },\n ],\n },\n ],\n },\n ],\n },\n ],\n }),\n [],\n );\n\n return <SkeletonGrid grid={gridArea} />;\n};\n\nexport default React.memo(InstalledAppItemLoader);\n\n","import SkeletonGrid, { SkeletonGridType } from '../SkeletonGrid';\nimport React, { useMemo } from 'react';\n\nconst PilotDetailsSkeleton: React.FC = () => {\n const gridArea: SkeletonGridType = useMemo(\n () => ({\n direction: 'column',\n repeatCount: 1,\n withOpacity: true,\n gridGap: 0,\n children: [\n {\n h: 'auto',\n className: 'bg-white rounded-lg',\n skeletons: [\n // Header section\n {\n w: '100%',\n h: 'auto',\n className: 'p-2',\n direction: 'row',\n alignItems: 'center',\n justifyContent: 'space-between',\n children: [\n // Left side - Back button and title\n {\n w: 'auto',\n direction: 'row',\n alignItems: 'center',\n children: [\n {\n skeletons: [{ w: '20px', h: '20px', r: '4px' }],\n },\n {\n skeletons: [{ w: '200px', h: '20px', r: '4px' }],\n },\n ],\n },\n // Right side - Action buttons\n {\n w: 'auto',\n direction: 'row',\n alignItems: 'center',\n children: [\n {\n skeletons: [{ w: '80px', h: '36px', r: '6px' }],\n },\n {\n skeletons: [{ w: '70px', h: '36px', r: '6px' }],\n },\n {\n skeletons: [{ w: '70px', h: '36px', r: '6px' }],\n },\n {\n skeletons: [{ w: '80px', h: '36px', r: '6px' }],\n },\n ],\n },\n ],\n },\n // Horizontal rule\n {\n w: '100%',\n h: '1px',\n className: 'bg-neutral-200',\n skeletons: [],\n },\n // Main content area\n {\n w: '100%',\n h: 'calc(100vh - 200px)',\n direction: 'row',\n children: [\n // Left sidebar - Statistics (1/4 width)\n {\n w: '25%',\n h: '100%',\n className: 'bg-neutral-50 p-2 border-r border-neutral-200',\n direction: 'column',\n alignItems: 'flex-start',\n justifyContent: 'flex-start',\n children: [\n // Statistics title\n {\n skeletons: [{ w: '80px', h: '14px', r: '4px' }],\n },\n // Stats cards container\n {\n w: '100%',\n h: 'auto',\n direction: 'column',\n children: [\n // First row with two stat cards\n {\n w: '100%',\n direction: 'row',\n children: [\n // Total Steps card\n {\n w: '50%',\n className: 'bg-neutral-100 rounded-lg p-2',\n direction: 'column',\n children: [\n {\n skeletons: [{ w: '24px', h: '24px', r: '4px' }],\n },\n {\n skeletons: [{ w: '60px', h: '12px', r: '4px' }],\n },\n ],\n },\n // Total Actions card\n {\n w: '50%',\n className: 'bg-neutral-100 rounded-lg p-2',\n direction: 'column',\n children: [\n {\n skeletons: [{ w: '24px', h: '24px', r: '4px' }],\n },\n {\n skeletons: [{ w: '70px', h: '12px', r: '4px' }],\n },\n ],\n },\n ],\n },\n // Description section\n {\n w: '100%',\n direction: 'column',\n children: [\n {\n skeletons: [{ w: '80px', h: '14px', r: '4px' }],\n },\n {\n skeletons: [{ w: '100%', h: '40px', r: '4px' }],\n },\n ],\n },\n ],\n },\n ],\n },\n // Right main area (3/4 width)\n {\n w: '75%',\n h: 'auto',\n direction: 'column',\n children: [\n // Tab header\n {\n w: '100%',\n h: 'auto',\n className: 'p-2 border-b border-neutral-200',\n children: [\n {\n skeletons: [{ w: '200px', h: '36px', r: '18px' }],\n },\n ],\n },\n // Content area\n {\n w: '100%',\n h: 'auto',\n className: 'p-2',\n direction: 'column',\n children: [\n // Step accordion 1\n {\n w: '100%',\n className: 'border border-neutral-200 rounded-lg',\n direction: 'column',\n children: [\n // Accordion header\n {\n w: '100%',\n h: '48px',\n className: 'p-3',\n direction: 'row',\n alignItems: 'center',\n children: [\n {\n skeletons: [{ w: '16px', h: '16px', r: '50%' }],\n },\n {\n skeletons: [{ w: '120px', h: '16px', r: '4px' }],\n },\n ],\n },\n // Accordion content\n {\n w: '100%',\n h: 'auto',\n className: 'p-3 border-t border-neutral-200',\n direction: 'column',\n children: [\n // Action item 1\n {\n w: '100%',\n h: '60px',\n className: 'bg-neutral-50 rounded-lg p-3',\n direction: 'row',\n alignItems: 'center',\n children: [\n {\n skeletons: [{ w: '24px', h: '24px', r: '4px' }],\n },\n {\n w: 'calc(100% - 36px)',\n direction: 'column',\n children: [\n {\n skeletons: [{ w: '100px', h: '14px', r: '4px' }],\n },\n {\n skeletons: [{ w: '150px', h: '12px', r: '4px' }],\n },\n ],\n },\n ],\n },\n // Action item 2\n {\n w: '100%',\n h: '60px',\n className: 'bg-neutral-50 rounded-lg p-3',\n direction: 'row',\n alignItems: 'center',\n children: [\n {\n skeletons: [{ w: '24px', h: '24px', r: '4px' }],\n },\n {\n w: 'calc(100% - 36px)',\n direction: 'column',\n children: [\n {\n skeletons: [{ w: '120px', h: '14px', r: '4px' }],\n },\n {\n skeletons: [{ w: '180px', h: '12px', r: '4px' }],\n },\n ],\n },\n ],\n },\n // Action item 3\n {\n w: '100%',\n h: '60px',\n className: 'bg-neutral-50 rounded-lg p-3',\n direction: 'row',\n alignItems: 'center',\n children: [\n {\n skeletons: [{ w: '24px', h: '24px', r: '4px' }],\n },\n {\n w: 'calc(100% - 36px)',\n direction: 'column',\n children: [\n {\n skeletons: [{ w: '120px', h: '14px', r: '4px' }],\n },\n {\n skeletons: [{ w: '180px', h: '12px', r: '4px' }],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n // Step accordion 2\n {\n w: '100%',\n className: 'border border-neutral-200 rounded-lg',\n direction: 'column',\n children: [\n // Accordion header\n {\n w: '100%',\n h: '48px',\n className: 'p-3',\n direction: 'row',\n alignItems: 'center',\n children: [\n {\n skeletons: [{ w: '16px', h: '16px', r: '50%' }],\n },\n {\n skeletons: [{ w: '140px', h: '16px', r: '4px' }],\n },\n ],\n },\n ],\n },\n // Step accordion 3\n {\n w: '100%',\n className: 'border border-neutral-200 rounded-lg',\n direction: 'column',\n children: [\n // Accordion header\n {\n w: '100%',\n h: '48px',\n className: 'p-3',\n direction: 'row',\n alignItems: 'center',\n children: [\n {\n skeletons: [{ w: '16px', h: '16px', r: '50%' }],\n },\n {\n skeletons: [{ w: '140px', h: '16px', r: '4px' }],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n }),\n [],\n );\n\n return <SkeletonGrid grid={gridArea} />;\n};\n\nexport default PilotDetailsSkeleton;\n\n","import SkeletonGrid, { SkeletonGridType } from '../SkeletonGrid';\nimport React, { useMemo } from 'react';\n\nconst TutorialsSkeleton: React.FC = () => {\n const gridArea: SkeletonGridType = useMemo(\n () => ({\n direction: 'column',\n repeatCount: 5,\n withOpacity: true,\n gridGap: 8,\n children: [\n {\n h: 'auto',\n className: 'bg-white p-2 rounded-lg',\n skeletons: [\n {\n w: '100%',\n direction: 'row',\n alignItems: 'center',\n children: [\n {\n w: '24px',\n h: '24px',\n skeletons: [{ w: '24px', h: '24px', r: '6px' }],\n },\n {\n w: 'calc(100% - 24px)',\n direction: 'column',\n children: [\n {\n skeletons: [{ w: '100%', h: '20px', r: '4px' }],\n },\n ],\n },\n ],\n },\n ],\n },\n ],\n }),\n [],\n );\n\n return <SkeletonGrid grid={gridArea} />;\n};\n\nexport default TutorialsSkeleton;\n\n","import { motion } from 'framer-motion';\n\nexport const RecentlyAddedAppsSkeleton = ({ index = 0 }: { index?: number }) => {\n const cardVariants = {\n hidden: { opacity: 0, y: 50, scale: 0.95 },\n visible: {\n opacity: 1,\n y: 0,\n scale: 1,\n transition: {\n duration: 0.6,\n delay: index * 0.1,\n ease: [0.6, -0.05, 0.01, 0.99] as const,\n },\n },\n };\n\n return (\n <motion.div\n className='rounded-lg border border-[rgba(234,236,240,0.20)] bg-white/15 shadow-[0_8px_24px_0_rgba(16,24,40,0.04)] mt-5'\n variants={cardVariants}\n initial='hidden'\n animate='visible'\n >\n <div className='p-3'>\n <div className='flex items-start gap-3'>\n {/* Logo skeleton */}\n <div className='w-[40px] h-[40px] rounded-md border border-[#EAECF0] bg-white shadow-[0_4px_6px_0_rgba(0,0,0,0.10),0_10px_15px_0_rgba(0,0,0,0.10)] flex items-center justify-center'>\n <div className='w-[20px] h-[20px] rounded-sm bg-neutral-200 animate-pulse' />\n </div>\n\n <div>\n {/* App name and version skeleton */}\n <div className='flex items-center gap-1 mb-2'>\n <div className='w-20 h-4 bg-white/30 rounded-md animate-pulse' />\n <div className='w-1 h-1 rounded-full bg-neutral-300' />\n <div className='w-8 h-3 bg-white/20 rounded-md animate-pulse' />\n </div>\n\n {/* Plugin type badge skeleton */}\n <div className='w-16 h-[18px] bg-white/25 rounded-lg animate-pulse' />\n </div>\n </div>\n </div>\n\n {/* Border separator */}\n <div className='border-b border-[rgba(234,236,240,0.20)]' />\n\n {/* Install button skeleton */}\n <div className='p-3'>\n <div className='rounded-lg border border-[#D0D5DD] bg-white shadow-[0_4px_6px_0_rgba(0,0,0,0.10),0_10px_15px_0_rgba(0,0,0,0.10)] px-3 py-1.5 flex items-center gap-2 justify-center'>\n <div className='w-4 h-4 bg-neutral-200 rounded-sm animate-pulse' />\n <div className='w-12 h-4 bg-neutral-200 rounded-md animate-pulse' />\n </div>\n </div>\n </motion.div>\n );\n};\n\nexport default RecentlyAddedAppsSkeleton;\n\n","import { motion } from 'framer-motion';\n\nexport const SingleAppCardSkeleton = ({ index = 0, isPagination = false }: { index?: number; isPagination?: boolean }) => {\n const cardVariants = {\n hidden: { opacity: 0, y: 50, scale: 0.95 },\n visible: {\n opacity: 1,\n y: 0,\n scale: 1,\n transition: {\n duration: 0.5,\n delay: isPagination ? index * 0.05 : index * 0.1,\n ease: [0.6, -0.05, 0.01, 0.99] as const,\n },\n },\n };\n\n return (\n <motion.div\n className='bg-white dark:bg-[#0A0710] rounded-lg border border-[#EAECF0] dark:border-[#14131B] shadow-[0_8px_24px_0_rgba(16,24,40,0.04)] overflow-hidden'\n variants={cardVariants}\n initial='hidden'\n animate='visible'\n >\n <div className='p-3'>\n <div className='flex items-start gap-3'>\n <div className='w-[40px] h-[40px] rounded-md border border-[#EAECF0] dark:border-[#14131B] bg-white dark:bg-[#0A0710] flex items-center justify-center'>\n <div className='w-[30px] h-[30px] rounded-md bg-neutral-200 dark:bg-neutral-700 animate-pulse' />\n </div>\n\n <div className='flex items-center justify-between w-full'>\n <div className='flex-1'>\n <div className='flex items-center gap-1 mb-2'>\n <div className='w-20 h-4 bg-neutral-200 dark:bg-neutral-700 rounded-md animate-pulse' />\n <div className='w-1 h-1 rounded-full bg-neutral-300 dark:bg-neutral-600' />\n <div className='w-8 h-3 bg-neutral-200 dark:bg-neutral-700 rounded-md animate-pulse' />\n </div>\n\n <div className='w-16 h-[18px] bg-neutral-200 dark:bg-neutral-700 rounded-lg animate-pulse' />\n </div>\n\n <div className='w-4 h-4 bg-neutral-200 dark:bg-neutral-700 rounded-full animate-pulse' />\n </div>\n </div>\n </div>\n\n <div className='border-b border-neutral-200 dark:border-[#14131B]' />\n\n <div className='p-3'>\n <div className='space-y-2'>\n <div className='w-full h-3.5 bg-neutral-200 dark:bg-neutral-700 rounded-md animate-pulse' />\n <div className='w-4/5 h-3.5 bg-neutral-200 dark:bg-neutral-700 rounded-md animate-pulse' />\n <div className='w-3/5 h-3.5 bg-neutral-200 dark:bg-neutral-700 rounded-md animate-pulse' />\n </div>\n </div>\n\n <div className='border-b border-neutral-200 dark:border-[#14131B]' />\n\n <div className='p-3'>\n <div className='rounded-lg border border-[#D0D5DD] dark:border-[#24222F] px-3 py-1.5 flex items-center gap-2 justify-center bg-neutral-50 dark:bg-[#0A0710]'>\n <div className='w-4 h-4 bg-neutral-200 dark:bg-neutral-700 rounded-sm animate-pulse' />\n <div className='w-12 h-4 bg-neutral-200 dark:bg-neutral-700 rounded-md animate-pulse' />\n </div>\n </div>\n </motion.div>\n );\n};\n\n","import React, { useMemo } from 'react';\nimport type { SkeletonGridType } from '../SkeletonGrid';\nimport SkeletonGrid from '../SkeletonGrid';\n\nconst CalendarExportItemLoader: React.FC<Record<string, any>> = ({ rows = 1 }: { rows?: number }) => {\n const gridArea: SkeletonGridType = useMemo(\n () => ({\n direction: 'column',\n repeatCount: rows,\n withOpacity: true,\n children: [\n {\n h: 'auto',\n skeletons: [\n // Header row (milestone name + badges)\n { w: '40%', h: '20px', r: '6px', margin: [0, 0, 12] },\n { w: '20%', h: '16px', r: '8px', margin: [0, 0, 12] },\n { w: '25%', h: '16px', r: '8px', margin: [0, 0, 20] },\n ],\n },\n {\n h: 'auto',\n direction: 'column',\n children: [\n // Start Date row\n { w: '60%', h: '18px', r: '4px', margin: [0, 0, 10] },\n // Due Date row\n { w: '60%', h: '18px', r: '4px', margin: [0, 0, 10] },\n // Reference Agreement row\n { w: '70%', h: '18px', r: '4px', margin: [0, 0, 10] },\n ],\n },\n ],\n }),\n [rows],\n );\n\n return <SkeletonGrid grid={gridArea} />;\n};\n\nexport default React.memo(CalendarExportItemLoader);\n","import cn from \"classnames\";\nimport { noop } from \"lodash\";\nimport type { FC, ReactNode } from \"react\";\nimport { Fragment } from \"react\";\nimport { useTranslation } from \"react-i18next\";\n\ntype TSVG = FC<React.SVGProps<SVGSVGElement>>;\n\n/**\n * Props for the Text component\n */\nexport interface TextProps {\n /** Text content to display (will be passed through i18n translation) */\n text: string;\n /** Whether to render without a wrapper tag */\n emptyTag?: boolean;\n /** Additional CSS classes */\n className?: string;\n /** Click handler for the text element */\n onClick?: () => void;\n /** Icon component to display on the left */\n LeftIcon?: TSVG | null;\n /** Role attribute for accessibility */\n role?: \"row\" | \"button\";\n /** Text to prepend before main text */\n LText?: string;\n /** Text to append after main text */\n RText?: string;\n /** Icon component to display on the right */\n RightIcon?: TSVG | null;\n /** HTML tag to render */\n tagName?: \"p\" | \"span\" | \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"li\" | \"button\";\n /** Additional children to render */\n children?: ReactNode;\n}\n\n/**\n * Text component displays translated text with optional icons and customizable tag\n *\n * @example\n * ```tsx\n * <Text text=\"Hello World\" />\n * <Text text=\"Click me\" tagName=\"button\" onClick={handleClick} />\n * <Text text=\"Title\" tagName=\"h1\" LeftIcon={StarIcon} />\n * ```\n */\nconst Text: FC<TextProps> = ({\n LText,\n RText,\n emptyTag,\n text = \"\",\n LeftIcon,\n role = \"\",\n children,\n RightIcon,\n tagName = \"p\",\n className = \"\",\n onClick = noop,\n}) => {\n const { t } = useTranslation();\n\n const Tag = tagName;\n\n const content = (\n <Fragment>\n {LText && LText}\n {t(text)}\n {RText && RText}\n </Fragment>\n );\n\n return Tag && !emptyTag ? (\n <Tag\n onClick={onClick}\n className={cn({ [className]: className })}\n role={(tagName === \"button\" && \"button\") || role}\n >\n {LeftIcon && <LeftIcon />}\n\n {content}\n\n {children}\n\n {RightIcon && <RightIcon />}\n </Tag>\n ) : (\n content\n );\n};\n\nText.displayName = \"Text\";\n\nexport default Text;\n\n","import type { FC } from \"react\";\nimport { useEffect, useState } from \"react\";\n\n/**\n * Props for the TextWithStrike component\n */\nexport interface TextWithStrikeProps {\n /** Text content that may contain <um></um> tags for highlighting */\n text: string;\n}\n\n/**\n * TextWithStrike component parses text with <um></um> tags and displays\n * the content between those tags with a highlighted background.\n *\n * @example\n * ```tsx\n * <TextWithStrike text=\"This is <um>highlighted</um> text\" />\n * ```\n */\nconst TextWithStrike: FC<TextWithStrikeProps> = ({ text }) => {\n const [formattedText, setFormattedText] = useState<string[]>([]);\n\n const splitText = () => {\n const parts = text.split(/(<um>.*?<\\/um>)/);\n setFormattedText(parts);\n };\n\n useEffect(() => {\n splitText();\n }, [text]);\n\n return (\n <>\n {formattedText.map((part, index) => {\n if (part.includes(\"<um>\")) {\n return (\n <span\n className=\"bg-yellow-100 dark:bg-yellow-900 decoration-gray-600\"\n key={index}\n >\n {part.replace(/<um>|<\\/um>/g, \"\")}\n </span>\n );\n }\n return <span key={index}>{part}</span>;\n })}\n </>\n );\n};\n\nTextWithStrike.displayName = \"TextWithStrike\";\n\nexport default TextWithStrike;\n\n","import { Tooltip } from \"antd\";\nimport { memo, useCallback, useMemo } from \"react\";\nimport { Tag } from \"../tag/Tag\";\n\ninterface DynamicItemsCellItem {\n id?: string | number;\n [key: string]: unknown;\n}\n\n/**\n * Props for the DynamicItemsCell component\n */\nexport interface DynamicItemsCellProps<T extends DynamicItemsCellItem> {\n /** Array of items to display */\n items: T[];\n /** Whether dark mode is enabled */\n isDarkMode: boolean;\n /** Function to extract label from item */\n getLabel: (item: T) => string;\n /** Function to extract color from item */\n getColor: (item: T) => string;\n /** Function to extract unique ID from item */\n getId?: (item: T) => string | number;\n /** Color for the \"more\" tag */\n moreTagColor?: string;\n /** Whether to use hash color generation */\n useHashColor?: boolean;\n /** Tooltip placement */\n tooltipPlacement?: \"topLeft\" | \"topRight\" | \"bottomLeft\" | \"bottomRight\";\n /** Additional CSS classes */\n className?: string;\n /** Container width for calculating visible items */\n containerWidth?: number;\n}\n\n/**\n * DynamicItemsCell component displays a list of tags that automatically\n * truncates based on container width and shows overflow count\n *\n * @example\n * ```tsx\n * <DynamicItemsCell\n * items={[{ id: 1, name: \"Tag 1\", color: \"blue\" }, { id: 2, name: \"Tag 2\", color: \"green\" }]}\n * isDarkMode={false}\n * getLabel={(item) => item.name}\n * getColor={(item) => item.color}\n * containerWidth={300}\n * />\n * ```\n */\nconst DynamicItemsCellComponent = <T extends DynamicItemsCellItem>({\n items,\n isDarkMode,\n getLabel,\n getColor,\n getId = (item) => item?.id ?? \"\",\n moreTagColor = \"gray\",\n useHashColor = false,\n tooltipPlacement = \"topRight\",\n className = \"w-full\",\n containerWidth,\n}: DynamicItemsCellProps<T>) => {\n const calculateTagWidth = useCallback((name: string) => {\n if (!name) return 0;\n const charWidth = 8;\n const basePadding = 20;\n return name.length * charWidth + basePadding;\n }, []);\n\n const calculateVisibleItems = useCallback(() => {\n if (!containerWidth || !items?.length) return 0;\n\n const availableWidth = containerWidth;\n const moreTagWidth = calculateTagWidth(\"+ XX more\") + 10;\n\n let visibleCount = 0;\n let usedWidth = 0;\n\n for (let i = 0; i < items.length; i++) {\n const item = items[i];\n const tagWidth = calculateTagWidth(getLabel(item));\n const gapWidth = 8;\n\n if (i > 0 && usedWidth + tagWidth + gapWidth + moreTagWidth > availableWidth) {\n break;\n }\n\n if (i === 0 || usedWidth + tagWidth + gapWidth <= availableWidth) {\n usedWidth += tagWidth + gapWidth;\n visibleCount++;\n } else {\n break;\n }\n }\n\n return Math.max(1, visibleCount);\n }, [containerWidth, items, calculateTagWidth, getLabel]);\n\n const visibleItemsCount = useMemo(() => {\n return containerWidth ? calculateVisibleItems() : 0;\n }, [containerWidth, calculateVisibleItems]);\n\n const displayItems = useMemo(() => {\n return items?.slice(0, visibleItemsCount) || [];\n }, [items, visibleItemsCount]);\n\n const hasMoreItems = useMemo(() => {\n return items?.length > visibleItemsCount;\n }, [items?.length, visibleItemsCount]);\n\n const tooltipContent = useMemo(() => {\n return items?.length > 0 && hasMoreItems ? (\n <div className=\"flex flex-col gap-2 p-2 max-h-[300px] overflow-y-auto dark:bg-neutral-800\">\n {items?.slice(visibleItemsCount, items?.length).map((item, index) => (\n <div key={`tooltip-${visibleItemsCount + index}`} className=\"w-fit cursor-pointer\">\n <Tag\n key={`tooltip-tag-${visibleItemsCount + index}`}\n label={getLabel(item)}\n color={getColor(item)}\n size=\"sm\"\n isHashColor={useHashColor}\n />\n </div>\n ))}\n </div>\n ) : null;\n }, [items, hasMoreItems, visibleItemsCount, getLabel, getColor, useHashColor, isDarkMode]);\n\n const renderItemTags = useCallback(\n (itemList: typeof items, keyPrefix: string) => {\n return itemList.map((item, index) => (\n <Tag\n key={`${keyPrefix}-${getId(item) || index}`}\n label={getLabel(item)}\n color={getColor(item)}\n size=\"sm\"\n isHashColor={useHashColor}\n />\n ));\n },\n [getId, getLabel, getColor, useHashColor, isDarkMode]\n );\n\n return (\n <div className={className}>\n {hasMoreItems ? (\n <Tooltip\n title={tooltipContent}\n placement={tooltipPlacement}\n classNames={{\n root: \"dynamic-items-tooltip\",\n }}\n arrow={false}\n styles={{ root: { zIndex: 1050 } }}\n color={isDarkMode ? \"black\" : \"white\"}\n >\n <div className=\"flex gap-2 items-center cursor-pointer\">\n {renderItemTags(displayItems, \"display\")}\n <Tag\n key=\"more-items-tag\"\n label={`+${items.length - visibleItemsCount} more`}\n color={moreTagColor}\n size=\"sm\"\n isHashColor={useHashColor}\n />\n </div>\n </Tooltip>\n ) : (\n <div className=\"flex gap-2 items-center\">\n {renderItemTags(displayItems, \"no-tooltip\")}\n </div>\n )}\n </div>\n );\n};\n\nDynamicItemsCellComponent.displayName = \"DynamicItemsCell\";\n\nexport const DynamicItemsCell = memo(DynamicItemsCellComponent) as typeof DynamicItemsCellComponent;\n\n","import cn from \"classnames\";\nimport type { FC } from \"react\";\nimport { useState } from \"react\";\nimport { Typography } from \"../../data-display/typography/Typography\";\n\n/**\n * Format a number according to the specified format\n */\nconst formatNumber = (\n value: string | number | undefined,\n format: string,\n precision?: number\n): string => {\n if (value === undefined || value === null || value === \"\") {\n return \"\";\n }\n\n const numValue = typeof value === \"string\" ? parseFloat(value) : value;\n\n if (isNaN(numValue)) {\n return String(value);\n }\n\n // Apply precision if specified\n const preciseValue =\n precision !== undefined ? numValue.toFixed(precision) : numValue;\n\n // Format based on the format string\n switch (format) {\n case \"comma\":\n return Number(preciseValue).toLocaleString(\"en-US\", {\n minimumFractionDigits: precision,\n maximumFractionDigits: precision,\n });\n case \"currency\":\n return Number(preciseValue).toLocaleString(\"en-US\", {\n style: \"currency\",\n currency: \"USD\",\n minimumFractionDigits: precision ?? 2,\n maximumFractionDigits: precision ?? 2,\n });\n case \"percent\":\n return `${Number(preciseValue).toLocaleString(\"en-US\", {\n minimumFractionDigits: precision,\n maximumFractionDigits: precision,\n })}%`;\n default:\n return String(preciseValue);\n }\n};\n\n/**\n * Props for the NumberInputField component\n */\nexport interface NumberInputFieldProps {\n /** Label text to display above the input */\n label?: string;\n /** Additional CSS classes for the input */\n className?: string;\n /** Whether the input is disabled */\n disabled?: boolean;\n /** Callback when the value changes */\n onChange?: (value: string | number) => void;\n /** Current value of the input */\n value?: string | number;\n /** Placeholder text */\n placeholder?: string;\n /** Minimum allowed value */\n min?: number;\n /** Maximum allowed value */\n max?: number;\n /** Step increment for number input */\n step?: number;\n /** Number format type: 'comma', 'currency', 'percent' */\n numberFormat?: string;\n /** Number of decimal places */\n precision?: number;\n /** Unique identifier for the input */\n id?: string;\n /** Custom inline styles */\n style?: React.CSSProperties;\n}\n\n/**\n * NumberInputField component provides a number input with optional formatting\n *\n * @example\n * ```tsx\n * <NumberInputField\n * label=\"Amount\"\n * value={1000}\n * onChange={setValue}\n * numberFormat=\"comma\"\n * precision={2}\n * />\n * ```\n */\nexport const NumberInputField: FC<NumberInputFieldProps> = ({\n label,\n className,\n disabled,\n onChange,\n value,\n numberFormat,\n precision = undefined,\n id,\n style,\n ...props\n}) => {\n const [isFocused, setIsFocused] = useState(false);\n\n const onFocus = () => {\n setIsFocused(true);\n };\n\n const onBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(false);\n onChange?.(e.target.value);\n };\n\n return (\n <div className=\"flex flex-col gap-1\">\n {label && (\n <Typography size=\"extra-small\" variant=\"regular\" appearance=\"subtitle\">\n {label}\n </Typography>\n )}\n <input\n id={id}\n type={isFocused ? \"number\" : \"text\"}\n className={cn(className)}\n disabled={disabled}\n onChange={({ target }) => onChange && onChange(target.value)}\n onFocus={onFocus}\n onBlur={onBlur}\n value={\n !isFocused && numberFormat\n ? formatNumber(value, numberFormat, precision)\n : value\n }\n style={{\n fontStyle: \"inherit\",\n ...style,\n }}\n autoComplete=\"off\"\n {...props}\n />\n </div>\n );\n};\n\nNumberInputField.displayName = \"NumberInputField\";\n\n","import { ChevronLeft } from '@mui/icons-material';\nimport cn from 'classnames';\nimport { motion } from 'framer-motion';\nimport { FC, HTMLAttributes } from 'react';\nimport { MdEdit, MdOutlineDragIndicator } from 'react-icons/md';\n\nimport { Typography } from '../../data-display/typography/Typography';\nimport IconButton from '../../button/IconButton';\nimport Radio from '../../button/Radio';\n\nexport type AccordionProps = HTMLAttributes<HTMLDivElement> & {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n title: any;\n toggle: () => void;\n isOpen: boolean;\n hoveringIndex?: number | null;\n index?: number;\n viewOnly?: boolean;\n onTitleClick?: (e: React.MouseEvent) => void;\n onSelect?: () => void;\n isChecked?: boolean;\n subTitle?: string;\n noSpace?: boolean;\n isDraggable?: boolean;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n sortableConfig?: Record<string, any>;\n headerClass?: string;\n icon?: JSX.Element;\n additionalHeader?: JSX.Element;\n id: string;\n isEditMode?: boolean;\n mainClass?: string;\n childrenClass?: string;\n};\n\n/**\n * Accordion component for collapsible content sections\n *\n * @example\n * ```tsx\n * <Accordion\n * id=\"my-accordion\"\n * title=\"Section Title\"\n * isOpen={isOpen}\n * toggle={() => setIsOpen(!isOpen)}\n * >\n * <div>Accordion content</div>\n * </Accordion>\n * ```\n */\nexport const Accordion: FC<AccordionProps> = ({\n children,\n title,\n toggle,\n isOpen,\n hoveringIndex,\n index,\n viewOnly,\n onTitleClick,\n isChecked,\n onSelect,\n subTitle,\n noSpace,\n isDraggable,\n sortableConfig,\n headerClass,\n icon,\n additionalHeader,\n mainClass,\n id,\n childrenClass,\n ...props\n}) => {\n return (\n <div id={id} className={`${!noSpace && 'mb-4'} ${isOpen ? 'pb-1' : ''} ${mainClass || ''}`} style={sortableConfig?.style} {...props}>\n <div\n className={cn(\n 'flex items-center justify-between cursor-pointer border border-neutral-200 dark:border-none bg-neutral-100 dark:bg-black-600 px-3 py-1 rounded-lg',\n headerClass,\n )}\n onClick={toggle}\n {...props}\n >\n <div onClick={(e) => (onTitleClick ? onTitleClick(e) : null)} className={`${isDraggable && 'flex'} w-full`}>\n {isDraggable && !viewOnly && (\n <button\n id={`btn-accordion-outline-drag-indicator`}\n className='flex items-center justify-center w-icon h-icon hover:transform hover:scale-125 transition-all duration-200 ease-in-out'\n {...sortableConfig?.attributes}\n {...sortableConfig?.listeners}\n >\n <MdOutlineDragIndicator height='10px' width='7px' color='#98A2B3' />\n </button>\n )}\n\n <div className={`flex items-center gap-1 w-full`}>\n {onSelect && (\n <Radio\n isChecked={isChecked}\n onSelect={(e) => {\n e.stopPropagation();\n onSelect();\n }}\n className='h-4 w-4 accent-[#366FE3]'\n />\n )}\n <div className='flex gap-2 items-center'>\n {icon}\n\n <Typography size='small' appearance='body' variant='medium' className='whitespace-nowrap'>\n {title}\n </Typography>\n </div>\n <Typography size='extra-small' appearance='title' variant='medium' className={`ml-1`}>\n {subTitle}\n </Typography>\n {additionalHeader}\n <span>\n {hoveringIndex === index && !viewOnly && (\n <IconButton variant='ghost'>\n <MdEdit size={16} className='ml-[8px]' />\n </IconButton>\n )}\n </span>\n </div>\n </div>\n <ChevronLeft sx={{ fontSize: 18 }} className={cn('text-neutral-900 dark:text-neutral-400', isOpen ? 'rotate-90' : '-rotate-90')} />\n </div>\n {isOpen ? <motion.div className={` ${!noSpace && 'p-4'} ${childrenClass}`}>{children}</motion.div> : null}\n </div>\n );\n};\n\nAccordion.displayName = 'Accordion';\n\n\n\n","import { Lock } from '@mui/icons-material';\nimport { Dropdown } from 'antd';\nimport { useEffect, useRef, useState } from 'react';\nimport { AiOutlineCheck } from 'react-icons/ai';\n\nimport { Typography } from '../../data-display/typography/Typography';\nimport Tooltip from '../../tooltip/Tooltip';\nimport { useEventListener } from '../../../hooks/useEventListener';\n\nexport type TStep = {\n label: string;\n description?: string;\n isLocked?: boolean;\n tooltipText?: string;\n};\n\nexport type TStepperProps = {\n steps: TStep[];\n currentStep: number;\n onClick?: (index: number) => void;\n appearance?: 'linear' | 'parallel';\n labelPosition?: 'top' | 'bottom' | 'inline' | 'top-right' | 'bottom-right';\n className?: string;\n showIndex?: boolean;\n disableOneMore?: boolean;\n lockConfig?: {\n isLocked?: boolean;\n tooltipText?: string;\n };\n /** Whether the main sidebar is open (affects responsive calculations) */\n isMainSideBarOpen?: boolean;\n /** Whether the authoring panel is open (affects responsive calculations) */\n isAuthoringOpen?: boolean;\n};\n\n/**\n * Stepper component for multi-step workflows\n *\n * @example\n * ```tsx\n * <Stepper\n * steps={[\n * { label: 'Step 1', description: 'First step' },\n * { label: 'Step 2', description: 'Second step' },\n * { label: 'Step 3', description: 'Third step' },\n * ]}\n * currentStep={1}\n * onClick={(index) => setCurrentStep(index)}\n * />\n * ```\n */\nconst Stepper = ({\n steps,\n currentStep,\n appearance = 'linear',\n labelPosition = 'inline',\n onClick,\n className,\n showIndex = true,\n disableOneMore = false,\n isMainSideBarOpen = false,\n isAuthoringOpen = false,\n}: TStepperProps) => {\n const stepsRef = useRef<HTMLDivElement | null>(null);\n const [visibleStepCounts, setVisibleStepCounts] = useState<number>(0);\n const [leftMostStep, setLeftMostStep] = useState<number>(0);\n const [rightMostStep, setRightMostStep] = useState<number>(0);\n const [leftTooltip, setLeftTooltip] = useState<string>('');\n const [rightTooltip, setRightTooltip] = useState<string>('');\n\n const getLabelDescriptionPosition = () => {\n if (labelPosition === 'top' || labelPosition === 'top-right') {\n return 'flex-col';\n } else if (labelPosition === 'bottom' || labelPosition === 'bottom-right') {\n return 'flex-col-reverse';\n } else if (appearance === 'linear') {\n return 'flex-row';\n } else {\n return 'flex-col';\n }\n };\n\n const handleClientWidth = () => {\n setTimeout(() => {\n setVisibleStepCounts(0);\n const moreWidth = 210;\n const stepTitleWidth = 225;\n let stepWidth = 0;\n let count = 0;\n for (let index = 0; index < steps.length; index++) {\n if (stepsRef?.current?.clientWidth && stepsRef?.current?.clientWidth > stepWidth + stepTitleWidth + moreWidth) {\n stepWidth += stepTitleWidth;\n count = index + 1;\n } else {\n break;\n }\n }\n setVisibleStepCounts(count);\n if (stepsRef?.current?.clientWidth && stepsRef?.current?.clientWidth < 480) {\n setVisibleStepCounts(steps?.length);\n }\n }, 300);\n };\n\n useEffect(() => {\n handleClientWidth();\n }, [isMainSideBarOpen, steps, currentStep]);\n\n useEffect(() => {\n setTimeout(() => {\n handleClientWidth();\n }, 300);\n }, [isAuthoringOpen]);\n\n useEffect(() => {\n if (visibleStepCounts > 0) {\n if (visibleStepCounts > currentStep) {\n let newRightTooltip = steps\n ?.slice(visibleStepCounts, steps?.length)\n ?.map((step) => step?.label)\n ?.join(', ');\n\n let rightCount = visibleStepCounts;\n if (disableOneMore && rightCount === steps.length - 1) {\n rightCount = steps.length;\n newRightTooltip = '';\n }\n setLeftMostStep(0);\n setRightMostStep(rightCount);\n setRightTooltip(newRightTooltip);\n } else {\n const mid = Math.floor((visibleStepCounts + 1) / 2);\n const remainingStepsFromRight = currentStep + mid - steps?.length;\n let rightCount = currentStep + mid;\n let leftCount = currentStep - Math.max(visibleStepCounts - mid, 0) - (remainingStepsFromRight > 0 ? remainingStepsFromRight : 0);\n let newLeftTooltip = steps\n ?.slice(0, leftCount)\n ?.map((step) => step?.label)\n ?.join(', ');\n let newRightTooltip = steps\n ?.slice(rightCount, steps?.length)\n ?.map((step) => step?.label)\n ?.join(', ');\n\n if (disableOneMore && leftCount === 1) {\n leftCount = 0;\n newLeftTooltip = '';\n }\n\n if (disableOneMore && rightCount === steps.length - 1) {\n rightCount = steps.length;\n newRightTooltip = '';\n }\n setLeftMostStep(leftCount);\n setRightMostStep(rightCount);\n setLeftTooltip(newLeftTooltip);\n setRightTooltip(newRightTooltip);\n }\n }\n }, [visibleStepCounts, isAuthoringOpen, isMainSideBarOpen, steps, currentStep]);\n\n useEventListener('resize', handleClientWidth);\n\n const stepDetails = (step: TStep, index: number, hideLine = false) => {\n return (\n <div\n key={index}\n onClick={() => onClick?.(index)}\n className={`flex ${index < steps.length - 1 || appearance == 'parallel' ? 'flex flex-grow' : ''} min-w-[200px] ${\n onClick ? 'cursor-pointer' : ''\n }`}\n >\n <div className={`w-full flex flex-col`}>\n <div className={`flex ${getLabelDescriptionPosition()} ${labelPosition === 'inline' && appearance === 'linear' ? 'items-center' : ''}`}>\n <div className={`${labelPosition === 'inline' ? 'max-w-[70%]' : 'w-full'} flex flex-col`}>\n <div className={`flex ${labelPosition === 'top-right' || labelPosition === 'bottom-right' ? 'justify-end' : ''}`}>\n <Tooltip title={step?.tooltipText}>\n <Typography\n size='small'\n variant='medium'\n className={`truncate flex items-center ${\n index <= currentStep ? 'text-primary-600 dark:text-primary-300' : 'text-neutral-400 dark:text-neutral-100'\n }`}\n appearance='custom'\n >\n {showIndex ? (\n <div\n className={`${\n appearance === 'parallel'\n ? 'flex items-center'\n : `w-6 min-w-[24px] h-6 ${\n index <= currentStep ? 'bg-primary-600' : 'bg-neutral-400 dark:bg-black-400'\n } rounded-full flex items-center justify-center text-white`\n }`}\n >\n {step?.isLocked ? (\n <div className='flex items-center justify-center'>\n <Lock sx={{ fontSize: 16 }} />\n </div>\n ) : (\n <>\n {currentStep > index && appearance === 'linear' ? (\n <AiOutlineCheck className='w-4 h-4' />\n ) : (\n <Typography\n size={`${appearance === 'parallel' ? 'small' : 'extra-small'}`}\n variant='medium'\n className='text-neutral-100'\n appearance='custom'\n >\n {index + 1}\n </Typography>\n )}\n </>\n )}\n </div>\n ) : null}\n\n <div className={`truncate ${labelPosition === 'inline' ? 'mx-2' : 'ml-2'} ${index <= currentStep ? '' : 'dark:text-black-200'}`}>\n {step?.label}\n </div>\n </Typography>\n </Tooltip>\n </div>\n\n {labelPosition !== 'inline' || appearance === 'parallel' ? (\n <div\n className={`flex ${\n labelPosition === 'top-right' || labelPosition === 'bottom-right' ? 'justify-end' : appearance === 'linear' ? 'ml-8' : ''\n }`}\n >\n <Typography\n size='extra-small'\n variant='medium'\n className={`truncate ${index === currentStep ? 'text-neutral-900 dark:text-white' : 'text-neutral-400 dark:text-neutral-600'}`}\n appearance='custom'\n >\n {step?.description || ''}\n </Typography>\n </div>\n ) : null}\n </div>\n {index < steps.length - (appearance === 'linear' && labelPosition === 'inline' ? 1 : 0) && !hideLine ? (\n <div\n className={`w-full flex-grow h-0.5 min-w-[70px] ${labelPosition !== 'inline' || appearance === 'parallel' ? 'my-2' : ''} ${\n index <= currentStep - (appearance === 'linear' && labelPosition === 'inline' ? 1 : 0) ? 'bg-primary-600' : 'bg-neutral-300'\n }`}\n />\n ) : null}\n </div>\n {labelPosition === 'inline' && appearance === 'linear' ? (\n <Typography\n size='extra-small'\n variant='medium'\n className={`ml-8 truncate ${index === currentStep ? 'text-neutral-900 dark:text-white' : 'text-neutral-400 dark:text-neutral-600'}`}\n appearance='custom'\n >\n {step?.description || ''}\n </Typography>\n ) : null}\n </div>\n </div>\n );\n };\n\n return (\n <div className={`w-full flex ${className}`} ref={stepsRef}>\n {leftMostStep > 0 ? (\n <div className={`flex ${appearance === 'parallel' ? 'flex-col' : ''}`}>\n {onClick ? (\n <Dropdown\n menu={{\n items: steps.slice(0, leftMostStep).map((step: TStep, index: number) => ({\n label: <div className='px-2 py-1'>{stepDetails(step, index, true)}</div>,\n key: index,\n })),\n }}\n trigger={['click']}\n >\n <Typography\n size='small'\n variant='medium'\n className={`px-2 ${steps.length - visibleStepCounts > 0 ? 'cursor-pointer' : 'cursor-not-allowed'}`}\n appearance='subtitle'\n >\n <Tooltip title={leftTooltip}>\n <div className='min-w-max'>\n {leftMostStep} More...\n </div>\n </Tooltip>\n </Typography>\n </Dropdown>\n ) : (\n <Typography\n size='small'\n variant='medium'\n className={`px-2 ${steps.length - visibleStepCounts > 0 ? 'cursor-pointer' : 'cursor-not-allowed'}`}\n appearance='subtitle'\n >\n <Tooltip title={leftTooltip}>\n <div className='min-w-max'>\n {leftMostStep} More...\n </div>\n </Tooltip>\n </Typography>\n )}\n <div className={`h-0.5 min-w-[40px] px-2 mr-2 bg-primary-600 ${appearance === 'parallel' ? 'mt-2' : 'mt-[11px]'}`} />\n </div>\n ) : null}\n\n <div className='w-full flex flex-wrap gap-3 '>\n {steps?.map((step: TStep, index: number) => {\n if (leftMostStep <= index && index < rightMostStep) {\n return stepDetails(step, index);\n }\n return null;\n })}\n </div>\n\n {steps.length - rightMostStep > 0 ? (\n <div className='flex flex-col'>\n {onClick ? (\n <Dropdown\n menu={{\n items: steps.slice(rightMostStep, steps?.length).map((step: TStep, index: number) => ({\n label: <div className='px-2 py-1'>{stepDetails(step, index + rightMostStep, true)}</div>,\n key: index,\n })),\n }}\n trigger={['click']}\n >\n <Typography\n size='small'\n variant='medium'\n className={`px-2 ${steps.length - rightMostStep > 0 ? 'cursor-pointer' : 'cursor-not-allowed'}`}\n appearance='subtitle'\n >\n <Tooltip title={rightTooltip}>\n <div className='min-w-max'>\n {steps.length - rightMostStep} More...\n </div>\n </Tooltip>\n </Typography>\n </Dropdown>\n ) : (\n <Typography\n size='small'\n variant='medium'\n className={`px-2 ${steps.length - rightMostStep > 0 ? 'cursor-pointer' : 'cursor-not-allowed'}`}\n appearance='subtitle'\n >\n <Tooltip title={rightTooltip}>\n <div className='min-w-max'>\n {steps.length - rightMostStep} More...\n </div>\n </Tooltip>\n </Typography>\n )}\n\n <div className={`h-0.5 min-w-[40px] px-2 ml-2 bg-neutral-300 ${appearance === 'parallel' ? 'mt-2' : 'hidden'}`} />\n </div>\n ) : null}\n </div>\n );\n};\n\nStepper.displayName = 'Stepper';\n\nexport default Stepper;\n\n\n\n","import { CgSpinner } from 'react-icons/cg';\nimport { Modal } from '../../data-display/modal/Modal';\nimport Button from '../../button/Button';\nimport cn from 'classnames';\nimport React, { useEffect, useState } from 'react';\n\nexport type IButtonStatus = \n | 'primary'\n | 'secondary'\n | 'secondary-neutral'\n | 'error'\n | 'success'\n | 'warning';\n\nexport type ConfirmPopUpProps = {\n children?: React.ReactElement;\n onCancel?: (closeByIcon?: boolean) => void;\n onOk: () => void;\n title: string;\n content: string;\n footer?: {\n justify?: string;\n okText?: string;\n cancelText?: string;\n okBtnType?: IButtonStatus;\n cancelBtnType?: IButtonStatus;\n };\n async?: (cb: ({ error }: { error: boolean }) => void) => Promise<void>;\n width?: number;\n forceVisible?: boolean;\n isVisibleOutside?: boolean;\n ableToConfirmByChildren?: boolean;\n parentContainer?: string;\n};\n\n/**\n * ConfirmPopUp component for confirmation dialogs\n *\n * @example\n * ```tsx\n * <ConfirmPopUp\n * title=\"Confirm Delete\"\n * content=\"Are you sure you want to delete this item?\"\n * onOk={() => handleDelete()}\n * onCancel={() => console.log('Cancelled')}\n * >\n * <Button>Delete</Button>\n * </ConfirmPopUp>\n * ```\n */\nconst ConfirmPopUp: React.FC<ConfirmPopUpProps> = ({\n children,\n onCancel,\n onOk,\n async,\n title,\n content,\n footer,\n width = 500,\n isVisibleOutside = false,\n ableToConfirmByChildren = true,\n parentContainer,\n}) => {\n const [isVisible, setIsVisible] = useState(false);\n const [isLoading, setIsLoading] = useState(false);\n\n const onClose = ({ closeByIcon }: { closeByIcon?: boolean }) => {\n setIsVisible(false);\n onCancel?.(closeByIcon);\n };\n\n const onOkHandler = () => {\n if (async) {\n setIsLoading(true);\n async(({ error }) => {\n if (error) {\n setIsLoading(false);\n } else {\n setIsLoading(false);\n onOk();\n setIsVisible(false);\n }\n });\n } else {\n onOk();\n setIsVisible(false);\n }\n };\n\n useEffect(() => {\n if (!children) {\n setIsVisible(isVisibleOutside);\n }\n }, [isVisibleOutside, children]);\n\n return (\n <>\n <Modal\n asForm\n width={width}\n title={<h1>{title}</h1>}\n parentContainer={parentContainer}\n open={isVisible}\n onCancel={() => onClose({ closeByIcon: true })}\n footer={[\n <div key='' className={cn('flex gap-2', footer?.justify || 'justify-end')}>\n <Button\n id={`btn-confirm-popup-close`}\n appearance='outline'\n status={footer?.cancelBtnType || 'secondary-neutral'}\n onClick={() => onClose({ closeByIcon: false })}\n className='mt-10'\n >\n {footer?.cancelText || 'Cancel'}\n </Button>\n <Button\n id={`btn-confirm-popup-${footer?.okText || 'Ok'}`}\n disabled={isLoading}\n status={footer?.okBtnType || 'primary'}\n onClick={onOkHandler}\n className='mt-10'\n type='submit'\n >\n {isLoading ? <CgSpinner className='spinner inline mr-2 mb-0.5' /> : null}\n {footer?.okText || 'Ok'}\n </Button>\n </div>,\n ]}\n >\n <div className='mt-5 mb-8'>\n <h1 className='text-neutral-400 font-inter text-base'>{content}</h1>\n </div>\n </Modal>\n {children\n ? ableToConfirmByChildren\n ? React.cloneElement(children, {\n onClick: () => ableToConfirmByChildren && setIsVisible(true),\n })\n : children\n : null}\n </>\n );\n};\n\nConfirmPopUp.displayName = 'ConfirmPopUp';\n\nexport default React.memo(ConfirmPopUp);\n\n\n\n","import { FC, ReactNode } from 'react';\nimport { Typography } from '../../data-display/typography/Typography';\nimport Text from '../../data-display/text/Text';\n\nexport type CardHeaderViewProps = {\n title: string;\n /** The link destination. If not provided, no link will be shown */\n to?: string;\n /** Whether the user has permission to see the link. Defaults to true */\n hasUserPermissions?: boolean;\n /** Custom view more text. Defaults to \"View More\" */\n viewMoreText?: string;\n /** Custom link component to use instead of anchor tag (for React Router, Next.js, etc) */\n LinkComponent?: FC<{ to: string; className?: string; onClick?: () => void; onMouseDown?: (e: React.MouseEvent) => void; onTouchStart?: (e: React.TouchEvent) => void; children: ReactNode }>;\n};\n\n/**\n * CardHeaderView component for card headers with optional \"View More\" link\n *\n * @example\n * ```tsx\n * // With default anchor link\n * <CardHeaderView title=\"Recent Items\" to=\"/items\" />\n *\n * // With React Router Link\n * import { Link } from 'react-router-dom';\n * <CardHeaderView title=\"Recent Items\" to=\"/items\" LinkComponent={Link} />\n * ```\n */\nexport const CardHeaderView: FC<CardHeaderViewProps> = ({\n title,\n to,\n hasUserPermissions = true,\n viewMoreText = 'View More',\n LinkComponent,\n}) => {\n const handleClick = () => {\n window.scrollTo(0, 0);\n };\n\n const handleLinkMouseDown = (e: React.MouseEvent) => {\n e.stopPropagation();\n };\n\n const handleLinkClick = () => {\n handleClick();\n };\n\n const handleLinkTouchStart = (e: React.TouchEvent) => {\n e.stopPropagation();\n };\n\n const linkClassName = 'text-primary-600 font-semibold font-inter text-sm cursor-pointer hover:text-primary-700';\n\n return (\n <div className='flex items-center justify-between mb-4'>\n <Typography variant='semibold' size='medium' appearance='body'>\n {title}\n </Typography>\n {hasUserPermissions && to ? (\n LinkComponent ? (\n <LinkComponent\n to={to}\n className={linkClassName}\n onClick={handleLinkClick}\n onMouseDown={handleLinkMouseDown}\n onTouchStart={handleLinkTouchStart}\n >\n <Text emptyTag text={viewMoreText} />\n </LinkComponent>\n ) : (\n <a\n href={to}\n className={linkClassName}\n onClick={handleLinkClick}\n onMouseDown={handleLinkMouseDown}\n onTouchStart={handleLinkTouchStart}\n >\n <Text emptyTag text={viewMoreText} />\n </a>\n )\n ) : null}\n </div>\n );\n};\n\nCardHeaderView.displayName = 'CardHeaderView';\n\n\n\n","import { FC, ReactNode, useMemo } from 'react';\nimport cn from 'classnames';\nimport { Banner } from '../../data-display/banner/Banner';\nimport { HelmetTitle } from '../../layout/HelmetTitle';\nimport { MODES, OPEN_DURATION_MS } from '../../../constants/layout';\n\nexport type CardMainProps = {\n title?: string;\n children: ReactNode;\n noPadding?: boolean;\n className?: string;\n noHeight?: boolean;\n noBanner?: boolean;\n noScrollbar?: boolean;\n /** Current mode - can be 'edit', 'focusEdit', 'comparison' */\n mode?: string | null;\n /** Display ID to show in banner */\n displayId?: string | null;\n};\n\n/**\n * CardMain component for main content areas with optional edit/comparison banners\n *\n * @example\n * ```tsx\n * <CardMain title=\"Page Title\" mode=\"edit\" displayId=\"DOC-001\">\n * <div>Page content</div>\n * </CardMain>\n * ```\n */\nexport const CardMain: FC<CardMainProps> = ({\n title,\n children,\n noPadding,\n className,\n noBanner,\n noScrollbar,\n mode,\n displayId,\n}) => {\n const currentMode = mode === MODES.EDIT || mode === MODES.FOCUS_EDIT ? 'edit' : mode === MODES.COMPARISON ? 'compare' : null;\n\n const isBannerVisible = useMemo(() => {\n return (currentMode === 'edit' && displayId && !noBanner) || currentMode === 'compare';\n }, [currentMode, displayId, noBanner]);\n\n return (\n <>\n <HelmetTitle title={title} />\n <div\n className={cn(\n `relative h-[calc(100vh-56px)] overflow-y-auto flex flex-col bg-primary-800 dark:bg-black-800`,\n `ease-in-out duration-${OPEN_DURATION_MS}`,\n className,\n )}\n >\n {currentMode === 'edit' && displayId && !noBanner ? (\n <Banner status='warning'>{`You're currently editing ${displayId || ''}`}</Banner>\n ) : currentMode === 'compare' ? (\n <Banner status='success'>{`You are now in Comparison Mode`}</Banner>\n ) : null}\n\n <div\n className={cn(\n `flex-1 overflow-y-auto overflow-x-hidden bg-gray-50 dark:bg-black-700 ${noScrollbar ? 'hide-scrollbar' : ''}`,\n noPadding ? 'p-0' : 'p-base',\n isBannerVisible ? 'rounded-tl-none' : '!rounded-tl-xl',\n )}\n id='app-body-container'\n >\n {children}\n </div>\n </div>\n </>\n );\n};\n\nCardMain.displayName = 'CardMain';\n\n\n\n","import { Close } from '@mui/icons-material';\nimport { FC, ReactNode } from 'react';\n\nimport { Card } from '../../data-display/card/Card';\nimport { HelmetTitle } from '../../layout/HelmetTitle';\nimport { Drawer } from '../../modal/drawer/Drawer';\n\nexport type TabContentDrawerConfig = {\n open: boolean;\n onClose: () => void;\n content: ReactNode;\n header: ReactNode;\n};\n\nexport type TabContentProps = {\n tabs?: ReactNode | false | null;\n title?: string;\n content: ReactNode;\n className?: string;\n noPadding?: boolean;\n noBorder?: boolean;\n drawerConfig?: TabContentDrawerConfig | null;\n noBorderTopContent?: boolean;\n};\n\n/**\n * TabContent component for tabbed content with optional drawer\n *\n * @example\n * ```tsx\n * <TabContent\n * title=\"Page Title\"\n * tabs={<Tabs items={tabItems} />}\n * content={<div>Tab content here</div>}\n * />\n * ```\n */\nexport const TabContent: FC<TabContentProps> = ({\n tabs,\n content,\n title,\n noPadding = false,\n drawerConfig,\n noBorderTopContent = false,\n noBorder,\n className,\n}) => {\n return (\n <>\n <HelmetTitle title={title} />\n <Card className={`${!noPadding && 'p-4'} relative ${className || ''}`}>\n {tabs && (\n <>\n <div className='mb-4'>{tabs}</div>\n {!noBorder && (\n <div className={`${!noBorderTopContent && 'mb-4'}`}>\n <hr className='w-full bg-neutral-200 dark:bg-black-800' />\n </div>\n )}\n </>\n )}\n <div className={`flex flex-col flex-1`}>{content}</div>\n {drawerConfig && (\n <div id='tab-content-drawer-parent'>\n <Drawer\n title={\n <div className='flex items-center gap-2 justify-between'>\n {drawerConfig.header}{' '}\n <Close\n sx={{ fontSize: 18 }}\n onClick={() => drawerConfig?.onClose()}\n className='text-neutral-900 dark:text-neutral-100 cursor-pointer'\n />\n </div>\n }\n width={400}\n getContainer={false}\n open={drawerConfig.open}\n onClose={() => drawerConfig?.onClose()}\n closable={false}\n mask={false}\n classNames={{\n content: 'rounded-br-xl !p-0',\n body: '!p-0',\n }}\n placement='right'\n styles={{\n body: {\n padding: 0,\n backgroundColor: 'rgb(249 250 251)',\n },\n }}\n parentContainer='tab-content-drawer-parent'\n >\n {drawerConfig.content}\n </Drawer>\n </div>\n )}\n </Card>\n </>\n );\n};\n\nTabContent.displayName = 'TabContent';\n\n\n\n","import {\n DndContext,\n DragEndEvent,\n DragOverEvent,\n DragStartEvent,\n MouseSensor,\n TouchSensor,\n rectIntersection,\n useSensor,\n useSensors,\n} from '@dnd-kit/core';\nimport { ReactNode } from 'react';\n\nexport type DraggableContainerProps = {\n onDragEnd: (event: DragEndEvent) => void;\n onDragStart?: (event: DragStartEvent) => void;\n onDragOver?: (event: DragOverEvent) => void;\n children: ReactNode;\n};\n\n/**\n * DraggableContainer component wraps dnd-kit DndContext with sensible defaults\n *\n * @example\n * ```tsx\n * <DraggableContainer\n * onDragEnd={(event) => handleDragEnd(event)}\n * onDragStart={(event) => handleDragStart(event)}\n * >\n * <SortableContext items={items}>\n * {items.map((item) => (\n * <SortableItem key={item.id} id={item.id} />\n * ))}\n * </SortableContext>\n * </DraggableContainer>\n * ```\n */\nexport const DraggableContainer = ({ onDragEnd, onDragStart, onDragOver, children }: DraggableContainerProps) => {\n const sensors = useSensors(\n useSensor(MouseSensor, {\n activationConstraint: {\n distance: 5,\n },\n }),\n useSensor(TouchSensor, {\n activationConstraint: {\n delay: 300,\n tolerance: 5,\n },\n }),\n );\n\n return (\n <DndContext\n onDragEnd={onDragEnd}\n sensors={sensors}\n collisionDetection={rectIntersection}\n onDragStart={onDragStart}\n onDragOver={onDragOver}\n >\n {children}\n </DndContext>\n );\n};\n\nDraggableContainer.displayName = 'DraggableContainer';\n\n\n\n","import { DragOverlay as DndDragOverlay, DropAnimation, defaultDropAnimation } from '@dnd-kit/core';\nimport { createPortal } from 'react-dom';\nimport { ReactNode } from 'react';\n\nexport type DragOverlayProps = {\n children: ReactNode;\n /** ID of the container to portal the overlay into. Defaults to 'full-screen-container' then document.body */\n containerId?: string;\n};\n\n/**\n * DragOverlay component for rendering dragged item preview\n *\n * @example\n * ```tsx\n * <DraggableContainer onDragEnd={handleDragEnd}>\n * <SortableContext items={items}>\n * {items.map((item) => <SortableItem key={item.id} {...item} />)}\n * </SortableContext>\n * <DragOverlay>\n * {activeItem ? <ItemPreview {...activeItem} /> : null}\n * </DragOverlay>\n * </DraggableContainer>\n * ```\n */\nexport const DragOverlay = ({ children, containerId = 'full-screen-container' }: DragOverlayProps) => {\n const dropAnimation: DropAnimation = {\n ...defaultDropAnimation,\n duration: 50,\n };\n\n const container = typeof document !== 'undefined' \n ? (document.getElementById(containerId) || document.body)\n : null;\n\n if (!container) {\n return null;\n }\n\n return createPortal(\n <DndDragOverlay adjustScale={false} dropAnimation={dropAnimation} className='relative flex flex-col w-full justify-center items-center'>\n {children}\n </DndDragOverlay>,\n container,\n );\n};\n\nDragOverlay.displayName = 'DragOverlay';\n\n\n\n","import cn from 'classnames';\nimport React, { ReactNode, memo } from 'react';\n\n/** Default navbar height in pixels */\nconst NAVBAR_HEIGHT = 56;\n/** Animation duration in milliseconds */\nconst OPEN_DURATION_MS = 500;\n/** Width of expanded sidebar in pixels */\nconst EXPANDED_SIDEBAR_WIDTH = 240;\n/** Width of collapsed sidebar in pixels */\nconst CLOSED_SIDEBAR_WIDTH = 60;\n\nexport type SidebarProps = {\n children: ReactNode;\n /** Whether the sidebar should take full screen width minus the main sidebar */\n isFullScreen?: boolean;\n className?: string;\n /** Default width when not in fullscreen mode */\n defaultSize?: number | string;\n /** Custom height. Defaults to viewport height minus navbar */\n height?: string;\n /** Whether the main sidebar is expanded */\n isMainSideBarOpen?: boolean;\n};\n\n/**\n * Sidebar component for secondary navigation or content panels\n *\n * @example\n * ```tsx\n * <Sidebar isMainSideBarOpen={true}>\n * <nav>Sidebar content</nav>\n * </Sidebar>\n * ```\n */\nconst Sidebar: React.FC<SidebarProps> = ({\n children,\n isFullScreen = false,\n className = '',\n defaultSize = '25%',\n height,\n isMainSideBarOpen = false,\n}) => {\n const widthStyle = isFullScreen\n ? `calc(100% - ${isMainSideBarOpen ? EXPANDED_SIDEBAR_WIDTH : CLOSED_SIDEBAR_WIDTH}px)`\n : defaultSize;\n\n return (\n <div\n className={cn(\n 'bg-white dark:bg-black-800 flex-shrink-0 transition-all ease-in-out',\n `duration-${OPEN_DURATION_MS}`,\n className,\n )}\n style={{\n width: widthStyle,\n height: height || `calc(100vh - ${NAVBAR_HEIGHT}px)`,\n left: isFullScreen ? `${isMainSideBarOpen ? EXPANDED_SIDEBAR_WIDTH : CLOSED_SIDEBAR_WIDTH}px` : undefined,\n }}\n >\n {children}\n </div>\n );\n};\n\nSidebar.displayName = 'Sidebar';\n\nexport default memo(Sidebar);\n\n\n\n","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If <html> has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on <html>\n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `<html>` and `<body>` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n });\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref) {\n var name = _ref.name,\n _ref$options = _ref.options,\n options = _ref$options === void 0 ? {} : _ref$options,\n effect = _ref.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n if (typeof Map !== 'undefined') {\r\n return Map;\r\n }\r\n /**\r\n * Returns index in provided array that matches the specified key.\r\n *\r\n * @param {Array<Array>} arr\r\n * @param {*} key\r\n * @returns {number}\r\n */\r\n function getIndex(arr, key) {\r\n var result = -1;\r\n arr.some(function (entry, index) {\r\n if (entry[0] === key) {\r\n result = index;\r\n return true;\r\n }\r\n return false;\r\n });\r\n return result;\r\n }\r\n return /** @class */ (function () {\r\n function class_1() {\r\n this.__entries__ = [];\r\n }\r\n Object.defineProperty(class_1.prototype, \"size\", {\r\n /**\r\n * @returns {boolean}\r\n */\r\n get: function () {\r\n return this.__entries__.length;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * @param {*} key\r\n * @returns {*}\r\n */\r\n class_1.prototype.get = function (key) {\r\n var index = getIndex(this.__entries__, key);\r\n var entry = this.__entries__[index];\r\n return entry && entry[1];\r\n };\r\n /**\r\n * @param {*} key\r\n * @param {*} value\r\n * @returns {void}\r\n */\r\n class_1.prototype.set = function (key, value) {\r\n var index = getIndex(this.__entries__, key);\r\n if (~index) {\r\n this.__entries__[index][1] = value;\r\n }\r\n else {\r\n this.__entries__.push([key, value]);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.delete = function (key) {\r\n var entries = this.__entries__;\r\n var index = getIndex(entries, key);\r\n if (~index) {\r\n entries.splice(index, 1);\r\n }\r\n };\r\n /**\r\n * @param {*} key\r\n * @returns {void}\r\n */\r\n class_1.prototype.has = function (key) {\r\n return !!~getIndex(this.__entries__, key);\r\n };\r\n /**\r\n * @returns {void}\r\n */\r\n class_1.prototype.clear = function () {\r\n this.__entries__.splice(0);\r\n };\r\n /**\r\n * @param {Function} callback\r\n * @param {*} [ctx=null]\r\n * @returns {void}\r\n */\r\n class_1.prototype.forEach = function (callback, ctx) {\r\n if (ctx === void 0) { ctx = null; }\r\n for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n var entry = _a[_i];\r\n callback.call(ctx, entry[1], entry[0]);\r\n }\r\n };\r\n return class_1;\r\n }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n if (typeof global !== 'undefined' && global.Math === Math) {\r\n return global;\r\n }\r\n if (typeof self !== 'undefined' && self.Math === Math) {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined' && window.Math === Math) {\r\n return window;\r\n }\r\n // eslint-disable-next-line no-new-func\r\n return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n if (typeof requestAnimationFrame === 'function') {\r\n // It's required to use a bounded function because IE sometimes throws\r\n // an \"Invalid calling object\" error if rAF is invoked without the global\r\n // object on the left hand side.\r\n return requestAnimationFrame.bind(global$1);\r\n }\r\n return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n /**\r\n * Invokes the original callback function and schedules new invocation if\r\n * the \"proxy\" was called during current request.\r\n *\r\n * @returns {void}\r\n */\r\n function resolvePending() {\r\n if (leadingCall) {\r\n leadingCall = false;\r\n callback();\r\n }\r\n if (trailingCall) {\r\n proxy();\r\n }\r\n }\r\n /**\r\n * Callback invoked after the specified delay. It will further postpone\r\n * invocation of the original function delegating it to the\r\n * requestAnimationFrame.\r\n *\r\n * @returns {void}\r\n */\r\n function timeoutCallback() {\r\n requestAnimationFrame$1(resolvePending);\r\n }\r\n /**\r\n * Schedules invocation of the original function.\r\n *\r\n * @returns {void}\r\n */\r\n function proxy() {\r\n var timeStamp = Date.now();\r\n if (leadingCall) {\r\n // Reject immediately following calls.\r\n if (timeStamp - lastCallTime < trailingTimeout) {\r\n return;\r\n }\r\n // Schedule new call to be in invoked when the pending one is resolved.\r\n // This is important for \"transitions\" which never actually start\r\n // immediately so there is a chance that we might miss one if change\r\n // happens amids the pending invocation.\r\n trailingCall = true;\r\n }\r\n else {\r\n leadingCall = true;\r\n trailingCall = false;\r\n setTimeout(timeoutCallback, delay);\r\n }\r\n lastCallTime = timeStamp;\r\n }\r\n return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserverController.\r\n *\r\n * @private\r\n */\r\n function ResizeObserverController() {\r\n /**\r\n * Indicates whether DOM listeners have been added.\r\n *\r\n * @private {boolean}\r\n */\r\n this.connected_ = false;\r\n /**\r\n * Tells that controller has subscribed for Mutation Events.\r\n *\r\n * @private {boolean}\r\n */\r\n this.mutationEventsAdded_ = false;\r\n /**\r\n * Keeps reference to the instance of MutationObserver.\r\n *\r\n * @private {MutationObserver}\r\n */\r\n this.mutationsObserver_ = null;\r\n /**\r\n * A list of connected observers.\r\n *\r\n * @private {Array<ResizeObserverSPI>}\r\n */\r\n this.observers_ = [];\r\n this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n }\r\n /**\r\n * Adds observer to observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be added.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.addObserver = function (observer) {\r\n if (!~this.observers_.indexOf(observer)) {\r\n this.observers_.push(observer);\r\n }\r\n // Add listeners if they haven't been added yet.\r\n if (!this.connected_) {\r\n this.connect_();\r\n }\r\n };\r\n /**\r\n * Removes observer from observers list.\r\n *\r\n * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.removeObserver = function (observer) {\r\n var observers = this.observers_;\r\n var index = observers.indexOf(observer);\r\n // Remove observer if it's present in registry.\r\n if (~index) {\r\n observers.splice(index, 1);\r\n }\r\n // Remove listeners if controller has no connected observers.\r\n if (!observers.length && this.connected_) {\r\n this.disconnect_();\r\n }\r\n };\r\n /**\r\n * Invokes the update of observers. It will continue running updates insofar\r\n * it detects changes.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.refresh = function () {\r\n var changesDetected = this.updateObservers_();\r\n // Continue running updates if changes have been detected as there might\r\n // be future ones caused by CSS transitions.\r\n if (changesDetected) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Updates every observer from observers list and notifies them of queued\r\n * entries.\r\n *\r\n * @private\r\n * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n * dimensions of it's elements.\r\n */\r\n ResizeObserverController.prototype.updateObservers_ = function () {\r\n // Collect observers that have active observations.\r\n var activeObservers = this.observers_.filter(function (observer) {\r\n return observer.gatherActive(), observer.hasActive();\r\n });\r\n // Deliver notifications in a separate cycle in order to avoid any\r\n // collisions between observers, e.g. when multiple instances of\r\n // ResizeObserver are tracking the same element and the callback of one\r\n // of them changes content dimensions of the observed target. Sometimes\r\n // this may result in notifications being blocked for the rest of observers.\r\n activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n return activeObservers.length > 0;\r\n };\r\n /**\r\n * Initializes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.connect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already added.\r\n if (!isBrowser || this.connected_) {\r\n return;\r\n }\r\n // Subscription to the \"Transitionend\" event is used as a workaround for\r\n // delayed transitions. This way it's possible to capture at least the\r\n // final state of an element.\r\n document.addEventListener('transitionend', this.onTransitionEnd_);\r\n window.addEventListener('resize', this.refresh);\r\n if (mutationObserverSupported) {\r\n this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n this.mutationsObserver_.observe(document, {\r\n attributes: true,\r\n childList: true,\r\n characterData: true,\r\n subtree: true\r\n });\r\n }\r\n else {\r\n document.addEventListener('DOMSubtreeModified', this.refresh);\r\n this.mutationEventsAdded_ = true;\r\n }\r\n this.connected_ = true;\r\n };\r\n /**\r\n * Removes DOM listeners.\r\n *\r\n * @private\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.disconnect_ = function () {\r\n // Do nothing if running in a non-browser environment or if listeners\r\n // have been already removed.\r\n if (!isBrowser || !this.connected_) {\r\n return;\r\n }\r\n document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n window.removeEventListener('resize', this.refresh);\r\n if (this.mutationsObserver_) {\r\n this.mutationsObserver_.disconnect();\r\n }\r\n if (this.mutationEventsAdded_) {\r\n document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n }\r\n this.mutationsObserver_ = null;\r\n this.mutationEventsAdded_ = false;\r\n this.connected_ = false;\r\n };\r\n /**\r\n * \"Transitionend\" event handler.\r\n *\r\n * @private\r\n * @param {TransitionEvent} event\r\n * @returns {void}\r\n */\r\n ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n // Detect whether transition may affect dimensions of an element.\r\n var isReflowProperty = transitionKeys.some(function (key) {\r\n return !!~propertyName.indexOf(key);\r\n });\r\n if (isReflowProperty) {\r\n this.refresh();\r\n }\r\n };\r\n /**\r\n * Returns instance of the ResizeObserverController.\r\n *\r\n * @returns {ResizeObserverController}\r\n */\r\n ResizeObserverController.getInstance = function () {\r\n if (!this.instance_) {\r\n this.instance_ = new ResizeObserverController();\r\n }\r\n return this.instance_;\r\n };\r\n /**\r\n * Holds reference to the controller's instance.\r\n *\r\n * @private {ResizeObserverController}\r\n */\r\n ResizeObserverController.instance_ = null;\r\n return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n var key = _a[_i];\r\n Object.defineProperty(target, key, {\r\n value: props[key],\r\n enumerable: false,\r\n writable: false,\r\n configurable: true\r\n });\r\n }\r\n return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n // Assume that the element is an instance of Node, which means that it\r\n // has the \"ownerDocument\" property from which we can retrieve a\r\n // corresponding global object.\r\n var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n // Return the local global object if it's not possible extract one from\r\n // provided element.\r\n return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n var positions = [];\r\n for (var _i = 1; _i < arguments.length; _i++) {\r\n positions[_i - 1] = arguments[_i];\r\n }\r\n return positions.reduce(function (size, position) {\r\n var value = styles['border-' + position + '-width'];\r\n return size + toFloat(value);\r\n }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n var positions = ['top', 'right', 'bottom', 'left'];\r\n var paddings = {};\r\n for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n var position = positions_1[_i];\r\n var value = styles['padding-' + position];\r\n paddings[position] = toFloat(value);\r\n }\r\n return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n * to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n var bbox = target.getBBox();\r\n return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n // Client width & height properties can't be\r\n // used exclusively as they provide rounded values.\r\n var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n // By this condition we can catch all non-replaced inline, hidden and\r\n // detached elements. Though elements with width & height properties less\r\n // than 0.5 will be discarded as well.\r\n //\r\n // Without it we would need to implement separate methods for each of\r\n // those cases and it's not possible to perform a precise and performance\r\n // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n // gives wrong results for elements with width & height less than 0.5.\r\n if (!clientWidth && !clientHeight) {\r\n return emptyRect;\r\n }\r\n var styles = getWindowOf(target).getComputedStyle(target);\r\n var paddings = getPaddings(styles);\r\n var horizPad = paddings.left + paddings.right;\r\n var vertPad = paddings.top + paddings.bottom;\r\n // Computed styles of width & height are being used because they are the\r\n // only dimensions available to JS that contain non-rounded values. It could\r\n // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n var width = toFloat(styles.width), height = toFloat(styles.height);\r\n // Width & height include paddings and borders when the 'border-box' box\r\n // model is applied (except for IE).\r\n if (styles.boxSizing === 'border-box') {\r\n // Following conditions are required to handle Internet Explorer which\r\n // doesn't include paddings and borders to computed CSS dimensions.\r\n //\r\n // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n // properties then it's either IE, and thus we don't need to subtract\r\n // anything, or an element merely doesn't have paddings/borders styles.\r\n if (Math.round(width + horizPad) !== clientWidth) {\r\n width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n }\r\n if (Math.round(height + vertPad) !== clientHeight) {\r\n height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n }\r\n }\r\n // Following steps can't be applied to the document's root element as its\r\n // client[Width/Height] properties represent viewport area of the window.\r\n // Besides, it's as well not necessary as the <html> itself neither has\r\n // rendered scroll bars nor it can be clipped.\r\n if (!isDocumentElement(target)) {\r\n // In some browsers (only in Firefox, actually) CSS width & height\r\n // include scroll bars size which can be removed at this step as scroll\r\n // bars are the only difference between rounded dimensions + paddings\r\n // and \"client\" properties, though that is not always true in Chrome.\r\n var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n // Chrome has a rather weird rounding of \"client\" properties.\r\n // E.g. for an element with content width of 314.2px it sometimes gives\r\n // the client width of 315px and for the width of 314.7px it may give\r\n // 314px. And it doesn't happen all the time. So just ignore this delta\r\n // as a non-relevant.\r\n if (Math.abs(vertScrollbar) !== 1) {\r\n width -= vertScrollbar;\r\n }\r\n if (Math.abs(horizScrollbar) !== 1) {\r\n height -= horizScrollbar;\r\n }\r\n }\r\n return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n // interface.\r\n if (typeof SVGGraphicsElement !== 'undefined') {\r\n return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n }\r\n // If it's so, then check that element is at least an instance of the\r\n // SVGElement and that it has the \"getBBox\" method.\r\n // eslint-disable-next-line no-extra-parens\r\n return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n if (!isBrowser) {\r\n return emptyRect;\r\n }\r\n if (isSVGGraphicsElement(target)) {\r\n return getSVGContentRect(target);\r\n }\r\n return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n var rect = Object.create(Constr.prototype);\r\n // Rectangle's properties are not writable and non-enumerable.\r\n defineConfigurable(rect, {\r\n x: x, y: y, width: width, height: height,\r\n top: y,\r\n right: x + width,\r\n bottom: height + y,\r\n left: x\r\n });\r\n return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObservation.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n */\r\n function ResizeObservation(target) {\r\n /**\r\n * Broadcasted width of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastWidth = 0;\r\n /**\r\n * Broadcasted height of content rectangle.\r\n *\r\n * @type {number}\r\n */\r\n this.broadcastHeight = 0;\r\n /**\r\n * Reference to the last observed content rectangle.\r\n *\r\n * @private {DOMRectInit}\r\n */\r\n this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n this.target = target;\r\n }\r\n /**\r\n * Updates content rectangle and tells whether it's width or height properties\r\n * have changed since the last broadcast.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObservation.prototype.isActive = function () {\r\n var rect = getContentRect(this.target);\r\n this.contentRect_ = rect;\r\n return (rect.width !== this.broadcastWidth ||\r\n rect.height !== this.broadcastHeight);\r\n };\r\n /**\r\n * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n * from the corresponding properties of the last observed content rectangle.\r\n *\r\n * @returns {DOMRectInit} Last observed content rectangle.\r\n */\r\n ResizeObservation.prototype.broadcastRect = function () {\r\n var rect = this.contentRect_;\r\n this.broadcastWidth = rect.width;\r\n this.broadcastHeight = rect.height;\r\n return rect;\r\n };\r\n return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n /**\r\n * Creates an instance of ResizeObserverEntry.\r\n *\r\n * @param {Element} target - Element that is being observed.\r\n * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n */\r\n function ResizeObserverEntry(target, rectInit) {\r\n var contentRect = createReadOnlyRect(rectInit);\r\n // According to the specification following properties are not writable\r\n // and are also not enumerable in the native implementation.\r\n //\r\n // Property accessors are not being used as they'd require to define a\r\n // private WeakMap storage which may cause memory leaks in browsers that\r\n // don't support this type of collections.\r\n defineConfigurable(this, { target: target, contentRect: contentRect });\r\n }\r\n return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n * when one of the observed elements changes it's content dimensions.\r\n * @param {ResizeObserverController} controller - Controller instance which\r\n * is responsible for the updates of observer.\r\n * @param {ResizeObserver} callbackCtx - Reference to the public\r\n * ResizeObserver instance which will be passed to callback function.\r\n */\r\n function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n /**\r\n * Collection of resize observations that have detected changes in dimensions\r\n * of elements.\r\n *\r\n * @private {Array<ResizeObservation>}\r\n */\r\n this.activeObservations_ = [];\r\n /**\r\n * Registry of the ResizeObservation instances.\r\n *\r\n * @private {Map<Element, ResizeObservation>}\r\n */\r\n this.observations_ = new MapShim();\r\n if (typeof callback !== 'function') {\r\n throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n }\r\n this.callback_ = callback;\r\n this.controller_ = controller;\r\n this.callbackCtx_ = callbackCtx;\r\n }\r\n /**\r\n * Starts observing provided element.\r\n *\r\n * @param {Element} target - Element to be observed.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.observe = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is already being observed.\r\n if (observations.has(target)) {\r\n return;\r\n }\r\n observations.set(target, new ResizeObservation(target));\r\n this.controller_.addObserver(this);\r\n // Force the update of observations.\r\n this.controller_.refresh();\r\n };\r\n /**\r\n * Stops observing provided element.\r\n *\r\n * @param {Element} target - Element to stop observing.\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.unobserve = function (target) {\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n // Do nothing if current environment doesn't have the Element interface.\r\n if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n return;\r\n }\r\n if (!(target instanceof getWindowOf(target).Element)) {\r\n throw new TypeError('parameter 1 is not of type \"Element\".');\r\n }\r\n var observations = this.observations_;\r\n // Do nothing if element is not being observed.\r\n if (!observations.has(target)) {\r\n return;\r\n }\r\n observations.delete(target);\r\n if (!observations.size) {\r\n this.controller_.removeObserver(this);\r\n }\r\n };\r\n /**\r\n * Stops observing all elements.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.disconnect = function () {\r\n this.clearActive();\r\n this.observations_.clear();\r\n this.controller_.removeObserver(this);\r\n };\r\n /**\r\n * Collects observation instances the associated element of which has changed\r\n * it's content rectangle.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.gatherActive = function () {\r\n var _this = this;\r\n this.clearActive();\r\n this.observations_.forEach(function (observation) {\r\n if (observation.isActive()) {\r\n _this.activeObservations_.push(observation);\r\n }\r\n });\r\n };\r\n /**\r\n * Invokes initial callback function with a list of ResizeObserverEntry\r\n * instances collected from active resize observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.broadcastActive = function () {\r\n // Do nothing if observer doesn't have active observations.\r\n if (!this.hasActive()) {\r\n return;\r\n }\r\n var ctx = this.callbackCtx_;\r\n // Create ResizeObserverEntry instance for every active observation.\r\n var entries = this.activeObservations_.map(function (observation) {\r\n return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n });\r\n this.callback_.call(ctx, entries, ctx);\r\n this.clearActive();\r\n };\r\n /**\r\n * Clears the collection of active observations.\r\n *\r\n * @returns {void}\r\n */\r\n ResizeObserverSPI.prototype.clearActive = function () {\r\n this.activeObservations_.splice(0);\r\n };\r\n /**\r\n * Tells whether observer has active observations.\r\n *\r\n * @returns {boolean}\r\n */\r\n ResizeObserverSPI.prototype.hasActive = function () {\r\n return this.activeObservations_.length > 0;\r\n };\r\n return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n /**\r\n * Creates a new instance of ResizeObserver.\r\n *\r\n * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n * dimensions of the observed elements change.\r\n */\r\n function ResizeObserver(callback) {\r\n if (!(this instanceof ResizeObserver)) {\r\n throw new TypeError('Cannot call a class as a function.');\r\n }\r\n if (!arguments.length) {\r\n throw new TypeError('1 argument required, but only 0 present.');\r\n }\r\n var controller = ResizeObserverController.getInstance();\r\n var observer = new ResizeObserverSPI(callback, controller, this);\r\n observers.set(this, observer);\r\n }\r\n return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n 'observe',\r\n 'unobserve',\r\n 'disconnect'\r\n].forEach(function (method) {\r\n ResizeObserver.prototype[method] = function () {\r\n var _a;\r\n return (_a = observers.get(this))[method].apply(_a, arguments);\r\n };\r\n});\n\nvar index = (function () {\r\n // Export existing implementation if available.\r\n if (typeof global$1.ResizeObserver !== 'undefined') {\r\n return global$1.ResizeObserver;\r\n }\r\n return ResizeObserver;\r\n})();\n\nexport default index;\n","import { createPopper } from '@popperjs/core';\nimport { motion } from 'framer-motion';\nimport React, { useEffect, useRef } from 'react';\nimport { createPortal } from 'react-dom';\nimport ResizeObserver from 'resize-observer-polyfill';\n\nexport type UserAvatarPopperPlacement =\n | 'auto'\n | 'top'\n | 'bottom'\n | 'left'\n | 'right'\n | 'top-start'\n | 'top-end'\n | 'bottom-start'\n | 'bottom-end'\n | 'right-start'\n | 'right-end'\n | 'left-start'\n | 'left-end';\n\nexport interface UserAvatarPopperProps {\n isOpen: boolean;\n onClose: () => void;\n anchorEl: HTMLElement | null;\n placement?: UserAvatarPopperPlacement;\n children: React.ReactNode;\n className?: string;\n}\n\nexport const UserAvatarPopper = ({ isOpen, onClose, anchorEl, placement = 'right-start', children, className }: UserAvatarPopperProps) => {\n const popperRef = useRef<HTMLDivElement>(null);\n const popperInstance = useRef<ReturnType<typeof createPopper> | null>(null);\n\n useEffect(() => {\n if (isOpen && anchorEl && popperRef.current) {\n popperInstance.current = createPopper(anchorEl, popperRef.current, {\n placement: placement ?? 'right',\n strategy: 'fixed',\n modifiers: [\n {\n name: 'offset',\n options: {\n offset: [0, 8],\n },\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: 'viewport',\n padding: 8,\n },\n },\n {\n name: 'flip',\n options: {\n fallbackPlacements: ['left-start'],\n },\n },\n ],\n });\n\n const updatePopper = async () => {\n if (popperInstance.current) {\n await popperInstance.current.update();\n if (popperRef.current) {\n popperRef.current.style.visibility = 'visible';\n }\n }\n };\n\n if (popperRef.current) {\n popperRef.current.style.visibility = 'hidden';\n }\n updatePopper();\n }\n\n return () => {\n if (popperInstance.current) {\n popperInstance.current.destroy();\n popperInstance.current = null;\n }\n };\n }, [isOpen, anchorEl, placement]);\n\n useEffect(() => {\n if (!isOpen || !popperRef.current || !popperInstance.current) return;\n\n const observer = new ResizeObserver(() => {\n popperInstance.current && popperInstance.current.update();\n });\n\n observer.observe(popperRef.current);\n\n return () => {\n observer.disconnect();\n };\n }, [isOpen, children]);\n\n if (!isOpen) return null;\n\n return createPortal(\n <div ref={popperRef} className='z-[9999]' onMouseEnter={(e) => e.stopPropagation()} onMouseLeave={onClose}>\n <motion.div\n initial={{ opacity: 0, scale: 0.95 }}\n animate={{ opacity: 1, scale: 1 }}\n exit={{ opacity: 0, scale: 0.95 }}\n transition={{ duration: 0.15 }}\n className={className}\n >\n {children}\n </motion.div>\n </div>,\n document.body,\n );\n};\n\n\n\n","import cn from 'classnames';\nimport { useMemo } from 'react';\nimport { Typography } from '../data-display/typography/Typography';\n\n/**\n * Formats a date for relative display\n */\nconst formatRelativeDate = (dateString: string): string => {\n const date = new Date(dateString);\n const now = new Date();\n const diffMs = now.getTime() - date.getTime();\n const diffSeconds = Math.floor(diffMs / 1000);\n const diffMinutes = Math.floor(diffSeconds / 60);\n const diffHours = Math.floor(diffMinutes / 60);\n const diffDays = Math.floor(diffHours / 24);\n\n if (diffSeconds < 60) return 'just now';\n if (diffMinutes < 60) return `${diffMinutes}m ago`;\n if (diffHours < 24) return `${diffHours}h ago`;\n if (diffDays < 7) return `${diffDays}d ago`;\n return date.toLocaleDateString();\n};\n\nexport interface StatusInfoRowProps {\n isActive?: boolean;\n lastViewedOn?: string;\n}\n\nexport const StatusInfoRow = ({ isActive, lastViewedOn }: StatusInfoRowProps) => {\n const timeText = useMemo(() => {\n if (!lastViewedOn) return null;\n return formatRelativeDate(lastViewedOn);\n }, [lastViewedOn]);\n\n const isRecent = useMemo(() => {\n if (!lastViewedOn) return false;\n const date = new Date(lastViewedOn);\n const now = new Date();\n const diffInHours = (now.getTime() - date.getTime()) / (1000 * 60 * 60);\n return diffInHours < 24;\n }, [lastViewedOn]);\n\n if (!isActive && !timeText) {\n return null;\n }\n\n const getStatusContent = () => {\n if (isActive) {\n return (\n <div className='flex items-center gap-2'>\n <div className='w-2 h-2 rounded-full bg-primary-600'></div>\n <Typography size='small' variant='medium' className='text-primary-600'>\n Online now\n </Typography>\n </div>\n );\n }\n\n if (timeText) {\n const textColor = isRecent ? 'text-primary-300' : 'text-neutral-400';\n\n return (\n <div className='flex items-center gap-2'>\n <div className={cn('w-2 h-2 rounded-full', isRecent ? 'bg-primary-300' : 'bg-neutral-400')}></div>\n <Typography size='small' variant='medium' className={textColor}>\n {timeText}\n </Typography>\n </div>\n );\n }\n\n return null;\n };\n\n return (\n <div className='flex justify-between items-center'>\n <Typography size='small' variant='medium' className='mr-5' appearance='body'>\n Status\n </Typography>\n {getStatusContent()}\n </div>\n );\n};\n\n\n\n","export const sizeClasses = {\n xs: 'w-4 h-4 text-[7px] font-bold',\n sm: 'w-6 h-6 text-[10px] font-bold',\n md: 'w-9 h-9 text-[14px] font-semibold',\n lg: 'w-12 h-12 text-[18px] font-semibold',\n xl: 'w-16 h-16 text-[24px] font-semibold',\n};\n\nexport const getInitials = (name: string) => {\n if (!name) return '';\n const nameArray = name?.split(' ');\n const initials =\n nameArray?.length === 1\n ? nameArray[0]?.charAt(0)?.toUpperCase()\n : nameArray[0]?.charAt(0)?.toUpperCase() +\n nameArray[nameArray?.length - 1]?.charAt(0)?.toUpperCase();\n return initials;\n};\n\n\n\n","import React from 'react';\n\ntype PersonIconProps = {\n fill?: string;\n className?: string;\n};\n\nexport const PersonIcon: React.FC<PersonIconProps> = ({ fill = '#98A2B3', className = '' }) => {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='16'\n height='16'\n viewBox='0 0 16 16'\n fill='none'\n className={className}\n >\n <path\n d='M8 8C6.9 8 5.95833 7.60833 5.175 6.825C4.39167 6.04167 4 5.1 4 4C4 2.9 4.39167 1.95833 5.175 1.175C5.95833 0.391667 6.9 0 8 0C9.1 0 10.0417 0.391667 10.825 1.175C11.6083 1.95833 12 2.9 12 4C12 5.1 11.6083 6.04167 10.825 6.825C10.0417 7.60833 9.1 8 8 8ZM2 16C1.45 16 0.979167 15.8042 0.5875 15.4125C0.195833 15.0208 0 14.55 0 14V13.2C0 12.6333 0.145833 12.1125 0.4375 11.6375C0.729167 11.1625 1.11667 10.8 1.6 10.55C2.63333 10.0333 3.68333 9.64583 4.75 9.3875C5.81667 9.12917 6.9 9 8 9C9.1 9 10.1833 9.12917 11.25 9.3875C12.3167 9.64583 13.3667 10.0333 14.4 10.55C14.8833 10.8 15.2708 11.1625 15.5625 11.6375C15.8542 12.1125 16 12.6333 16 13.2V14C16 14.55 15.8042 15.0208 15.4125 15.4125C15.0208 15.8042 14.55 16 14 16H2Z'\n fill={fill}\n />\n </svg>\n );\n};\n\n\n\n","import { useCallback, useRef, useState } from 'react';\n\ntype Position = {\n vertical: 'top' | 'bottom';\n horizontal: 'left' | 'right';\n};\n\nexport const useDynamicPosition = () => {\n const triggerRef = useRef<HTMLDivElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const [position, setPosition] = useState<Position>({\n vertical: 'bottom',\n horizontal: 'left',\n });\n\n const [isVisible, setIsVisible] = useState(false);\n\n const calculatePosition = useCallback(() => {\n if (!triggerRef.current || !dropdownRef.current) return;\n\n const triggerRect = triggerRef.current.getBoundingClientRect();\n const dropdownRect = dropdownRef.current.getBoundingClientRect();\n const viewportWidth = window.innerWidth;\n const viewportHeight = window.innerHeight;\n\n const spaceBelow = viewportHeight - triggerRect.bottom;\n const spaceAbove = triggerRect.top;\n const spaceRight = viewportWidth - triggerRect.left;\n const spaceLeft = triggerRect.right;\n\n const vertical = spaceBelow >= dropdownRect.height || spaceBelow >= spaceAbove ? 'bottom' : 'top';\n\n const horizontal = spaceRight >= dropdownRect.width || spaceRight >= spaceLeft ? 'left' : 'right';\n\n setPosition({ vertical, horizontal });\n }, []);\n\n const show = useCallback(() => {\n setIsVisible(true);\n setTimeout(() => {\n calculatePosition();\n }, 0);\n }, [calculatePosition]);\n\n const hide = useCallback(() => {\n setIsVisible(false);\n }, []);\n\n return {\n triggerRef,\n dropdownRef,\n position,\n isVisible,\n show,\n hide,\n };\n};\n\n\n\n","import { GroupsOutlined } from '@mui/icons-material';\nimport WarningRoundedIcon from '@mui/icons-material/WarningRounded';\nimport cn from 'classnames';\nimport { FC, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { Typography } from '../data-display/typography/Typography';\nimport { Tag } from '../data-display/tag/Tag';\nimport { Skeleton } from '../data-display/skeleton/Skeleton';\nimport { getFlagComponentRectangleMd } from '../../utils/countryFlags';\nimport { UserAvatarPopper } from './UserAvatarPopper';\nimport { StatusInfoRow } from './StatusInfoRow';\nimport { sizeClasses, getInitials } from './constants';\nimport { PersonIcon } from './PersonIcon';\nimport { useDynamicPosition } from './useDynamicPosition';\n\nexport type UserAvatarSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\n\nexport type UserDetailsTeam = {\n id?: string;\n name: string;\n color?: string;\n};\n\nexport type UserDetails = {\n email?: string;\n username?: string;\n teams?: UserDetailsTeam[];\n group?: string;\n clearanceLevel?: number | string;\n region?: string;\n};\n\nexport type UserAvatarProps = {\n firstName?: string;\n lastName?: string;\n email?: string;\n enablePopper?: boolean;\n profilePic?: string;\n size?: UserAvatarSize;\n hoverSize?: UserAvatarSize;\n containerClassName?: string;\n className?: string;\n userId?: string;\n lastViewedOn?: string;\n isActive?: boolean;\n statusIndicator?: boolean;\n /** User details to display in the popper - replaces the useTeamMemberFilter hook */\n userDetails?: UserDetails | null;\n /** Whether user details are being fetched */\n isFetchingUserDetails?: boolean;\n /** Optional token for authenticated image loading */\n authToken?: string;\n /** Callback triggered when mouse enters the avatar */\n onHover?: () => void;\n};\n\nconst InfoRow = ({ label, content }: { label: string; content: React.ReactNode }) => (\n <div className='flex justify-between items-center'>\n <Typography size='small' variant='medium' className='mr-5' appearance='body'>\n {label}\n </Typography>\n {content}\n </div>\n);\n\n/**\n * UserAvatar component for displaying user profile pictures with hover popper\n *\n * @example\n * ```tsx\n * <UserAvatar\n * firstName=\"John\"\n * lastName=\"Doe\"\n * email=\"john@example.com\"\n * profilePic=\"/avatar.jpg\"\n * userDetails={{ teams: [{ name: 'Engineering', color: '#0066cc' }], group: 'Admin' }}\n * />\n * ```\n */\nexport const UserAvatar: FC<UserAvatarProps> = ({\n firstName,\n lastName,\n email,\n profilePic,\n size = 'md',\n hoverSize = 'lg',\n containerClassName = '',\n enablePopper = true,\n className,\n userId,\n lastViewedOn,\n isActive,\n statusIndicator = false,\n userDetails,\n isFetchingUserDetails = false,\n authToken,\n onHover,\n}) => {\n if (firstName === 'All' && lastName === 'Users') {\n return (\n <div className='p-1 rounded-full bg-primary-100 dark:bg-black-600 flex items-center justify-center'>\n <GroupsOutlined sx={{ fontSize: 16 }} className='text-primary-600 dark:text-primary-600' />\n </div>\n );\n }\n\n const [visible, setVisible] = useState<boolean>(false);\n const [imageLoaded, setImageLoaded] = useState<boolean>(false);\n\n const avatarSizeClass = sizeClasses[size];\n\n const {\n triggerRef: moreTagRef,\n dropdownRef,\n position: dropdownPosition,\n isVisible: showMore,\n show: handleShowMore,\n hide: handleHideMore,\n } = useDynamicPosition();\n\n const imageCacheRef = useRef<{ [key: string]: string }>({});\n\n const isRecent = useMemo(() => {\n if (isActive || !lastViewedOn) return false;\n const date = new Date(lastViewedOn);\n const now = new Date();\n const diffInHours = (now.getTime() - date.getTime()) / (1000 * 60 * 60);\n return diffInHours < 24;\n }, [isActive, lastViewedOn]);\n\n const getStatusColor = () => {\n if (isActive) return 'bg-primary-600 dark:bg-primary-600';\n if (isRecent) return 'bg-primary-300 dark:bg-primary-300';\n if (lastViewedOn) return 'bg-neutral-400 dark:bg-neutral-400';\n return null;\n };\n\n const statusColor = getStatusColor();\n\n const getBorderColor = () => {\n if (isActive) return 'border-primary-600 dark:border-primary-600';\n if (isRecent) return 'border-primary-300 dark:border-primary-300';\n if (lastViewedOn) return 'border-neutral-400 dark:border-neutral-400';\n return 'border-primary-200 dark:border-neutral-800';\n };\n\n const borderColor = getBorderColor();\n\n const indicatorSizes = {\n xs: 'w-2 h-2',\n sm: 'w-2.5 h-2.5',\n md: 'w-3 h-3',\n lg: 'w-3.5 h-3.5',\n xl: 'w-4 h-4',\n };\n\n useEffect(() => {\n if (profilePic) {\n if (imageCacheRef.current[profilePic]) {\n setImageLoaded(true);\n } else {\n setImageLoaded(false);\n const img = new Image();\n const token = authToken || (typeof localStorage !== 'undefined' ? localStorage.getItem('token') : null);\n img.src = profilePic + (token ? '?token=' + token : '');\n img.onload = () => {\n imageCacheRef.current[profilePic] = img.src;\n setImageLoaded(true);\n };\n img.onerror = () => {\n setImageLoaded(false);\n };\n }\n } else {\n setImageLoaded(false);\n }\n }, [profilePic, authToken]);\n\n useEffect(() => {\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n };\n }, []);\n\n const cachedSrc = profilePic ? imageCacheRef.current[profilePic] : undefined;\n\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const popperRef = useRef<HTMLDivElement | null>(null);\n\n const handleMouseEnter = () => {\n onHover?.();\n if (firstName && lastName && enablePopper) {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n timerRef.current = setTimeout(() => {\n setVisible(true);\n }, 300);\n }\n };\n\n const handleMouseLeave = (event: React.MouseEvent) => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n timerRef.current = setTimeout(() => {\n if (popperRef.current && !popperRef.current.contains(event.relatedTarget as Node)) {\n setVisible(false);\n }\n }, 200);\n };\n\n const popperContent = (\n <div\n ref={popperRef}\n className='bg-white dark:bg-black-800 shadow rounded-lg border border-neutral-200 dark:border-black-700'\n onMouseEnter={() => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n }}\n onMouseLeave={(event) => handleMouseLeave(event)}\n >\n <div className='flex flex-col gap-1 items-center p-5'>\n <div className={cn('relative', sizeClasses[hoverSize])}>\n {cachedSrc && imageLoaded ? (\n <img\n src={cachedSrc}\n alt='Profile'\n className={cn('rounded-full border-2 object-cover w-full h-full', borderColor)}\n onError={() => setImageLoaded(false)}\n />\n ) : (\n <div\n className={cn(\n 'bg-primary-100 dark:bg-primary-950 text-primary-600 border-2 flex items-center justify-center rounded-full w-full h-full',\n borderColor,\n )}\n >\n {getInitials((firstName || '') + ' ' + (lastName || ''))}\n </div>\n )}\n\n {statusColor && (\n <div\n className={cn(\n 'absolute bottom-0 right-0 rounded-full border-2 border-white dark:border-black-800',\n indicatorSizes[hoverSize],\n statusColor,\n )}\n />\n )}\n </div>\n <div className='flex flex-row gap-1 items-center justify-center'>\n <Typography size='medium' variant='semibold' className='w-full text-center'>\n {firstName || ''} {lastName || ''}\n </Typography>\n {userDetails?.region && <span>{getFlagComponentRectangleMd(userDetails?.region)}</span>}\n </div>\n\n <Typography size='small' variant='medium' appearance='body'>\n {email || userDetails?.email || ''}\n </Typography>\n </div>\n\n {userId &&\n (isFetchingUserDetails ? (\n <div className='p-5'>\n <Skeleton />\n </div>\n ) : userId && (userDetails?.teams || userDetails?.clearanceLevel || userDetails?.group) ? (\n <div className='flex flex-col gap-4 bg-neutral-50 border-t border-neutral-200 dark:bg-black-700 dark:border-none p-5 rounded-b-lg'>\n <StatusInfoRow isActive={isActive} lastViewedOn={lastViewedOn} />\n {userDetails.username && (\n <InfoRow\n label='Username'\n content={\n <div className='flex gap-2'>\n <Typography size='small' variant='medium' appearance='body'>\n {userDetails.username}\n </Typography>\n </div>\n }\n />\n )}\n\n {userDetails?.teams && userDetails?.teams?.length > 0 && (\n <InfoRow\n label='Team'\n content={\n <div className='flex gap-2'>\n {userDetails?.teams?.length > 0 && (\n <Tag\n key={userDetails?.teams[0]?.id}\n label={userDetails?.teams[0]?.name}\n color={userDetails?.teams[0]?.color || '#e38715'}\n size='sm'\n isHashColor\n />\n )}\n {userDetails?.teams?.length >= 2 && (\n <div\n ref={moreTagRef}\n className='relative cursor-pointer'\n onMouseEnter={handleShowMore}\n onMouseLeave={handleHideMore}\n onClick={(e) => e.stopPropagation()}\n >\n <Tag key={1} label={`+ ${userDetails?.teams?.length - 1} More`} color='#004f08' size='sm' isHashColor />\n\n {showMore && (\n <div\n ref={dropdownRef}\n className={cn(\n 'absolute w-max bg-white dark:text-black-200 dark:bg-black-800 shadow-md border border-neutral-200 dark:border-black-800 rounded-md px-2 z-10 overflow-y-auto max-h-60',\n {\n 'top-full': dropdownPosition.vertical === 'bottom',\n 'bottom-full': dropdownPosition.vertical === 'top',\n 'left-0': dropdownPosition.horizontal === 'left',\n 'right-0': dropdownPosition.horizontal === 'right',\n },\n )}\n onMouseEnter={handleShowMore}\n onMouseLeave={handleHideMore}\n >\n {userDetails?.teams?.slice(1)?.map((team, index) => (\n <div key={team?.id || index} className='my-2'>\n <Tag key={team?.id} label={team?.name} color={team?.color || '#4A5568'} size='sm' isHashColor />\n </div>\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n }\n />\n )}\n\n {userDetails?.group && (\n <InfoRow\n label='Role'\n content={<Tag key={userDetails?.group} label={userDetails?.group} color='#004094' size='sm' isHashColor />}\n />\n )}\n\n {userDetails?.clearanceLevel && (\n <InfoRow\n label='Clearance Level'\n content={\n <Tag\n key={String(userDetails?.clearanceLevel)}\n label={`Level ${userDetails?.clearanceLevel}`}\n color='#b30000'\n size='sm'\n isHashColor\n />\n }\n />\n )}\n </div>\n ) : (\n <div className='flex items-center justify-center bg-neutral-50 dark:bg-black-700 border-t border-neutral-200 dark:border-black-700 p-5 rounded-b-lg'>\n <Typography className='flex items-center justify-center gap-1' size='extra-small' variant='medium' appearance='body'>\n <WarningRoundedIcon\n sx={{\n height: '16px',\n width: '16px',\n color: '#F04438',\n }}\n />\n No other information found!\n </Typography>\n </div>\n ))}\n </div>\n );\n const containerRef = useRef<HTMLDivElement>(null);\n return (\n <div\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n className={cn('inline-block relative cursor-pointer', className)}\n ref={containerRef}\n >\n <div className={cn('relative', containerClassName || avatarSizeClass)}>\n {cachedSrc && imageLoaded ? (\n <img\n src={cachedSrc}\n alt='Profile'\n className={cn('rounded-full border object-cover w-full h-full', borderColor)}\n onError={() => setImageLoaded(false)}\n />\n ) : firstName && lastName ? (\n <div\n className={cn(\n 'bg-primary-100 text-primary-600 flex items-center justify-center rounded-full border dark:bg-black-700 w-full h-full',\n borderColor,\n )}\n >\n {getInitials((firstName || '') + ' ' + (lastName || ''))}\n </div>\n ) : (\n <div className={cn(borderColor, 'p-1 rounded-full bg-neutral-200 dark:bg-black-600 flex items-center justify-center border w-full h-full')}>\n <PersonIcon fill='#98A2B3' />\n </div>\n )}\n\n {statusIndicator && statusColor && (\n <div\n className={cn(\n 'absolute bottom-0 right-0 rounded-full border border-white dark:border-black-800 w-2 h-2',\n\n statusColor,\n )}\n />\n )}\n </div>\n <UserAvatarPopper\n isOpen={visible}\n onClose={() => setVisible(false)}\n anchorEl={containerRef.current}\n className='bg-white dark:bg-black-700 shadow rounded-lg border border-neutral-200 dark:border-black-600'\n >\n {popperContent}\n </UserAvatarPopper>\n </div>\n );\n};\n\nUserAvatar.displayName = 'UserAvatar';\n\n","import { FC } from 'react';\nimport cn from 'classnames';\n\nexport type NameInitialLogoProps = {\n initials: string;\n rounded: boolean;\n className?: string;\n};\n\n/**\n * NameInitialLogo component displays user initials in a styled container\n *\n * @example\n * ```tsx\n * <NameInitialLogo initials=\"JD\" rounded={true} />\n * ```\n */\nexport const NameInitialLogo: FC<NameInitialLogoProps> = ({ initials, rounded, className }) => {\n return (\n <div\n className={cn(\n 'bg-[#016DCF] p-2.5 flex items-center justify-center',\n {\n 'rounded-full': rounded,\n },\n className\n )}\n >\n <span className=\"text-white font-inter\">{initials}</span>\n </div>\n );\n};\n\nNameInitialLogo.displayName = 'NameInitialLogo';\n\n\n\n","import React, { useState } from 'react';\nimport { NameInitialLogo } from './NameInitialLogo';\nimport { getInitials } from './constants';\n\nexport type UserProfilePicProps = {\n url?: string;\n className: string;\n username?: string;\n};\n\n/**\n * UserProfilePic component displays a user's profile picture with fallback to initials\n *\n * @example\n * ```tsx\n * <UserProfilePic url=\"/avatar.jpg\" username=\"John Doe\" className=\"w-10 h-10 rounded-full\" />\n * ```\n */\nexport const UserProfilePic: React.FC<UserProfilePicProps> = ({ url, username, className = '' }) => {\n const [isInvalid, setIsInvalid] = useState<boolean>(false);\n\n return (\n <>\n {url && !isInvalid ? (\n <img\n className={className}\n alt='user profile'\n src={url}\n onError={() => setIsInvalid(true)}\n />\n ) : (\n <NameInitialLogo\n className={className}\n initials={username ? getInitials(username) : ''}\n rounded={true}\n />\n )}\n </>\n );\n};\n\nUserProfilePic.displayName = 'UserProfilePic';\n\n\n\n","import { FC, SVGProps } from 'react';\n\ninterface IconProps extends Omit<SVGProps<SVGSVGElement>, 'fill'> {\n fill?: string;\n size?: number;\n className?: string;\n}\n\nexport const TrashOutlineIcon: FC<IconProps> = ({ fill = 'currentColor', size = 20, ...props }) => (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width={size}\n height={size}\n viewBox='0 0 20 20'\n fill='none'\n {...props}\n >\n <g clipPath='url(#clip0_79_37568)'>\n <path\n d='M5.00033 15.8333C5.00033 16.75 5.75033 17.5 6.66699 17.5H13.3337C14.2503 17.5 15.0003 16.75 15.0003 15.8333V7.5C15.0003 6.58333 14.2503 5.83333 13.3337 5.83333H6.66699C5.75033 5.83333 5.00033 6.58333 5.00033 7.5V15.8333ZM7.50033 7.5H12.5003C12.9587 7.5 13.3337 7.875 13.3337 8.33333V15C13.3337 15.4583 12.9587 15.8333 12.5003 15.8333H7.50033C7.04199 15.8333 6.66699 15.4583 6.66699 15V8.33333C6.66699 7.875 7.04199 7.5 7.50033 7.5ZM12.917 3.33333L12.3253 2.74167C12.1753 2.59167 11.9587 2.5 11.742 2.5H8.25866C8.04199 2.5 7.82533 2.59167 7.67533 2.74167L7.08366 3.33333H5.00033C4.54199 3.33333 4.16699 3.70833 4.16699 4.16667C4.16699 4.625 4.54199 5 5.00033 5H15.0003C15.4587 5 15.8337 4.625 15.8337 4.16667C15.8337 3.70833 15.4587 3.33333 15.0003 3.33333H12.917Z'\n fill={fill}\n />\n </g>\n <defs>\n <clipPath id='clip0_79_37568'>\n <rect width='20' height='20' fill='white' />\n </clipPath>\n </defs>\n </svg>\n);\n\nexport const DownloadIcon: FC<IconProps> = ({ className, size = 24, fill = 'currentColor' }) => (\n <svg\n width={size}\n className={className}\n height={size}\n viewBox='0 0 24 24'\n fill={fill}\n xmlns='http://www.w3.org/2000/svg'\n >\n <g id='download'>\n <g mask='url(#mask0_12019_10777)'>\n <path\n id='download_2'\n d='M12 15.575C11.8667 15.575 11.7417 15.554 11.625 15.512C11.5083 15.4707 11.4 15.4 11.3 15.3L7.7 11.7C7.51667 11.5167 7.425 11.2833 7.425 11C7.425 10.7167 7.51667 10.4833 7.7 10.3C7.88333 10.1167 8.12067 10.0207 8.412 10.012C8.704 10.004 8.94167 10.0917 9.125 10.275L11 12.15V5C11 4.71667 11.096 4.479 11.288 4.287C11.4793 4.09567 11.7167 4 12 4C12.2833 4 12.521 4.09567 12.713 4.287C12.9043 4.479 13 4.71667 13 5V12.15L14.875 10.275C15.0583 10.0917 15.296 10.004 15.588 10.012C15.8793 10.0207 16.1167 10.1167 16.3 10.3C16.4833 10.4833 16.575 10.7167 16.575 11C16.575 11.2833 16.4833 11.5167 16.3 11.7L12.7 15.3C12.6 15.4 12.4917 15.4707 12.375 15.512C12.2583 15.554 12.1333 15.575 12 15.575ZM6 20C5.45 20 4.97933 19.8043 4.588 19.413C4.196 19.021 4 18.55 4 18V16C4 15.7167 4.09567 15.479 4.287 15.287C4.479 15.0957 4.71667 15 5 15C5.28333 15 5.521 15.0957 5.713 15.287C5.90433 15.479 6 15.7167 6 16V18H18V16C18 15.7167 18.096 15.479 18.288 15.287C18.4793 15.0957 18.7167 15 19 15C19.2833 15 19.5207 15.0957 19.712 15.287C19.904 15.479 20 15.7167 20 16V18C20 18.55 19.8043 19.021 19.413 19.413C19.021 19.8043 18.55 20 18 20H6Z'\n fill={fill}\n />\n </g>\n </g>\n </svg>\n);\n\nexport const FilePdfIcon: FC<IconProps> = ({ fill = 'currentColor', size = 20 }) => (\n <svg width={size} height={size} viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <path\n d='M5 17.5C4.54167 17.5 4.14917 17.3367 3.8225 17.01C3.49583 16.6833 3.33333 16.2917 3.33333 15.8333V4.16667C3.33333 3.70833 3.49667 3.31583 3.82333 2.98917C4.15 2.6625 4.54167 2.5 5 2.5H11.6667L16.6667 7.5V15.8333C16.6667 16.2917 16.5033 16.6842 16.1767 17.0108C15.85 17.3375 15.4583 17.5 15 17.5H5ZM10.8333 8.33333V3.33333H5V15.8333H15V8.33333H10.8333Z'\n fill={fill}\n />\n <path\n d='M6.66667 13.3333H8.33333V12.5H9.16667C9.39167 12.5 9.58333 12.4167 9.75 12.25C9.91667 12.0833 10 11.8917 10 11.6667V10.8333C10 10.6083 9.91667 10.4167 9.75 10.25C9.58333 10.0833 9.39167 10 9.16667 10H6.66667V13.3333ZM7.5 11.6667V10.8333H8.33333V11.6667H7.5Z'\n fill={fill}\n />\n <path\n d='M10.8333 13.3333H12.5C12.7361 13.3333 12.9306 13.25 13.0833 13.0833C13.2361 12.9167 13.3194 12.7222 13.3333 12.5V10.8333C13.3333 10.6083 13.25 10.4167 13.0833 10.25C12.9167 10.0833 12.7222 10 12.5 10H10.8333V13.3333ZM11.6667 12.5V10.8333H12.5V12.5H11.6667Z'\n fill={fill}\n />\n </svg>\n);\n\nexport const FileDescriptionIcon: FC<IconProps> = ({ fill = 'currentColor', size = 20 }) => (\n <svg width={size} height={size} viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <path\n d='M5 17.5C4.54167 17.5 4.14917 17.3367 3.8225 17.01C3.49583 16.6833 3.33333 16.2917 3.33333 15.8333V4.16667C3.33333 3.70833 3.49667 3.31583 3.82333 2.98917C4.15 2.6625 4.54167 2.5 5 2.5H11.6667L16.6667 7.5V15.8333C16.6667 16.2917 16.5033 16.6842 16.1767 17.0108C15.85 17.3375 15.4583 17.5 15 17.5H5ZM10.8333 8.33333V3.33333H5V15.8333H15V8.33333H10.8333ZM6.66667 14.1667V12.5H13.3333V14.1667H6.66667ZM6.66667 11.6667V10H13.3333V11.6667H6.66667ZM6.66667 9.16667V7.5H9.16667V9.16667H6.66667Z'\n fill={fill}\n />\n </svg>\n);\n\nexport const SpinnerIcon: FC<IconProps> = ({ className, size = 40 }) => (\n <svg\n className={className}\n width={size}\n height={size}\n viewBox='0 0 24 24'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n >\n <circle\n cx='12'\n cy='12'\n r='10'\n stroke='currentColor'\n strokeWidth='4'\n strokeLinecap='round'\n strokeDasharray='32'\n strokeDashoffset='12'\n />\n </svg>\n);\n\n\n\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Upload } from 'antd';\nimport { type FC, useEffect, useState } from 'react';\nimport { Typography } from '../../data-display/typography/Typography';\nimport { TrashOutlineIcon, DownloadIcon, FilePdfIcon, FileDescriptionIcon, SpinnerIcon } from './icons';\nimport { useTranslation } from 'react-i18next';\nimport { buildQueryParams } from '../../../utils/utilities';\nimport { systemMessages } from '../../../utils/messageConstants';\nimport { toast } from 'react-toastify';\n\nconst { Dragger } = Upload;\n\n/**\n * Context interface for global agreement draggable functionality\n */\nexport interface GlobalAgreementDraggableContext {\n isOpenedAnotherFileUpload?: boolean;\n setIsOpenedAnotherFileUpload?: (value: boolean) => void;\n}\n\n/**\n * File upload service interface\n */\nexport interface FileUploadService {\n uploadFileToFileServer: (formData: FormData, queryParams: string) => Promise<{ fileUrl: string; fileName: string }>;\n deleteFileFromFileServer: (fileName: string, queryParams: string) => Promise<void>;\n}\n\n/**\n * System messages interface\n */\nexport interface SystemMessages {\n fileSizeLimit: (size: string, unit: string) => string;\n}\n\nexport type FileUploadDraggerProps = {\n /** Callback to receive the uploaded file */\n getFile: (file: any, fileName?: string) => any;\n /** Description text to display */\n description?: string;\n /** Error message to display */\n errorMessage?: string;\n /** Whether the upload is disabled */\n disabled?: boolean;\n /** Default file to display */\n defaultFile?: any;\n /** Accepted file types */\n acceptedFiles?: string;\n /** Whether loading state is active */\n isLoading?: boolean;\n /** Convert file to base64 */\n asBase64?: boolean;\n /** Upload to file server */\n toFileServer?: boolean;\n /** Whether file is currently uploading */\n fileUploading?: boolean;\n /** Callback to set file uploading state */\n setFileUploading?: (fileUploading: boolean) => void;\n /** Upload to document server path */\n uploadToDocServer?: boolean;\n /** Unique identifier for the upload */\n id?: string;\n /** Allow multiple file uploads */\n multiple?: boolean;\n /** Get original file name */\n getRealFileName?: boolean;\n /** Callback when file is deleted */\n onDelete?: () => void;\n /** Hide the selected file display */\n hideSelectedFile?: boolean;\n /** Maximum file size in bytes */\n maxSize?: number;\n /** File upload service */\n fileUploadService?: FileUploadService;\n /** Custom click to upload text */\n clickToUploadText?: string;\n /** Custom drag and drop text */\n dragAndDropText?: string;\n};\n\n// Default max size: 200MB\nconst DEFAULT_MAX_SIZE = 200 * 1024 * 1024;\n\nexport const FileUpload: FC<FileUploadDraggerProps> = ({\n getFile,\n id,\n description,\n errorMessage = null,\n disabled = false,\n defaultFile = null,\n acceptedFiles = null,\n isLoading = false,\n asBase64 = false,\n toFileServer = false,\n setFileUploading,\n fileUploading = false,\n uploadToDocServer = false,\n multiple = false,\n getRealFileName = false,\n onDelete: onDeleteProp,\n hideSelectedFile = false,\n maxSize = DEFAULT_MAX_SIZE,\n fileUploadService,\n clickToUploadText,\n dragAndDropText,\n}) => {\n const [selectedFile, setSelectedFile] = useState<any>(null);\n const [fileList, setFileList] = useState<any[]>([]);\n const [borderColor, setBorderColor] = useState('#d9d9d9');\n const [hover, setHover] = useState(false);\n const [uploadedFileData, setUploadedFileData] = useState<any>(null);\n const { t } = useTranslation();\n \n const handleUploadFilesToServer = async () => {\n if (!fileUploadService || !buildQueryParams) {\n console.warn('FileUploadDragger: File server upload requires fileUploadService, buildQueryParams, and getToken');\n return;\n }\n\n Promise.all(\n fileList.map((_file) => {\n const formData = new FormData();\n formData.append('file', _file);\n\n const queryParams = buildQueryParams({\n file_upload_path: uploadToDocServer ? 'document-server' : null,\n token: localStorage.getItem('token'),\n });\n\n return fileUploadService.uploadFileToFileServer(formData, queryParams);\n }),\n ).then((response) => {\n getFile(\n multiple ? response?.map((file) => file?.fileUrl) : response?.[0]?.fileUrl,\n getRealFileName ? selectedFile?.name : response?.[0]?.fileName,\n );\n setFileUploading?.(null as any);\n setUploadedFileData(response?.[0]);\n });\n };\n\n const uploadProps = {\n accept: acceptedFiles ? acceptedFiles : '*',\n multiple: multiple,\n showUploadList: false,\n disabled,\n onRemove: () => {\n setFileList([]);\n },\n beforeUpload: (file: any, allFiles: any[]) => {\n if (file.size > maxSize) {\n const sizeMB = Math.round(maxSize / (1024 * 1024));\n const message = systemMessages?.fileSizeLimit(String(sizeMB), 'MB') || `File size must be less than ${sizeMB}MB`;\n toast?.error(message, { toastId: message });\n return false;\n }\n\n if (!hideSelectedFile) {\n setSelectedFile(file);\n }\n\n if (toFileServer) {\n setFileUploading?.(id || 'field-file-upload' as any);\n setFileList(allFiles);\n } else {\n if (asBase64) {\n const reader = new FileReader();\n reader.onload = (event) => {\n const base64String = event?.target?.result;\n getFile(base64String, file?.name);\n };\n reader.readAsDataURL(file);\n } else {\n getFile(file);\n }\n if (!hideSelectedFile) {\n setSelectedFile(file);\n }\n }\n return false;\n },\n };\n\n const onDelete = async () => {\n if (toFileServer && uploadedFileData && fileUploadService && buildQueryParams) {\n const queryParams = buildQueryParams({\n token: localStorage.getItem('token'),\n });\n fileUploadService.deleteFileFromFileServer(uploadedFileData?.fileName, queryParams).then(() => {\n setUploadedFileData(null);\n });\n }\n\n setSelectedFile(null);\n setFileList([]);\n getFile('');\n onDeleteProp?.();\n };\n\n useEffect(() => {\n if (defaultFile?.name) {\n setSelectedFile(defaultFile);\n }\n }, [defaultFile]);\n\n useEffect(() => {\n if (errorMessage) {\n setBorderColor('#EF4444');\n } else {\n setBorderColor('#d9d9d9');\n }\n }, [errorMessage]);\n\n useEffect(() => {\n if (fileList.length) {\n handleUploadFilesToServer();\n }\n }, [fileList]);\n\n const getFileNameFromString = (str: string) => {\n if (!str.includes('?')) return null;\n const params = new URLSearchParams(str.split('?')[1]);\n return params.get('file_name');\n };\n\n const shortenFileName = (fileName: string): string => {\n const MAX_LENGTH = 30;\n const SHORT_LENGTH = MAX_LENGTH - 7;\n const resolvedName = toFileServer && !fileUploading ? getFileNameFromString(fileName) || fileName : fileName;\n if (!resolvedName) return '';\n if (resolvedName.length <= MAX_LENGTH) return resolvedName;\n return `${resolvedName.slice(0, SHORT_LENGTH)}....${resolvedName.slice(-7)}`;\n };\n\n return (\n <div>\n <div className='h-32' onMouseEnter={() => setHover(true)} onMouseLeave={() => setHover(false)}>\n <Dragger\n {...uploadProps}\n style={{\n borderColor: hover && !errorMessage ? 'var(--color-primary-500)' : borderColor,\n }}\n disabled={disabled || fileUploading}\n >\n {selectedFile && !hideSelectedFile ? (\n <div className='flex items-center justify-between mx-5' title={selectedFile?.name || defaultFile?.name}>\n <div className='flex items-center justify-center gap-4'>\n {selectedFile?.type === 'application/pdf' ? (\n <div className='p-3 bg-primary-50 rounded-lg'>\n <FilePdfIcon size={20} fill='var(--color-primary-500)' />\n </div>\n ) : (\n <div className='p-3 bg-primary-50 rounded-lg'>\n <FileDescriptionIcon size={20} fill='var(--color-primary-500)' />\n </div>\n )}\n\n <div className='text-left'>\n <Typography size='small' variant='medium' className='font-inter text-md text-neutral-900 font-medium text-base'>\n {shortenFileName(selectedFile?.name || defaultFile?.name)}\n </Typography>\n {fileUploading ? (\n <Typography size='small' variant='medium' appearance='subtitle'>\n {t('Uploading...')}\n </Typography>\n ) : selectedFile?.size > 0 ? (\n <Typography size='small' variant='medium' appearance='subtitle'>\n {(selectedFile.size / 1000).toFixed(2)} {'KB'}\n </Typography>\n ) : null}\n </div>\n </div>\n {isLoading ? (\n <SpinnerIcon size={40} className='spinner text-primary-600' />\n ) : (\n <button\n id={`btn-file-upload`}\n className='ml-4'\n onClick={(e) => {\n e.stopPropagation();\n onDelete();\n }}\n disabled={disabled}\n >\n <TrashOutlineIcon size={20} fill='#98A2B3' />\n </button>\n )}\n </div>\n ) : (\n <div className='flex items-center justify-center'>\n <div className='flex-col'>\n <div className='mb-4 flex justify-center'>\n <DownloadIcon size={24} fill='#98A2B3' />\n </div>\n <div>\n <div className='flex items-center justify-center'>\n <Typography size='small' variant='medium' className='text-primary-600 dark:text-primary-300' appearance='custom'>\n {clickToUploadText || t('Click to upload')}\n </Typography>\n <Typography size='small' variant='medium' className='ml-1' appearance='subtitle'>\n {dragAndDropText || t('or drag and drop')}\n </Typography>\n </div>\n {description ? (\n <Typography size='small' variant='medium' className='text-neutral-400'>\n {description}\n </Typography>\n ) : null}\n </div>\n </div>\n </div>\n )}\n </Dragger>\n </div>\n\n {errorMessage && (\n <Typography className='text-error-500 mt-1' appearance='custom' size='extra-small' variant='medium'>\n {errorMessage}\n </Typography>\n )}\n </div>\n );\n};\n\n","import lottie from 'lottie-web';\nimport { useEffect, useRef, FC } from 'react';\n\nexport interface LottieAnimationProps {\n /** Lottie animation JSON data */\n animationData: any;\n /** Width of the animation container */\n width?: number | string;\n /** Height of the animation container */\n height?: number | string;\n /** Whether the animation should loop */\n loop?: boolean;\n /** Whether the animation should autoplay */\n autoplay?: boolean;\n /** CSS class name */\n className?: string;\n /** Test ID for testing */\n 'data-testid'?: string;\n}\n\n/**\n * LottieAnimation component renders Lottie animations\n * \n * @example\n * ```tsx\n * import animationData from './animation.json';\n * \n * <LottieAnimation\n * animationData={animationData}\n * width={200}\n * height={200}\n * loop={true}\n * autoplay={true}\n * />\n * ```\n */\nexport const LottieAnimation: FC<LottieAnimationProps> = ({\n animationData,\n width = 200,\n height = 200,\n loop = true,\n autoplay = true,\n className,\n 'data-testid': testId,\n}) => {\n const containerRef = useRef<HTMLDivElement | null>(null);\n\n useEffect(() => {\n if (containerRef.current) {\n const animation = lottie.loadAnimation({\n container: containerRef.current,\n renderer: 'svg',\n loop,\n autoplay,\n animationData,\n });\n\n return () => {\n animation.destroy();\n };\n }\n }, [animationData, loop, autoplay]);\n\n return (\n <div\n ref={containerRef}\n className={className}\n style={{ width, height }}\n data-testid={testId}\n />\n );\n};\n\n\n\n","import cn from 'classnames';\nimport { FC, ReactNode, useState } from 'react';\nimport Tooltip from '../../tooltip/Tooltip';\n\n/**\n * Available data types for the icon\n */\nexport const APP_DATA_TYPES = {\n BOOLEAN: 'boolean',\n CHOICE: 'choice',\n CURRENCY: 'currency',\n DATE: 'date',\n DATETIME: 'datetime',\n DYNAMIC: 'dynamic',\n EMAIL: 'email',\n MASTER_DATA: 'master data',\n NUMBER: 'number',\n PERCENTAGE: 'percentage',\n STRING: 'string',\n TAG: 'tag',\n TEXT: 'text',\n URL: 'url',\n} as const;\n\n/**\n * Options for data type select fields\n */\nexport const APP_DATA_TYPES_OPTIONS = [\n { label: 'Boolean', value: APP_DATA_TYPES.BOOLEAN },\n { label: 'Choice', value: APP_DATA_TYPES.CHOICE },\n { label: 'Currency', value: APP_DATA_TYPES.CURRENCY },\n { label: 'Date', value: APP_DATA_TYPES.DATE },\n { label: 'Datetime', value: APP_DATA_TYPES.DATETIME },\n { label: 'Dynamic', value: APP_DATA_TYPES.DYNAMIC },\n { label: 'Email', value: APP_DATA_TYPES.EMAIL },\n { label: 'Master Data', value: APP_DATA_TYPES.MASTER_DATA },\n { label: 'Number', value: APP_DATA_TYPES.NUMBER },\n { label: 'Percentage', value: APP_DATA_TYPES.PERCENTAGE },\n { label: 'String', value: APP_DATA_TYPES.STRING },\n { label: 'Tag', value: APP_DATA_TYPES.TAG },\n { label: 'Text', value: APP_DATA_TYPES.TEXT },\n { label: 'URL', value: APP_DATA_TYPES.URL },\n];\n\n/**\n * Background colors for light mode\n */\nexport const BG_COLORS: Record<string, string> = {\n [APP_DATA_TYPES.BOOLEAN]: '#ECFDF3',\n [APP_DATA_TYPES.CHOICE]: '#FCEEF3',\n [APP_DATA_TYPES.DATE]: '#EAEBF6',\n [APP_DATA_TYPES.EMAIL]: '#E3F3FF',\n [APP_DATA_TYPES.CURRENCY]: '#FEF4E8',\n [APP_DATA_TYPES.DATETIME]: '#F2F7F2',\n [APP_DATA_TYPES.TEXT]: '#E4FFCD',\n [APP_DATA_TYPES.STRING]: '#E4FFCD',\n [APP_DATA_TYPES.TAG]: '#FFD4D8',\n [APP_DATA_TYPES.MASTER_DATA]: '#FFFCEA',\n [APP_DATA_TYPES.DYNAMIC]: '#FFEAFE',\n [APP_DATA_TYPES.NUMBER]: '#D8FBF8',\n [APP_DATA_TYPES.PERCENTAGE]: '#F0E8FF',\n [APP_DATA_TYPES.URL]: '#E4FFCD',\n};\n\n/**\n * Background colors for light mode on hover\n */\nexport const BG_COLORS_HOVER: Record<string, string> = {\n [APP_DATA_TYPES.BOOLEAN]: '#D1FADF',\n [APP_DATA_TYPES.CHOICE]: '#F5CAD9',\n [APP_DATA_TYPES.DATE]: '#BEBFE2',\n [APP_DATA_TYPES.EMAIL]: '#B1DEFF',\n [APP_DATA_TYPES.CURRENCY]: '#FDDEB7',\n [APP_DATA_TYPES.DATETIME]: '#D5E5D5',\n [APP_DATA_TYPES.TEXT]: '#CBFF9D',\n [APP_DATA_TYPES.STRING]: '#CBFF9D',\n [APP_DATA_TYPES.TAG]: '#FFBAC1',\n [APP_DATA_TYPES.MASTER_DATA]: '#FFF3B2',\n [APP_DATA_TYPES.DYNAMIC]: '#FFC4FB',\n [APP_DATA_TYPES.NUMBER]: '#B2FBF5',\n [APP_DATA_TYPES.PERCENTAGE]: '#E0D1FF',\n [APP_DATA_TYPES.URL]: '#CBFF9D',\n};\n\n/**\n * Background colors for dark mode\n */\nexport const BG_COLORS_DARK: Record<string, string> = {\n [APP_DATA_TYPES.BOOLEAN]: '#063723',\n [APP_DATA_TYPES.CHOICE]: '#590724',\n [APP_DATA_TYPES.DATE]: '#040642',\n [APP_DATA_TYPES.EMAIL]: '#043056',\n [APP_DATA_TYPES.CURRENCY]: '#591F08',\n [APP_DATA_TYPES.DATETIME]: '#084605',\n [APP_DATA_TYPES.TEXT]: '#254B03',\n [APP_DATA_TYPES.STRING]: '#254B03',\n [APP_DATA_TYPES.TAG]: '#530F04',\n [APP_DATA_TYPES.MASTER_DATA]: '#564007',\n [APP_DATA_TYPES.DYNAMIC]: '#52084D',\n [APP_DATA_TYPES.NUMBER]: '#08504A',\n [APP_DATA_TYPES.PERCENTAGE]: '#2D1B4D',\n [APP_DATA_TYPES.URL]: '#254B03',\n};\n\n/**\n * Background colors for dark mode on hover\n */\nexport const BG_COLORS_DARK_HOVER: Record<string, string> = {\n [APP_DATA_TYPES.BOOLEAN]: '#032D1C',\n [APP_DATA_TYPES.CHOICE]: '#41051A',\n [APP_DATA_TYPES.DATE]: '#010227',\n [APP_DATA_TYPES.EMAIL]: '#05233D',\n [APP_DATA_TYPES.CURRENCY]: '#391506',\n [APP_DATA_TYPES.DATETIME]: '#052E04',\n [APP_DATA_TYPES.TEXT]: '#172E03',\n [APP_DATA_TYPES.STRING]: '#172E03',\n [APP_DATA_TYPES.TAG]: '#3E0B04',\n [APP_DATA_TYPES.MASTER_DATA]: '#3D2D04',\n [APP_DATA_TYPES.DYNAMIC]: '#350332',\n [APP_DATA_TYPES.NUMBER]: '#03332F',\n [APP_DATA_TYPES.PERCENTAGE]: '#1E1135',\n [APP_DATA_TYPES.URL]: '#172E03',\n};\n\n// Icon components\nconst RuleIcon = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"text-success-500\">\n <path d=\"M16 8c0 .55-.45 1-1 1H9c-.55 0-1-.45-1-1s.45-1 1-1h6c.55 0 1 .45 1 1zm-2 4c0 .55-.45 1-1 1H5c-.55 0-1-.45-1-1s.45-1 1-1h8c.55 0 1 .45 1 1zm6 0c0 .55-.45 1-1 1h-2c-.55 0-1-.45-1-1s.45-1 1-1h2c.55 0 1 .45 1 1zm-4 4c0 .55-.45 1-1 1H9c-.55 0-1-.45-1-1s.45-1 1-1h6c.55 0 1 .45 1 1z\"/>\n </svg>\n);\n\nconst FormatListIcon = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"text-peach-500\">\n <path d=\"M3 13h2v-2H3v2zm0 4h2v-2H3v2zm0-8h2V7H3v2zm4 4h14v-2H7v2zm0 4h14v-2H7v2zM7 7v2h14V7H7z\"/>\n </svg>\n);\n\nconst CalendarIcon = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"text-navy-600\">\n <path d=\"M19 4h-1V3c0-.55-.45-1-1-1s-1 .45-1 1v1H8V3c0-.55-.45-1-1-1s-1 .45-1 1v1H5c-1.11 0-1.99.9-1.99 2L3 20c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 16H5V10h14v10zm0-12H5V6h14v2zm-7 5h5v5h-5z\"/>\n </svg>\n);\n\nconst MailIcon = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"text-[#139AFA]\">\n <path d=\"M20 4H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V6c0-1.1-.9-2-2-2zm0 14H4V8l8 5 8-5v10zm-8-7L4 6h16l-8 5z\"/>\n </svg>\n);\n\nconst AttachMoneyIcon = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"text-orange-500\">\n <path d=\"M11.8 10.9c-2.27-.59-3-1.2-3-2.15 0-1.09 1.01-1.85 2.7-1.85 1.78 0 2.44.85 2.5 2.1h2.21c-.07-1.72-1.12-3.3-3.21-3.81V3h-3v2.16c-1.94.42-3.5 1.68-3.5 3.61 0 2.31 1.91 3.46 4.7 4.13 2.5.6 3 1.48 3 2.41 0 .69-.49 1.79-2.7 1.79-2.06 0-2.87-.92-2.98-2.1h-2.2c.12 2.19 1.76 3.42 3.68 3.83V21h3v-2.15c1.95-.37 3.5-1.5 3.5-3.55 0-2.84-2.43-3.81-4.7-4.4z\"/>\n </svg>\n);\n\nconst ScheduleIcon = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"text-green-600\">\n <path d=\"M11.99 2C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8zm.5-13H11v6l5.25 3.15.75-1.23-4.5-2.67z\"/>\n </svg>\n);\n\nconst SubjectIcon = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"text-[#58B507]\">\n <path d=\"M14 17H4v2h10v-2zm6-8H4v2h16V9zM4 15h16v-2H4v2zM4 5v2h16V5H4z\"/>\n </svg>\n);\n\nconst LocalOfferIcon = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"text-[#B31121]\">\n <path d=\"M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58s1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41s-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z\"/>\n </svg>\n);\n\nconst DatabaseIcon = ({ fill = '#CCAE00', size = 12 }: { fill?: string; size?: number }) => (\n <svg xmlns='http://www.w3.org/2000/svg' width={size} height={size} viewBox='0 0 21 20' fill='none'>\n <path\n d='M10.666 17.5C8.56879 17.5 6.79449 17.1771 5.3431 16.5312C3.89171 15.8854 3.16602 15.0972 3.16602 14.1667V5.83333C3.16602 4.91667 3.89865 4.13194 5.36393 3.47917C6.82921 2.82639 8.59657 2.5 10.666 2.5C12.7355 2.5 14.5028 2.82639 15.9681 3.47917C17.4334 4.13194 18.166 4.91667 18.166 5.83333V14.1667C18.166 15.0972 17.4403 15.8854 15.9889 16.5312C14.5375 17.1771 12.7632 17.5 10.666 17.5Z'\n fill={fill}\n />\n </svg>\n);\n\nconst AutomationIcon = ({ fill = '#DB00CD', size = 12 }: { fill?: string; size?: number }) => (\n <svg width={size} height={size} viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <path\n d='M3.70019 8.625C3.35019 8.91667 2.98561 9.05 2.60644 9.025C2.22727 9 1.89602 8.87083 1.61269 8.6375C1.32935 8.40417 1.1356 8.09792 1.03144 7.71875C0.927272 7.33958 0.996022 6.95 1.23769 6.55L2.17519 5C1.96685 4.81667 1.80227 4.59583 1.68144 4.3375C1.5606 4.07917 1.50019 3.8 1.50019 3.5C1.50019 2.95 1.69602 2.47917 2.08769 2.0875C2.47936 1.69583 2.95019 1.5 3.50019 1.5C4.05019 1.5 4.52102 1.69583 4.91269 2.0875C5.30436 2.47917 5.50019 2.95 5.50019 3.5C5.50019 4.05 5.30436 4.52083 4.91269 4.9125C4.52102 5.30417 4.05019 5.5 3.50019 5.5C3.42519 5.5 3.35019 5.49583 3.27519 5.4875C3.20019 5.47917 3.12935 5.46667 3.06269 5.45L2.10019 7.075C2.00852 7.225 1.97936 7.37292 2.01269 7.51875C2.04602 7.66458 2.11686 7.78333 2.22519 7.875C2.33352 7.96667 2.46269 8.01875 2.61269 8.03125C2.76269 8.04375 2.90852 7.99167 3.05019 7.875L8.30019 3.3625C8.65019 3.07083 9.01686 2.93958 9.40019 2.96875C9.78352 2.99792 10.1169 3.12917 10.4002 3.3625C10.6835 3.59583 10.8752 3.90208 10.9752 4.28125C11.0752 4.66042 11.0044 5.05 10.7627 5.45L9.82519 7C10.0335 7.18333 10.1981 7.40417 10.3189 7.6625C10.4398 7.92083 10.5002 8.2 10.5002 8.5C10.5002 9.05 10.3044 9.52083 9.91269 9.9125C9.52102 10.3042 9.05019 10.5 8.50019 10.5C7.95019 10.5 7.47936 10.3042 7.08769 9.9125C6.69602 9.52083 6.50019 9.05 6.50019 8.5C6.50019 7.95 6.69602 7.47917 7.08769 7.0875C7.47936 6.69583 7.95019 6.5 8.50019 6.5C8.57519 6.5 8.64811 6.50417 8.71894 6.5125C8.78977 6.52083 8.85852 6.53333 8.92519 6.55L9.90019 4.925C9.99186 4.775 10.021 4.62708 9.98769 4.48125C9.95436 4.33542 9.88352 4.21667 9.77519 4.125C9.66686 4.03333 9.53769 3.98125 9.38769 3.96875C9.23769 3.95625 9.09186 4.00833 8.95019 4.125L3.70019 8.625Z'\n fill={fill}\n />\n </svg>\n);\n\nconst NumbersIcon = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"text-[#00E4D1]\">\n <path d=\"M7 2v2h1.18l.72 3.62A6.997 6.997 0 003 14c0 3.87 3.13 7 7 7s7-3.13 7-7a6.998 6.998 0 00-5.9-6.91L11.82 4H13V2H7zm4 6c2.76 0 5 2.24 5 5s-2.24 5-5 5-5-2.24-5-5 2.24-5 5-5zm-1 2v2H8v2h2v2h2v-2h2v-2h-2v-2h-2z\"/>\n </svg>\n);\n\nconst LinkIcon = () => (\n <svg width=\"12\" height=\"12\" viewBox=\"0 0 24 24\" fill=\"currentColor\" className=\"text-[#00E4D1]\">\n <path d=\"M3.9 12c0-1.71 1.39-3.1 3.1-3.1h4V7H7c-2.76 0-5 2.24-5 5s2.24 5 5 5h4v-1.9H7c-1.71 0-3.1-1.39-3.1-3.1zM8 13h8v-2H8v2zm9-6h-4v1.9h4c1.71 0 3.1 1.39 3.1 3.1s-1.39 3.1-3.1 3.1h-4V17h4c2.76 0 5-2.24 5-5s-2.24-5-5-5z\"/>\n </svg>\n);\n\nexport interface DataTypeIconProps {\n /** The data type to display */\n dataType?: string;\n /** Custom tooltip content */\n tooltip?: ReactNode;\n /** Whether dark mode is enabled (passed as prop instead of using context) */\n isDarkMode?: boolean;\n /** Additional CSS class name */\n className?: string;\n /** Test ID for testing */\n 'data-testid'?: string;\n}\n\n/**\n * DataTypeIcon displays an icon representing a data type with appropriate styling\n * \n * @example\n * ```tsx\n * <DataTypeIcon dataType=\"text\" isDarkMode={false} />\n * <DataTypeIcon dataType=\"number\" tooltip=\"Custom tooltip\" isDarkMode={true} />\n * ```\n */\nexport const DataTypeIcon: FC<DataTypeIconProps> = ({\n dataType = 'text',\n tooltip,\n isDarkMode = false,\n className,\n 'data-testid': testId,\n}) => {\n const dataTypeOption = APP_DATA_TYPES_OPTIONS.find((option) => option.value === dataType);\n const [isHover, setIsHover] = useState(false);\n\n const getIcon = (): ReactNode => {\n switch (dataType) {\n case APP_DATA_TYPES.BOOLEAN:\n return <RuleIcon />;\n case APP_DATA_TYPES.CHOICE:\n return <FormatListIcon />;\n case APP_DATA_TYPES.DATE:\n return <CalendarIcon />;\n case APP_DATA_TYPES.EMAIL:\n return <MailIcon />;\n case APP_DATA_TYPES.CURRENCY:\n return <AttachMoneyIcon />;\n case APP_DATA_TYPES.DATETIME:\n return <ScheduleIcon />;\n case APP_DATA_TYPES.TEXT:\n case APP_DATA_TYPES.STRING:\n return <SubjectIcon />;\n case APP_DATA_TYPES.TAG:\n return <LocalOfferIcon />;\n case APP_DATA_TYPES.MASTER_DATA:\n return <DatabaseIcon size={12} fill='#CCAE00' />;\n case APP_DATA_TYPES.DYNAMIC:\n return <AutomationIcon fill='#DB00CD' size={12} />;\n case APP_DATA_TYPES.NUMBER:\n return <NumbersIcon />;\n case APP_DATA_TYPES.PERCENTAGE:\n return <span className='text-[#8B5CF6] font-bold text-xs'>%</span>;\n case APP_DATA_TYPES.URL:\n return <LinkIcon />;\n default:\n return null;\n }\n };\n\n const getBackgroundColor = (): string => {\n if (isHover) {\n return isDarkMode ? (BG_COLORS_DARK_HOVER[dataType] || '#333') : (BG_COLORS_HOVER[dataType] || '#f5f5f5');\n }\n return isDarkMode ? (BG_COLORS_DARK[dataType] || '#333') : (BG_COLORS[dataType] || '#f5f5f5');\n };\n\n return (\n <Tooltip title={tooltip || dataTypeOption?.label} placement='top'>\n <span\n className={cn('flex items-center justify-center p-1 rounded-[4px]', className)}\n style={{ backgroundColor: getBackgroundColor() }}\n onMouseEnter={() => setIsHover(true)}\n onMouseLeave={() => setIsHover(false)}\n data-testid={testId}\n >\n {getIcon()}\n </span>\n </Tooltip>\n );\n};\n\n\n\n","import { FC, ReactNode } from 'react';\nimport { Typography } from '../typography/Typography';\n\nexport interface NoDataFoundProps {\n /** Main text to display */\n text: string | ReactNode;\n /** Additional descriptive text */\n additionaltext?: string | ReactNode;\n /** Children elements (e.g., action buttons) */\n children?: ReactNode;\n /** Custom icon to display instead of default */\n icon?: ReactNode;\n /** Custom CSS class name */\n className?: string;\n /** Test ID for testing */\n 'data-testid'?: string;\n}\n\n/**\n * Default no data found icon\n */\nconst DefaultNoDataIcon = () => (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='233'\n height='165'\n viewBox='0 0 233 165'\n fill='none'\n className=\"\"\n >\n <g clipPath='url(#clip0_769_17883)'>\n <ellipse\n cx='116.5'\n cy='154.701'\n rx='116'\n ry='36'\n fill='url(#paint0_linear_769_17883)'\n className=\"fill-[url(#paint0_linear_769_17883)] dark:fill-[url(#dark_gradient)]\"\n />\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M79.5469 130.193C79.6115 121.866 78.1765 109.853 75.8569 102.024C72.9573 92.2364 70.8235 91.8227 68.2651 91.6957C65.7067 91.5687 62.0234 93.4376 63.8575 105.675C64.2395 108.224 64.5821 110.738 64.9104 113.147C65.1807 115.131 65.4413 117.043 65.7063 118.846C64.1257 119.358 62.2552 119.198 62.0163 116.314C61.6185 111.514 61.1533 109.726 60.1554 109.164C59.1574 108.601 57.0831 108.642 57.3916 112.761C57.4366 113.362 57.4625 114.006 57.4891 114.667C57.6448 118.533 57.8248 123.006 62.0004 123.249C63.8519 123.356 65.2865 123.152 66.3409 122.843C67.1357 127.399 68.0533 130.821 69.4136 132.213C74.7164 133.182 78.3787 131.27 79.5469 130.193Z'\n className=\"fill-primary-100 dark:fill-primary-600\"\n />\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M180.377 105.54C179.568 114.329 177.716 124.231 175.577 131.509C173.803 132.404 168.743 133.446 162.699 130.461C161.541 128.32 161.612 123.891 162.22 118.139C160.846 118.149 159.051 117.902 156.862 117.137C151.924 115.413 153.242 109.972 154.382 105.27L154.382 105.27C154.577 104.466 154.767 103.683 154.919 102.945C155.962 97.8859 158.47 98.5489 159.477 99.5678C160.484 100.587 160.43 102.896 159.261 108.805C158.558 112.353 160.753 113.188 162.829 113.115C163.129 110.857 163.472 108.468 163.828 105.99L163.828 105.989C164.26 102.98 164.711 99.839 165.126 96.6432C167.12 81.2987 172.191 80.3156 175.224 81.3464C178.256 82.3771 180.68 83.6069 180.808 96.3707C180.823 97.8677 180.784 99.4663 180.698 101.136C182.299 101.587 184.075 101.282 184.369 98.3709C184.892 93.202 185.424 91.2826 186.5 90.6933C187.576 90.1039 189.788 90.1833 189.375 94.6189C189.314 95.2667 189.273 95.96 189.232 96.6725C188.986 100.838 188.703 105.658 184.244 105.848C182.68 105.914 181.398 105.775 180.377 105.54Z'\n className=\"fill-primary-50 dark:fill-primary-600\"\n />\n <circle\n cx='32.5'\n cy='71'\n r='12'\n className=\"fill-primary-50 dark:fill-primary-600\"\n />\n <circle\n cx='168.501'\n cy='22.7008'\n r='17'\n transform='rotate(25.7746 168.501 22.7008)'\n className=\"fill-primary-200 dark:fill-primary-600\"\n />\n <path\n d='M190.28 32.4072C189.984 33.0994 189.242 33.7198 187.849 34.1242C186.464 34.526 184.584 34.6652 182.308 34.5043C177.765 34.1831 171.87 32.6835 165.725 30.0526C159.58 27.4217 154.427 24.1911 151.059 21.1252C149.371 19.589 148.174 18.1325 147.51 16.8533C146.84 15.5659 146.777 14.6009 147.074 13.9087C147.37 13.2165 148.112 12.5961 149.505 12.1917C150.89 11.79 152.77 11.6507 155.046 11.8117C159.589 12.1329 165.484 13.6324 171.629 16.2633C177.774 18.8942 182.927 22.1249 186.295 25.1907C187.983 26.727 189.18 28.1835 189.845 29.4627C190.514 30.7501 190.577 31.715 190.28 32.4072Z'\n stroke='currentColor'\n strokeWidth='2'\n className=\"stroke-primary-100\"\n />\n <path\n d='M183.809 30.093C179.727 38.5478 176.086 28.5844 167.631 24.5019C159.176 20.4193 149.109 23.7634 153.192 15.3087C157.274 6.85394 167.438 3.30958 175.893 7.39215C184.347 11.4747 187.892 21.6382 183.809 30.093Z'\n className=\"fill-primary-200 dark:fill-primary-600\"\n />\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M101.722 83.3089C101.501 98.71 102.886 116.238 105.251 129.263C108.165 131.143 116.754 133.888 127.794 129.825C130.199 126.324 130.895 118.623 130.903 108.53C133.286 108.801 136.446 108.704 140.387 107.782C149.275 105.702 147.992 96.0173 146.884 87.646L146.884 87.646C146.694 86.2144 146.51 84.8212 146.382 83.511C145.508 74.5396 141.033 75.2265 139.097 76.8085C137.161 78.3905 136.828 82.4078 137.765 92.8779C138.327 99.1663 134.365 100.209 130.775 99.6978C130.672 95.724 130.519 91.5146 130.359 87.1487L130.359 87.1485C130.166 81.8456 129.964 76.3118 129.834 70.6888C129.209 43.6914 120.592 41.0479 115.138 42.276C109.685 43.5041 105.251 45.1902 102.67 67.3168C102.367 69.9119 102.139 72.6932 101.98 75.6067C99.1176 76.0933 96.0924 75.2361 96.12 70.1295C96.169 61.0629 95.5993 57.6335 93.8411 56.4118C92.0829 55.1902 88.2302 54.9191 88.1273 62.693C88.1122 63.8283 88.0548 65.039 87.9959 66.2831C87.651 73.5579 87.252 81.974 94.9543 83.1274C97.6565 83.5321 99.9066 83.5278 101.722 83.3089Z'\n className=\"fill-primary-200 dark:fill-primary-600\"\n />\n <mask id='mask0_769_17883' maskUnits='userSpaceOnUse' x='87' y='42' width='61' height='90'>\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M101.722 83.3089C101.501 98.71 102.886 116.238 105.251 129.263C108.165 131.143 116.754 133.888 127.794 129.825C130.199 126.324 130.895 118.623 130.903 108.53C133.286 108.801 136.446 108.704 140.387 107.782C149.275 105.702 147.992 96.0173 146.884 87.646L146.884 87.646C146.694 86.2144 146.51 84.8212 146.382 83.511C145.508 74.5396 141.033 75.2265 139.097 76.8085C137.161 78.3905 136.828 82.4078 137.765 92.8779C138.327 99.1663 134.365 100.209 130.775 99.6978C130.672 95.724 130.519 91.5146 130.359 87.1487L130.359 87.1485C130.166 81.8456 129.964 76.3118 129.834 70.6888C129.209 43.6914 120.592 41.0479 115.138 42.276C109.685 43.5041 105.251 45.1902 102.67 67.3168C102.367 69.9119 102.139 72.6932 101.98 75.6067C99.1176 76.0933 96.0924 75.2361 96.12 70.1295C96.169 61.0629 95.5993 57.6335 93.8411 56.4118C92.0829 55.1902 88.2302 54.9191 88.1273 62.693C88.1122 63.8283 88.0548 65.039 87.9959 66.2831C87.651 73.5579 87.252 81.974 94.9543 83.1274C97.6565 83.5321 99.9066 83.5278 101.722 83.3089Z'\n className=\"fill-primary-200 dark:fill-primary-700\"\n />\n </mask>\n <g mask='url(#mask0_769_17883)'>\n <path\n d='M99 35.7002C101.52 34.9685 105.532 34.5699 109.491 35.7002H144.5L163 88.7002L152.5 127.2C139.5 136.7 114.8 152.6 120 140.2C126.5 124.7 125.5 60.2002 120 45.7002C117.746 39.759 113.648 36.887 109.491 35.7002H99Z'\n className=\"fill-primary-500\"\n />\n </g>\n <path\n fillRule='evenodd'\n clipRule='evenodd'\n d='M106.358 48.1862C106.216 47.9494 105.908 47.8726 105.672 48.0147C105.435 48.1568 105.358 48.4639 105.5 48.7007L107.986 52.8432C108.128 53.08 108.435 53.1568 108.672 53.0147C108.908 52.8726 108.985 52.5655 108.843 52.3287L106.358 48.1862ZM88.5 55.9936C88.6953 55.7983 89.0119 55.7983 89.2071 55.9936L91.5 58.2865C91.6953 58.4817 91.6953 58.7983 91.5 58.9936C91.3048 59.1888 90.9882 59.1888 90.7929 58.9936L88.5 56.7007C88.3048 56.5054 88.3048 56.1888 88.5 55.9936ZM92.7929 66.9936C92.5976 67.1888 92.5976 67.5054 92.7929 67.7007C92.9881 67.8959 93.3047 67.8959 93.5 67.7007L97.0355 64.1651C97.2308 63.9699 97.2308 63.6533 97.0355 63.458C96.8403 63.2628 96.5237 63.2628 96.3284 63.458L92.7929 66.9936ZM102.5 64.9936C102.695 64.7983 103.012 64.7983 103.207 64.9936L105.5 67.2865C105.695 67.4817 105.695 67.7983 105.5 67.9936C105.305 68.1888 104.988 68.1888 104.793 67.9936L102.5 65.7007C102.305 65.5054 102.305 65.1888 102.5 64.9936ZM115.8 72.8007C115.579 72.635 115.534 72.3216 115.7 72.1007L118.1 68.9007C118.266 68.6798 118.579 68.635 118.8 68.8007C119.021 68.9664 119.066 69.2798 118.9 69.5007L116.5 72.7007C116.334 72.9216 116.021 72.9664 115.8 72.8007ZM103.055 81.8686C102.825 81.7155 102.515 81.7775 102.361 82.0073C102.208 82.2371 102.27 82.5475 102.5 82.7007L104.668 84.146C104.898 84.2992 105.208 84.2371 105.361 84.0073C105.515 83.7775 105.452 83.4671 105.223 83.3139L103.055 81.8686ZM102.361 106.007C102.515 105.778 102.825 105.715 103.055 105.869L105.223 107.314C105.452 107.467 105.515 107.778 105.361 108.007C105.208 108.237 104.898 108.299 104.668 108.146L102.5 106.701C102.27 106.548 102.208 106.237 102.361 106.007ZM140.793 78.9936C140.598 79.1888 140.598 79.5054 140.793 79.7007C140.988 79.8959 141.305 79.8959 141.5 79.7007L144.793 76.4078C144.988 76.2125 144.988 75.8959 144.793 75.7007C144.598 75.5054 144.281 75.5054 144.086 75.7007L140.793 78.9936ZM117.793 98.7007C117.598 98.5054 117.598 98.1888 117.793 97.9936L121.086 94.7007C121.281 94.5054 121.598 94.5054 121.793 94.7007C121.988 94.8959 121.988 95.2125 121.793 95.4078L118.5 98.7007C118.305 98.8959 117.988 98.8959 117.793 98.7007ZM126.793 74.9936C126.598 75.1888 126.598 75.5054 126.793 75.7007C126.988 75.8959 127.305 75.8959 127.5 75.7007L130.793 72.4078C130.988 72.2125 130.988 71.8959 130.793 71.7007C130.598 71.5054 130.281 71.5054 130.086 71.7007L126.793 74.9936ZM126.793 60.7007C126.598 60.5054 126.598 60.1888 126.793 59.9936L130.086 56.7007C130.281 56.5054 130.598 56.5054 130.793 56.7007C130.988 56.8959 130.988 57.2125 130.793 57.4078L127.5 60.7007C127.305 60.8959 126.988 60.8959 126.793 60.7007ZM141.793 102.994C141.598 103.189 141.598 103.505 141.793 103.701C141.988 103.896 142.305 103.896 142.5 103.701L145.793 100.408C145.988 100.213 145.988 99.8959 145.793 99.7007C145.598 99.5054 145.281 99.5054 145.086 99.7007L141.793 102.994ZM126.85 111.979C126.594 111.877 126.469 111.586 126.572 111.329L128.2 107.258C128.303 107.001 128.594 106.877 128.85 106.979C129.107 107.082 129.231 107.373 129.129 107.629L127.5 111.701C127.398 111.957 127.107 112.082 126.85 111.979ZM120.207 115.408C120.402 115.213 120.402 114.896 120.207 114.701C120.012 114.505 119.695 114.505 119.5 114.701L117.207 116.994C117.012 117.189 117.012 117.505 117.207 117.701C117.402 117.896 117.719 117.896 117.914 117.701L120.207 115.408ZM100.436 94.9965C100.613 94.7843 100.928 94.7557 101.14 94.9325L106.372 99.2923C106.584 99.4691 106.613 99.7843 106.436 99.9965C106.259 100.209 105.944 100.237 105.732 100.061L100.5 95.7007C100.288 95.5239 100.259 95.2086 100.436 94.9965ZM88.3575 70.1862C88.2155 69.9494 87.9083 69.8726 87.6715 70.0147C87.4347 70.1568 87.358 70.4639 87.5 70.7007L89.9855 74.8432C90.1276 75.08 90.4347 75.1568 90.6715 75.0147C90.9083 74.8726 90.9851 74.5655 90.843 74.3287L88.3575 70.1862ZM132.2 84.8007C132.366 85.0216 132.321 85.335 132.1 85.5007L128.9 87.9007C128.679 88.0664 128.366 88.0216 128.2 87.8007C128.034 87.5798 128.079 87.2664 128.3 87.1007L131.5 84.7007C131.721 84.535 132.034 84.5798 132.2 84.8007ZM137.125 83.9198C136.909 83.7473 136.594 83.7823 136.422 83.9979C136.249 84.2135 136.284 84.5282 136.5 84.7007L140.719 88.076C140.935 88.2485 141.249 88.2135 141.422 87.9979C141.594 87.7823 141.559 87.4676 141.344 87.2951L137.125 83.9198ZM145.793 93.7007C145.598 93.5054 145.598 93.1888 145.793 92.9936L149.086 89.7007C149.281 89.5054 149.598 89.5054 149.793 89.7007C149.988 89.8959 149.988 90.2125 149.793 90.4078L146.5 93.7007C146.305 93.8959 145.988 93.8959 145.793 93.7007Z'\n className=\"fill-primary-100\"\n />\n </g>\n <defs>\n <linearGradient id='paint0_linear_769_17883' x1='116.5' y1='118.701' x2='116.5' y2='154.701' gradientUnits='userSpaceOnUse'>\n <stop stopColor='#F2F4F7' />\n <stop offset='1' stopColor='#F2F4F7' stopOpacity='0' />\n </linearGradient>\n <linearGradient id='dark_gradient' x1='0' y1='199' x2='0' y2='100' gradientUnits='userSpaceOnUse'>\n <stop offset='0' stopColor='#000000' />\n <stop offset='1' stopColor='#000000' stopOpacity='0' />\n </linearGradient>\n <clipPath id='clip0_769_17883'>\n <rect width='232' height='165' fill='white' transform='translate(0.5)' />\n </clipPath>\n </defs>\n </svg>\n);\n\n/**\n * NoDataFound component displays an empty state message\n * \n * @example\n * ```tsx\n * <NoDataFound \n * text=\"No results found\"\n * additionaltext=\"Try adjusting your search or filters\"\n * />\n * ```\n */\nexport const NoDataFound: FC<NoDataFoundProps> = ({\n text,\n additionaltext,\n children,\n icon,\n className,\n 'data-testid': testId,\n}) => {\n return (\n <div\n className={`flex flex-col justify-center items-center h-full ${className || ''}`}\n data-testid={testId}\n >\n {icon || <DefaultNoDataIcon />}\n <Typography\n variant='semibold'\n size='display-small'\n className='mt-5 dark:text-black-200'\n appearance='custom'\n >\n {text}\n </Typography>\n <Typography\n variant='regular'\n size='small'\n className='text-center mt-2 dark:text-black-200'\n appearance='custom'\n >\n {additionaltext || ''}\n </Typography>\n {children}\n </div>\n );\n};\n\n\n\n","import type { FC, ReactNode } from 'react';\n\nexport interface PageNotFoundProps {\n /** Custom icon to display */\n icon?: ReactNode;\n /** Path to navigate on back to home click */\n homePath?: string;\n /** Custom back to home text */\n backToHomeText?: string;\n /** Custom 404 title */\n title?: string;\n /** Custom subtitle */\n subtitle?: string;\n /** Custom description */\n description?: string;\n /** Custom CSS class name */\n className?: string;\n /** Test ID for testing */\n 'data-testid'?: string;\n}\n\nimport { Link } from 'react-router-dom';\n\n\n/**\n * NotFoundIcon - Exactly matches the web portal implementation\n * Uses Tailwind classes for theme-aware colors\n */\nconst NotFoundIcon = () => {\n return (\n <svg width='403' height='300' viewBox='0 0 403 300' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <path d='M402.618 263.633H0V263.834H402.618V263.633Z' fill='#E0E0E0' />\n <path d='M316.602 269.75H303.026V269.951H316.602V269.75Z' fill='#E0E0E0' />\n <path d='M361.197 269.656H325.315V269.858H361.197V269.656Z' fill='#E0E0E0' />\n <path d='M258.263 271.008H213.597V271.209H258.263V271.008Z' fill='#E0E0E0' />\n <path d='M208.959 271.008H192.274V271.209H208.959V271.008Z' fill='#E0E0E0' />\n <path d='M122.042 269.453H114.714V269.654H122.042V269.453Z' fill='#E0E0E0' />\n <path d='M138.621 269.453H126.511V269.654H138.621V269.453Z' fill='#E0E0E0' />\n <path d='M107.459 273.086H53.8623V273.287H107.459V273.086Z' fill='#E0E0E0' />\n <path\n d='M152.423 177.482H139.306C136.483 177.482 133.691 176.908 131.098 175.793C128.505 174.679 126.166 173.048 124.224 171H167.489C165.549 173.047 163.213 174.677 160.623 175.791C158.033 176.906 155.243 177.481 152.423 177.482Z'\n fill='#F0F0F0'\n />\n <path\n d='M224.323 177.482H211.197C208.375 177.483 205.582 176.909 202.989 175.795C200.395 174.68 198.057 173.049 196.115 171H239.405C237.463 173.049 235.124 174.68 232.531 175.795C229.938 176.909 227.145 177.483 224.323 177.482Z'\n fill='#F0F0F0'\n />\n <path d='M114.295 263.637H107.048V243.031H121.889L114.295 263.637Z' fill='#F0F0F0' />\n <path d='M253.311 123.421V21.4297L63.2111 21.4297V123.421L253.311 123.421Z' fill='#F5F5F5' />\n <path d='M298.259 95.5859L295.135 104.097H298.259L317.367 95.5859H298.259Z' fill='#F0F0F0' />\n <path d='M295.135 95.5859V104.097L314.251 95.5859H295.135Z' fill='#E0E0E0' />\n <path d='M330.944 95.5859L327.819 104.097H330.944L350.052 95.5859H330.944Z' fill='#F0F0F0' />\n <path d='M281.116 95.9844H301.899V89.5022H281.116V95.9844Z' fill='#E0E0E0' />\n <path\n d='M126.752 151.181C126.752 151.181 112.588 126.774 132.236 107.344C132.236 107.344 137.365 110.685 137.285 115.179C137.204 119.672 131.793 120.815 132.961 124.552C134.128 128.288 139.233 131.984 135.876 135.084C132.518 138.184 136.415 140.938 136.19 144.747C135.964 148.556 126.752 151.181 126.752 151.181Z'\n fill='#E0E0E0'\n />\n <path\n d='M127.823 153.414C127.823 153.414 133.564 125.787 108.795 113.539C108.795 113.539 104.986 118.33 106.476 122.566C107.966 126.801 113.457 126.181 113.538 130.103C113.618 134.024 109.93 139.129 114.085 141.014C118.24 142.898 115.422 146.747 116.839 150.274C118.257 153.801 127.823 153.414 127.823 153.414Z'\n fill='#E0E0E0'\n />\n <path\n d='M106.13 147.289C106.13 147.289 106.597 165.503 124.65 165.503C142.704 165.503 143.171 147.289 143.171 147.289H106.13Z'\n fill='#F0F0F0'\n />\n <g className='text-primary-100 dark:text-primary-600'>\n <path\n d='M200.206 47.7579C158.769 61.7449 67.3422 5.24152 53.4519 73.7348C42.0337 129.948 99.4953 186.355 174.237 205.544C227.294 219.168 299.282 195.768 311.562 129.683C319.244 88.3498 288.21 41.155 263.707 31.7498C233.084 20.0095 227.23 38.6507 200.206 47.7579Z'\n fill='currentColor'\n />\n <path\n d='M201.309 299.996C287.535 299.996 357.436 295.915 357.436 290.881C357.436 285.847 287.535 281.766 201.309 281.766C115.082 281.766 45.1816 285.847 45.1816 290.881C45.1816 295.915 115.082 299.996 201.309 299.996Z'\n fill='#F5F5F5'\n />\n </g>\n <g className='text-primary-500'>\n <path\n d='M150.217 59.008C150.22 57.5082 150.099 56.0107 149.855 54.5309C148.776 47.9903 145.425 42.0395 140.393 37.7244C135.361 33.4094 128.969 31.0063 122.34 30.9375H122.098C117.651 30.9402 113.269 32.0003 109.312 34.0305C105.355 36.0606 101.938 39.0025 99.3424 42.6134C98.9157 43.2012 98.5372 43.8052 98.1507 44.4091C98.1192 44.4489 98.0922 44.4922 98.0702 44.5379C95.4268 48.9098 94.0342 53.9233 94.044 59.0322V59.0885C94.0606 65.0262 95.9585 70.8059 99.4652 75.5975C102.972 80.3891 107.907 83.9461 113.562 85.7576C119.216 87.5692 125.3 87.542 130.938 85.6801C136.576 83.8181 141.479 80.2173 144.943 75.3945C145.362 74.8067 145.748 74.2108 146.127 73.5989C146.158 73.559 146.185 73.5158 146.207 73.47C148.847 69.1094 150.235 64.1056 150.217 59.008ZM95.2438 58.3719C95.3369 53.7742 96.6215 49.2795 98.972 45.3271H107.757C106.415 49.5468 105.712 53.9439 105.672 58.3719H95.2438ZM108.989 45.3271H121.519V58.3719H106.879C106.906 53.9408 107.618 49.5406 108.989 45.3271ZM122.726 44.1192V32.1051C124.468 32.263 126.136 32.8829 127.558 33.9008C130.545 35.9461 133.05 39.5374 134.805 44.1192H122.726ZM135.24 45.3271C136.236 48.3435 136.884 51.4639 137.172 54.6275C137.293 55.8837 137.35 57.1318 137.366 58.3719H122.726V45.3271H135.24ZM119.747 32.4433C120.325 32.279 120.919 32.1765 121.519 32.1373V44.1434H109.44C111.695 38.0719 115.351 33.6592 119.747 32.4191V32.4433ZM121.519 59.6039V72.6487H109.013C108.017 69.6248 107.374 66.4958 107.097 63.3241C106.984 62.0679 106.92 60.8198 106.904 59.5797L121.519 59.6039ZM121.519 73.8565V85.8706C119.777 85.7116 118.11 85.0918 116.687 84.075C113.708 82.0297 111.204 78.4383 109.44 73.8565H121.519ZM124.498 85.5566C123.92 85.7216 123.326 85.8242 122.726 85.8626V73.8324H134.805C132.55 79.8797 128.895 84.3004 124.498 85.5324V85.5566ZM122.726 72.6728V59.5878H137.366C137.343 64.0191 136.631 68.42 135.256 72.6326L122.726 72.6728ZM138.573 59.5878H149.042C148.944 64.1847 147.66 68.6784 145.313 72.6326H136.488C137.83 68.4128 138.533 64.0158 138.573 59.5878ZM149.042 58.3799H138.573C138.573 57.1076 138.493 55.8193 138.372 54.5228C138.097 51.4018 137.479 48.3205 136.528 45.3351H145.297C146.992 48.2123 148.136 51.3799 148.671 54.6758C148.863 55.8993 148.976 57.1339 149.009 58.3719L149.042 58.3799ZM137.873 37.1781C140.505 39.0739 142.774 41.4278 144.572 44.1273H136.085C134.282 39.1429 131.568 35.1972 128.242 32.9103L127.985 32.7412C131.536 33.5364 134.888 35.043 137.841 37.17L137.873 37.1781ZM116.236 32.7573C112.846 34.9878 110.06 39.0462 108.184 44.1273H99.729L100.317 43.2657C104.141 37.9275 109.796 34.1839 116.204 32.7493L116.236 32.7573ZM95.3002 59.5878H105.728C105.728 60.86 105.808 62.1484 105.929 63.4448C106.208 66.5654 106.826 69.6462 107.773 72.6326H98.9559C97.2579 69.757 96.1135 66.5888 95.582 63.2919C95.3815 62.0667 95.2685 60.8289 95.2438 59.5878H95.3002ZM99.7612 73.8404H108.184C109.988 78.8248 112.701 82.7705 116.027 85.0574L116.293 85.2265C109.527 83.6898 103.609 79.614 99.7612 73.8404ZM128.033 85.2023C131.415 82.9798 134.201 78.9134 136.085 73.8324H144.524C144.331 74.1223 144.138 74.4121 143.936 74.694C140.109 80.0346 134.447 83.7761 128.033 85.2023Z'\n fill='currentColor'\n />\n <path d='M333.601 72.3828H80.4351V133.726H333.601V72.3828Z' fill='currentColor' />\n <path opacity='0.6' d='M333.601 72.3828H80.4351V133.726H333.601V72.3828Z' fill='#FAFAFA' />\n <path d='M327.892 78.0938H74.7261V139.437H327.892V78.0938Z' fill='currentColor' />\n <path opacity='0.3' d='M327.892 78.0938H74.7261V139.437H327.892V78.0938Z' fill='black' />\n <path d='M322.183 83.8125H69.0166V145.155H322.183V83.8125Z' fill='currentColor' />\n <path opacity='0.1' d='M322.183 83.8125H69.0166V145.155H322.183V83.8125Z' fill='#FAFAFA' />\n <path d='M310.104 133.069V95.8828L81.0956 95.8828V133.069H310.104Z' fill='currentColor' />\n <path opacity='0.9' d='M310.104 133.069V95.8828L81.0956 95.8828V133.069H310.104Z' fill='#FAFAFA' />\n <path d='M271.582 95.8846V133.07H272.927V95.8846H271.582Z' fill='currentColor' />\n <path opacity='0.6' d='M271.582 95.8846V133.07H272.927V95.8846H271.582Z' fill='#FAFAFA' />\n <path d='M86.8047 101.01V127.938H88.1494V101.01H86.8047Z' fill='currentColor' />\n <path opacity='0.6' d='M86.8047 101.01V127.938H88.1494V101.01H86.8047Z' fill='#FAFAFA' />\n <g className='text-primary-300 dark:text-primary-500'>\n <path\n d='M290.231 119.174C289.254 119.174 288.292 118.933 287.431 118.472C286.569 118.011 285.834 117.345 285.292 116.532C284.749 115.72 284.415 114.786 284.32 113.813C284.224 112.841 284.37 111.86 284.744 110.957C285.117 110.055 285.708 109.258 286.464 108.638C287.219 108.018 288.115 107.594 289.074 107.403C290.032 107.213 291.022 107.261 291.958 107.545C292.893 107.828 293.743 108.338 294.434 109.028C295.266 109.859 295.832 110.919 296.062 112.072C296.291 113.225 296.174 114.42 295.724 115.506C295.274 116.592 294.512 117.521 293.534 118.174C292.556 118.827 291.407 119.175 290.231 119.174ZM290.231 108.908C289.229 108.908 288.257 109.256 287.483 109.892C286.708 110.528 286.178 111.414 285.983 112.397C285.788 113.38 285.94 114.401 286.413 115.285C286.887 116.169 287.652 116.861 288.578 117.244C289.505 117.626 290.535 117.676 291.494 117.384C292.453 117.092 293.281 116.476 293.837 115.642C294.393 114.808 294.643 113.807 294.543 112.809C294.443 111.812 294.001 110.88 293.291 110.172C292.893 109.762 292.418 109.435 291.893 109.211C291.367 108.987 290.802 108.87 290.231 108.867V108.908Z'\n fill='currentColor'\n />\n <path\n d='M297.937 121.701C297.831 121.701 297.725 121.679 297.627 121.638C297.529 121.596 297.44 121.536 297.365 121.46L293.299 117.393C293.215 117.321 293.146 117.232 293.098 117.132C293.05 117.033 293.022 116.924 293.018 116.813C293.014 116.702 293.033 116.591 293.073 116.488C293.114 116.385 293.175 116.291 293.253 116.212C293.332 116.134 293.426 116.073 293.529 116.032C293.632 115.992 293.743 115.973 293.854 115.977C293.965 115.981 294.074 116.009 294.173 116.057C294.273 116.105 294.362 116.174 294.434 116.258L298.501 120.324C298.651 120.475 298.735 120.679 298.735 120.892C298.735 121.105 298.651 121.309 298.501 121.46C298.352 121.612 298.15 121.698 297.937 121.701Z'\n fill='currentColor'\n />\n </g>\n <path\n d='M171.878 39.2656C170.528 39.2656 169.234 39.8018 168.279 40.7562C167.325 41.7106 166.789 43.005 166.789 44.3547V61.1439C166.789 62.4936 167.325 63.788 168.279 64.7424C169.234 65.6968 170.528 66.2329 171.878 66.2329C173.227 66.2329 174.522 65.6968 175.476 64.7424C176.431 63.788 176.967 62.4936 176.967 61.1439V44.3547C176.967 43.005 176.431 41.7106 175.476 40.7562C174.522 39.8018 173.227 39.2656 171.878 39.2656Z'\n fill='currentColor'\n />\n <path\n opacity='0.2'\n d='M171.878 39.2656C170.528 39.2656 169.234 39.8018 168.279 40.7562C167.325 41.7106 166.789 43.005 166.789 44.3547V61.1439C166.789 62.4936 167.325 63.788 168.279 64.7424C169.234 65.6968 170.528 66.2329 171.878 66.2329C173.227 66.2329 174.522 65.6968 175.476 64.7424C176.431 63.788 176.967 62.4936 176.967 61.1439V44.3547C176.967 43.005 176.431 41.7106 175.476 40.7562C174.522 39.8018 173.227 39.2656 171.878 39.2656Z'\n fill='#FAFAFA'\n />\n <path\n d='M184.633 29.2579C183.287 29.2643 181.999 29.8032 181.05 30.7569C180.101 31.7106 179.568 33.0014 179.568 34.347V61.1452C179.568 62.4949 180.104 63.7893 181.058 64.7437C182.013 65.6981 183.307 66.2343 184.657 66.2343C186.007 66.2343 187.301 65.6981 188.255 64.7437C189.21 63.7893 189.746 62.4949 189.746 61.1452V34.347C189.746 33.6766 189.614 33.0129 189.356 32.3939C189.099 31.7748 188.722 31.2127 188.247 30.7399C187.772 30.267 187.208 29.8926 186.588 29.6383C185.968 29.384 185.303 29.2547 184.633 29.2579Z'\n fill='currentColor'\n />\n <path\n opacity='0.3'\n d='M184.633 29.2579C183.287 29.2643 181.999 29.8032 181.05 30.7569C180.101 31.7106 179.568 33.0014 179.568 34.347V61.1452C179.568 62.4949 180.104 63.7893 181.058 64.7437C182.013 65.6981 183.307 66.2343 184.657 66.2343C186.007 66.2343 187.301 65.6981 188.255 64.7437C189.21 63.7893 189.746 62.4949 189.746 61.1452V34.347C189.746 33.6766 189.614 33.0129 189.356 32.3939C189.099 31.7748 188.722 31.2127 188.247 30.7399C187.772 30.267 187.208 29.8926 186.588 29.6383C185.968 29.384 185.303 29.2547 184.633 29.2579Z'\n fill='black'\n />\n <path\n d='M197.38 49.2656C196.03 49.2656 194.735 49.8018 193.781 50.7562C192.827 51.7106 192.291 53.005 192.291 54.3547V61.1348C192.291 62.4845 192.827 63.7789 193.781 64.7333C194.735 65.6877 196.03 66.2239 197.38 66.2239C198.049 66.2249 198.711 66.0941 199.33 65.8388C199.948 65.5835 200.51 65.2088 200.983 64.7362C201.457 64.2635 201.832 63.7021 202.089 63.0842C202.345 62.4662 202.477 61.8038 202.477 61.1348V54.3547C202.477 53.6857 202.345 53.0233 202.089 52.4053C201.832 51.7874 201.457 51.226 200.983 50.7533C200.51 50.2807 199.948 49.906 199.33 49.6507C198.711 49.3954 198.049 49.2646 197.38 49.2656Z'\n fill='currentColor'\n />\n <path\n opacity='0.6'\n d='M197.38 49.2656C196.03 49.2656 194.735 49.8018 193.781 50.7562C192.827 51.7106 192.291 53.005 192.291 54.3547V61.1348C192.291 62.4845 192.827 63.7789 193.781 64.7333C194.735 65.6877 196.03 66.2239 197.38 66.2239C198.049 66.2249 198.711 66.0941 199.33 65.8388C199.948 65.5835 200.51 65.2088 200.983 64.7362C201.457 64.2635 201.832 63.7021 202.089 63.0842C202.345 62.4662 202.477 61.8038 202.477 61.1348V54.3547C202.477 53.6857 202.345 53.0233 202.089 52.4053C201.832 51.7874 201.457 51.226 200.983 50.7533C200.51 50.2807 199.948 49.906 199.33 49.6507C198.711 49.3954 198.049 49.2646 197.38 49.2656Z'\n fill='#FAFAFA'\n />\n <path d='M304.87 164.366H325.444L290.32 127.938L304.87 164.366Z' fill='currentColor' />\n <path d='M304.87 164.366H325.444L290.32 127.938L304.87 164.366Z' fill='black' />\n <g style={{ mixBlendMode: 'multiply' }}>\n <path d='M285.094 145.137L290.32 127.938L293.283 145.137H285.094Z' fill='currentColor' />\n </g>\n <path d='M290.32 127.938V178.909L293.959 175.277L304.87 164.366L290.32 127.938Z' fill='currentColor' />\n <path opacity='0.3' d='M290.32 127.938V178.909L293.959 175.277L304.87 164.366L290.32 127.938Z' fill='#FAFAFA' />\n <path\n d='M326.7 18.6094H281.607C279.322 18.6178 277.132 19.5289 275.516 21.1442C273.899 22.7594 272.986 24.9481 272.975 27.2334V50.5208C272.986 52.8048 273.898 54.9922 275.513 56.6073C277.128 58.2223 279.315 59.1343 281.599 59.1449H314.686L314.445 67.2858L322.795 59.1449H326.684C328.97 59.1364 331.159 58.2254 332.776 56.6101C334.393 54.9948 335.306 52.8062 335.316 50.5208V27.2334C335.306 24.9508 334.395 22.7646 332.782 21.1498C331.168 19.535 328.983 18.6221 326.7 18.6094ZM280.593 28.5299C280.593 27.8892 280.847 27.2747 281.3 26.8217C281.753 26.3687 282.368 26.1142 283.008 26.1142H293.388C294.028 26.1142 294.643 26.3687 295.096 26.8217C295.549 27.2747 295.804 27.8892 295.804 28.5299C295.804 29.1706 295.549 29.785 295.096 30.238C294.643 30.6911 294.028 30.9456 293.388 30.9456H283C282.361 30.9434 281.749 30.688 281.297 30.2352C280.846 29.7824 280.593 29.1692 280.593 28.5299ZM324.14 51.0765H306.199C305.852 51.1373 305.496 51.1214 305.155 51.0299C304.815 50.9383 304.498 50.7734 304.228 50.5467C303.959 50.3199 303.742 50.0368 303.593 49.7173C303.444 49.3978 303.367 49.0495 303.367 48.697C303.367 48.3445 303.444 47.9962 303.593 47.6767C303.742 47.3571 303.959 47.0741 304.228 46.8473C304.498 46.6206 304.815 46.4556 305.155 46.3641C305.496 46.2726 305.852 46.2567 306.199 46.3175H324.14C324.487 46.2567 324.843 46.2726 325.184 46.3641C325.524 46.4556 325.84 46.6206 326.11 46.8473C326.38 47.0741 326.597 47.3571 326.746 47.6767C326.895 47.9962 326.972 48.3445 326.972 48.697C326.972 49.0495 326.895 49.3978 326.746 49.7173C326.597 50.0368 326.38 50.3199 326.11 50.5467C325.84 50.7734 325.524 50.9383 325.184 51.0299C324.843 51.1214 324.487 51.1373 324.14 51.0765ZM324.14 41.003H285.416C285.069 41.0638 284.712 41.0479 284.372 40.9564C284.032 40.8648 283.715 40.6999 283.445 40.4732C283.175 40.2464 282.958 39.9633 282.809 39.6438C282.661 39.3243 282.583 38.976 282.583 38.6235C282.583 38.271 282.661 37.9227 282.809 37.6032C282.958 37.2836 283.175 37.0006 283.445 36.7738C283.715 36.5471 284.032 36.3821 284.372 36.2906C284.712 36.1991 285.069 36.1832 285.416 36.244H324.14C324.487 36.1832 324.843 36.1991 325.184 36.2906C325.524 36.3821 325.84 36.5471 326.11 36.7738C326.38 37.0006 326.597 37.2836 326.746 37.6032C326.895 37.9227 326.972 38.271 326.972 38.6235C326.972 38.976 326.895 39.3243 326.746 39.6438C326.597 39.9633 326.38 40.2464 326.11 40.4732C325.84 40.6999 325.524 40.8648 325.184 40.9564C324.843 41.0479 324.487 41.0638 324.14 41.003ZM324.14 30.9295H301.215C300.574 30.9295 299.96 30.675 299.507 30.2219C299.053 29.7689 298.799 29.1545 298.799 28.5138C298.799 27.8731 299.053 27.2586 299.507 26.8056C299.96 26.3526 300.574 26.0981 301.215 26.0981H324.14C324.78 26.0981 325.395 26.3526 325.848 26.8056C326.301 27.2586 326.555 27.8731 326.555 28.5138C326.555 29.1545 326.301 29.7689 325.848 30.2219C325.395 30.675 324.78 30.9295 324.14 30.9295Z'\n fill='currentColor'\n />\n <path\n d='M256.178 92.4186C254.252 87.1283 251.311 82.2649 247.521 78.1016H183.497C179.707 82.2649 176.767 87.1283 174.841 92.4186L183.698 136.513C190.475 143.859 199.585 148.632 209.481 150.022C219.378 151.413 229.451 149.334 237.988 144.139C246.526 138.944 253.002 130.954 256.316 121.526C259.631 112.098 259.579 101.813 256.17 92.4186H256.178Z'\n fill='currentColor'\n />\n <path\n opacity='0.1'\n d='M256.178 92.4186C254.252 87.1283 251.311 82.2649 247.521 78.1016H183.497C179.707 82.2649 176.767 87.1283 174.841 92.4186L183.698 136.513C190.475 143.859 199.585 148.632 209.481 150.022C219.378 151.413 229.451 149.334 237.988 144.139C246.526 138.944 253.002 130.954 256.316 121.526C259.631 112.098 259.579 101.813 256.17 92.4186H256.178Z'\n fill='#FAFAFA'\n />\n <path\n d='M258.73 109.195C258.273 119.362 254.234 129.04 247.328 136.517H183.714C178.344 130.681 174.678 123.484 173.116 115.708C171.554 107.933 172.156 99.8785 174.857 92.4219H256.185C258.139 97.7885 259.004 103.49 258.73 109.195Z'\n fill='currentColor'\n />\n <path\n opacity='0.9'\n d='M258.73 109.195C258.273 119.362 254.234 129.04 247.328 136.517H183.714C178.344 130.681 174.678 123.484 173.116 115.708C171.554 107.933 172.156 99.8785 174.857 92.4219H256.185C258.139 97.7885 259.004 103.49 258.73 109.195Z'\n fill='#FAFAFA'\n />\n <path\n opacity='0.3'\n d='M258.73 109.187C258.229 119.886 253.769 130.018 246.215 137.612C238.662 145.206 228.555 149.721 217.858 150.279C207.161 150.837 196.639 147.398 188.336 140.632C180.034 133.865 174.543 124.253 172.931 113.664C171.32 103.074 173.703 92.2642 179.617 83.3338C185.531 74.4034 194.553 67.9905 204.932 65.3413C215.31 62.6921 226.303 63.9958 235.773 68.9991C245.244 74.0024 252.517 82.348 256.178 92.414C258.131 97.7808 258.998 103.482 258.73 109.187Z'\n fill='white'\n />\n <path\n opacity='0.4'\n d='M239.896 71.4704L177.683 128.207C177.372 127.633 177.066 127.053 176.765 126.468C174.863 122.66 173.541 118.589 172.844 114.389L226.577 65.3828C231.332 66.6359 235.837 68.6949 239.896 71.4704Z'\n fill='white'\n />\n <path\n opacity='0.4'\n d='M256.54 93.4584L198.088 146.797C192.025 144.122 186.658 140.089 182.402 135.009L246.273 76.7578C250.928 81.4662 254.44 87.1796 256.54 93.4584Z'\n fill='white'\n />\n <path\n d='M258.714 82.2486C253.779 73.6924 246.418 66.7922 237.561 62.421C228.704 58.0498 218.749 56.404 208.956 57.6919C199.163 58.9798 189.973 63.1436 182.547 69.6563C175.121 76.169 169.794 84.738 167.24 94.279C164.686 103.82 165.019 113.904 168.197 123.256C171.376 132.608 177.257 140.807 185.096 146.815C192.935 152.823 202.381 156.371 212.237 157.01C222.094 157.649 231.918 155.35 240.467 150.404C251.918 143.779 260.271 132.88 263.692 120.101C267.113 107.323 265.323 93.7083 258.714 82.2486ZM181.411 126.891C177.518 120.148 175.712 112.402 176.221 104.633C176.729 96.8633 179.531 89.4193 184.27 83.2419C189.01 77.0644 195.474 72.4312 202.847 69.9279C210.22 67.4245 218.169 67.1636 225.69 69.1782C233.211 71.1927 239.966 75.3921 245.1 81.2455C250.234 87.0989 253.518 94.3432 254.535 102.063C255.552 109.782 254.257 117.63 250.815 124.613C247.372 131.597 241.935 137.402 235.193 141.296C230.716 143.882 225.774 145.56 220.649 146.236C215.524 146.911 210.316 146.57 205.322 145.232C200.329 143.895 195.648 141.586 191.546 138.439C187.445 135.292 184.004 131.368 181.419 126.891H181.411Z'\n fill='currentColor'\n />\n <path\n opacity='0.1'\n d='M258.714 82.2486C253.779 73.6924 246.418 66.7922 237.561 62.421C228.704 58.0498 218.749 56.404 208.956 57.6919C199.163 58.9798 189.973 63.1436 182.547 69.6563C175.121 76.169 169.794 84.738 167.24 94.279C164.686 103.82 165.019 113.904 168.197 123.256C171.376 132.608 177.257 140.807 185.096 146.815C192.935 152.823 202.381 156.371 212.237 157.01C222.094 157.649 231.918 155.35 240.467 150.404C251.918 143.779 260.271 132.88 263.692 120.101C267.113 107.323 265.323 93.7083 258.714 82.2486ZM181.411 126.891C177.518 120.148 175.712 112.402 176.221 104.633C176.729 96.8633 179.531 89.4193 184.27 83.2419C189.01 77.0644 195.474 72.4312 202.847 69.9279C210.22 67.4245 218.169 67.1636 225.69 69.1782C233.211 71.1927 239.966 75.3921 245.1 81.2455C250.234 87.0989 253.518 94.3432 254.535 102.063C255.552 109.782 254.257 117.63 250.815 124.613C247.372 131.597 241.935 137.402 235.193 141.296C230.716 143.882 225.774 145.56 220.649 146.236C215.524 146.911 210.316 146.57 205.322 145.232C200.329 143.895 195.648 141.586 191.546 138.439C187.445 135.292 184.004 131.368 181.419 126.891H181.411Z'\n fill='black'\n />\n <path d='M100.702 158.539L106.87 159.972L101.757 163.789C101.757 163.789 98.0934 162.13 97.9243 159.529L100.702 158.539Z' fill='#E4897B' />\n <path d='M110.172 164.083L105.727 167.046L101.757 163.793L106.871 159.984L110.172 164.083Z' fill='#E4897B' />\n <path\n d='M179.945 133.488C173.391 138.319 166.667 142.909 159.911 147.394C153.155 151.879 146.311 156.252 139.434 160.544C132.557 164.836 125.616 169.039 118.651 173.121C115.172 175.199 111.662 177.212 108.183 179.257C106.455 180.357 104.571 181.191 102.595 181.729C101.54 182.009 100.462 182.19 99.3737 182.269C98.1656 182.367 96.9498 182.305 95.7581 182.084C94.9065 181.915 94.0965 181.58 93.3744 181.099C92.6523 180.617 92.0323 179.997 91.5499 179.275C91.0675 178.554 90.7321 177.744 90.563 176.892C90.3939 176.041 90.3944 175.164 90.5644 174.313C90.6195 174.04 90.6949 173.77 90.7898 173.508C91.1786 172.366 91.7203 171.283 92.4003 170.287C93.0069 169.392 93.6971 168.556 94.4617 167.791C95.918 166.349 97.5818 165.133 99.3978 164.183C102.917 162.178 106.411 160.157 109.954 158.168C117.008 154.182 124.127 150.301 131.261 146.468C138.395 142.635 145.618 138.923 152.882 135.299C160.145 131.676 167.464 128.149 174.937 124.896C176.065 124.397 177.337 124.333 178.509 124.715C179.681 125.097 180.671 125.899 181.288 126.967C181.905 128.034 182.106 129.292 181.852 130.498C181.599 131.705 180.908 132.775 179.913 133.504L179.945 133.488Z'\n fill='currentColor'\n />\n <path\n opacity='0.1'\n d='M179.945 133.488C173.391 138.319 166.667 142.909 159.911 147.394C153.155 151.879 146.311 156.252 139.434 160.544C132.557 164.836 125.616 169.039 118.651 173.121C115.172 175.199 111.662 177.212 108.183 179.257C106.455 180.357 104.571 181.191 102.595 181.729C101.54 182.009 100.462 182.19 99.3737 182.269C98.1656 182.367 96.9498 182.305 95.7581 182.084C94.9065 181.915 94.0965 181.58 93.3744 181.099C92.6523 180.617 92.0323 179.997 91.5499 179.275C91.0675 178.554 90.7321 177.744 90.563 176.892C90.3939 176.041 90.3944 175.164 90.5644 174.313C90.6195 174.04 90.6949 173.77 90.7898 173.508C91.1786 172.366 91.7203 171.283 92.4003 170.287C93.0069 169.392 93.6971 168.556 94.4617 167.791C95.918 166.349 97.5818 165.133 99.3978 164.183C102.917 162.178 106.411 160.157 109.954 158.168C117.008 154.182 124.127 150.301 131.261 146.468C138.395 142.635 145.618 138.923 152.882 135.299C160.145 131.676 167.464 128.149 174.937 124.896C176.065 124.397 177.337 124.333 178.509 124.715C179.681 125.097 180.671 125.899 181.288 126.967C181.905 128.034 182.106 129.292 181.852 130.498C181.599 131.705 180.908 132.775 179.913 133.504L179.945 133.488Z'\n fill='black'\n />\n <path\n d='M109.64 120.387C109.238 121.039 108.779 121.828 108.344 122.569C107.909 123.31 107.482 124.083 107.08 124.864C106.274 126.402 105.469 127.964 104.664 129.55C103.859 131.136 103.206 132.771 102.546 134.382C102.224 135.187 101.886 135.992 101.588 136.797L101.137 138.029C101.048 138.263 101.032 138.359 100.976 138.528C100.92 138.698 100.895 138.859 100.847 139.02C100.533 140.611 100.374 142.229 100.372 143.851C100.332 145.582 100.372 147.346 100.469 149.125C100.565 150.905 100.662 152.693 100.823 154.48C100.984 156.268 101.145 158.088 101.314 159.859L98.2059 160.495C97.6583 158.7 97.2315 156.912 96.8048 155.1C96.378 153.288 96.0559 151.469 95.7419 149.617C95.4278 147.765 95.2185 145.904 95.0816 143.98C94.9141 141.965 94.9654 139.937 95.2346 137.933C95.2829 137.651 95.3231 137.385 95.3956 137.127C95.4681 136.87 95.5406 136.507 95.605 136.322L95.9995 134.953C96.2572 134.043 96.5551 133.141 96.8611 132.248C97.4812 130.452 98.1576 128.689 98.9145 126.949C99.6714 125.21 100.477 123.511 101.33 121.836C101.773 121.031 102.24 120.169 102.715 119.34C103.19 118.51 103.665 117.729 104.261 116.852L109.64 120.387Z'\n fill='#E4897B'\n />\n <path\n d='M106.202 286.657C105.659 286.639 105.119 286.564 104.592 286.431C104.563 286.426 104.537 286.413 104.517 286.393C104.497 286.373 104.484 286.347 104.479 286.318C104.474 286.289 104.477 286.259 104.489 286.232C104.5 286.205 104.519 286.182 104.543 286.165C104.761 286.02 106.661 284.796 107.394 285.127C107.475 285.164 107.545 285.223 107.596 285.296C107.647 285.37 107.677 285.456 107.684 285.545C107.722 285.689 107.719 285.84 107.676 285.982C107.634 286.124 107.553 286.252 107.442 286.351C107.079 286.599 106.639 286.708 106.202 286.657ZM104.97 286.222C106.065 286.439 106.887 286.399 107.201 286.109C107.27 286.043 107.32 285.959 107.347 285.868C107.374 285.776 107.376 285.679 107.354 285.586C107.353 285.544 107.34 285.505 107.317 285.47C107.294 285.436 107.262 285.409 107.225 285.392C106.846 285.223 105.743 285.755 104.97 286.222Z'\n fill='currentColor'\n />\n <path\n d='M104.584 286.44C104.56 286.447 104.535 286.447 104.511 286.44C104.488 286.428 104.469 286.409 104.456 286.386C104.443 286.364 104.437 286.338 104.439 286.311C104.439 286.239 104.439 284.435 105.123 283.831C105.208 283.755 105.307 283.698 105.416 283.663C105.524 283.629 105.638 283.617 105.751 283.63C105.87 283.632 105.984 283.674 106.075 283.75C106.166 283.827 106.228 283.932 106.25 284.049C106.395 284.749 105.252 286.102 104.64 286.464C104.62 286.461 104.6 286.453 104.584 286.44ZM105.655 283.896C105.533 283.897 105.415 283.943 105.324 284.025C104.929 284.608 104.726 285.301 104.745 286.005C105.341 285.522 106.049 284.508 105.961 284.081C105.961 284.008 105.904 283.928 105.719 283.904L105.655 283.896Z'\n fill='currentColor'\n />\n <path\n d='M134.724 286.66C134.06 286.65 133.399 286.574 132.751 286.435C132.72 286.431 132.691 286.417 132.669 286.395C132.647 286.373 132.633 286.345 132.63 286.314C132.626 286.283 132.632 286.252 132.647 286.225C132.661 286.198 132.683 286.175 132.71 286.161C132.992 286.016 135.489 284.744 136.253 285.162C136.327 285.2 136.39 285.256 136.435 285.325C136.48 285.395 136.506 285.474 136.511 285.557C136.529 285.69 136.513 285.825 136.465 285.95C136.417 286.075 136.339 286.186 136.237 286.273C135.792 286.572 135.258 286.709 134.724 286.66ZM133.242 286.225C134.635 286.459 135.658 286.394 136.044 286.056C136.108 285.996 136.157 285.922 136.187 285.839C136.216 285.756 136.225 285.668 136.213 285.581C136.213 285.548 136.204 285.516 136.187 285.487C136.17 285.459 136.146 285.436 136.117 285.42C135.698 285.194 134.265 285.734 133.242 286.225Z'\n fill='currentColor'\n />\n <path\n d='M132.775 286.438C132.762 286.444 132.748 286.446 132.734 286.446C132.721 286.446 132.707 286.444 132.694 286.438C132.671 286.427 132.652 286.408 132.641 286.385C132.629 286.361 132.625 286.335 132.63 286.31C132.63 286.237 132.783 284.546 133.564 283.894C133.788 283.706 134.077 283.613 134.369 283.636C134.78 283.676 134.892 283.886 134.925 284.055C135.037 284.764 133.564 286.116 132.815 286.471L132.775 286.438ZM134.272 283.894C134.083 283.896 133.901 283.964 133.757 284.087C133.295 284.632 133.014 285.308 132.952 286.02C133.709 285.561 134.715 284.498 134.643 284.071C134.643 284.071 134.643 283.926 134.353 283.902L134.272 283.894Z'\n fill='currentColor'\n />\n <path\n d='M119.175 96.2109C119.666 99.9714 120.785 107.597 118.063 109.9C118.063 109.9 118.869 113.733 125.729 114.176C133.315 114.667 129.594 110.649 129.594 110.649C125.52 109.393 125.826 106.325 126.736 103.49L119.175 96.2109Z'\n fill='#E4897B'\n />\n <path\n d='M133.242 88.569C133.193 88.5679 133.146 88.554 133.105 88.5287C133.07 88.511 133.039 88.4863 133.013 88.4561C132.988 88.426 132.969 88.391 132.958 88.3533C132.947 88.3157 132.943 88.2761 132.948 88.237C132.952 88.198 132.965 88.1602 132.984 88.1261C133.193 87.7001 133.502 87.3312 133.885 87.0507C134.268 86.7702 134.713 86.5866 135.182 86.5156C135.254 86.5184 135.323 86.5472 135.375 86.5968C135.428 86.6463 135.461 86.7131 135.467 86.7849C135.474 86.8567 135.455 86.9285 135.413 86.9871C135.371 87.0457 135.309 87.087 135.239 87.1034C134.872 87.1676 134.524 87.3158 134.224 87.5365C133.924 87.7573 133.678 88.0445 133.507 88.3757C133.485 88.4288 133.448 88.4748 133.401 88.5088C133.354 88.5428 133.299 88.5636 133.242 88.569Z'\n fill='#263238'\n />\n <path\n d='M135.408 91.875C135.963 92.9809 136.667 94.0051 137.502 94.9188C137.263 95.1268 136.981 95.28 136.676 95.3676C136.372 95.4552 136.052 95.4752 135.738 95.4261L135.408 91.875Z'\n fill='#DE5753'\n />\n <path\n d='M134.877 91.0463C134.925 91.5536 135.231 91.9321 135.553 91.8999C135.875 91.8677 136.117 91.4409 136.068 90.9336C136.02 90.4263 135.714 90.0478 135.384 90.08C135.054 90.1122 134.828 90.5471 134.877 91.0463Z'\n fill='#263238'\n />\n <path d='M135.279 90.123L136.455 89.6641C136.455 89.6641 135.891 90.6625 135.279 90.123Z' fill='#263238' />\n <path d='M125.882 286.284H132.155L132.573 271.773H126.301L125.882 286.284Z' fill='#E4897B' />\n <path d='M97.4014 286.284H103.674L105.687 271.773H99.4225L97.4014 286.284Z' fill='#E4897B' />\n <path\n d='M104.06 285.563H97.0144C96.8937 285.561 96.7765 285.604 96.6847 285.682C96.5929 285.761 96.5327 285.87 96.5152 285.989L95.7099 291.562C95.6941 291.702 95.7081 291.845 95.751 291.979C95.7939 292.114 95.8648 292.239 95.9591 292.344C96.0533 292.45 96.1687 292.535 96.2979 292.592C96.427 292.65 96.5669 292.681 96.7084 292.681C99.1241 292.641 100.348 292.496 103.448 292.496C105.349 292.496 108.135 292.689 110.768 292.689C113.401 292.689 113.538 290.088 112.443 289.854C107.531 288.8 106.758 287.342 105.099 285.949C104.809 285.701 104.441 285.564 104.06 285.563Z'\n fill='#263238'\n />\n <path\n d='M132.364 285.563H125.326C125.205 285.56 125.087 285.602 124.995 285.68C124.903 285.759 124.843 285.869 124.827 285.989L124.022 291.562C124.007 291.703 124.022 291.845 124.066 291.98C124.11 292.115 124.182 292.239 124.277 292.345C124.372 292.45 124.488 292.535 124.617 292.593C124.747 292.65 124.887 292.681 125.029 292.681C127.444 292.641 128.668 292.496 131.76 292.496C133.669 292.496 137.606 292.689 140.239 292.689C142.873 292.689 143.009 290.088 141.914 289.855C137.002 288.8 135.07 287.342 133.411 285.949C133.119 285.7 132.748 285.563 132.364 285.563Z'\n fill='#263238'\n />\n <path d='M132.566 271.773L132.356 279.254H126.083L126.301 271.773H132.566Z' fill='#CE6F64' />\n <path d='M99.4142 271.773H105.687L104.648 279.254H98.3755L99.4142 271.773Z' fill='#CE6F64' />\n <path\n d='M112.314 121.355C111.124 123.215 109.745 124.948 108.199 126.525L107.483 126.05L99.543 120.776C99.543 120.776 103.875 111.113 107.136 110.622C110.253 110.122 112.523 113.343 113.578 116.79C113.981 118.038 113.312 119.729 112.314 121.355Z'\n fill='currentColor'\n />\n <path\n opacity='0.6'\n d='M112.314 121.355C111.124 123.215 109.745 124.948 108.199 126.525L107.483 126.05L99.543 120.776C99.543 120.776 103.875 111.113 107.136 110.622C110.253 110.122 112.523 113.343 113.578 116.79C113.981 118.038 113.312 119.729 112.314 121.355Z'\n fill='#FAFAFA'\n />\n <path\n d='M112.314 121.356C111.124 123.216 109.745 124.948 108.2 126.526L107.483 126.051C107.837 123.152 108.965 120.277 110.253 119.367C111.042 119.448 111.743 120.285 112.314 121.356Z'\n fill='currentColor'\n />\n <path\n opacity='0.4'\n d='M112.314 121.356C111.124 123.216 109.745 124.948 108.2 126.526L107.483 126.051C107.837 123.152 108.965 120.277 110.253 119.367C111.042 119.448 111.743 120.285 112.314 121.356Z'\n fill='#FAFAFA'\n />\n <path\n d='M139.475 126.189C139.097 128.605 138.605 131.447 137.945 134.821C137.14 139.137 136.012 144.315 134.587 150.507L109.182 148.897C110.277 138.581 110.704 132.204 107.137 110.664C110.743 110.16 114.382 109.921 118.024 109.947C121.88 109.922 125.734 110.172 129.554 110.696C134.483 111.501 140.023 112.983 140.023 112.983C140.023 112.983 141.44 113.539 139.475 126.189Z'\n fill='currentColor'\n />\n <path\n opacity='0.6'\n d='M139.475 126.189C139.097 128.605 138.605 131.447 137.945 134.821C137.14 139.137 136.012 144.315 134.587 150.507L109.182 148.897C110.277 138.581 110.704 132.204 107.137 110.664C110.743 110.16 114.382 109.921 118.024 109.947C121.88 109.922 125.734 110.172 129.554 110.696C134.483 111.501 140.023 112.983 140.023 112.983C140.023 112.983 141.44 113.539 139.475 126.189Z'\n fill='#FAFAFA'\n />\n <path\n d='M139.475 126.189C139.096 128.605 138.605 131.447 137.945 134.821C136.547 131.849 135.387 128.772 134.474 125.617H139.193L139.475 126.189Z'\n fill='currentColor'\n />\n <path\n opacity='0.4'\n d='M139.475 126.189C139.096 128.605 138.605 131.447 137.945 134.821C136.547 131.849 135.387 128.772 134.474 125.617H139.193L139.475 126.189Z'\n fill='#FAFAFA'\n />\n <path\n d='M117.79 90.9223C118.748 97.0663 119.03 99.6913 122.452 102.566C127.597 106.898 134.933 104.37 135.827 98.0567C136.632 92.3798 134.925 83.2806 128.636 81.3964C127.253 80.972 125.784 80.9086 124.369 81.2124C122.954 81.5161 121.641 82.1768 120.554 83.1316C119.467 84.0865 118.642 85.3036 118.158 86.6673C117.674 88.031 117.547 89.4958 117.79 90.9223Z'\n fill='#E4897B'\n />\n <path\n d='M127.871 150.068C127.871 150.068 127.468 161.253 126.502 175.361C125.697 187.198 124.481 201.08 122.782 212.144L122.734 212.45C119.682 232.033 106.162 277.803 106.162 277.803H97.6104C97.6104 277.803 104.656 233.595 106.202 214.189C110.124 165.175 100.3 159.627 109.182 148.82L127.871 150.068Z'\n fill='currentColor'\n />\n <path\n opacity='0.3'\n d='M127.871 150.068C127.871 150.068 127.468 161.253 126.502 175.361C125.697 187.198 124.481 201.08 122.782 212.144L122.734 212.45C119.682 232.033 106.162 277.803 106.162 277.803H97.6104C97.6104 277.803 104.656 233.595 106.202 214.189C110.124 165.175 100.3 159.627 109.182 148.82L127.871 150.068Z'\n fill='black'\n />\n <path\n d='M126.503 175.36C125.697 187.197 124.482 201.079 122.783 212.143C119.892 197.769 115.141 176.777 121.518 163.023C123.04 166.929 124.812 171.342 126.503 175.36Z'\n fill='currentColor'\n />\n <path\n opacity='0.4'\n d='M126.503 175.36C125.697 187.197 124.482 201.079 122.783 212.143C119.892 197.769 115.141 176.777 121.518 163.023C123.04 166.929 124.812 171.342 126.503 175.36Z'\n fill='black'\n />\n <path\n d='M134.587 150.513C134.587 150.513 141.834 193.464 141.399 212.58C140.973 232.47 133.685 277.804 133.685 277.804H125.214C125.214 277.804 126.551 233.621 125.802 214.094C124.997 192.804 115.978 149.297 115.978 149.297L134.587 150.513Z'\n fill='currentColor'\n />\n <path\n opacity='0.3'\n d='M134.587 150.513C134.587 150.513 141.834 193.464 141.399 212.58C140.973 232.47 133.685 277.804 133.685 277.804H125.214C125.214 277.804 126.551 233.621 125.802 214.094C124.997 192.804 115.978 149.297 115.978 149.297L134.587 150.513Z'\n fill='black'\n />\n <path d='M123.764 278.199H135.126L136.012 274.391L123.362 274.479L123.764 278.199Z' fill='#263238' />\n <path d='M96.3701 278.199H107.732L108.618 274.391L96.4506 274.479L96.3701 278.199Z' fill='#263238' />\n <path\n d='M108.892 147.349L107.603 149.555C107.499 149.725 107.7 149.918 107.99 149.934L134.635 151.665C134.86 151.665 135.062 151.585 135.086 151.44L135.464 149.177C135.464 149.024 135.295 148.879 135.046 148.863L109.278 147.188C109.206 147.185 109.134 147.197 109.067 147.225C109 147.253 108.94 147.295 108.892 147.349Z'\n fill='#263238'\n />\n <path\n d='M112.161 150.443L111.477 150.394C111.34 150.394 111.235 150.306 111.251 150.225L111.766 147.286C111.766 147.205 111.903 147.141 112.04 147.149L112.733 147.189C112.87 147.189 112.966 147.278 112.958 147.367L112.443 150.298C112.427 150.386 112.298 150.451 112.161 150.443Z'\n fill='currentColor'\n />\n <path\n opacity='0.3'\n d='M112.161 150.443L111.477 150.394C111.34 150.394 111.235 150.306 111.251 150.225L111.766 147.286C111.766 147.205 111.903 147.141 112.04 147.149L112.733 147.189C112.87 147.189 112.966 147.278 112.958 147.367L112.443 150.298C112.427 150.386 112.298 150.451 112.161 150.443Z'\n fill='black'\n />\n <path\n d='M128.837 151.52L128.153 151.48C128.016 151.48 127.911 151.392 127.927 151.303L128.443 148.372C128.443 148.283 128.58 148.227 128.725 148.235L129.409 148.275C129.546 148.275 129.651 148.364 129.635 148.453L129.119 151.384C129.127 151.472 128.998 151.529 128.837 151.52Z'\n fill='currentColor'\n />\n <path\n opacity='0.3'\n d='M128.837 151.52L128.153 151.48C128.016 151.48 127.911 151.392 127.927 151.303L128.443 148.372C128.443 148.283 128.58 148.227 128.725 148.235L129.409 148.275C129.546 148.275 129.651 148.364 129.635 148.453L129.119 151.384C129.127 151.472 128.998 151.529 128.837 151.52Z'\n fill='black'\n />\n <path\n d='M141.463 119.414C142.43 122.635 143.348 125.896 144.242 129.149L146.939 138.885L147.277 140.093L147.366 140.39L147.406 140.543V140.624C147.435 140.731 147.47 140.835 147.511 140.938C147.708 141.427 147.98 141.884 148.316 142.291C149.277 143.306 150.391 144.164 151.617 144.835C154.427 146.356 157.398 147.555 160.475 148.411L160.008 151.551C156.397 151.365 152.84 150.595 149.476 149.272C147.614 148.543 145.898 147.484 144.411 146.148C143.559 145.358 142.85 144.426 142.317 143.394C142.173 143.115 142.047 142.827 141.939 142.532L141.85 142.315L141.794 142.162L141.689 141.864L141.262 140.648C140.135 137.427 139.088 134.206 138.098 130.937C137.107 127.668 136.133 124.447 135.247 121.161L141.463 119.414Z'\n fill='#E4897B'\n />\n <path\n d='M140.022 112.946C143.243 114.001 146.625 124.533 146.625 124.533L134.997 129.542C134.997 129.542 130.166 117.721 132.308 115.048C134.45 112.374 136.326 111.738 140.022 112.946Z'\n fill='currentColor'\n />\n <path\n opacity='0.6'\n d='M140.022 112.946C143.243 114.001 146.625 124.533 146.625 124.533L134.997 129.542C134.997 129.542 130.166 117.721 132.308 115.048C134.45 112.374 136.326 111.738 140.022 112.946Z'\n fill='#FAFAFA'\n />\n <path\n d='M133.806 81.0408C131.752 78.5043 115.889 76.6925 115.044 83.6014C109.407 87.5471 114.754 97.7414 115.559 100.334C111.67 101.413 99.1401 105.697 108.312 114.023C117.483 122.349 131.237 120.932 133.926 112.316C135.811 106.293 129.828 96.2114 129.956 92.6845C130.085 89.1575 137.324 85.3488 133.806 81.0408Z'\n fill='#263238'\n />\n <path\n d='M116.67 101.6C116.641 101.601 116.612 101.595 116.585 101.582C116.558 101.57 116.535 101.551 116.517 101.528C115.06 99.7562 109.987 90.4476 111.766 86.0189C112.042 85.3317 112.51 84.7386 113.114 84.3102C113.718 83.8818 114.433 83.6364 115.173 83.6031C115.199 83.5998 115.225 83.6018 115.25 83.609C115.275 83.6162 115.299 83.6284 115.319 83.645C115.34 83.6616 115.356 83.6821 115.369 83.7054C115.381 83.7286 115.388 83.7541 115.39 83.7803C115.397 83.8325 115.383 83.8854 115.351 83.9276C115.32 83.9697 115.273 83.9978 115.221 84.0058C114.556 84.0303 113.912 84.2452 113.365 84.6249C112.818 85.0045 112.392 85.533 112.137 86.1477C110.422 90.4315 115.398 99.5227 116.823 101.262C116.849 101.29 116.865 101.326 116.871 101.363C116.876 101.401 116.87 101.44 116.854 101.474C116.838 101.508 116.811 101.537 116.779 101.557C116.746 101.576 116.708 101.586 116.67 101.584V101.6Z'\n fill='#263238'\n />\n <path\n d='M128.701 92.3039C128.88 93.4799 129.447 94.5623 130.311 95.3799C131.454 96.475 132.533 95.7262 132.638 94.3331C132.735 93.085 132.252 91.0156 130.899 90.4358C129.546 89.856 128.531 90.9109 128.701 92.3039Z'\n fill='#E4897B'\n />\n <path\n d='M156.529 147.546L161.103 145.992L160.386 151.492C160.386 151.492 158.583 152.297 156.248 150.268L154.017 148.843L155.772 147.884C156.013 147.747 156.267 147.634 156.529 147.546Z'\n fill='#E4897B'\n />\n <path d='M164.3 145.977L162.899 150.784L160.387 151.484L161.103 145.993L164.3 145.977Z' fill='#E4897B' />\n </g>\n </svg>\n );\n};\n\n\n/**\n * PageNotFound component displays a 404 error page\n * \n * @example\n * ```tsx\n * import { Link } from 'react-router-dom';\n * \n * <PageNotFound \n * linkComponent={Link}\n * homePath=\"/home\"\n * />\n * ```\n */\nexport const PageNotFound: FC<PageNotFoundProps> = ({\n icon,\n homePath = '/home',\n backToHomeText = 'Back to Home',\n title = '404',\n subtitle = 'PAGE NOT FOUND',\n description = \"Page doesn't exist or is unavailable\",\n className,\n 'data-testid': testId,\n}) => {\n return (\n <div \n className={`flex justify-center items-center h-full ${className || ''}`}\n data-testid={testId}\n >\n <div className='flex flex-col items-center text-neutral-800'>\n <div className='mb-4'>\n {icon || <NotFoundIcon />}\n </div>\n <div className='text-center'>\n <h1 className='text-6xl font-bold font-inter dark:text-white'>{title}</h1>\n <h1 className='text-base font-bold font-inter dark:text-white'>{subtitle}</h1>\n <div className='py-2' />\n <p className='font-inter text-sm font-medium text-neutral-400'>{description}</p>\n <div className='py-4' />\n <Link to={homePath}>\n <span className='font-inter text-sm text-center text-white font-bold bg-primary-600 px-4 py-2 rounded-lg'>\n {backToHomeText}\n </span>\n </Link>\n </div>\n </div>\n </div>\n );\n};\n","import { FC, ReactNode } from 'react';\n\nexport interface UserNotFoundProps {\n /** Custom CSS class name */\n className?: string;\n /** Title text */\n title?: ReactNode;\n /** Description text */\n description?: ReactNode;\n /** Warning title */\n warningTitle?: string;\n /** Warning description */\n warningDescription?: string;\n /** Custom icon */\n icon?: ReactNode;\n /** Custom warning icon */\n warningIcon?: ReactNode;\n /** Test ID for testing */\n 'data-testid'?: string;\n}\n\nconst BackgroundEffectLight = () => {\n return (\n <svg\n className='w-full h-full min-w-full min-h-full object-cover'\n viewBox='0 0 1440 1024'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n preserveAspectRatio='xMidYMid slice'\n >\n <g opacity='0.2'>\n <path\n d='M811.5 147C830.001 147 845 132.002 845 113.5C845 94.9985 830.001 80 811.5 80C792.998 80 778 94.9985 778 113.5C778 132.002 792.998 147 811.5 147Z'\n fill='#C6E1F9'\n />\n <path d='M85.9999 187H30.9999V307H85.9999V187Z' fill='#3392E9' />\n <path\n d='M1343 496V465.687C1367.75 465.687 1387.89 445.411 1387.89 420.5C1387.89 395.589 1367.75 375.313 1343 375.313V345C1384.35 345 1418 378.87 1418 420.5C1418 462.13 1384.35 496 1343 496Z'\n fill='#3392E9'\n />\n <path d='M0.999878 29H201.311C235.361 29 263 56.5618 263 90.4952C263 124.438 235.351 152 201.311 152H0.999878V29Z' fill='#C6E1F9' />\n <path d='M221 71C180.137 71 147 104.128 147 145C147 185.873 180.127 219 221 219V71Z' fill='#8AC0F2' />\n <path d='M20.9999 1024C20.9999 914.1 110.535 825 221 825V1024H20.9999Z' fill='#3392E9' />\n <path d='M74.9999 544C74.9999 587.628 39.6334 623 -4.00013 623L-4.00012 544L74.9999 544Z' fill='#3392E9' />\n <path\n d='M337.425 883H144.574C139.294 883 135 878.529 135 873C135 867.485 139.281 863 144.574 863H337.425C342.706 863 347 867.471 347 873C347 878.515 342.719 883 337.425 883Z'\n fill='#C6E1F9'\n />\n <path d='M1203.51 771C1244.62 771 1278 804.363 1278 845.45V1024H1129V845.45C1129 804.363 1162.38 771 1203.49 771H1203.51Z' fill='#C6E1F9' />\n <path d='M1181.99 916C1181.99 887.283 1158.26 864 1128.99 864C1099.73 864 1076 887.283 1076 916H1182H1181.99Z' fill='#8AC0F2' />\n <path d='M1477.99 664C1477.99 635.283 1454.26 612 1424.99 612C1395.73 612 1372 635.283 1372 664H1478H1477.99Z' fill='#8AC0F2' />\n <path\n d='M37.9999 962C58.4344 962 74.9999 945.435 74.9999 925C74.9999 904.565 58.4344 888 37.9999 888C17.5653 888 0.999878 904.565 0.999878 925C0.999878 945.435 17.5653 962 37.9999 962Z'\n fill='#8AC0F2'\n />\n <path d='M198.842 955.916H243.034V1000.1L198.842 955.916Z' fill='#C6E1F9' />\n <path d='M243.035 955.916H287.24V1000.1L243.035 955.916Z' fill='#C6E1F9' />\n <path d='M287.24 955.916H331.433V1000.1L287.24 955.916Z' fill='#C6E1F9' />\n <path d='M198.842 911.73H243.034V955.916L198.842 911.73Z' fill='#C6E1F9' />\n <path d='M243.035 911.73H287.24V955.916L243.035 911.73Z' fill='#C6E1F9' />\n <path d='M287.24 911.73H331.433V955.916L287.24 911.73Z' fill='#C6E1F9' />\n <path d='M1342.9 110.06L1372.04 80.9297L1401.17 110.06H1342.9Z' fill='#3392E9' />\n <path d='M1342.9 80.9314L1372.04 51.8008L1401.17 80.9314H1342.9Z' fill='#3392E9' />\n <path d='M1342.9 51.8025L1372.04 22.6719L1401.17 51.8025H1342.9Z' fill='#3392E9' />\n <path\n d='M85.9999 0H103.462C103.462 14.5232 115.142 26.3374 129.5 26.3374C143.858 26.3374 155.538 14.5232 155.538 0H173C173 24.2641 153.488 44 129.5 44C105.512 44 85.9999 24.2641 85.9999 0Z'\n fill='#C6E1F9'\n />\n <path\n d='M788.885 920.476C788.885 981.413 739.294 1030.98 678.367 1030.98V986.601C714.843 986.601 744.521 956.927 744.521 920.457H788.904L788.885 920.476Z'\n fill='#8AC0F2'\n />\n <path d='M1380 957H1217V993H1380V957Z' fill='#3392E9' />\n <ellipse\n cx='194.163'\n cy='48.4738'\n rx='1.21227'\n ry='1.21209'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M210.329 48.4746H315.39' stroke='#C6E1F9' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='323.468'\n cy='48.4738'\n rx='1.21227'\n ry='1.21209'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <ellipse\n cx='194.163'\n cy='63.9094'\n rx='1.21227'\n ry='1.21209'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M210.329 63.9121H315.39' stroke='#C6E1F9' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='323.468'\n cy='63.9094'\n rx='1.21227'\n ry='1.21209'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <ellipse\n cx='194.163'\n cy='79.3566'\n rx='1.21227'\n ry='1.21209'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M210.329 79.3574H315.39' stroke='#C6E1F9' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='323.468'\n cy='79.3566'\n rx='1.21227'\n ry='1.21209'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <ellipse\n cx='1179.41'\n cy='715.612'\n rx='1.61233'\n ry='1.61209'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M1179.41 735.332V824.074' stroke='#C6E1F9' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='1179.41'\n cy='833.925'\n rx='1.61233'\n ry='1.61209'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <ellipse\n cx='1158.88'\n cy='715.612'\n rx='1.61233'\n ry='1.61209'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M1158.88 735.332V824.074' stroke='#C6E1F9' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='1158.88'\n cy='833.925'\n rx='1.61233'\n ry='1.61209'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <ellipse\n cx='1138.33'\n cy='715.612'\n rx='1.61233'\n ry='1.61209'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M1138.33 735.332V824.074' stroke='#C6E1F9' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='1138.33'\n cy='833.925'\n rx='1.61233'\n ry='1.61209'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <ellipse\n cx='1117.78'\n cy='715.612'\n rx='1.61233'\n ry='1.61209'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M1117.79 735.332V824.074' stroke='#C6E1F9' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='1117.78'\n cy='833.925'\n rx='1.61233'\n ry='1.61209'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path\n d='M1437 471.777H1340.59C1300.92 471.777 1268.77 439.63 1268.77 399.968V234.196C1268.77 194.533 1300.92 162.387 1340.59 162.387H1437'\n stroke='#3392E9'\n strokeMiterlimit='10'\n />\n <path\n d='M1437 452.629H1340.59C1311.55 452.629 1287.93 429.004 1287.93 399.969V234.197C1287.93 205.162 1311.55 181.537 1340.59 181.537H1437'\n stroke='#3392E9'\n strokeMiterlimit='10'\n />\n <path\n d='M1437 433.479H1340.59C1322.11 433.479 1307.08 418.447 1307.08 399.968V234.197C1307.08 215.718 1322.11 200.686 1340.59 200.686H1437'\n stroke='#3392E9'\n strokeMiterlimit='10'\n />\n <path\n d='M1437 414.331H1340.59C1332.67 414.331 1326.23 407.892 1326.23 399.969V234.198C1326.23 226.275 1332.67 219.836 1340.59 219.836H1437'\n stroke='#3392E9'\n strokeMiterlimit='10'\n />\n <path d='M785 12V21' stroke='#5A5668' strokeLinecap='round' strokeLinejoin='round' />\n <path\n d='M916.503 -13C929.178 5.73908 936.585 28.3253 936.585 52.5983C936.585 117.33 883.907 170.001 819.165 170.001V122.864C857.92 122.864 889.441 91.3358 889.441 52.5983C889.441 23.1958 871.289 -2.03613 845.614 -12.5032'\n stroke='#3392E9'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M780.26 16.3105H789.204' stroke='#3392E9' strokeLinecap='round' strokeLinejoin='round' />\n <path d='M30.9999 14V21' stroke='#5A5668' strokeLinecap='round' strokeLinejoin='round' />\n <path d='M27.9999 18H34.9999' stroke='#5A5668' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='61.7071'\n cy='941.062'\n rx='1.6049'\n ry='1.60466'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M84.1749 941.061H140.333' stroke='#C6E1F9' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='151.555'\n cy='941.062'\n rx='1.6049'\n ry='1.60466'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <ellipse\n cx='61.7071'\n cy='961.511'\n rx='1.6049'\n ry='1.60466'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M84.1752 961.512H140.334' stroke='#C6E1F9' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='151.555'\n cy='961.511'\n rx='1.6049'\n ry='1.60466'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <ellipse\n cx='61.7071'\n cy='981.96'\n rx='1.6049'\n ry='1.60466'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M84.1752 981.961H140.334' stroke='#C6E1F9' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='151.555'\n cy='981.96'\n rx='1.6049'\n ry='1.60466'\n fill='#C6E1F9'\n stroke='#C6E1F9'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M6.82031 970.781V980.717' stroke='#C6E1F9' strokeLinecap='round' strokeLinejoin='round' />\n <path d='M1.85144 975.75H11.789' stroke='#C6E1F9' strokeLinecap='round' strokeLinejoin='round' />\n <path\n d='M637.719 1085.64V866.624C637.719 844.187 655.909 826 678.349 826C700.79 826 718.98 844.187 718.98 866.624V1085.64'\n stroke='#3392E9'\n strokeMiterlimit='10'\n />\n <path d='M816.859 998.168V1012.99' stroke='#3392E9' strokeLinecap='round' strokeLinejoin='round' />\n <path d='M809.449 1005.57H824.269' stroke='#3392E9' strokeLinecap='round' strokeLinejoin='round' />\n <path\n d='M1441.64 632.549L1222.62 632.549C1200.19 632.549 1182 614.359 1182 591.918C1182 569.478 1200.19 551.288 1222.62 551.288L1441.64 551.288'\n stroke='#3392E9'\n strokeMiterlimit='10'\n />\n <path\n d='M-15.9995 633L203.012 633C225.45 633 243.637 651.19 243.637 673.63C243.637 696.071 225.45 714.261 203.012 714.261L-15.9995 714.261'\n stroke='#3392E9'\n strokeMiterlimit='10'\n />\n <path d='M1354.17 453.41L1368.99 453.41' stroke='#3392E9' strokeLinecap='round' strokeLinejoin='round' />\n <path d='M1361.57 460.82L1361.57 446' stroke='#3392E9' strokeLinecap='round' strokeLinejoin='round' />\n <path d='M1405.82 13.3242V22.5996' stroke='#016DCF' strokeLinecap='round' strokeLinejoin='round' />\n <path d='M1401.17 17.9668H1410.45' stroke='#016DCF' strokeLinecap='round' strokeLinejoin='round' />\n </g>\n </svg>\n );\n};\n\nconst BackgroundEffectDark = () => {\n return (\n <svg\n className='w-full h-full min-w-full min-h-full object-cover'\n width='1440'\n height='1024'\n viewBox='0 0 1440 1024'\n fill='none'\n xmlns='http://www.w3.org/2000/svg'\n >\n <g opacity='0.2'>\n <path\n d='M811.5 147C830.002 147 845 132.002 845 113.5C845 94.9985 830.002 80 811.5 80C792.998 80 778 94.9985 778 113.5C778 132.002 792.998 147 811.5 147Z'\n fill='#00417D'\n />\n <path d='M86 187H31V307H86V187Z' fill='#016DCF' />\n <path\n d='M1343 496V465.687C1367.75 465.687 1387.89 445.411 1387.89 420.5C1387.89 395.589 1367.75 375.313 1343 375.313V345C1384.35 345 1418 378.87 1418 420.5C1418 462.13 1384.35 496 1343 496Z'\n fill='#016DCF'\n />\n <path d='M1 29H201.311C235.361 29 263 56.5618 263 90.4952C263 124.438 235.351 152 201.311 152H1V29Z' fill='#00417D' />\n <path d='M221 71C180.137 71 147 104.128 147 145C147 185.873 180.128 219 221 219V71Z' fill='#0054A1' />\n <path d='M21 1024C21 914.1 110.535 825 221 825V1024H21Z' fill='#016DCF' />\n <path d='M75 544C75 587.628 39.6335 623 -4.00001 623L-4 544L75 544Z' fill='#016DCF' />\n <path\n d='M337.425 883H144.575C139.294 883 135 878.529 135 873C135 867.485 139.281 863 144.575 863H337.425C342.706 863 347 867.471 347 873C347 878.515 342.719 883 337.425 883Z'\n fill='#00325F'\n />\n <path d='M1203.51 771C1244.62 771 1278 804.363 1278 845.45V1024H1129V845.45C1129 804.363 1162.38 771 1203.49 771H1203.51Z' fill='#00417D' />\n <path d='M1181.99 916C1181.99 887.283 1158.26 864 1128.99 864C1099.73 864 1076 887.283 1076 916H1182H1181.99Z' fill='#0054A1' />\n <path d='M1477.99 664C1477.99 635.283 1454.26 612 1424.99 612C1395.73 612 1372 635.283 1372 664H1478H1477.99Z' fill='#0054A1' />\n <path\n d='M38 962C58.4345 962 75 945.435 75 925C75 904.565 58.4345 888 38 888C17.5655 888 1 904.565 1 925C1 945.435 17.5655 962 38 962Z'\n fill='#0054A1'\n />\n <path d='M198.842 955.916H243.034V1000.1L198.842 955.916Z' fill='#00417D' />\n <path d='M243.035 955.916H287.24V1000.1L243.035 955.916Z' fill='#00417D' />\n <path d='M287.24 955.916H331.433V1000.1L287.24 955.916Z' fill='#00417D' />\n <path d='M198.842 911.73H243.034V955.916L198.842 911.73Z' fill='#00417D' />\n <path d='M243.035 911.73H287.24V955.916L243.035 911.73Z' fill='#00417D' />\n <path d='M287.24 911.73H331.433V955.916L287.24 911.73Z' fill='#00417D' />\n <path d='M1342.9 110.06L1372.04 80.9297L1401.17 110.06H1342.9Z' fill='#016DCF' />\n <path d='M1342.9 80.9314L1372.04 51.8008L1401.17 80.9314H1342.9Z' fill='#016DCF' />\n <path d='M1342.9 51.8025L1372.04 22.6719L1401.17 51.8025H1342.9Z' fill='#016DCF' />\n <path\n d='M86 0H103.462C103.462 14.5232 115.142 26.3374 129.5 26.3374C143.858 26.3374 155.538 14.5232 155.538 0H173C173 24.2641 153.488 44 129.5 44C105.512 44 86 24.2641 86 0Z'\n fill='#00325F'\n />\n <path\n d='M788.885 920.476C788.885 981.413 739.294 1030.98 678.367 1030.98V986.601C714.843 986.601 744.521 956.927 744.521 920.457H788.904L788.885 920.476Z'\n fill='#0054A1'\n />\n <path d='M1380 957H1217V993H1380V957Z' fill='#016DCF' />\n <ellipse\n cx='194.163'\n cy='48.4738'\n rx='1.21227'\n ry='1.21209'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M210.329 48.4746H315.39' stroke='#00325F' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='323.468'\n cy='48.4738'\n rx='1.21227'\n ry='1.21209'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <ellipse\n cx='194.163'\n cy='63.9094'\n rx='1.21227'\n ry='1.21209'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M210.329 63.9121H315.39' stroke='#00325F' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='323.468'\n cy='63.9094'\n rx='1.21227'\n ry='1.21209'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <ellipse\n cx='194.163'\n cy='79.3566'\n rx='1.21227'\n ry='1.21209'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M210.329 79.3574H315.39' stroke='#00325F' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='323.468'\n cy='79.3566'\n rx='1.21227'\n ry='1.21209'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <ellipse\n cx='1179.41'\n cy='715.612'\n rx='1.61233'\n ry='1.61209'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M1179.41 735.332V824.074' stroke='#00325F' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='1179.41'\n cy='833.925'\n rx='1.61233'\n ry='1.61209'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <ellipse\n cx='1158.88'\n cy='715.612'\n rx='1.61233'\n ry='1.61209'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M1158.88 735.332V824.074' stroke='#00325F' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='1158.88'\n cy='833.925'\n rx='1.61233'\n ry='1.61209'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <ellipse\n cx='1138.33'\n cy='715.612'\n rx='1.61233'\n ry='1.61209'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M1138.33 735.332V824.074' stroke='#00325F' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='1138.33'\n cy='833.925'\n rx='1.61233'\n ry='1.61209'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <ellipse\n cx='1117.78'\n cy='715.612'\n rx='1.61233'\n ry='1.61209'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M1117.79 735.332V824.074' stroke='#00325F' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='1117.78'\n cy='833.925'\n rx='1.61233'\n ry='1.61209'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path\n d='M1437 471.777H1340.59C1300.92 471.777 1268.77 439.63 1268.77 399.968V234.196C1268.77 194.533 1300.92 162.387 1340.59 162.387H1437'\n stroke='#016DCF'\n strokeMiterlimit='10'\n />\n <path\n d='M1437 452.629H1340.59C1311.55 452.629 1287.93 429.004 1287.93 399.969V234.197C1287.93 205.162 1311.55 181.537 1340.59 181.537H1437'\n stroke='#016DCF'\n strokeMiterlimit='10'\n />\n <path\n d='M1437 433.479H1340.59C1322.11 433.479 1307.08 418.447 1307.08 399.968V234.197C1307.08 215.718 1322.11 200.686 1340.59 200.686H1437'\n stroke='#016DCF'\n strokeMiterlimit='10'\n />\n <path\n d='M1437 414.331H1340.59C1332.67 414.331 1326.23 407.892 1326.23 399.969V234.198C1326.23 226.275 1332.67 219.836 1340.59 219.836H1437'\n stroke='#016DCF'\n strokeMiterlimit='10'\n />\n <path d='M785 12V21' stroke='#00325F' strokeLinecap='round' strokeLinejoin='round' />\n <path\n d='M916.503 -13C929.178 5.73908 936.585 28.3253 936.585 52.5983C936.585 117.33 883.907 170.001 819.165 170.001V122.864C857.92 122.864 889.442 91.3358 889.442 52.5983C889.442 23.1958 871.289 -2.03613 845.614 -12.5032'\n stroke='#016DCF'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M780.26 16.3105H789.204' stroke='#016DCF' strokeLinecap='round' strokeLinejoin='round' />\n <path d='M31 14V21' stroke='#00325F' strokeLinecap='round' strokeLinejoin='round' />\n <path d='M28 18H35' stroke='#00325F' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='61.7072'\n cy='941.062'\n rx='1.6049'\n ry='1.60466'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M84.175 941.061H140.334' stroke='#00325F' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='151.556'\n cy='941.062'\n rx='1.6049'\n ry='1.60466'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <ellipse\n cx='61.7072'\n cy='961.511'\n rx='1.6049'\n ry='1.60466'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M84.1753 961.512H140.334' stroke='#00325F' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='151.556'\n cy='961.511'\n rx='1.6049'\n ry='1.60466'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <ellipse\n cx='61.7072'\n cy='981.96'\n rx='1.6049'\n ry='1.60466'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M84.1753 981.961H140.334' stroke='#00325F' strokeWidth='2.5' strokeLinecap='round' strokeLinejoin='round' />\n <ellipse\n cx='151.556'\n cy='981.96'\n rx='1.6049'\n ry='1.60466'\n fill='#00325F'\n stroke='#00325F'\n strokeWidth='2.5'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n <path d='M6.82056 970.781V980.717' stroke='#00325F' strokeLinecap='round' strokeLinejoin='round' />\n <path d='M1.85156 975.75H11.7891' stroke='#00325F' strokeLinecap='round' strokeLinejoin='round' />\n <path\n d='M637.719 1085.64V866.624C637.719 844.187 655.909 826 678.349 826C700.79 826 718.98 844.187 718.98 866.624V1085.64'\n stroke='#016DCF'\n strokeMiterlimit='10'\n />\n <path d='M816.859 998.168V1012.99' stroke='#016DCF' strokeLinecap='round' strokeLinejoin='round' />\n <path d='M809.449 1005.57H824.269' stroke='#016DCF' strokeLinecap='round' strokeLinejoin='round' />\n <path\n d='M1441.64 632.549L1222.62 632.549C1200.19 632.549 1182 614.359 1182 591.918C1182 569.478 1200.19 551.288 1222.62 551.288L1441.64 551.288'\n stroke='#016DCF'\n strokeMiterlimit='10'\n />\n <path\n d='M-15.9995 632.998L203.012 632.998C225.45 632.998 243.637 651.188 243.637 673.628C243.637 696.069 225.45 714.259 203.012 714.259L-15.9995 714.259'\n stroke='#016DCF'\n strokeMiterlimit='10'\n />\n <path d='M1354.17 453.408L1368.99 453.408' stroke='#016DCF' strokeLinecap='round' strokeLinejoin='round' />\n <path d='M1361.57 460.818L1361.57 445.998' stroke='#016DCF' strokeLinecap='round' strokeLinejoin='round' />\n <path d='M1405.82 13.3242V22.5996' stroke='#016DCF' strokeLinecap='round' strokeLinejoin='round' />\n <path d='M1401.17 17.9668H1410.45' stroke='#016DCF' strokeLinecap='round' strokeLinejoin='round' />\n </g>\n </svg>\n );\n};\n\nconst NoLinkIcon = () => {\n return (\n <svg width='38' height='31' viewBox='0 0 38 31' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <g clipPath='url(#clip0_7056_325387)'>\n <path\n d='M2.31781 0.693522C1.70082 0.207047 0.804997 0.319767 0.318522 0.936759C-0.167953 1.55375 -0.0552329 2.44958 0.561759 2.93605L35.6829 30.4634C36.2998 30.9499 37.1957 30.8371 37.6821 30.2202C38.1686 29.6032 38.0559 28.7073 37.4389 28.2209L29.0443 21.6416L34.4133 16.2726C37.7652 12.9206 37.7652 7.4923 34.4133 4.14037C31.447 1.17406 26.7721 0.788444 23.3608 3.22675L23.2659 3.29201C22.4116 3.90307 22.2158 5.08959 22.8269 5.93796C23.4379 6.78632 24.6245 6.98803 25.4728 6.37697L25.5677 6.31171C27.4721 4.95314 30.0765 5.16672 31.7258 6.82192C33.5946 8.69069 33.5946 11.7163 31.7258 13.5851L26.0305 19.2804L24.138 17.7973C25.5796 14.6055 24.9389 10.779 22.3819 8.22201C19.2851 5.11925 14.4026 4.88788 11.0328 7.5279L2.31781 0.693522ZM14.1949 10.0018C15.9806 9.11784 18.2113 9.41447 19.7004 10.9095C20.8869 12.096 21.3319 13.7749 20.9878 15.3293L14.1949 10.0018ZM24.138 25.0944L13.1211 16.409C12.9965 18.7702 13.8449 21.1611 15.6247 22.9349C17.9325 25.2427 21.2251 25.9605 24.1439 25.0884L24.138 25.0944ZM6.93339 11.5383L3.58739 14.8843C0.235465 18.2363 0.235465 23.6646 3.58739 27.0165C6.5537 29.9829 11.2286 30.3685 14.6399 27.9302L14.7348 27.8649C15.5891 27.2538 15.7849 26.0673 15.1738 25.219C14.5627 24.3706 13.3762 24.1689 12.5278 24.7799L12.4329 24.8452C10.5286 26.2038 7.92414 25.9902 6.27487 24.335C4.4061 22.4603 4.4061 19.4347 6.27487 17.5659L9.94123 13.8995L6.93932 11.5324L6.93339 11.5383Z'\n fill='#0077E3'\n />\n </g>\n <defs>\n <clipPath id='clip0_7056_325387'>\n <path d='M0.015625 0.390625H37.9844V30.7656H0.015625V0.390625Z' fill='white' />\n </clipPath>\n </defs>\n </svg>\n );\n};\n\nconst WarningInfoIcon = () => {\n return (\n <svg width='18' height='18' viewBox='0 0 18 18' fill='none' xmlns='http://www.w3.org/2000/svg'>\n <g clipPath='url(#clip0_7056_325398)'>\n <path\n d='M9 18C11.3869 18 13.6761 17.0518 15.364 15.364C17.0518 13.6761 18 11.3869 18 9C18 6.61305 17.0518 4.32387 15.364 2.63604C13.6761 0.948212 11.3869 0 9 0C6.61305 0 4.32387 0.948212 2.63604 2.63604C0.948212 4.32387 0 6.61305 0 9C0 11.3869 0.948212 13.6761 2.63604 15.364C4.32387 17.0518 6.61305 18 9 18ZM7.59375 11.8125H8.4375V9.5625H7.59375C7.12617 9.5625 6.75 9.18633 6.75 8.71875C6.75 8.25117 7.12617 7.875 7.59375 7.875H9.28125C9.74883 7.875 10.125 8.25117 10.125 8.71875V11.8125H10.4062C10.8738 11.8125 11.25 12.1887 11.25 12.6562C11.25 13.1238 10.8738 13.5 10.4062 13.5H7.59375C7.12617 13.5 6.75 13.1238 6.75 12.6562C6.75 12.1887 7.12617 11.8125 7.59375 11.8125ZM9 4.5C9.29837 4.5 9.58452 4.61853 9.7955 4.8295C10.0065 5.04048 10.125 5.32663 10.125 5.625C10.125 5.92337 10.0065 6.20952 9.7955 6.4205C9.58452 6.63147 9.29837 6.75 9 6.75C8.70163 6.75 8.41548 6.63147 8.2045 6.4205C7.99353 6.20952 7.875 5.92337 7.875 5.625C7.875 5.32663 7.99353 5.04048 8.2045 4.8295C8.41548 4.61853 8.70163 4.5 9 4.5Z'\n fill='#DC6803'\n />\n </g>\n <defs>\n <clipPath id='clip0_7056_325398'>\n <path d='M0 0H18V18H0V0Z' fill='white' />\n </clipPath>\n </defs>\n </svg>\n );\n};\n\n/**\n * UserNotFound component displays when a user account is not linked\n * \n * @example\n * ```tsx\n * <UserNotFound />\n * ```\n */\nexport const UserNotFound: FC<UserNotFoundProps> = ({\n className,\n title,\n description,\n warningTitle = 'What does this mean?',\n warningDescription = 'While your SSO provider authenticated you successfully, we need to connect your identity to a LambdaX user account before you can access the platform.',\n icon,\n warningIcon,\n 'data-testid': testId,\n}) => {\n return (\n <div \n className={`relative flex justify-center items-center min-h-screen w-full bg-[#F9FCFF] dark:bg-gradient-to-r dark:from-[#111827] dark:to-[#000000] overflow-hidden ${className || ''}`}\n data-testid={testId}\n >\n <div className='block dark:hidden absolute inset-0 w-full h-full'>\n <BackgroundEffectLight />\n </div>\n <div className='hidden dark:block absolute inset-0 w-full h-full'>\n <BackgroundEffectDark />\n </div>\n\n <div className='relative z-10 flex flex-col items-center max-w-[584px] mx-auto p-8 bg-white dark:bg-[#080C11] border border-neutral-200 dark:border-neutral-700 dark:border-none rounded-[20px] dark:shadow-[0px_0px_20px_0px_rgba(0,0,0,0.05)] overflow-hidden'>\n <div className='mb-6'>\n <div className='w-44 h-44 rounded-full flex items-center justify-center' style={{ border: '1px solid rgba(255, 255, 255, 0.05)' }}>\n <div className='w-44 h-44 rounded-full flex items-center justify-center border dark:border-primary-900 border-primary-900/20'>\n <div className='w-36 h-36 rounded-full flex items-center justify-center border dark:border-primary-600 border-primary-600/20'>\n <div className='w-24 h-24 bg-gradient-to-br from-[rgba(198,225,249,0.20)] to-[rgba(138,192,242,0.20)] dark:bg-gradient-to-br dark:from-[rgba(0,50,95,0.20)] dark:to-[rgba(0,65,125,0.14)] rounded-full flex items-center justify-center'>\n <div className='w-16 h-16 bg-gradient-to-br from-[rgba(198,225,249,0.20)] to-[rgba(138,192,242,0.20)] dark:bg-gradient-to-br dark:from-[rgba(0,50,95,0.20)] dark:to-[rgba(0,65,125,0.14)] border border-primary-200 dark:border-primary-900 rounded-full flex items-center justify-center'>\n {icon || <NoLinkIcon />}\n </div>\n </div>\n </div>\n </div>\n </div>\n </div>\n <div className='text-center'>\n <h1 className='text-[32px] font-bold font-inter text-neutral-900 dark:text-white mb-4'>\n {title || (\n <>\n Account Not{' '}\n <span className='bg-gradient-to-r from-[#3392E9] via-[#54A4EC] to-[#016DCF] dark:bg-gradient-to-r dark:from-[#00417D] dark:via-[#00325F] dark:to-[#3392E9] bg-clip-text text-transparent'>\n Linked\n </span>\n </>\n )}\n </h1>\n\n <p className='font-inter text-[20px] font-normal text-neutral-600 dark:text-[#CBD5E1] leading-relaxed font-medium mb-6'>\n {description || \"We couldn't find a LambdaX user account associated with your SSO login credentials. Your authentication was successful, but no account is currently linked.\"}\n </p>\n\n <div className='bg-warning-50 dark:bg-warning-900/10 border border-warning-200 dark:border-[#2D1807] dark:bg-[#140C03] rounded-lg p-4 flex items-start gap-3'>\n <div className='flex-shrink-0 mt-0.5'>\n {warningIcon || <WarningInfoIcon />}\n </div>\n <div className='text-left'>\n <h3 className='font-medium text-warning-800 dark:text-white mb-2'>{warningTitle}</h3>\n <p className='text-[14px] text-neutral-600 dark:text-[#CBD5E1]'>\n {warningDescription}\n </p>\n </div>\n </div>\n </div>\n </div>\n </div>\n );\n};\n","interface EmptyEventProps {\n size?: number;\n}\n\nexport const EmptyEvent = ({ size = 150 }: EmptyEventProps = {}) => {\n return (\n <svg width={size} height={size} viewBox='0 0 152 120' fill='none' xmlns='http://www.w3.org/2000/svg' className='text-white dark:text-neutral-800'>\n <path\n d='M60.6 120C93.737 120 120.6 93.1371 120.6 60C120.6 26.8629 93.737 0 60.6 0C27.463 0 0.600098 26.8629 0.600098 60C0.600098 93.1371 27.463 120 60.6 120Z'\n fill='url(#paint0_linear_1711_24584)'\n />\n <g filter='url(#filter0_d_1711_24584)'>\n <path\n d='M33.4006 27.2H141.4C142.461 27.2 143.479 27.6214 144.229 28.3715C144.979 29.1217 145.4 30.1391 145.4 31.2V51.2C145.4 52.2608 144.979 53.2782 144.229 54.0284C143.479 54.7785 142.461 55.2 141.4 55.2H33.4006C32.3398 55.2 31.3223 54.7785 30.5722 54.0284C29.8221 53.2782 29.4006 52.2608 29.4006 51.2V31.2C29.4006 30.1391 29.8221 29.1217 30.5722 28.3715C31.3223 27.6214 32.3398 27.2 33.4006 27.2V27.2Z'\n fill='currentColor'\n />\n </g>\n <path\n d='M84.5999 33.6001H63.7999C62.4744 33.6001 61.3999 34.6746 61.3999 36.0001C61.3999 37.3256 62.4744 38.4001 63.7999 38.4001H84.5999C85.9253 38.4001 86.9999 37.3256 86.9999 36.0001C86.9999 34.6746 85.9253 33.6001 84.5999 33.6001Z'\n className='fill-primary-200 dark:fill-primary-400'\n />\n <path\n d='M98.9998 44.0005H63.7999C62.4744 44.0005 61.3999 45.075 61.3999 46.4005C61.3999 47.726 62.4744 48.8005 63.7999 48.8005H98.9998C100.325 48.8005 101.4 47.726 101.4 46.4005C101.4 45.075 100.325 44.0005 98.9998 44.0005Z'\n className='fill-primary-100 dark:fill-primary-300'\n />\n <path\n d='M54.9995 41.1999C54.9995 34.7933 49.806 29.5999 43.3995 29.5999C36.993 29.5999 31.7996 34.7933 31.7996 41.1999C31.7996 47.6064 36.993 52.7999 43.3995 52.7999C49.806 52.7999 54.9995 47.6064 54.9995 41.1999Z'\n className='fill-primary-500 dark:fill-primary-600'\n />\n <path\n d='M42.6804 44.9552C43.6735 44.9551 44.638 44.6228 45.4204 44.0112L47.8804 46.4712L48.6716 45.68L46.2108 43.2192C46.8291 42.4199 47.1583 41.4347 47.145 40.4242C47.1317 39.4138 46.7765 38.4376 46.1374 37.6548C45.4982 36.8721 44.6128 36.3289 43.6254 36.1137C42.6381 35.8986 41.6069 36.0242 40.7001 36.4702C39.7932 36.9161 39.0642 37.656 38.6317 38.5693C38.1992 39.4827 38.0888 40.5155 38.3185 41.4996C38.5481 42.4837 39.1044 43.361 39.8965 43.9886C40.6886 44.6161 41.6699 44.9568 42.6804 44.9552ZM42.6804 37.12C43.3449 37.12 43.9946 37.3171 44.5471 37.6863C45.0997 38.0555 45.5303 38.5803 45.7846 39.1942C46.0389 39.8082 46.1055 40.4838 45.9758 41.1355C45.8462 41.7873 45.5262 42.386 45.0563 42.8559C44.5864 43.3258 43.9877 43.6458 43.3359 43.7755C42.6841 43.9051 42.0085 43.8386 41.3946 43.5843C40.7806 43.33 40.2559 42.8993 39.8867 42.3467C39.5175 41.7942 39.3204 41.1446 39.3204 40.48C39.3204 39.5889 39.6744 38.7343 40.3045 38.1042C40.9346 37.474 41.7893 37.12 42.6804 37.12Z'\n className='fill-white dark:fill-neutral-200'\n />\n <g filter='url(#filter1_d_1711_24584)'>\n <path\n d='M129.4 63.2H21.4006C19.1915 63.2 17.4006 64.9908 17.4006 67.2V87.2C17.4006 89.4091 19.1915 91.2 21.4006 91.2H129.4C131.61 91.2 133.4 89.4091 133.4 87.2V67.2C133.4 64.9908 131.61 63.2 129.4 63.2Z'\n fill='currentColor'\n />\n </g>\n <path\n d='M72.6001 69.6001H51.8001C50.4747 69.6001 49.4001 70.6746 49.4001 72.0001C49.4001 73.3256 50.4747 74.4001 51.8001 74.4001H72.6001C73.9256 74.4001 75.0001 73.3256 75.0001 72.0001C75.0001 70.6746 73.9256 69.6001 72.6001 69.6001Z'\n className='fill-primary-200 dark:fill-primary-400'\n />\n <path\n d='M87.0001 80.0005H51.8001C50.4747 80.0005 49.4001 81.075 49.4001 82.4005C49.4001 83.726 50.4747 84.8005 51.8001 84.8005H87.0001C88.3256 84.8005 89.4001 83.726 89.4001 82.4005C89.4001 81.075 88.3256 80.0005 87.0001 80.0005Z'\n className='fill-primary-100 dark:fill-primary-300'\n />\n <path\n d='M42.9995 77.1999C42.9995 70.7933 37.806 65.5999 31.3995 65.5999C24.993 65.5999 19.7996 70.7933 19.7996 77.1999C19.7996 83.6064 24.993 88.7999 31.3995 88.7999C37.806 88.7999 42.9995 83.6064 42.9995 77.1999Z'\n className='fill-primary-500 dark:fill-primary-600'\n />\n <path\n d='M30.6804 80.9552C31.6735 80.9551 32.638 80.6228 33.4204 80.0112L35.8804 82.4712L36.6716 81.68L34.2108 79.2192C34.8291 78.4199 35.1583 77.4347 35.145 76.4242C35.1317 75.4138 34.7765 74.4376 34.1374 73.6548C33.4982 72.8721 32.6128 72.3289 31.6254 72.1137C30.6381 71.8986 29.6069 72.0242 28.7001 72.4702C27.7932 72.9161 27.0642 73.656 26.6317 74.5693C26.1992 75.4827 26.0888 76.5155 26.3185 77.4996C26.5481 78.4837 27.1044 79.361 27.8965 79.9886C28.6886 80.6161 29.6699 80.9568 30.6804 80.9552ZM30.6804 73.12C31.3449 73.12 31.9946 73.3171 32.5471 73.6863C33.0997 74.0555 33.5303 74.5803 33.7846 75.1942C34.0389 75.8082 34.1055 76.4838 33.9758 77.1355C33.8462 77.7873 33.5262 78.386 33.0563 78.8559C32.5864 79.3258 31.9877 79.6458 31.3359 79.7755C30.6841 79.9051 30.0085 79.8386 29.3946 79.5843C28.7806 79.33 28.2559 78.8993 27.8867 78.3467C27.5175 77.7942 27.3204 77.1446 27.3204 76.48C27.3204 75.5889 27.6744 74.7343 28.3045 74.1042C28.9346 73.474 29.7893 73.12 30.6804 73.12Z'\n className='fill-white dark:fill-neutral-200'\n />\n <defs>\n <filter\n id='filter0_d_1711_24584'\n x='23.4006'\n y='24.2'\n width='128'\n height='40'\n filterUnits='userSpaceOnUse'\n colorInterpolationFilters='sRGB'\n >\n <feFlood floodOpacity='0' result='BackgroundImageFix' />\n <feColorMatrix in='SourceAlpha' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0' result='hardAlpha' />\n <feOffset dy='3' />\n <feGaussianBlur stdDeviation='3' />\n <feColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.161 0' />\n <feBlend mode='normal' in2='BackgroundImageFix' result='effect1_dropShadow_1711_24584' />\n <feBlend mode='normal' in='SourceGraphic' in2='effect1_dropShadow_1711_24584' result='shape' />\n </filter>\n <filter\n id='filter1_d_1711_24584'\n x='11.4006'\n y='60.2'\n width='128'\n height='40'\n filterUnits='userSpaceOnUse'\n colorInterpolationFilters='sRGB'\n >\n <feFlood floodOpacity='0' result='BackgroundImageFix' />\n <feColorMatrix in='SourceAlpha' type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0' result='hardAlpha' />\n <feOffset dy='3' />\n <feGaussianBlur stdDeviation='3' />\n <feColorMatrix type='matrix' values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0.161 0' />\n <feBlend mode='normal' in2='BackgroundImageFix' result='effect1_dropShadow_1711_24584' />\n <feBlend mode='normal' in='SourceGraphic' in2='effect1_dropShadow_1711_24584' result='shape' />\n </filter>\n <linearGradient id='paint0_linear_1711_24584' x1='60.6' y1='0' x2='60.6' y2='120' gradientUnits='userSpaceOnUse'>\n <stop className='[stop-color:var(--color-primary-50)] dark:[stop-color:var(--color-primary-800)]' />\n <stop offset='1' className='[stop-color:var(--color-primary-100)] dark:[stop-color:var(--color-primary-900)]' />\n </linearGradient>\n </defs>\n </svg>\n );\n};\n\nexport type { EmptyEventProps };\n\n\n\n","export const EmptyBarChartData = () => {\n return (\n <svg xmlns='http://www.w3.org/2000/svg' width='118' height='120' viewBox='0 0 118 120' fill='none'>\n <path\n d='M116.367 120H10.0937C4.82826 120 0.59019 115.762 0.525977 110.496C0.269124 1.84773 0.525976 1.26981 0.590189 0.884529C0.847042 0.242397 1.55339 -0.142879 2.19552 0.0497605C2.77344 0.2424 3.15872 0.88453 3.03029 1.46245C2.83765 3.90255 2.90187 59.2543 3.03029 110.432C3.03029 114.285 6.17674 117.367 10.0295 117.367H116.302C117.009 117.367 117.587 117.945 117.587 118.652C117.587 119.358 117.073 120 116.367 120Z'\n className='fill-neutral-200 dark:fill-neutral-700'\n />\n <path\n d='M40.9801 26.3788V103.692C40.9801 106.517 38.7327 108.764 35.9073 108.764H21.6519C18.8266 108.764 16.5791 106.453 16.5791 103.692V26.3788C16.5791 23.5535 18.8266 21.306 21.6519 21.306H35.9073C38.7327 21.2418 40.9801 23.5535 40.9801 26.3788Z'\n className='fill-primary-100 dark:fill-primary-200'\n />\n <path\n d='M75.0778 60.2812V103.689C75.0778 106.515 72.8303 108.762 70.0049 108.762H55.7496C52.9242 108.762 50.6768 106.45 50.6768 103.689V60.2812C50.6768 57.4558 52.9242 55.2083 55.7496 55.2083H70.0049C72.8303 55.1441 75.0778 57.4558 75.0778 60.2812Z'\n className='fill-primary-500 dark:fill-primary-400'\n />\n <path\n d='M109.174 38.5807V103.693C109.174 106.518 106.927 108.766 104.102 108.766H89.8463C87.0209 108.766 84.7734 106.454 84.7734 103.693V38.5807C84.7734 35.7553 87.0209 33.5078 89.8463 33.5078H104.102C106.927 33.5078 109.174 35.7553 109.174 38.5807Z'\n className='fill-primary-200 dark:fill-primary-300'\n />\n <path\n d='M40.9816 13.0824C40.9816 13.4677 40.7889 13.8529 40.5321 14.1098C40.2752 14.3666 39.89 14.5593 39.5047 14.5593H17.929C17.0943 14.5593 16.4521 13.9171 16.4521 13.0824C16.4521 12.6971 16.6448 12.3118 16.9016 12.055C17.1585 11.7981 17.5438 11.6055 17.929 11.6055H39.5047C40.3394 11.6055 40.9816 12.2476 40.9816 13.0824Z'\n className='fill-neutral-200 dark:fill-neutral-700'\n />\n <path\n d='M75.0773 46.9925C75.0773 47.3778 74.8846 47.7631 74.6278 48.0199C74.3709 48.2768 73.9857 48.4694 73.6004 48.4694H52.0248C51.19 48.4694 50.5479 47.8273 50.5479 46.9925C50.5479 46.6072 50.7405 46.222 50.9974 45.9651C51.2542 45.7083 51.6395 45.5156 52.0248 45.5156H73.6004C74.4352 45.5156 75.0773 46.1577 75.0773 46.9925Z'\n className='fill-neutral-200 dark:fill-neutral-700'\n />\n <path\n d='M109.175 25.2816C109.175 25.6669 108.982 26.0521 108.725 26.309C108.469 26.5659 108.083 26.7585 107.698 26.7585H86.1224C85.2876 26.7585 84.6455 26.1164 84.6455 25.2816C84.6455 24.8963 84.8381 24.511 85.095 24.2542C85.3519 23.9973 85.7371 23.8047 86.1224 23.8047H107.762C108.533 23.8689 109.175 24.511 109.175 25.2816Z'\n className='fill-neutral-200 dark:fill-neutral-700'\n />\n </svg>\n );\n};\n\n\n\n","export const EmptyCountWidgetData = () => {\n return (\n <svg xmlns='http://www.w3.org/2000/svg' width='180' height='100' viewBox='0 0 180 100' fill='none'>\n <path\n d='M152.143 11.8824C152.412 25.3669 143.934 37.674 131.056 42.5053L119.267 46.9261C112.034 49.6378 106.617 55.9831 105.123 63.4857C102.445 76.9703 98.5765 83.8068 92.9513 84.9911C88.5912 85.9129 84.1772 83.2416 79.8238 77.0511C76.3854 72.1525 74.0304 66.5406 72.8327 60.3703C70.0201 45.8697 66.1713 41.8929 64.1258 40.8096C63.3319 40.3924 62.04 39.9416 59.9003 40.8634C56.4485 42.3438 54.3222 46.1119 54.7192 50.0214C56.0582 63.1695 54.9009 73.4444 51.2809 80.55C49.6324 83.7866 46.6448 86.1417 43.0921 87.0097C42.0963 87.252 41.0802 87.3731 40.0777 87.3731C37.4804 87.3731 34.9303 86.5723 32.7838 85.0449C25.8197 80.0857 22.738 71.3719 21.5268 62.833C21.4192 62.0996 21.547 61.346 21.8969 60.6865C21.9171 60.6529 21.9305 60.6193 21.9507 60.5923C23.5656 57.5913 28.0603 58.3786 28.5246 61.7497C29.507 68.9428 31.8889 75.7995 36.8479 79.3456C38.1667 80.2876 39.8287 80.5971 41.4234 80.2069C42.9979 79.8233 44.31 78.7871 45.0367 77.374C47.1024 73.33 49.2488 65.4169 47.7551 50.7413C47.0351 43.703 50.8099 37.1491 57.1415 34.4307C60.7211 32.8965 64.2671 32.9638 67.4161 34.6191C73.0951 37.6269 77.1188 45.614 79.7228 59.038C80.7321 64.2326 82.6969 68.9361 85.57 73.0272C88.645 77.4077 90.7511 78.3026 91.5114 78.1411C91.8882 78.0604 95.3198 76.9232 98.2602 62.1265C100.218 52.2621 107.33 43.925 116.811 40.3722L128.6 35.9514C138.699 32.1631 145.347 22.5476 145.139 12.0304C145.132 11.7478 145.125 11.4652 145.112 11.1691L152.11 10.8125C152.123 11.1759 152.136 11.5325 152.143 11.8824Z'\n className='fill-primary-500 dark:fill-primary-400'\n />\n <path\n d='M156.904 15.5032H140.318C139.039 15.5032 138.279 14.0767 138.992 13.0135L147.289 0.706526C147.921 -0.235509 149.307 -0.235509 149.94 0.706526L158.236 13.0135C158.943 14.07 158.182 15.5032 156.904 15.5032Z'\n className='fill-primary-600 dark:fill-primary-500'\n />\n <path\n d='M90.0001 99.9979C139.562 99.9979 179.74 98.4585 179.74 96.5595C179.74 94.6605 139.562 93.1211 90.0001 93.1211C40.4382 93.1211 0.260254 94.6605 0.260254 96.5595C0.260254 98.4585 40.4382 99.9979 90.0001 99.9979Z'\n className='fill-neutral-200 dark:fill-neutral-700'\n />\n <path\n d='M138.529 71.5442C138.549 71.4433 138.563 71.3356 138.563 71.228C138.643 69.4179 136.497 67.8501 133.765 67.7222C132.541 67.6684 131.417 67.9107 130.529 68.3615C129.459 67.4329 127.797 66.7937 125.913 66.7062C124.197 66.6322 122.623 67.0224 121.492 67.7222C121.23 67.8703 120.988 68.052 120.772 68.2606C120.12 68.8527 119.723 69.5794 119.689 70.3734C119.682 70.5013 119.689 70.6358 119.702 70.7637C119.696 71.0463 119.729 71.3222 119.79 71.5846C117.536 72.1229 115.934 73.4619 115.867 75.097C115.773 77.3377 118.592 79.2756 122.172 79.4371C123.477 79.4977 124.702 79.3093 125.738 78.9392C126.72 79.4977 127.985 79.8678 129.385 79.9283C131.982 80.0427 134.23 79.0738 135.03 77.6338C135.743 77.9568 136.578 78.1654 137.479 78.2058C140.184 78.3269 142.438 76.9138 142.519 75.0567C142.593 73.3812 140.857 71.9008 138.529 71.5442Z'\n className='fill-primary-100 dark:fill-primary-200'\n />\n <path\n d='M142.519 75.0624C142.438 76.9263 140.184 78.3393 137.479 78.2115C136.578 78.1711 135.743 77.9625 135.03 77.6395C134.23 79.0795 131.982 80.0552 129.385 79.9341C127.985 79.8735 126.714 79.5034 125.738 78.9382C124.702 79.3083 123.477 79.4967 122.172 79.4361C118.592 79.2746 115.773 77.33 115.867 75.096C115.874 74.9817 115.887 74.8673 115.907 74.7529C116.257 76.7446 118.902 78.3864 122.172 78.5345C123.477 78.595 124.702 78.4066 125.738 78.0365C126.72 78.595 127.985 78.9651 129.385 79.0257C131.982 79.1401 134.23 78.1711 135.03 76.7311C135.743 77.0541 136.578 77.2627 137.479 77.3031C140.009 77.4175 142.149 76.1861 142.479 74.5039C142.512 74.6923 142.526 74.874 142.519 75.0624Z'\n className='fill-primary-200 dark:fill-primary-300'\n />\n <path\n d='M97.6297 16.8372C97.6499 16.7363 97.6633 16.6286 97.6633 16.5209C97.7441 14.7109 95.5976 13.1431 92.8658 13.0152C91.6412 12.9614 90.5175 13.2036 89.6293 13.6545C88.5595 12.7259 86.8975 12.0866 85.0135 11.9992C83.2977 11.9251 81.7232 12.3154 80.5928 13.0152C80.3304 13.1632 80.0881 13.3449 79.8728 13.5535C79.2201 14.1457 78.8231 14.8724 78.7895 15.6664C78.7828 15.7942 78.7895 15.9288 78.803 16.0566C78.803 16.3393 78.8299 16.6151 78.8904 16.8776C76.6363 17.4159 75.0349 18.7549 74.9676 20.39C74.8734 22.6307 77.6927 24.5686 81.2724 24.7301C82.5777 24.7907 83.8023 24.6023 84.8385 24.2322C85.8209 24.7907 87.0859 25.1607 88.4855 25.2213C91.0827 25.3357 93.3301 24.3667 94.1308 22.9268C94.844 23.2498 95.6784 23.4584 96.58 23.4987C99.2849 23.6198 101.539 22.2068 101.62 20.3496C101.694 18.6742 99.9578 17.1938 97.6297 16.8372Z'\n className='fill-primary-50 dark:fill-primary-100'\n />\n <path\n d='M101.62 20.3554C101.539 22.2193 99.2849 23.6323 96.58 23.5045C95.6784 23.4641 94.844 23.2555 94.1308 22.9325C93.3301 24.3725 91.0827 25.3482 88.4855 25.227C87.0859 25.1665 85.8142 24.7964 84.8385 24.2312C83.8023 24.6013 82.5777 24.7897 81.2724 24.7291C77.6927 24.5676 74.8734 22.623 74.9676 20.389C74.9744 20.2746 74.9878 20.1602 75.008 20.0458C75.3579 22.0376 78.0022 23.6794 81.2724 23.8274C82.5777 23.888 83.8023 23.6996 84.8385 23.3295C85.8209 23.888 87.0859 24.2581 88.4855 24.3186C91.0827 24.433 93.3301 23.4641 94.1308 22.0241C94.844 22.3471 95.6784 22.5557 96.58 22.5961C99.11 22.7105 101.25 21.4791 101.579 19.7969C101.613 19.9786 101.627 20.167 101.62 20.3554Z'\n className='fill-primary-100 dark:fill-primary-200'\n />\n </svg>\n );\n};\n\n\n\n","export const EmptyCardListChartData = () => {\n return (\n <svg xmlns='http://www.w3.org/2000/svg' width='188' height='120' viewBox='0 0 188 120' fill='none'>\n <path\n d='M48.3801 42.6445H182.264C183.579 42.6445 184.841 43.167 185.771 44.0969C186.701 45.0268 187.223 46.2881 187.223 47.6032V72.3966C187.223 73.7117 186.701 74.973 185.771 75.9029C184.841 76.8328 183.579 77.3553 182.264 77.3553H48.3801C47.0649 77.3553 45.8037 76.8328 44.8737 75.9029C43.9438 74.973 43.4214 73.7117 43.4214 72.3966V47.6032C43.4214 46.2881 43.9438 45.0268 44.8737 44.0969C45.8037 43.167 47.0649 42.6445 48.3801 42.6445V42.6445Z'\n className='fill-primary-50 dark:fill-primary-100'\n />\n <path\n d='M111.851 50.5781H86.066C84.4229 50.5781 83.0908 51.9102 83.0908 53.5533C83.0908 55.1965 84.4229 56.5285 86.066 56.5285H111.851C113.494 56.5285 114.826 55.1965 114.826 53.5533C114.826 51.9102 113.494 50.5781 111.851 50.5781Z'\n className='fill-primary-100 dark:fill-primary-200'\n />\n <path\n d='M129.702 63.4727H86.066C84.4229 63.4727 83.0908 64.8047 83.0908 66.4479C83.0908 68.091 84.4229 69.4231 86.066 69.4231H129.702C131.346 69.4231 132.678 68.091 132.678 66.4479C132.678 64.8047 131.346 63.4727 129.702 63.4727Z'\n className='fill-primary-200 dark:fill-primary-300'\n />\n <path\n d='M70.1981 45.6211H51.3552C48.6166 45.6211 46.3965 47.8412 46.3965 50.5798V69.4227C46.3965 72.1613 48.6166 74.3814 51.3552 74.3814H70.1981C72.9367 74.3814 75.1568 72.1613 75.1568 69.4227V50.5798C75.1568 47.8412 72.9367 45.6211 70.1981 45.6211Z'\n className='fill-primary-200 dark:fill-primary-300'\n />\n <path\n d='M5.73553 85.2891H139.62C140.935 85.2891 142.196 85.8115 143.126 86.7414C144.056 87.6714 144.579 88.9326 144.579 90.2477V115.041C144.579 116.356 144.056 117.618 143.126 118.547C142.196 119.477 140.935 120 139.62 120H5.73553C4.42041 120 3.15915 119.477 2.22922 118.547C1.29929 117.618 0.776855 116.356 0.776855 115.041L0.776855 90.2477C0.776855 88.9326 1.29929 87.6714 2.22922 86.7414C3.15915 85.8115 4.42041 85.2891 5.73553 85.2891V85.2891Z'\n className='fill-primary-50 dark:fill-primary-100'\n />\n <path\n d='M69.2066 93.2227H43.4215C41.7783 93.2227 40.4463 94.5547 40.4463 96.1979C40.4463 97.841 41.7783 99.1731 43.4215 99.1731H69.2066C70.8498 99.1731 72.1818 97.841 72.1818 96.1979C72.1818 94.5547 70.8498 93.2227 69.2066 93.2227Z'\n className='fill-primary-100 dark:fill-primary-200'\n />\n <path\n d='M87.0579 106.117H43.4215C41.7783 106.117 40.4463 107.449 40.4463 109.092C40.4463 110.736 41.7783 112.068 43.4215 112.068H87.0579C88.701 112.068 90.0331 110.736 90.0331 109.092C90.0331 107.449 88.701 106.117 87.0579 106.117Z'\n className='fill-primary-200 dark:fill-primary-300'\n />\n <path\n d='M27.5536 88.2656H8.71063C5.97203 88.2656 3.75195 90.4857 3.75195 93.2243V112.067C3.75195 114.806 5.97203 117.026 8.71063 117.026H27.5536C30.2922 117.026 32.5123 114.806 32.5123 112.067V93.2243C32.5123 90.4857 30.2922 88.2656 27.5536 88.2656Z'\n className='fill-primary-200 dark:fill-primary-300'\n />\n <path\n d='M5.73553 0H139.62C140.935 0 142.196 0.522431 143.126 1.45236C144.056 2.3823 144.579 3.64355 144.579 4.95868V29.7521C144.579 31.0672 144.056 32.3284 143.126 33.2584C142.196 34.1883 140.935 34.7107 139.62 34.7107H5.73553C4.42041 34.7107 3.15915 34.1883 2.22922 33.2584C1.29929 32.3284 0.776855 31.0672 0.776855 29.7521L0.776855 4.95868C0.776855 3.64355 1.29929 2.3823 2.22922 1.45236C3.15915 0.522431 4.42041 0 5.73553 0V0Z'\n className='fill-primary-50 dark:fill-primary-100'\n />\n <path\n d='M69.2066 7.93359H43.4215C41.7783 7.93359 40.4463 9.26564 40.4463 10.9088C40.4463 12.552 41.7783 13.884 43.4215 13.884H69.2066C70.8498 13.884 72.1818 12.552 72.1818 10.9088C72.1818 9.26564 70.8498 7.93359 69.2066 7.93359Z'\n className='fill-primary-100 dark:fill-primary-200'\n />\n <path\n d='M87.0579 20.8281H43.4215C41.7783 20.8281 40.4463 22.1602 40.4463 23.8033C40.4463 25.4465 41.7783 26.7785 43.4215 26.7785H87.0579C88.701 26.7785 90.0331 25.4465 90.0331 23.8033C90.0331 22.1602 88.701 20.8281 87.0579 20.8281Z'\n className='fill-primary-200 dark:fill-primary-300'\n />\n <path\n d='M27.5536 2.97656H8.71063C5.97203 2.97656 3.75195 5.19664 3.75195 7.93524V26.7782C3.75195 29.5168 5.97203 31.7369 8.71063 31.7369H27.5536C30.2922 31.7369 32.5123 29.5168 32.5123 26.7782V7.93524C32.5123 5.19664 30.2922 2.97656 27.5536 2.97656Z'\n className='fill-primary-200 dark:fill-primary-300'\n />\n </svg>\n );\n};\n\n\n\n","export const EmptyPieChatData = () => {\n return (\n <svg xmlns='http://www.w3.org/2000/svg' width='122' height='120' viewBox='0 0 122 120' fill='none'>\n <path\n d='M59.9524 64.1508L67.4659 9.82197C63.9259 9.09951 60.2414 8.73828 56.4846 8.73828C25.7802 8.73828 0.855469 33.6631 0.855469 64.3675C0.855469 95.072 25.7802 119.997 56.4846 119.997C87.189 119.997 112.114 95.072 112.114 64.3675C112.114 62.3447 111.969 60.3218 111.825 58.3712L59.9524 64.1508Z'\n className='fill-primary-50 dark:fill-primary-100'\n />\n <path\n d='M121.145 48.5492C118.544 24.2746 100.41 4.69598 76.8583 0L69.2725 54.4011L121.145 48.5492Z'\n className='fill-primary-600 dark:fill-primary-500'\n />\n </svg>\n );\n};\n\n\n\n","export const EmptyDonutChartData = () => {\n return (\n <svg xmlns='http://www.w3.org/2000/svg' width='130' height='120' viewBox='0 0 130 120' fill='none'>\n <path\n d='M77.6721 117.488C72.2076 119.127 66.4153 120.002 60.4262 120.002C50.7322 120.002 41.5847 117.707 33.4863 113.63L47.7923 85.1602C51.5847 87.0727 55.8798 88.1438 60.4262 88.1438C63.235 88.1438 65.9563 87.7285 68.5136 86.9634L77.6721 117.488Z'\n className='fill-primary-200 dark:fill-primary-300'\n />\n <path\n d='M47.7914 85.1572L33.4854 113.627C18.4253 106.042 7.0045 92.3157 2.5127 75.7365L33.2668 67.3867C35.3651 75.1572 40.7313 81.6053 47.7914 85.1572Z'\n className='fill-neutral-200 dark:fill-neutral-700'\n />\n <path\n d='M71.4968 1.0164L65.617 32.3279C63.934 32.011 62.1963 31.847 60.4258 31.847C44.8848 31.847 32.2837 44.4481 32.2837 60C32.2837 62.5574 32.6225 65.0274 33.2673 67.388L2.51322 75.7378C1.15803 70.7214 0.425781 65.4427 0.425781 60C0.425781 26.8634 27.2892 0 60.4258 0C64.2072 0 67.9012 0.349732 71.4968 1.0164Z'\n className='fill-primary-50 dark:fill-primary-100'\n />\n <path\n d='M113.213 31.4536L85.1908 46.6121C81.2236 39.2787 74.0869 33.9126 65.6279 32.3388L71.5077 1.02734C89.5405 4.38254 104.743 15.8252 113.213 31.4536Z'\n className='fill-primary-100 dark:fill-primary-200'\n />\n <path\n d='M129.574 59.9996C129.574 87.1472 111.552 110.076 86.8196 117.486L77.6611 86.9614C89.2568 83.486 97.7158 72.7318 97.7158 59.9996C97.7158 55.1581 96.4917 50.5897 94.3278 46.6116L122.35 31.4531C126.962 39.9449 129.574 49.6608 129.574 59.9996Z'\n className='fill-primary-600 dark:fill-primary-500'\n />\n </svg>\n );\n};\n\n\n\n","export const EmptyTimelineChartData = () => {\n return (\n <svg xmlns='http://www.w3.org/2000/svg' width='154' height='121' viewBox='0 0 154 121' fill='none'>\n <path\n d='M147.235 11.9961H6.76416C3.13305 11.9961 0.189453 14.9262 0.189453 18.5407V114.455C0.189453 118.069 3.13305 120.999 6.76416 120.999H147.235C150.866 120.999 153.81 118.069 153.81 114.455V18.5407C153.81 14.9262 150.866 11.9961 147.235 11.9961Z'\n className='fill-primary-100 dark:fill-primary-200'\n />\n <path\n d='M133.097 40.9922H20.8837C18.2874 40.9922 16.1826 43.0873 16.1826 45.6717V106.625C16.1826 109.209 18.2874 111.304 20.8837 111.304H133.097C135.693 111.304 137.798 109.209 137.798 106.625V45.6717C137.798 43.0873 135.693 40.9922 133.097 40.9922Z'\n className='fill-primary-50 dark:fill-primary-100'\n />\n <path\n d='M153.81 30.3633V18.6475C153.812 17.7866 153.643 16.9338 153.314 16.1378C152.985 15.3418 152.501 14.6183 151.89 14.0088C151.279 13.3993 150.554 12.9157 149.755 12.5857C148.956 12.2558 148.1 12.0859 147.235 12.0859H6.76419C5.89935 12.0859 5.04301 12.2558 4.24422 12.5857C3.44542 12.9157 2.71987 13.3993 2.10913 14.0088C1.49839 14.6183 1.01445 15.3418 0.685044 16.1378C0.355636 16.9338 0.187235 17.7866 0.189475 18.6475V30.5159L153.81 30.3633Z'\n className='fill-primary-500 dark:fill-primary-400'\n />\n <path d='M46.3486 1V22.1089' className='stroke-primary-700 dark:stroke-primary-600' strokeLinecap='round' strokeLinejoin='round' />\n <path d='M107.667 1V22.1089' className='stroke-primary-700 dark:stroke-primary-600' strokeLinecap='round' strokeLinejoin='round' />\n </svg>\n );\n};\n\n\n\n","export const EmptyTableWidgetData = () => {\n return (\n <svg xmlns='http://www.w3.org/2000/svg' width='100' height='99' viewBox='0 0 100 99' fill='none' className='transition-colors'>\n <path\n d='M97.4888 26.1504L90.7939 24.3565L92.2998 18.7373C92.6248 17.5253 91.9053 16.2789 90.6932 15.9543L34.7821 0.972364C33.5728 0.648248 32.3296 1.366 32.0055 2.57533L10.9479 81.1624C10.6238 82.3718 11.3416 83.615 12.5509 83.9391L68.4634 98.9211C69.6745 99.2456 70.9195 98.527 71.2441 97.3158L82.1723 56.5301L88.8673 58.3241C90.4711 58.7538 92.1197 57.8018 92.5494 56.1979L99.614 29.8322C100.045 28.2287 99.0927 26.5802 97.4888 26.1504Z'\n className='fill-primary-600 dark:fill-primary-500'\n />\n <path\n d='M61.4719 87.828L6.85404 90.5767C5.60905 90.6395 4.54867 89.6806 4.48638 88.4361L0.619124 11.586C0.556378 10.341 1.51472 9.28111 2.75972 9.21836L12.3667 8.7349L57.378 6.46971C58.623 6.40696 59.6829 7.36576 59.7457 8.61076L63.5971 85.1466L63.6129 85.4604C63.6757 86.7054 62.7169 87.7657 61.4719 87.828Z'\n className='fill-neutral-200 dark:fill-neutral-700'\n />\n <path\n opacity='0.5'\n d='M63.5975 85.1466L33.8963 83.1708L9.78409 81.5669C8.54 81.4839 7.5988 80.4086 7.68186 79.165L12.3671 8.7349L57.3784 6.46971C58.6234 6.40696 59.6833 7.36576 59.746 8.61076L63.5975 85.1466Z'\n className='fill-neutral-200 dark:fill-neutral-700'\n />\n <path\n d='M73.9906 8.45637L73.8145 11.1007L68.8833 85.2342C68.8007 86.4779 67.7254 87.4191 66.4818 87.3365L36.0272 85.3105L11.915 83.7066C10.6709 83.6236 9.72966 82.5483 9.81272 81.3047L14.92 4.52726C15.0026 3.28316 16.0779 2.34196 17.3215 2.42502L30.2166 3.28271L49.3985 4.5584L71.8883 6.05439C73.1324 6.13745 74.0736 7.21272 73.9906 8.45637Z'\n className='fill-neutral-100 dark:fill-neutral-800'\n />\n <path\n opacity='0.5'\n d='M73.8148 11.0993L68.8835 85.2327C68.8009 86.4764 67.7257 87.4176 66.482 87.335L36.0274 85.309L12.1043 78.899C10.997 78.6019 10.3398 77.4639 10.6368 76.3566L30.2168 3.28125L49.3987 4.55694L73.8148 11.0993Z'\n className='fill-neutral-100 dark:fill-neutral-800'\n />\n <path\n d='M66.8301 96.0659L13.6564 81.8179C12.549 81.5213 11.8918 80.3829 12.1884 79.2756L32.1508 4.77509C32.4735 3.57117 33.7108 2.85659 34.9152 3.1789L87.9143 17.3799C89.0216 17.6765 89.6788 18.815 89.3823 19.9223L69.3729 94.5979C69.0759 95.7057 67.9379 96.3629 66.8301 96.0659Z'\n className='fill-white dark:fill-neutral-900'\n />\n </svg>\n );\n};\n\n\n\n","export const EmptyContentChartData = () => {\n return (\n <svg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 120 120' fill='none'>\n <path\n d='M60 120C93.1371 120 120 93.1371 120 60C120 26.8629 93.1371 0 60 0C26.8629 0 0 26.8629 0 60C0 93.1371 26.8629 120 60 120Z'\n className='fill-primary-50 dark:fill-primary-100'\n />\n <path d='M69.9807 23.067L42.3882 93.9844L50.1684 97.0115L77.7609 26.0942L69.9807 23.067Z' className='fill-primary-500 dark:fill-primary-400' />\n <path\n d='M29.6704 84.196L11.4722 59.9918L29.6704 35.8477L36.337 40.8326L21.9226 59.9918L36.337 79.151L29.6704 84.196Z'\n className='fill-primary-500 dark:fill-primary-400'\n />\n <path\n d='M90.3927 84.196L83.7261 79.151L98.1405 59.9918L83.7261 40.8326L90.3927 35.8477L108.591 59.9918L90.3927 84.196Z'\n className='fill-primary-500 dark:fill-primary-400'\n />\n </svg>\n );\n};\n\n\n\n","import { FC, ReactNode } from 'react';\n\nimport {\n EmptyBarChartData,\n EmptyCardListChartData,\n EmptyContentChartData,\n EmptyCountWidgetData,\n EmptyDonutChartData,\n EmptyPieChatData,\n EmptyTableWidgetData,\n EmptyTimelineChartData,\n} from './empty-widget';\n\nimport { Typography } from '../typography/Typography';\n\nexport interface NoDataFoundWidgetsProps {\n /** Widget type to determine which illustration to show */\n widgetType?: string;\n /** Custom CSS class name */\n className?: string;\n /** Test ID for testing */\n 'data-testid'?: string;\n}\n\n/**\n * NoDataFoundWidgets component displays an empty state for various widget types\n * \n * @example\n * ```tsx\n * <NoDataFoundWidgets widgetType=\"BAR_CHART\" />\n * <NoDataFoundWidgets widgetType=\"PIE_CHART\" />\n * <NoDataFoundWidgets widgetType=\"TABLE\" />\n * ```\n */\nexport const NoDataFoundWidgets: FC<NoDataFoundWidgetsProps> = ({ \n widgetType,\n className,\n 'data-testid': testId,\n}) => {\n const getContentByWidgetType = () => {\n let iconSrc: ReactNode | undefined;\n let additionaltext: string;\n switch (widgetType) {\n case 'BAR_CHART':\n iconSrc = (<EmptyBarChartData />) as ReactNode;\n additionaltext = 'No records found to display.';\n break;\n case 'PIE_CHART':\n iconSrc = (<EmptyPieChatData />) as ReactNode;\n additionaltext = 'Oops! There is no data here.';\n break;\n case 'DONUT_CHART':\n iconSrc = (<EmptyDonutChartData />) as ReactNode;\n additionaltext = 'No data to visualize.';\n break;\n case 'TABLE':\n iconSrc = <EmptyTableWidgetData />;\n additionaltext = 'No entries available at the moment.';\n break;\n case 'TEXT':\n iconSrc = (<EmptyCountWidgetData />) as ReactNode;\n additionaltext = 'No data available to display.';\n break;\n case 'CONTENT':\n iconSrc = (<EmptyContentChartData />) as ReactNode;\n additionaltext = 'No entries available at the moment.';\n break;\n case 'TIMELINE_CHART':\n iconSrc = (<EmptyTimelineChartData />) as ReactNode;\n additionaltext = 'No data to visualize.';\n break;\n case 'CARD_LIST':\n iconSrc = (<EmptyCardListChartData />) as ReactNode;\n additionaltext = 'No entries available at the moment.';\n break;\n default:\n iconSrc = (<EmptyTableWidgetData />) as ReactNode;\n additionaltext = 'There is no data to display for this widget.';\n break;\n }\n return {\n icon: iconSrc as ReactNode,\n additionaltext,\n };\n };\n\n const content = getContentByWidgetType();\n\n return (\n <div \n className={`flex flex-col justify-center items-center h-full ${widgetType === 'TEXT' ? 'py-5' : ''} ${className || ''}`}\n data-testid={testId}\n >\n {content?.icon}\n <Typography variant='regular' size='small' className='text-center mt-2 dark:text-black-200' appearance='custom'>\n {content?.additionaltext}\n </Typography>\n </div>\n );\n};\n\n\n\n","import { FC, ReactNode } from 'react';\nimport { createPortal } from 'react-dom';\n\nexport interface ContextMenuProps {\n /** Whether the context menu is visible */\n visible: boolean;\n /** X position of the menu */\n xPos: number;\n /** Y position of the menu */\n yPos: number;\n /** Menu content */\n children: ReactNode;\n /** Custom CSS class name */\n className?: string;\n /** Container element ID for the portal (defaults to body) */\n containerId?: string;\n /** Test ID for testing */\n 'data-testid'?: string;\n}\n\n/**\n * ContextMenu component creates a portal-based context menu at specified coordinates\n * \n * @example\n * ```tsx\n * const [contextMenu, setContextMenu] = useState({ visible: false, x: 0, y: 0 });\n * \n * <div onContextMenu={(e) => {\n * e.preventDefault();\n * setContextMenu({ visible: true, x: e.clientX, y: e.clientY });\n * }}>\n * Right click me\n * </div>\n * \n * <ContextMenu \n * visible={contextMenu.visible} \n * xPos={contextMenu.x} \n * yPos={contextMenu.y}\n * >\n * <MenuItem onClick={() => console.log('clicked')}>Action</MenuItem>\n * </ContextMenu>\n * ```\n */\nexport const ContextMenu: FC<ContextMenuProps> = ({\n visible,\n xPos,\n yPos,\n children,\n className,\n containerId = 'full-screen-container',\n 'data-testid': testId,\n}) => {\n // Get the container element or fallback to body\n const getContainer = (): Element => {\n if (typeof document === 'undefined') {\n return null as unknown as Element;\n }\n \n // Try parent document first (for iframe scenarios)\n const parentContainer = (typeof parent !== 'undefined' && parent !== window)\n ? parent.document.getElementById(containerId)\n : null;\n \n if (parentContainer) {\n return parentContainer;\n }\n \n // Try current document\n const container = document.getElementById(containerId);\n if (container) {\n return container;\n }\n \n // Fallback to body\n return document.body;\n };\n\n const container = getContainer();\n \n if (!container) {\n return null;\n }\n\n return createPortal(\n <div\n className={`fixed z-50 bg-white dark:bg-black-700 border shadow-md rounded ${visible ? '' : 'hidden'} ${className || ''}`}\n style={{ top: yPos, left: xPos }}\n data-testid={testId}\n >\n {children}\n </div>,\n container,\n );\n};\n\nexport default ContextMenu;\n\n\n\n","import { FC, ReactNode } from 'react';\nimport { Typography } from '../typography/Typography';\nimport { VpnKeyOffOutlined } from '@mui/icons-material';\n\nexport interface PermissionWrapperProps {\n /** Whether the user has permission to view the content */\n hasPermission: boolean;\n /** Content to display when user has permission */\n children: ReactNode;\n /** Custom title for the no permission message */\n title?: string;\n /** Custom subtitle for the no permission message */\n subtitle?: string;\n /** Custom icon for the no permission state */\n icon?: ReactNode;\n /** Custom CSS class name */\n className?: string;\n /** Test ID for testing */\n 'data-testid'?: string;\n}\n\n/**\n * PermissionWrapper component that shows content only if user has permission\n * \n * @example\n * ```tsx\n * <PermissionWrapper hasPermission={user.canViewDashboard}>\n * <Dashboard />\n * </PermissionWrapper>\n * ```\n */\nexport const PermissionWrapper: FC<PermissionWrapperProps> = ({\n hasPermission,\n children,\n title = \"You don't have the required permissions to view this content\",\n subtitle = \"Please contact an administrator if you believe you need access\",\n icon,\n className,\n 'data-testid': testId,\n}) => {\n if (hasPermission) {\n return <>{children}</>;\n }\n\n return (\n <div \n className={`flex flex-col justify-center items-center h-full px-2 py-14 ${className || ''}`}\n data-testid={testId}\n >\n <div className='flex items-center gap-2 w-[70px] h-[70px] bg-neutral-50 dark:bg-black-800 rounded-full justify-center p-1'>\n <div className='flex items-center gap-2 w-14 h-14 bg-neutral-200 dark:bg-black-700 rounded-full justify-center p-1'>\n {icon || <VpnKeyOffOutlined />}\n </div>\n </div>\n <Typography size='large' variant='semibold' className='pt-2 text-center'>\n {title}\n </Typography>\n <Typography size='small' variant='regular' className='pt-0.5 text-center' appearance='subtitle'>\n {subtitle}\n </Typography>\n </div>\n );\n};\n\n\n\n","'use strict';\n\nconst arrayMoveMutate = (array, from, to) => {\n\tconst startIndex = to < 0 ? array.length + to : to;\n\tconst item = array.splice(from, 1)[0];\n\tarray.splice(startIndex, 0, item);\n};\n\nconst arrayMove = (array, from, to) => {\n\tarray = array.slice();\n\tarrayMoveMutate(array, from, to);\n\treturn array;\n};\n\nmodule.exports = arrayMove;\n// TODO: Remove this for the next major release\nmodule.exports.default = arrayMove;\n\nmodule.exports.mutate = arrayMoveMutate;\n","import type { FC } from 'react';\nimport { useState } from 'react';\n\nimport { BaseInputField } from '../base-input-field/BaseInputField';\nimport Button from '../../button/Button';\nimport Text from '../../data-display/text/Text';\nimport { type TFieldOptionsProps } from './types';\nimport { ConfirmPopUp } from '../../modal/confirm-popup';\nimport { useTranslation } from 'react-i18next';\n\ntype TProps = Pick<TFieldOptionsProps, 'value' | 'onOptionChange' | 'onSaveOption' | 'onDeleteAll' | 'required' | 'errorMessage'> & {\n hasChoices: boolean;\n};\n\nexport const Header: FC<TProps> = (props) => {\n const { value, onOptionChange, onSaveOption, onDeleteAll, required, errorMessage, hasChoices } = props;\n const { t } = useTranslation();\n const [showDeleteAllConfirmation, setShowDeleteAllConfirmation] = useState(false);\n\n const handleDeleteAll = () => {\n onDeleteAll?.();\n setShowDeleteAllConfirmation(false);\n };\n\n return (\n <>\n <header className='flex items-end w-full gap-3'>\n <div className='w-full'>\n <BaseInputField\n id={`base-input-field-field-options-header`}\n label='Field Values'\n onChange={onOptionChange}\n value={value}\n onKeyDown={({ key }) => {\n if (key === 'Enter') {\n onSaveOption();\n }\n }}\n required={required}\n placeholder='Press Enter to add a value and use || to separate multiple values'\n errorMessage={errorMessage}\n />\n </div>\n <div className={`flex gap-2 ${errorMessage ? 'mb-[20px]' : ''}`}>\n {onDeleteAll && (\n <Button\n id='btn-field-options-header-delete-all'\n status='error-secondary'\n onClick={() => setShowDeleteAllConfirmation(true)}\n className='w-full sm:w-auto dark:bg-[#2A0D0A] dark:hover:bg-[#3E1510] border dark:border-[#912018]'\n disabled={!hasChoices}\n >\n <Text emptyTag text='Clear All' className='font-inter font-medium text-sm' />\n </Button>\n )}\n </div>\n </header>\n\n <ConfirmPopUp\n onOk={handleDeleteAll}\n onCancel={() => setShowDeleteAllConfirmation(false)}\n title={t('Delete All Field Values')}\n content={t('Are you sure you want to delete all field values? This action cannot be undone.')}\n footer={{ okText: t('Delete All'), cancelText: t('Cancel'), okBtnType: 'error' }}\n isVisibleOutside={showDeleteAllConfirmation}\n />\n </>\n );\n};\n\n\n\n","import cn from 'classnames';\nimport { FC, SVGAttributes } from 'react';\n\ntype IconProps = SVGAttributes<SVGSVGElement> & {\n size?: string;\n};\n\nexport const CloseIcon: FC<IconProps> = ({ size = 'w-3.5 h-3.5', className, ...props }) => (\n <svg\n aria-hidden='true'\n className={cn(size, 'text-primary-300', className)}\n fill='currentColor'\n viewBox='0 0 20 20'\n xmlns='http://www.w3.org/2000/svg'\n {...props}\n >\n <path d='M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z' />\n </svg>\n);\n\n\n\n","import cn from 'classnames';\nimport type { FC } from 'react';\nimport { SortableItem, SortableKnob } from 'react-easy-sort';\nimport { MdOutlineDragIndicator } from 'react-icons/md';\n\nimport { CloseIcon } from './Icon';\nimport type { TFieldOptionsProps } from './types';\n\ntype TProps = Pick<TFieldOptionsProps, 'value' | 'onDeleteItem' | 'userCanManage'> & {\n index: number;\n};\n\nexport const Item: FC<TProps> = (props) => {\n const { value, index, onDeleteItem, userCanManage = false } = props;\n\n return (\n <SortableItem>\n <div\n className={cn(\n 'relative flex items-center px-1.5 py-0.5 text-sm text-primary-600 bg-primary-50 dark:bg-black-700 rounded font-medium text-[14px] font-inter border border-primary-100',\n )}\n >\n {userCanManage && (\n <SortableKnob>\n <button id={`btn-data-display-close-modal`} className='pr-2 cursor-move'>\n <MdOutlineDragIndicator height={10} width={7} />\n </button>\n </SortableKnob>\n )}\n {value}\n {userCanManage && (\n <span\n className='flex items-center gap-2.5 p-0.5 rounded-xl bg-primary-100 ml-auto cursor-pointer'\n data-dismiss-target='#badge-dismiss-default'\n aria-label='Remove'\n onClick={() => {\n onDeleteItem(index);\n }}\n >\n <CloseIcon size='w-2.5 h-2.5' />\n <span className='sr-only'>{'Remove badge'}</span>\n </span>\n )}\n </div>\n </SortableItem>\n );\n};\n\n\n\n","import type { FC } from 'react';\nimport SortableList from 'react-easy-sort';\nimport arrayMove from 'array-move';\n\nimport { Header } from './Header';\nimport { Item } from './Item';\nimport { type TFieldOptionsProps } from './types';\n\n\n/**\n * Hook to handle sort order updates for drag and drop\n */\nconst useSortOrderUpdate = <T,>({ rawIds, callback }: { rawIds: T[]; callback: (nextIds: T[]) => void }) => {\n const handler = (prevIndex: number, nextIndex: number) => {\n const nextIds = arrayMove(rawIds, prevIndex, nextIndex);\n callback(nextIds);\n };\n\n return handler;\n};\n\n/**\n * FieldOptions component for managing a list of field values with drag-and-drop sorting\n */\nexport const FieldOptions = (props: TFieldOptionsProps) => {\n const { value, choices, onOptionChange, onSaveOption, onDeleteItem, onChoicesUpdate, onDeleteAll, required = false, errorMessage, userCanManage = false } = props;\n const handleSortEnd = useSortOrderUpdate({ rawIds: choices, callback: onChoicesUpdate });\n\n return (\n <div className='w-full col-span-2'>\n {userCanManage && (\n <Header\n value={value}\n onOptionChange={onOptionChange}\n onSaveOption={onSaveOption}\n onDeleteAll={onDeleteAll}\n required={required}\n errorMessage={errorMessage}\n hasChoices={choices?.length > 0}\n />\n )}\n <div className='py-2' />\n <div className={`${choices?.length > 0 ? 'border border-neutral-200 rounded-lg p-2' : ''}`}>\n <SortableList className='w-full grid grid-cols-2 gap-2' onSortEnd={handleSortEnd}>\n {choices?.map((key: string, index: number) => (\n <Item key={key + '-' + index} userCanManage={userCanManage} value={key} index={index} onDeleteItem={onDeleteItem} />\n ))}\n </SortableList>\n </div>\n </div>\n );\n};\n\n\n\n","import React, { ReactNode, useEffect, useRef, useState } from 'react';\n\nexport interface LinearProgressBarProps {\n /** Target value to animate to (0-100 by default, or based on max) */\n stopAt?: number;\n /** Maximum value for the progress bar */\n max?: number;\n /** Height of the progress bar in pixels */\n height?: number;\n /** Single color for the progress bar */\n color?: string;\n /** Start color for gradient (requires toColor) */\n fromColor?: string;\n /** End color for gradient (requires fromColor) */\n toColor?: string;\n /** Animation duration in milliseconds */\n duration?: number;\n /** Callback to receive the animated display value during animation */\n setAnimatedDisplayValue?: (value: number) => void;\n /** Children to render below the progress bar */\n children?: ReactNode;\n /** Additional CSS classes */\n className?: string;\n}\n\nconst DEFAULT_HEIGHT = 12;\nconst DEFAULT_DURATION = 3000;\nconst DEFAULT_COLOR = '#0077E3';\n\n/**\n * LinearProgressBar component that animates from 0 to a target value\n */\nexport const LinearProgressBar: React.FC<LinearProgressBarProps> = ({\n stopAt = 100,\n max = 100,\n height = DEFAULT_HEIGHT,\n color = DEFAULT_COLOR,\n fromColor,\n toColor,\n duration = DEFAULT_DURATION,\n children,\n setAnimatedDisplayValue = null,\n className = '',\n}) => {\n const [visualProgress, setVisualProgress] = useState(0);\n const animationFrameRef = useRef<number>();\n\n useEffect(() => {\n // Reset values when stopAt changes\n setVisualProgress(0);\n setAnimatedDisplayValue?.(0);\n\n const startTime = performance.now();\n const startDisplayValue = 0;\n const endDisplayValue = stopAt;\n const startVisualValue = 0;\n const endVisualValue = (stopAt / max) * 100;\n\n const animate = (currentTime: number) => {\n const elapsed = currentTime - startTime;\n const progress = Math.min(elapsed / duration, 1);\n\n // Animate display value (the number shown to user)\n const currentDisplayValue = Math.round(startDisplayValue + (endDisplayValue - startDisplayValue) * progress);\n setAnimatedDisplayValue?.(currentDisplayValue);\n\n // Animate visual progress (the width of the progress bar)\n const currentVisualValue = startVisualValue + (endVisualValue - startVisualValue) * progress;\n setVisualProgress(currentVisualValue);\n\n if (progress < 1) {\n animationFrameRef.current = requestAnimationFrame(animate);\n }\n };\n\n animationFrameRef.current = requestAnimationFrame(animate);\n\n return () => {\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n }\n };\n }, [stopAt, max, duration, setAnimatedDisplayValue]);\n\n const getBackgroundStyle = () => {\n if (fromColor && toColor) {\n return {\n background: `linear-gradient(to right, ${fromColor}, ${toColor})`,\n };\n }\n return {\n backgroundColor: color,\n };\n };\n\n return (\n <div className={`relative w-full ${className}`}>\n <div className='w-full bg-neutral-200 dark:bg-neutral-700 rounded-full overflow-hidden' style={{ height }}>\n <div\n className='h-full rounded-full'\n style={{\n width: `${visualProgress}%`,\n ...getBackgroundStyle(),\n }}\n />\n </div>\n {children && <div className='mt-2'>{children}</div>}\n </div>\n );\n};\n\n\n\n","import React, { ReactNode, useEffect, useRef, useState } from 'react';\n\nexport interface CircularProgressBarProps {\n /** Target value to animate to */\n value: number;\n /** Maximum value for the progress */\n max?: number;\n /** Size of the circular progress bar in pixels */\n size?: number;\n /** Width of the stroke in pixels */\n strokeWidth?: number;\n /** Color of the progress arc */\n color?: string;\n /** Animation duration in milliseconds */\n duration?: number;\n /** Callback to receive the animated display value during animation */\n setAnimatedDisplayValue?: (value: number) => void;\n /** Children to render in the center of the circle */\n children: ReactNode;\n}\n\nconst DEFAULT_SIZE = 120;\nconst DEFAULT_STROKE = 12;\nconst DEFAULT_DURATION = 3000;\nconst DEFAULT_COLOR = '#0077E3';\n\n/**\n * CircularProgressBar component that animates from 0 to a target value\n */\nexport const CircularProgressBar: React.FC<CircularProgressBarProps> = ({\n value,\n max = 100,\n size = DEFAULT_SIZE,\n strokeWidth = DEFAULT_STROKE,\n color = DEFAULT_COLOR,\n duration = DEFAULT_DURATION,\n children,\n setAnimatedDisplayValue = null,\n}) => {\n const radius = (size - strokeWidth) / 2;\n const circumference = 2 * Math.PI * radius;\n const [animatedValue, setAnimatedValue] = useState(0);\n const animationFrameRef = useRef<number>();\n\n useEffect(() => {\n setAnimatedValue(0);\n setAnimatedDisplayValue?.(0);\n const timer = setTimeout(() => {\n setAnimatedValue(value);\n }, 100);\n return () => clearTimeout(timer);\n }, [value]);\n\n useEffect(() => {\n const startTime = performance.now();\n const startValue = 0;\n const endValue = value;\n\n const animate = (currentTime: number) => {\n const elapsed = currentTime - startTime;\n const progress = Math.min(elapsed / duration, 1);\n\n const currentValue = Math.round(startValue + (endValue - startValue) * progress);\n setAnimatedDisplayValue?.(currentValue);\n\n if (progress < 1) {\n animationFrameRef.current = requestAnimationFrame(animate);\n }\n };\n\n animationFrameRef.current = requestAnimationFrame(animate);\n\n return () => {\n if (animationFrameRef.current) {\n cancelAnimationFrame(animationFrameRef.current);\n }\n };\n }, [value]);\n\n const animatedProgress = Math.min(Math.max(animatedValue, 0), max) / max;\n const offset = circumference * (1 - animatedProgress);\n\n return (\n <div className={`relative flex items-center justify-center`} style={{ width: size, height: size }}>\n <svg width={size} height={size} className='block'>\n <circle\n className='text-neutral-200 dark:text-neutral-700'\n strokeWidth={strokeWidth}\n stroke='currentColor'\n fill='transparent'\n r={radius}\n cx={size / 2}\n cy={size / 2}\n />\n <circle\n strokeWidth={strokeWidth}\n strokeLinecap='round'\n stroke='currentColor'\n fill='transparent'\n r={radius}\n cx={size / 2}\n cy={size / 2}\n strokeDasharray={circumference}\n strokeDashoffset={offset}\n transform={`rotate(90 ${size / 2} ${size / 2})`}\n style={{\n transition: `stroke-dashoffset ${duration}ms cubic-bezier(0.4, 0, 0.2, 1)`,\n stroke: color,\n }}\n />\n </svg>\n {children}\n </div>\n );\n};\n\n\n\n","import { TLabelValue } from '../../forms/select-field/SelectField';\n\nexport enum COMPARISON_LAYOUT {\n ONE = 1,\n TWO = 2,\n THREE = 3,\n}\n\nexport interface ILayoutItem {\n id: number;\n visible: boolean;\n states: any;\n version?: TLabelValue;\n additionalVersions?: Array<TLabelValue>;\n isLoading?: boolean;\n}\n\nexport const DEFAULT_COMPARISON_LAYOUTS: ILayoutItem[] = [\n {\n id: 1,\n visible: true,\n states: {\n selectedAgreement: null,\n headers: null,\n lineItem: null,\n },\n version: undefined,\n additionalVersions: [],\n isLoading: false,\n },\n {\n id: 2,\n visible: false,\n states: {\n selectedAgreement: null,\n headers: null,\n lineItem: null,\n },\n version: undefined,\n additionalVersions: [],\n isLoading: false,\n },\n {\n id: 3,\n visible: false,\n states: {\n selectedAgreement: null,\n headers: null,\n lineItem: null,\n },\n version: undefined,\n additionalVersions: [],\n isLoading: false,\n },\n];\n\n\n\n","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var cache = null;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (cache && cache.lastThis === this && isEqual(newArgs, cache.lastArgs)) {\n return cache.lastResult;\n }\n var lastResult = resultFn.apply(this, newArgs);\n cache = {\n lastResult: lastResult,\n lastArgs: newArgs,\n lastThis: this,\n };\n return lastResult;\n }\n memoized.clear = function clear() {\n cache = null;\n };\n return memoized;\n}\n\nexport { memoizeOne as default };\n","import memoizeOne from 'memoize-one';\nimport { ILayoutItem } from './constants';\n\nexport const gridLayoutItems = memoizeOne(\n (layoutItems: Array<Pick<ILayoutItem, 'id' | 'visible' | 'states' | 'isLoading'>>) => {\n const items = layoutItems.filter((item) => item.visible);\n\n return {\n items,\n ids: items.filter((item) => item.states).map((item) => item.id),\n };\n },\n);\n\nexport const filterVisibleItems = memoizeOne((layoutItems: Array<Pick<ILayoutItem, 'visible'>>) => {\n return layoutItems.filter((item) => item.visible).length;\n});\n\nexport const filteredOptions = memoizeOne((options: Array<any>, selectedValue?: string) => {\n if (selectedValue) {\n return options.filter((option) => option.value !== selectedValue);\n }\n return options.filter((option) => !option.selected);\n});\n\nexport const getCurrentSelectValue = memoizeOne(\n (options: Array<{ label: string; value: string }>, selectValue?: string) => {\n return [options.find((option) => option.value === selectValue)];\n },\n);\n\nexport const parseToIds = memoizeOne((ids: string) => {\n try {\n return JSON.parse(ids);\n } catch (_err) {\n return [];\n }\n});\n\n\n\n","import { Dispatch, ReactNode, createContext, useCallback } from 'react';\nimport { COMPARISON_LAYOUT, ILayoutItem } from './constants';\nimport { filterVisibleItems } from './utils';\n\nexport type TComparisonContext = {\n headerTabConfig?: {\n tabs: string[];\n tabKey: string;\n tabState: any;\n };\n title?: string;\n layoutItems: ILayoutItem[];\n setLayoutItems: Dispatch<React.SetStateAction<ILayoutItem[]>>;\n layout?: number;\n setLayout: (_layout: COMPARISON_LAYOUT) => void;\n hideLayoutItem: (_id: number) => void;\n layoutHeader: (id: number) => ReactNode;\n layoutContent: (id: number) => ReactNode;\n returnUrl?: string | number;\n onReturn?: () => void;\n};\n\nexport interface ComparisonProviderProps {\n children: ReactNode;\n headerTabConfig?: {\n tabs: string[];\n tabKey: string;\n tabState: any;\n };\n title?: string;\n layoutItems: ILayoutItem[];\n setLayoutItems: Dispatch<React.SetStateAction<ILayoutItem[]>>;\n layoutHeader: (id: number) => ReactNode;\n layoutContent: (id: number) => ReactNode;\n returnUrl?: string | number;\n onReturn?: () => void;\n}\n\nexport const ComparisonContext = createContext<TComparisonContext>({\n layoutItems: [],\n setLayoutItems: () => null,\n layout: 1,\n setLayout: () => null,\n hideLayoutItem: () => null,\n layoutHeader: () => null,\n layoutContent: () => null,\n returnUrl: undefined,\n});\n\nexport const ComparisonProvider = ({\n children,\n headerTabConfig,\n title,\n layoutItems,\n setLayoutItems,\n layoutHeader,\n layoutContent,\n returnUrl,\n onReturn,\n}: ComparisonProviderProps) => {\n const layout = filterVisibleItems(layoutItems);\n\n const setLayout = (_id: COMPARISON_LAYOUT) => {\n const _layoutItems: ILayoutItem[] = structuredClone(layoutItems);\n\n const currentLayouts = _layoutItems.filter((item) => item.visible);\n\n if (currentLayouts.length === _id) return;\n\n if (currentLayouts.length < _id) {\n // keep only the layout which id is less than or equal to _id\n setLayoutItems(\n _layoutItems.map((item, index: number) => {\n if (item.id <= _id && !item.visible) {\n const closeSiblingIndex = index === 0 ? 1 : 0;\n\n const prevLayout = structuredClone(_layoutItems[closeSiblingIndex]);\n\n return {\n ...item,\n visible: true,\n states: prevLayout?.states,\n additionalVersions: prevLayout?.additionalVersions,\n version: prevLayout?.version,\n };\n }\n return item;\n }),\n );\n } else {\n setLayoutItems(\n _layoutItems.map((item) => {\n if (item.id > _id) {\n return {\n ...item,\n visible: false,\n };\n }\n return item;\n }),\n );\n }\n };\n\n const hideLayoutItem = useCallback(\n (_id: COMPARISON_LAYOUT) => {\n const prevItems: ILayoutItem[] = structuredClone(layoutItems);\n const item = prevItems.find((prevItem) => prevItem.id === _id);\n if (item) {\n item.visible = false;\n setLayoutItems(prevItems);\n }\n },\n [layoutItems, setLayoutItems],\n );\n\n return (\n <ComparisonContext.Provider\n value={{\n hideLayoutItem,\n setLayout,\n layoutItems,\n headerTabConfig,\n layout,\n title,\n setLayoutItems,\n layoutHeader,\n layoutContent,\n returnUrl,\n onReturn,\n }}\n >\n {children}\n </ComparisonContext.Provider>\n );\n};\n\n\n\n","import React from 'react';\n\nexport interface ExitIconProps {\n fill: string;\n className?: string;\n}\n\nexport const ExitIcon: React.FC<ExitIconProps> = ({ fill, className }) => {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='24'\n height='24'\n viewBox='0 0 24 24'\n fill='none'\n className={className}\n >\n <g mask='url(#mask0_23711_660310)'>\n <path\n d='M4.22222 22C3.61111 22 3.08796 21.7824 2.65278 21.3472C2.21759 20.912 2 20.3889 2 19.7778V4.22222C2 3.61111 2.21759 3.08796 2.65278 2.65278C3.08796 2.21759 3.61111 2 4.22222 2H12V4.22222H4.22222V19.7778H12V22H4.22222ZM16.4444 17.5556L14.9167 15.9444L17.75 13.1111H8.66667V10.8889H17.75L14.9167 8.05556L16.4444 6.44444L22 12L16.4444 17.5556Z'\n fill={fill}\n />\n </g>\n </svg>\n );\n};\n\n\n\n","import React from 'react';\n\nexport interface LayoutOneIconProps {\n fill?: string;\n className?: string;\n}\n\nexport const LayoutOneIcon: React.FC<LayoutOneIconProps> = ({ fill = 'currentColor', className }) => {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='10'\n height='16'\n viewBox='0 0 10 16'\n fill={fill}\n className={className}\n >\n <path\n d='M2 14H0V2H2V14ZM2 14H8V2H2V14ZM2 16C1.45 16 0.979167 15.8042 0.5875 15.4125C0.195833 15.0208 0 14.55 0 14V2C0 1.45 0.195833 0.979167 0.5875 0.5875C0.979167 0.195833 1.45 0 2 0H8C8.55 0 9.02083 0.195833 9.4125 0.5875C9.80417 0.979167 10 1.45 10 2V14C10 14.55 9.80417 15.0208 9.4125 15.4125C9.02083 15.8042 8.55 16 8 16H2Z'\n fill={fill}\n />\n </svg>\n );\n};\n\n\n\n","import React from 'react';\n\nexport interface LayoutTwoIconProps {\n fill?: string;\n className?: string;\n}\n\nexport const LayoutTwoIcon: React.FC<LayoutTwoIconProps> = ({ fill, className }) => {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='18'\n height='16'\n viewBox='0 0 18 16'\n fill='none'\n className={className}\n >\n <path\n d='M2 14H8V2H2V14ZM10 14H16V2H10V14ZM2 16C1.45 16 0.979167 15.8042 0.5875 15.4125C0.195833 15.0208 0 14.55 0 14V2C0 1.45 0.195833 0.979167 0.5875 0.5875C0.979167 0.195833 1.45 0 2 0H16C16.55 0 17.0208 0.195833 17.4125 0.5875C17.8042 0.979167 18 1.45 18 2V14C18 14.55 17.8042 15.0208 17.4125 15.4125C17.0208 15.8042 16.55 16 16 16H2Z'\n fill={fill}\n />\n </svg>\n );\n};\n\n\n\n","import React from 'react';\n\nexport interface LayoutThreeIconProps {\n fill?: string;\n className?: string;\n}\n\nexport const LayoutThreeIcon: React.FC<LayoutThreeIconProps> = ({ fill, className }) => {\n return (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width='20'\n height='16'\n viewBox='0 0 20 16'\n fill='none'\n className={className}\n >\n <path\n d='M2 14H6V2H2V14ZM8 14H12V2H8V14ZM14 14H18V2H14V14ZM2 16C1.45 16 0.979167 15.8042 0.5875 15.4125C0.195833 15.0208 0 14.55 0 14V2C0 1.45 0.195833 0.979167 0.5875 0.5875C0.979167 0.195833 1.45 0 2 0H18C18.55 0 19.0208 0.195833 19.4125 0.5875C19.8042 0.979167 20 1.45 20 2V14C20 14.55 19.8042 15.0208 19.4125 15.4125C19.0208 15.8042 18.55 16 18 16H2Z'\n fill={fill}\n />\n </svg>\n );\n};\n\n\n\n","import cn from 'classnames';\nimport { FC, SVGAttributes } from 'react';\n\nexport interface CloseIconProps extends SVGAttributes<SVGElement> {\n classValue?: string;\n fill?: string;\n size?: number;\n}\n\nexport const CloseIcon: FC<CloseIconProps> = ({ classValue, size = 24, fill = 'currentColor', ...props }) => (\n <svg\n className={cn(classValue)}\n width={size}\n height={size}\n viewBox='0 0 20 20'\n fill={fill}\n xmlns='http://www.w3.org/2000/svg'\n {...props}\n >\n <path d='M10.0002 11.1666L5.91683 15.2499C5.76405 15.4027 5.56961 15.4791 5.3335 15.4791C5.09739 15.4791 4.90294 15.4027 4.75016 15.2499C4.59738 15.0971 4.521 14.9027 4.521 14.6666C4.521 14.4305 4.59738 14.236 4.75016 14.0833L8.8335 9.99992L4.75016 5.91659C4.59738 5.76381 4.521 5.56936 4.521 5.33325C4.521 5.09714 4.59738 4.9027 4.75016 4.74992C4.90294 4.59714 5.09739 4.52075 5.3335 4.52075C5.56961 4.52075 5.76405 4.59714 5.91683 4.74992L10.0002 8.83325L14.0835 4.74992C14.2363 4.59714 14.4307 4.52075 14.6668 4.52075C14.9029 4.52075 15.0974 4.59714 15.2502 4.74992C15.4029 4.9027 15.4793 5.09714 15.4793 5.33325C15.4793 5.56936 15.4029 5.76381 15.2502 5.91659L11.1668 9.99992L15.2502 14.0833C15.4029 14.236 15.4793 14.4305 15.4793 14.6666C15.4793 14.9027 15.4029 15.0971 15.2502 15.2499C15.0974 15.4027 14.9029 15.4791 14.6668 15.4791C14.4307 15.4791 14.2363 15.4027 14.0835 15.2499L10.0002 11.1666Z' />\n </svg>\n);\n\n\n\n","import { FC, SVGAttributes } from 'react';\n\nexport interface SearchIconProps extends SVGAttributes<SVGElement> {\n width?: string;\n height?: string;\n fill?: string;\n className?: string;\n}\n\nexport const SearchIcon: FC<SearchIconProps> = ({\n width = '15',\n height = '15',\n fill = '#98A2B3',\n className,\n}) => (\n <svg\n xmlns='http://www.w3.org/2000/svg'\n width={width}\n height={height}\n viewBox='0 0 20 20'\n fill='none'\n className={className}\n >\n <path\n d='M17.5 17.5L12.5001 12.5M14.1667 8.33333C14.1667 11.555 11.555 14.1667 8.33333 14.1667C5.11167 14.1667 2.5 11.555 2.5 8.33333C2.5 5.11167 5.11167 2.5 8.33333 2.5C11.555 2.5 14.1667 5.11167 14.1667 8.33333Z'\n stroke={fill}\n strokeWidth='2'\n strokeLinecap='round'\n strokeLinejoin='round'\n />\n </svg>\n);\n\n\n\n","import { useSortable } from '@dnd-kit/sortable';\nimport React, { forwardRef } from 'react';\nimport { MdOutlineDragIndicator } from 'react-icons/md';\n\nexport interface GridItemHandleProps {\n listeners: ReturnType<typeof useSortable>['listeners'];\n}\n\nconst Handle = forwardRef<HTMLButtonElement, GridItemHandleProps>(\n ({ listeners }, ref) => {\n return (\n <div className='flex items-center justify-center'>\n <button\n id={`btn-comparison-gird-item-outline-drag-indicator`}\n ref={ref}\n {...listeners}\n className='hover:transform hover:scale-125 transition-transform duration-200 ease-in-out cursor-grab'\n >\n <MdOutlineDragIndicator size={24} color='#98A2B3' />\n </button>\n </div>\n );\n },\n);\n\nHandle.displayName = 'GridItemHandle';\n\nexport default React.memo(Handle);\n\n","import { SearchIcon } from '../icons';\nimport { useTranslation } from 'react-i18next';\n\nexport const NoAvailableContent = () => {\n const { t } = useTranslation();\n return (\n <div className='flex flex-col items-center text-center'>\n <span className='text-[#98A2B3] bg-[#F2F4F7] h-[48px] w-[48px] flex items-center justify-center rounded-lg'>\n <SearchIcon />\n </span>\n <p className='font-semibold mt-2 text-neutral-900 dark:text-white'>{t('No additional versions available')}</p>\n <p className='text-sm text-[#98A2B3]'>{t('There are no additional versions available for comparison')}</p>\n </div>\n );\n};\n","import { useSortable } from '@dnd-kit/sortable';\nimport { CSS } from '@dnd-kit/utilities';\nimport cn from 'classnames';\nimport React, { useContext } from 'react';\n\nimport { ComparisonContext } from '../ComparisonContext';\nimport { COMPARISON_LAYOUT, ILayoutItem } from '../constants';\nimport { CloseIcon } from '../icons';\nimport Tooltip from '../../../tooltip/Tooltip';\nimport Handle from './GridItemHandle';\nimport { NoAvailableContent } from './NoAvailableContent';\nimport { useTranslation } from 'react-i18next';\n\nexport interface SortableItemProps {\n item: ILayoutItem;\n}\n\nconst SortableItem: React.FC<SortableItemProps> = ({ item }) => {\n const { hideLayoutItem, layout, layoutHeader, layoutContent } = useContext(ComparisonContext);\n const { t } = useTranslation();\n const { isDragging, attributes, listeners, setNodeRef, transform, transition, isOver, setActivatorNodeRef, over, active } = useSortable({\n id: item.id,\n });\n \n const style = {\n transform: CSS.Transform.toString(transform),\n transition: transition || undefined,\n opacity: isDragging ? '0.5' : '1',\n cursor: isDragging ? 'grabbing' : 'grab',\n };\n\n const isFileOveringToFolder = (): boolean => {\n if (!active || !over) {\n return false;\n }\n return active.data.current?.type !== over.data.current?.type && isOver;\n };\n\n return (\n <>\n <div\n ref={setNodeRef}\n style={style}\n {...attributes}\n className={cn(\n 'group relative rounded-lg !cursor-[initial] flex-1',\n isFileOveringToFolder() ? 'shadow-dnd-drop' : '',\n 'aria-[pressed=true]:z-40',\n )}\n >\n <div className='bg-white dark:bg-black-700 h-full border-r border-r-[#EAECF0]'>\n {item.states ? (\n <div className='h-full flex flex-col @container'>\n <div className='p-4 flex items-center justify-between border-b border-b-[#EAECF0] min-h-[78px] relative'>\n {item.isLoading ? <div className='absolute left-0 top-0 h-full w-full z-10 bg-[#ffffff82]' /> : null}\n <div className='flex items-center gap-2'>\n <>\n <Tooltip title={t('Drag column')}>\n <div>\n <Handle ref={setActivatorNodeRef} listeners={listeners} />\n </div>\n </Tooltip>\n {layoutHeader(item.id)}\n </>\n </div>\n {layout !== COMPARISON_LAYOUT.ONE ? (\n <div>\n <CloseIcon fill='#98A2B3' classValue='cursor-pointer' onClick={() => hideLayoutItem(item.id)} />\n </div>\n ) : null}\n </div>\n {layoutContent(item.id)}\n </div>\n ) : (\n <div className='h-full flex flex-col'>\n <div className='p-4 flex items-center justify-end h-[78px]'>\n {layout !== COMPARISON_LAYOUT.ONE ? (\n <CloseIcon fill='#98A2B3' classValue='cursor-pointer' onClick={() => hideLayoutItem(item.id)} />\n ) : null}\n </div>\n <div className='p-4 flex-1 flex items-center justify-center h-full'>\n <NoAvailableContent />\n </div>\n </div>\n )}\n </div>\n </div>\n </>\n );\n};\n\nexport default React.memo(SortableItem);\n\n\n\n","import { DndContext, KeyboardSensor, PointerSensor, pointerWithin, useSensor, useSensors } from '@dnd-kit/core';\nimport type { DragEndEvent } from '@dnd-kit/core';\nimport { SortableContext, arrayMove, sortableKeyboardCoordinates } from '@dnd-kit/sortable';\nimport cn from 'classnames';\nimport React, { useContext } from 'react';\n\nimport { ComparisonContext } from '../ComparisonContext';\nimport type { ILayoutItem } from '../constants';\nimport { gridLayoutItems } from '../utils';\nimport SortableItem from './SortableItem';\n\n\nconst GridLayout = () => {\n const { layoutItems, setLayoutItems } = useContext(ComparisonContext);\n const { ids, items } = gridLayoutItems(layoutItems);\n\n const sensors = useSensors(\n useSensor(PointerSensor),\n useSensor(KeyboardSensor, {\n coordinateGetter: sortableKeyboardCoordinates,\n }),\n );\n\n const handleDragStart = () => {\n return;\n };\n\n const handleDragEnd = async (event: DragEndEvent) => {\n const { active, over } = event;\n if (!over) {\n return;\n }\n\n const updatePosition = (prevState: ILayoutItem[]) => {\n const oldIndex = prevState.findIndex((item) => item.id === active.id);\n const newIndex = prevState.findIndex((item) => item.id === over.id);\n if (oldIndex > -1 && newIndex > -1) {\n return arrayMove(prevState, oldIndex, newIndex);\n }\n return prevState;\n };\n setLayoutItems(updatePosition);\n };\n\n return (\n <div className='bg-white dark:bg-black-700 flex-1'>\n <DndContext collisionDetection={pointerWithin} sensors={sensors} onDragEnd={handleDragEnd} onDragStart={handleDragStart}>\n <SortableContext items={ids}>\n <div className={cn('flex h-full flex-col md:flex-row')}>\n {items.map((item: ILayoutItem) => (\n <SortableItem key={item.id} item={item} />\n ))}\n </div>\n </SortableContext>\n </DndContext>\n </div>\n );\n};\n\nexport default React.memo(GridLayout);\n\n","import cn from 'classnames';\nimport React, { useContext } from 'react';\n\nimport { ComparisonContext } from '../ComparisonContext';\nimport { COMPARISON_LAYOUT } from '../constants';\nimport { ExitIcon, LayoutOneIcon, LayoutTwoIcon, LayoutThreeIcon } from '../icons';\nimport Tooltip from '../../../tooltip/Tooltip';\nimport { useTranslation } from 'react-i18next';\n\nexport interface ComparisonHeaderProps {\n /** Optional navigation function to go back */\n onNavigateBack?: (url: string) => void;\n /** Custom tabs component to render in the header */\n tabsComponent?: React.ElementType;\n}\n\nconst LAYOUTS: Array<{ icon: React.ReactNode; key: COMPARISON_LAYOUT; tooltip: string }> = [\n {\n icon: <LayoutOneIcon className='text-black-900 dark:text-white' />,\n key: COMPARISON_LAYOUT.ONE,\n tooltip: 'One column',\n },\n {\n icon: <LayoutTwoIcon className='text-black-900 dark:text-white' />,\n key: COMPARISON_LAYOUT.TWO,\n tooltip: 'Two column',\n },\n {\n icon: <LayoutThreeIcon className='text-black-900 dark:text-white' />,\n key: COMPARISON_LAYOUT.THREE,\n tooltip: 'Three column',\n },\n];\n\nconst Header: React.FC<ComparisonHeaderProps> = ({ \n onNavigateBack,\n tabsComponent: TabsComponent,\n}) => {\n const { setLayout, title, layout, returnUrl, onReturn, headerTabConfig } = useContext(ComparisonContext);\n const { t } = useTranslation();\n\n const goBack = () => {\n if (onReturn) {\n onReturn();\n } else if (returnUrl && onNavigateBack) {\n onNavigateBack(returnUrl?.toString() || '/home');\n }\n };\n\n return (\n <div className='flex flex-wrap items-center justify-between p-4 border-y border-y-[#EAECF0] bg-[#F9FAFB] dark:bg-black-800 gap-2 flex-col sm:flex-row'>\n <p className='text-lg font-inter font-bold text-neutral-900 dark:text-white'>{title}</p>\n {TabsComponent && (\n <div className='flex justify-center'>\n <TabsComponent\n variant='secondary'\n tabs={headerTabConfig?.tabs || []}\n {...headerTabConfig?.tabState}\n tabKey={headerTabConfig?.tabKey || ''}\n size='md'\n draggable={false}\n showAllItems={true}\n />\n </div>\n )}\n <div className='flex gap-5 items-center'>\n <div className='bg-neutral-100 dark:bg-black-700 rounded-lg p-1 flex items-center'>\n {LAYOUTS.map(({ icon, key, tooltip }) => (\n <Tooltip key={key} title={tooltip ? t(tooltip) : ''}>\n <div\n className={cn(\n layout === key ? 'bg-white dark:bg-black-500' : '',\n 'cursor-pointer rounded-lg flex items-center justify-center h-[32px] w-[42px]',\n )}\n onClick={() => setLayout(key)}\n >\n {React.cloneElement(icon as unknown as React.ReactElement, {\n fill: '#98A2B3',\n })}\n </div>\n </Tooltip>\n ))}\n </div>\n {onReturn || returnUrl ? (\n <Tooltip title={t('Exit')}>\n <div className='border border-[#FECDCA] rounded-lg cursor-pointer h-[40px] w-[40px] flex items-center justify-center' onClick={goBack}>\n <ExitIcon fill='#D92D20' />\n </div>\n </Tooltip>\n ) : null}\n </div>\n </div>\n );\n};\n\nexport default React.memo(Header);\n\n","import { Dispatch, ReactNode } from 'react';\n\nimport { ComparisonProvider } from './ComparisonContext';\nimport GridLayout from './components/GridLayout';\nimport Header from './components/Header';\nimport { ILayoutItem } from './constants';\n\nexport interface ComparisonProps {\n /** Configuration for header tabs */\n headerTabConfig?: {\n tabs: string[];\n tabKey: string;\n tabState: any;\n };\n /** Title displayed in the header */\n title?: string;\n /** Layout items for comparison panels */\n layoutItems: ILayoutItem[];\n /** Setter function for layout items */\n setLayoutItems: Dispatch<React.SetStateAction<ILayoutItem[]>>;\n /** Function to render header content for each panel */\n layoutHeader: (id: number) => ReactNode;\n /** Function to render main content for each panel */\n layoutContent: (id: number) => ReactNode;\n /** URL to navigate to when returning/exiting */\n returnUrl?: string | number;\n /** Callback function when user clicks return/exit button */\n onReturn?: () => void;\n /** Optional navigation function for back navigation */\n onNavigateBack?: (url: string) => void;\n /** Custom tabs component to render in the header */\n tabsComponent?: React.ElementType;\n}\n\n/**\n * Comparison component for side-by-side comparison of multiple items\n * Supports 1, 2, or 3 column layouts with drag-and-drop reordering\n */\nconst Comparison = (props: ComparisonProps) => {\n const { \n headerTabConfig,\n title,\n layoutItems,\n setLayoutItems,\n layoutHeader,\n layoutContent,\n returnUrl,\n onReturn,\n onNavigateBack,\n tabsComponent,\n } = props;\n\n return (\n <ComparisonProvider\n headerTabConfig={headerTabConfig}\n title={title}\n layoutItems={layoutItems}\n setLayoutItems={setLayoutItems}\n layoutHeader={layoutHeader}\n layoutContent={layoutContent}\n returnUrl={returnUrl}\n onReturn={onReturn}\n >\n <div className='h-full flex flex-col'>\n <Header onNavigateBack={onNavigateBack} tabsComponent={tabsComponent} />\n <GridLayout />\n </div>\n </ComparisonProvider>\n );\n};\n\nexport default Comparison;\n\n\n\n","const isDarkMode = () => document.documentElement.classList.contains('dark');\n\nconst badgeStyle = `\n padding: 2px 8px;\n border-radius: 6px;\n border: 1px solid var(--color-primary-500);\n background: ${isDarkMode() ? 'var(--color-primary-900)' : 'var(--color-primary-50)'};\n font-family: Inter;\n font-size: 14px;\n font-style: normal;\n font-weight: 500;\n line-height: 20px;\n color: var(--color-primary-500);\n cursor: pointer;\n`;\n\n/**\n * Converts {{variable}} syntax to styled pill marks\n */\nexport const convertToPills = (str: string): string => {\n if (typeof str !== 'string') return String(str);\n\n let convertedStr = str;\n\n // Clean up any existing HTML tags\n convertedStr = convertedStr.replace(/<span[^>]*>([^<]+)<\\/span>/g, '$1');\n convertedStr = convertedStr.replace(/<p[^>]*>([^<]+)<\\/p>/g, '$1');\n\n // Find all {{...}} patterns\n const regex = /{{[^}]+}}/g;\n const matches = convertedStr.match(regex);\n\n if (matches?.length) {\n convertedStr = matches.reduce((acc, curr) => {\n // Extract the content between {{ and }}\n const content = curr.slice(2, -2).trim();\n\n return acc.replace(curr, `<mark contenteditable=\"false\" style=\"${badgeStyle}\" data-value=\"${content}\">${content}</mark>`);\n }, convertedStr);\n }\n\n return convertedStr;\n};\n\n/**\n * Converts pill marks back to {{variable}} syntax\n */\nexport const convertFromPills = (str: string): string => {\n if (typeof str !== 'string') return String(str);\n\n let convertedStr = str;\n\n // Clean up common HTML entities and tags\n convertedStr = convertedStr.replace(/&nbsp;/g, ' ');\n convertedStr = convertedStr.replace(/<span[^>]*>([^<]+)<\\/span>/g, '$1');\n convertedStr = convertedStr.replace(/<p[^>]*>([^<]+)<\\/p>/g, '$1');\n convertedStr = convertedStr.replace(/&lt;/g, '<');\n convertedStr = convertedStr.replace(/&gt;/g, '>');\n\n // Convert mark tags back to {{}} syntax\n const regex = /<mark\\s+contenteditable=\"false\"\\s+style=\"[^\"]+\"\\s+data-value=\"([^\"]+)\">([^<]+)<\\/mark>/g;\n const matches = convertedStr.match(regex);\n\n if (matches?.length) {\n convertedStr = matches.reduce((acc, curr) => {\n const value = curr.match(/data-value=\"([^\"]+)\"/)?.[1] || '';\n return acc.replace(curr, `{{${value}}}`);\n }, convertedStr);\n }\n\n if (!convertedStr.trim()) {\n return '';\n }\n\n if (convertedStr === '<br>') {\n return '';\n }\n\n return convertedStr;\n};\n\n/**\n * Gets the current cursor position in the contenteditable element\n */\nexport const getCursorPosition = (): number => {\n const selection = window.getSelection();\n if (!selection || selection.rangeCount === 0) return 0;\n\n const range = selection.getRangeAt(0);\n return range.startOffset;\n};\n\n/**\n * Sets the cursor position in a contenteditable element\n */\nexport const setCursorPosition = (element: HTMLElement, position: number): void => {\n const setPosition = (node: Node, pos: number): number => {\n if (node.nodeType === 3) {\n // Text node\n if (node.textContent && node.textContent.length >= pos) {\n const range = document.createRange();\n const selection = window.getSelection();\n range.setStart(node, pos);\n range.collapse(true);\n selection?.removeAllRanges();\n selection?.addRange(range);\n return -1;\n } else {\n return pos - (node.textContent?.length || 0);\n }\n } else {\n // Element node\n for (const childNode of Array.from(node.childNodes)) {\n pos = setPosition(childNode, pos);\n if (pos === -1) return -1;\n }\n return pos;\n }\n };\n\n setPosition(element, position);\n};\n\n/**\n * Gets the text content before the cursor, useful for detecting {{ trigger\n */\nexport const getTextBeforeCursor = (): string => {\n const selection = window.getSelection();\n if (!selection || selection.rangeCount === 0) return '';\n\n const range = selection.getRangeAt(0);\n const clonedRange = range.cloneRange();\n\n // Get the parent contenteditable element\n let container = range.startContainer;\n while (container && container.nodeType !== 1) {\n container = container.parentNode as Node;\n }\n\n if (!container) return '';\n\n clonedRange.selectNodeContents(container);\n clonedRange.setEnd(range.startContainer, range.startOffset);\n\n return clonedRange.toString();\n};\n\n/**\n * Gets cursor coordinates for positioning the suggestion dropdown\n */\nexport const getCursorCoordinates = (): { x: number; y: number } => {\n const selection = window.getSelection();\n if (!selection || selection.rangeCount === 0) {\n return { x: 0, y: 0 };\n }\n\n const range = selection.getRangeAt(0);\n const rects = range.getClientRects();\n const rect = rects[0];\n\n if (!rect) {\n return { x: 0, y: 0 };\n }\n\n return {\n x: rect.left,\n y: rect.top + rect.height,\n };\n};\n\n/**\n * Inserts text at the current cursor position\n */\nexport const insertTextAtCursor = (text: string): void => {\n const selection = window.getSelection();\n if (!selection || selection.rangeCount === 0) return;\n\n const range = selection.getRangeAt(0);\n range.deleteContents();\n\n const textNode = document.createTextNode(text);\n range.insertNode(textNode);\n\n // Move cursor to end of inserted text\n range.setStartAfter(textNode);\n range.collapse(true);\n selection.removeAllRanges();\n selection.addRange(range);\n};\n\n\n\n","import { Instance as PopperInstance, createPopper } from '@popperjs/core';\nimport cn from 'classnames';\nimport React, { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport ContentEditable, { ContentEditableEvent } from 'react-contenteditable';\nimport { createPortal } from 'react-dom';\nimport { VisibilityOffOutlined, VisibilityOutlined } from '@mui/icons-material';\n\nimport { Typography } from '../../data-display/typography/Typography';\nimport IconButton from '../../button/IconButton';\nimport Tooltip from '../../tooltip/Tooltip';\nimport { Required } from '../../icons/Required';\nimport { HelpIcon } from '../../icons/HelpIcon';\nimport { useOutsideClick } from '../../../hooks/useOutsideClick';\nimport { convertFromPills, convertToPills, getTextBeforeCursor } from './utils';\n\nexport interface FormulaInputProps {\n /** Current value of the input */\n value: string;\n /** Callback when value changes */\n onChange: (value: string) => void;\n /** Callback when input receives focus */\n onFocus?: () => void;\n /** Callback when input loses focus */\n onBlur?: () => void;\n /** Label for the input field */\n label?: string;\n /** Unique identifier for the input */\n id: string;\n /** Whether the field is required */\n required?: boolean;\n /** Tooltip text displayed next to the label */\n tooltip?: string;\n /** Placeholder text */\n placeholder?: string;\n /** Whether the input is disabled */\n disabled?: boolean;\n /** Error message to display */\n errorMessage?: string;\n /** Width of the input */\n width?: string;\n /** List of suggestions for autocomplete */\n suggestions?: string[];\n /** Whether to show the raw value instead of pills */\n showRawValue?: boolean;\n}\n\n/**\n * FormulaInput component for entering formulas with variable suggestions\n * Variables are displayed as pills and can be inserted using @ trigger\n */\nconst FormulaInput: React.FC<FormulaInputProps> = ({\n value = '',\n onChange,\n onFocus,\n onBlur,\n label,\n id,\n required: isRequired,\n tooltip,\n placeholder,\n disabled,\n errorMessage,\n width = '100%',\n suggestions = [],\n showRawValue: showRawValueProp = false,\n}) => {\n const contentRef = useRef<HTMLElement & { isFocused?: boolean }>(null);\n const inputWrapperRef = useRef<HTMLDivElement>(null);\n const suggestionMenuRef = useRef<HTMLDivElement>(null);\n const suggestionRefs = useRef<(HTMLDivElement | null)[]>([]);\n const popperInstanceRef = useRef<PopperInstance | null>(null);\n const [showSuggestions, setShowSuggestions] = useState(false);\n const [searchTerm, setSearchTerm] = useState('');\n const [selectedIndex, setSelectedIndex] = useState(0);\n const [showRawValue, setShowRawValue] = useState(showRawValueProp);\n\n // Use refs to track current state for event handlers\n const showSuggestionsRef = useRef(showSuggestions);\n const filteredSuggestionsRef = useRef<string[]>([]);\n const selectedIndexRef = useRef(selectedIndex);\n const valueRef = useRef(value);\n\n // Keep refs in sync with state\n useEffect(() => {\n showSuggestionsRef.current = showSuggestions;\n }, [showSuggestions]);\n\n useEffect(() => {\n selectedIndexRef.current = selectedIndex;\n }, [selectedIndex]);\n\n useEffect(() => {\n valueRef.current = value;\n }, [value]);\n\n // Close suggestions when clicking outside\n useOutsideClick({\n ref: suggestionMenuRef,\n handler: () => {\n if (showSuggestions) {\n setShowSuggestions(false);\n }\n },\n });\n\n // Filter suggestions based on search term\n const filteredSuggestions = useMemo(() => {\n if (!searchTerm) return suggestions;\n\n const lowerSearchTerm = searchTerm.toLowerCase();\n return suggestions.filter((suggestion) => suggestion.toLowerCase().includes(lowerSearchTerm));\n }, [suggestions, searchTerm]);\n\n // Keep filtered suggestions ref in sync\n useEffect(() => {\n filteredSuggestionsRef.current = filteredSuggestions;\n }, [filteredSuggestions]);\n\n // Reset selected index when filtered suggestions change\n useEffect(() => {\n setSelectedIndex(0);\n }, [filteredSuggestions]);\n\n // Scroll selected suggestion into view\n useEffect(() => {\n if (showSuggestions && suggestionRefs.current[selectedIndex]) {\n suggestionRefs.current[selectedIndex]?.scrollIntoView({\n block: 'nearest',\n behavior: 'smooth',\n });\n }\n }, [selectedIndex, showSuggestions]);\n\n // Setup Popper for dynamic positioning\n useEffect(() => {\n if (showSuggestions && inputWrapperRef.current && suggestionMenuRef.current) {\n // Create popper instance with auto placement\n popperInstanceRef.current = createPopper(inputWrapperRef.current, suggestionMenuRef.current, {\n placement: 'bottom-start',\n strategy: 'fixed',\n modifiers: [\n {\n name: 'flip',\n options: {\n fallbackPlacements: ['top-start', 'bottom-start'],\n },\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: 'viewport',\n padding: 8,\n },\n },\n {\n name: 'offset',\n options: {\n offset: [0, 4],\n },\n },\n ],\n });\n\n return () => {\n if (popperInstanceRef.current) {\n popperInstanceRef.current.destroy();\n popperInstanceRef.current = null;\n }\n };\n }\n }, [showSuggestions]);\n\n const handleChange = useCallback(\n (event: ContentEditableEvent) => {\n const rawValue = convertFromPills(event.target.value);\n onChange(rawValue);\n\n // Check if user typed @ (trigger for suggestions)\n const textBeforeCursor = getTextBeforeCursor();\n const lastAtSymbol = textBeforeCursor.lastIndexOf('@');\n\n if (lastAtSymbol !== -1) {\n // Get text after the @ symbol\n const textAfterAt = textBeforeCursor.slice(lastAtSymbol + 1);\n\n // Check if there's a space after @, which would end the suggestion context\n const hasSpace = textAfterAt.includes(' ');\n\n if (!hasSpace) {\n // We're in suggestion mode - show suggestions filtered by text after @\n setSearchTerm(textAfterAt);\n setShowSuggestions(true);\n } else {\n setShowSuggestions(false);\n }\n } else {\n setShowSuggestions(false);\n }\n },\n [onChange],\n );\n\n const handleFocus = useCallback(() => {\n if (contentRef.current) {\n contentRef.current.isFocused = true;\n }\n onFocus?.();\n }, [onFocus]);\n\n const handleBlur = useCallback(\n (event: React.FocusEvent) => {\n if (contentRef.current) {\n contentRef.current.isFocused = false;\n }\n\n // Check if the blur is due to clicking on a suggestion\n const relatedTarget = event.relatedTarget as HTMLElement;\n if (relatedTarget && suggestionMenuRef.current?.contains(relatedTarget)) {\n // Don't close suggestions if clicking on a suggestion\n return;\n }\n\n // Delay closing suggestions to allow click events to register\n setTimeout(() => {\n setShowSuggestions(false);\n }, 200);\n onBlur?.();\n },\n [onBlur],\n );\n\n const insertSuggestion = useCallback(\n (suggestion: string) => {\n if (!contentRef.current) return;\n\n // IMPORTANT: Use the value prop (not innerText) to preserve existing {{}} syntax\n // innerText only shows display text and loses the {{}} markers from pills\n const currentValue = valueRef.current;\n\n // Find the last occurrence of @ (trigger symbol) in the raw value\n const lastAtSymbol = currentValue.lastIndexOf('@');\n\n if (lastAtSymbol !== -1) {\n // Find where the @ trigger ends (space or end of string)\n const afterAt = currentValue.slice(lastAtSymbol + 1);\n const spaceIndex = afterAt.search(/\\s/);\n\n let endPosition: number;\n if (spaceIndex === -1) {\n // No space found, the incomplete variable goes to the end\n endPosition = currentValue.length;\n } else {\n // Space found, replace up to the space\n endPosition = lastAtSymbol + 1 + spaceIndex;\n }\n\n // Build the new value preserving all existing {{}} syntax\n // Replace @searchTerm with {{suggestion}}\n const beforeAt = currentValue.slice(0, lastAtSymbol);\n const afterCursor = currentValue.slice(endPosition);\n const newValue = `${beforeAt}{{${suggestion}}}${afterCursor}`;\n\n // Update through onChange\n onChange(newValue);\n\n // Close suggestions\n setShowSuggestions(false);\n setSearchTerm('');\n\n // Refocus the input after React updates\n setTimeout(() => {\n contentRef.current?.focus();\n }, 0);\n }\n },\n [onChange],\n );\n\n const handleKeyDown = useCallback(\n (event: React.KeyboardEvent) => {\n // Use refs to get the latest state values to avoid stale closures\n const isShowingSuggestions = showSuggestionsRef.current;\n const currentFilteredSuggestions = filteredSuggestionsRef.current;\n const currentSelectedIndex = selectedIndexRef.current;\n\n // Always prevent Enter key to avoid creating new lines/divs\n if (event.key === 'Enter') {\n event.preventDefault();\n event.stopPropagation();\n\n // If suggestions are showing, select the current suggestion\n if (isShowingSuggestions && currentFilteredSuggestions.length > 0 && currentFilteredSuggestions[currentSelectedIndex]) {\n insertSuggestion(currentFilteredSuggestions[currentSelectedIndex]);\n }\n return;\n }\n\n // When suggestions are visible, intercept navigation keys immediately\n if (isShowingSuggestions && currentFilteredSuggestions.length > 0) {\n const { key } = event;\n\n // Prevent default for all navigation keys when suggestions are shown\n if (['ArrowDown', 'ArrowUp', 'Escape', 'Tab'].includes(key)) {\n event.preventDefault();\n event.stopPropagation();\n\n switch (key) {\n case 'ArrowDown':\n setSelectedIndex((prev) => (prev < currentFilteredSuggestions.length - 1 ? prev + 1 : prev));\n break;\n case 'ArrowUp':\n setSelectedIndex((prev) => (prev > 0 ? prev - 1 : 0));\n break;\n case 'Escape':\n setShowSuggestions(false);\n break;\n case 'Tab':\n if (currentFilteredSuggestions[currentSelectedIndex]) {\n insertSuggestion(currentFilteredSuggestions[currentSelectedIndex]);\n }\n break;\n }\n }\n }\n },\n [insertSuggestion],\n );\n\n const handlePaste = useCallback((event: React.ClipboardEvent<HTMLDivElement>) => {\n event.preventDefault();\n const text = event.clipboardData.getData('text/plain');\n document.execCommand('insertText', false, text);\n }, []);\n\n const displayValue = useMemo(() => {\n if (showRawValue) {\n return value;\n }\n return convertToPills(value);\n }, [value, showRawValue]);\n\n return (\n <div className='w-full'>\n {label && (\n <div className='text-xs font-medium text-gray-600 inline-flex items-center gap-1 font-inter text-left whitespace-nowrap flex-wrap'>\n <Typography variant='medium' size='extra-small' appearance='subtitle'>\n {label}\n {isRequired && label ? <Required /> : null}\n </Typography>\n {tooltip && (\n <Tooltip placement='top' title={tooltip}>\n <div className='cursor-pointer'>\n <HelpIcon />\n </div>\n </Tooltip>\n )}\n </div>\n )}\n\n <div className='relative' ref={inputWrapperRef}>\n {!value?.trim() ? (\n <div\n className='absolute top-0 left-0 w-full h-full text-gray-400 flex items-center cursor-text px-3 z-50'\n onClick={() => contentRef.current?.focus()}\n >\n <Typography size='extra-small' variant='medium'>\n {placeholder}\n </Typography>\n </div>\n ) : null}\n\n <div className='relative'>\n <ContentEditable\n innerRef={contentRef}\n className={cn(\n 'min-h-[42px] rounded-lg p-2.5',\n 'text-sm font-inter block font-medium border text-gray-900 dark:text-white whitespace-normal break-words text-left',\n disabled ? 'bg-neutral-100 dark:bg-black-800' : 'bg-white dark:bg-black-800',\n !disabled && 'pr-[60px]',\n errorMessage ? '!border-error-500' : 'border-gray-300 dark:border-black-600 focus:ring-blue-500 focus:border-blue-500',\n 'cursor-text',\n )}\n style={{\n width: width,\n wordBreak: 'break-word',\n }}\n html={displayValue}\n onChange={!disabled ? handleChange : () => null}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onKeyDownCapture={handleKeyDown}\n onKeyDown={handleKeyDown}\n onPaste={handlePaste}\n disabled={disabled}\n id={id}\n />\n\n {!disabled && (\n <div className='absolute right-0 top-0 bottom-0 flex items-center align-middle justify-center p-3 gap-2'>\n <IconButton tooltip={showRawValue ? 'Show Formatted' : 'Show Raw Value'} variant='ghost' onClick={() => setShowRawValue(!showRawValue)}>\n {showRawValue ? <VisibilityOutlined sx={{ fontSize: 18 }} /> : <VisibilityOffOutlined sx={{ fontSize: 18 }} />}\n </IconButton>\n </div>\n )}\n </div>\n\n {showSuggestions &&\n filteredSuggestions.length > 0 &&\n createPortal(\n <div\n ref={suggestionMenuRef}\n className='z-[3000] bg-white dark:bg-black-800 border border-gray-300 dark:border-black-600 rounded-lg shadow-lg max-h-60 overflow-y-auto min-w-[200px]'\n onMouseDown={(e) => {\n // Prevent blur when clicking on suggestions\n e.preventDefault();\n }}\n >\n {filteredSuggestions.map((suggestion, index) => (\n <div\n key={suggestion}\n ref={(el) => (suggestionRefs.current[index] = el)}\n className={cn(\n 'px-3 py-2 cursor-pointer text-sm font-inter',\n index === selectedIndex\n ? 'bg-primary-100 dark:bg-primary-900 text-primary-700 dark:text-primary-300'\n : 'hover:bg-gray-100 dark:hover:bg-black-700 text-gray-900 dark:text-white',\n )}\n onClick={() => insertSuggestion(suggestion)}\n onMouseEnter={() => setSelectedIndex(index)}\n >\n {suggestion}\n </div>\n ))}\n </div>,\n document.body,\n )}\n </div>\n\n {errorMessage && (\n <div className='pt-1'>\n <Typography className='text-error-500' size='extra-small' variant='medium' appearance='custom'>\n {errorMessage}\n </Typography>\n </div>\n )}\n </div>\n );\n};\n\nexport default React.memo(FormulaInput);\n\n\n\n"],"names":["hasOwn","classNames","classes","arg","appendClass","parseValue","key","value","newClass","module","Typography","children","variant","size","onClick","className","highlight","appearance","style","getFontSize","getFontColor","getFontWeight","typographyClasses","combinedClasses","InputField","forwardRef","id","onChange","onKeyDown","message","messageType","defaultValue","disabled","max","min","required","label","type","placeholder","fieldSuffix","wrapperClassNames","inputClassNames","inputStyle","inputProps","ref","suffixRef","useRef","suffixWidth","setSuffixWidth","useState","getInputBorderClasses","getMessageTypographyClass","inputId","useEffect","resizeObserver","entries","suffixElement","calculatedWidth","initialWidth","getDynamicInputStyle","cn","jsx","jsxs","e","AnimatePresence","motion","HelpIcon","props","CloseIcon","fill","COLORS","getHashColor","str","hash","i","c","getLighterColor","hex","percent","r","g","b","getDarkerColor","getPredefinedColorStyle","colorKey","isDarkMode","getCustomColorStyle","color","baseColor","getDefaultStyle","getSizeClasses","getCloseIconColor","colorStyle","isHashColor","Tag","onMouseDown","truncate","icon","removable","onRemove","onUpload","acceptsUpload","ariaLabel","useMemo","getColorStyle","handleFileUpload","event","file","handleKeyDown","closeIconColor","Label","labels","uniqueLabels","uniqueObjects","item","obj","Fragment","index","detectOS","platform","userAgent","useOS","isMacOS","SHORTCUT_KEY_MAP","mapShortcutKey","os","currentOS","mapping","mapShortcutKeys","keys","useShortcutKeys","Tooltip","title","hideTooltip","delayShow","whiteSpace","placement","shortcuts","getArrowProps","getTooltipProps","setTooltipRef","setTriggerRef","visible","usePopperTooltip","showTooltip","setShowTooltip","timer","setTimer","mappedShortcuts","newTimer","createPortal","AIStarIcon","fillSecondary","AIExtractedIndicator","position","Required","isConditional","EyeIcon","EyeOffIcon","RevertIcon","BaseInputField","errorMessage","successMessage","isRequiredConditional","bg","tags","isPasswordField","setIsPasswordVisible","inputRef","tooltip","suffixIcon","revertBackValue","originalCase","textSize","isAiExtracted","isGTN","gtnName","inputClassName","labelClassName","onBlur","isLiveField","isClearable","riskDetails","isRiskAnalysisOpen","RiskDetailsCard","onAddGTNToDocument","t","useTranslation","showPassword","setShowPassword","isHovered","setIsHovered","handleAddGTNToDocument","AntTooltip","BoltOutlined","NoteAddOutlined","createElement","TextField","rows","maxLength","noBorder","textareaProps","textareaId","characterCount","isNearLimit","isOverLimit","getTextareaBorderClasses","TextAreaField","row","IconButton","tooltipPlacement","noborder","baseClasses","variantClasses","disabledClasses","MasterDataInputField","masterDataName","masterDataColumnName","masterDataFormula","masterDataFilters","reference","primaryColorShades","setDisableActions","showDeprecatedFieldWarning","MasterDataModal","parseMasterDataFormula","inputValue","setInputValue","showMasterDataModal","setShowMasterDataModal","suggestion","setSuggestion","masterDataRowValue","setMasterDataRowValue","combinedRef","toggleMasterDataModal","currentRef","handleSetMasterData","masterDataValue","masterDataRow","_value","handleClear","getClassName","borderColor","placeholderColor","backgroundColor","resolveMasterDataValue","CloseRounded","TableChartRounded","removeDuplicates","arr","self","prepareOptions","options","opt","LoadingIndicator","hasExistingData","Skeleton","SelectPopupRender","showSelectAll","mode","searchValue","handleSelectAll","isAllSelected","menu","isLoading","SelectField","valueProp","selectOptions","onInputChange","_gtnName","onSearch","debounceTimeout","filterOption","onScroll","allowClear","autoClearSearchValue","fullOpacityLabel","showAllTags","customTagRender","_inputStyles","AddToDocumentIcon","UserAvatar","isHoveredState","setIsHoveredState","selectRef","isDropdownOpen","setIsDropdownOpen","setSearchValue","debounceFetcher","debounce","handleChange","_newValue","selectedOptions","containerElement","valueToStore","changeEvent","pilotEvent","_values","currentValues","option","optionValue","currentValue","triggerSubmit","useCallback","formEl","submitEvent","submitBtn","form","tagRender","renderProps","tagLabel","tagValue","onClose","tagColor","handleOnInputChange","AntDSelect","input","optionLabel","optionColor","rest","fullname","firstName","lastName","omittedValues","l","Checkbox","checked","isChecked","wrapperClassName","checkboxClassName","labelPosition","checkboxProps","isCheckboxChecked","getVariantClasses","getLabelSize","checkboxElement","AntdCheckbox","labelElement","CheckboxComponent","ColorPicker","onColorChange","showValue","valueFormat","helpText","colorValue","getBorderClasses","hexToRgb","result","hexToHsl","h","s","d","getFormattedValue","newColor","CreatableSelectField","loading","multiSelect","selectedValues","newValue","_actionMeta","pilotChangeEvent","styleProps","baseStyles","state","IndicatorsContainer","ChevronLeftRounded","SingleValue","_props","hasSelectedValues","isFieldClearable","CreatableSelect","useOutsideClick","handler","enabled","handleClickOutside","DEFAULT_PRIMARY_SHADES","CustomizableSelectField","hideLabel","optionConfig","menuConfig","isMulti","isDark","menuRef","selectedOption","setSelectedOption","searchKey","setSearchKey","MenuList","menuProps","filteredOptions","components","isSelected","selected","SingleValueComponent","innerProps","isDisabled","getValue","MultiValueComponent","data","customFilterOption","_option","Select","CURRENCIES","CURRENCY_SYMBOLS","classValue","SearchIcon","width","height","SearchBar","classValues","onFocusText","autoComplete","searchRef","hasNavigation","autoFocus","searchConfig","hideSearchIcon","allowAStarSearch","isFocused","setIsFocused","focusedPlaceHolder","setFocusedPlaceHolder","searchCount","searchPointer","setSearchPointer","handleFocus","handleBlur","DebounceInput","TOGGLE_LABEL_DIRECTION","getToggleClassNames","withIcon","sizeClasses","translateClasses","CheckIcon","Toggle","hideStatus","labelDirection","statusText","stopClickPropagation","_variant","renderAiExtractedIndicator","renderLabels","renderRequired","renderTooltip","renderLiveFieldIcon","renderGTNAddButton","isLabelDirectionTop","isLabelDirectionLeft","isLabelDirectionRight","defaultRenderRequired","parseJson","json","randomHexString","length","characters","escapeRegExp","string","filterTopLevelPaths","paths","sorted","path","parent","buildQueryParams","params","queryParams","totalParam","ShortcutKbd","isMac","displayKeys","CheckSmall","OptionButton","text","notVisible","hideHoverEffect","leadingIcon","suffixRecord","stopPropagation","onToggle","truncateText","showTick","isFlowAvailable","handleClick","highlightSubstring","search","escapedSearch","regex","handleToggle","isDestructiveAction","keyword","isButtonDisabled","getFlagComponent","countryCode","isHovering","flagCode","FlagComponent","Flags","getFlagComponentSm","getFlagComponentRectangle","getFlagComponentRectangleSm","getFlagComponentRectangleMd","CurrencyInputField","simpleMode","inputFieldClassName","allowMultiCurrency","currencyCode","onBlurProp","isRecording","isPlaying","filteredCurrencyOptions","setFilteredCurrencyOptions","searchKeyForCurrency","setSearchKeyForCurrency","selectedCurrency","setSelectedCurrency","formatCurrency","targetValue","number","handleOnChange","numericValue","element","onFocus","currencyOptions","Dropdown","trigger","DateRange2","minDate","maxDate","startPlaceholder","endPlaceholder","formatDateForInput","date","year","month","day","parseInputDate","handleStartDateChange","newStartDate","handleEndDateChange","newEndDate","formatMinMaxDate","this","n","u","a","o","f","$","y","M","m","v","D","p","S","_","w","O","k","RangePicker","DatePicker","KEYBOARD_KEYS","generateShortUUID","useEventListener","eventName","savedHandler","eventListener","DateRange","onCalendarChange","startDate","endDate","dateFormat","shouldPopOnParent","customGetPopupContainer","maxDateRange","open","onOpenChange","renderAsIconButton","iconButtonClassName","iconClassName","isOpen","setIsOpen","pickerRef","parseDate","dayjs","START_ID","END_ID","handleIconClick","disabledDate","current","start","end","BiCalendar","dates","BsDash","Y","L","utc","customParseFormat","weekday","localeData","UNIVERSAL_DATE_FORMAT","UNIVERSAL_DATETIME_FORMAT","ISO_DATE_FORMAT","ISO_DATETIME_FORMAT","FLEXIBLE_DATE_FORMATS","FLEXIBLE_DATETIME_FORMATS","tryParseFlexibleDate","dateStr","withTime","formats","format","parsed","defaultParsed","DateTimeField","showTime","needConfirm","allowTimezoneConversion","formatDateForGTN","tempDate","setTempDate","lastUpdatedValue","setLastUpdatedValue","finalDateFormat","ID","datePickerRef","setDateIfValid","formattedValue","handleHidePickerFooter","pickerFooter","handleDateChange","isoFormat","utcDate","handlePilotPlayback","playbackValue","parsedDate","pickerInput","pickerInstance","dropdown","DebounceInputField","DynamicDataInputField","dataSource","dataKey","DynamicDataModal","showDynamicDataModal","setShowDynamicDataModal","toggleDynamicDataModal","Button","status","badge","tooltipShortcuts","theme","appearanceStyle","outlineStyle","ghostStyle","dashedStyle","filledStyle","cssStyle","dashedCssStyle","getKbdClasses","renderSpinner","CgSpinner","ChevronRightRounded","useModalContainer","primaryContainerId","fallbackContainerId","maxRetries","retryDelay","container","setContainer","retryCount","timeoutId","findContainer","containerId","local","inParent","searchForContainer","found","Modal","mask","onlyBody","bodySpacing","headerRightContent","parentContainer","zIndex","asForm","onSubmit","showCloseButton","noPadding","autoContainer","header","Wrapper","getTargetContainer","targetContainer","isScopedToContainer","AntDModal","modal","FUNC_ERROR_TEXT","NAN","symbolTag","reTrim","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","freeGlobal","global","freeSelf","root","objectProto","objectToString","nativeMax","nativeMin","now","func","wait","lastArgs","lastThis","maxWait","timerId","lastCallTime","lastInvokeTime","leading","maxing","trailing","toNumber","isObject","invokeFunc","time","args","thisArg","leadingEdge","timerExpired","remainingWait","timeSinceLastCall","timeSinceLastInvoke","shouldInvoke","trailingEdge","cancel","flush","debounced","isInvoking","isObjectLike","isSymbol","other","isBinary","lodash_debounce","systemMessages","unit","usePythonSyntax","monacoEditor","currentEditorModel","code","setCode","enable","checkSyntaxAPI","formatCodeAPI","pythonError","setPythonError","pythonLoading","setPythonLoading","replacePlaceholders","codeString","originalValues","match","p1","offset","beforeMatch","afterMatch","isInsideDoubleQuotes","isInsideSingleQuotes","restorePlaceholders","modifiedCode","handleCheckSyntax","error","markers","markerError","handleFormatCode","response","formattedCode","toast","debouncedCheckSyntax","MonacoManager","loader","editors","disposables","disposable","monacoManager","COUNTRY_CODES","countryNameFromCode","DataType","DataTypeBadgeClass","DataTypeOptions","JsonGridViewerContext","createContext","JsonGridViewerContextProvider","useJsonGridViewerContext","context","useContext","getDataType","useCheckboxSelection","selectedPaths","setSelectedPaths","getAllChildPaths","parentPath","sourceData","childPaths","collectChildPaths","currentPath","newPath","handleCheckboxChange","fullPath","isExpandable","pathsToAdd","pathsToRemove","isPathSelected","JsonValueDisplay","dataType","selectedPathForEdit","setSelectedPathForEdit","parsedValue","val","KeyboardArrowRightIcon","isExpanded","ContentCopyIcon","MoreVertIcon","NestedJsonGrid","isArray","expandedKeys","setExpandedKeys","allExpanded","setSelectedPathModification","isEditMode","handleCopy","getAllExpandablePaths","collectPaths","toggleExpand","prev","handleNestedChange","isOutermost","renderNestedValue","isFirst","isLast","JsonGridCore","jsonData","setJsonData","pathParts","newJsonData","target","finalKey","ConfirmationModal","content","onConfirm","cancelText","confirmText","footer","DropdownArrowIcon","TrashIcon","FloatingBar","show","isFlowDashboard","actionItems","selectedItemsCount","deleteConfig","showActionBg","showDropdown","setShowDropdown","showButtons","setShowButtons","containerRef","actionContainerRef","observer","containerWidth","deleteButtonConfig","dropDownItems","button","CopyIcon","DuplicateIcon","JsonGridBulkFloatingBar","selectedTopLevelPaths","handleDelete","handleDuplicate","showConfirmationModal","setShowConfirmationModal","getEmptyValue","AddKeyModal","isVisible","setKey","setType","setValue","rawTextValue","setRawTextValue","setErrorMessage","handleAddKey","selectedPathModification","handleOnClose","getFinalValue","JsonGridViewer","isFullScreen","toggleAll","setIsAddKeyModalOpen","isAddKeyModalOpen","setError","setSelectedTopLevelPaths","produce","draft","lastKey","idx","copy","copyKey","counter","copiedValues","uniqueKey","Tabs","tabs","activeTab","onTabClick","tabIcons","iconClass","CodeIcon","fontSize","GridOnOutlinedIcon","AddIcon","ContentPasteRoundedIcon","DarkModeOutlinedIcon","FileDownloadRoundedIcon","FullscreenRoundedIcon","KeyboardDoubleArrowDownIcon","KeyboardDoubleArrowUpIcon","LightModeOutlinedIcon","SubjectOutlinedIcon","TabIcons","TABS","CodeEditor","withFullScreen","withTheme","language","isShowCopy","isShowDownload","setIsDisableSave","withJsonGrid","externalEditorTheme","externalSetEditorTheme","externalTheme","editorRef","internalEditorTheme","setInternalEditorTheme","internalTheme","setInternalTheme","editorTheme","setEditorTheme","newTheme","setAllExpanded","setCurrentEditorModel","monacoInstance","setMonacoInstance","isMonacoReady","setIsMonacoReady","monaco","activeMonacoEditor","handleFormatPythonCode","fullScreenHandle","useFullScreenHandle","setActiveTab","isLanguageJson","toggleFocusMode","handleEditorDidMount","editor","initializeEditor","model","handleFormatJsonCode","parsedJson","formattedJson","formatAction","hoverClass","handleCopyCode","line","_error","getConfig","sanitizeFilename","filename","fallback","handleDownloadCode","blob","url","anchor","extension","sanitizedExtension","FullScreen","JsonGrid","CodeiumEditor","saveText","handleClose","handleSave","handleChangeJSONData","x","EditIcon","DynamicDataInput","toggleModal","handleSetData","dynamicData","PercentageInputField","withDollarSign","useIsomorphicLayoutEffect","useLayoutEffect","targetElement","CustomScrollbar","React","adjustWithScreen","renderViewClassName","fullHeight","scrollBarRef","setHeight","useImperativeHandle","Scrollbars","MdInput","minRows","textareaClassName","previewClassName","defaultMode","modeProp","internalMode","setInternalMode","isModalOpen","setIsModalOpen","lineCount","effectiveMode","isControlled","ReactMarkdown","remarkGfm","OpenInFull","Dragger","Upload","DEFAULT_MAX_SIZE","MultiFileUpload","getFile","description","defaultFile","acceptedFiles","asBase64","toFileServer","setFileUploading","fileUploading","uploadToDocServer","multiple","getRealFileName","onDeleteProp","maxSize","fileUploadService","selectedFile","setSelectedFile","fileList","setFileList","setBorderColor","hover","setHover","uploadedFileData","setUploadedFileData","handleUploadFilesToServer","_file","formData","uploadProps","uploadedFiles","sizeMB","currentFile","resolve","reader","results","onDelete","shortenFileName","fileName","BsFiletypePdf","DescriptionRounded","FiTrash2","FiDownload","roundedIconNames","AllIcons","name","mergedIconNames","formatIconName","iconName","IconPickerContent","selectedIcon","setOpen","searchTerm","setSearchTerm","filteredIcons","Grid","columnIndex","rowIndex","itemIndex","IconRenderer","sx","Icon","IconPickerBase","handleClearIcon","Popover","triggerNode","IconPicker","Suspense","StatusColorMapping","getStatusClasses","Badge","isRounded","capitalize","formatText","txt","getOutlineClasses","getFilledClasses","getAppearanceClasses","HelmetTitle","Card","Drawer","resizable","closable","styles","getContainer","isResizingRef","drawerWidth","setDrawerWidth","handleMousemove","offsetRight","onMouseUp","AntDrawer","FloatingElementWrapper","showAsModal","formatBooleanValue","formattedNumber","formatDate","config","formatString","relative","skipTimezone","onlyTime","diffInSeconds","timeFormat","shouldIncludeTime","isISODateString","LabelValue","items","isModified","isChanged","isHighlighted","deletedValue","highlightColor","isSearchActive","originalValue","showDiff","deltaChange","collapseValue","setCollapseValue","isOpenMasterDataModal","setIsOpenMasterDataModal","masterdataModalInfo","setMasterdataModalInfo","handleCollapse","handleMasterDataClick","handleMasterDataClose","displayValue","isISODate","dateValue","getTypographySize","getHighlightClasses","tag","ArrowUpwardRounded","ArrowDownwardRounded","CheckCircle","InfoAlert","ArchivedIcon","InfoCircleIcon","statusColors","statusIcons","RemoveCircleOutline","PlayArrowRounded","MdOutlinePending","DoDisturbAltRoundedIcon","Pending","DoDisturbRounded","Timer","Banner","additionalChildren","ExpandedComponent","executionId","setIsExpanded","MdKeyboardArrowUp","MdKeyboardArrowDown","DragHandle","findParentContainer","setPortalTarget","el","retryEl","handleFullScreenToggle","resizableRef","fullScreen","useSidebarEffects","onResize","minWidth","shouldRenderSidebar","setShouldRenderSidebar","portalTarget","frame","SidebarContent","containerClassName","widthStyle","heightStyle","motionVariants","maxResizableWidth","handleKey","onDragEnd","Resizable","ResizableSidebar","defaultSize","ignoreParentContainerHeight","isMainSidebarExpanded","mainSidebarExpandedWidth","mainSidebarCollapsedWidth","navbarHeight","mainSidebarWidth","isRight","sidebarContent","ReactDOM","PdfViewer","pdfUrl","iframeClassName","showLoading","loadingComponent","errorComponent","onError","onLoad","allowFullScreen","setIsLoading","hasError","setHasError","handleLoad","handleError","defaultLoadingComponent","defaultErrorComponent","iframe","Popper","component","toggleMenu","noSpacing","triggerClassName","showArrow","disableOutsideClick","buttonRef","buttonRect","menuRect","viewport","top","left","handleTriggerClick","getArrowClasses","getArrowPosition","SuccessIcon","ErrorIcon","WarningIcon","InfoIcon","InProgressIcon","getIconByType","toastContext","CloseButton","closeToast","Toast","autoClose","hideProgressBar","newestOnTop","closeOnClick","pauseOnFocusLoss","draggable","pauseOnHover","rtl","ToastContainer","Slide","defaultClassName","toastifyToast","toastId","useTheme","setTheme","updateEditorTheme","LaxIcon","ComingSoonIcon","CheckSmallIcon","AccessDeniedModal","InProgress","containerClass","UnsavedChangesModal","onSaveAndExit","onDiscardChanges","onCancel","discardText","ErrorModal","okText","DeleteModal","onSuccessClose","sectionName","suffix","onAgreementDelete","from","additionalText","deleteConfirm","onDeleteConfirm","onConfirmDelete","isMod","isBooleanButton","deleteText","yesText","noText","removeText","handleCancel","DiffViewer","oldText","newText","diffType","showLineNumbers","wordWrap","segmentClassName","addedClassName","removedClassName","unchangedClassName","ignoreCase","ignoreWhitespace","maxWidth","onDiffCalculated","diffs","changes","diffLines","diffChars","diffWords","getThemeClasses","getContainerClasses","renderWithLineNumbers","lineNumber","part","lines","numbers","num","renderDiffContent","themeClasses","stats","added","acc","removed","unchanged","InlineDiffHighlighter","Radio","onSelect","ButtonThreeDots","buttonProps","BsThreeDotsVertical","ButtonGroup","useScrollToTop","deps","clsx","CLASS_PART_SEPARATOR","createClassGroupUtils","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","classParts","getGroupRecursive","getGroupIdForArbitraryProperty","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","classGroupFromNextClassPart","classRest","validator","arbitraryPropertyRegex","arbitraryPropertyClassName","property","classGroups","processClassesRecursively","classGroup","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","currentClassPartObject","pathPart","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","MODIFIER_SEPARATOR","MODIFIER_SEPARATOR_LENGTH","createParseClassName","prefix","experimentalParseClassName","parseClassName","modifiers","bracketDepth","parenDepth","modifierStart","postfixModifierPosition","currentCharacter","baseClassNameWithImportantModifier","baseClassName","stripImportantModifier","hasImportantModifier","maybePostfixModifierPosition","fullPrefix","parseClassNameOriginal","createSortModifiers","orderSensitiveModifiers","modifier","sortedModifiers","unsortedModifiers","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","getClassGroupId","getConflictingClassGroupIds","sortModifiers","classGroupsInConflict","originalClassName","isExternal","variantModifier","modifierId","classId","conflictGroups","group","twJoin","argument","resolvedValue","toValue","mix","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","fromTheme","themeGetter","arbitraryValueRegex","arbitraryVariableRegex","fractionRegex","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isFraction","isNumber","isInteger","isPercent","isTshirtSize","isAny","isLengthOnly","isNever","isShadow","isImage","isAnyNonArbitrary","isArbitraryValue","isArbitraryVariable","isArbitrarySize","getIsArbitraryValue","isLabelSize","isArbitraryLength","isLabelLength","isArbitraryNumber","isLabelNumber","isArbitraryPosition","isLabelPosition","isArbitraryImage","isLabelImage","isArbitraryShadow","isLabelShadow","isArbitraryVariableLength","getIsArbitraryVariable","isArbitraryVariableFamilyName","isLabelFamilyName","isArbitraryVariablePosition","isArbitraryVariableSize","isArbitraryVariableImage","isArbitraryVariableShadow","testLabel","testValue","shouldMatchNoLabel","getDefaultConfig","themeColor","themeFont","themeText","themeFontWeight","themeTracking","themeLeading","themeBreakpoint","themeContainer","themeSpacing","themeRadius","themeShadow","themeInsetShadow","themeTextShadow","themeDropShadow","themeBlur","themePerspective","themeAspect","themeEase","themeAnimate","scaleBreak","scalePosition","scalePositionWithArbitrary","scaleOverflow","scaleOverscroll","scaleUnambiguousSpacing","scaleInset","scaleGridTemplateColsRows","scaleGridColRowStartAndEnd","scaleGridColRowStartOrEnd","scaleGridAutoColsRows","scaleAlignPrimaryAxis","scaleAlignSecondaryAxis","scaleMargin","scaleSizing","scaleColor","scaleBgPosition","scaleBgRepeat","scaleBgSize","scaleGradientStopPosition","scaleRadius","scaleBorderWidth","scaleLineStyle","scaleBlendMode","scaleMaskImagePosition","scaleBlur","scaleRotate","scaleScale","scaleSkew","scaleTranslate","twMerge","inputs","MODES","OPEN_DURATION_MS","PageContainer","displayId","noBanner","contentClassName","onBannerClick","scrollToTopOnMount","currentMode","isBannerVisible","bannerConfig","Helmet","meta","_Helmet","ComponentLoader","LightLogo","DarkLogo","LogoLoader","BreadCrumbItem","isLastItem","getTextColor","ArrowBreadCums","BreadCrumb","renderLink","itemRefs","truncateStates","setTruncateStates","updateTruncateStates","newTruncateStates","textElement","renderBreadcrumbItem","breadcrumbItemElement","Divider","dividerClasses","active","AntdSkeleton","VARIANTS","DEFAULT_SKELETON_WIDTH","DEFAULT_GRID_CONTAINER_WIDTH","DEFAULT_HEIGHT","DEFAULT_DIRECTION_GRID_COLS","DEFAULT_JUSTIFY_ALIGNMENT","DEFAULT_ALIGN_ITEMS_ALIGNMENT","DEFAULT_GRID_STYLE","DEFAULT_GAP","DEFAULT_REPEAT_COUNT","DEFAULT_VARIANT","DEFAULT_SKELETON_GRADIENT_WIDTH","DIRECTION","generateMargin","marginProp","directionProp","margin","direction","marginDetect","generateGridArea","itemsWithRepeat","skeletons","repeatCount","setOpacity","viewIndex","withOpacity","rowsLength","useIsDarkMode","setIsDark","checkDarkMode","mutations","mutation","SkeletonGrid","grid","CONSTANTS.DEFAULT_VARIANT","generateSkeletons","gridKey","skeleton","generateGrid","CONSTANTS.DEFAULT_GRID_CONTAINER_WIDTH","CONSTANTS.DEFAULT_SKELETON_WIDTH","CONSTANTS.DEFAULT_HEIGHT","CONSTANTS.VARIANTS","CONSTANTS.DEFAULT_SKELETON_GRADIENT_WIDTH","indexLevel","key_level","gridGap","CONSTANTS.DEFAULT_GAP","hasChildren","hasSkeletons","CONSTANTS.DEFAULT_REPEAT_COUNT","gridStyle","CONSTANTS.DEFAULT_GRID_STYLE","CONSTANTS.DEFAULT_ALIGN_ITEMS_ALIGNMENT","CONSTANTS.DEFAULT_JUSTIFY_ALIGNMENT","gridItem","gridItemIndex","SkeletonGrid$1","ProfileSettingsLoader","gridArea","ProfileSettingsLoader$1","AgreementHeaderLoader","AgreementHeaderLoader$1","ClauseDetailsLoader","ClauseDetailsLoader$1","SingleLineLoader","repeat","lineHeight","SingleLineLoader$1","FlowNodesLoader","FlowNodesLoader$1","pulseAnimation","keyframes","AnimatedSkeleton","styled","TaskCardLoader","circleSize","gap","avatarSize","TaskCardLoader$1","AppItemLoader","AppItemLoader$1","NotificationListLoader","count","NotificationListLoader$1","EventDetailsLoader","EventDetailsLoader$1","ExecutionNoteLoader","ExecutionNoteLoader$1","SKELETON_COUNT","LogItemSkeleton","DoubleLineLoader","DoubleLineLoader$1","InstalledAppItemLoader","InstalledAppItemLoader$1","PilotDetailsSkeleton","TutorialsSkeleton","RecentlyAddedAppsSkeleton","cardVariants","SingleAppCardSkeleton","isPagination","CalendarExportItemLoader","CalendarExportItemLoader$1","Text","LText","RText","emptyTag","LeftIcon","role","RightIcon","tagName","noop","TextWithStrike","formattedText","setFormattedText","splitText","parts","DynamicItemsCellComponent","getLabel","getColor","getId","moreTagColor","useHashColor","calculateTagWidth","calculateVisibleItems","availableWidth","moreTagWidth","visibleCount","usedWidth","tagWidth","gapWidth","visibleItemsCount","displayItems","hasMoreItems","tooltipContent","renderItemTags","itemList","keyPrefix","DynamicItemsCell","memo","formatNumber","precision","numValue","preciseValue","NumberInputField","numberFormat","Accordion","toggle","hoveringIndex","viewOnly","onTitleClick","subTitle","noSpace","isDraggable","sortableConfig","headerClass","additionalHeader","mainClass","childrenClass","MdOutlineDragIndicator","MdEdit","ChevronLeft","Stepper","steps","currentStep","showIndex","disableOneMore","isMainSideBarOpen","isAuthoringOpen","stepsRef","visibleStepCounts","setVisibleStepCounts","leftMostStep","setLeftMostStep","rightMostStep","setRightMostStep","leftTooltip","setLeftTooltip","rightTooltip","setRightTooltip","getLabelDescriptionPosition","handleClientWidth","moreWidth","stepTitleWidth","stepWidth","newRightTooltip","step","rightCount","mid","remainingStepsFromRight","leftCount","newLeftTooltip","stepDetails","hideLine","Lock","AiOutlineCheck","ConfirmPopUp","onOk","async","isVisibleOutside","ableToConfirmByChildren","setIsVisible","closeByIcon","onOkHandler","ConfirmPopUp$1","CardHeaderView","to","hasUserPermissions","viewMoreText","LinkComponent","handleLinkMouseDown","handleLinkClick","handleLinkTouchStart","linkClassName","CardMain","noScrollbar","TabContent","drawerConfig","noBorderTopContent","Close","DraggableContainer","onDragStart","onDragOver","sensors","useSensors","useSensor","MouseSensor","TouchSensor","DndContext","rectIntersection","DragOverlay","dropAnimation","defaultDropAnimation","DndDragOverlay","NAVBAR_HEIGHT","EXPANDED_SIDEBAR_WIDTH","CLOSED_SIDEBAR_WIDTH","Sidebar","Sidebar$1","bottom","right","auto","basePlacements","clippingParents","popper","variationPlacements","placements","beforeRead","read","afterRead","beforeMain","main","afterMain","beforeWrite","write","afterWrite","modifierPhases","getNodeName","getWindow","node","ownerDocument","isElement","OwnElement","isHTMLElement","isShadowRoot","applyStyles","_ref","attributes","effect","_ref2","initialStyles","styleProperties","attribute","applyStyles$1","getBasePlacement","round","getUAString","uaData","isLayoutViewport","getBoundingClientRect","includeScale","isFixedStrategy","clientRect","scaleX","scaleY","visualViewport","addVisualOffsets","getLayoutRect","contains","child","rootNode","next","getComputedStyle","isTableElement","getDocumentElement","getParentNode","getTrueOffsetParent","getContainingBlock","isFirefox","isIE","elementCss","currentNode","css","getOffsetParent","window","offsetParent","getMainAxisFromPlacement","within","mathMax","mathMin","withinMaxClamp","getFreshSideObject","mergePaddingObject","paddingObject","expandToHashMap","hashMap","toPaddingObject","padding","arrow","_state$modifiersData$","arrowElement","popperOffsets","basePlacement","axis","isVertical","len","arrowRect","minProp","maxProp","endDiff","startDiff","arrowOffsetParent","clientSize","centerToReference","center","axisProp","_options$element","arrow$1","getVariation","unsetSides","roundOffsetsByDPR","win","dpr","mapToStyles","_Object$assign2","popperRect","variation","offsets","gpuAcceleration","adaptive","roundOffsets","isFixed","_offsets$x","_offsets$y","_ref3","hasX","hasY","sideX","sideY","heightProp","widthProp","offsetY","offsetX","commonStyles","_ref4","_Object$assign","computeStyles","_ref5","_options$gpuAccelerat","_options$adaptive","_options$roundOffsets","computeStyles$1","passive","instance","_options$scroll","scroll","_options$resize","resize","scrollParents","scrollParent","eventListeners","getOppositePlacement","matched","getOppositeVariationPlacement","getWindowScroll","scrollLeft","scrollTop","getWindowScrollBarX","getViewportRect","strategy","html","layoutViewport","getDocumentRect","_element$ownerDocumen","winScroll","body","isScrollParent","_getComputedStyle","overflow","overflowX","overflowY","getScrollParent","listScrollParents","list","isBody","updatedList","rectToClientRect","rect","getInnerBoundingClientRect","getClientRectFromMixedType","clippingParent","getClippingParents","canEscapeClipping","clipperElement","getClippingRect","boundary","rootBoundary","mainClippingParents","firstClippingParent","clippingRect","accRect","computeOffsets","commonX","commonY","mainAxis","detectOverflow","_options","_options$placement","_options$strategy","_options$boundary","_options$rootBoundary","_options$elementConte","elementContext","_options$altBoundary","altBoundary","_options$padding","altContext","clippingClientRect","referenceClientRect","popperClientRect","elementClientRect","overflowOffsets","offsetData","multiply","computeAutoPlacement","flipVariations","_options$allowedAutoP","allowedAutoPlacements","allPlacements","allowedPlacements","overflows","getExpandedFallbackPlacements","oppositePlacement","flip","_options$mainAxis","checkMainAxis","_options$altAxis","checkAltAxis","specifiedFallbackPlacements","_options$flipVariatio","preferredPlacement","isBasePlacement","fallbackPlacements","referenceRect","checksMap","makeFallbackChecks","firstFittingPlacement","_basePlacement","isStartVariation","mainVariationSide","altVariationSide","checks","check","numberOfChecks","_loop","_i","fittingPlacement","_ret","flip$1","getSideOffsets","preventedOffsets","isAnySideFullyClipped","side","hide","referenceOverflow","popperAltOverflow","referenceClippingOffsets","popperEscapeOffsets","isReferenceHidden","hasPopperEscaped","hide$1","distanceAndSkiddingToXY","rects","invertDistance","skidding","distance","_options$offset","_data$state$placement","offset$1","popperOffsets$1","getAltAxis","preventOverflow","_options$tether","tether","_options$tetherOffset","tetherOffset","altAxis","tetherOffsetValue","normalizedTetherOffsetValue","offsetModifierState","_offsetModifierState$","mainSide","altSide","additive","minLen","maxLen","arrowPaddingObject","arrowPaddingMin","arrowPaddingMax","arrowLen","minOffset","maxOffset","clientOffset","offsetModifierValue","tetherMin","tetherMax","preventedOffset","_offsetModifierState$2","_mainSide","_altSide","_offset","_len","_min","_max","isOriginSide","_offsetModifierValue","_tetherMin","_tetherMax","_preventedOffset","preventOverflow$1","getHTMLElementScroll","getNodeScroll","isElementScaled","getCompositeRect","elementOrVirtualElement","isOffsetParentAnElement","offsetParentIsScaled","documentElement","order","map","visited","sort","requires","dep","depModifier","orderModifiers","orderedModifiers","phase","fn","pending","mergeByName","merged","existing","DEFAULT_OPTIONS","areValidElements","_key","popperGenerator","generatorOptions","_generatorOptions","_generatorOptions$def","defaultModifiers","_generatorOptions$def2","defaultOptions","effectCleanupFns","isDestroyed","setOptionsAction","cleanupModifierEffects","runModifierEffects","_state$elements","_state$orderedModifie","_state$orderedModifie2","_ref$options","cleanupFn","noopFn","createPopper","MapShim","getIndex","entry","class_1","callback","ctx","_a","isBrowser","global$1","requestAnimationFrame$1","trailingTimeout","throttle","delay","leadingCall","trailingCall","resolvePending","proxy","timeoutCallback","timeStamp","REFRESH_DELAY","transitionKeys","mutationObserverSupported","ResizeObserverController","observers","changesDetected","activeObservers","_b","propertyName","isReflowProperty","defineConfigurable","getWindowOf","ownerGlobal","emptyRect","createRectInit","toFloat","getBordersSize","positions","getPaddings","paddings","positions_1","getSVGContentRect","bbox","getHTMLElementContentRect","clientWidth","clientHeight","horizPad","vertPad","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","getContentRect","createReadOnlyRect","Constr","ResizeObservation","ResizeObserverEntry","rectInit","contentRect","ResizeObserverSPI","controller","callbackCtx","observations","_this","observation","ResizeObserver","method","UserAvatarPopper","anchorEl","popperRef","popperInstance","updatePopper","formatRelativeDate","dateString","diffMs","diffSeconds","diffMinutes","diffHours","diffDays","StatusInfoRow","isActive","lastViewedOn","timeText","isRecent","textColor","getInitials","nameArray","PersonIcon","useDynamicPosition","triggerRef","dropdownRef","setPosition","calculatePosition","triggerRect","dropdownRect","viewportWidth","spaceBelow","spaceAbove","spaceRight","spaceLeft","vertical","horizontal","InfoRow","email","profilePic","hoverSize","enablePopper","userId","statusIndicator","userDetails","isFetchingUserDetails","authToken","onHover","GroupsOutlined","setVisible","imageLoaded","setImageLoaded","avatarSizeClass","moreTagRef","dropdownPosition","showMore","handleShowMore","handleHideMore","imageCacheRef","statusColor","indicatorSizes","img","token","timerRef","cachedSrc","handleMouseEnter","handleMouseLeave","popperContent","team","WarningRoundedIcon","NameInitialLogo","initials","rounded","UserProfilePic","username","isInvalid","setIsInvalid","TrashOutlineIcon","DownloadIcon","FilePdfIcon","FileDescriptionIcon","SpinnerIcon","FileUpload","hideSelectedFile","clickToUploadText","dragAndDropText","allFiles","base64String","getFileNameFromString","resolvedName","LottieAnimation","animationData","loop","autoplay","testId","animation","lottie","APP_DATA_TYPES","APP_DATA_TYPES_OPTIONS","BG_COLORS","BG_COLORS_HOVER","BG_COLORS_DARK","BG_COLORS_DARK_HOVER","RuleIcon","FormatListIcon","CalendarIcon","MailIcon","AttachMoneyIcon","ScheduleIcon","SubjectIcon","LocalOfferIcon","DatabaseIcon","AutomationIcon","NumbersIcon","LinkIcon","DataTypeIcon","dataTypeOption","isHover","setIsHover","getIcon","getBackgroundColor","DefaultNoDataIcon","NoDataFound","additionaltext","NotFoundIcon","PageNotFound","homePath","backToHomeText","subtitle","Link","BackgroundEffectLight","BackgroundEffectDark","NoLinkIcon","WarningInfoIcon","UserNotFound","warningTitle","warningDescription","warningIcon","EmptyEvent","EmptyBarChartData","EmptyCountWidgetData","EmptyCardListChartData","EmptyPieChatData","EmptyDonutChartData","EmptyTimelineChartData","EmptyTableWidgetData","EmptyContentChartData","NoDataFoundWidgets","widgetType","iconSrc","ContextMenu","xPos","yPos","PermissionWrapper","hasPermission","VpnKeyOffOutlined","arrayMoveMutate","array","startIndex","arrayMove","arrayMoveModule","Header","onOptionChange","onSaveOption","onDeleteAll","hasChoices","showDeleteAllConfirmation","setShowDeleteAllConfirmation","Item","onDeleteItem","userCanManage","SortableItem","SortableKnob","useSortOrderUpdate","rawIds","prevIndex","nextIndex","nextIds","FieldOptions","choices","onChoicesUpdate","handleSortEnd","SortableList","DEFAULT_DURATION","DEFAULT_COLOR","LinearProgressBar","stopAt","fromColor","toColor","duration","setAnimatedDisplayValue","visualProgress","setVisualProgress","animationFrameRef","startTime","startDisplayValue","endDisplayValue","startVisualValue","endVisualValue","animate","currentTime","elapsed","progress","currentDisplayValue","currentVisualValue","getBackgroundStyle","DEFAULT_SIZE","DEFAULT_STROKE","CircularProgressBar","strokeWidth","radius","circumference","animatedValue","setAnimatedValue","startValue","endValue","animatedProgress","COMPARISON_LAYOUT","DEFAULT_COMPARISON_LAYOUTS","safeIsNaN","isEqual","first","second","areInputsEqual","newInputs","lastInputs","memoizeOne","resultFn","memoized","newArgs","lastResult","gridLayoutItems","layoutItems","filterVisibleItems","selectedValue","getCurrentSelectValue","selectValue","parseToIds","ids","ComparisonContext","ComparisonProvider","headerTabConfig","setLayoutItems","layoutHeader","layoutContent","returnUrl","onReturn","layout","setLayout","_id","_layoutItems","currentLayouts","closeSiblingIndex","prevLayout","hideLayoutItem","prevItems","prevItem","ExitIcon","LayoutOneIcon","LayoutTwoIcon","LayoutThreeIcon","Handle","listeners","Handle$1","NoAvailableContent","isDragging","setNodeRef","transform","transition","isOver","setActivatorNodeRef","over","useSortable","CSS","SortableItem$1","GridLayout","PointerSensor","KeyboardSensor","sortableKeyboardCoordinates","pointerWithin","prevState","oldIndex","newIndex","SortableContext","GridLayout$1","LAYOUTS","onNavigateBack","TabsComponent","goBack","Header$1","Comparison","tabsComponent","badgeStyle","convertToPills","convertedStr","matches","curr","convertFromPills","getCursorPosition","selection","setCursorPosition","pos","range","childNode","getTextBeforeCursor","clonedRange","getCursorCoordinates","insertTextAtCursor","textNode","FormulaInput","isRequired","suggestions","showRawValueProp","contentRef","inputWrapperRef","suggestionMenuRef","suggestionRefs","popperInstanceRef","showSuggestions","setShowSuggestions","selectedIndex","setSelectedIndex","showRawValue","setShowRawValue","showSuggestionsRef","filteredSuggestionsRef","selectedIndexRef","valueRef","filteredSuggestions","lowerSearchTerm","rawValue","textBeforeCursor","lastAtSymbol","textAfterAt","relatedTarget","insertSuggestion","spaceIndex","endPosition","beforeAt","afterCursor","isShowingSuggestions","currentFilteredSuggestions","currentSelectedIndex","handlePaste","ContentEditable","VisibilityOutlined","VisibilityOffOutlined","FormulaInput$1"],"mappings":"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CL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EACL,KAAK;AAAA,EA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","x_google_ignoreList":[0,38,40,41,42,43,50,110,111,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,208,209,210,211,239,247]}