@osdk/react-components 0.9.0 → 0.10.0-main-b355bc3b41a4d89ec093054dc8d2845c772ef1e2

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 (102) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +23 -0
  3. package/build/browser/action-form/FormFieldApi.js +8 -0
  4. package/build/browser/action-form/FormFieldApi.js.map +1 -1
  5. package/build/browser/action-form/fields/AsyncDropdownField.js +81 -0
  6. package/build/browser/action-form/fields/AsyncDropdownField.js.map +1 -0
  7. package/build/browser/action-form/fields/AsyncDropdownField.module.css +31 -0
  8. package/build/browser/action-form/fields/AsyncDropdownField.module.css.js +8 -0
  9. package/build/browser/action-form/fields/DropdownField.js +29 -14
  10. package/build/browser/action-form/fields/DropdownField.js.map +1 -1
  11. package/build/browser/action-form/fields/FormFieldRenderer.js +17 -0
  12. package/build/browser/action-form/fields/FormFieldRenderer.js.map +1 -1
  13. package/build/browser/action-form/fields/ObjectSelectField.js +109 -0
  14. package/build/browser/action-form/fields/ObjectSelectField.js.map +1 -0
  15. package/build/browser/action-form/utils/getDefaultFieldDefinitions.js +14 -5
  16. package/build/browser/action-form/utils/getDefaultFieldDefinitions.js.map +1 -1
  17. package/build/browser/base-components/combobox/Combobox.module.css +23 -2
  18. package/build/browser/base-components/combobox/Combobox.module.css.js +3 -3
  19. package/build/browser/filter-list/base/inputs/TextTagsInput.js.map +1 -1
  20. package/build/browser/shared/hooks/useDebouncedValue.js +35 -0
  21. package/build/browser/shared/hooks/useDebouncedValue.js.map +1 -0
  22. package/build/browser/shared/hooks/useEventCallback.js +44 -0
  23. package/build/browser/shared/hooks/useEventCallback.js.map +1 -0
  24. package/build/browser/shared/hooks/useInfiniteScroll.js +81 -0
  25. package/build/browser/shared/hooks/useInfiniteScroll.js.map +1 -0
  26. package/build/browser/styles.css +73 -2
  27. package/build/browser/tokens/component-tokens/async-dropdown.css +16 -0
  28. package/build/browser/tokens.css +1 -0
  29. package/build/browser/util/UserAgent.js +1 -1
  30. package/build/browser/util/UserAgent.js.map +1 -1
  31. package/build/cjs/{chunk-EEES66LS.cjs → chunk-5DVHLBWS.cjs} +3 -3
  32. package/build/cjs/chunk-5DVHLBWS.cjs.map +1 -0
  33. package/build/cjs/{chunk-OXP3XQE4.cjs → chunk-ALZS624H.cjs} +47 -47
  34. package/build/cjs/{chunk-OXP3XQE4.cjs.map → chunk-ALZS624H.cjs.map} +1 -1
  35. package/build/cjs/{chunk-UEY63J2G.cjs → chunk-FURJRQWI.cjs} +9 -9
  36. package/build/cjs/{chunk-UEY63J2G.cjs.map → chunk-FURJRQWI.cjs.map} +1 -1
  37. package/build/cjs/{chunk-RY2GVYT2.cjs → chunk-MVNWOKH2.cjs} +49 -36
  38. package/build/cjs/chunk-MVNWOKH2.cjs.map +1 -0
  39. package/build/cjs/{chunk-O5ZAMFDU.cjs → chunk-QWFJF7IM.cjs} +468 -207
  40. package/build/cjs/chunk-QWFJF7IM.cjs.map +1 -0
  41. package/build/cjs/{chunk-2FPKTOPE.cjs → chunk-XBXC6VAS.cjs} +2 -2
  42. package/build/cjs/{chunk-2FPKTOPE.cjs.map → chunk-XBXC6VAS.cjs.map} +1 -1
  43. package/build/cjs/{chunk-SHTQGKS5.cjs → chunk-Z3CXMFCZ.cjs} +4 -4
  44. package/build/cjs/{chunk-SHTQGKS5.cjs.map → chunk-Z3CXMFCZ.cjs.map} +1 -1
  45. package/build/cjs/public/experimental/action-form.cjs +6 -6
  46. package/build/cjs/public/experimental/action-form.css +24 -1
  47. package/build/cjs/public/experimental/action-form.css.map +1 -1
  48. package/build/cjs/public/experimental/action-form.d.cts +48 -3
  49. package/build/cjs/public/experimental/filter-list.cjs +7 -7
  50. package/build/cjs/public/experimental/filter-list.css +9 -1
  51. package/build/cjs/public/experimental/filter-list.css.map +1 -1
  52. package/build/cjs/public/experimental/object-table.cjs +10 -10
  53. package/build/cjs/public/experimental/object-table.css +9 -1
  54. package/build/cjs/public/experimental/object-table.css.map +1 -1
  55. package/build/cjs/public/experimental/pdf-viewer.cjs +24 -24
  56. package/build/cjs/public/experimental.cjs +41 -41
  57. package/build/cjs/public/experimental.css +24 -1
  58. package/build/cjs/public/experimental.css.map +1 -1
  59. package/build/esm/action-form/FormFieldApi.js +8 -0
  60. package/build/esm/action-form/FormFieldApi.js.map +1 -1
  61. package/build/esm/action-form/fields/AsyncDropdownField.js +81 -0
  62. package/build/esm/action-form/fields/AsyncDropdownField.js.map +1 -0
  63. package/build/esm/action-form/fields/AsyncDropdownField.module.css +31 -0
  64. package/build/esm/action-form/fields/DropdownField.js +29 -14
  65. package/build/esm/action-form/fields/DropdownField.js.map +1 -1
  66. package/build/esm/action-form/fields/FormFieldRenderer.js +17 -0
  67. package/build/esm/action-form/fields/FormFieldRenderer.js.map +1 -1
  68. package/build/esm/action-form/fields/ObjectSelectField.js +109 -0
  69. package/build/esm/action-form/fields/ObjectSelectField.js.map +1 -0
  70. package/build/esm/action-form/utils/getDefaultFieldDefinitions.js +14 -5
  71. package/build/esm/action-form/utils/getDefaultFieldDefinitions.js.map +1 -1
  72. package/build/esm/base-components/combobox/Combobox.module.css +23 -2
  73. package/build/esm/filter-list/base/inputs/TextTagsInput.js.map +1 -1
  74. package/build/esm/shared/hooks/useDebouncedValue.js +35 -0
  75. package/build/esm/shared/hooks/useDebouncedValue.js.map +1 -0
  76. package/build/esm/shared/hooks/useEventCallback.js +44 -0
  77. package/build/esm/shared/hooks/useEventCallback.js.map +1 -0
  78. package/build/esm/shared/hooks/useInfiniteScroll.js +81 -0
  79. package/build/esm/shared/hooks/useInfiniteScroll.js.map +1 -0
  80. package/build/esm/tokens/component-tokens/async-dropdown.css +16 -0
  81. package/build/esm/tokens.css +1 -0
  82. package/build/esm/util/UserAgent.js +1 -1
  83. package/build/esm/util/UserAgent.js.map +1 -1
  84. package/build/types/action-form/FormFieldApi.d.ts +48 -3
  85. package/build/types/action-form/FormFieldApi.d.ts.map +1 -1
  86. package/build/types/action-form/fields/AsyncDropdownField.d.ts +25 -0
  87. package/build/types/action-form/fields/AsyncDropdownField.d.ts.map +1 -0
  88. package/build/types/action-form/fields/DropdownField.d.ts +2 -2
  89. package/build/types/action-form/fields/DropdownField.d.ts.map +1 -1
  90. package/build/types/action-form/fields/FormFieldRenderer.d.ts.map +1 -1
  91. package/build/types/action-form/fields/ObjectSelectField.d.ts +3 -0
  92. package/build/types/action-form/fields/ObjectSelectField.d.ts.map +1 -0
  93. package/build/types/shared/hooks/useDebouncedValue.d.ts +5 -0
  94. package/build/types/shared/hooks/useDebouncedValue.d.ts.map +1 -0
  95. package/build/types/shared/hooks/useEventCallback.d.ts +13 -0
  96. package/build/types/shared/hooks/useEventCallback.d.ts.map +1 -0
  97. package/build/types/shared/hooks/useInfiniteScroll.d.ts +19 -0
  98. package/build/types/shared/hooks/useInfiniteScroll.d.ts.map +1 -0
  99. package/package.json +9 -9
  100. package/build/cjs/chunk-EEES66LS.cjs.map +0 -1
  101. package/build/cjs/chunk-O5ZAMFDU.cjs.map +0 -1
  102. package/build/cjs/chunk-RY2GVYT2.cjs.map +0 -1
@@ -1,32 +1,51 @@
1
1
  'use strict';
2
2
 
3
3
  var chunkUCTQICPR_cjs = require('./chunk-UCTQICPR.cjs');
4
- var chunkRY2GVYT2_cjs = require('./chunk-RY2GVYT2.cjs');
4
+ var chunkMVNWOKH2_cjs = require('./chunk-MVNWOKH2.cjs');
5
5
  var chunkJLESWL47_cjs = require('./chunk-JLESWL47.cjs');
6
6
  var chunkY5ULR6PM_cjs = require('./chunk-Y5ULR6PM.cjs');
7
- var chunk2FPKTOPE_cjs = require('./chunk-2FPKTOPE.cjs');
7
+ var chunkXBXC6VAS_cjs = require('./chunk-XBXC6VAS.cjs');
8
8
  var chunk7LXS66DW_cjs = require('./chunk-7LXS66DW.cjs');
9
- var chunkEEES66LS_cjs = require('./chunk-EEES66LS.cjs');
9
+ var chunk5DVHLBWS_cjs = require('./chunk-5DVHLBWS.cjs');
10
10
  var react = require('@osdk/react');
11
11
  var experimental = require('@osdk/react/experimental');
12
- var React15 = require('react');
12
+ var React18 = require('react');
13
13
  var icons = require('@blueprintjs/icons');
14
14
  var classnames = require('classnames');
15
15
  var reactHookForm = require('react-hook-form');
16
16
  var input = require('@base-ui/react/input');
17
17
  var popover = require('@base-ui/react/popover');
18
18
  var button = require('@base-ui/react/button');
19
+ var lodashEs = require('lodash-es');
19
20
  var radio = require('@base-ui/react/radio');
20
21
  var radioGroup = require('@base-ui/react/radio-group');
21
22
 
22
23
  function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
23
24
 
24
- var React15__default = /*#__PURE__*/_interopDefault(React15);
25
+ function _interopNamespace(e) {
26
+ if (e && e.__esModule) return e;
27
+ var n = Object.create(null);
28
+ if (e) {
29
+ Object.keys(e).forEach(function (k) {
30
+ if (k !== 'default') {
31
+ var d = Object.getOwnPropertyDescriptor(e, k);
32
+ Object.defineProperty(n, k, d.get ? d : {
33
+ enumerable: true,
34
+ get: function () { return e[k]; }
35
+ });
36
+ }
37
+ });
38
+ }
39
+ n.default = e;
40
+ return Object.freeze(n);
41
+ }
42
+
43
+ var React18__namespace = /*#__PURE__*/_interopNamespace(React18);
25
44
  var classnames__default = /*#__PURE__*/_interopDefault(classnames);
26
45
 
