@lax-wp/design-system 0.15.1 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"TextAreaField.cjs.js","sources":["../../../../src/components/forms/text-area-field/TextAreaField.tsx"],"sourcesContent":["/* 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 { AIStarIcon } from \"../../icons/AIStarIcon\";\nimport { InputLabel } from \"../shared/InputLabel\";\nimport Tooltip from \"../../tooltip/Tooltip\";\nimport {\n getConfidenceScoreBadgeClass,\n getConfidenceScoreBadgeColor,\n getConfidenceScoreBadgeFill,\n getConfidenceScoreBadgeTextColor,\n shouldShowConfidenceScore,\n} from \"../../../utils/confidenceScoreUtils\";\n\n/**\n * Confidence score type\n */\nexport type ConfidenceScoreType = \"low\" | \"medium\" | \"high\";\n\nexport type SourceMetaBBox = {\n b: number;\n l: number;\n r: number;\n t: number;\n};\n\nexport type SourceMetaItem = {\n bbox: SourceMetaBBox;\n confidence_score?: number;\n is_primary?: boolean;\n match_score?: number;\n match_type?: string;\n page_height: number;\n page_width: number;\n source_page: number;\n source_text?: string;\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 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 /** Confidence percentage shown as a badge */\n confidenceScore?: number;\n /** Confidence classification for badge styling */\n confidenceType?: ConfidenceScoreType;\n /** Optional tooltip content for confidence badge */\n confidenceTooltip?: React.ReactNode;\n /** Source meta for confidence score */\n sourceMeta?: SourceMetaItem[];\n /** Handler fired when confidence score badge is clicked */\n onConfidenceScoreClick?: (sourceMeta: SourceMetaItem[]) => void;\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 /** Optional extra content in the label row (e.g. actions, badges) */\n labelExtra?: React.ReactNode;\n /** Input surface style: `'modified'` — Warning colors; `'deleted'` — Error colors, text #475467; `'success'` — Success colors, text #101828. */\n inputEmphasis?: \"default\" | \"modified\" | \"deleted\" | \"success\";\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 confidenceScore,\n confidenceType = \"high\",\n confidenceTooltip,\n sourceMeta = [],\n onConfidenceScoreClick,\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 labelExtra,\n inputEmphasis = \"default\",\n ...textareaProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n const [isHovered, setIsHovered] = useState(false);\n const showRiskSkin = Boolean(isRiskAnalysisOpen && riskDetails?.color);\n const emphasisModifiedSkin = inputEmphasis === \"modified\" && !errorMessage && !showRiskSkin;\n const emphasisDeletedSkin = inputEmphasis === \"deleted\" && !errorMessage && !showRiskSkin;\n const emphasisSuccessSkin = inputEmphasis === \"success\" && !errorMessage && !showRiskSkin;\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n const form = (e.target as HTMLTextAreaElement).closest(\"form\");\n if (form) {\n const submitButton = form.querySelector<HTMLButtonElement>('button[type=\"submit\"]');\n if (submitButton) {\n submitButton.click();\n } else {\n form.requestSubmit();\n }\n }\n }\n textareaProps.onKeyDown?.(e);\n };\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=\"grid w-full grid-cols-[minmax(0,1fr)_auto] items-start gap-x-1\">\n <div className=\"inline-flex min-w-0 items-center gap-1 flex-wrap\">\n <InputLabel label={label || \"\"} required={required || false} isRequiredConditional={isRequiredConditional || false} />\n {isLiveField && (\n <BoltOutlined\n sx={{\n fontSize: 16,\n color: \"var(--color-primary-600)\",\n rotate: \"15deg\",\n }}\n />\n )}\n {isAiExtracted && !shouldShowConfidenceScore(confidenceScore) && <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 className=\"w-icon-sm h-icon-sm\" />\n </div>\n </AntTooltip>\n )}\n {labelExtra}\n </div>\n\n <div className=\"flex items-center gap-1 justify-self-end\">\n {(shouldShowConfidenceScore(confidenceScore) && confidenceType) ? (\n <Tooltip\n placement=\"top-end\"\n title={confidenceTooltip ?? \"\"}\n hideTooltip={confidenceTooltip === undefined || confidenceTooltip === null}\n className=\"cursor-pointer\"\n >\n <div\n className={cn(\n \"inline-flex min-w-[50px] items-center gap-1 rounded-md px-1 py-0.5\",\n getConfidenceScoreBadgeClass(confidenceType)\n )}\n onClick={() => onConfidenceScoreClick?.(sourceMeta)}\n >\n <AIStarIcon\n size={12}\n fill={getConfidenceScoreBadgeColor(confidenceType)}\n fillSecondary={getConfidenceScoreBadgeFill(confidenceType)}\n />\n <span className={cn(\"text-xs font-medium leading-4\", getConfidenceScoreBadgeTextColor(confidenceType))}>\n {confidenceScore}%\n </span>\n </div>\n </Tooltip>\n ) : null}\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 </div>\n </label>\n <textarea\n {...textareaProps}\n onKeyDown={handleKeyDown}\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 focus:outline-none focus:ring-0 block w-full py-2.5 px-3 font-inter font-medium text-sm 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 && !emphasisModifiedSkin && !emphasisDeletedSkin && !emphasisSuccessSkin && !showRiskSkin,\n \"text-neutral-400 dark:text-neutral-500\": disabled && !emphasisDeletedSkin && !emphasisSuccessSkin,\n \"text-neutral-900 dark:text-neutral-50\": !disabled && !emphasisDeletedSkin && !emphasisSuccessSkin,\n \"border-none\": noBorder,\n \"focus:border-none\": noBorder,\n \"placeholder:text-neutral-400 dark:placeholder:text-black-400\": disabled,\n \"placeholder:text-neutral-400 dark:placeholder:text-black-300\": !disabled,\n \"focus:border-[var(--color-primary-600)] dark:focus:border-[var(--color-primary-400)] focus:shadow-[0_0_0_1.5px_var(--color-primary-100)] dark:focus:shadow-[0_0_0_1.5px_var(--color-primary-950)] bg-white dark:bg-black-600\": !emphasisModifiedSkin && !emphasisDeletedSkin && !emphasisSuccessSkin && !showRiskSkin && !errorMessage,\n },\n emphasisDeletedSkin && \"border-[var(--Error-200,#FECACA)] bg-[var(--Error-50,#FEF2F2)] !text-[#475467] focus:border-[var(--Error-200,#FECACA)] focus:shadow-[0_0_0_2px_rgba(254,202,202,0.45)] dark:border-[var(--Error-200,#FECACA)] dark:bg-[var(--Error-50,#FEF2F2)] dark:!text-[#475467] disabled:!opacity-100 disabled:!bg-[var(--Error-50,#FEF2F2)]\",\n emphasisModifiedSkin && \"border-[var(--Warning-200,#FEDF89)] bg-[var(--Warning-50,#FFFAEB)] text-neutral-900 dark:text-black-100 focus:border-[var(--Warning-200,#FEDF89)] focus:shadow-[0_0_0_2px_rgba(254,223,137,0.45)] dark:border-[var(--Warning-200,#FEDF89)] dark:bg-[var(--Warning-50,#FFFAEB)] disabled:!opacity-100 disabled:!bg-[var(--Warning-50,#FFFAEB)]\",\n emphasisSuccessSkin && \"border-[var(--Success-200,#BBF7D0)] bg-[var(--Success-50,#F0FDF4)] !text-[#101828] focus:border-[var(--Success-200,#BBF7D0)] focus:shadow-[0_0_0_2px_rgba(187,247,208,0.45)] dark:border-[var(--Success-200,#BBF7D0)] dark:bg-[var(--Success-50,#F0FDF4)] dark:!text-[#101828] disabled:!opacity-100 disabled:!bg-[var(--Success-50,#F0FDF4)]\",\n className,\n showRiskSkin && `!bg-${riskDetails!.color}-50 border-${riskDetails!.color}-300`\n )}\n style={\n showRiskSkin && 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"],"names":["TextAreaField","forwardRef","label","placeholder","value","onChange","row","errorMessage","defaultValue","required","isRequiredConditional","tags","disabled","className","inputRef","maxLength","tooltip","originalCase","isAiExtracted","confidenceScore","confidenceType","confidenceTooltip","sourceMeta","onConfidenceScoreClick","isGTN","gtnName","noBorder","id","inputStyle","labelClassName","isLiveField","onBlur","riskDetails","isRiskAnalysisOpen","RiskDetailsCard","onAddGTNToDocument","labelExtra","inputEmphasis","textareaProps","ref","t","useTranslation","isHovered","setIsHovered","useState","showRiskSkin","emphasisModifiedSkin","emphasisDeletedSkin","emphasisSuccessSkin","handleKeyDown","e","form","submitButton","handleAddGTNToDocument","jsxs","cn","jsx","InputLabel","BoltOutlined","shouldShowConfidenceScore","AIExtractedIndicator","Label","AntTooltip","HelpIcon","Tooltip","getConfidenceScoreBadgeClass","AIStarIcon","getConfidenceScoreBadgeColor","getConfidenceScoreBadgeFill","getConfidenceScoreBadgeTextColor","NoteAddOutlined","Typography"],"mappings":"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"}
1
+ {"version":3,"file":"TextAreaField.cjs.js","sources":["../../../../src/components/forms/text-area-field/TextAreaField.tsx"],"sourcesContent":["/* 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 { AIStarIcon } from \"../../icons/AIStarIcon\";\nimport { InputLabel } from \"../shared/InputLabel\";\nimport Tooltip from \"../../tooltip/Tooltip\";\nimport {\n getConfidenceScoreBadgeClass,\n getConfidenceScoreBadgeColor,\n getConfidenceScoreBadgeFill,\n getConfidenceScoreBadgeTextColor,\n shouldShowConfidenceScore,\n} from \"../../../utils/confidenceScoreUtils\";\n\n/**\n * Confidence score type\n */\nexport type ConfidenceScoreType = \"low\" | \"medium\" | \"high\";\n\nexport type SourceMetaBBox = {\n b: number;\n l: number;\n r: number;\n t: number;\n};\n\nexport type SourceMetaItem = {\n bbox: SourceMetaBBox;\n confidence_score?: number;\n is_primary?: boolean;\n match_score?: number;\n match_type?: string;\n page_height: number;\n page_width: number;\n source_page: number;\n source_text?: string;\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 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 /** Confidence percentage shown as a badge */\n confidenceScore?: number;\n /** Confidence classification for badge styling */\n confidenceType?: ConfidenceScoreType;\n /** Optional tooltip content for confidence badge */\n confidenceTooltip?: React.ReactNode;\n /** Source meta for confidence score */\n sourceMeta?: SourceMetaItem[];\n /** Handler fired when confidence score badge is clicked */\n onConfidenceScoreClick?: (sourceMeta: SourceMetaItem[]) => void;\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 /** Optional extra content in the label row (e.g. actions, badges) */\n labelExtra?: React.ReactNode;\n /** Input surface style: `'modified'` — Warning colors; `'deleted'` — Error colors, text #475467; `'success'` — Success colors, text #101828. */\n inputEmphasis?: \"default\" | \"modified\" | \"deleted\" | \"success\";\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 confidenceScore,\n confidenceType = \"high\",\n confidenceTooltip,\n sourceMeta = [],\n onConfidenceScoreClick,\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 labelExtra,\n inputEmphasis = \"default\",\n ...textareaProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n const [isHovered, setIsHovered] = useState(false);\n const showRiskSkin = Boolean(isRiskAnalysisOpen && riskDetails?.color);\n const emphasisModifiedSkin = inputEmphasis === \"modified\" && !errorMessage && !showRiskSkin;\n const emphasisDeletedSkin = inputEmphasis === \"deleted\" && !errorMessage && !showRiskSkin;\n const emphasisSuccessSkin = inputEmphasis === \"success\" && !errorMessage && !showRiskSkin;\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n const form = (e.target as HTMLTextAreaElement).closest(\"form\");\n if (form) {\n const submitButton = form.querySelector<HTMLButtonElement>('button[type=\"submit\"]');\n if (submitButton) {\n submitButton.click();\n } else {\n form.requestSubmit();\n }\n }\n }\n textareaProps.onKeyDown?.(e);\n };\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=\"grid w-full grid-cols-[minmax(0,1fr)_auto] items-start gap-x-1\">\n <div className=\"inline-flex min-w-0 items-center gap-1 flex-wrap\">\n <InputLabel label={label || \"\"} required={required || false} isRequiredConditional={isRequiredConditional || false} />\n {isLiveField && (\n <BoltOutlined\n sx={{\n fontSize: 16,\n color: \"var(--color-primary-600)\",\n rotate: \"15deg\",\n }}\n />\n )}\n {isAiExtracted && !shouldShowConfidenceScore(confidenceScore) && <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 className=\"w-icon-sm h-icon-sm\" />\n </div>\n </AntTooltip>\n )}\n {labelExtra}\n </div>\n\n <div className=\"flex items-center gap-1 justify-self-end\">\n {(shouldShowConfidenceScore(confidenceScore) && confidenceType) ? (\n <Tooltip\n placement=\"top-end\"\n title={confidenceTooltip ?? \"\"}\n hideTooltip={confidenceTooltip === undefined || confidenceTooltip === null}\n className=\"cursor-pointer\"\n >\n <div\n className={cn(\n \"inline-flex min-w-[50px] items-center gap-1 rounded-md px-1 py-0.5\",\n getConfidenceScoreBadgeClass(confidenceType)\n )}\n onClick={() => onConfidenceScoreClick?.(sourceMeta)}\n >\n <AIStarIcon\n size={12}\n fill={getConfidenceScoreBadgeColor(confidenceType)}\n fillSecondary={getConfidenceScoreBadgeFill(confidenceType)}\n />\n <span className={cn(\"text-xs font-medium leading-4\", getConfidenceScoreBadgeTextColor(confidenceType))}>\n {confidenceScore}%\n </span>\n </div>\n </Tooltip>\n ) : null}\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 </div>\n </label>\n <textarea\n {...textareaProps}\n onKeyDown={handleKeyDown}\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 focus:outline-none focus:ring-0 block w-full py-2.5 px-3 font-inter font-medium text-sm 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 && !emphasisModifiedSkin && !emphasisDeletedSkin && !emphasisSuccessSkin && !showRiskSkin,\n \"text-neutral-400 dark:text-neutral-500\": disabled && !emphasisDeletedSkin && !emphasisSuccessSkin,\n \"text-neutral-900 dark:text-neutral-50\": !disabled && !emphasisDeletedSkin && !emphasisSuccessSkin,\n \"border-none\": noBorder,\n \"focus:border-none\": noBorder,\n \"placeholder:text-neutral-400 dark:placeholder:text-black-300\": true,\n \"focus:border-[var(--color-primary-600)] dark:focus:border-[var(--color-primary-400)] focus:shadow-[0_0_0_1.5px_var(--color-primary-100)] dark:focus:shadow-[0_0_0_1.5px_var(--color-primary-950)] bg-white dark:bg-black-600\": !emphasisModifiedSkin && !emphasisDeletedSkin && !emphasisSuccessSkin && !showRiskSkin && !errorMessage,\n },\n emphasisDeletedSkin && \"border-[var(--Error-200,#FECACA)] bg-[var(--Error-50,#FEF2F2)] !text-[#475467] focus:border-[var(--Error-200,#FECACA)] focus:shadow-[0_0_0_2px_rgba(254,202,202,0.45)] dark:border-[var(--Error-200,#FECACA)] dark:bg-[var(--Error-50,#FEF2F2)] dark:!text-[#475467] disabled:!opacity-100 disabled:!bg-[var(--Error-50,#FEF2F2)]\",\n emphasisModifiedSkin && \"border-[var(--Warning-200,#FEDF89)] bg-[var(--Warning-50,#FFFAEB)] text-neutral-900 dark:text-black-100 focus:border-[var(--Warning-200,#FEDF89)] focus:shadow-[0_0_0_2px_rgba(254,223,137,0.45)] dark:border-[var(--Warning-200,#FEDF89)] dark:bg-[var(--Warning-50,#FFFAEB)] disabled:!opacity-100 disabled:!bg-[var(--Warning-50,#FFFAEB)]\",\n emphasisSuccessSkin && \"border-[var(--Success-200,#BBF7D0)] bg-[var(--Success-50,#F0FDF4)] !text-[#101828] focus:border-[var(--Success-200,#BBF7D0)] focus:shadow-[0_0_0_2px_rgba(187,247,208,0.45)] dark:border-[var(--Success-200,#BBF7D0)] dark:bg-[var(--Success-50,#F0FDF4)] dark:!text-[#101828] disabled:!opacity-100 disabled:!bg-[var(--Success-50,#F0FDF4)]\",\n className,\n showRiskSkin && `!bg-${riskDetails!.color}-50 border-${riskDetails!.color}-300`\n )}\n style={\n showRiskSkin && 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"],"names":["TextAreaField","forwardRef","label","placeholder","value","onChange","row","errorMessage","defaultValue","required","isRequiredConditional","tags","disabled","className","inputRef","maxLength","tooltip","originalCase","isAiExtracted","confidenceScore","confidenceType","confidenceTooltip","sourceMeta","onConfidenceScoreClick","isGTN","gtnName","noBorder","id","inputStyle","labelClassName","isLiveField","onBlur","riskDetails","isRiskAnalysisOpen","RiskDetailsCard","onAddGTNToDocument","labelExtra","inputEmphasis","textareaProps","ref","t","useTranslation","isHovered","setIsHovered","useState","showRiskSkin","emphasisModifiedSkin","emphasisDeletedSkin","emphasisSuccessSkin","handleKeyDown","e","form","submitButton","handleAddGTNToDocument","jsxs","cn","jsx","InputLabel","BoltOutlined","shouldShowConfidenceScore","AIExtractedIndicator","Label","AntTooltip","HelpIcon","Tooltip","getConfidenceScoreBadgeClass","AIStarIcon","getConfidenceScoreBadgeColor","getConfidenceScoreBadgeFill","getConfidenceScoreBadgeTextColor","NoteAddOutlined","Typography"],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import { jsxs as o, jsx as r } from "react/jsx-runtime";
2
- import u from "../../../_virtual/index.es.js";
3
- import { forwardRef as oe, useState as te } from "react";
2
+ import m from "../../../_virtual/index.es.js";
3
+ import { forwardRef as oe, useState as ae } from "react";
4
4
  import { Tooltip as D } from "antd";
5
- import { useTranslation as ae } from "react-i18next";
5
+ import { useTranslation as te } from "react-i18next";
6
6
  import { Typography as I } from "../../data-display/typography/Typography.es.js";
7
7
  import { HelpIcon as le } from "../../icons/HelpIcon.es.js";
8
- import { Label as ne } from "../../data-display/label/Label.es.js";
9
- import { BoltOutlined as de, NoteAddOutlined as ie } from "@mui/icons-material";
8
+ import { Label as de } from "../../data-display/label/Label.es.js";
9
+ import { BoltOutlined as ne, NoteAddOutlined as ie } from "@mui/icons-material";
10
10
  import { AIExtractedIndicator as ce } from "../../icons/AIExtractedIndicator.es.js";
11
11
  import { AIStarIcon as se } from "../../icons/AIStarIcon.es.js";
12
12
  import { InputLabel as me } from "../shared/InputLabel.es.js";
@@ -16,23 +16,23 @@ const ge = oe(
16
16
  ({
17
17
  label: K,
18
18
  placeholder: W,
19
- value: d,
19
+ value: n,
20
20
  onChange: $,
21
21
  row: j = 4,
22
- errorMessage: t,
22
+ errorMessage: a,
23
23
  defaultValue: q,
24
- required: F,
24
+ required: k,
25
25
  isRequiredConditional: H = !1,
26
26
  tags: P = [],
27
- disabled: i,
27
+ disabled: f,
28
28
  className: V,
29
29
  inputRef: O,
30
- maxLength: n = void 0,
30
+ maxLength: d = void 0,
31
31
  tooltip: y = "",
32
32
  originalCase: R = !1,
33
33
  isAiExtracted: J = !1,
34
34
  confidenceScore: b,
35
- confidenceType: c = "high",
35
+ confidenceType: i = "high",
36
36
  confidenceTooltip: p,
37
37
  sourceMeta: Q = [],
38
38
  onConfidenceScoreClick: T,
@@ -44,7 +44,7 @@ const ge = oe(
44
44
  labelClassName: X,
45
45
  isLiveField: Y = !1,
46
46
  onBlur: Z,
47
- riskDetails: a,
47
+ riskDetails: t,
48
48
  isRiskAnalysisOpen: S = !1,
49
49
  RiskDetailsCard: _,
50
50
  onAddGTNToDocument: N,
@@ -52,20 +52,20 @@ const ge = oe(
52
52
  inputEmphasis: g = "default",
53
53
  ...B
54
54
  }, G) => {
55
- const { t: M } = ae(), [f, h] = te(!1), l = !!(S && a?.color), k = g === "modified" && !t && !l, s = g === "deleted" && !t && !l, m = g === "success" && !t && !l, ee = (e) => {
55
+ const { t: M } = te(), [u, h] = ae(!1), l = !!(S && t?.color), v = g === "modified" && !a && !l, c = g === "deleted" && !a && !l, s = g === "success" && !a && !l, ee = (e) => {
56
56
  if (e.key === "Enter" && !e.shiftKey) {
57
57
  e.preventDefault();
58
- const v = e.target.closest("form");
59
- if (v) {
60
- const A = v.querySelector('button[type="submit"]');
61
- A ? A.click() : v.requestSubmit();
58
+ const F = e.target.closest("form");
59
+ if (F) {
60
+ const A = F.querySelector('button[type="submit"]');
61
+ A ? A.click() : F.requestSubmit();
62
62
  }
63
63
  }
64
64
  B.onKeyDown?.(e);
65
65
  }, re = () => {
66
66
  N && N({
67
67
  key: U,
68
- value: d || ""
68
+ value: n || ""
69
69
  });
70
70
  };
71
71
  return /* @__PURE__ */ o(
@@ -73,15 +73,15 @@ const ge = oe(
73
73
  {
74
74
  ref: G,
75
75
  id: C,
76
- className: u(
76
+ className: m(
77
77
  "flex gap-0.5 relative",
78
- f && x ? "border rounded-lg border-primary-100 bg-primary-50 p-1" : ""
78
+ u && x ? "border rounded-lg border-primary-100 bg-primary-50 p-1" : ""
79
79
  ),
80
80
  onMouseEnter: () => h(!0),
81
81
  onMouseLeave: () => h(!1),
82
82
  children: [
83
- x && !f ? /* @__PURE__ */ r("div", { className: "w-1 h-1 bg-primary-600 rounded-full animate-blink mt-1.5" }) : null,
84
- /* @__PURE__ */ o("div", { className: u("w-full flex flex-col"), children: [
83
+ x && !u ? /* @__PURE__ */ r("div", { className: "w-1 h-1 bg-primary-600 rounded-full animate-blink mt-1.5" }) : null,
84
+ /* @__PURE__ */ o("div", { className: m("w-full flex flex-col"), children: [
85
85
  /* @__PURE__ */ r(
86
86
  "label",
87
87
  {
@@ -89,9 +89,9 @@ const ge = oe(
89
89
  className: `mb-1 text-xs font-medium text-gray-600 dark:text-black-300 inline-flex items-center gap-1 ${R ? "" : "capitalize"} ${X || ""}`,
90
90
  children: /* @__PURE__ */ o("div", { className: "grid w-full grid-cols-[minmax(0,1fr)_auto] items-start gap-x-1", children: [
91
91
  /* @__PURE__ */ o("div", { className: "inline-flex min-w-0 items-center gap-1 flex-wrap", children: [
92
- /* @__PURE__ */ r(me, { label: K || "", required: F || !1, isRequiredConditional: H || !1 }),
92
+ /* @__PURE__ */ r(me, { label: K || "", required: k || !1, isRequiredConditional: H || !1 }),
93
93
  Y && /* @__PURE__ */ r(
94
- de,
94
+ ne,
95
95
  {
96
96
  sx: {
97
97
  fontSize: 16,
@@ -101,7 +101,7 @@ const ge = oe(
101
101
  }
102
102
  ),
103
103
  J && !z(b) && /* @__PURE__ */ r(ce, {}),
104
- /* @__PURE__ */ r(ne, { labels: P || [] }),
104
+ /* @__PURE__ */ r(de, { labels: P || [] }),
105
105
  y && /* @__PURE__ */ r(D, { placement: "top", title: y, children: /* @__PURE__ */ r(
106
106
  "div",
107
107
  {
@@ -117,7 +117,7 @@ const ge = oe(
117
117
  L
118
118
  ] }),
119
119
  /* @__PURE__ */ o("div", { className: "flex items-center gap-1 justify-self-end", children: [
120
- z(b) && c ? /* @__PURE__ */ r(
120
+ z(b) && i ? /* @__PURE__ */ r(
121
121
  ue,
122
122
  {
123
123
  placement: "top-end",
@@ -127,9 +127,9 @@ const ge = oe(
127
127
  children: /* @__PURE__ */ o(
128
128
  "div",
129
129
  {
130
- className: u(
130
+ className: m(
131
131
  "inline-flex min-w-[50px] items-center gap-1 rounded-md px-1 py-0.5",
132
- xe(c)
132
+ xe(i)
133
133
  ),
134
134
  onClick: () => T?.(Q),
135
135
  children: [
@@ -137,11 +137,11 @@ const ge = oe(
137
137
  se,
138
138
  {
139
139
  size: 12,
140
- fill: be(c),
141
- fillSecondary: fe(c)
140
+ fill: be(i),
141
+ fillSecondary: fe(i)
142
142
  }
143
143
  ),
144
- /* @__PURE__ */ o("span", { className: u("text-xs font-medium leading-4", pe(c)), children: [
144
+ /* @__PURE__ */ o("span", { className: m("text-xs font-medium leading-4", pe(i)), children: [
145
145
  b,
146
146
  "%"
147
147
  ] })
@@ -150,7 +150,7 @@ const ge = oe(
150
150
  )
151
151
  }
152
152
  ) : null,
153
- x && f ? /* @__PURE__ */ r(
153
+ x && u ? /* @__PURE__ */ r(
154
154
  "button",
155
155
  {
156
156
  id: "btn-textarea-field-add-to-document",
@@ -178,43 +178,42 @@ const ge = oe(
178
178
  onBlur: Z,
179
179
  onChange: (e) => $(e.target.value),
180
180
  defaultValue: q,
181
- value: d,
182
- required: F,
183
- className: u(
181
+ value: n,
182
+ required: k,
183
+ className: m(
184
184
  "border rounded-lg focus:outline-none focus:ring-0 block w-full py-2.5 px-3 font-inter font-medium text-sm disabled:bg-neutral-50 dark:disabled:!bg-black-800 dark:disabled:placeholder:!text-black-400",
185
185
  {
186
- "border-red-300": t,
187
- "border-gray-300 dark:border-black-700": !t && !k && !s && !m && !l,
188
- "text-neutral-400 dark:text-neutral-500": i && !s && !m,
189
- "text-neutral-900 dark:text-neutral-50": !i && !s && !m,
186
+ "border-red-300": a,
187
+ "border-gray-300 dark:border-black-700": !a && !v && !c && !s && !l,
188
+ "text-neutral-400 dark:text-neutral-500": f && !c && !s,
189
+ "text-neutral-900 dark:text-neutral-50": !f && !c && !s,
190
190
  "border-none": w,
191
191
  "focus:border-none": w,
192
- "placeholder:text-neutral-400 dark:placeholder:text-black-400": i,
193
- "placeholder:text-neutral-400 dark:placeholder:text-black-300": !i,
194
- "focus:border-[var(--color-primary-600)] dark:focus:border-[var(--color-primary-400)] focus:shadow-[0_0_0_1.5px_var(--color-primary-100)] dark:focus:shadow-[0_0_0_1.5px_var(--color-primary-950)] bg-white dark:bg-black-600": !k && !s && !m && !l && !t
192
+ "placeholder:text-neutral-400 dark:placeholder:text-black-300": !0,
193
+ "focus:border-[var(--color-primary-600)] dark:focus:border-[var(--color-primary-400)] focus:shadow-[0_0_0_1.5px_var(--color-primary-100)] dark:focus:shadow-[0_0_0_1.5px_var(--color-primary-950)] bg-white dark:bg-black-600": !v && !c && !s && !l && !a
195
194
  },
196
- s && "border-[var(--Error-200,#FECACA)] bg-[var(--Error-50,#FEF2F2)] !text-[#475467] focus:border-[var(--Error-200,#FECACA)] focus:shadow-[0_0_0_2px_rgba(254,202,202,0.45)] dark:border-[var(--Error-200,#FECACA)] dark:bg-[var(--Error-50,#FEF2F2)] dark:!text-[#475467] disabled:!opacity-100 disabled:!bg-[var(--Error-50,#FEF2F2)]",
197
- k && "border-[var(--Warning-200,#FEDF89)] bg-[var(--Warning-50,#FFFAEB)] text-neutral-900 dark:text-black-100 focus:border-[var(--Warning-200,#FEDF89)] focus:shadow-[0_0_0_2px_rgba(254,223,137,0.45)] dark:border-[var(--Warning-200,#FEDF89)] dark:bg-[var(--Warning-50,#FFFAEB)] disabled:!opacity-100 disabled:!bg-[var(--Warning-50,#FFFAEB)]",
198
- m && "border-[var(--Success-200,#BBF7D0)] bg-[var(--Success-50,#F0FDF4)] !text-[#101828] focus:border-[var(--Success-200,#BBF7D0)] focus:shadow-[0_0_0_2px_rgba(187,247,208,0.45)] dark:border-[var(--Success-200,#BBF7D0)] dark:bg-[var(--Success-50,#F0FDF4)] dark:!text-[#101828] disabled:!opacity-100 disabled:!bg-[var(--Success-50,#F0FDF4)]",
195
+ c && "border-[var(--Error-200,#FECACA)] bg-[var(--Error-50,#FEF2F2)] !text-[#475467] focus:border-[var(--Error-200,#FECACA)] focus:shadow-[0_0_0_2px_rgba(254,202,202,0.45)] dark:border-[var(--Error-200,#FECACA)] dark:bg-[var(--Error-50,#FEF2F2)] dark:!text-[#475467] disabled:!opacity-100 disabled:!bg-[var(--Error-50,#FEF2F2)]",
196
+ v && "border-[var(--Warning-200,#FEDF89)] bg-[var(--Warning-50,#FFFAEB)] text-neutral-900 dark:text-black-100 focus:border-[var(--Warning-200,#FEDF89)] focus:shadow-[0_0_0_2px_rgba(254,223,137,0.45)] dark:border-[var(--Warning-200,#FEDF89)] dark:bg-[var(--Warning-50,#FFFAEB)] disabled:!opacity-100 disabled:!bg-[var(--Warning-50,#FFFAEB)]",
197
+ s && "border-[var(--Success-200,#BBF7D0)] bg-[var(--Success-50,#F0FDF4)] !text-[#101828] focus:border-[var(--Success-200,#BBF7D0)] focus:shadow-[0_0_0_2px_rgba(187,247,208,0.45)] dark:border-[var(--Success-200,#BBF7D0)] dark:bg-[var(--Success-50,#F0FDF4)] dark:!text-[#101828] disabled:!opacity-100 disabled:!bg-[var(--Success-50,#F0FDF4)]",
199
198
  V,
200
- l && `!bg-${a.color}-50 border-${a.color}-300`
199
+ l && `!bg-${t.color}-50 border-${t.color}-300`
201
200
  ),
202
- style: l && a ? {
203
- backgroundColor: a.hexBgColor || void 0,
204
- borderColor: a.hexBorderColor || void 0,
201
+ style: l && t ? {
202
+ backgroundColor: t.hexBgColor || void 0,
203
+ borderColor: t.hexBorderColor || void 0,
205
204
  ...E
206
205
  } : E,
207
206
  rows: j,
208
207
  placeholder: W,
209
- disabled: i,
210
- maxLength: n || void 0,
208
+ disabled: f,
209
+ maxLength: d || void 0,
211
210
  id: C,
212
211
  ref: O,
213
212
  onClick: (e) => e.stopPropagation(),
214
213
  autoComplete: "off"
215
214
  }
216
215
  ),
217
- n ? /* @__PURE__ */ o(
216
+ d ? /* @__PURE__ */ o(
218
217
  I,
219
218
  {
220
219
  className: "mt-0.5 text-right text-neutral-900 dark:text-white",
@@ -224,30 +223,30 @@ const ge = oe(
224
223
  /* @__PURE__ */ o(
225
224
  "span",
226
225
  {
227
- className: `${d?.length >= n ? "text-error-500" : d?.length > n - Math.min(50, n / 5) ? "text-warning-500 dark:text-warning-300" : ""}`,
226
+ className: `${n?.length >= d ? "text-error-500" : n?.length > d - Math.min(50, d / 5) ? "text-warning-500 dark:text-warning-300" : ""}`,
228
227
  children: [
229
- d?.length || 0,
228
+ n?.length || 0,
230
229
  " "
231
230
  ]
232
231
  }
233
232
  ),
234
233
  "/ ",
235
- n
234
+ d
236
235
  ]
237
236
  }
238
237
  ) : null,
239
- t && /* @__PURE__ */ r(
238
+ a && /* @__PURE__ */ r(
240
239
  I,
241
240
  {
242
241
  className: "text-error-500 mt-1",
243
242
  appearance: "custom",
244
243
  size: "extra-small",
245
244
  variant: "medium",
246
- children: t
245
+ children: a
247
246
  }
248
247
  )
249
248
  ] }),
250
- f && S && a && _ && /* @__PURE__ */ r(
249
+ u && S && t && _ && /* @__PURE__ */ r(
251
250
  "div",
252
251
  {
253
252
  role: "tooltip",
@@ -258,7 +257,7 @@ const ge = oe(
258
257
  onKeyDown: (e) => {
259
258
  e.key === "Escape" && h(!1);
260
259
  },
261
- children: /* @__PURE__ */ r(_, { riskDetails: a })
260
+ children: /* @__PURE__ */ r(_, { riskDetails: t })
262
261
  }
263
262
  )
264
263
  ]
@@ -1 +1 @@
1
- {"version":3,"file":"TextAreaField.es.js","sources":["../../../../src/components/forms/text-area-field/TextAreaField.tsx"],"sourcesContent":["/* 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 { AIStarIcon } from \"../../icons/AIStarIcon\";\nimport { InputLabel } from \"../shared/InputLabel\";\nimport Tooltip from \"../../tooltip/Tooltip\";\nimport {\n getConfidenceScoreBadgeClass,\n getConfidenceScoreBadgeColor,\n getConfidenceScoreBadgeFill,\n getConfidenceScoreBadgeTextColor,\n shouldShowConfidenceScore,\n} from \"../../../utils/confidenceScoreUtils\";\n\n/**\n * Confidence score type\n */\nexport type ConfidenceScoreType = \"low\" | \"medium\" | \"high\";\n\nexport type SourceMetaBBox = {\n b: number;\n l: number;\n r: number;\n t: number;\n};\n\nexport type SourceMetaItem = {\n bbox: SourceMetaBBox;\n confidence_score?: number;\n is_primary?: boolean;\n match_score?: number;\n match_type?: string;\n page_height: number;\n page_width: number;\n source_page: number;\n source_text?: string;\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 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 /** Confidence percentage shown as a badge */\n confidenceScore?: number;\n /** Confidence classification for badge styling */\n confidenceType?: ConfidenceScoreType;\n /** Optional tooltip content for confidence badge */\n confidenceTooltip?: React.ReactNode;\n /** Source meta for confidence score */\n sourceMeta?: SourceMetaItem[];\n /** Handler fired when confidence score badge is clicked */\n onConfidenceScoreClick?: (sourceMeta: SourceMetaItem[]) => void;\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 /** Optional extra content in the label row (e.g. actions, badges) */\n labelExtra?: React.ReactNode;\n /** Input surface style: `'modified'` — Warning colors; `'deleted'` — Error colors, text #475467; `'success'` — Success colors, text #101828. */\n inputEmphasis?: \"default\" | \"modified\" | \"deleted\" | \"success\";\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 confidenceScore,\n confidenceType = \"high\",\n confidenceTooltip,\n sourceMeta = [],\n onConfidenceScoreClick,\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 labelExtra,\n inputEmphasis = \"default\",\n ...textareaProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n const [isHovered, setIsHovered] = useState(false);\n const showRiskSkin = Boolean(isRiskAnalysisOpen && riskDetails?.color);\n const emphasisModifiedSkin = inputEmphasis === \"modified\" && !errorMessage && !showRiskSkin;\n const emphasisDeletedSkin = inputEmphasis === \"deleted\" && !errorMessage && !showRiskSkin;\n const emphasisSuccessSkin = inputEmphasis === \"success\" && !errorMessage && !showRiskSkin;\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n const form = (e.target as HTMLTextAreaElement).closest(\"form\");\n if (form) {\n const submitButton = form.querySelector<HTMLButtonElement>('button[type=\"submit\"]');\n if (submitButton) {\n submitButton.click();\n } else {\n form.requestSubmit();\n }\n }\n }\n textareaProps.onKeyDown?.(e);\n };\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=\"grid w-full grid-cols-[minmax(0,1fr)_auto] items-start gap-x-1\">\n <div className=\"inline-flex min-w-0 items-center gap-1 flex-wrap\">\n <InputLabel label={label || \"\"} required={required || false} isRequiredConditional={isRequiredConditional || false} />\n {isLiveField && (\n <BoltOutlined\n sx={{\n fontSize: 16,\n color: \"var(--color-primary-600)\",\n rotate: \"15deg\",\n }}\n />\n )}\n {isAiExtracted && !shouldShowConfidenceScore(confidenceScore) && <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 className=\"w-icon-sm h-icon-sm\" />\n </div>\n </AntTooltip>\n )}\n {labelExtra}\n </div>\n\n <div className=\"flex items-center gap-1 justify-self-end\">\n {(shouldShowConfidenceScore(confidenceScore) && confidenceType) ? (\n <Tooltip\n placement=\"top-end\"\n title={confidenceTooltip ?? \"\"}\n hideTooltip={confidenceTooltip === undefined || confidenceTooltip === null}\n className=\"cursor-pointer\"\n >\n <div\n className={cn(\n \"inline-flex min-w-[50px] items-center gap-1 rounded-md px-1 py-0.5\",\n getConfidenceScoreBadgeClass(confidenceType)\n )}\n onClick={() => onConfidenceScoreClick?.(sourceMeta)}\n >\n <AIStarIcon\n size={12}\n fill={getConfidenceScoreBadgeColor(confidenceType)}\n fillSecondary={getConfidenceScoreBadgeFill(confidenceType)}\n />\n <span className={cn(\"text-xs font-medium leading-4\", getConfidenceScoreBadgeTextColor(confidenceType))}>\n {confidenceScore}%\n </span>\n </div>\n </Tooltip>\n ) : null}\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 </div>\n </label>\n <textarea\n {...textareaProps}\n onKeyDown={handleKeyDown}\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 focus:outline-none focus:ring-0 block w-full py-2.5 px-3 font-inter font-medium text-sm 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 && !emphasisModifiedSkin && !emphasisDeletedSkin && !emphasisSuccessSkin && !showRiskSkin,\n \"text-neutral-400 dark:text-neutral-500\": disabled && !emphasisDeletedSkin && !emphasisSuccessSkin,\n \"text-neutral-900 dark:text-neutral-50\": !disabled && !emphasisDeletedSkin && !emphasisSuccessSkin,\n \"border-none\": noBorder,\n \"focus:border-none\": noBorder,\n \"placeholder:text-neutral-400 dark:placeholder:text-black-400\": disabled,\n \"placeholder:text-neutral-400 dark:placeholder:text-black-300\": !disabled,\n \"focus:border-[var(--color-primary-600)] dark:focus:border-[var(--color-primary-400)] focus:shadow-[0_0_0_1.5px_var(--color-primary-100)] dark:focus:shadow-[0_0_0_1.5px_var(--color-primary-950)] bg-white dark:bg-black-600\": !emphasisModifiedSkin && !emphasisDeletedSkin && !emphasisSuccessSkin && !showRiskSkin && !errorMessage,\n },\n emphasisDeletedSkin && \"border-[var(--Error-200,#FECACA)] bg-[var(--Error-50,#FEF2F2)] !text-[#475467] focus:border-[var(--Error-200,#FECACA)] focus:shadow-[0_0_0_2px_rgba(254,202,202,0.45)] dark:border-[var(--Error-200,#FECACA)] dark:bg-[var(--Error-50,#FEF2F2)] dark:!text-[#475467] disabled:!opacity-100 disabled:!bg-[var(--Error-50,#FEF2F2)]\",\n emphasisModifiedSkin && \"border-[var(--Warning-200,#FEDF89)] bg-[var(--Warning-50,#FFFAEB)] text-neutral-900 dark:text-black-100 focus:border-[var(--Warning-200,#FEDF89)] focus:shadow-[0_0_0_2px_rgba(254,223,137,0.45)] dark:border-[var(--Warning-200,#FEDF89)] dark:bg-[var(--Warning-50,#FFFAEB)] disabled:!opacity-100 disabled:!bg-[var(--Warning-50,#FFFAEB)]\",\n emphasisSuccessSkin && \"border-[var(--Success-200,#BBF7D0)] bg-[var(--Success-50,#F0FDF4)] !text-[#101828] focus:border-[var(--Success-200,#BBF7D0)] focus:shadow-[0_0_0_2px_rgba(187,247,208,0.45)] dark:border-[var(--Success-200,#BBF7D0)] dark:bg-[var(--Success-50,#F0FDF4)] dark:!text-[#101828] disabled:!opacity-100 disabled:!bg-[var(--Success-50,#F0FDF4)]\",\n className,\n showRiskSkin && `!bg-${riskDetails!.color}-50 border-${riskDetails!.color}-300`\n )}\n style={\n showRiskSkin && 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"],"names":["TextAreaField","forwardRef","label","placeholder","value","onChange","row","errorMessage","defaultValue","required","isRequiredConditional","tags","disabled","className","inputRef","maxLength","tooltip","originalCase","isAiExtracted","confidenceScore","confidenceType","confidenceTooltip","sourceMeta","onConfidenceScoreClick","isGTN","gtnName","noBorder","id","inputStyle","labelClassName","isLiveField","onBlur","riskDetails","isRiskAnalysisOpen","RiskDetailsCard","onAddGTNToDocument","labelExtra","inputEmphasis","textareaProps","ref","t","useTranslation","isHovered","setIsHovered","useState","showRiskSkin","emphasisModifiedSkin","emphasisDeletedSkin","emphasisSuccessSkin","handleKeyDown","form","submitButton","handleAddGTNToDocument","jsxs","cn","jsx","InputLabel","BoltOutlined","shouldShowConfidenceScore","AIExtractedIndicator","Label","AntTooltip","HelpIcon","Tooltip","getConfidenceScoreBadgeClass","AIStarIcon","getConfidenceScoreBadgeColor","getConfidenceScoreBadgeFill","getConfidenceScoreBadgeTextColor","NoteAddOutlined","Typography"],"mappings":"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"}
1
+ {"version":3,"file":"TextAreaField.es.js","sources":["../../../../src/components/forms/text-area-field/TextAreaField.tsx"],"sourcesContent":["/* 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 { AIStarIcon } from \"../../icons/AIStarIcon\";\nimport { InputLabel } from \"../shared/InputLabel\";\nimport Tooltip from \"../../tooltip/Tooltip\";\nimport {\n getConfidenceScoreBadgeClass,\n getConfidenceScoreBadgeColor,\n getConfidenceScoreBadgeFill,\n getConfidenceScoreBadgeTextColor,\n shouldShowConfidenceScore,\n} from \"../../../utils/confidenceScoreUtils\";\n\n/**\n * Confidence score type\n */\nexport type ConfidenceScoreType = \"low\" | \"medium\" | \"high\";\n\nexport type SourceMetaBBox = {\n b: number;\n l: number;\n r: number;\n t: number;\n};\n\nexport type SourceMetaItem = {\n bbox: SourceMetaBBox;\n confidence_score?: number;\n is_primary?: boolean;\n match_score?: number;\n match_type?: string;\n page_height: number;\n page_width: number;\n source_page: number;\n source_text?: string;\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 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 /** Confidence percentage shown as a badge */\n confidenceScore?: number;\n /** Confidence classification for badge styling */\n confidenceType?: ConfidenceScoreType;\n /** Optional tooltip content for confidence badge */\n confidenceTooltip?: React.ReactNode;\n /** Source meta for confidence score */\n sourceMeta?: SourceMetaItem[];\n /** Handler fired when confidence score badge is clicked */\n onConfidenceScoreClick?: (sourceMeta: SourceMetaItem[]) => void;\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 /** Optional extra content in the label row (e.g. actions, badges) */\n labelExtra?: React.ReactNode;\n /** Input surface style: `'modified'` — Warning colors; `'deleted'` — Error colors, text #475467; `'success'` — Success colors, text #101828. */\n inputEmphasis?: \"default\" | \"modified\" | \"deleted\" | \"success\";\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 confidenceScore,\n confidenceType = \"high\",\n confidenceTooltip,\n sourceMeta = [],\n onConfidenceScoreClick,\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 labelExtra,\n inputEmphasis = \"default\",\n ...textareaProps\n },\n ref\n ) => {\n const { t } = useTranslation();\n const [isHovered, setIsHovered] = useState(false);\n const showRiskSkin = Boolean(isRiskAnalysisOpen && riskDetails?.color);\n const emphasisModifiedSkin = inputEmphasis === \"modified\" && !errorMessage && !showRiskSkin;\n const emphasisDeletedSkin = inputEmphasis === \"deleted\" && !errorMessage && !showRiskSkin;\n const emphasisSuccessSkin = inputEmphasis === \"success\" && !errorMessage && !showRiskSkin;\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLTextAreaElement>) => {\n if (e.key === \"Enter\" && !e.shiftKey) {\n e.preventDefault();\n const form = (e.target as HTMLTextAreaElement).closest(\"form\");\n if (form) {\n const submitButton = form.querySelector<HTMLButtonElement>('button[type=\"submit\"]');\n if (submitButton) {\n submitButton.click();\n } else {\n form.requestSubmit();\n }\n }\n }\n textareaProps.onKeyDown?.(e);\n };\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=\"grid w-full grid-cols-[minmax(0,1fr)_auto] items-start gap-x-1\">\n <div className=\"inline-flex min-w-0 items-center gap-1 flex-wrap\">\n <InputLabel label={label || \"\"} required={required || false} isRequiredConditional={isRequiredConditional || false} />\n {isLiveField && (\n <BoltOutlined\n sx={{\n fontSize: 16,\n color: \"var(--color-primary-600)\",\n rotate: \"15deg\",\n }}\n />\n )}\n {isAiExtracted && !shouldShowConfidenceScore(confidenceScore) && <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 className=\"w-icon-sm h-icon-sm\" />\n </div>\n </AntTooltip>\n )}\n {labelExtra}\n </div>\n\n <div className=\"flex items-center gap-1 justify-self-end\">\n {(shouldShowConfidenceScore(confidenceScore) && confidenceType) ? (\n <Tooltip\n placement=\"top-end\"\n title={confidenceTooltip ?? \"\"}\n hideTooltip={confidenceTooltip === undefined || confidenceTooltip === null}\n className=\"cursor-pointer\"\n >\n <div\n className={cn(\n \"inline-flex min-w-[50px] items-center gap-1 rounded-md px-1 py-0.5\",\n getConfidenceScoreBadgeClass(confidenceType)\n )}\n onClick={() => onConfidenceScoreClick?.(sourceMeta)}\n >\n <AIStarIcon\n size={12}\n fill={getConfidenceScoreBadgeColor(confidenceType)}\n fillSecondary={getConfidenceScoreBadgeFill(confidenceType)}\n />\n <span className={cn(\"text-xs font-medium leading-4\", getConfidenceScoreBadgeTextColor(confidenceType))}>\n {confidenceScore}%\n </span>\n </div>\n </Tooltip>\n ) : null}\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 </div>\n </label>\n <textarea\n {...textareaProps}\n onKeyDown={handleKeyDown}\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 focus:outline-none focus:ring-0 block w-full py-2.5 px-3 font-inter font-medium text-sm 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 && !emphasisModifiedSkin && !emphasisDeletedSkin && !emphasisSuccessSkin && !showRiskSkin,\n \"text-neutral-400 dark:text-neutral-500\": disabled && !emphasisDeletedSkin && !emphasisSuccessSkin,\n \"text-neutral-900 dark:text-neutral-50\": !disabled && !emphasisDeletedSkin && !emphasisSuccessSkin,\n \"border-none\": noBorder,\n \"focus:border-none\": noBorder,\n \"placeholder:text-neutral-400 dark:placeholder:text-black-300\": true,\n \"focus:border-[var(--color-primary-600)] dark:focus:border-[var(--color-primary-400)] focus:shadow-[0_0_0_1.5px_var(--color-primary-100)] dark:focus:shadow-[0_0_0_1.5px_var(--color-primary-950)] bg-white dark:bg-black-600\": !emphasisModifiedSkin && !emphasisDeletedSkin && !emphasisSuccessSkin && !showRiskSkin && !errorMessage,\n },\n emphasisDeletedSkin && \"border-[var(--Error-200,#FECACA)] bg-[var(--Error-50,#FEF2F2)] !text-[#475467] focus:border-[var(--Error-200,#FECACA)] focus:shadow-[0_0_0_2px_rgba(254,202,202,0.45)] dark:border-[var(--Error-200,#FECACA)] dark:bg-[var(--Error-50,#FEF2F2)] dark:!text-[#475467] disabled:!opacity-100 disabled:!bg-[var(--Error-50,#FEF2F2)]\",\n emphasisModifiedSkin && \"border-[var(--Warning-200,#FEDF89)] bg-[var(--Warning-50,#FFFAEB)] text-neutral-900 dark:text-black-100 focus:border-[var(--Warning-200,#FEDF89)] focus:shadow-[0_0_0_2px_rgba(254,223,137,0.45)] dark:border-[var(--Warning-200,#FEDF89)] dark:bg-[var(--Warning-50,#FFFAEB)] disabled:!opacity-100 disabled:!bg-[var(--Warning-50,#FFFAEB)]\",\n emphasisSuccessSkin && \"border-[var(--Success-200,#BBF7D0)] bg-[var(--Success-50,#F0FDF4)] !text-[#101828] focus:border-[var(--Success-200,#BBF7D0)] focus:shadow-[0_0_0_2px_rgba(187,247,208,0.45)] dark:border-[var(--Success-200,#BBF7D0)] dark:bg-[var(--Success-50,#F0FDF4)] dark:!text-[#101828] disabled:!opacity-100 disabled:!bg-[var(--Success-50,#F0FDF4)]\",\n className,\n showRiskSkin && `!bg-${riskDetails!.color}-50 border-${riskDetails!.color}-300`\n )}\n style={\n showRiskSkin && 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"],"names":["TextAreaField","forwardRef","label","placeholder","value","onChange","row","errorMessage","defaultValue","required","isRequiredConditional","tags","disabled","className","inputRef","maxLength","tooltip","originalCase","isAiExtracted","confidenceScore","confidenceType","confidenceTooltip","sourceMeta","onConfidenceScoreClick","isGTN","gtnName","noBorder","id","inputStyle","labelClassName","isLiveField","onBlur","riskDetails","isRiskAnalysisOpen","RiskDetailsCard","onAddGTNToDocument","labelExtra","inputEmphasis","textareaProps","ref","t","useTranslation","isHovered","setIsHovered","useState","showRiskSkin","emphasisModifiedSkin","emphasisDeletedSkin","emphasisSuccessSkin","handleKeyDown","form","submitButton","handleAddGTNToDocument","jsxs","cn","jsx","InputLabel","BoltOutlined","shouldShowConfidenceScore","AIExtractedIndicator","Label","AntTooltip","HelpIcon","Tooltip","getConfidenceScoreBadgeClass","AIStarIcon","getConfidenceScoreBadgeColor","getConfidenceScoreBadgeFill","getConfidenceScoreBadgeTextColor","NoteAddOutlined","Typography"],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@lax-wp/design-system",
3
3
  "private": false,
4
- "version": "0.15.1",
4
+ "version": "0.16.0",
5
5
  "type": "module",
6
6
  "main": "dist/index.cjs.js",
7
7
  "module": "dist/index.es.js",