@bigbinary/neeto-atoms 1.0.62 → 1.0.64

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 (37) hide show
  1. package/dist/Combobox-_-p2WeU8.js +10171 -0
  2. package/dist/Combobox-_-p2WeU8.js.map +1 -0
  3. package/dist/{Select-Zr8sFnAC.js → Select-C_lRHyd6.js} +70 -24
  4. package/dist/Select-C_lRHyd6.js.map +1 -0
  5. package/dist/cjs/Combobox-BX_pe3Hm.js +10209 -0
  6. package/dist/cjs/Combobox-BX_pe3Hm.js.map +1 -0
  7. package/dist/cjs/{Select-BJs-J8fs.js → Select-OWg5FZzx.js} +69 -23
  8. package/dist/cjs/Select-OWg5FZzx.js.map +1 -0
  9. package/dist/cjs/components/Select.js +2 -2
  10. package/dist/cjs/components/index.js +2 -2
  11. package/dist/cjs/formik/Select.js +2 -2
  12. package/dist/cjs/formik/index.js +2 -2
  13. package/dist/cjs/index.js +2 -2
  14. package/dist/cjs/primitives/Combobox.js +32 -10205
  15. package/dist/cjs/primitives/Combobox.js.map +1 -1
  16. package/dist/cjs/primitives/Empty.js +35 -3
  17. package/dist/cjs/primitives/Empty.js.map +1 -1
  18. package/dist/cjs/primitives/index.js +1 -1
  19. package/dist/components/Select/SelectAnchor.d.ts +8 -0
  20. package/dist/components/Select/SelectCombobox.types.d.ts +3 -1
  21. package/dist/components/Select/hooks/useSelectState.d.ts +1 -0
  22. package/dist/components/Select/types.d.ts +8 -0
  23. package/dist/components/Select.js +2 -2
  24. package/dist/components/index.js +2 -2
  25. package/dist/formik/Select.js +2 -2
  26. package/dist/formik/index.js +2 -2
  27. package/dist/index.js +2 -2
  28. package/dist/primitives/Combobox.js +13 -10170
  29. package/dist/primitives/Combobox.js.map +1 -1
  30. package/dist/primitives/Empty.d.ts +7 -4
  31. package/dist/primitives/Empty.js +35 -3
  32. package/dist/primitives/Empty.js.map +1 -1
  33. package/dist/primitives/index.js +1 -1
  34. package/package.json +1 -1
  35. package/dist/Select-Zr8sFnAC.js.map +0 -1
  36. package/dist/cjs/Select-BJs-J8fs.js.map +0 -1
  37. package/dist/hooks/useComboboxAnchor.d.ts +0 -6
@@ -2,9 +2,10 @@ import { jsx, jsxs } from 'react/jsx-runtime';
2
2
  import React__default, { useState, useRef, useEffect, useCallback, useMemo, useId, forwardRef } from 'react';
3
3
  import { S as SelectFieldWrapper } from './SelectFieldWrapper-CiBARDsn.js';
4
4
  import { c as cn } from './utils-BJnb9o5c.js';
5
- import { ComboboxItem, ComboboxList, ComboboxEmpty, ComboboxCollection, ComboboxGroup, ComboboxLabel, Combobox, ComboboxChips, ComboboxChipsInput, ComboboxTrigger, ComboboxContent, ComboboxChip } from './primitives/Combobox.js';
5
+ import { i as ComboboxItem, k as ComboboxList, f as ComboboxEmpty, d as ComboboxCollection, g as ComboboxGroup, j as ComboboxLabel, o as ComboboxTrigger, C as Combobox, b as ComboboxChips, c as ComboboxChipsInput, m as ComboboxTrigger$1, e as ComboboxContent, a as ComboboxChip } from './Combobox-_-p2WeU8.js';
6
6
  import { Spinner } from './primitives/Spinner.js';
7
7
  import { X } from './x-_o2T3n6D.js';
8
+ import { C as ChevronDown } from './chevron-down-BNi0ntys.js';
8
9
 