27
46
  function useIsMounted() {
28
- const isMountedRef = React15.useRef(true);
29
- React15.useEffect(function trackMountedState() {
47
+ const isMountedRef = React18.useRef(true);
48
+ React18.useEffect(function trackMountedState() {
30
49
  return () => {
31
50
  isMountedRef.current = false;
32
51
  };
@@ -36,10 +55,10 @@ function useIsMounted() {
36
55
 
37
56
  // src/shared/hooks/useAsyncAction.ts
38
57
  function useAsyncAction(action) {
39
- const [isPending, setIsPending] = React15.useState(false);
40
- const [error, setError] = React15.useState(void 0);
58
+ const [isPending, setIsPending] = React18.useState(false);
59
+ const [error, setError] = React18.useState(void 0);
41
60
  const isMountedRef = useIsMounted();
42
- const execute = React15.useCallback(async (...args) => {
61
+ const execute = React18.useCallback(async (...args) => {
43
62
  setError(void 0);
44
63
  setIsPending(true);
45
64
  try {
@@ -54,7 +73,7 @@ function useAsyncAction(action) {
54
73
  }
55
74
  }
56
75
  }, [action, isMountedRef]);
57
- const clearError = React15.useCallback(() => {
76
+ const clearError = React18.useCallback(() => {
58
77
  setError(void 0);
59
78
  }, []);
60
79
  return {
@@ -228,7 +247,7 @@ function formatBytes(bytes) {
228
247
  var FormField_default = {};
229
248
 
230
249
  // src/action-form/FormField.tsx
231
- var FormField = /* @__PURE__ */ React15.memo(function FormFieldFn({
250
+ var FormField = /* @__PURE__ */ React18.memo(function FormFieldFn({
232
251
  fieldKey,
233
252
  label,
234
253
  isRequired,
@@ -237,41 +256,41 @@ var FormField = /* @__PURE__ */ React15.memo(function FormFieldFn({
237
256
  onBlur,
238
257
  children
239
258
  }) {
240
- return /* @__PURE__ */ React15__default.default.createElement("div", {
259
+ return /* @__PURE__ */ React18__namespace.default.createElement("div", {
241
260
  className: FormField_default.osdkFormField,
242
261
  onBlur
243
- }, label != null && /* @__PURE__ */ React15__default.default.createElement("label", {
262
+ }, label != null && /* @__PURE__ */ React18__namespace.default.createElement("label", {
244
263
  className: FormField_default.osdkFormFieldLabel,
245
264
  htmlFor: fieldKey
246
- }, label, isRequired === true && /* @__PURE__ */ React15__default.default.createElement("span", {
265
+ }, label, isRequired === true && /* @__PURE__ */ React18__namespace.default.createElement("span", {
247
266
  className: FormField_default.osdkFormFieldRequired,
248
267
  "aria-label": "required"
249
- }, " ", "*")), children, error != null && /* @__PURE__ */ React15__default.default.createElement("div", {
268
+ }, " ", "*")), children, error != null && /* @__PURE__ */ React18__namespace.default.createElement("div", {
250
269
  className: FormField_default.osdkFormFieldError,
251
270
  role: "alert"
252
- }, error), helperText != null && /* @__PURE__ */ React15__default.default.createElement("div", {
271
+ }, error), helperText != null && /* @__PURE__ */ React18__namespace.default.createElement("div", {
253
272
  className: FormField_default.osdkFormFieldHelperText
254
273
  }, helperText));
255
274
  });
256
275
 
257
276
  // src/action-form/FormFieldApi.ts
258
277
  var EMPTY_RANGE = [null, null];
259
- var CustomField = /* @__PURE__ */ React15.memo(function CustomFieldFn({
278
+ var CustomField = /* @__PURE__ */ React18.memo(function CustomFieldFn({
260
279
  customRenderer: CustomRenderer,
261
280
  ...baseProps
262
281
  }) {
263
- return /* @__PURE__ */ React15__default.default.createElement(CustomRenderer, baseProps);
282
+ return /* @__PURE__ */ React18__namespace.default.createElement(CustomRenderer, baseProps);
264
283
  });
265
284
 
266
285
  // src/action-form/fields/DateRangeInputField.module.css
267
286
  var DateRangeInputField_default = {};
268
- var DateRangeCalendarLazy = /* @__PURE__ */ React15__default.default.lazy(() => import('./DateRangeCalendar-JHO2BF3Z.cjs'));
287
+ var DateRangeCalendarLazy = /* @__PURE__ */ React18__namespace.default.lazy(() => import('./DateRangeCalendar-JHO2BF3Z.cjs'));
269
288
  function LazyDateRangeCalendar(props) {
270
- return /* @__PURE__ */ React15__default.default.createElement(React15.Suspense, {
271
- fallback: /* @__PURE__ */ React15__default.default.createElement("div", {
272
- className: chunkRY2GVYT2_cjs.DatePickerCommon_default.osdkDatePickerFallback
289
+ return /* @__PURE__ */ React18__namespace.default.createElement(React18.Suspense, {
290
+ fallback: /* @__PURE__ */ React18__namespace.default.createElement("div", {
291
+ className: chunkMVNWOKH2_cjs.DatePickerCommon_default.osdkDatePickerFallback
273
292
  })
274
- }, /* @__PURE__ */ React15__default.default.createElement(DateRangeCalendarLazy, props));
293
+ }, /* @__PURE__ */ React18__namespace.default.createElement(DateRangeCalendarLazy, props));
275
294
  }
276
295
 
277
296
  // src/action-form/fields/DateRangeInputField.tsx
@@ -285,14 +304,14 @@ function _extends() {
285
304
  }, _extends.apply(null, arguments);
286
305
  }
287
306
  var SHARED_INPUT_PROPS = {
288
- className: chunkRY2GVYT2_cjs.DatePickerCommon_default.osdkDatePickerInput,
307
+ className: chunkMVNWOKH2_cjs.DatePickerCommon_default.osdkDatePickerInput,
289
308
  type: "text",
290
309
  onClick: chunkJLESWL47_cjs.stopPropagation,
291
310
  autoComplete: "off",
292
311
  role: "combobox",
293
312
  "aria-haspopup": "dialog"
294
313
  };
295
- var DateRangeInputField = /* @__PURE__ */ React15__default.default.memo(function DateRangeInputField2({
314
+ var DateRangeInputField = /* @__PURE__ */ React18__namespace.default.memo(function DateRangeInputField2({
296
315
  id,
297
316
  value,
298
317
  onChange,
@@ -306,23 +325,23 @@ var DateRangeInputField = /* @__PURE__ */ React15__default.default.memo(function
306
325
  parseDate
307
326
  }) {
308
327
  const shouldCloseOnSelection = !showTime;
309
- const popoverId = React15.useId();
310
- const startInputRef = React15.useRef(null);
311
- const endInputRef = React15.useRef(null);
312
- const popoverRef = React15.useRef(null);
313
- const [isOpen, setIsOpen] = React15.useState(false);
314
- const [activeBoundary, setActiveBoundary] = React15.useState("start");
328
+ const popoverId = React18.useId();
329
+ const startInputRef = React18.useRef(null);
330
+ const endInputRef = React18.useRef(null);
331
+ const popoverRef = React18.useRef(null);
332
+ const [isOpen, setIsOpen] = React18.useState(false);
333
+ const [activeBoundary, setActiveBoundary] = React18.useState("start");
315
334
  const [startDate, endDate] = value ?? EMPTY_RANGE;
316
- const editFormatFn = showTime ? chunk2FPKTOPE_cjs.formatDatetimeForInput : chunk2FPKTOPE_cjs.formatDateForInput;
317
- const displayFormatFn = formatDate ?? (showTime ? chunk2FPKTOPE_cjs.formatDatetimeForInput : chunk2FPKTOPE_cjs.formatDateForDisplay);
318
- const parseFn = parseDate ?? (showTime ? chunk2FPKTOPE_cjs.parseDatetimeFromInput : chunk2FPKTOPE_cjs.parseDateFromInput);
319
- const startOnChange = React15.useCallback((date) => {
335
+ const editFormatFn = showTime ? chunkXBXC6VAS_cjs.formatDatetimeForInput : chunkXBXC6VAS_cjs.formatDateForInput;
336
+ const displayFormatFn = formatDate ?? (showTime ? chunkXBXC6VAS_cjs.formatDatetimeForInput : chunkXBXC6VAS_cjs.formatDateForDisplay);
337
+ const parseFn = parseDate ?? (showTime ? chunkXBXC6VAS_cjs.parseDatetimeFromInput : chunkXBXC6VAS_cjs.parseDateFromInput);
338
+ const startOnChange = React18.useCallback((date) => {
320
339
  if (date != null && isOverlapping(date, endDate, allowSingleDayRange)) {
321
340
  return;
322
341
  }
323
342
  onChange?.([date, endDate ?? null]);
324
343
  }, [endDate, onChange, allowSingleDayRange]);
325
- const endOnChange = React15.useCallback((date) => {
344
+ const endOnChange = React18.useCallback((date) => {
326
345
  if (date != null && isOverlapping(startDate, date, allowSingleDayRange)) {
327
346
  return;
328
347
  }
@@ -338,7 +357,7 @@ var DateRangeInputField = /* @__PURE__ */ React15__default.default.memo(function
338
357
  commitAndStopEditing: commitStartAndStopEditing,
339
358
  setInputValue: setStartInputValue,
340
359
  setDateValue: setStartDateValue
341
- } = chunkRY2GVYT2_cjs.useDateEditState({
360
+ } = chunkMVNWOKH2_cjs.useDateEditState({
342
361
  value: startDate,
343
362
  displayFormatFn,
344
363
  editFormatFn,
@@ -357,7 +376,7 @@ var DateRangeInputField = /* @__PURE__ */ React15__default.default.memo(function
357
376
  commitAndStopEditing: commitEndAndStopEditing,
358
377
  setInputValue: setEndInputValue,
359
378
  setDateValue: setEndDateValue
360
- } = chunkRY2GVYT2_cjs.useDateEditState({
379
+ } = chunkMVNWOKH2_cjs.useDateEditState({
361
380
  value: endDate,
362
381
  displayFormatFn,
363
382
  editFormatFn,
@@ -374,17 +393,17 @@ var DateRangeInputField = /* @__PURE__ */ React15__default.default.memo(function
374
393
  })();
375
394
  const startInvalid = startInputError != null || hasOverlapError;
376
395
  const endInvalid = endInputError != null || hasOverlapError;
377
- const handleStartFocus = React15.useCallback(() => {
396
+ const handleStartFocus = React18.useCallback(() => {
378
397
  beginStartEditing();
379
398
  setActiveBoundary("start");
380
399
  setIsOpen(true);
381
400
  }, [beginStartEditing]);
382
- const handleEndFocus = React15.useCallback(() => {
401
+ const handleEndFocus = React18.useCallback(() => {
383
402
  beginEndEditing();
384
403
  setActiveBoundary("end");
385
404
  setIsOpen(true);
386
405
  }, [beginEndEditing]);
387
- const handleStartBlur = React15.useCallback((e) => {
406
+ const handleStartBlur = React18.useCallback((e) => {
388
407
  const related = e.relatedTarget ?? document.activeElement;
389
408
  if (popoverRef.current?.contains(related)) {
390
409
  e.stopPropagation();
@@ -395,7 +414,7 @@ var DateRangeInputField = /* @__PURE__ */ React15__default.default.memo(function
395
414
  }
396
415
  commitStartAndStopEditing();
397
416
  }, [commitStartAndStopEditing]);
398
- const handleEndBlur = React15.useCallback((e) => {
417
+ const handleEndBlur = React18.useCallback((e) => {
399
418
  const related = e.relatedTarget ?? document.activeElement;
400
419
  if (popoverRef.current?.contains(related)) {
401
420
  e.stopPropagation();
@@ -406,14 +425,14 @@ var DateRangeInputField = /* @__PURE__ */ React15__default.default.memo(function
406
425
  }
407
426
  commitEndAndStopEditing();
408
427
  }, [commitEndAndStopEditing]);
409
- const closePopover = React15.useCallback(() => {
428
+ const closePopover = React18.useCallback(() => {
410
429
  setIsOpen(false);
411
430
  stopStartEditing();
412
431
  stopEndEditing();
413
432
  startInputRef.current?.blur();
414
433
  endInputRef.current?.blur();
415
434
  }, [stopStartEditing, stopEndEditing]);
416
- const handleStartKeyDown = React15.useCallback((e) => {
435
+ const handleStartKeyDown = React18.useCallback((e) => {
417
436
  if (e.key === "Enter") {
418
437
  e.preventDefault();
419
438
  commitStartAndStopEditing();
@@ -425,7 +444,7 @@ var DateRangeInputField = /* @__PURE__ */ React15__default.default.memo(function
425
444
  setIsOpen(false);
426
445
  }
427
446
  }, [commitStartAndStopEditing, closePopover]);
428
- const handleEndKeyDown = React15.useCallback((e) => {
447
+ const handleEndKeyDown = React18.useCallback((e) => {
429
448
  if (e.key === "Enter") {
430
449
  e.preventDefault();
431
450
  commitEndAndStopEditing();
@@ -441,14 +460,14 @@ var DateRangeInputField = /* @__PURE__ */ React15__default.default.memo(function
441
460
  }
442
461
  }
443
462
  }, [commitEndAndStopEditing, closePopover, isOpen]);
444
- const handleOpenChange = React15.useCallback((nextOpen) => {
463
+ const handleOpenChange = React18.useCallback((nextOpen) => {
445
464
  if (nextOpen) {
446
465
  setIsOpen(true);
447
466
  } else {
448
467
  closePopover();
449
468
  }
450
469
  }, [closePopover]);
451
- const handleRangeSelect = React15.useCallback((range) => {
470
+ const handleRangeSelect = React18.useCallback((range) => {
452
471
  const newStart = range?.from ?? null;
453
472
  const newEnd = range?.to ?? null;
454
473
  onChange?.([newStart, newEnd]);
@@ -463,31 +482,31 @@ var DateRangeInputField = /* @__PURE__ */ React15__default.default.memo(function
463
482
  setEndDateValue(newEnd);
464
483
  }
465
484
  }, [onChange, shouldCloseOnSelection, closePopover, stopStartEditing, setStartDateValue, setEndDateValue]);
466
- const handleStartTimeChange = React15.useCallback((timeString) => {
485
+ const handleStartTimeChange = React18.useCallback((timeString) => {
467
486
  const {
468
487
  hours,
469
488
  minutes
470
- } = chunk2FPKTOPE_cjs.parseTimeString(timeString);
489
+ } = chunkXBXC6VAS_cjs.parseTimeString(timeString);
471
490
  const base = startDate != null ? new Date(startDate.getTime()) : /* @__PURE__ */ new Date();
472
491
  base.setHours(hours, minutes, 0, 0);
473
492
  onChange?.([base, endDate ?? null]);
474
493
  setStartDateValue(base);
475
494
  }, [startDate, endDate, onChange, setStartDateValue]);
476
- const handleEndTimeChange = React15.useCallback((timeString) => {
495
+ const handleEndTimeChange = React18.useCallback((timeString) => {
477
496
  const {
478
497
  hours,
479
498
  minutes
480
- } = chunk2FPKTOPE_cjs.parseTimeString(timeString);
499
+ } = chunkXBXC6VAS_cjs.parseTimeString(timeString);
481
500
  const base = endDate != null ? new Date(endDate.getTime()) : /* @__PURE__ */ new Date();
482
501
  base.setHours(hours, minutes, 0, 0);
483
502
  onChange?.([startDate ?? null, base]);
484
503
  setEndDateValue(base);
485
504
  }, [startDate, endDate, onChange, setEndDateValue]);
486
- const handleStartFocusBoundary = React15.useCallback(() => {
505
+ const handleStartFocusBoundary = React18.useCallback(() => {
487
506
  const activeRef = activeBoundary === "start" ? startInputRef : endInputRef;
488
507
  activeRef.current?.focus();
489
508
  }, [activeBoundary]);
490
- const handleEndFocusBoundary = React15.useCallback((e) => {
509
+ const handleEndFocusBoundary = React18.useCallback((e) => {
491
510
  const related = e.relatedTarget ?? document.activeElement;
492
511
  if (popoverRef.current?.contains(related)) {
493
512
  closePopover();
@@ -501,14 +520,14 @@ var DateRangeInputField = /* @__PURE__ */ React15__default.default.memo(function
501
520
  from: startDate ?? void 0,
502
521
  to: endDate ?? void 0
503
522
  } : void 0;
504
- const timeFooter = showTime ? /* @__PURE__ */ React15__default.default.createElement("div", {
523
+ const timeFooter = showTime ? /* @__PURE__ */ React18__namespace.default.createElement("div", {
505
524
  className: DateRangeInputField_default.osdkDateRangeTimeRow
506
- }, /* @__PURE__ */ React15__default.default.createElement(chunkRY2GVYT2_cjs.TimePicker, {
507
- value: chunk2FPKTOPE_cjs.getTimeValue(startDate),
525
+ }, /* @__PURE__ */ React18__namespace.default.createElement(chunkMVNWOKH2_cjs.TimePicker, {
526
+ value: chunkXBXC6VAS_cjs.getTimeValue(startDate),
508
527
  onChange: handleStartTimeChange,
509
528
  label: "Start time"
510
- }), /* @__PURE__ */ React15__default.default.createElement(chunkRY2GVYT2_cjs.TimePicker, {
511
- value: chunk2FPKTOPE_cjs.getTimeValue(endDate),
529
+ }), /* @__PURE__ */ React18__namespace.default.createElement(chunkMVNWOKH2_cjs.TimePicker, {
530
+ value: chunkXBXC6VAS_cjs.getTimeValue(endDate),
512
531
  onChange: handleEndTimeChange,
513
532
  label: "End time"
514
533
  })) : void 0;
@@ -516,17 +535,17 @@ var DateRangeInputField = /* @__PURE__ */ React15__default.default.memo(function
516
535
  ...SHARED_INPUT_PROPS,
517
536
  "aria-controls": popoverId
518
537
  };
519
- return /* @__PURE__ */ React15__default.default.createElement(popover.Popover.Root, {
538
+ return /* @__PURE__ */ React18__namespace.default.createElement(popover.Popover.Root, {
520
539
  open: isOpen,
521
540
  onOpenChange: handleOpenChange
522
- }, /* @__PURE__ */ React15__default.default.createElement(popover.Popover.Trigger, {
541
+ }, /* @__PURE__ */ React18__namespace.default.createElement(popover.Popover.Trigger, {
523
542
  nativeButton: false,
524
- render: /* @__PURE__ */ React15__default.default.createElement("div", {
543
+ render: /* @__PURE__ */ React18__namespace.default.createElement("div", {
525
544
  className: DateRangeInputField_default.osdkDateRangeContainer
526
545
  })
527
- }, /* @__PURE__ */ React15__default.default.createElement("div", {
528
- className: classnames__default.default(chunkRY2GVYT2_cjs.DatePickerCommon_default.osdkDatePickerInputWrapper, DateRangeInputField_default.osdkDateRangeInputWrapper, startInvalid && chunkRY2GVYT2_cjs.DatePickerCommon_default.osdkDatePickerInputWrapperError)
529
- }, /* @__PURE__ */ React15__default.default.createElement(input.Input, _extends({
546
+ }, /* @__PURE__ */ React18__namespace.default.createElement("div", {
547
+ className: classnames__default.default(chunkMVNWOKH2_cjs.DatePickerCommon_default.osdkDatePickerInputWrapper, DateRangeInputField_default.osdkDateRangeInputWrapper, startInvalid && chunkMVNWOKH2_cjs.DatePickerCommon_default.osdkDatePickerInputWrapperError)
548
+ }, /* @__PURE__ */ React18__namespace.default.createElement(input.Input, _extends({
530
549
  ref: startInputRef,
531
550
  id: id != null ? `${id}-start` : void 0,
532
551
  value: displayedStart,
@@ -538,9 +557,9 @@ var DateRangeInputField = /* @__PURE__ */ React15__default.default.memo(function
538
557
  "aria-expanded": isOpen && activeBoundary === "start",
539
558
  "aria-label": "Start date",
540
559
  "aria-invalid": startInvalid || void 0
541
- }, sharedInputProps))), /* @__PURE__ */ React15__default.default.createElement("div", {
542
- className: classnames__default.default(chunkRY2GVYT2_cjs.DatePickerCommon_default.osdkDatePickerInputWrapper, DateRangeInputField_default.osdkDateRangeInputWrapper, endInvalid && chunkRY2GVYT2_cjs.DatePickerCommon_default.osdkDatePickerInputWrapperError)
543
- }, /* @__PURE__ */ React15__default.default.createElement(input.Input, _extends({
560
+ }, sharedInputProps))), /* @__PURE__ */ React18__namespace.default.createElement("div", {
561
+ className: classnames__default.default(chunkMVNWOKH2_cjs.DatePickerCommon_default.osdkDatePickerInputWrapper, DateRangeInputField_default.osdkDateRangeInputWrapper, endInvalid && chunkMVNWOKH2_cjs.DatePickerCommon_default.osdkDatePickerInputWrapperError)
562
+ }, /* @__PURE__ */ React18__namespace.default.createElement(input.Input, _extends({
544
563
  ref: endInputRef,
545
564
  id: id != null ? `${id}-end` : void 0,
546
565
  value: displayedEnd,
@@ -552,30 +571,30 @@ var DateRangeInputField = /* @__PURE__ */ React15__default.default.memo(function
552
571
  "aria-expanded": isOpen && activeBoundary === "end",
553
572
  "aria-label": "End date",
554
573
  "aria-invalid": endInvalid || void 0
555
- }, sharedInputProps)))), /* @__PURE__ */ React15__default.default.createElement(popover.Popover.Portal, null, /* @__PURE__ */ React15__default.default.createElement(popover.Popover.Positioner, {
574
+ }, sharedInputProps)))), /* @__PURE__ */ React18__namespace.default.createElement(popover.Popover.Portal, null, /* @__PURE__ */ React18__namespace.default.createElement(popover.Popover.Positioner, {
556
575
  sideOffset: 4
557
- }, /* @__PURE__ */ React15__default.default.createElement(popover.Popover.Popup, {
576
+ }, /* @__PURE__ */ React18__namespace.default.createElement(popover.Popover.Popup, {
558
577
  ref: popoverRef,
559
- className: chunkRY2GVYT2_cjs.DatePickerCommon_default.osdkDatePickerPopover,
578
+ className: chunkMVNWOKH2_cjs.DatePickerCommon_default.osdkDatePickerPopover,
560
579
  id: popoverId,
561
580
  role: "dialog",
562
581
  "aria-label": "date range picker",
563
582
  finalFocus: false
564
- }, /* @__PURE__ */ React15__default.default.createElement("div", {
583
+ }, /* @__PURE__ */ React18__namespace.default.createElement("div", {
565
584
  onFocus: handleStartFocusBoundary,
566
585
  tabIndex: 0,
567
586
  "aria-label": "Start of date range picker dialog",
568
- className: chunkRY2GVYT2_cjs.DatePickerCommon_default.osdkDatePickerFocusBoundary
569
- }), /* @__PURE__ */ React15__default.default.createElement(LazyDateRangeCalendar, {
587
+ className: chunkMVNWOKH2_cjs.DatePickerCommon_default.osdkDatePickerFocusBoundary
588
+ }), /* @__PURE__ */ React18__namespace.default.createElement(LazyDateRangeCalendar, {
570
589
  selected: calendarSelected,
571
590
  onSelect: handleRangeSelect,
572
591
  min,
573
592
  max
574
- }), timeFooter, /* @__PURE__ */ React15__default.default.createElement("div", {
593
+ }), timeFooter, /* @__PURE__ */ React18__namespace.default.createElement("div", {
575
594
  onFocus: handleEndFocusBoundary,
576
595
  tabIndex: 0,
577
596
  "aria-label": "End of date range picker dialog",
578
- className: chunkRY2GVYT2_cjs.DatePickerCommon_default.osdkDatePickerFocusBoundary
597
+ className: chunkMVNWOKH2_cjs.DatePickerCommon_default.osdkDatePickerFocusBoundary
579
598
  })))));
580
599
  });
581
600
  function isOverlapping(start, end, allowSingleDayRange) {
@@ -588,7 +607,7 @@ function isOverlapping(start, end, allowSingleDayRange) {
588
607
  var FilePickerField_default = {};
589
608
 
590
609
  // src/action-form/fields/FilePickerField.tsx
591
- var FilePickerField = /* @__PURE__ */ React15.memo(function FilePickerFieldFn({
610
+ var FilePickerField = /* @__PURE__ */ React18.memo(function FilePickerFieldFn({
592
611
  id,
593
612
  value,
594
613
  onChange,
@@ -602,11 +621,11 @@ var FilePickerField = /* @__PURE__ */ React15.memo(function FilePickerFieldFn({
602
621
  text = "No file chosen",
603
622
  buttonText = "Browse"
604
623
  }) {
605
- const inputRef = React15.useRef(null);
606
- const openFileDialog = React15.useCallback(() => {
624
+ const inputRef = React18.useRef(null);
625
+ const openFileDialog = React18.useCallback(() => {
607
626
  inputRef.current?.click();
608
627
  }, []);
609
- const handleInputChange = React15.useCallback((event) => {
628
+ const handleInputChange = React18.useCallback((event) => {
610
629
  const files = event.target.files;
611
630
  if (files == null || files.length === 0) {
612
631
  onChange?.(null);
@@ -618,7 +637,7 @@ var FilePickerField = /* @__PURE__ */ React15.memo(function FilePickerFieldFn({
618
637
  onChange?.(files[0] ?? null);
619
638
  }
620
639
  }, [onChange, isMulti]);
621
- const handleClear = React15.useCallback((event) => {
640
+ const handleClear = React18.useCallback((event) => {
622
641
  event.stopPropagation();
623
642
  event.preventDefault();
624
643
  onChange?.(null);
@@ -626,22 +645,22 @@ var FilePickerField = /* @__PURE__ */ React15.memo(function FilePickerFieldFn({
626
645
  inputRef.current.value = "";
627
646
  }
628
647
  }, [onChange]);
629
- const handleKeyDown = React15.useCallback((event) => {
648
+ const handleKeyDown = React18.useCallback((event) => {
630
649
  if (event.key === "Enter" || event.key === " ") {
631
650
  event.preventDefault();
632
651
  openFileDialog();
633
652
  }
634
653
  }, [openFileDialog]);
635
- const displayText = React15.useMemo(() => getDisplayText(value), [value]);
654
+ const displayText = React18.useMemo(() => getDisplayText(value), [value]);
636
655
  const hasValue = displayText != null;
637
- const acceptString = React15.useMemo(() => normalizeAccept(accept), [accept]);
656
+ const acceptString = React18.useMemo(() => normalizeAccept(accept), [accept]);
638
657
  return (
639
658
  // The entire component is a single tab stop (tabIndex={0}).
640
659
  // Text and Browse are <span>s (not buttons) so they don't create
641
660
  // extra tab stops — clicks on them bubble up to the container's onClick.
642
661
  // The clear button is the only inner interactive element and gets its
643
662
  // own tab stop so keyboard users can clear the selection.
644
- /* @__PURE__ */ React15__default.default.createElement("div", {
663
+ /* @__PURE__ */ React18__namespace.default.createElement("div", {
645
664
  id,
646
665
  className: FilePickerField_default.osdkFilePickerTrigger,
647
666
  tabIndex: 0,
@@ -650,7 +669,7 @@ var FilePickerField = /* @__PURE__ */ React15.memo(function FilePickerFieldFn({
650
669
  onClick: openFileDialog,
651
670
  onKeyDown: handleKeyDown,
652
671
  "aria-invalid": error != null || void 0
653
- }, /* @__PURE__ */ React15__default.default.createElement("input", {
672
+ }, /* @__PURE__ */ React18__namespace.default.createElement("input", {
654
673
  ref: inputRef,
655
674
  type: "file",
656
675
  className: FilePickerField_default.osdkFilePickerHiddenInput,
@@ -658,15 +677,15 @@ var FilePickerField = /* @__PURE__ */ React15.memo(function FilePickerFieldFn({
658
677
  accept: acceptString,
659
678
  onChange: handleInputChange,
660
679
  tabIndex: -1
661
- }), /* @__PURE__ */ React15__default.default.createElement("span", {
680
+ }), /* @__PURE__ */ React18__namespace.default.createElement("span", {
662
681
  className: classnames__default.default(FilePickerField_default.osdkFilePickerText, !hasValue && FilePickerField_default.osdkFilePickerPlaceholder)
663
682
  }, displayText ?? text), hasValue && // stopPropagation + preventDefault prevent the click from
664
683
  // bubbling to the container's onClick which opens the file dialog.
665
- /* @__PURE__ */ React15__default.default.createElement(button.Button, {
684
+ /* @__PURE__ */ React18__namespace.default.createElement(button.Button, {
666
685
  className: FilePickerField_default.osdkFilePickerClear,
667
686
  onClick: handleClear,
668
687
  "aria-label": "Clear selection"
669
- }, /* @__PURE__ */ React15__default.default.createElement(icons.Cross, null)), /* @__PURE__ */ React15__default.default.createElement("span", {
688
+ }, /* @__PURE__ */ React18__namespace.default.createElement(icons.Cross, null)), /* @__PURE__ */ React18__namespace.default.createElement("span", {
670
689
  className: FilePickerField_default.osdkFilePickerBrowse
671
690
  }, buttonText))
672
691
  );
@@ -704,8 +723,8 @@ function NumberInputField({
704
723
  max,
705
724
  step
706
725
  }) {
707
- const [displayValue, setDisplayValue] = React15.useState(() => formatNumberForDisplay(value));
708
- const prevValueRef = React15.useRef(value);
726
+ const [displayValue, setDisplayValue] = React18.useState(() => formatNumberForDisplay(value));
727
+ const prevValueRef = React18.useRef(value);
709
728
  if (prevValueRef.current !== value) {
710
729
  prevValueRef.current = value;
711
730
  const currentParsed = parseNumericValue(displayValue);
@@ -713,14 +732,14 @@ function NumberInputField({
713
732
  setDisplayValue(formatNumberForDisplay(value));
714
733
  }
715
734
  }
716
- const handleValueChange = React15.useCallback((newValue) => {
735
+ const handleValueChange = React18.useCallback((newValue) => {
717
736
  if (!isValidInput(newValue)) {
718
737
  return;
719
738
  }
720
739
  setDisplayValue(newValue);
721
740
  onChange?.(parseNumericValue(newValue));
722
741
  }, [onChange]);
723
- const applyStep = React15.useCallback((direction) => {
742
+ const applyStep = React18.useCallback((direction) => {
724
743
  const current = parseNumericValue(displayValue) ?? 0;
725
744
  const delta = direction * (step ?? DEFAULT_STEP);
726
745
  const next = clamp(current + delta, min, max);
@@ -728,23 +747,23 @@ function NumberInputField({
728
747
  setDisplayValue(formatted);
729
748
  onChange?.(next);
730
749
  }, [displayValue, onChange, step, min, max]);
731
- const handleKeyDown = React15.useCallback((e) => {
750
+ const handleKeyDown = React18.useCallback((e) => {
732
751
  if (e.key !== "ArrowUp" && e.key !== "ArrowDown") {
733
752
  return;
734
753
  }
735
754
  e.preventDefault();
736
755
  applyStep(e.key === "ArrowUp" ? 1 : -1);
737
756
  }, [applyStep]);
738
- const handleStepUp = React15.useCallback(() => {
757
+ const handleStepUp = React18.useCallback(() => {
739
758
  applyStep(1);
740
759
  }, [applyStep]);
741
- const handleStepDown = React15.useCallback(() => {
760
+ const handleStepDown = React18.useCallback(() => {
742
761
  applyStep(-1);
743
762
  }, [applyStep]);
744
- return /* @__PURE__ */ React15__default.default.createElement("div", {
763
+ return /* @__PURE__ */ React18__namespace.default.createElement("div", {
745
764
  className: NumberInputField_default.osdkNumberInputWrapper,
746
765
  "aria-invalid": error != null || void 0
747
- }, /* @__PURE__ */ React15__default.default.createElement(input.Input, {
766
+ }, /* @__PURE__ */ React18__namespace.default.createElement(input.Input, {
748
767
  id,
749
768
  className: NumberInputField_default.osdkNumberInputField,
750
769
  type: "text",
@@ -753,21 +772,21 @@ function NumberInputField({
753
772
  onValueChange: handleValueChange,
754
773
  onKeyDown: handleKeyDown,
755
774
  placeholder
756
- }), /* @__PURE__ */ React15__default.default.createElement("div", {
775
+ }), /* @__PURE__ */ React18__namespace.default.createElement("div", {
757
776
  className: NumberInputField_default.osdkNumberInputStepper
758
- }, /* @__PURE__ */ React15__default.default.createElement(button.Button, {
777
+ }, /* @__PURE__ */ React18__namespace.default.createElement(button.Button, {
759
778
  className: NumberInputField_default.osdkNumberInputStepButton,
760
779
  "aria-label": "Increment",
761
780
  tabIndex: -1,
762
781
  onClick: handleStepUp
763
- }, /* @__PURE__ */ React15__default.default.createElement(icons.ChevronUp, {
782
+ }, /* @__PURE__ */ React18__namespace.default.createElement(icons.ChevronUp, {
764
783
  size: CHEVRON_SIZE
765
- })), /* @__PURE__ */ React15__default.default.createElement(button.Button, {
784
+ })), /* @__PURE__ */ React18__namespace.default.createElement(button.Button, {
766
785
  className: NumberInputField_default.osdkNumberInputStepButton,
767
786
  "aria-label": "Decrement",
768
787
  tabIndex: -1,
769
788
  onClick: handleStepDown
770
- }, /* @__PURE__ */ React15__default.default.createElement(icons.ChevronDown, {
789
+ }, /* @__PURE__ */ React18__namespace.default.createElement(icons.ChevronDown, {
771
790
  size: CHEVRON_SIZE
772
791
  }))));
773
792
  }
@@ -789,23 +808,241 @@ function clamp(value, min, max) {
789
808
  if (max != null && value > max) return max;
790
809
  return value;
791
810
  }
792
- var BlueprintIcon = /* @__PURE__ */ React15__default.default.memo(function BlueprintIconFn({
811
+ function useDebouncedValue(value, debounceMs) {
812
+ const [debouncedValue, setDebouncedValue] = React18.useState(value);
813
+ React18.useEffect(function debounceValue() {
814
+ const timer = setTimeout(() => {
815
+ setDebouncedValue(value);
816
+ }, debounceMs);
817
+ return () => {
818
+ clearTimeout(timer);
819
+ };
820
+ }, [value, debounceMs]);
821
+ return debouncedValue;
822
+ }
823
+ function useEventCallback(callback) {
824
+ const latestCallbackValueWrapper = React18__namespace.useRef((...args) => {
825
+ if (typeof globalThis.console !== "undefined") {
826
+ globalThis.console.error("A callback created with `useEventCallback` was called during the initial render of a component. This will throw an error in the future.");
827
+ }
828
+ return callback(...args);
829
+ });
830
+ React18__namespace.useEffect(() => {
831
+ latestCallbackValueWrapper.current = callback;
832
+ }, [callback]);
833
+ return React18__namespace.useCallback((...args) => latestCallbackValueWrapper.current(...args), []);
834
+ }
835
+
836
+ // src/shared/hooks/useInfiniteScroll.ts
837
+ var THRESHOLD = 0.5;
838
+ var OPTIONS = {
839
+ threshold: THRESHOLD
840
+ };
841
+ function useInfiniteScroll({
842
+ callback,
843
+ loadedCount
844
+ }) {
845
+ const observer = React18.useRef();
846
+ const targetRef = React18.useRef();
847
+ const eventCallback = useEventCallback(callback);
848
+ const throttledCallback = React18.useCallback(lodashEs.throttle(eventCallback), []);
849
+ const handleObserverUpdate = React18.useCallback(
850
+ (entries) => {
851
+ const ent = entries[0];
852
+ if (ent && ent.isIntersecting) {
853
+ throttledCallback();
854
+ }
855
+ },
856
+ // eslint-disable-next-line react-hooks/exhaustive-deps
857
+ []
858
+ );
859
+ React18.useEffect(() => {
860
+ const {
861
+ current: targetElement
862
+ } = targetRef;
863
+ if (observer.current == null || targetElement == null) {
864
+ return;
865
+ }
866
+ observer.current.observe(targetElement);
867
+ return () => {
868
+ observer.current?.unobserve(targetElement);
869
+ };
870
+ }, [loadedCount]);
871
+ const setRef = (node) => {
872
+ if (node != null) {
873
+ targetRef.current = node;
874
+ if (observer.current == null) {
875
+ observer.current = new IntersectionObserver(handleObserverUpdate, OPTIONS);
876
+ }
877
+ observer.current.observe(node);
878
+ } else if (targetRef.current != null) {
879
+ observer.current?.unobserve(targetRef.current);
880
+ }
881
+ };
882
+ return setRef;
883
+ }
884
+
885
+ // src/action-form/fields/AsyncDropdownField.module.css
886
+ var AsyncDropdownField_default = {};
887
+
888
+ // src/action-form/fields/AsyncDropdownField.tsx
889
+ function _extends2() {
890
+ return _extends2 = Object.assign ? Object.assign.bind() : function(n) {
891
+ for (var e = 1; e < arguments.length; e++) {
892
+ var t = arguments[e];
893
+ for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
894
+ }
895
+ return n;
896
+ }, _extends2.apply(null, arguments);
897
+ }
898
+ var AsyncDropdownField = chunkMVNWOKH2_cjs.typedReactMemo(function AsyncDropdownFieldFn({
899
+ isLoading,
900
+ hasMore,
901
+ isSearching,
902
+ onFetchMore,
903
+ fetchError,
904
+ ...dropdownProps
905
+ }) {
906
+ const itemCount = dropdownProps.items.length;
907
+ const popupStatus = React18.useMemo(() => {
908
+ if (fetchError != null) {
909
+ return /* @__PURE__ */ React18__namespace.default.createElement("div", {
910
+ className: AsyncDropdownField_default.osdkAsyncDropdownError,
911
+ role: "alert"
912
+ }, fetchError.message);
913
+ }
914
+ if (isSearching) {
915
+ return /* @__PURE__ */ React18__namespace.default.createElement("div", {
916
+ className: AsyncDropdownField_default.osdkAsyncDropdownStatus
917
+ }, "Searching\u2026");
918
+ }
919
+ if (isLoading && itemCount === 0) {
920
+ return /* @__PURE__ */ React18__namespace.default.createElement("div", {
921
+ className: AsyncDropdownField_default.osdkAsyncDropdownStatus
922
+ }, "Loading\u2026");
923
+ }
924
+ return null;
925
+ }, [fetchError, isSearching, isLoading, itemCount]);
926
+ const infiniteScrollRef = useInfiniteScroll({
927
+ callback: onFetchMore,
928
+ loadedCount: itemCount
929
+ });
930
+ return /* @__PURE__ */ React18__namespace.default.createElement(chunkMVNWOKH2_cjs.DropdownField, _extends2({}, dropdownProps, {
931
+ isSearchable: true,
932
+ popupStatus,
933
+ trailingItem: hasMore ? /* @__PURE__ */ React18__namespace.default.createElement(InfiniteScrollSentinel, {
934
+ key: "sentinel",
935
+ infiniteScrollRef
936
+ }) : null,
937
+ disableClientSideFiltering: dropdownProps.onQueryChange != null
938
+ }));
939
+ });
940
+ function InfiniteScrollSentinel({
941
+ infiniteScrollRef
942
+ }) {
943
+ return /* @__PURE__ */ React18__namespace.default.createElement("div", {
944
+ ref: infiniteScrollRef,
945
+ role: "presentation"
946
+ }, /* @__PURE__ */ React18__namespace.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
947
+ className: AsyncDropdownField_default.osdkAsyncDropdownSkeleton
948
+ }));
949
+ }
950
+
951
+ // src/action-form/fields/ObjectSelectField.tsx
952
+ var SEARCH_DEBOUNCE_MS = 300;
953
+ var PAGE_SIZE = 50;
954
+ var EMPTY_ITEMS = [];
955
+ var ObjectSelectField = /* @__PURE__ */ React18.memo(function ObjectSelectFieldFn({
956
+ objectType,
957
+ value,
958
+ onChange,
959
+ error,
960
+ id,
961
+ placeholder,
962
+ isMultiple,
963
+ portalRef
964
+ }) {
965
+ const [query, setQuery] = React18.useState("");
966
+ const debouncedQuery = useDebouncedValue(query, SEARCH_DEBOUNCE_MS);
967
+ const handleChange = React18.useCallback((newValue) => {
968
+ onChange?.(newValue);
969
+ setQuery("");
970
+ }, [onChange]);
971
+ const {
972
+ metadata
973
+ } = react.useOsdkMetadata(objectType);
974
+ const titleProperty = typeof metadata?.titleProperty === "string" ? metadata.titleProperty : void 0;
975
+ const where = React18.useMemo(() => {
976
+ const trimmed = debouncedQuery.trim();
977
+ if (trimmed === "" || titleProperty == null) {
978
+ return void 0;
979
+ }
980
+ return {
981
+ [titleProperty]: {
982
+ $containsAllTermsInOrder: trimmed
983
+ }
984
+ };
985
+ }, [debouncedQuery, titleProperty]);
986
+ const {
987
+ data,
988
+ isLoading,
989
+ error: fetchError,
990
+ fetchMore,
991
+ hasMore
992
+ } = experimental.useOsdkObjects(objectType, {
993
+ where,
994
+ pageSize: PAGE_SIZE
995
+ });
996
+ const items = data ?? EMPTY_ITEMS;
997
+ const handleFetchMore = React18.useCallback(() => {
998
+ void fetchMore?.();
999
+ }, [fetchMore]);
1000
+ return /* @__PURE__ */ React18__namespace.default.createElement(AsyncDropdownField, {
1001
+ id,
1002
+ value,
1003
+ onChange: handleChange,
1004
+ error,
1005
+ items,
1006
+ itemToStringLabel,
1007
+ itemToKey,
1008
+ isItemEqual,
1009
+ placeholder: placeholder ?? "Search\u2026",
1010
+ isMultiple,
1011
+ portalRef,
1012
+ onQueryChange: setQuery,
1013
+ isLoading,
1014
+ isSearching: debouncedQuery.trim() !== "" && isLoading,
1015
+ hasMore,
1016
+ onFetchMore: handleFetchMore,
1017
+ fetchError
1018
+ });
1019
+ });
1020
+ function itemToStringLabel(obj) {
1021
+ return obj.$title ?? String(obj.$primaryKey);
1022
+ }
1023
+ function itemToKey(obj) {
1024
+ return String(obj.$primaryKey);
1025
+ }
1026
+ function isItemEqual(a, b) {
1027
+ return a.$primaryKey === b.$primaryKey;
1028
+ }
1029
+ var BlueprintIcon = /* @__PURE__ */ React18__namespace.default.memo(function BlueprintIconFn({
793
1030
  icon,
794
1031
  size
795
1032
  }) {
796
1033
  const paths = useIcon(icon.name, size);
797
- return /* @__PURE__ */ React15__default.default.createElement(icons.SVGIconContainer, {
1034
+ return /* @__PURE__ */ React18__namespace.default.createElement(icons.SVGIconContainer, {
798
1035
  iconName: icon.name,
799
1036
  color: icon.color
800
- }, paths != null ? paths.map((d, i) => /* @__PURE__ */ React15__default.default.createElement("path", {
1037
+ }, paths != null ? paths.map((d, i) => /* @__PURE__ */ React18__namespace.default.createElement("path", {
801
1038
  key: i,
802
1039
  d,
803
1040
  fillRule: "evenodd"
804
1041
  })) : []);
805
1042
  });
806
1043
  function useIcon(icon, size) {
807
- const [iconPaths, setIconPaths] = React15__default.default.useState(() => icons.Icons.getPaths(icon, size));
808
- React15__default.default.useEffect(function loadIconPaths() {
1044
+ const [iconPaths, setIconPaths] = React18__namespace.default.useState(() => icons.Icons.getPaths(icon, size));
1045
+ React18__namespace.default.useEffect(function loadIconPaths() {
809
1046
  let isMounted = true;
810
1047
  const loadedIconPaths = icons.Icons.getPaths(icon, size);
811
1048
  if (loadedIconPaths != null) {
@@ -834,20 +1071,20 @@ var DEFAULT_OBJECT_ICON = {
834
1071
  };
835
1072
  var ICON_SIZE = icons.IconSize.STANDARD;
836
1073
  var DEFAULT_EMPTY_MESSAGE = "Object set is not defined";
837
- var ObjectSetField = chunkRY2GVYT2_cjs.typedReactMemo(function ObjectSetFieldFn({
1074
+ var ObjectSetField = chunkMVNWOKH2_cjs.typedReactMemo(function ObjectSetFieldFn({
838
1075
  value,
839
1076
  emptyMessage = DEFAULT_EMPTY_MESSAGE
840
1077
  }) {
841
1078
  if (value == null) {
842
- return /* @__PURE__ */ React15__default.default.createElement("div", {
1079
+ return /* @__PURE__ */ React18__namespace.default.createElement("div", {
843
1080
  className: classnames__default.default(ObjectSetField_default.osdkObjectSetField, ObjectSetField_default.osdkObjectSetFieldEmpty)
844
1081
  }, emptyMessage);
845
1082
  }
846
- return /* @__PURE__ */ React15__default.default.createElement(ObjectSetFieldContent, {
1083
+ return /* @__PURE__ */ React18__namespace.default.createElement(ObjectSetFieldContent, {
847
1084
  objectSet: value
848
1085
  });
849
1086
  });
850
- var ObjectSetFieldContent = /* @__PURE__ */ React15__default.default.memo(function ObjectSetFieldContentFn({
1087
+ var ObjectSetFieldContent = /* @__PURE__ */ React18__namespace.default.memo(function ObjectSetFieldContentFn({
851
1088
  objectSet
852
1089
  }) {
853
1090
  const objectTypeDef = objectSet.$objectSetInternals.def;
@@ -865,22 +1102,22 @@ var ObjectSetFieldContent = /* @__PURE__ */ React15__default.default.memo(functi
865
1102
  pageSize: 1
866
1103
  });
867
1104
  const hasMetadata = metadata != null;
868
- const icon = React15__default.default.useMemo(() => metadata != null && "icon" in metadata && metadata.icon != null ? toComponentIcon(metadata.icon) : DEFAULT_OBJECT_ICON, [metadata]);
1105
+ const icon = React18__namespace.default.useMemo(() => metadata != null && "icon" in metadata && metadata.icon != null ? toComponentIcon(metadata.icon) : DEFAULT_OBJECT_ICON, [metadata]);
869
1106
  const displayName = totalCount === "1" || !hasMetadata || !("pluralDisplayName" in metadata) ? metadata?.displayName : metadata.pluralDisplayName;
870
1107
  const showLoadingState = metadataLoading && !hasMetadata;
871
- return /* @__PURE__ */ React15__default.default.createElement("div", {
1108
+ return /* @__PURE__ */ React18__namespace.default.createElement("div", {
872
1109
  className: ObjectSetField_default.osdkObjectSetField
873
- }, showLoadingState ? /* @__PURE__ */ React15__default.default.createElement(React15__default.default.Fragment, null, OBJECT_SET_ICON_SKELETON, OBJECT_SET_LABEL_SKELETON) : /* @__PURE__ */ React15__default.default.createElement(React15__default.default.Fragment, null, /* @__PURE__ */ React15__default.default.createElement(BlueprintIcon, {
1110
+ }, showLoadingState ? /* @__PURE__ */ React18__namespace.default.createElement(React18__namespace.default.Fragment, null, OBJECT_SET_ICON_SKELETON, OBJECT_SET_LABEL_SKELETON) : /* @__PURE__ */ React18__namespace.default.createElement(React18__namespace.default.Fragment, null, /* @__PURE__ */ React18__namespace.default.createElement(BlueprintIcon, {
874
1111
  icon,
875
1112
  size: ICON_SIZE
876
- }), /* @__PURE__ */ React15__default.default.createElement(ObjectSetLabel, {
1113
+ }), /* @__PURE__ */ React18__namespace.default.createElement(ObjectSetLabel, {
877
1114
  displayName,
878
1115
  totalCount,
879
1116
  error: objectSetError,
880
1117
  isLoading: objectSetLoading
881
1118
  })));
882
1119
  });
883
- var ObjectSetLabel = /* @__PURE__ */ React15__default.default.memo(function ObjectSetLabelFn({
1120
+ var ObjectSetLabel = /* @__PURE__ */ React18__namespace.default.memo(function ObjectSetLabelFn({
884
1121
  displayName,
885
1122
  totalCount,
886
1123
  isLoading,
@@ -890,15 +1127,15 @@ var ObjectSetLabel = /* @__PURE__ */ React15__default.default.memo(function Obje
890
1127
  const label = displayName ?? (totalCount === "1" ? "object" : "objects");
891
1128
  const showSkeleton = isLoading && !hasData;
892
1129
  const showError = error != null && !hasData && !isLoading;
893
- return /* @__PURE__ */ React15__default.default.createElement(React15__default.default.Fragment, null, showSkeleton && OBJECT_SET_LABEL_SKELETON, showError && /* @__PURE__ */ React15__default.default.createElement("span", {
1130
+ return /* @__PURE__ */ React18__namespace.default.createElement(React18__namespace.default.Fragment, null, showSkeleton && OBJECT_SET_LABEL_SKELETON, showError && /* @__PURE__ */ React18__namespace.default.createElement("span", {
894
1131
  className: ObjectSetField_default.osdkObjectSetFieldError,
895
1132
  role: "alert"
896
- }, `Failed to load: ${error.message}`), !showSkeleton && !showError && /* @__PURE__ */ React15__default.default.createElement("span", null, `${formatCount(totalCount)} ${label}`));
1133
+ }, `Failed to load: ${error.message}`), !showSkeleton && !showError && /* @__PURE__ */ React18__namespace.default.createElement("span", null, `${formatCount(totalCount)} ${label}`));
897
1134
  });
898
- var OBJECT_SET_ICON_SKELETON = /* @__PURE__ */ React15__default.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
1135
+ var OBJECT_SET_ICON_SKELETON = /* @__PURE__ */ React18__namespace.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
899
1136
  className: ObjectSetField_default.osdkObjectSetIconSkeleton
900
1137
  });
901
- var OBJECT_SET_LABEL_SKELETON = /* @__PURE__ */ React15__default.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
1138
+ var OBJECT_SET_LABEL_SKELETON = /* @__PURE__ */ React18__namespace.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
902
1139
  className: ObjectSetField_default.osdkObjectSetLabelSkeleton
903
1140
  });
904
1141
  function formatCount(count) {
@@ -919,40 +1156,40 @@ function toComponentIcon(apiIcon) {
919
1156
  var RadioButtonsField_default = {};
920
1157
 
921
1158
  // src/action-form/fields/RadioButtonsField.tsx
922
- var RadioButtonsField = chunkRY2GVYT2_cjs.typedReactMemo(function RadioButtonsFieldFn({
1159
+ var RadioButtonsField = chunkMVNWOKH2_cjs.typedReactMemo(function RadioButtonsFieldFn({
923
1160
  id,
924
1161
  value,
925
1162
  onChange,
926
1163
  options,
927
1164
  orientation
928
1165
  }) {
929
- const selectedLabel = React15.useMemo(() => value != null ? options.find((opt) => opt.value === value)?.label : void 0, [options, value]);
930
- const handleValueChange = React15.useCallback((nextLabel) => {
1166
+ const selectedLabel = React18.useMemo(() => value != null ? options.find((opt) => opt.value === value)?.label : void 0, [options, value]);
1167
+ const handleValueChange = React18.useCallback((nextLabel) => {
931
1168
  const match = options.find((opt) => opt.label === nextLabel);
932
1169
  onChange?.(match?.value ?? null);
933
1170
  }, [options, onChange]);
934
- return /* @__PURE__ */ React15__default.default.createElement(radioGroup.RadioGroup, {
1171
+ return /* @__PURE__ */ React18__namespace.default.createElement(radioGroup.RadioGroup, {
935
1172
  id,
936
1173
  className: RadioButtonsField_default.osdkRadioGroup,
937
1174
  "data-orientation": orientation ?? "vertical",
938
1175
  value: selectedLabel,
939
1176
  onValueChange: handleValueChange
940
- }, options.map((option) => /* @__PURE__ */ React15__default.default.createElement(RadioItem, {
1177
+ }, options.map((option) => /* @__PURE__ */ React18__namespace.default.createElement(RadioItem, {
941
1178
  key: option.label,
942
1179
  option
943
1180
  })));
944
1181
  });
945
- var RadioItem = /* @__PURE__ */ React15.memo(function RadioItemFn({
1182
+ var RadioItem = /* @__PURE__ */ React18.memo(function RadioItemFn({
946
1183
  option
947
1184
  }) {
948
- return /* @__PURE__ */ React15__default.default.createElement("label", {
1185
+ return /* @__PURE__ */ React18__namespace.default.createElement("label", {
949
1186
  className: RadioButtonsField_default.osdkRadioItem
950
- }, /* @__PURE__ */ React15__default.default.createElement(radio.Radio.Root, {
1187
+ }, /* @__PURE__ */ React18__namespace.default.createElement(radio.Radio.Root, {
951
1188
  value: option.label,
952
1189
  className: RadioButtonsField_default.osdkRadioRoot
953
- }, /* @__PURE__ */ React15__default.default.createElement(radio.Radio.Indicator, {
1190
+ }, /* @__PURE__ */ React18__namespace.default.createElement(radio.Radio.Indicator, {
954
1191
  className: RadioButtonsField_default.osdkRadioIndicator
955
- })), /* @__PURE__ */ React15__default.default.createElement("span", {
1192
+ })), /* @__PURE__ */ React18__namespace.default.createElement("span", {
956
1193
  className: RadioButtonsField_default.osdkRadioLabel
957
1194
  }, option.label));
958
1195
  });
@@ -961,14 +1198,14 @@ var RadioItem = /* @__PURE__ */ React15.memo(function RadioItemFn({
961
1198
  var BaseInput_default = {};
962
1199
 
963
1200
  // src/action-form/fields/TextAreaField.tsx
964
- function _extends2() {
965
- return _extends2 = Object.assign ? Object.assign.bind() : function(n) {
1201
+ function _extends3() {
1202
+ return _extends3 = Object.assign ? Object.assign.bind() : function(n) {
966
1203
  for (var e = 1; e < arguments.length; e++) {
967
1204
  var t = arguments[e];
968
1205
  for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
969
1206
  }
970
1207
  return n;
971
- }, _extends2.apply(null, arguments);
1208
+ }, _extends3.apply(null, arguments);
972
1209
  }
973
1210
  var TEXTAREA_STYLE = {
974
1211
  resize: "vertical"
@@ -984,12 +1221,12 @@ function TextAreaField({
984
1221
  minLength,
985
1222
  maxLength
986
1223
  }) {
987
- const renderTextarea = React15.useCallback((props) => /* @__PURE__ */ React15__default.default.createElement("textarea", _extends2({}, props, {
1224
+ const renderTextarea = React18.useCallback((props) => /* @__PURE__ */ React18__namespace.default.createElement("textarea", _extends3({}, props, {
988
1225
  rows,
989
1226
  wrap,
990
1227
  style: TEXTAREA_STYLE
991
1228
  })), [rows, wrap]);
992
- return /* @__PURE__ */ React15__default.default.createElement(input.Input, {
1229
+ return /* @__PURE__ */ React18__namespace.default.createElement(input.Input, {
993
1230
  id,
994
1231
  className: BaseInput_default.osdkBaseInput,
995
1232
  value: value ?? "",
@@ -1010,7 +1247,7 @@ function TextInputField({
1010
1247
  minLength,
1011
1248
  maxLength
1012
1249
  }) {
1013
- return /* @__PURE__ */ React15__default.default.createElement(input.Input, {
1250
+ return /* @__PURE__ */ React18__namespace.default.createElement(input.Input, {
1014
1251
  id,
1015
1252
  className: BaseInput_default.osdkBaseInput,
1016
1253
  type: "text",
@@ -1024,16 +1261,16 @@ function TextInputField({
1024
1261
  }
1025
1262
 
1026
1263
  // src/action-form/fields/FormFieldRenderer.tsx
1027
- function _extends3() {
1028
- return _extends3 = Object.assign ? Object.assign.bind() : function(n) {
1264
+ function _extends4() {
1265
+ return _extends4 = Object.assign ? Object.assign.bind() : function(n) {
1029
1266
  for (var e = 1; e < arguments.length; e++) {
1030
1267
  var t = arguments[e];
1031
1268
  for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
1032
1269
  }
1033
1270
  return n;
1034
- }, _extends3.apply(null, arguments);
1271
+ }, _extends4.apply(null, arguments);
1035
1272
  }
1036
- var FormFieldRenderer = /* @__PURE__ */ React15.memo(function FormFieldRendererFn({
1273
+ var FormFieldRenderer = /* @__PURE__ */ React18.memo(function FormFieldRendererFn({
1037
1274
  fieldDefinition,
1038
1275
  value,
1039
1276
  onFieldValueChange,
@@ -1046,7 +1283,7 @@ var FormFieldRenderer = /* @__PURE__ */ React15.memo(function FormFieldRendererF
1046
1283
  helperText,
1047
1284
  helperTextPlacement
1048
1285
  } = fieldDefinition;
1049
- return /* @__PURE__ */ React15__default.default.createElement(FormField, {
1286
+ return /* @__PURE__ */ React18__namespace.default.createElement(FormField, {
1050
1287
  label,
1051
1288
  isRequired,
1052
1289
  fieldKey: fieldDefinition.fieldKey,
@@ -1058,14 +1295,14 @@ var FormFieldRenderer = /* @__PURE__ */ React15.memo(function FormFieldRendererF
1058
1295
  function renderFieldComponent(fieldDefinition, value, onChange, error) {
1059
1296
  switch (fieldDefinition.fieldComponent) {
1060
1297
  case "DATE_RANGE_INPUT":
1061
- return /* @__PURE__ */ React15__default.default.createElement(DateRangeInputField, _extends3({
1298
+ return /* @__PURE__ */ React18__namespace.default.createElement(DateRangeInputField, _extends4({
1062
1299
  id: fieldDefinition.fieldKey,
1063
1300
  value: coerceToDateRange(value),
1064
1301
  onChange,
1065
1302
  placeholderStart: fieldDefinition.placeholder
1066
1303
  }, fieldDefinition.fieldComponentProps));
1067
1304
  case "TEXT_INPUT":
1068
- return /* @__PURE__ */ React15__default.default.createElement(TextInputField, _extends3({
1305
+ return /* @__PURE__ */ React18__namespace.default.createElement(TextInputField, _extends4({
1069
1306
  id: fieldDefinition.fieldKey,
1070
1307
  value: value != null ? String(value) : "",
1071
1308
  onChange,
@@ -1073,7 +1310,7 @@ function renderFieldComponent(fieldDefinition, value, onChange, error) {
1073
1310
  error
1074
1311
  }, fieldDefinition.fieldComponentProps));
1075
1312
  case "TEXT_AREA":
1076
- return /* @__PURE__ */ React15__default.default.createElement(TextAreaField, _extends3({
1313
+ return /* @__PURE__ */ React18__namespace.default.createElement(TextAreaField, _extends4({
1077
1314
  id: fieldDefinition.fieldKey,
1078
1315
  value: value != null ? String(value) : "",
1079
1316
  onChange,
@@ -1081,7 +1318,7 @@ function renderFieldComponent(fieldDefinition, value, onChange, error) {
1081
1318
  error
1082
1319
  }, fieldDefinition.fieldComponentProps));
1083
1320
  case "DROPDOWN": {
1084
- return /* @__PURE__ */ React15__default.default.createElement(chunkRY2GVYT2_cjs.DropdownField, _extends3({
1321
+ return /* @__PURE__ */ React18__namespace.default.createElement(chunkMVNWOKH2_cjs.DropdownField, _extends4({
1085
1322
  id: fieldDefinition.fieldKey,
1086
1323
  value,
1087
1324
  onChange,
@@ -1090,7 +1327,7 @@ function renderFieldComponent(fieldDefinition, value, onChange, error) {
1090
1327
  }, fieldDefinition.fieldComponentProps));
1091
1328
  }
1092
1329
  case "DATETIME_PICKER":
1093
- return /* @__PURE__ */ React15__default.default.createElement(chunkRY2GVYT2_cjs.DatetimePickerField, _extends3({
1330
+ return /* @__PURE__ */ React18__namespace.default.createElement(chunkMVNWOKH2_cjs.DatetimePickerField, _extends4({
1094
1331
  id: fieldDefinition.fieldKey,
1095
1332
  placeholder: fieldDefinition.placeholder,
1096
1333
  value: value instanceof Date ? value : null,
@@ -1098,21 +1335,21 @@ function renderFieldComponent(fieldDefinition, value, onChange, error) {
1098
1335
  error
1099
1336
  }, fieldDefinition.fieldComponentProps));
1100
1337
  case "RADIO_BUTTONS":
1101
- return /* @__PURE__ */ React15__default.default.createElement(RadioButtonsField, _extends3({
1338
+ return /* @__PURE__ */ React18__namespace.default.createElement(RadioButtonsField, _extends4({
1102
1339
  id: fieldDefinition.fieldKey,
1103
1340
  value,
1104
1341
  onChange,
1105
1342
  error
1106
1343
  }, fieldDefinition.fieldComponentProps));
1107
1344
  case "CUSTOM":
1108
- return /* @__PURE__ */ React15__default.default.createElement(CustomField, _extends3({
1345
+ return /* @__PURE__ */ React18__namespace.default.createElement(CustomField, _extends4({
1109
1346
  id: fieldDefinition.fieldKey,
1110
1347
  value,
1111
1348
  onChange,
1112
1349
  error
1113
1350
  }, fieldDefinition.fieldComponentProps));
1114
1351
  case "NUMBER_INPUT":
1115
- return /* @__PURE__ */ React15__default.default.createElement(NumberInputField, _extends3({
1352
+ return /* @__PURE__ */ React18__namespace.default.createElement(NumberInputField, _extends4({
1116
1353
  id: fieldDefinition.fieldKey,
1117
1354
  value: typeof value === "number" ? value : null,
1118
1355
  onChange,
@@ -1120,14 +1357,22 @@ function renderFieldComponent(fieldDefinition, value, onChange, error) {
1120
1357
  error
1121
1358
  }, fieldDefinition.fieldComponentProps));
1122
1359
  case "FILE_PICKER":
1123
- return /* @__PURE__ */ React15__default.default.createElement(FilePickerField, _extends3({
1360
+ return /* @__PURE__ */ React18__namespace.default.createElement(FilePickerField, _extends4({
1124
1361
  id: fieldDefinition.fieldKey,
1125
1362
  value: coerceToFileValue(value),
1126
1363
  onChange,
1127
1364
  error
1128
1365
  }, fieldDefinition.fieldComponentProps));
1366
+ case "OBJECT_SELECT":
1367
+ return /* @__PURE__ */ React18__namespace.default.createElement(ObjectSelectField, _extends4({
1368
+ id: fieldDefinition.fieldKey,
1369
+ value: narrowToOsdkObject(value),
1370
+ onChange,
1371
+ placeholder: fieldDefinition.placeholder,
1372
+ error
1373
+ }, fieldDefinition.fieldComponentProps));
1129
1374
  case "OBJECT_SET":
1130
- return /* @__PURE__ */ React15__default.default.createElement(ObjectSetField, _extends3({
1375
+ return /* @__PURE__ */ React18__namespace.default.createElement(ObjectSetField, _extends4({
1131
1376
  id: fieldDefinition.fieldKey
1132
1377
  }, fieldDefinition.fieldComponentProps));
1133
1378
  default:
@@ -1153,18 +1398,24 @@ function coerceToFileValue(value) {
1153
1398
  }
1154
1399
  return null;
1155
1400
  }
1401
+ function narrowToOsdkObject(value) {
1402
+ if (value != null && typeof value === "object" && "$primaryKey" in value) {
1403
+ return value;
1404
+ }
1405
+ return null;
1406
+ }
1156
1407
  function assertUnreachableFieldComponent(value) {
1157
1408
  throw new Error(`Unhandled field component: ${String(value)}`);
1158
1409
  }
1159
1410
 
1160
1411
  // src/action-form/fields/FieldBridge.tsx
1161
1412
  var SELECT_LIKE_FIELDS = /* @__PURE__ */ new Set(["RADIO_BUTTONS", "DROPDOWN"]);
1162
- var FieldBridge = /* @__PURE__ */ React15.memo(function FieldBridgeFn({
1413
+ var FieldBridge = /* @__PURE__ */ React18.memo(function FieldBridgeFn({
1163
1414
  fieldDef,
1164
1415
  control,
1165
1416
  onExternalChange
1166
1417
  }) {
1167
- const rules = React15.useMemo(() => extractValidationRules(fieldDef), [fieldDef]);
1418
+ const rules = React18.useMemo(() => extractValidationRules(fieldDef), [fieldDef]);
1168
1419
  const {
1169
1420
  field: {
1170
1421
  onChange,
@@ -1180,20 +1431,20 @@ var FieldBridge = /* @__PURE__ */ React15.memo(function FieldBridgeFn({
1180
1431
  rules
1181
1432
  });
1182
1433
  const isSelectLike = SELECT_LIKE_FIELDS.has(fieldDef.fieldComponent);
1183
- const handleChange = React15.useCallback((newValue) => {
1434
+ const handleChange = React18.useCallback((newValue) => {
1184
1435
  onChange(newValue);
1185
1436
  onExternalChange?.(fieldDef.fieldKey, newValue);
1186
1437
  if (isSelectLike) {
1187
1438
  onBlur();
1188
1439
  }
1189
1440
  }, [onChange, onBlur, onExternalChange, fieldDef.fieldKey, isSelectLike]);
1190
- const handleBlur = React15.useCallback((e) => {
1441
+ const handleBlur = React18.useCallback((e) => {
1191
1442
  if (e.currentTarget.contains(e.relatedTarget)) {
1192
1443
  return;
1193
1444
  }
1194
1445
  onBlur();
1195
1446
  }, [onBlur]);
1196
- return /* @__PURE__ */ React15__default.default.createElement(FormFieldRenderer, {
1447
+ return /* @__PURE__ */ React18__namespace.default.createElement(FormFieldRenderer, {
1197
1448
  value,
1198
1449
  fieldDefinition: fieldDef,
1199
1450
  onFieldValueChange: handleChange,
@@ -1206,16 +1457,16 @@ var FieldBridge = /* @__PURE__ */ React15.memo(function FieldBridgeFn({
1206
1457
  var FormHeader_default = {};
1207
1458
 
1208
1459
  // src/action-form/FormHeader.tsx
1209
- var FormHeader = /* @__PURE__ */ React15.memo(function FormHeaderFn({
1460
+ var FormHeader = /* @__PURE__ */ React18.memo(function FormHeaderFn({
1210
1461
  title
1211
1462
  }) {
1212
- return /* @__PURE__ */ React15__default.default.createElement("h2", {
1463
+ return /* @__PURE__ */ React18__namespace.default.createElement("h2", {
1213
1464
  className: FormHeader_default.osdkFormHeader
1214
1465
  }, title);
1215
1466
  });
1216
1467
 
1217
1468
  // src/action-form/BaseForm.tsx
1218
- var BaseForm = /* @__PURE__ */ React15.memo(function BaseFormFn({
1469
+ var BaseForm = /* @__PURE__ */ React18.memo(function BaseFormFn({
1219
1470
  formTitle,
1220
1471
  fieldDefinitions,
1221
1472
  formState: controlledFormState,
@@ -1227,7 +1478,7 @@ var BaseForm = /* @__PURE__ */ React15.memo(function BaseFormFn({
1227
1478
  className
1228
1479
  }) {
1229
1480
  const isControlled = controlledFormState != null;
1230
- const defaultValues = React15.useMemo(() => buildDefaultValues(fieldDefinitions), [fieldDefinitions]);
1481
+ const defaultValues = React18.useMemo(() => buildDefaultValues(fieldDefinitions), [fieldDefinitions]);
1231
1482
  const {
1232
1483
  control,
1233
1484
  trigger,
@@ -1246,7 +1497,7 @@ var BaseForm = /* @__PURE__ */ React15.memo(function BaseFormFn({
1246
1497
  defaultValues
1247
1498
  }
1248
1499
  });
1249
- const [hasAttemptedSubmit, setHasAttemptedSubmit] = React15.useState(false);
1500
+ const [hasAttemptedSubmit, setHasAttemptedSubmit] = React18.useState(false);
1250
1501
  const {
1251
1502
  isPending: isSubmitting,
1252
1503
  error: submissionError,
@@ -1254,7 +1505,7 @@ var BaseForm = /* @__PURE__ */ React15.memo(function BaseFormFn({
1254
1505
  clearError
1255
1506
  } = useAsyncAction(onSubmit);
1256
1507
  const submissionErrorMessage = submissionError != null ? submissionError instanceof Error ? submissionError.message : "Submission failed" : void 0;
1257
- const handleFormSubmit = React15.useCallback(async (e) => {
1508
+ const handleFormSubmit = React18.useCallback(async (e) => {
1258
1509
  e.preventDefault();
1259
1510
  setHasAttemptedSubmit(true);
1260
1511
  const isValid = await trigger();
@@ -1263,41 +1514,41 @@ var BaseForm = /* @__PURE__ */ React15.memo(function BaseFormFn({
1263
1514
  }
1264
1515
  await executeSubmit(controlledFormState ?? getValues());
1265
1516
  }, [trigger, executeSubmit, controlledFormState, getValues]);
1266
- const handleFieldChange = React15.useCallback((fieldKey, value) => {
1517
+ const handleFieldChange = React18.useCallback((fieldKey, value) => {
1267
1518
  clearError();
1268
1519
  onFieldValueChange?.(fieldKey, value);
1269
1520
  }, [clearError, onFieldValueChange]);
1270
1521
  const isFormPending = isPending || isSubmitting;
1271
- const labelByFieldKey = React15.useMemo(() => new Map(fieldDefinitions.map((d) => [d.fieldKey, d.label])), [fieldDefinitions]);
1522
+ const labelByFieldKey = React18.useMemo(() => new Map(fieldDefinitions.map((d) => [d.fieldKey, d.label])), [fieldDefinitions]);
1272
1523
  const errorEntries = Object.entries(errors).map(([key, entry]) => ({
1273
1524
  label: labelByFieldKey.get(key) ?? key,
1274
1525
  message: entry?.message ?? "Invalid"
1275
1526
  }));
1276
1527
  const areErrorsPresent = errorEntries.length > 0;
1277
1528
  const buttonErrorMessage = areErrorsPresent ? "Some fields are invalid" : submissionErrorMessage;
1278
- return /* @__PURE__ */ React15__default.default.createElement("form", {
1529
+ return /* @__PURE__ */ React18__namespace.default.createElement("form", {
1279
1530
  className: classnames__default.default(BaseForm_default.osdkForm, className),
1280
1531
  onSubmit: handleFormSubmit
1281
- }, formTitle != null && /* @__PURE__ */ React15__default.default.createElement(FormHeader, {
1532
+ }, formTitle != null && /* @__PURE__ */ React18__namespace.default.createElement(FormHeader, {
1282
1533
  title: formTitle
1283
- }), isLoading && fieldDefinitions.length === 0 && /* @__PURE__ */ React15__default.default.createElement("div", {
1534
+ }), isLoading && fieldDefinitions.length === 0 && /* @__PURE__ */ React18__namespace.default.createElement("div", {
1284
1535
  role: "status",
1285
1536
  "aria-label": "Loading form fields",
1286
1537
  className: BaseForm_default.osdkFormFields
1287
- }, FORM_SKELETON), /* @__PURE__ */ React15__default.default.createElement("div", {
1538
+ }, FORM_SKELETON), /* @__PURE__ */ React18__namespace.default.createElement("div", {
1288
1539
  className: BaseForm_default.osdkFormFields
1289
- }, fieldDefinitions.map((fieldDef) => /* @__PURE__ */ React15__default.default.createElement(FieldBridge, {
1540
+ }, fieldDefinitions.map((fieldDef) => /* @__PURE__ */ React18__namespace.default.createElement(FieldBridge, {
1290
1541
  key: fieldDef.fieldKey,
1291
1542
  fieldDef,
1292
1543
  control,
1293
1544
  onExternalChange: handleFieldChange
1294
- }))), /* @__PURE__ */ React15__default.default.createElement("div", {
1545
+ }))), /* @__PURE__ */ React18__namespace.default.createElement("div", {
1295
1546
  className: BaseForm_default.osdkFormFooter
1296
- }, /* @__PURE__ */ React15__default.default.createElement(ErrorIndicator, {
1547
+ }, /* @__PURE__ */ React18__namespace.default.createElement(ErrorIndicator, {
1297
1548
  errorEntries
1298
- }), /* @__PURE__ */ React15__default.default.createElement("div", {
1549
+ }), /* @__PURE__ */ React18__namespace.default.createElement("div", {
1299
1550
  className: BaseForm_default.osdkFormSubmitButton
1300
- }, /* @__PURE__ */ React15__default.default.createElement(SubmitButton, {
1551
+ }, /* @__PURE__ */ React18__namespace.default.createElement(SubmitButton, {
1301
1552
  isPending: isFormPending,
1302
1553
  isSubmitDisabled: isSubmitDisabled || hasAttemptedSubmit && areErrorsPresent,
1303
1554
  errorMessage: buttonErrorMessage
@@ -1306,12 +1557,12 @@ var BaseForm = /* @__PURE__ */ React15.memo(function BaseFormFn({
1306
1557
  var SKELETON_FIELD_COUNT = 3;
1307
1558
  var FORM_SKELETON = Array.from({
1308
1559
  length: SKELETON_FIELD_COUNT
1309
- }, (_, i) => /* @__PURE__ */ React15__default.default.createElement("div", {
1560
+ }, (_, i) => /* @__PURE__ */ React18__namespace.default.createElement("div", {
1310
1561
  key: i,
1311
1562
  className: BaseForm_default.osdkFormSkeletonField
1312
- }, /* @__PURE__ */ React15__default.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
1563
+ }, /* @__PURE__ */ React18__namespace.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
1313
1564
  className: BaseForm_default.osdkFormSkeletonLabel
1314
- }), /* @__PURE__ */ React15__default.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
1565
+ }), /* @__PURE__ */ React18__namespace.default.createElement(chunk7LXS66DW_cjs.SkeletonBar, {
1315
1566
  className: BaseForm_default.osdkFormSkeletonInput
1316
1567
  })));
1317
1568
  function buildDefaultValues(fieldDefinitions) {
@@ -1324,13 +1575,13 @@ function buildDefaultValues(fieldDefinitions) {
1324
1575
  }
1325
1576
  return values;
1326
1577
  }
1327
- var SubmitButton = /* @__PURE__ */ React15.memo(function SubmitButtonFn({
1578
+ var SubmitButton = /* @__PURE__ */ React18.memo(function SubmitButtonFn({
1328
1579
  isPending,
1329
1580
  isSubmitDisabled,
1330
1581
  errorMessage
1331
1582
  }) {
1332
1583
  const buttonLabel = isPending ? "Submitting\u2026" : "Submit";
1333
- const button = /* @__PURE__ */ React15__default.default.createElement(chunkY5ULR6PM_cjs.ActionButton, {
1584
+ const button = /* @__PURE__ */ React18__namespace.default.createElement(chunkY5ULR6PM_cjs.ActionButton, {
1334
1585
  type: "submit",
1335
1586
  variant: "primary",
1336
1587
  disabled: isSubmitDisabled || isPending
@@ -1338,13 +1589,13 @@ var SubmitButton = /* @__PURE__ */ React15.memo(function SubmitButtonFn({
1338
1589
  if (errorMessage == null) {
1339
1590
  return button;
1340
1591
  }
1341
- return /* @__PURE__ */ React15__default.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Root, {
1592
+ return /* @__PURE__ */ React18__namespace.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Root, {
1342
1593
  defaultOpen: true
1343
- }, /* @__PURE__ */ React15__default.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Trigger, {
1344
- render: /* @__PURE__ */ React15__default.default.createElement("span", {
1594
+ }, /* @__PURE__ */ React18__namespace.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Trigger, {
1595
+ render: /* @__PURE__ */ React18__namespace.default.createElement("span", {
1345
1596
  className: BaseForm_default.osdkTooltipTriggerWrapper
1346
1597
  })
1347
- }, button), /* @__PURE__ */ React15__default.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Portal, null, /* @__PURE__ */ React15__default.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Positioner, null, /* @__PURE__ */ React15__default.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Popup, null, /* @__PURE__ */ React15__default.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Arrow, null), errorMessage))));
1598
+ }, button), /* @__PURE__ */ React18__namespace.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Portal, null, /* @__PURE__ */ React18__namespace.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Positioner, null, /* @__PURE__ */ React18__namespace.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Popup, null, /* @__PURE__ */ React18__namespace.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Arrow, null), errorMessage))));
1348
1599
  });
1349
1600
  function ErrorIndicator({
1350
1601
  errorEntries
@@ -1353,15 +1604,15 @@ function ErrorIndicator({
1353
1604
  return null;
1354
1605
  }
1355
1606
  const count = errorEntries.length;
1356
- return /* @__PURE__ */ React15__default.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Root, null, /* @__PURE__ */ React15__default.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Trigger, null, /* @__PURE__ */ React15__default.default.createElement("span", {
1607
+ return /* @__PURE__ */ React18__namespace.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Root, null, /* @__PURE__ */ React18__namespace.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Trigger, null, /* @__PURE__ */ React18__namespace.default.createElement("span", {
1357
1608
  className: BaseForm_default.osdkFormErrorIndicator
1358
- }, /* @__PURE__ */ React15__default.default.createElement(icons.Error, {
1609
+ }, /* @__PURE__ */ React18__namespace.default.createElement(icons.Error, {
1359
1610
  size: 14
1360
- }), count === 1 ? "1 issue" : `${count} issues`)), /* @__PURE__ */ React15__default.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Portal, null, /* @__PURE__ */ React15__default.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Positioner, null, /* @__PURE__ */ React15__default.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Popup, null, /* @__PURE__ */ React15__default.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Arrow, null), /* @__PURE__ */ React15__default.default.createElement("ul", {
1611
+ }), count === 1 ? "1 issue" : `${count} issues`)), /* @__PURE__ */ React18__namespace.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Portal, null, /* @__PURE__ */ React18__namespace.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Positioner, null, /* @__PURE__ */ React18__namespace.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Popup, null, /* @__PURE__ */ React18__namespace.default.createElement(chunkY5ULR6PM_cjs.Tooltip.Arrow, null), /* @__PURE__ */ React18__namespace.default.createElement("ul", {
1361
1612
  className: BaseForm_default.osdkFormErrorList
1362
- }, errorEntries.map((entry) => /* @__PURE__ */ React15__default.default.createElement("li", {
1613
+ }, errorEntries.map((entry) => /* @__PURE__ */ React18__namespace.default.createElement("li", {
1363
1614
  key: entry.label
1364
- }, /* @__PURE__ */ React15__default.default.createElement("strong", null, entry.label, ":"), " ", entry.message)))))));
1615
+ }, /* @__PURE__ */ React18__namespace.default.createElement("strong", null, entry.label, ":"), " ", entry.message)))))));
1365
1616
  }
1366
1617
 
1367
1618
  // src/action-form/utils/coerceFieldValue.ts
@@ -1432,7 +1683,6 @@ function extractNumber(rawValue) {
1432
1683
  function getDefaultFieldDefinitions(metadata) {
1433
1684
  return Object.entries(metadata.parameters).map(([key, param]) => buildFieldDefinition(key, param));
1434
1685
  }
1435
- var EMPTY_ITEMS = [];
1436
1686
  function buildFieldDefinition(key, param) {
1437
1687
  const base = {
1438
1688
  fieldKey: key,
@@ -1452,14 +1702,25 @@ function buildFieldDefinition(key, param) {
1452
1702
  }
1453
1703
  };
1454
1704
  case "object":
1455
- case "interface":
1456
1705
  return {
1457
1706
  ...base,
1458
- fieldComponent: "DROPDOWN",
1707
+ fieldComponent: "OBJECT_SELECT",
1459
1708
  fieldComponentProps: {
1460
- items: EMPTY_ITEMS
1709
+ // Construct a minimal ObjectTypeDefinition from the action
1710
+ // parameter metadata. At runtime useOsdkObjects only reads
1711
+ // type + apiName from the definition.
1712
+ objectType: {
1713
+ type: "object",
1714
+ apiName: paramType.object
1715
+ }
1461
1716
  }
1462
1717
  };
1718
+ case "interface":
1719
+ return {
1720
+ ...base,
1721
+ fieldComponent: "TEXT_INPUT",
1722
+ fieldComponentProps: {}
1723
+ };
1463
1724
  case "struct":
1464
1725
  return {
1465
1726
  ...base,
@@ -1521,17 +1782,17 @@ function buildFieldDefinition(key, param) {
1521
1782
  }
1522
1783
 
1523
1784
  // src/action-form/ActionForm.tsx
1524
- function _extends4() {
1525
- return _extends4 = Object.assign ? Object.assign.bind() : function(n) {
1785
+ function _extends5() {
1786
+ return _extends5 = Object.assign ? Object.assign.bind() : function(n) {
1526
1787
  for (var e = 1; e < arguments.length; e++) {
1527
1788
  var t = arguments[e];
1528
1789
  for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]);
1529
1790
  }
1530
1791
  return n;
1531
- }, _extends4.apply(null, arguments);
1792
+ }, _extends5.apply(null, arguments);
1532
1793
  }
1533
1794
  var EMPTY_FIELD_DEFINITIONS = [];
1534
- var ActionForm = chunkRY2GVYT2_cjs.typedReactMemo(function ActionFormFn({
1795
+ var ActionForm = chunkMVNWOKH2_cjs.typedReactMemo(function ActionFormFn({
1535
1796
  actionDefinition,
1536
1797
  formTitle,
1537
1798
  formFieldDefinitions,
@@ -1552,7 +1813,7 @@ var ActionForm = chunkRY2GVYT2_cjs.typedReactMemo(function ActionFormFn({
1552
1813
  loading: metadataLoading,
1553
1814
  error: metadataError
1554
1815
  } = react.useOsdkMetadata(actionDefinition);
1555
- React15.useEffect(function saveMetadataError() {
1816
+ React18.useEffect(function saveMetadataError() {
1556
1817
  if (metadataError != null) {
1557
1818
  onError?.({
1558
1819
  type: "unknown",
@@ -1561,7 +1822,7 @@ var ActionForm = chunkRY2GVYT2_cjs.typedReactMemo(function ActionFormFn({
1561
1822
  }
1562
1823
  }, [metadataError, onError]);
1563
1824
  const parameters = metadata?.parameters;
1564
- const customFieldDefinitions = React15.useMemo(() => {
1825
+ const customFieldDefinitions = React18.useMemo(() => {
1565
1826
  if (formFieldDefinitions == null) {
1566
1827
  return null;
1567
1828
  }
@@ -1572,15 +1833,15 @@ var ActionForm = chunkRY2GVYT2_cjs.typedReactMemo(function ActionFormFn({
1572
1833
  defaultValue: def.defaultValue
1573
1834
  }));
1574
1835
  }, [formFieldDefinitions, parameters]);
1575
- const rendererFieldDefinitions = React15.useMemo(() => customFieldDefinitions ?? (metadata != null ? getDefaultFieldDefinitions(metadata) : EMPTY_FIELD_DEFINITIONS), [customFieldDefinitions, metadata]);
1576
- const coerceFormState = React15.useCallback((rawState) => {
1836
+ const rendererFieldDefinitions = React18.useMemo(() => customFieldDefinitions ?? (metadata != null ? getDefaultFieldDefinitions(metadata) : EMPTY_FIELD_DEFINITIONS), [customFieldDefinitions, metadata]);
1837
+ const coerceFormState = React18.useCallback((rawState) => {
1577
1838
  const coerced = {};
1578
1839
  for (const [key, value] of Object.entries(rawState)) {
1579
1840
  coerced[key] = coerceFieldValue(parameters?.[key]?.type, value);
1580
1841
  }
1581
1842
  return coerced;
1582
1843
  }, [parameters]);
1583
- const handleSubmit = React15.useCallback(async (rawFormState) => {
1844
+ const handleSubmit = React18.useCallback(async (rawFormState) => {
1584
1845
  const formState = coerceFormState(rawFormState);
1585
1846
  try {
1586
1847
  if (onSubmit != null) {
@@ -1596,7 +1857,7 @@ var ActionForm = chunkRY2GVYT2_cjs.typedReactMemo(function ActionFormFn({
1596
1857
  });
1597
1858
  }
1598
1859
  }, [coerceFormState, onSubmit, osdkApplyAction, onSuccess, onError]);
1599
- const handleFieldValueChange = React15.useCallback((fieldKey, value) => {
1860
+ const handleFieldValueChange = React18.useCallback((fieldKey, value) => {
1600
1861
  onFormStateChange?.((prev) => ({
1601
1862
  ...prev,
1602
1863
  [fieldKey]: value
@@ -1614,17 +1875,17 @@ var ActionForm = chunkRY2GVYT2_cjs.typedReactMemo(function ActionFormFn({
1614
1875
  onFieldValueChange: handleFieldValueChange
1615
1876
  };
1616
1877
  if (!isControlled) {
1617
- return /* @__PURE__ */ React15__default.default.createElement(BaseForm, commonProps);
1878
+ return /* @__PURE__ */ React18__namespace.default.createElement(BaseForm, commonProps);
1618
1879
  }
1619
- return /* @__PURE__ */ React15__default.default.createElement(BaseForm, _extends4({}, commonProps, {
1880
+ return /* @__PURE__ */ React18__namespace.default.createElement(BaseForm, _extends5({}, commonProps, {
1620
1881
  formState: controlledFormState
1621
1882
  }));
1622
1883
  });
1623
1884
 
1624
1885
  // src/public/experimental/action-form.ts
1625
- var ActionForm2 = chunkEEES66LS_cjs.withOsdkMetrics(ActionForm, "ActionForm");
1886
+ var ActionForm2 = chunk5DVHLBWS_cjs.withOsdkMetrics(ActionForm, "ActionForm");
1626
1887
 
1627
1888
  exports.ActionForm = ActionForm2;
1628
1889
  exports.BaseForm = BaseForm;
1629
- //# sourceMappingURL=chunk-O5ZAMFDU.cjs.map
1630
- //# sourceMappingURL=chunk-O5ZAMFDU.cjs.map
1890
+ //# sourceMappingURL=chunk-QWFJF7IM.cjs.map
1891
+ //# sourceMappingURL=chunk-QWFJF7IM.cjs.map