@databricks/design-system 2.0.6 → 2.0.7

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.
Files changed (30) hide show
  1. package/AGENTS.md +239 -166
  2. package/CHANGELOG.md +28 -0
  3. package/dist/{RHFControlledTypeaheadComboboxV2-Ct9x3rC1.js → RHFControlledTypeaheadComboboxV2-nSSYj16I.js} +3 -3
  4. package/dist/{RHFControlledTypeaheadComboboxV2-Ct9x3rC1.js.map → RHFControlledTypeaheadComboboxV2-nSSYj16I.js.map} +1 -1
  5. package/dist/{WizardStepContentWrapper-6YTjeEaA.js → WizardStepContentWrapper-bbh_CoIf.js} +195 -257
  6. package/dist/WizardStepContentWrapper-bbh_CoIf.js.map +1 -0
  7. package/dist/dubois-colors.less +1 -1
  8. package/dist/icon-metadata.json +5 -0
  9. package/dist/{index-DiRpSwH2.js → index-CUCuUviS.js} +119 -109
  10. package/dist/index-CUCuUviS.js.map +1 -0
  11. package/dist/index-dark.css +135 -1
  12. package/dist/index-dark.mitigated.css +163 -16
  13. package/dist/index.css +182 -28
  14. package/dist/index.js +2 -2
  15. package/dist/index.mitigated.css +210 -43
  16. package/dist/patterns.js +1 -1
  17. package/dist-types/design-system/Alert/Alert.d.ts +21 -4
  18. package/dist-types/design-system/Button/Button.d.ts +2 -1
  19. package/dist-types/design-system/Icon/__generated/icons/SlidesIcon.d.ts +4 -0
  20. package/dist-types/design-system/Icon/__generated/icons/index.d.ts +1 -0
  21. package/dist-types/design-system/TypeaheadCombobox/TypeaheadComboboxControls.d.ts +0 -2
  22. package/dist-types/design-system/index.d.ts +0 -1
  23. package/dist-types/design-system/utils/safex.d.ts +4 -2
  24. package/dist-types/theme/generalVariables.d.ts +0 -1
  25. package/package.json +5 -4
  26. package/setup.mjs +586 -0
  27. package/dist/WizardStepContentWrapper-6YTjeEaA.js.map +0 -1
  28. package/dist/index-DiRpSwH2.js.map +0 -1
  29. package/dist-types/design-system/LegacyTooltip/LegacyTooltip.d.ts +0 -47
  30. package/dist-types/design-system/LegacyTooltip/index.d.ts +0 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,33 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.0.7 (2026-09-17T20:28:50Z)
4
+
5
+ ### Added
6
+
7
+ - New `SlidesIcon` component available for import from `@databricks/design-system`.
8
+
9
+ ### Changed
10
+
11
+ - `Button`: replaced the boolean `useNativeButtonOverride` prop with a tri-state `forceMode` prop. Values: `'native'` (default — always uses the native implementation), `'legacy-antd'` (always uses the AntD implementation), or `'flag'` (defers to the `databricks.fe.designsystem.useNativeButton` SAFE flag). Existing callsites should add `forceMode="flag"` to preserve current flag-gated behavior.
12
+ - `LegacyForm.Item`: the label help icon now renders as the Du Bois `InfoSmallIcon` instead of AntD's `QuestionCircleOutlined`. A caller-supplied tooltip icon still takes precedence.
13
+ - Design-system `safex` and `serverSideSafe` wrappers now accept an optional `testDefault` argument for controlling flag values in Jest and `UiTestServer` fallback paths.
14
+ - `AlertProps` no longer references AntD types on its public surface.
15
+
16
+ ### Deprecated
17
+
18
+ - `theme.general.iconfontCssPrefix` has been removed from the theme object.
19
+
20
+ ### Fixed
21
+
22
+ - `Switch` (native/Radix variant): the track no longer collapses to zero width when a host app's legacy `input[type='checkbox']` CSS reset is present (e.g. Bootstrap).
23
+ - `Notification` (Radix Toast): toast close buttons are now clickable while a modal is open, and the empty toast viewport band no longer blocks clicks to content beneath it.
24
+ - `TypeaheadCombobox` (v1 multi-select): clear and chevron controls are now vertically centered within the tag row.
25
+ - `LegacySelect`: the dropdown chevron no longer shifts out of alignment when rendered with a native `.db-icon` element.
26
+
27
+ ### Removed
28
+
29
+ - `LegacyTooltip` has been removed from `@databricks/design-system`. Use `Tooltip` instead.
30
+
3
31
  ## 2.0.6 (2026-09-15T18:10:12Z)