9
10
  function hyphenize(str) {
10
11
  return str.replace(/([a-z])([A-Z])/g, "$1-$2").replace(/[\s_]+/g, "-").toLowerCase();
@@ -287,6 +288,7 @@ function useSelectState(props) {
287
288
  onCreateOption,
288
289
  formatCreateLabel = defaultFormatCreateLabel$1,
289
290
  formatOptionLabel,
291
+ formatTriggerLabel,
290
292
  isClearable = false,
291
293
  isDisabled = false,
292
294
  required = false,
@@ -404,6 +406,16 @@ function useSelectState(props) {
404
406
  },
405
407
  [formatOptionLabel, flatOptionsMap, labelForValue]
406
408
  );
409
+ const renderTrigger = useCallback(
410
+ (val) => {
411
+ if (formatTriggerLabel && !val.startsWith(CREATE_PREFIX)) {
412
+ const option = flatOptionsMap.get(val);
413
+ if (option) return formatTriggerLabel(option);
414
+ }
415
+ return renderOption(val);
416
+ },
417
+ [formatTriggerLabel, flatOptionsMap, renderOption]
418
+ );
407
419
  return {
408
420
  ...opt,
409
421
  id,
@@ -423,6 +435,7 @@ function useSelectState(props) {
423
435
  testIdPrefix,
424
436
  labelForValue,
425
437
  renderOption,
438
+ renderTrigger,
426
439
  flatOptionsMap,
427
440
  label,
428
441
  error,
@@ -543,19 +556,6 @@ function useMultiSelectState(props) {
543
556
  };
544
557
  }
545
558
 
546
- function useComboboxAnchor(isSearchable) {
547
- const [anchorEl, setAnchorEl] = useState(null);
548
- const handleClick = useCallback(
549
- (e) => {
550
- if (!isSearchable) {
551
- e.currentTarget.querySelector("input")?.focus();
552
- }
553
- },
554
- [isSearchable]
555
- );
556
- return { anchorEl, setAnchorEl, handleClick };
557
- }
558
-
559
559
  function OptionItem({
560
560
  val,
561
561
  flatOptionsMap,
@@ -639,6 +639,39 @@ function MultiSelectDropdown({
639
639
  );
640
640
  }
641
641
 
642
+ const SelectAnchor = forwardRef(
643
+ ({ isSearchable, className, dataTestId, children }, ref) => {
644
+ if (isSearchable) {
645
+ return /* @__PURE__ */ jsx(
646
+ "div",
647
+ {
648
+ ref,
649
+ className,
650
+ ...dataTestId ? { "data-testid": dataTestId } : {},
651
+ children
652
+ }
653
+ );
654
+ }
655
+ return /* @__PURE__ */ jsx(
656
+ ComboboxTrigger,
657
+ {
658
+ nativeButton: false,
659
+ render: (props) => /* @__PURE__ */ jsx(
660
+ "div",
661
+ {
662
+ ...props,
663
+ ref,
664
+ className,
665
+ ...dataTestId ? { "data-testid": dataTestId } : {}
666
+ }
667
+ ),
668
+ children
669
+ }
670
+ );
671
+ }
672
+ );
673
+ SelectAnchor.displayName = "SelectAnchor";
674
+
642
675
  const SelectCombobox = forwardRef(
643
676
  ({
644
677
  name,
@@ -646,6 +679,7 @@ const SelectCombobox = forwardRef(
646
679
  effectiveItems,
647
680
  labelForValue,
648
681
  renderOption,
682
+ renderTrigger,
649
683
  isSearchable,
650
684
  isAsync,
651
685
  isCreatable,
@@ -669,7 +703,7 @@ const SelectCombobox = forwardRef(
669
703
  dropdownProps,
670
704
  children
671
705
  }, ref) => {
672
- const { anchorEl, setAnchorEl, handleClick } = useComboboxAnchor(isSearchable);
706
+ const [anchorEl, setAnchorEl] = useState(null);
673
707
  const handleClearClick = useCallback(
674
708
  (event) => {
675
709
  event.stopPropagation();
@@ -697,10 +731,11 @@ const SelectCombobox = forwardRef(
697
731
  autoHighlight,
698
732
  children: [
699
733
  /* @__PURE__ */ jsx(
700
- "div",
734
+ SelectAnchor,
701
735
  {
702
736
  ref: setAnchorEl,
703
- onClick: handleClick,
737
+ isSearchable,
738
+ dataTestId: testIdPrefix,
704
739
  className: !isSearchable ? "cursor-pointer" : void 0,
705
740
  children: /* @__PURE__ */ jsxs(
706
741
  ComboboxChips,
@@ -712,7 +747,7 @@ const SelectCombobox = forwardRef(
712
747
  ),
713
748
  ...testIdPrefix ? { "data-testid": `${testIdPrefix}-select-container` } : {},
714
749
  children: [
715
- !isSearchable && (currentValue ? /* @__PURE__ */ jsx("span", { className: "flex-1 truncate", children: renderOption(currentValue) }) : /* @__PURE__ */ jsx("span", { className: "flex-1 truncate text-muted-foreground", children: placeholder })),
750
+ !isSearchable && (currentValue ? /* @__PURE__ */ jsx("span", { className: "flex-1 truncate", children: renderTrigger(currentValue) }) : /* @__PURE__ */ jsx("span", { className: "flex-1 truncate text-muted-foreground", children: placeholder })),
716
751
  /* @__PURE__ */ jsx(
717
752
  ComboboxChipsInput,
718
753
  {
@@ -741,14 +776,23 @@ const SelectCombobox = forwardRef(
741
776
  children: /* @__PURE__ */ jsx(X, { className: sizeConfig.icon })
742
777
  }
743
778
  ),
744
- /* @__PURE__ */ jsx(
745
- ComboboxTrigger,
779
+ isSearchable ? /* @__PURE__ */ jsx(
780
+ ComboboxTrigger$1,
746
781
  {
747
782
  className: cn(
748
783
  "shrink-0 bg-transparent p-0 text-muted-foreground hover:bg-transparent",
749
784
  sizeConfig.icon
750
785
  )
751
786
  }
787
+ ) : /* @__PURE__ */ jsx(
788
+ ChevronDown,
789
+ {
790
+ "aria-hidden": true,
791
+ className: cn(
792
+ "pointer-events-none shrink-0 text-muted-foreground",
793
+ sizeConfig.icon
794
+ )
795
+ }
752
796
  )
753
797
  ]
754
798
  }
@@ -805,7 +849,7 @@ const MultiSelectCombobox = forwardRef(
805
849
  dropdownProps,
806
850
  children
807
851
  }, ref) => {
808
- const { anchorEl, setAnchorEl, handleClick } = useComboboxAnchor(isSearchable);
852
+ const [anchorEl, setAnchorEl] = useState(null);
809
853
  return (
810
854
  // @ts-expect-error — conditional spread creates a union that TS cannot narrow to the Combobox discriminated-union props
811
855
  /* @__PURE__ */ jsxs(
@@ -826,10 +870,10 @@ const MultiSelectCombobox = forwardRef(
826
870
  autoHighlight,
827
871
  children: [
828
872
  /* @__PURE__ */ jsx(
829
- "div",
873
+ SelectAnchor,
830
874
  {
831
875
  ref: setAnchorEl,
832
- onClick: handleClick,
876
+ isSearchable,
833
877
  className: !isSearchable ? "cursor-pointer" : void 0,
834
878
  children: /* @__PURE__ */ jsxs(
835
879
  ComboboxChips,
@@ -906,6 +950,7 @@ const SingleSelectInner = forwardRef(
906
950
  effectiveItems,
907
951
  labelForValue,
908
952
  renderOption,
953
+ renderTrigger,
909
954
  isSearchable,
910
955
  isAsync,
911
956
  creatableFilter,
@@ -949,6 +994,7 @@ const SingleSelectInner = forwardRef(
949
994
  effectiveItems,
950
995
  labelForValue,
951
996
  renderOption,
997
+ renderTrigger,
952
998
  isSearchable,
953
999
  isAsync,
954
1000
  isCreatable: props.isCreatable ?? false,
@@ -1096,4 +1142,4 @@ const Select = forwardRef((props, ref) => {
1096
1142
  Select.displayName = "Select";
1097
1143
 
1098
1144
  export { Select as S };
1099
- //# sourceMappingURL=Select-Zr8sFnAC.js.map
1145
+ //# sourceMappingURL=Select-C_lRHyd6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Select-C_lRHyd6.js","sources":["../src/utils/hyphenize.ts","../src/utils/fieldIds.ts","../src/components/Select/hooks/useAsyncOptions.ts","../src/components/Select/hooks/useLazyLoadSentinel.ts","../src/components/Select/hooks/useCreatableItems.ts","../src/components/Select/types.ts","../src/components/Select/utils.ts","../src/components/Select/hooks/useMultiSelectOptions.ts","../src/components/Select/constants.ts","../src/components/Select/hooks/useSelectState.ts","../src/components/Select/hooks/useMultiSelectState.ts","../src/components/Select/OptionItem.tsx","../src/components/Select/MultiSelectDropdown.tsx","../src/components/Select/SelectAnchor.tsx","../src/components/Select/SelectCombobox.tsx","../src/components/Select/MultiSelectCombobox.tsx","../src/components/Select/Select.tsx"],"sourcesContent":["export function hyphenize(str: string): string {\n return str\n .replace(/([a-z])([A-Z])/g, \"$1-$2\")\n .replace(/[\\s_]+/g, \"-\")\n .toLowerCase();\n}\n","import { hyphenize } from \"./hyphenize\";\n\nexport function buildAriaDescribedBy(\n error: string,\n errorId: string,\n helpText: React.ReactNode,\n helpTextId: string\n): string | undefined {\n return (\n [error ? errorId : null, helpText ? helpTextId : null]\n .filter(Boolean)\n .join(\" \") || undefined\n );\n}\n\nexport function buildTestIdPrefix(\n dataTestId: string | undefined,\n label: string\n): string | undefined {\n return dataTestId ?? (label ? hyphenize(label) : undefined);\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nimport type { SelectOptionBase } from \"src/components/Select/types\";\n\ninterface UseAsyncOptionsConfig {\n loadOptions?: (inputValue: string) => Promise<SelectOptionBase[]>;\n defaultOptions?: boolean | SelectOptionBase[];\n cacheOptions?: boolean;\n}\n\ninterface UseAsyncOptionsReturn {\n asyncOptions: SelectOptionBase[];\n isLoading: boolean;\n handleAsyncInputChange: (value: string) => void;\n}\n\nexport function useAsyncOptions({\n loadOptions,\n defaultOptions = false,\n cacheOptions = false,\n}: UseAsyncOptionsConfig): UseAsyncOptionsReturn {\n const [asyncOptions, setAsyncOptions] = useState<SelectOptionBase[]>(() =>\n Array.isArray(defaultOptions) ? defaultOptions : []\n );\n const [isLoading, setIsLoading] = useState(false);\n const cacheRef = useRef<Record<string, SelectOptionBase[]>>({});\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const latestRequestRef = useRef(0);\n const mountedRef = useRef(true);\n\n // Load default options on mount when `defaultOptions === true`\n useEffect(() => {\n if (!loadOptions || defaultOptions !== true) return;\n let cancelled = false;\n setIsLoading(true);\n loadOptions(\"\")\n .then(results => {\n if (cancelled) return;\n setAsyncOptions(results);\n if (cacheOptions) cacheRef.current[\"\"] = results;\n setIsLoading(false);\n })\n .catch(() => {\n if (!cancelled) setIsLoading(false);\n });\n return () => {\n cancelled = true;\n };\n }, []);\n\n // Clean up debounce timer and mark unmounted\n useEffect(() => {\n return () => {\n mountedRef.current = false;\n if (debounceRef.current) clearTimeout(debounceRef.current);\n };\n }, []);\n\n const handleAsyncInputChange = useCallback(\n (value: string) => {\n if (!loadOptions) return;\n\n const query = value.trim();\n\n // Check cache first\n if (cacheOptions && query in cacheRef.current) {\n setAsyncOptions(cacheRef.current[query]);\n return;\n }\n\n // Debounce the fetch\n if (debounceRef.current) clearTimeout(debounceRef.current);\n debounceRef.current = setTimeout(() => {\n const requestId = ++latestRequestRef.current;\n setIsLoading(true);\n loadOptions(query)\n .then(results => {\n if (requestId !== latestRequestRef.current || !mountedRef.current)\n return;\n setAsyncOptions(results);\n if (cacheOptions) cacheRef.current[query] = results;\n setIsLoading(false);\n })\n .catch(() => {\n if (requestId === latestRequestRef.current && mountedRef.current) {\n setIsLoading(false);\n }\n });\n }, 300);\n },\n [loadOptions, cacheOptions]\n );\n\n return { asyncOptions, isLoading, handleAsyncInputChange };\n}\n","import { useCallback, useEffect, useRef } from \"react\";\n\ninterface UseLazyLoadSentinelConfig {\n fetchMore?: () => void;\n isEnabled: boolean;\n}\n\nexport function useLazyLoadSentinel({\n fetchMore,\n isEnabled,\n}: UseLazyLoadSentinelConfig) {\n const observerRef = useRef<IntersectionObserver | null>(null);\n const fetchMoreRef = useRef(fetchMore);\n fetchMoreRef.current = fetchMore;\n\n const sentinelRef = useCallback(\n (node: HTMLDivElement | null) => {\n observerRef.current?.disconnect();\n observerRef.current = null;\n\n if (!node || !isEnabled) return;\n\n const observer = new IntersectionObserver(\n entries => {\n if (entries[0]?.isIntersecting) fetchMoreRef.current?.();\n },\n { root: null, rootMargin: \"0px\", threshold: 0.1 }\n );\n observer.observe(node);\n observerRef.current = observer;\n },\n [isEnabled]\n );\n\n // Clean up observer on unmount\n useEffect(() => {\n return () => {\n observerRef.current?.disconnect();\n };\n }, []);\n\n return sentinelRef;\n}\n","import React, { useCallback, useMemo, useState } from \"react\";\n\nimport { computeEffectiveItems } from \"src/components/Select/utils\";\nimport type { SelectOptionBase as MultiSelectOptionBase } from \"src/components/Select/types\";\n\nexport const CREATE_PREFIX = \"__create__:\";\n\ninterface UseCreatableItemsConfig {\n isCreatable: boolean;\n isGrouped: boolean;\n flatOptions: MultiSelectOptionBase[];\n selectedValues: string[];\n baseUiItems?: string[] | { label: string; items: string[] }[];\n onCreateOption?: (inputValue: string) => void;\n onChange?: (values: string[]) => void;\n onAsyncInputChange?: (value: string) => void;\n children?: React.ReactNode;\n}\n\ninterface UseCreatableItemsReturn {\n inputValue: string;\n showCreateOption: boolean;\n effectiveItems: string[] | { label: string; items: string[] }[] | undefined;\n creatableFilter: (\n itemValue: string,\n query: string,\n itemToString?: (v: string) => string\n ) => boolean;\n handleInputValueChange: (value: string) => void;\n handleValueChange: (next: string[] | null) => void;\n}\n\nexport function useCreatableItems({\n isCreatable,\n isGrouped,\n flatOptions,\n selectedValues,\n baseUiItems,\n onCreateOption,\n onChange,\n onAsyncInputChange,\n children,\n}: UseCreatableItemsConfig): UseCreatableItemsReturn {\n const [inputValue, setInputValue] = useState(\"\");\n\n const handleInputValueChange = useCallback(\n (value: string) => {\n setInputValue(value);\n onAsyncInputChange?.(value);\n },\n [onAsyncInputChange]\n );\n\n const trimmedInput = inputValue.trim();\n const showCreateOption = useMemo(() => {\n if (!isCreatable || trimmedInput.length === 0) return false;\n const lower = trimmedInput.toLowerCase();\n return (\n !flatOptions.some(\n o => o.label.toLowerCase() === lower || o.value.toLowerCase() === lower\n ) && !selectedValues.includes(trimmedInput)\n );\n }, [isCreatable, trimmedInput, flatOptions, selectedValues]);\n\n const effectiveItems = React.useMemo(\n () =>\n computeEffectiveItems(\n children,\n baseUiItems,\n showCreateOption,\n isGrouped,\n trimmedInput\n ),\n [baseUiItems, children, isGrouped, showCreateOption, trimmedInput]\n );\n\n // Custom filter: always pass the \"Create\" item through\n const creatableFilter = useCallback(\n (\n itemValue: string,\n query: string,\n itemToString?: (v: string) => string\n ) => {\n if (itemValue.startsWith(CREATE_PREFIX)) return true;\n const label = itemToString?.(itemValue) ?? itemValue;\n return label.toLowerCase().includes(query.toLowerCase());\n },\n []\n );\n\n const handleValueChange = useCallback(\n (next: string[] | null) => {\n const raw = next ?? [];\n\n const createEntry = raw.find(v => v.startsWith(CREATE_PREFIX));\n if (createEntry) {\n const newValue = createEntry.slice(CREATE_PREFIX.length);\n const withNewValue = raw.map(v => (v === createEntry ? newValue : v));\n onCreateOption?.(newValue);\n onChange?.(withNewValue);\n return;\n }\n\n onChange?.(raw);\n },\n [onChange, onCreateOption]\n );\n\n return {\n inputValue,\n showCreateOption,\n effectiveItems,\n creatableFilter,\n handleInputValueChange,\n handleValueChange,\n };\n}\n","import type React from \"react\";\n\nimport type { ComboboxContent } from \"src/primitives/Combobox\";\nimport type { FieldLabel } from \"src/primitives/Field\";\n\nexport interface OptionBase {\n /** Display text for the option. */\n label: string;\n /** Unique value for the option. */\n value: string;\n /** Whether the option is disabled. */\n disabled?: boolean;\n}\n\nexport interface OptionGroup {\n /** Group heading text. */\n label: string;\n /** Options within this group. */\n options: OptionBase[];\n}\n\nexport type Option = OptionBase | OptionGroup;\n\nexport function isOptionGroup(opt: Option): opt is OptionGroup {\n return \"options\" in opt && Array.isArray(opt.options);\n}\n\nexport type SelectOptionBase = OptionBase;\nexport type SelectOptionGroup = OptionGroup;\nexport type SelectOption = Option;\n\ntype SelectSize = \"small\" | \"medium\" | \"large\";\n\ninterface SelectSharedProps {\n /** Unique identifier for the select. Auto-generated if omitted. */\n id?: string;\n /** Name attribute forwarded to the underlying input. */\n name?: string;\n /** Size of the trigger. */\n size?: SelectSize;\n /** Label displayed above the select. */\n label?: string;\n /** Error message displayed below the select. */\n error?: string;\n /** Help text displayed below the select. */\n helpText?: React.ReactNode;\n /** Placeholder text when no value is selected. */\n placeholder?: string;\n /** Flat or grouped option list. */\n options?: SelectOption[];\n /** Disable the select. */\n isDisabled?: boolean;\n /** Mark as required. */\n required?: boolean;\n /**\n * Enable search/filtering of options by typing in the input.\n * When false, the input is hidden and the trigger shows the selected label.\n * @default true\n */\n isSearchable?: boolean;\n /** Whether the first matching item is highlighted automatically. @default true */\n autoHighlight?: boolean;\n /** Callback fired when the dropdown opens or closes. */\n onOpenChange?: (open: boolean) => void;\n /**\n * Positioning strategy for the dropdown content.\n * @deprecated The Combobox primitive always uses popper-style positioning.\n * Use `contentProps.side` and `contentProps.align` for positioning control.\n */\n position?: \"item-aligned\" | \"popper\";\n /** Show a clear/reset button when a value is selected. */\n isClearable?: boolean;\n /**\n * Allow creating new options by typing a value that doesn't exist.\n * Works in both single and multi mode.\n */\n isCreatable?: boolean;\n /**\n * Callback fired when a new option is created via the \"Create X\" item.\n * The parent should update the `options` list to include the new value.\n */\n onCreateOption?: (inputValue: string) => void;\n /**\n * Customize the label for the \"Create\" option in the dropdown.\n * @default (inputValue) => `Create \"${inputValue}\"`\n */\n formatCreateLabel?: (inputValue: string) => string;\n /**\n * Async function that fetches options based on the current input value.\n * Works in both single and multi mode.\n */\n loadOptions?: (inputValue: string) => Promise<SelectOptionBase[]>;\n /**\n * Options to show before the user types anything.\n * When `true`, `loadOptions(\"\")` is called on mount.\n * @default false\n */\n defaultOptions?: boolean | SelectOptionBase[];\n /**\n * Cache results from `loadOptions` so repeated queries are instant.\n * @default false\n */\n cacheOptions?: boolean;\n /** Text shown while `loadOptions` is fetching. @default \"Loading…\" */\n loadingMessage?: string;\n /** Text displayed when no options match. @default \"No results found.\" */\n emptyMessage?: string;\n /**\n * Enable lazy loading of options as the user scrolls.\n * @default false\n */\n isAsyncLoadOptionEnabled?: boolean;\n /** Callback to load the next batch of options (lazy loading). */\n fetchMore?: () => void;\n /** Total number of options on the server (lazy loading). */\n totalOptionsCount?: number;\n /** Custom data-testid prefix for the component tree. */\n dataTestId?: string;\n /** Props forwarded to the FieldLabel. */\n labelProps?: Omit<\n React.ComponentProps<typeof FieldLabel>,\n \"htmlFor\" | \"children\"\n >;\n /** Props forwarded to the ComboboxContent. */\n contentProps?: Omit<\n React.ComponentProps<typeof ComboboxContent>,\n \"anchor\" | \"children\"\n >;\n /** Additional CSS class names for the outermost wrapper. */\n className?: string;\n /** Additional CSS class names for the input/trigger element. */\n inputClassName?: string;\n /** Children rendered inside the dropdown (overrides `options`). */\n children?: React.ReactNode;\n /**\n * Customize how each option is rendered. Receives the matched option (looked\n * up from `options` by value) and returns a ReactNode. Used in the dropdown\n * list and in the trigger (single-select label / multi-select chips).\n * String filtering still uses `option.label` for searchable behavior.\n */\n formatOptionLabel?: (option: SelectOptionBase) => React.ReactNode;\n /**\n * Customize how the selected value is rendered in the trigger only. When\n * provided, takes precedence over `formatOptionLabel` for the trigger;\n * dropdown rows still use `formatOptionLabel` (or the default label).\n * Single-select only. Useful when the trigger needs a compact representation\n * (e.g. flag-only) while options show fuller content (flag + name).\n */\n formatTriggerLabel?: (option: SelectOptionBase) => React.ReactNode;\n}\n\ninterface SingleSelectProps extends SelectSharedProps {\n /** When true, multiple values can be selected and the trigger shows chips. @default false */\n isMulti?: false;\n /** Controlled selected value. */\n value?: string;\n /** Default selected value (uncontrolled). */\n defaultValue?: string;\n /** Callback fired when value changes. */\n onChange?: (value: string) => void;\n}\n\ninterface MultiSelectVariantProps extends SelectSharedProps {\n /** When true, multiple values can be selected and the trigger shows chips. */\n isMulti: true;\n /** Controlled selected values. */\n value?: string[];\n /** Default selected values (uncontrolled). */\n defaultValue?: string[];\n /** Callback fired when selected values change. */\n onChange?: (values: string[]) => void;\n /** Additional CSS class names for the chips container. */\n chipsClassName?: string;\n /** Hide the remove button on individual chips. */\n hideChipRemove?: boolean;\n}\n\nexport type SelectProps = SingleSelectProps | MultiSelectVariantProps;\n\nexport type MultiSelectProps = Extract<SelectProps, { isMulti: true }>;\n","import { CREATE_PREFIX } from \"./hooks/useCreatableItems\";\nimport { isOptionGroup } from \"./types\";\nimport type {\n SelectOption as MultiSelectOption,\n SelectOptionBase as MultiSelectOptionBase,\n} from \"./types\";\n\n/** Flatten grouped options into a flat lookup array. */\nexport function flattenOptions(\n options: MultiSelectOption[]\n): MultiSelectOptionBase[] {\n return options.flatMap(opt => (isOptionGroup(opt) ? opt.options : [opt]));\n}\n\n/** Check if any option is a group. */\nexport function hasGroups(options: MultiSelectOption[]): boolean {\n return options.some(isOptionGroup);\n}\n\n/** Convert options to base-ui `items` format for filtering support. */\nexport function toBaseUiItems(\n options: MultiSelectOption[]\n): string[] | { label: string; items: string[] }[] {\n if (hasGroups(options)) {\n return options.filter(isOptionGroup).map(g => ({\n label: g.label,\n items: g.options.map(o => o.value),\n }));\n }\n return (options as MultiSelectOptionBase[]).map(o => o.value);\n}\n\n/** Build the effective items array, appending a \"Create\" entry when needed. */\nexport function computeEffectiveItems(\n children: unknown,\n baseUiItems: string[] | { label: string; items: string[] }[] | undefined,\n showCreateOption: boolean,\n isGrouped: boolean,\n trimmedInput: string\n): string[] | { label: string; items: string[] }[] | undefined {\n if (children) return undefined;\n\n const createValue = showCreateOption\n ? `${CREATE_PREFIX}${trimmedInput}`\n : null;\n\n if (!baseUiItems && !createValue) return undefined;\n\n const base = baseUiItems ?? ([] as string[]);\n\n if (!createValue) return base;\n\n if (!isGrouped) {\n return [...(base as string[]), createValue];\n }\n\n return [\n ...(base as { label: string; items: string[] }[]),\n { label: \"\", items: [createValue] },\n ];\n}\n","import React from \"react\";\n\nimport { useAsyncOptions } from \"./useAsyncOptions\";\nimport { useLazyLoadSentinel } from \"./useLazyLoadSentinel\";\nimport {\n flattenOptions,\n hasGroups,\n toBaseUiItems,\n} from \"src/components/Select/utils\";\nimport type { SelectOption as MultiSelectOption } from \"src/components/Select/types\";\n\ninterface UseMultiSelectOptionsConfig {\n options?: MultiSelectOption[];\n loadOptions?: (\n inputValue: string\n ) => Promise<{ label: string; value: string; disabled?: boolean }[]>;\n defaultOptions?:\n | boolean\n | { label: string; value: string; disabled?: boolean }[];\n cacheOptions?: boolean;\n isAsyncLoadOptionEnabled?: boolean;\n fetchMore?: () => void;\n totalOptionsCount?: number;\n}\n\nexport function useMultiSelectOptions(props: UseMultiSelectOptionsConfig) {\n const isAsync = !!props.loadOptions;\n\n const { asyncOptions, isLoading, handleAsyncInputChange } = useAsyncOptions({\n loadOptions: props.loadOptions,\n defaultOptions: props.defaultOptions ?? false,\n cacheOptions: props.cacheOptions ?? false,\n });\n\n const resolvedOptions: MultiSelectOption[] = isAsync\n ? asyncOptions\n : (props.options ?? []);\n const flatOptions = flattenOptions(resolvedOptions);\n const isGrouped = hasGroups(resolvedOptions);\n\n const baseUiItems = React.useMemo(\n () =>\n resolvedOptions.length > 0 ? toBaseUiItems(resolvedOptions) : undefined,\n [resolvedOptions]\n );\n\n const hasMoreLazy =\n (props.isAsyncLoadOptionEnabled ?? false) &&\n typeof props.totalOptionsCount === \"number\" &&\n flatOptions.length < props.totalOptionsCount;\n\n const loaderCallbackRef = useLazyLoadSentinel({\n fetchMore: props.fetchMore,\n isEnabled: props.isAsyncLoadOptionEnabled ?? false,\n });\n\n return {\n isAsync,\n resolvedOptions,\n flatOptions,\n isGrouped,\n isLoading,\n handleAsyncInputChange,\n baseUiItems,\n hasMoreLazy,\n loaderCallbackRef,\n };\n}\n","// SIZE_CONFIG is shared by both SelectCombobox (single-select) and\n// MultiSelectCombobox (multi-select). Keys mirror the MultiSelect constants\n// that previously lived in MultiSelect.constants.ts.\n//\n// Mobile (<768px) uses 16px input font-size to prevent iOS Safari auto-zoom\n// on focus. Desktop (md+) keeps the original text sizes. Chip sizing is\n// unchanged because chips are non-interactive badges that don't trigger\n// iOS zoom.\nexport const SIZE_CONFIG: Record<\n \"small\" | \"medium\" | \"large\",\n { chips: string; input: string; chip: string; icon: string }\n> = {\n small: {\n chips: \"min-h-8 md:min-h-7 text-base md:text-xs gap-0.5 px-1 py-0.5\",\n input: \"text-base md:text-xs\",\n chip: \"h-4.5 text-[0.6875rem] px-1\",\n icon: \"size-3.5\",\n },\n medium: {\n chips: \"min-h-8 text-base md:text-sm gap-1 px-2.5 py-1\",\n input: \"text-base md:text-sm\",\n chip: \"h-5.25 text-xs px-1.5\",\n icon: \"size-4\",\n },\n large: {\n chips: \"min-h-10 text-base md:text-sm gap-1 px-2.5 py-1.5\",\n input: \"text-base md:text-sm\",\n chip: \"h-6 text-xs px-2\",\n icon: \"size-5\",\n },\n};\n","import { useCallback, useId, useMemo, useState } from \"react\";\nimport type React from \"react\";\n\nimport { buildAriaDescribedBy, buildTestIdPrefix } from \"src/utils/fieldIds\";\nimport { useMultiSelectOptions } from \"./useMultiSelectOptions\";\nimport { CREATE_PREFIX } from \"./useCreatableItems\";\nimport { SIZE_CONFIG } from \"src/components/Select/constants\";\nimport type { SelectProps } from \"src/components/Select/types\";\n\ntype SingleSelectProps = Extract<SelectProps, { isMulti?: false }>;\n\nconst defaultFormatCreateLabel = (v: string) => `Create \"${v}\"`;\n\nexport function useSelectState(props: SingleSelectProps) {\n const {\n id: idProp,\n size = \"medium\",\n label = \"\",\n error = \"\",\n helpText = \"\",\n value: valueProp,\n defaultValue,\n onChange,\n dataTestId,\n isCreatable = false,\n onCreateOption,\n formatCreateLabel = defaultFormatCreateLabel,\n formatOptionLabel,\n formatTriggerLabel,\n isClearable = false,\n isDisabled = false,\n required = false,\n isSearchable = true,\n autoHighlight = true,\n onOpenChange,\n children,\n } = props;\n\n const opt = useMultiSelectOptions(props);\n\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const errorId = `error_${id}`;\n const helpTextId = `helpText_${id}`;\n const sizeConfig = SIZE_CONFIG[size];\n\n const isControlled = valueProp !== undefined;\n const [internalValue, setInternalValue] = useState<string>(\n defaultValue ?? \"\"\n );\n const currentValue = isControlled ? (valueProp ?? \"\") : internalValue;\n\n const applyValue = useCallback(\n (next: string) => {\n if (!isControlled) setInternalValue(next);\n onChange?.(next);\n },\n [isControlled, onChange]\n );\n\n const handleValueChange = useCallback(\n (next: string | null) => {\n const raw = next ?? \"\";\n\n // Handle the creatable \"Create X\" option\n if (raw.startsWith(CREATE_PREFIX)) {\n const newValue = raw.slice(CREATE_PREFIX.length);\n onCreateOption?.(newValue);\n applyValue(newValue);\n return;\n }\n\n applyValue(raw);\n },\n [applyValue, onCreateOption]\n );\n\n const [inputValue, setInputValueState] = useState(\"\");\n const trimmedInput = inputValue.trim();\n\n const combinedHandleInputValueChange = useCallback(\n (value: string) => {\n setInputValueState(value);\n if (opt.isAsync) opt.handleAsyncInputChange(value);\n },\n [opt.isAsync, opt.handleAsyncInputChange]\n );\n\n const handleClear = useCallback(() => {\n applyValue(\"\");\n }, [applyValue]);\n\n const showCreateOption = useMemo(() => {\n if (\n !isCreatable ||\n trimmedInput.length === 0 ||\n currentValue === trimmedInput\n )\n return false;\n\n const lower = trimmedInput.toLowerCase();\n return !opt.flatOptions.some(\n o => o.label.toLowerCase() === lower || o.value.toLowerCase() === lower\n );\n }, [isCreatable, trimmedInput, currentValue, opt.flatOptions]);\n\n const effectiveItems = useMemo(() => {\n if (children) return undefined;\n const base = opt.baseUiItems;\n if (!showCreateOption) return base;\n const createValue = `${CREATE_PREFIX}${trimmedInput}`;\n if (!opt.isGrouped) {\n return [...((base as string[]) ?? []), createValue];\n }\n return [\n ...((base as { label: string; items: string[] }[]) ?? []),\n { label: \"\", items: [createValue] },\n ];\n }, [\n children,\n opt.baseUiItems,\n opt.isGrouped,\n showCreateOption,\n trimmedInput,\n ]);\n\n const creatableFilter = useCallback(\n (\n itemValue: string,\n query: string,\n itemToString?: (v: string) => string\n ) => {\n if (itemValue.startsWith(CREATE_PREFIX)) return true;\n const label = itemToString?.(itemValue) ?? itemValue;\n return label.toLowerCase().includes(query.toLowerCase());\n },\n []\n );\n\n const ariaDescribedBy = buildAriaDescribedBy(\n error,\n errorId,\n helpText,\n helpTextId\n );\n const testIdPrefix = buildTestIdPrefix(dataTestId, label);\n const showClearButton = isClearable && !!currentValue && !isDisabled;\n\n const flatOptionsMap = useMemo(\n () => new Map(opt.flatOptions.map(o => [o.value, o])),\n [opt.flatOptions]\n );\n\n const labelForValue = useCallback(\n (val: string) => {\n if (val.startsWith(CREATE_PREFIX)) {\n return formatCreateLabel(val.slice(CREATE_PREFIX.length));\n }\n return flatOptionsMap.get(val)?.label ?? val;\n },\n [flatOptionsMap, formatCreateLabel]\n );\n\n const renderOption = useCallback<(val: string) => React.ReactNode>(\n val => {\n if (formatOptionLabel && !val.startsWith(CREATE_PREFIX)) {\n const option = flatOptionsMap.get(val);\n if (option) return formatOptionLabel(option);\n }\n return labelForValue(val);\n },\n [formatOptionLabel, flatOptionsMap, labelForValue]\n );\n\n const renderTrigger = useCallback<(val: string) => React.ReactNode>(\n val => {\n if (formatTriggerLabel && !val.startsWith(CREATE_PREFIX)) {\n const option = flatOptionsMap.get(val);\n if (option) return formatTriggerLabel(option);\n }\n return renderOption(val);\n },\n [formatTriggerLabel, flatOptionsMap, renderOption]\n );\n\n return {\n ...opt,\n id,\n errorId,\n helpTextId,\n sizeConfig,\n isControlled,\n currentValue,\n effectiveItems,\n creatableFilter,\n handleValueChange,\n handleInputValueChange: combinedHandleInputValueChange,\n handleClear,\n showCreateOption,\n showClearButton,\n ariaDescribedBy,\n testIdPrefix,\n labelForValue,\n renderOption,\n renderTrigger,\n flatOptionsMap,\n label,\n error,\n helpText,\n isDisabled,\n required,\n isSearchable,\n autoHighlight,\n onOpenChange,\n isClearable,\n };\n}\n","import { useCallback, useId, useMemo, useState } from \"react\";\nimport type React from \"react\";\n\nconst defaultFormatCreateLabel = (v: string) => `Create \"${v}\"`;\n\nimport { buildAriaDescribedBy, buildTestIdPrefix } from \"src/utils/fieldIds\";\nimport { useCreatableItems, CREATE_PREFIX } from \"./useCreatableItems\";\nimport { useMultiSelectOptions } from \"./useMultiSelectOptions\";\nimport { SIZE_CONFIG } from \"src/components/Select/constants\";\nimport type { MultiSelectProps } from \"src/components/Select/types\";\n\nexport function useMultiSelectState(props: MultiSelectProps) {\n const {\n id: idProp,\n size = \"medium\",\n label = \"\",\n error = \"\",\n helpText = \"\",\n value: valueProp,\n defaultValue,\n onChange,\n dataTestId,\n isCreatable = false,\n onCreateOption,\n formatCreateLabel = defaultFormatCreateLabel,\n formatOptionLabel,\n children,\n } = props;\n\n const opt = useMultiSelectOptions(props);\n\n const generatedId = useId();\n const id = idProp ?? generatedId;\n const errorId = `error_${id}`;\n const helpTextId = `helpText_${id}`;\n const sizeConfig = SIZE_CONFIG[size];\n\n const isControlled = valueProp !== undefined;\n const [internalValue, setInternalValue] = useState<string[]>(\n defaultValue ?? []\n );\n const selectedValues = isControlled ? valueProp : internalValue;\n\n const handleChange = useCallback(\n (values: string[]) => {\n setInternalValue(values);\n onChange?.(values);\n },\n [onChange]\n );\n\n const {\n showCreateOption,\n effectiveItems,\n creatableFilter,\n handleInputValueChange,\n handleValueChange,\n } = useCreatableItems({\n isCreatable,\n isGrouped: opt.isGrouped,\n flatOptions: opt.flatOptions,\n selectedValues,\n baseUiItems: opt.baseUiItems,\n onCreateOption,\n onChange: handleChange,\n onAsyncInputChange: opt.isAsync ? opt.handleAsyncInputChange : undefined,\n children,\n });\n\n const ariaDescribedBy = buildAriaDescribedBy(\n error,\n errorId,\n helpText,\n helpTextId\n );\n const testIdPrefix = buildTestIdPrefix(dataTestId, label);\n\n const flatOptionsMap = useMemo(\n () => new Map(opt.flatOptions.map(o => [o.value, o])),\n [opt.flatOptions]\n );\n\n const labelForValue = useCallback(\n (val: string) => {\n if (val.startsWith(CREATE_PREFIX)) {\n return formatCreateLabel(val.slice(CREATE_PREFIX.length));\n }\n return flatOptionsMap.get(val)?.label ?? val;\n },\n [flatOptionsMap, formatCreateLabel]\n );\n\n const renderOption = useCallback<(val: string) => React.ReactNode>(\n val => {\n if (formatOptionLabel && !val.startsWith(CREATE_PREFIX)) {\n const option = flatOptionsMap.get(val);\n if (option) return formatOptionLabel(option);\n }\n return labelForValue(val);\n },\n [formatOptionLabel, flatOptionsMap, labelForValue]\n );\n\n return {\n ...opt,\n id,\n errorId,\n helpTextId,\n sizeConfig,\n isControlled,\n selectedValues,\n effectiveItems,\n creatableFilter,\n handleInputValueChange,\n handleValueChange,\n showCreateOption,\n ariaDescribedBy,\n testIdPrefix,\n labelForValue,\n renderOption,\n flatOptionsMap,\n label,\n error,\n helpText,\n };\n}\n","import type React from \"react\";\n\nimport { ComboboxItem } from \"src/primitives/Combobox\";\nimport { CREATE_PREFIX } from \"./hooks/useCreatableItems\";\nimport type { OptionBase } from \"./types\";\n\ninterface OptionItemProps {\n val: string;\n flatOptionsMap: Map<string, OptionBase>;\n renderOption: (val: string) => React.ReactNode;\n testIdPrefix?: string;\n}\n\nexport function OptionItem({\n val,\n flatOptionsMap,\n renderOption,\n testIdPrefix,\n}: OptionItemProps) {\n return (\n <ComboboxItem\n key={val}\n value={val}\n disabled={\n !val.startsWith(CREATE_PREFIX) && flatOptionsMap.get(val)?.disabled\n }\n className={val.startsWith(CREATE_PREFIX) ? \"text-primary\" : undefined}\n {...(testIdPrefix\n ? { \"data-testid\": `${testIdPrefix}-select-option` }\n : {})}\n >\n {renderOption(val)}\n </ComboboxItem>\n );\n}\n","import type React from \"react\";\n\nimport {\n ComboboxList,\n ComboboxGroup,\n ComboboxLabel,\n ComboboxCollection,\n ComboboxEmpty,\n} from \"src/primitives/Combobox\";\nimport { Spinner } from \"src/primitives/Spinner\";\nimport { OptionItem } from \"./OptionItem\";\nimport type { DropdownPassthroughProps } from \"./MultiSelectCombobox.types\";\n\ninterface MultiSelectDropdownProps extends DropdownPassthroughProps {\n renderOption: (val: string) => React.ReactNode;\n testIdPrefix?: string;\n children?: React.ReactNode;\n}\n\nexport function MultiSelectDropdown({\n resolvedOptions,\n flatOptionsMap,\n isGrouped,\n isLoading,\n loadingMessage,\n emptyMessage,\n showCreateOption,\n renderOption,\n testIdPrefix,\n hasMoreLazy,\n loaderCallbackRef,\n children,\n}: MultiSelectDropdownProps) {\n return (\n <ComboboxList\n {...(testIdPrefix\n ? { \"data-testid\": `${testIdPrefix}-select-menu` }\n : {})}\n >\n {isLoading && (\n <div className=\"flex w-full justify-center py-2 text-center text-sm text-muted-foreground\">\n {loadingMessage}\n </div>\n )}\n {!isLoading && !showCreateOption && (\n <ComboboxEmpty>{emptyMessage}</ComboboxEmpty>\n )}\n {children ??\n (resolvedOptions.length > 0 || showCreateOption ? (\n isGrouped ? (\n <ComboboxCollection>\n {(group: { label: string; items: string[] }) => (\n <ComboboxGroup\n key={group.label || \"__create__\"}\n items={group.items}\n >\n {group.label && <ComboboxLabel>{group.label}</ComboboxLabel>}\n <ComboboxCollection>\n {(val: string) => (\n <OptionItem\n key={val}\n val={val}\n flatOptionsMap={flatOptionsMap}\n renderOption={renderOption}\n testIdPrefix={testIdPrefix}\n />\n )}\n </ComboboxCollection>\n </ComboboxGroup>\n )}\n </ComboboxCollection>\n ) : (\n <ComboboxCollection>\n {(val: string) => (\n <OptionItem\n key={val}\n val={val}\n flatOptionsMap={flatOptionsMap}\n renderOption={renderOption}\n testIdPrefix={testIdPrefix}\n />\n )}\n </ComboboxCollection>\n )\n ) : null)}\n {hasMoreLazy && (\n <div\n ref={loaderCallbackRef}\n className=\"flex w-full items-center justify-center py-3\"\n data-testid={\n testIdPrefix ? `${testIdPrefix}-lazy-loader` : \"lazy-loader\"\n }\n >\n <Spinner />\n </div>\n )}\n </ComboboxList>\n );\n}\n","import { forwardRef } from \"react\";\n\nimport { Combobox as ComboboxPrimitive } from \"@base-ui/react\";\n\ninterface SelectAnchorProps {\n isSearchable: boolean;\n className?: string;\n dataTestId?: string;\n children: React.ReactNode;\n}\n\nexport const SelectAnchor = forwardRef<HTMLDivElement, SelectAnchorProps>(\n ({ isSearchable, className, dataTestId, children }, ref) => {\n if (isSearchable) {\n return (\n <div\n ref={ref}\n className={className}\n {...(dataTestId ? { \"data-testid\": dataTestId } : {})}\n >\n {children}\n </div>\n );\n }\n\n return (\n <ComboboxPrimitive.Trigger\n nativeButton={false}\n render={props => (\n <div\n {...props}\n ref={ref}\n className={className}\n {...(dataTestId ? { \"data-testid\": dataTestId } : {})}\n />\n )}\n >\n {children}\n </ComboboxPrimitive.Trigger>\n );\n }\n);\n\nSelectAnchor.displayName = \"SelectAnchor\";\n","import { forwardRef, useCallback, useState } from \"react\";\nimport { ChevronDownIcon, XIcon } from \"lucide-react\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Combobox,\n ComboboxContent,\n ComboboxChips,\n ComboboxChipsInput,\n ComboboxTrigger,\n} from \"src/primitives/Combobox\";\nimport { MultiSelectDropdown } from \"./MultiSelectDropdown\";\nimport { SelectAnchor } from \"./SelectAnchor\";\nimport type { SelectComboboxProps } from \"./SelectCombobox.types\";\n\nexport const SelectCombobox = forwardRef<HTMLInputElement, SelectComboboxProps>(\n (\n {\n name,\n id,\n effectiveItems,\n labelForValue,\n renderOption,\n renderTrigger,\n isSearchable,\n isAsync,\n isCreatable,\n creatableFilter,\n currentValue,\n handleValueChange,\n handleInputValueChange,\n handleClear,\n onOpenChange,\n isDisabled,\n autoHighlight,\n required,\n showClearButton,\n sizeConfig,\n error,\n placeholder,\n ariaDescribedBy,\n testIdPrefix,\n inputClassName,\n contentProps,\n dropdownProps,\n children,\n },\n ref\n ) => {\n const [anchorEl, setAnchorEl] = useState<HTMLDivElement | null>(null);\n\n const handleClearClick = useCallback(\n (event: React.MouseEvent) => {\n event.stopPropagation();\n event.preventDefault();\n handleClear();\n },\n [handleClear]\n );\n\n return (\n // @ts-expect-error — conditional spread creates a union that TS cannot narrow to the Combobox discriminated-union props\n <Combobox\n name={name}\n {...(effectiveItems && !children\n ? {\n items: effectiveItems,\n itemToStringLabel: labelForValue as (val: unknown) => string,\n ...(!isSearchable || isAsync\n ? { filter: null }\n : isCreatable\n ? { filter: creatableFilter }\n : {}),\n }\n : {})}\n value={currentValue}\n onValueChange={handleValueChange as (next: unknown) => void}\n {...(isCreatable || isAsync\n ? { onInputValueChange: handleInputValueChange }\n : {})}\n onOpenChange={onOpenChange}\n disabled={isDisabled}\n autoHighlight={autoHighlight}\n >\n <SelectAnchor\n ref={setAnchorEl}\n isSearchable={isSearchable}\n dataTestId={testIdPrefix}\n className={!isSearchable ? \"cursor-pointer\" : undefined}\n >\n <ComboboxChips\n className={cn(\n sizeConfig.chips,\n !!error &&\n \"border-destructive ring-3 ring-destructive/20 dark:border-destructive/50 dark:ring-destructive/40\",\n inputClassName\n )}\n {...(testIdPrefix\n ? { \"data-testid\": `${testIdPrefix}-select-container` }\n : {})}\n >\n {!isSearchable &&\n (currentValue ? (\n <span className=\"flex-1 truncate\">\n {renderTrigger(currentValue)}\n </span>\n ) : (\n <span className=\"flex-1 truncate text-muted-foreground\">\n {placeholder}\n </span>\n ))}\n <ComboboxChipsInput\n ref={ref}\n id={id}\n placeholder={\n isSearchable && !currentValue ? placeholder : undefined\n }\n aria-invalid={!!error || undefined}\n aria-describedby={ariaDescribedBy}\n aria-required={required || undefined}\n className={cn(\n sizeConfig.input,\n !isSearchable && \"w-0 min-w-0 overflow-hidden p-0 opacity-0\"\n )}\n disabled={isDisabled}\n {...(testIdPrefix\n ? { \"data-testid\": `${testIdPrefix}-select-input` }\n : {})}\n />\n {showClearButton && (\n <button\n type=\"button\"\n tabIndex={-1}\n aria-label=\"Clear selection\"\n className=\"shrink-0 text-muted-foreground hover:text-foreground\"\n onClick={handleClearClick}\n >\n <XIcon className={sizeConfig.icon} />\n </button>\n )}\n {isSearchable ? (\n <ComboboxTrigger\n className={cn(\n \"shrink-0 bg-transparent p-0 text-muted-foreground hover:bg-transparent\",\n sizeConfig.icon\n )}\n />\n ) : (\n <ChevronDownIcon\n aria-hidden\n className={cn(\n \"pointer-events-none shrink-0 text-muted-foreground\",\n sizeConfig.icon\n )}\n />\n )}\n </ComboboxChips>\n </SelectAnchor>\n\n <ComboboxContent anchor={anchorEl} {...contentProps}>\n <MultiSelectDropdown\n {...dropdownProps}\n renderOption={renderOption}\n testIdPrefix={testIdPrefix}\n >\n {children}\n </MultiSelectDropdown>\n </ComboboxContent>\n </Combobox>\n );\n }\n);\n\nSelectCombobox.displayName = \"SelectCombobox\";\n","import { forwardRef, useState } from \"react\";\nimport { cn } from \"src/shadcn/lib/utils\";\nimport {\n Combobox,\n ComboboxContent,\n ComboboxChips,\n ComboboxChip,\n ComboboxChipsInput,\n} from \"src/primitives/Combobox\";\nimport { MultiSelectDropdown } from \"./MultiSelectDropdown\";\nimport { SelectAnchor } from \"./SelectAnchor\";\nimport type { MultiSelectComboboxProps } from \"./MultiSelectCombobox.types\";\n\nexport const MultiSelectCombobox = forwardRef<\n HTMLInputElement,\n MultiSelectComboboxProps\n>(\n (\n {\n name,\n id,\n effectiveItems,\n labelForValue,\n renderOption,\n isSearchable,\n isAsync,\n isCreatable,\n creatableFilter,\n isControlled,\n valueProp,\n defaultValue,\n selectedValues,\n handleValueChange,\n handleInputValueChange,\n onOpenChange,\n isDisabled,\n autoHighlight,\n required,\n sizeConfig,\n error,\n chipsClassName,\n inputClassName,\n placeholder,\n hideChipRemove,\n ariaDescribedBy,\n testIdPrefix,\n contentProps,\n dropdownProps,\n children,\n },\n ref\n ) => {\n const [anchorEl, setAnchorEl] = useState<HTMLDivElement | null>(null);\n\n return (\n // @ts-expect-error — conditional spread creates a union that TS cannot narrow to the Combobox discriminated-union props\n <Combobox\n multiple\n name={name}\n {...(effectiveItems && !children\n ? {\n items: effectiveItems,\n itemToStringLabel: labelForValue as (val: unknown) => string,\n ...(!isSearchable || isAsync\n ? { filter: null }\n : isCreatable\n ? { filter: creatableFilter }\n : {}),\n }\n : {})}\n {...(isControlled ? { value: valueProp } : { defaultValue })}\n onValueChange={handleValueChange as (...args: unknown[]) => void}\n {...(isCreatable || isAsync\n ? { onInputValueChange: handleInputValueChange }\n : {})}\n onOpenChange={onOpenChange}\n disabled={isDisabled}\n autoHighlight={autoHighlight}\n >\n <SelectAnchor\n ref={setAnchorEl}\n isSearchable={isSearchable}\n className={!isSearchable ? \"cursor-pointer\" : undefined}\n >\n <ComboboxChips\n className={cn(\n sizeConfig.chips,\n !!error &&\n \"border-destructive ring-3 ring-destructive/20 dark:border-destructive/50 dark:ring-destructive/40\",\n chipsClassName,\n inputClassName\n )}\n {...(testIdPrefix\n ? { \"data-testid\": `${testIdPrefix}-select-container` }\n : {})}\n >\n {selectedValues.map(val => (\n <ComboboxChip\n key={val}\n className={sizeConfig.chip}\n showRemove={!hideChipRemove}\n {...(testIdPrefix\n ? { \"data-testid\": `${testIdPrefix}-chip` }\n : {})}\n >\n {renderOption(val)}\n </ComboboxChip>\n ))}\n <ComboboxChipsInput\n ref={ref}\n id={id}\n placeholder={\n isSearchable && selectedValues.length === 0\n ? placeholder\n : undefined\n }\n aria-invalid={!!error || undefined}\n aria-describedby={ariaDescribedBy}\n aria-required={required || undefined}\n className={cn(\n sizeConfig.input,\n !isSearchable && \"w-0 min-w-0 overflow-hidden p-0 opacity-0\"\n )}\n disabled={isDisabled}\n {...(testIdPrefix\n ? { \"data-testid\": `${testIdPrefix}-select-input` }\n : {})}\n />\n </ComboboxChips>\n </SelectAnchor>\n <ComboboxContent anchor={anchorEl} {...contentProps}>\n <MultiSelectDropdown\n {...dropdownProps}\n renderOption={renderOption}\n testIdPrefix={testIdPrefix}\n >\n {children}\n </MultiSelectDropdown>\n </ComboboxContent>\n </Combobox>\n );\n }\n);\nMultiSelectCombobox.displayName = \"MultiSelectCombobox\";\n","import { forwardRef } from \"react\";\n\nimport { useSelectState } from \"./hooks/useSelectState\";\nimport { useMultiSelectState } from \"./hooks/useMultiSelectState\";\nimport { SelectFieldWrapper } from \"./SelectFieldWrapper\";\nimport { SelectCombobox } from \"./SelectCombobox\";\nimport { MultiSelectCombobox } from \"./MultiSelectCombobox\";\nimport type { SelectProps, MultiSelectProps } from \"./types\";\n\nexport type {\n SelectProps,\n SelectOption,\n SelectOptionBase,\n SelectOptionGroup,\n} from \"./types\";\n\ntype SingleSelectProps = Extract<SelectProps, { isMulti?: false }>;\n\nconst SingleSelectInner = forwardRef<HTMLInputElement, SingleSelectProps>(\n (props, ref) => {\n const {\n id,\n label,\n error,\n helpText,\n errorId,\n helpTextId,\n isDisabled,\n required,\n testIdPrefix,\n effectiveItems,\n labelForValue,\n renderOption,\n renderTrigger,\n isSearchable,\n isAsync,\n creatableFilter,\n isControlled,\n currentValue,\n handleValueChange,\n handleInputValueChange,\n handleClear,\n autoHighlight,\n showClearButton,\n sizeConfig,\n ariaDescribedBy,\n resolvedOptions,\n flatOptionsMap,\n isGrouped,\n isLoading,\n showCreateOption,\n hasMoreLazy,\n loaderCallbackRef,\n } = useSelectState(props);\n\n return (\n <SelectFieldWrapper\n id={id}\n label={label}\n error={error}\n helpText={helpText}\n errorId={errorId}\n helpTextId={helpTextId}\n isDisabled={isDisabled}\n required={required}\n testIdPrefix={testIdPrefix}\n labelProps={props.labelProps}\n className={props.className}\n >\n <SelectCombobox\n ref={ref}\n name={props.name}\n id={id}\n effectiveItems={effectiveItems}\n labelForValue={labelForValue}\n renderOption={renderOption}\n renderTrigger={renderTrigger}\n isSearchable={isSearchable}\n isAsync={isAsync}\n isCreatable={props.isCreatable ?? false}\n creatableFilter={creatableFilter}\n isControlled={isControlled}\n valueProp={props.value}\n defaultValue={props.defaultValue}\n currentValue={currentValue}\n handleValueChange={handleValueChange}\n handleInputValueChange={handleInputValueChange}\n handleClear={handleClear}\n onOpenChange={props.onOpenChange}\n isDisabled={isDisabled}\n autoHighlight={autoHighlight}\n required={required}\n isClearable={props.isClearable ?? false}\n showClearButton={showClearButton}\n sizeConfig={sizeConfig}\n error={error}\n placeholder={props.placeholder ?? \"\"}\n ariaDescribedBy={ariaDescribedBy}\n testIdPrefix={testIdPrefix}\n inputClassName={props.inputClassName}\n contentProps={props.contentProps}\n dropdownProps={{\n resolvedOptions,\n flatOptionsMap,\n isGrouped,\n isLoading,\n loadingMessage: props.loadingMessage ?? \"Loading\\u2026\",\n emptyMessage: props.emptyMessage ?? \"No results found.\",\n showCreateOption,\n hasMoreLazy,\n loaderCallbackRef,\n }}\n >\n {props.children}\n </SelectCombobox>\n </SelectFieldWrapper>\n );\n }\n);\nSingleSelectInner.displayName = \"SingleSelectInner\";\n\nconst MultiSelectInner = forwardRef<HTMLInputElement, MultiSelectProps>(\n (props, ref) => {\n const {\n id,\n label,\n error,\n helpText,\n errorId,\n helpTextId,\n testIdPrefix,\n effectiveItems,\n labelForValue,\n renderOption,\n isAsync,\n creatableFilter,\n isControlled,\n selectedValues,\n handleValueChange,\n handleInputValueChange,\n sizeConfig,\n ariaDescribedBy,\n resolvedOptions,\n flatOptionsMap,\n isGrouped,\n isLoading,\n showCreateOption,\n hasMoreLazy,\n loaderCallbackRef,\n } = useMultiSelectState(props);\n const { isDisabled = false, required = false } = props;\n\n return (\n <SelectFieldWrapper\n id={id}\n label={label}\n error={error}\n helpText={helpText}\n errorId={errorId}\n helpTextId={helpTextId}\n isDisabled={isDisabled}\n required={required}\n testIdPrefix={testIdPrefix}\n labelProps={props.labelProps}\n className={props.className}\n >\n <MultiSelectCombobox\n ref={ref}\n name={props.name}\n id={id}\n effectiveItems={effectiveItems}\n labelForValue={labelForValue}\n renderOption={renderOption}\n isSearchable={props.isSearchable ?? true}\n isAsync={isAsync}\n isCreatable={props.isCreatable ?? false}\n creatableFilter={creatableFilter}\n isControlled={isControlled}\n valueProp={props.value}\n defaultValue={props.defaultValue}\n selectedValues={selectedValues}\n handleValueChange={handleValueChange as (...args: unknown[]) => void}\n handleInputValueChange={\n handleInputValueChange as (...args: unknown[]) => void\n }\n onOpenChange={props.onOpenChange}\n isDisabled={isDisabled}\n autoHighlight={props.autoHighlight ?? true}\n sizeConfig={sizeConfig}\n error={error}\n chipsClassName={props.chipsClassName}\n inputClassName={props.inputClassName}\n placeholder={props.placeholder ?? \"\"}\n hideChipRemove={props.hideChipRemove ?? false}\n ariaDescribedBy={ariaDescribedBy}\n required={required}\n testIdPrefix={testIdPrefix}\n contentProps={props.contentProps}\n dropdownProps={{\n resolvedOptions,\n flatOptionsMap,\n isGrouped,\n isLoading,\n loadingMessage: props.loadingMessage ?? \"Loading\\u2026\",\n emptyMessage: props.emptyMessage ?? \"No results found.\",\n showCreateOption,\n hasMoreLazy,\n loaderCallbackRef,\n }}\n >\n {props.children}\n </MultiSelectCombobox>\n </SelectFieldWrapper>\n );\n }\n);\nMultiSelectInner.displayName = \"MultiSelectInner\";\n\nconst Select = forwardRef<HTMLInputElement, SelectProps>((props, ref) => {\n if (props.isMulti === true) {\n return <MultiSelectInner {...(props as MultiSelectProps)} ref={ref} />;\n }\n return <SingleSelectInner {...(props as SingleSelectProps)} ref={ref} />;\n});\n\nSelect.displayName = \"Select\";\n\nexport { Select };\n"],"names":["React","defaultFormatCreateLabel","label","ComboboxPrimitive.Trigger","XIcon","ComboboxTrigger","ChevronDownIcon"],"mappings":"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"}