4
32
 
5
33
  ### Added
@@ -1,8 +1,8 @@
1
1
  import { jsxs, jsx } from '@emotion/react/jsx-runtime';
2
2
  import React__default, { useRef, useCallback } from 'react';
3
3
  import { useController } from 'react-hook-form';
4
- import { u as useComboboxState, T as TypeaheadComboboxRoot, a as TypeaheadComboboxMultiSelectInput, b as TypeaheadComboboxMenu, c as TypeaheadComboboxInput } from './index-DiRpSwH2.js';
5
- import './WizardStepContentWrapper-6YTjeEaA.js';
4
+ import { u as useComboboxState, T as TypeaheadComboboxRoot, a as TypeaheadComboboxMultiSelectInput, b as TypeaheadComboboxMenu, c as TypeaheadComboboxInput } from './index-CUCuUviS.js';
5
+ import './WizardStepContentWrapper-bbh_CoIf.js';
6
6
  import '@react-aria/listbox';
7
7
  import 'classnames';
8
8
  import '@emotion/react';
@@ -169,4 +169,4 @@ function RHFControlledMultiSelectTypeaheadComboboxV2({ name, control, rules, all
169
169
  }
170
170
 
171
171
  export { RHFControlledMultiSelectTypeaheadComboboxV2, RHFControlledTypeaheadComboboxV2 };
172
- //# sourceMappingURL=RHFControlledTypeaheadComboboxV2-Ct9x3rC1.js.map
172
+ //# sourceMappingURL=RHFControlledTypeaheadComboboxV2-nSSYj16I.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"RHFControlledTypeaheadComboboxV2-Ct9x3rC1.js","sources":["../src/design-system/FormV2/RHFControlledTypeaheadComboboxV2.tsx"],"sourcesContent":["import type { Key } from '@react-types/shared';\nimport type { HTMLAttributes } from 'react';\nimport React, { useCallback, useRef } from 'react';\nimport type { Control, FieldPath, FieldValues, UseControllerProps } from 'react-hook-form';\nimport { useController } from 'react-hook-form';\n\nimport type { DesignSystemEventProviderAnalyticsEventTypes } from '../DesignSystemEventProvider';\nimport {\n TypeaheadComboboxInput as TypeaheadComboboxV2Input,\n TypeaheadComboboxMenu as TypeaheadComboboxV2Menu,\n TypeaheadComboboxMultiSelectInput as TypeaheadComboboxV2MultiSelectInput,\n TypeaheadComboboxRoot as TypeaheadComboboxV2Root,\n useComboboxState as useComboboxStateV2,\n} from '../TypeaheadComboboxV2';\nimport type { TypeaheadComboboxInputProps as TypeaheadComboboxV2InputProps } from '../TypeaheadComboboxV2/TypeaheadComboboxInput';\nimport type { TypeaheadComboboxMenuProps as TypeaheadComboboxV2MenuProps } from '../TypeaheadComboboxV2/TypeaheadComboboxMenu';\nimport type { TypeaheadComboboxMultiSelectInputProps as TypeaheadComboboxV2MultiSelectInputProps } from '../TypeaheadComboboxV2/TypeaheadComboboxMultiSelectInput';\nimport type { TypeaheadComboboxRootProps as TypeaheadComboboxV2RootProps } from '../TypeaheadComboboxV2/TypeaheadComboboxRoot';\nimport type { ComboboxStateValue } from '../TypeaheadComboboxV2/hooks/useComboboxState';\nimport type { AnalyticsEventValueChangeNoPiiFlagProps, ValidationState } from '../types';\n\n// This file holds the react-aria TypeaheadComboboxV2 RHF adapters, split out of RHFAdapters.tsx so the\n// (broadly imported) RHFControlledComponents barrel does not statically pull the react-aria combobox\n// subtree into the common chunk. RHFAdapters.tsx React.lazy-imports these, so the ~175KB subtree only\n// loads on pages that actually render a V2 typeahead.\n\n// These props are omitted, as `useController` handles them. (Mirrors RHFAdapters.tsx.)\ntype OmittedOriginalProps = 'name' | 'onChange' | 'onBlur' | 'value' | 'defaultValue' | 'checked';\n\nexport interface RHFControlledTypeaheadComboboxV2Props<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>\n extends\n Omit<\n TypeaheadComboboxV2RootProps<TFieldValues[TName]>,\n OmittedOriginalProps | 'comboboxState' | 'componentId' | 'children'\n >,\n UseControllerProps<TFieldValues, TName>,\n AnalyticsEventValueChangeNoPiiFlagProps<DesignSystemEventProviderAnalyticsEventTypes.OnValueChange> {\n control: Control<TFieldValues, any>;\n name: TName;\n // The react-aria hook owns filtering, so children render `comboboxState.filteredItems` rather than\n // receiving a consumer-maintained `items` list (the key API change from the legacy adapter).\n children: (renderProps: { comboboxState: ComboboxStateValue<Required<TFieldValues>[TName]> }) => React.ReactNode;\n validationState?: ValidationState;\n allItems: Required<TFieldValues>[TName][];\n itemToString: (item: Required<TFieldValues>[TName]) => string;\n matcher?: (item: Required<TFieldValues>[TName], query: string) => boolean;\n getKey?: (item: Required<TFieldValues>[TName]) => Key;\n /* Whether to allow the input value to not match any options in the list. For this to work, the item type (T) must be a string.\n * Defaults to false.\n */\n allowNewValue?: boolean;\n inputProps?: Partial<Omit<TypeaheadComboboxV2InputProps, 'componentId'>>;\n menuProps?: Partial<TypeaheadComboboxV2MenuProps>;\n onInputChange?: (inputValue: string) => void;\n /** @deprecated No-op under react-aria; accepted for source-compat while migrating off the legacy adapter. */\n preventUnsetOnBlur?: boolean;\n}\n\nexport function RHFControlledTypeaheadComboboxV2<\n TFieldValues extends FieldValues,\n TName extends FieldPath<TFieldValues>,\n>({\n name,\n control,\n rules,\n allItems,\n itemToString,\n matcher,\n getKey,\n allowNewValue,\n children,\n validationState,\n inputProps,\n menuProps,\n onInputChange,\n componentId,\n analyticsEvents,\n valueHasNoPii,\n preventUnsetOnBlur,\n ...props\n}: RHFControlledTypeaheadComboboxV2Props<TFieldValues, TName> &\n Omit<HTMLAttributes<HTMLDivElement>, 'children'>): JSX.Element {\n const { field } = useController<TFieldValues, TName>({\n name,\n control,\n rules,\n });\n\n const comboboxState = useComboboxStateV2({\n allItems,\n itemToString,\n getKey,\n matcher,\n allowNewValue,\n formValue: field.value,\n formOnChange: field.onChange,\n formOnBlur: field.onBlur,\n componentId,\n analyticsEvents,\n valueHasNoPii,\n preventUnsetOnBlur,\n // react-aria owns the input value; surface changes through the 'input' state event so the legacy\n // `onInputChange` contract keeps working without making the input value a controlled prop.\n onStateChange: onInputChange\n ? (change) => {\n if (change.type === 'input') {\n onInputChange(change.inputValue);\n }\n }\n : undefined,\n });\n\n return (\n <TypeaheadComboboxV2Root {...props} comboboxState={comboboxState}>\n <TypeaheadComboboxV2Input {...inputProps} validationState={validationState} ref={field.ref} />\n <TypeaheadComboboxV2Menu {...menuProps}>{children({ comboboxState })}</TypeaheadComboboxV2Menu>\n </TypeaheadComboboxV2Root>\n );\n}\n\nexport interface RHFControlledMultiSelectTypeaheadComboboxV2Props<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>\n extends\n Omit<\n TypeaheadComboboxV2RootProps<TFieldValues>,\n OmittedOriginalProps | 'comboboxState' | 'componentId' | 'children'\n >,\n UseControllerProps<TFieldValues, TName>,\n AnalyticsEventValueChangeNoPiiFlagProps<DesignSystemEventProviderAnalyticsEventTypes.OnValueChange> {\n control: Control<any, TFieldValues>;\n // Required override because the full array is the field value, but TName implies a scalar property.\n name: any;\n children: (renderProps: {\n comboboxState: ComboboxStateValue<TFieldValues>;\n selectedItems: TFieldValues[];\n }) => React.ReactNode;\n validationState?: ValidationState;\n allItems: TFieldValues[];\n itemToString: (item: TFieldValues) => string;\n matcher?: (item: TFieldValues, query: string) => boolean;\n getKey?: (item: TFieldValues) => Key;\n inputProps?: Partial<\n Omit<\n TypeaheadComboboxV2MultiSelectInputProps<TFieldValues>,\n 'selectedItems' | 'setSelectedItems' | 'getSelectedItemLabel'\n >\n >;\n menuProps?: Partial<TypeaheadComboboxV2MenuProps>;\n onInputChange?: (inputValue: string) => void;\n}\n\nexport function RHFControlledMultiSelectTypeaheadComboboxV2<TFieldValues extends FieldValues>({\n name,\n control,\n rules,\n allItems,\n itemToString,\n matcher,\n getKey,\n children,\n validationState,\n inputProps,\n menuProps,\n onInputChange,\n componentId,\n analyticsEvents,\n valueHasNoPii,\n ...props\n}: RHFControlledMultiSelectTypeaheadComboboxV2Props<TFieldValues> &\n Omit<HTMLAttributes<HTMLDivElement>, 'children'>): JSX.Element {\n const { field } = useController({\n name,\n control,\n rules,\n });\n\n // The array field value IS the selection — drive it straight from RHF, no local mirror. `getKey`\n // must be stable across renders (react-aria keys options by it) so memoize on field.value identity.\n const selectedItems = React.useMemo<TFieldValues[]>(() => field.value ?? [], [field.value]);\n const selectedItemsRef = useRef(selectedItems);\n selectedItemsRef.current = selectedItems;\n\n // The hook always calls this with a concrete array on a selection commit, but the setter type also\n // permits an updater function — resolve it against the latest selection so both shapes are correct.\n const setSelectedItems = useCallback<React.Dispatch<React.SetStateAction<TFieldValues[]>>>(\n (next) => {\n const resolved = typeof next === 'function' ? next(selectedItemsRef.current) : next;\n field.onChange(resolved);\n },\n [field],\n );\n\n const comboboxState = useComboboxStateV2<TFieldValues>({\n allItems,\n itemToString,\n getKey,\n matcher,\n multiSelect: true,\n // Multi-select drives the form through selectedItems/setSelectedItems (above), not the single-select\n // form bridge: formValue/formOnChange/formOnBlur are single-value props, and passing the array field\n // value as formValue would feed itemToString an array (breaking the input filter).\n selectedItems,\n setSelectedItems,\n componentId,\n analyticsEvents,\n valueHasNoPii,\n onStateChange: onInputChange\n ? (change) => {\n if (change.type === 'input') {\n onInputChange(change.inputValue);\n }\n }\n : undefined,\n });\n\n return (\n <TypeaheadComboboxV2Root {...props} comboboxState={comboboxState}>\n <TypeaheadComboboxV2MultiSelectInput\n {...inputProps}\n selectedItems={selectedItems}\n setSelectedItems={setSelectedItems}\n getSelectedItemLabel={itemToString}\n validationState={validationState}\n ref={field.ref}\n />\n <TypeaheadComboboxV2Menu {...menuProps}>\n {children({\n comboboxState,\n selectedItems,\n })}\n </TypeaheadComboboxV2Menu>\n </TypeaheadComboboxV2Root>\n );\n}\n"],"names":["RHFControlledTypeaheadComboboxV2","name","control","rules","allItems","itemToString","matcher","getKey","allowNewValue","children","validationState","inputProps","menuProps","onInputChange","componentId","analyticsEvents","valueHasNoPii","preventUnsetOnBlur","props","field","useController","comboboxState","useComboboxStateV2","formValue","value","formOnChange","onChange","formOnBlur","onBlur","onStateChange","change","type","inputValue","undefined","_jsxs","TypeaheadComboboxV2Root","_jsx","TypeaheadComboboxV2Input","ref","TypeaheadComboboxV2Menu","RHFControlledMultiSelectTypeaheadComboboxV2","selectedItems","React","useMemo","selectedItemsRef","useRef","current","setSelectedItems","useCallback","next","resolved","multiSelect","TypeaheadComboboxV2MultiSelectInput","getSelectedItemLabel"],"mappings":"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"}
1
+ {"version":3,"file":"RHFControlledTypeaheadComboboxV2-nSSYj16I.js","sources":["../src/design-system/FormV2/RHFControlledTypeaheadComboboxV2.tsx"],"sourcesContent":["import type { Key } from '@react-types/shared';\nimport type { HTMLAttributes } from 'react';\nimport React, { useCallback, useRef } from 'react';\nimport type { Control, FieldPath, FieldValues, UseControllerProps } from 'react-hook-form';\nimport { useController } from 'react-hook-form';\n\nimport type { DesignSystemEventProviderAnalyticsEventTypes } from '../DesignSystemEventProvider';\nimport {\n TypeaheadComboboxInput as TypeaheadComboboxV2Input,\n TypeaheadComboboxMenu as TypeaheadComboboxV2Menu,\n TypeaheadComboboxMultiSelectInput as TypeaheadComboboxV2MultiSelectInput,\n TypeaheadComboboxRoot as TypeaheadComboboxV2Root,\n useComboboxState as useComboboxStateV2,\n} from '../TypeaheadComboboxV2';\nimport type { TypeaheadComboboxInputProps as TypeaheadComboboxV2InputProps } from '../TypeaheadComboboxV2/TypeaheadComboboxInput';\nimport type { TypeaheadComboboxMenuProps as TypeaheadComboboxV2MenuProps } from '../TypeaheadComboboxV2/TypeaheadComboboxMenu';\nimport type { TypeaheadComboboxMultiSelectInputProps as TypeaheadComboboxV2MultiSelectInputProps } from '../TypeaheadComboboxV2/TypeaheadComboboxMultiSelectInput';\nimport type { TypeaheadComboboxRootProps as TypeaheadComboboxV2RootProps } from '../TypeaheadComboboxV2/TypeaheadComboboxRoot';\nimport type { ComboboxStateValue } from '../TypeaheadComboboxV2/hooks/useComboboxState';\nimport type { AnalyticsEventValueChangeNoPiiFlagProps, ValidationState } from '../types';\n\n// This file holds the react-aria TypeaheadComboboxV2 RHF adapters, split out of RHFAdapters.tsx so the\n// (broadly imported) RHFControlledComponents barrel does not statically pull the react-aria combobox\n// subtree into the common chunk. RHFAdapters.tsx React.lazy-imports these, so the ~175KB subtree only\n// loads on pages that actually render a V2 typeahead.\n\n// These props are omitted, as `useController` handles them. (Mirrors RHFAdapters.tsx.)\ntype OmittedOriginalProps = 'name' | 'onChange' | 'onBlur' | 'value' | 'defaultValue' | 'checked';\n\nexport interface RHFControlledTypeaheadComboboxV2Props<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>\n extends\n Omit<\n TypeaheadComboboxV2RootProps<TFieldValues[TName]>,\n OmittedOriginalProps | 'comboboxState' | 'componentId' | 'children'\n >,\n UseControllerProps<TFieldValues, TName>,\n AnalyticsEventValueChangeNoPiiFlagProps<DesignSystemEventProviderAnalyticsEventTypes.OnValueChange> {\n control: Control<TFieldValues, any>;\n name: TName;\n // The react-aria hook owns filtering, so children render `comboboxState.filteredItems` rather than\n // receiving a consumer-maintained `items` list (the key API change from the legacy adapter).\n children: (renderProps: { comboboxState: ComboboxStateValue<Required<TFieldValues>[TName]> }) => React.ReactNode;\n validationState?: ValidationState;\n allItems: Required<TFieldValues>[TName][];\n itemToString: (item: Required<TFieldValues>[TName]) => string;\n matcher?: (item: Required<TFieldValues>[TName], query: string) => boolean;\n getKey?: (item: Required<TFieldValues>[TName]) => Key;\n /* Whether to allow the input value to not match any options in the list. For this to work, the item type (T) must be a string.\n * Defaults to false.\n */\n allowNewValue?: boolean;\n inputProps?: Partial<Omit<TypeaheadComboboxV2InputProps, 'componentId'>>;\n menuProps?: Partial<TypeaheadComboboxV2MenuProps>;\n onInputChange?: (inputValue: string) => void;\n /** @deprecated No-op under react-aria; accepted for source-compat while migrating off the legacy adapter. */\n preventUnsetOnBlur?: boolean;\n}\n\nexport function RHFControlledTypeaheadComboboxV2<\n TFieldValues extends FieldValues,\n TName extends FieldPath<TFieldValues>,\n>({\n name,\n control,\n rules,\n allItems,\n itemToString,\n matcher,\n getKey,\n allowNewValue,\n children,\n validationState,\n inputProps,\n menuProps,\n onInputChange,\n componentId,\n analyticsEvents,\n valueHasNoPii,\n preventUnsetOnBlur,\n ...props\n}: RHFControlledTypeaheadComboboxV2Props<TFieldValues, TName> &\n Omit<HTMLAttributes<HTMLDivElement>, 'children'>): JSX.Element {\n const { field } = useController<TFieldValues, TName>({\n name,\n control,\n rules,\n });\n\n const comboboxState = useComboboxStateV2({\n allItems,\n itemToString,\n getKey,\n matcher,\n allowNewValue,\n formValue: field.value,\n formOnChange: field.onChange,\n formOnBlur: field.onBlur,\n componentId,\n analyticsEvents,\n valueHasNoPii,\n preventUnsetOnBlur,\n // react-aria owns the input value; surface changes through the 'input' state event so the legacy\n // `onInputChange` contract keeps working without making the input value a controlled prop.\n onStateChange: onInputChange\n ? (change) => {\n if (change.type === 'input') {\n onInputChange(change.inputValue);\n }\n }\n : undefined,\n });\n\n return (\n <TypeaheadComboboxV2Root {...props} comboboxState={comboboxState}>\n <TypeaheadComboboxV2Input {...inputProps} validationState={validationState} ref={field.ref} />\n <TypeaheadComboboxV2Menu {...menuProps}>{children({ comboboxState })}</TypeaheadComboboxV2Menu>\n </TypeaheadComboboxV2Root>\n );\n}\n\nexport interface RHFControlledMultiSelectTypeaheadComboboxV2Props<\n TFieldValues extends FieldValues = FieldValues,\n TName extends FieldPath<TFieldValues> = FieldPath<TFieldValues>,\n>\n extends\n Omit<\n TypeaheadComboboxV2RootProps<TFieldValues>,\n OmittedOriginalProps | 'comboboxState' | 'componentId' | 'children'\n >,\n UseControllerProps<TFieldValues, TName>,\n AnalyticsEventValueChangeNoPiiFlagProps<DesignSystemEventProviderAnalyticsEventTypes.OnValueChange> {\n control: Control<any, TFieldValues>;\n // Required override because the full array is the field value, but TName implies a scalar property.\n name: any;\n children: (renderProps: {\n comboboxState: ComboboxStateValue<TFieldValues>;\n selectedItems: TFieldValues[];\n }) => React.ReactNode;\n validationState?: ValidationState;\n allItems: TFieldValues[];\n itemToString: (item: TFieldValues) => string;\n matcher?: (item: TFieldValues, query: string) => boolean;\n getKey?: (item: TFieldValues) => Key;\n inputProps?: Partial<\n Omit<\n TypeaheadComboboxV2MultiSelectInputProps<TFieldValues>,\n 'selectedItems' | 'setSelectedItems' | 'getSelectedItemLabel'\n >\n >;\n menuProps?: Partial<TypeaheadComboboxV2MenuProps>;\n onInputChange?: (inputValue: string) => void;\n}\n\nexport function RHFControlledMultiSelectTypeaheadComboboxV2<TFieldValues extends FieldValues>({\n name,\n control,\n rules,\n allItems,\n itemToString,\n matcher,\n getKey,\n children,\n validationState,\n inputProps,\n menuProps,\n onInputChange,\n componentId,\n analyticsEvents,\n valueHasNoPii,\n ...props\n}: RHFControlledMultiSelectTypeaheadComboboxV2Props<TFieldValues> &\n Omit<HTMLAttributes<HTMLDivElement>, 'children'>): JSX.Element {\n const { field } = useController({\n name,\n control,\n rules,\n });\n\n // The array field value IS the selection — drive it straight from RHF, no local mirror. `getKey`\n // must be stable across renders (react-aria keys options by it) so memoize on field.value identity.\n const selectedItems = React.useMemo<TFieldValues[]>(() => field.value ?? [], [field.value]);\n const selectedItemsRef = useRef(selectedItems);\n selectedItemsRef.current = selectedItems;\n\n // The hook always calls this with a concrete array on a selection commit, but the setter type also\n // permits an updater function — resolve it against the latest selection so both shapes are correct.\n const setSelectedItems = useCallback<React.Dispatch<React.SetStateAction<TFieldValues[]>>>(\n (next) => {\n const resolved = typeof next === 'function' ? next(selectedItemsRef.current) : next;\n field.onChange(resolved);\n },\n [field],\n );\n\n const comboboxState = useComboboxStateV2<TFieldValues>({\n allItems,\n itemToString,\n getKey,\n matcher,\n multiSelect: true,\n // Multi-select drives the form through selectedItems/setSelectedItems (above), not the single-select\n // form bridge: formValue/formOnChange/formOnBlur are single-value props, and passing the array field\n // value as formValue would feed itemToString an array (breaking the input filter).\n selectedItems,\n setSelectedItems,\n componentId,\n analyticsEvents,\n valueHasNoPii,\n onStateChange: onInputChange\n ? (change) => {\n if (change.type === 'input') {\n onInputChange(change.inputValue);\n }\n }\n : undefined,\n });\n\n return (\n <TypeaheadComboboxV2Root {...props} comboboxState={comboboxState}>\n <TypeaheadComboboxV2MultiSelectInput\n {...inputProps}\n selectedItems={selectedItems}\n setSelectedItems={setSelectedItems}\n getSelectedItemLabel={itemToString}\n validationState={validationState}\n ref={field.ref}\n />\n <TypeaheadComboboxV2Menu {...menuProps}>\n {children({\n comboboxState,\n selectedItems,\n })}\n </TypeaheadComboboxV2Menu>\n </TypeaheadComboboxV2Root>\n );\n}\n"],"names":["RHFControlledTypeaheadComboboxV2","name","control","rules","allItems","itemToString","matcher","getKey","allowNewValue","children","validationState","inputProps","menuProps","onInputChange","componentId","analyticsEvents","valueHasNoPii","preventUnsetOnBlur","props","field","useController","comboboxState","useComboboxStateV2","formValue","value","formOnChange","onChange","formOnBlur","onBlur","onStateChange","change","type","inputValue","undefined","_jsxs","TypeaheadComboboxV2Root","_jsx","TypeaheadComboboxV2Input","ref","TypeaheadComboboxV2Menu","RHFControlledMultiSelectTypeaheadComboboxV2","selectedItems","React","useMemo","selectedItemsRef","useRef","current","setSelectedItems","useCallback","next","resolved","multiSelect","TypeaheadComboboxV2MultiSelectInput","getSelectedItemLabel"],"mappings":"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"}