@osdk/react-components 0.22.1-main-ceeabb580a7cde55b2ae85dd02c5782dff66c08b → 0.23.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (51) hide show
  1. package/CHANGELOG.md +2 -7
  2. package/build/browser/util/UserAgent.js +1 -1
  3. package/build/browser/util/UserAgent.js.map +1 -1
  4. package/build/cjs/chunk-44Q6YNJY.cjs +11 -0
  5. package/build/cjs/{chunk-YDWD6TP5.cjs.map → chunk-44Q6YNJY.cjs.map} +1 -1
  6. package/build/cjs/{chunk-RMWSZVV2.cjs → chunk-CDKWDUSS.cjs} +4 -4
  7. package/build/cjs/{chunk-RMWSZVV2.cjs.map → chunk-CDKWDUSS.cjs.map} +1 -1
  8. package/build/cjs/chunk-F4J3FXNK.cjs +11 -0
  9. package/build/cjs/{chunk-DJFLYZBS.cjs.map → chunk-F4J3FXNK.cjs.map} +1 -1
  10. package/build/cjs/chunk-JNIYR5HQ.cjs +11 -0
  11. package/build/cjs/{chunk-H2XNBPOA.cjs.map → chunk-JNIYR5HQ.cjs.map} +1 -1
  12. package/build/cjs/chunk-KNMWCCZY.cjs +11 -0
  13. package/build/cjs/{chunk-6EELIQRV.cjs.map → chunk-KNMWCCZY.cjs.map} +1 -1
  14. package/build/cjs/chunk-LXYK5HUR.cjs +11 -0
  15. package/build/cjs/{chunk-WR5WRYGF.cjs.map → chunk-LXYK5HUR.cjs.map} +1 -1
  16. package/build/cjs/{chunk-T537RXLM.cjs → chunk-M2B7X4UP.cjs} +4 -4
  17. package/build/cjs/{chunk-T537RXLM.cjs.map → chunk-M2B7X4UP.cjs.map} +1 -1
  18. package/build/cjs/{chunk-GYKYHJPC.cjs → chunk-MOL6BDEN.cjs} +4 -4
  19. package/build/cjs/{chunk-GYKYHJPC.cjs.map → chunk-MOL6BDEN.cjs.map} +1 -1
  20. package/build/cjs/{chunk-XRPVRX3K.cjs → chunk-NP2OODWG.cjs} +4 -4
  21. package/build/cjs/{chunk-XRPVRX3K.cjs.map → chunk-NP2OODWG.cjs.map} +1 -1
  22. package/build/cjs/{chunk-AKL37QN2.cjs → chunk-UG5QG75Y.cjs} +4 -4
  23. package/build/cjs/{chunk-AKL37QN2.cjs.map → chunk-UG5QG75Y.cjs.map} +1 -1
  24. package/build/cjs/{chunk-6YAMH33T.cjs → chunk-WYDFI4D2.cjs} +4 -4
  25. package/build/cjs/{chunk-6YAMH33T.cjs.map → chunk-WYDFI4D2.cjs.map} +1 -1
  26. package/build/cjs/{chunk-QXV7I44P.cjs → chunk-Z6F6MHWG.cjs} +4 -4
  27. package/build/cjs/{chunk-QXV7I44P.cjs.map → chunk-Z6F6MHWG.cjs.map} +1 -1
  28. package/build/cjs/{chunk-KJS4QZ6O.cjs → chunk-ZIYQXEEB.cjs} +3 -3
  29. package/build/cjs/chunk-ZIYQXEEB.cjs.map +1 -0
  30. package/build/cjs/public/experimental/action-form.cjs +4 -4
  31. package/build/cjs/public/experimental/document-viewer.cjs +4 -4
  32. package/build/cjs/public/experimental/email-viewer.cjs +3 -3
  33. package/build/cjs/public/experimental/excel-viewer.cjs +3 -3
  34. package/build/cjs/public/experimental/filter-list.cjs +14 -14
  35. package/build/cjs/public/experimental/image-viewer.cjs +3 -3
  36. package/build/cjs/public/experimental/markdown-renderer.cjs +3 -3
  37. package/build/cjs/public/experimental/object-table.cjs +8 -8
  38. package/build/cjs/public/experimental/pdf-viewer.cjs +7 -7
  39. package/build/cjs/public/experimental/tiff-renderer.cjs +3 -3
  40. package/build/cjs/public/experimental/video-viewer.cjs +3 -3
  41. package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
  42. package/build/cjs/public/experimental.cjs +47 -47
  43. package/build/esm/util/UserAgent.js +1 -1
  44. package/build/esm/util/UserAgent.js.map +1 -1
  45. package/package.json +7 -7
  46. package/build/cjs/chunk-6EELIQRV.cjs +0 -11
  47. package/build/cjs/chunk-DJFLYZBS.cjs +0 -11
  48. package/build/cjs/chunk-H2XNBPOA.cjs +0 -11
  49. package/build/cjs/chunk-KJS4QZ6O.cjs.map +0 -1
  50. package/build/cjs/chunk-WR5WRYGF.cjs +0 -11
  51. package/build/cjs/chunk-YDWD6TP5.cjs +0 -11
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/shared/hooks/useIsMounted.ts","../../src/shared/hooks/useAsyncAction.ts","../../src/action-form/BaseForm.module.css","../../src/action-form/utils/extractValidationRules.ts","../../src/action-form/FormField.module.css","../../src/action-form/FormField.tsx","../../src/action-form/fields/CustomField.tsx","../../src/action-form/fields/FilePickerField.module.css","../../src/action-form/fields/FilePickerField.tsx","../../src/action-form/fields/NumberInputField.module.css","../../src/action-form/fields/NumberInputField.tsx","../../src/shared/hooks/useDebouncedValue.ts","../../src/shared/hooks/useInfiniteScroll.ts","../../src/action-form/fields/AsyncDropdownField.module.css","../../src/action-form/fields/AsyncDropdownField.tsx","../../src/action-form/fields/ObjectSelectField.tsx","../../src/base-components/icon/BlueprintIcon.tsx","../../src/action-form/fields/ObjectSetField.module.css","../../src/action-form/fields/ObjectSetField.tsx","../../src/action-form/fields/RadioButtonsField.module.css","../../src/action-form/fields/RadioButtonsField.tsx","../../src/action-form/fields/SwitchField.tsx","../../src/action-form/fields/BaseInput.module.css","../../src/action-form/fields/TextAreaField.tsx","../../src/action-form/fields/TextInputField.tsx","../../src/action-form/fields/FormFieldRenderer.tsx","../../src/action-form/fields/FieldBridge.tsx","../../src/action-form/FormHeader.module.css","../../src/action-form/FormHeader.tsx","../../src/action-form/FormSection.module.css","../../src/action-form/FormSection.tsx","../../src/action-form/BaseForm.tsx","../../src/action-form/utils/coerceFieldValue.ts","../../src/action-form/utils/getDefaultFieldDefinitions.ts","../../src/action-form/ActionForm.tsx","../../src/public/experimental/action-form.ts"],"names":["useRef","useEffect","useState","useCallback","memo","React","Popover","InfoSign","useMemo","Button","classnames","Cross","ActionButton","Input","ChevronUp","ChevronDown","useEventCallback","throttle","typedReactMemo","DropdownField","SkeletonBar","_extends","useOsdkMetadata","useObjectSet","useOsdkObjects","SVGIconContainer","Icons","IconSize","RadioGroup","useId","Radio","Switch","DateRangePicker","DatePicker","EMPTY_RANGE","useController","classNames","Collapsible","CaretDown","useForm","Tooltip","ErrorIcon","assertUnreachable","useOsdkAction","ActionForm","withOsdkMetrics"],"mappings":"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","file":"chunk-GYKYHJPC.cjs","sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useRef } from \"react\";\n\n/**\n * Returns a ref whose `.current` is `true` while the component is mounted\n * and `false` after unmount. Use to guard async state updates.\n */\nexport function useIsMounted() {\n const isMountedRef = useRef(true);\n useEffect(function trackMountedState() {\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n return isMountedRef;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useState } from \"react\";\nimport { useIsMounted } from \"./useIsMounted.js\";\n/**\n * Wraps an async callback with pending and error state tracking.\n *\n * - `isPending` is true while the action is executing\n * - `error` holds the error from the last rejection (cleared on next execute or via clearError)\n * - `execute` calls the action with pending/error bookkeeping\n * - `clearError` resets the error to undefined\n */\nexport function useAsyncAction(action) {\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState(undefined);\n const isMountedRef = useIsMounted();\n const execute = useCallback(async (...args) => {\n setError(undefined);\n setIsPending(true);\n try {\n await action(...args);\n } catch (err) {\n if (isMountedRef.current) {\n setError(err);\n }\n } finally {\n if (isMountedRef.current) {\n setIsPending(false);\n }\n }\n }, [action, isMountedRef]);\n const clearError = useCallback(() => {\n setError(undefined);\n }, []);\n return {\n isPending,\n error,\n execute,\n clearError\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkForm {\n display: flex;\n flex-direction: column;\n width: 100%;\n /* Override min-height:auto so the form can shrink inside flex parents\n with constrained height (e.g. dialogs with max-height). */\n min-height: 0;\n}\n\n.osdkFormFields {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-fields-gap);\n padding-block: var(--osdk-form-content-padding-block);\n padding-inline: var(--osdk-form-content-padding-inline);\n /* When the form lives inside a height-constrained parent (dialog, panel),\n the fields area shrinks and scrolls while the footer stays pinned.\n flex-basis stays auto so the dialog sizes to content naturally;\n min-height: 0 lets it shrink below content when constrained. */\n flex-grow: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n.osdkFormFooter {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n padding-block: var(--osdk-form-content-padding-inline);\n padding-inline: var(--osdk-form-content-padding-inline);\n border-block-start: var(--osdk-surface-border-width) solid var(--osdk-form-footer-border-color);\n flex-shrink: 0;\n}\n\n.osdkFormSubmitButton {\n margin-inline-start: auto;\n}\n\n.osdkFormErrorIndicator {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 2);\n color: var(--osdk-form-footer-error-color);\n font-size: var(--osdk-form-footer-error-font-size);\n cursor: help;\n}\n\n/* Replaces Tooltip.Trigger's default <button> with a <span> to avoid\n nested buttons. inline-flex keeps a real layout box for tooltip anchoring. */\n.osdkTooltipTriggerWrapper {\n display: inline-flex;\n}\n\n/* Loading skeleton — mimics label + input per field */\n.osdkFormSkeletonField {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-field-gap);\n}\n\n.osdkFormSkeletonLabel {\n width: 30%;\n height: var(--osdk-form-label-font-size);\n}\n\n.osdkFormSkeletonInput {\n width: 100%;\n height: var(--osdk-input-min-height);\n}\n\n.osdkFormErrorList {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Derives react-hook-form validation rules from a field definition's\n * constraint props (min, max, minLength, etc.) and the optional\n * user-provided `validate` function.\n *\n * Called at rule-building time so that `onValidationError` can inject\n * custom messages into the RHF rules object.\n */\nexport function extractValidationRules(fieldDef) {\n const rules = {};\n if (fieldDef.isRequired) {\n rules.required = getMessage(fieldDef, {\n type: \"required\"\n });\n }\n const validateFns = {};\n switch (fieldDef.fieldComponent) {\n case \"NUMBER_INPUT\":\n {\n const {\n min,\n max\n } = fieldDef.fieldComponentProps;\n if (min != null) {\n const msg = getMessage(fieldDef, {\n type: \"min\",\n min\n });\n validateFns.min = value => typeof value === \"number\" && value < min ? msg : true;\n }\n if (max != null) {\n const msg = getMessage(fieldDef, {\n type: \"max\",\n max\n });\n validateFns.max = value => typeof value === \"number\" && value > max ? msg : true;\n }\n break;\n }\n case \"TEXT_INPUT\":\n case \"TEXT_AREA\":\n {\n const {\n minLength,\n maxLength\n } = fieldDef.fieldComponentProps;\n if (minLength != null) {\n rules.minLength = {\n value: minLength,\n message: getMessage(fieldDef, {\n type: \"minLength\",\n minLength\n })\n };\n }\n if (maxLength != null) {\n rules.maxLength = {\n value: maxLength,\n message: getMessage(fieldDef, {\n type: \"maxLength\",\n maxLength\n })\n };\n }\n break;\n }\n case \"DATETIME_PICKER\":\n {\n const {\n min,\n max\n } = fieldDef.fieldComponentProps;\n if (min != null) {\n const msg = getMessage(fieldDef, {\n type: \"min\",\n min\n });\n validateFns.min = value => value instanceof Date && value.getTime() < min.getTime() ? msg : true;\n }\n if (max != null) {\n const msg = getMessage(fieldDef, {\n type: \"max\",\n max\n });\n validateFns.max = value => value instanceof Date && value.getTime() > max.getTime() ? msg : true;\n }\n break;\n }\n case \"FILE_PICKER\":\n {\n const {\n maxSize\n } = fieldDef.fieldComponentProps;\n if (maxSize != null) {\n const msg = getMessage(fieldDef, {\n type: \"maxSize\",\n maxSize\n });\n validateFns.maxSize = value => {\n if (value instanceof File) {\n return value.size > maxSize ? msg : true;\n }\n if (Array.isArray(value)) {\n const oversized = value.some(f => f instanceof File && f.size > maxSize);\n return oversized ? msg : true;\n }\n return true;\n };\n }\n break;\n }\n // DROPDOWN, RADIO_BUTTONS, CUSTOM, OBJECT_SET, UNSUPPORTED: only `required` applies\n default:\n break;\n }\n if (fieldDef.validate != null) {\n const userValidate = fieldDef.validate;\n validateFns.custom = async value => {\n const result = await userValidate(value);\n if (result == null) {\n return true;\n }\n return getMessage(fieldDef, {\n type: \"validate\",\n message: result\n });\n };\n }\n if (Object.keys(validateFns).length > 0) {\n rules.validate = validateFns;\n }\n return rules;\n}\nfunction getMessage(fieldDef, error) {\n return fieldDef.onValidationError?.(error) ?? getDefaultMessage(error);\n}\nfunction getDefaultMessage(error) {\n switch (error.type) {\n case \"required\":\n return \"This field is required\";\n case \"min\":\n return `Must be at least ${formatConstraint(error.min)}`;\n case \"max\":\n return `Must be at most ${formatConstraint(error.max)}`;\n case \"minLength\":\n return `Must be at least ${error.minLength} characters`;\n case \"maxLength\":\n return `Must be at most ${error.maxLength} characters`;\n case \"maxSize\":\n return `File must be smaller than ${formatBytes(error.maxSize)}`;\n case \"validate\":\n return error.message;\n }\n}\nfunction formatConstraint(value) {\n if (value instanceof Date) {\n return value.toLocaleDateString();\n }\n return String(value);\n}\nfunction formatBytes(bytes) {\n if (bytes < 1024) {\n return `${bytes} B`;\n }\n if (bytes < 1024 * 1024) {\n return `${(bytes / 1024).toFixed(1)} KB`;\n }\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkFormField {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-field-gap);\n}\n\n.osdkFormFieldLabel {\n font-size: var(--osdk-form-label-font-size);\n font-weight: var(--osdk-form-label-font-weight);\n color: var(--osdk-form-label-color);\n}\n\n.osdkFormFieldRequired {\n color: var(--osdk-form-required-color);\n}\n\n.osdkFormFieldError {\n font-size: var(--osdk-form-error-font-size);\n line-height: var(--osdk-form-error-line-height);\n color: var(--osdk-form-error-color);\n}\n\n.osdkFormFieldErrorSlot {\n min-block-size: var(--osdk-form-error-reserved-block-size);\n}\n\n.osdkFormFieldLabelRow {\n display: flex;\n align-items: center;\n gap: var(--osdk-form-label-row-gap);\n /* Reserve the edited pill's block size so showing it does not grow the label row. */\n min-block-size: var(--osdk-form-label-row-min-block-size);\n}\n\n.osdkFormFieldEditedTag {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n margin-inline-start: auto;\n padding-block: var(--osdk-form-edited-tag-padding-block);\n padding-inline: var(--osdk-form-edited-tag-padding-inline);\n border-radius: var(--osdk-form-edited-tag-border-radius);\n background-color: var(--osdk-form-edited-tag-bg);\n color: var(--osdk-form-edited-tag-color);\n font-size: var(--osdk-form-edited-tag-font-size);\n font-weight: var(--osdk-form-edited-tag-font-weight);\n line-height: var(--osdk-form-edited-tag-line-height);\n}\n\n.osdkFormFieldInfoIcon {\n display: inline-flex;\n align-items: center;\n color: var(--osdk-form-info-icon-color);\n cursor: pointer;\n flex-shrink: 0;\n}\n\n.osdkFormFieldInfoPopup {\n padding: var(--osdk-form-info-popup-padding);\n background-color: var(--osdk-form-info-popup-bg);\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-form-info-popup-shadow);\n max-width: var(--osdk-form-info-popup-max-width);\n font-size: var(--osdk-form-info-popup-font-size);\n}\n\n.osdkFormFieldHelperText {\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Popover } from \"@base-ui/react/popover\";\nimport { InfoSign } from \"@blueprintjs/icons\";\nimport React, { memo } from \"react\";\nimport styles from \"./FormField.module.css\";\nexport const FormField = /*#__PURE__*/memo(function FormFieldFn({\n fieldKey,\n label,\n isRequired,\n helperText,\n helperTextPlacement = \"tooltip\",\n isEdited,\n error,\n onBlur,\n children\n}) {\n const hasHelperText = helperText != null && helperText !== \"\";\n const showTooltip = hasHelperText && helperTextPlacement === \"tooltip\";\n const showBottomText = hasHelperText && helperTextPlacement === \"bottom\";\n const showEditedTag = isEdited === true;\n const labelElement = label != null ? /*#__PURE__*/React.createElement(\"label\", {\n className: styles.osdkFormFieldLabel,\n htmlFor: fieldKey\n }, label, isRequired === true && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormFieldRequired,\n \"aria-label\": \"required\"\n }, \" \", \"*\")) : null;\n const labelRow = labelElement != null || showTooltip || showEditedTag ? /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFieldLabelRow\n }, labelElement, showTooltip && /*#__PURE__*/React.createElement(InfoTip, {\n label: label\n }, helperText), showEditedTag && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormFieldEditedTag\n }, \"Edited\")) : null;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormField,\n onBlur: onBlur\n }, labelRow, showBottomText && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFieldHelperText\n }, helperText), children, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFieldErrorSlot,\n \"data-osdk-form-field-error-slot\": \"\"\n }, error != null && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFieldError,\n role: \"alert\"\n }, error)));\n});\n// Uses Popover (not Tooltip) because helper text may contain interactive\n// content like links that need focus management and keyboard navigation.\n// See https://base-ui.com/react/components/tooltip#infotips\nfunction InfoTip({\n label,\n children\n}) {\n return /*#__PURE__*/React.createElement(Popover.Root, null, /*#__PURE__*/React.createElement(Popover.Trigger, {\n render: /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormFieldInfoIcon\n }),\n nativeButton: false,\n openOnHover: true,\n \"aria-label\": label != null ? `Info about ${label}` : \"More information\"\n }, /*#__PURE__*/React.createElement(InfoSign, {\n size: 12\n })), /*#__PURE__*/React.createElement(Popover.Portal, null, /*#__PURE__*/React.createElement(Popover.Positioner, {\n sideOffset: 4\n }, /*#__PURE__*/React.createElement(Popover.Popup, {\n className: styles.osdkFormFieldInfoPopup\n }, children))));\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\n/**\n * Renders a user-provided custom field. Delegates all rendering to the\n * `customRenderer` callback, passing through the standard form field props\n * (value, onChange, id) so the custom implementation can participate in\n * form state management.\n */\nexport const CustomField = /*#__PURE__*/memo(function CustomFieldFn({\n customRenderer: CustomRenderer,\n ...baseProps\n}) {\n return /*#__PURE__*/React.createElement(CustomRenderer, baseProps);\n});","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* Outer wrapper — looks like an input field */\n.osdkFilePickerTrigger {\n display: flex;\n align-items: center;\n width: 100%;\n height: var(--osdk-file-picker-trigger-height);\n border: var(--osdk-file-picker-trigger-border);\n border-radius: var(--osdk-file-picker-trigger-border-radius);\n box-shadow: var(--osdk-input-shadow);\n background-color: var(--osdk-file-picker-trigger-bg);\n font-family: var(--osdk-file-picker-trigger-font-family);\n font-size: var(--osdk-file-picker-trigger-font-size);\n box-sizing: border-box;\n overflow: hidden;\n transition:\n background-color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease),\n border-color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease);\n}\n\n.osdkFilePickerTrigger:has(.osdkFilePickerText:focus-visible),\n.osdkFilePickerTrigger:has(.osdkFilePickerClear:focus-visible) {\n border-color: var(--osdk-file-picker-trigger-border-color-focus);\n outline: var(--osdk-file-picker-trigger-focus-width) solid\n var(--osdk-file-picker-trigger-focus-color);\n outline-offset: var(--osdk-file-picker-trigger-focus-offset);\n}\n\n.osdkFilePickerTrigger[aria-invalid] {\n border-color: var(--osdk-file-picker-trigger-border-color-error);\n}\n\n/* display: none fully removes the input from the a11y tree, avoiding\n nested-interactive inside the role=\"button\" trigger. Programmatic\n .click() still opens the file dialog. */\n.osdkFilePickerHiddenInput {\n display: none;\n}\n\n/* File name text (left section) */\n.osdkFilePickerText {\n flex: 1;\n align-self: stretch;\n min-width: 0;\n padding: var(--osdk-file-picker-trigger-padding);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n color: var(--osdk-file-picker-trigger-color);\n cursor: pointer;\n background-color: transparent;\n border: none;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n\n &:hover {\n background-color: var(--osdk-file-picker-trigger-bg-hover);\n }\n\n &:active {\n background-color: var(--osdk-surface-background-color-default-active);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: var(--osdk-input-disabled-opacity);\n }\n\n &:focus-visible {\n outline: none;\n }\n}\n\n.osdkFilePickerPlaceholder {\n color: var(--osdk-file-picker-trigger-placeholder-color);\n}\n\n/* Clear ✕ button */\n.osdkFilePickerClear {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--osdk-file-picker-clear-size);\n height: var(--osdk-file-picker-clear-size);\n margin: var(--osdk-file-picker-clear-margin);\n padding: 0;\n border: none;\n background: none;\n color: var(--osdk-file-picker-clear-color);\n cursor: pointer;\n transition: color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease);\n\n &:hover {\n color: var(--osdk-file-picker-clear-color-hover);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: var(--osdk-input-disabled-opacity);\n }\n\n &:disabled:hover {\n color: var(--osdk-file-picker-clear-color);\n }\n\n &:focus-visible {\n outline: var(--osdk-file-picker-trigger-focus-width) solid\n var(--osdk-file-picker-trigger-focus-color);\n border-radius: var(--osdk-surface-border-radius);\n }\n}\n\n/* Browse button (right section) */\n.osdkFilePickerBrowse {\n --osdk-button-min-height: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n min-height: 0;\n margin-block-start: calc(var(--osdk-surface-spacing) * 0.5);\n margin-block-end: calc(var(--osdk-surface-spacing) * 0.5);\n margin-inline-start: calc(var(--osdk-surface-spacing) * 0.5);\n margin-inline-end: calc(var(--osdk-surface-spacing) * 0.5);\n font-family: var(--osdk-file-picker-trigger-font-family);\n font-size: var(--osdk-file-picker-trigger-font-size);\n\n &:focus {\n outline: none;\n }\n}\n\n.osdkFilePickerBrowse.osdkFilePickerBrowse {\n padding-block: calc(var(--osdk-surface-spacing) * 0.5);\n padding-inline: calc(var(--osdk-surface-spacing) * 3);\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Cross } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useRef } from \"react\";\nimport { ActionButton } from \"../../base-components/action-button/ActionButton.js\";\nimport styles from \"./FilePickerField.module.css\";\nexport const FilePickerField = /*#__PURE__*/memo(function FilePickerFieldFn({\n id,\n value,\n onChange,\n error,\n isMulti,\n accept,\n // maxSize is enforced by form-level validation (extractValidationRules),\n // not here. Silently dropping oversized files would leave the user with\n // no indication of why their selection disappeared.\n maxSize: _maxSize,\n text = \"No file chosen\",\n buttonText = \"Browse\",\n disabled\n}) {\n const inputRef = useRef(null);\n const fileTriggerRef = useRef(null);\n const openFileDialog = useCallback(() => {\n inputRef.current?.click();\n }, []);\n const focusFileTrigger = useCallback(() => {\n fileTriggerRef.current?.focus();\n }, []);\n const handleBrowsePointerDown = useCallback(event => {\n // Browse is a visual affordance inside the field, not a separate tab\n // stop; keep the field trigger as the focused element and focus ring.\n event.preventDefault();\n focusFileTrigger();\n }, [focusFileTrigger]);\n const handleBrowseClick = useCallback(() => {\n focusFileTrigger();\n openFileDialog();\n }, [focusFileTrigger, openFileDialog]);\n const handleInputChange = useCallback(event => {\n const files = event.target.files;\n if (files == null || files.length === 0) {\n onChange?.(null);\n return;\n }\n if (isMulti) {\n onChange?.(Array.from(files));\n } else {\n onChange?.(files[0] ?? null);\n }\n }, [onChange, isMulti]);\n const handleClear = useCallback(event => {\n event.preventDefault();\n onChange?.(null);\n if (inputRef.current != null) {\n inputRef.current.value = \"\";\n }\n }, [onChange]);\n const handleKeyDown = useCallback(event => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n openFileDialog();\n }\n }, [openFileDialog]);\n const displayText = useMemo(() => getDisplayText(value), [value]);\n const hasValue = displayText != null;\n const acceptString = useMemo(() => normalizeAccept(accept), [accept]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFilePickerTrigger,\n \"aria-invalid\": error != null || undefined\n }, /*#__PURE__*/React.createElement(\"input\", {\n ref: inputRef,\n type: \"file\",\n className: styles.osdkFilePickerHiddenInput,\n multiple: isMulti,\n accept: acceptString,\n onChange: handleInputChange,\n tabIndex: -1,\n disabled: disabled\n }), /*#__PURE__*/React.createElement(Button, {\n ref: fileTriggerRef,\n id: id,\n type: \"button\",\n className: classnames(styles.osdkFilePickerText, !hasValue && styles.osdkFilePickerPlaceholder),\n onClick: openFileDialog,\n onKeyDown: handleKeyDown,\n \"aria-label\": \"Choose file\",\n \"aria-invalid\": error != null || undefined,\n disabled: disabled\n }, displayText ?? text), hasValue && /*#__PURE__*/React.createElement(Button, {\n type: \"button\",\n className: styles.osdkFilePickerClear,\n onClick: handleClear,\n \"aria-label\": \"Clear selection\",\n disabled: disabled\n }, /*#__PURE__*/React.createElement(Cross, null)), /*#__PURE__*/React.createElement(ActionButton, {\n type: \"button\",\n tabIndex: -1,\n className: styles.osdkFilePickerBrowse,\n onPointerDown: handleBrowsePointerDown,\n onClick: handleBrowseClick,\n disabled: disabled\n }, buttonText));\n});\nfunction normalizeAccept(accept) {\n if (accept == null) {\n return undefined;\n }\n return Array.isArray(accept) ? accept.join(\",\") : accept;\n}\nfunction getDisplayText(value) {\n if (value == null) {\n return undefined;\n }\n if (Array.isArray(value)) {\n return value.map(f => f.name).join(\", \");\n }\n return value.name;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkNumberInputWrapper {\n display: flex;\n border-radius: var(--osdk-input-border-radius);\n border: var(--osdk-input-border-width) solid var(--osdk-input-border-color);\n box-shadow: var(--osdk-input-shadow);\n background-color: var(--osdk-input-bg);\n transition:\n background-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease),\n border-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease);\n\n &:hover {\n background-color: var(--osdk-input-bg-hover);\n }\n\n &:focus-within {\n outline: var(--osdk-input-focus-width) solid var(--osdk-input-focus-color);\n outline-offset: var(--osdk-input-focus-offset);\n border-color: var(--osdk-input-border-color-focus);\n }\n\n &[aria-invalid] {\n border-color: var(--osdk-input-border-color-error);\n }\n}\n\n.osdkNumberInputField {\n flex: 1;\n min-width: 0;\n min-height: var(--osdk-input-min-height);\n padding: var(--osdk-input-padding);\n border: none;\n border-radius: var(--osdk-input-border-radius) 0 0\n var(--osdk-input-border-radius);\n background: transparent;\n color: var(--osdk-input-color);\n font-family: var(--osdk-input-font-family);\n font-size: var(--osdk-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n\n &::placeholder {\n color: var(--osdk-input-placeholder-color);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: var(--osdk-disabled-opacity);\n }\n\n &:focus-visible {\n outline: none;\n }\n}\n\n.osdkNumberInputStepper {\n display: flex;\n flex-direction: column;\n border-left: var(--osdk-input-border-width) solid\n var(--osdk-input-border-color);\n}\n\n.osdkNumberInputStepButton {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n padding: 0 calc(var(--osdk-surface-spacing) * 1.5);\n border: none;\n background: transparent;\n color: var(--osdk-input-color);\n cursor: pointer;\n line-height: 0;\n\n &:hover {\n background-color: var(--osdk-input-bg-hover);\n }\n\n &:active {\n background-color: var(--osdk-input-border-color);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: var(--osdk-disabled-opacity);\n }\n\n & + & {\n border-top: var(--osdk-input-border-width) solid\n var(--osdk-input-border-color);\n }\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Input } from \"@base-ui/react/input\";\nimport { ChevronDown, ChevronUp } from \"@blueprintjs/icons\";\nimport React, { useCallback, useRef, useState } from \"react\";\nimport styles from \"./NumberInputField.module.css\";\n\n/**\n * Structural regex for valid numeric input.\n *\n * Allows intermediate typing states that will become valid numbers:\n * \"\" — user cleared the field (all groups are optional)\n * \"-\" — user started typing a negative number\n * \".\" — user started typing a decimal like \".5\"\n * \"+\" — user started typing an explicitly positive number\n * \"1.\", \"1e\", \"1e+\" — partial but structurally valid\n *\n * Rejects obviously invalid strings like \"1.2.3\" or \"+-5\".\n */\nconst VALID_NUMERIC_REGEX = /^[+-.]?(\\d+\\.?\\d*|\\d*\\.?\\d+)?([eE][+-]?\\d*)?$/;\nconst DEFAULT_STEP = 1;\nconst CHEVRON_SIZE = 12;\nexport function NumberInputField({\n id,\n value,\n onChange,\n error,\n placeholder,\n min,\n max,\n step,\n disabled\n}) {\n const [displayValue, setDisplayValue] = useState(() => formatNumberForDisplay(value));\n const prevValueRef = useRef(value);\n\n // Sync external value → internal display string\n if (prevValueRef.current !== value) {\n prevValueRef.current = value;\n const currentParsed = parseNumericValue(displayValue);\n if (value !== currentParsed) {\n setDisplayValue(formatNumberForDisplay(value));\n }\n }\n const handleValueChange = useCallback(newValue => {\n if (!isValidInput(newValue)) {\n return;\n }\n setDisplayValue(newValue);\n onChange?.(parseNumericValue(newValue));\n }, [onChange]);\n const applyStep = useCallback(direction => {\n const current = parseNumericValue(displayValue) ?? 0;\n const delta = direction * (step ?? DEFAULT_STEP);\n const next = clamp(current + delta, min, max);\n const formatted = formatNumberForDisplay(next);\n setDisplayValue(formatted);\n onChange?.(next);\n }, [displayValue, onChange, step, min, max]);\n const handleKeyDown = useCallback(e => {\n if (e.key !== \"ArrowUp\" && e.key !== \"ArrowDown\") {\n return;\n }\n e.preventDefault();\n applyStep(e.key === \"ArrowUp\" ? 1 : -1);\n }, [applyStep]);\n const handleStepUp = useCallback(() => {\n applyStep(1);\n }, [applyStep]);\n const handleStepDown = useCallback(() => {\n applyStep(-1);\n }, [applyStep]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkNumberInputWrapper,\n \"aria-invalid\": error != null || undefined\n }, /*#__PURE__*/React.createElement(Input, {\n id: id,\n className: styles.osdkNumberInputField,\n type: \"text\",\n inputMode: \"decimal\",\n value: displayValue,\n onValueChange: handleValueChange,\n onKeyDown: handleKeyDown,\n placeholder: placeholder,\n disabled: disabled\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkNumberInputStepper\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.osdkNumberInputStepButton,\n \"aria-label\": \"Increment\",\n tabIndex: -1,\n disabled: disabled,\n onClick: handleStepUp\n }, /*#__PURE__*/React.createElement(ChevronUp, {\n size: CHEVRON_SIZE\n })), /*#__PURE__*/React.createElement(Button, {\n className: styles.osdkNumberInputStepButton,\n \"aria-label\": \"Decrement\",\n tabIndex: -1,\n disabled: disabled,\n onClick: handleStepDown\n }, /*#__PURE__*/React.createElement(ChevronDown, {\n size: CHEVRON_SIZE\n }))));\n}\nfunction isValidInput(text) {\n return VALID_NUMERIC_REGEX.test(text);\n}\nfunction parseNumericValue(text) {\n if (text === \"\") {\n return null;\n }\n const parsed = Number(text);\n return Number.isNaN(parsed) ? null : parsed;\n}\nfunction formatNumberForDisplay(value) {\n return value != null ? String(value) : \"\";\n}\nfunction clamp(value, min, max) {\n if (min != null && value < min) return min;\n if (max != null && value > max) return max;\n return value;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useState } from \"react\";\n\n/**\n * Returns a debounced version of `value` that only updates after `debounceMs`\n * of inactivity. Each change to `value` resets the timer.\n */\nexport function useDebouncedValue(value, debounceMs) {\n const [debouncedValue, setDebouncedValue] = useState(value);\n useEffect(function debounceValue() {\n const timer = setTimeout(() => {\n setDebouncedValue(value);\n }, debounceMs);\n return () => {\n clearTimeout(timer);\n };\n }, [value, debounceMs]);\n return debouncedValue;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { throttle } from \"lodash-es\";\nimport { useCallback, useEffect, useRef } from \"react\";\nimport { useEventCallback } from \"./useEventCallback.js\";\nconst THRESHOLD = 0.5;\nconst OPTIONS = {\n threshold: THRESHOLD\n};\n/**\n * This hooks handles the logic of triggering a callback when the user reaches the target element (e.g. spinner).\n * It returns a callback that must be set as the ref of the target element at the bottom of the\n * scroll container.\n */\nexport function useInfiniteScroll({\n callback,\n loadedCount\n}) {\n const observer = useRef();\n const targetRef = useRef();\n const eventCallback = useEventCallback(callback);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const throttledCallback = useCallback(throttle(eventCallback), []);\n\n /**\n * If the observer updates the entry in a way that indicates that the target element is intersecting\n * with the scroll container, invoke the callback.\n */\n const handleObserverUpdate = useCallback(entries => {\n const ent = entries[0];\n if (ent && ent.isIntersecting) {\n throttledCallback();\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n\n /**\n * Retrigger visibility detection whenever the loaded count of items changes. This allows us to\n * detect loading initial pages in a tall container that do not cause the target element to\n * change visibility.\n */\n useEffect(() => {\n const {\n current: targetElement\n } = targetRef;\n if (observer.current == null || targetElement == null) {\n return;\n }\n observer.current.observe(targetElement);\n return () => {\n observer.current?.unobserve(targetElement);\n };\n }, [loadedCount]);\n const setRef = node => {\n if (node != null) {\n targetRef.current = node;\n if (observer.current == null) {\n observer.current = new IntersectionObserver(handleObserverUpdate, OPTIONS);\n }\n observer.current.observe(node);\n } else if (targetRef.current != null) {\n observer.current?.unobserve(targetRef.current);\n }\n };\n return setRef;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkAsyncDropdownError {\n color: var(--osdk-async-dropdown-error-color);\n}\n\n.osdkAsyncDropdownStatus {\n padding: var(--osdk-async-dropdown-status-padding);\n color: var(--osdk-async-dropdown-status-color);\n}\n\n.osdkAsyncDropdownSkeleton {\n width: var(--osdk-async-dropdown-skeleton-width);\n height: var(--osdk-async-dropdown-skeleton-height);\n margin: var(--osdk-async-dropdown-skeleton-margin);\n border-radius: var(--osdk-async-dropdown-skeleton-border-radius);\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useMemo } from \"react\";\nimport { SkeletonBar } from \"../../base-components/skeleton/SkeletonBar.js\";\nimport { useInfiniteScroll } from \"../../shared/hooks/useInfiniteScroll.js\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nimport styles from \"./AsyncDropdownField.module.css\";\nimport { DropdownField } from \"./DropdownField.js\";\nexport const AsyncDropdownField = typedReactMemo(function AsyncDropdownFieldFn({\n isLoading,\n hasMore,\n isSearching,\n onFetchMore,\n fetchError,\n ...dropdownProps\n}) {\n const itemCount = dropdownProps.items.length;\n const popupStatus = useMemo(() => {\n if (fetchError != null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkAsyncDropdownError,\n role: \"alert\"\n }, fetchError.message);\n }\n if (isSearching) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkAsyncDropdownStatus\n }, \"Searching\\u2026\");\n }\n // Show \"Loading…\" during the initial fetch before any data arrives,\n // so the user doesn't see a misleading \"No results\" message.\n if (isLoading && itemCount === 0) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkAsyncDropdownStatus\n }, \"Loading\\u2026\");\n }\n // \"No results\" is handled by Combobox.Empty inside DropdownField\n return null;\n }, [fetchError, isSearching, isLoading, itemCount]);\n const infiniteScrollRef = useInfiniteScroll({\n callback: onFetchMore,\n loadedCount: itemCount\n });\n return /*#__PURE__*/React.createElement(DropdownField, _extends({}, dropdownProps, {\n isSearchable: true,\n popupStatus: popupStatus,\n trailingItem: hasMore ? /*#__PURE__*/React.createElement(InfiniteScrollSentinel, {\n key: \"sentinel\",\n infiniteScrollRef: infiniteScrollRef\n }) : null,\n disableClientSideFiltering: dropdownProps.onQueryChange != null\n }));\n});\n\n/** Skeleton placeholder that triggers the next page fetch when it scrolls into view. */\nfunction InfiniteScrollSentinel({\n infiniteScrollRef\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: infiniteScrollRef,\n role: \"presentation\"\n }, /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkAsyncDropdownSkeleton\n }));\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useObjectSet, useOsdkMetadata, useOsdkObjects } from \"@osdk/react\";\nimport React, { memo, useCallback, useMemo, useState } from \"react\";\nimport { useDebouncedValue } from \"../../shared/hooks/useDebouncedValue.js\";\nimport { AsyncDropdownField } from \"./AsyncDropdownField.js\";\n\n/** Debounce search input to avoid firing a server query on every keystroke. */\nconst SEARCH_DEBOUNCE_MS = 300;\n/** Number of objects fetched per page from the OSDK. */\nconst PAGE_SIZE = 50;\n/** Stable empty array so the component doesn't re-render when data is undefined. */\nconst EMPTY_OBJECT_SELECT_ITEMS = [];\nexport const ObjectSelectField = /*#__PURE__*/memo(function ObjectSelectFieldFn(props) {\n const source = resolveObjectSelectSource(props);\n return /*#__PURE__*/React.createElement(ObjectSelectInner, _extends({}, props, {\n source: source\n }));\n});\nconst ObjectSelectInner = /*#__PURE__*/memo(function ObjectSelectInnerFn({\n source,\n value,\n onChange,\n error,\n id,\n placeholder,\n isMultiple,\n portalRef,\n portalContainer,\n disabled\n}) {\n // Tracks the user's search text. Cleared on selection so the selected\n // label (managed by base-ui) doesn't trigger a server-side search.\n const [query, setQuery] = useState(\"\");\n const debouncedQuery = useDebouncedValue(query, SEARCH_DEBOUNCE_MS);\n const handleChange = useCallback(newValue => {\n onChange?.(newValue);\n setQuery(\"\");\n }, [onChange]);\n const {\n metadata\n } = useOsdkMetadata(source.objectType);\n const titleProperty = typeof metadata?.titleProperty === \"string\" ? metadata.titleProperty : undefined;\n\n // Search on the title property (e.g. \"fullName\") so the where clause\n // matches the same text displayed to the user via obj.$title.\n // The where clause is loosely typed because we resolve the property\n // name at runtime from metadata, not from compile-time type info.\n const where = useMemo(() => {\n const trimmed = debouncedQuery.trim();\n if (trimmed === \"\" || titleProperty == null) {\n return undefined;\n }\n return {\n [titleProperty]: {\n $containsAllTermsInOrder: trimmed\n }\n };\n }, [debouncedQuery, titleProperty]);\n const objectSetResult = useObjectSet(source.objectSet, {\n where,\n pageSize: PAGE_SIZE,\n enabled: source.kind === \"objectSet\"\n });\n const objectTypeResult = useOsdkObjects(source.objectType, {\n where,\n pageSize: PAGE_SIZE,\n enabled: source.kind === \"objectType\"\n });\n const {\n data,\n isLoading,\n error: fetchError,\n fetchMore,\n hasMore\n } = source.kind === \"objectSet\" ? objectSetResult : objectTypeResult;\n const items = data ?? EMPTY_OBJECT_SELECT_ITEMS;\n const handleFetchMore = useCallback(() => {\n void fetchMore?.();\n }, [fetchMore]);\n return /*#__PURE__*/React.createElement(AsyncDropdownField, {\n id: id,\n value: value,\n onChange: handleChange,\n error: error,\n items: items,\n itemToStringLabel: itemToStringLabel,\n itemToKey: itemToKey,\n isItemEqual: isItemEqual,\n placeholder: placeholder ?? \"Search…\",\n isMultiple: isMultiple,\n portalRef: portalRef,\n portalContainer: portalContainer,\n disabled: disabled,\n onQueryChange: setQuery,\n isLoading: isLoading,\n isSearching: debouncedQuery.trim() !== \"\" && isLoading,\n hasMore: hasMore,\n onFetchMore: handleFetchMore,\n fetchError: fetchError\n });\n});\nfunction resolveObjectSelectSource(props) {\n if (\"objectSet\" in props && props.objectSet != null) {\n return {\n kind: \"objectSet\",\n objectSet: props.objectSet,\n objectType: props.objectSet.$objectSetInternals.def\n };\n }\n return {\n kind: \"objectType\",\n objectType: props.objectType\n };\n}\nfunction itemToStringLabel(obj) {\n return obj.$title ?? String(obj.$primaryKey);\n}\nfunction itemToKey(obj) {\n return String(obj.$primaryKey);\n}\nfunction isItemEqual(a, b) {\n return a.$primaryKey === b.$primaryKey;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Icons, SVGIconContainer } from \"@blueprintjs/icons\";\nimport React from \"react\";\nexport const BlueprintIcon = /*#__PURE__*/React.memo(function BlueprintIconFn({\n icon,\n size\n}) {\n const paths = useIcon(icon.name, size);\n return /*#__PURE__*/React.createElement(SVGIconContainer, {\n iconName: icon.name,\n color: icon.color\n }, paths != null ? paths.map((d, i) => /*#__PURE__*/React.createElement(\"path\", {\n key: i,\n d: d,\n fillRule: \"evenodd\"\n })) : []);\n});\n\n/**\n * Loads icon paths on demand via the public `Icons.load()` API\n * instead of the static `getIconPaths()` which bundles every icon definition.\n */\nfunction useIcon(icon, size) {\n const [iconPaths, setIconPaths] = React.useState(() => Icons.getPaths(icon, size));\n React.useEffect(function loadIconPaths() {\n let isMounted = true;\n const loadedIconPaths = Icons.getPaths(icon, size);\n if (loadedIconPaths != null) {\n setIconPaths(loadedIconPaths);\n } else {\n void Icons.load(icon, size).then(() => {\n if (isMounted) {\n setIconPaths(Icons.getPaths(icon, size));\n }\n });\n }\n return () => {\n isMounted = false;\n };\n }, [icon, size]);\n return iconPaths;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkObjectSetField {\n display: flex;\n align-items: center;\n gap: var(--osdk-object-set-gap);\n min-height: var(--osdk-object-set-min-height);\n padding: var(--osdk-object-set-padding);\n color: var(--osdk-object-set-color);\n font-family: var(--osdk-object-set-font-family);\n font-size: var(--osdk-object-set-font-size);\n line-height: var(--osdk-object-set-line-height);\n\n &[aria-disabled=\"true\"] {\n opacity: var(--osdk-disabled-opacity);\n }\n}\n\n.osdkObjectSetFieldEmpty {\n color: var(--osdk-object-set-placeholder-color);\n}\n\n.osdkObjectSetFieldError {\n color: var(--osdk-object-set-error-color);\n}\n\n.osdkObjectSetIconSkeleton {\n width: var(--osdk-object-set-icon-skeleton-width);\n align-self: stretch;\n}\n\n.osdkObjectSetLabelSkeleton {\n width: var(--osdk-object-set-label-skeleton-width);\n align-self: stretch;\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { IconSize } from \"@blueprintjs/icons\";\nimport { useObjectSet, useOsdkMetadata } from \"@osdk/react\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport { BlueprintIcon } from \"../../base-components/icon/BlueprintIcon.js\";\nimport { SkeletonBar } from \"../../base-components/skeleton/SkeletonBar.js\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nimport styles from \"./ObjectSetField.module.css\";\nconst DEFAULT_OBJECT_ICON = {\n name: \"cube\",\n color: \"#4C90F0\"\n};\nconst ICON_SIZE = IconSize.STANDARD;\nconst DEFAULT_EMPTY_MESSAGE = \"Object set is not defined\";\nexport const ObjectSetField = typedReactMemo(function ObjectSetFieldFn({\n value,\n emptyMessage = DEFAULT_EMPTY_MESSAGE,\n disabled\n}) {\n if (value == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.osdkObjectSetField, styles.osdkObjectSetFieldEmpty),\n \"aria-disabled\": disabled === true || undefined\n }, emptyMessage);\n }\n return /*#__PURE__*/React.createElement(ObjectSetFieldContent, {\n objectSet: value,\n disabled: disabled\n });\n});\nconst ObjectSetFieldContent = /*#__PURE__*/React.memo(function ObjectSetFieldContentFn({\n objectSet,\n disabled\n}) {\n const objectTypeDef = objectSet.$objectSetInternals.def;\n const {\n metadata,\n loading: metadataLoading\n } = useOsdkMetadata(objectTypeDef);\n const {\n totalCount,\n data,\n isLoading: objectSetLoading,\n error: objectSetError\n } = useObjectSet(objectSet, {\n // Fetching a page size of one is enough to get the totalCount\n pageSize: 1\n });\n const hasMetadata = metadata != null;\n const icon = React.useMemo(() => metadata != null && \"icon\" in metadata && metadata.icon != null ? toComponentIcon(metadata.icon) : DEFAULT_OBJECT_ICON, [metadata]);\n const displayName = totalCount === \"1\" || !hasMetadata || !(\"pluralDisplayName\" in metadata) ? metadata?.displayName : metadata.pluralDisplayName;\n\n // Wait for metadata even if the count is already available, so we can\n // show the correct display name and avoid a flash of \"objects\" → \"Employees\".\n const showLoadingState = metadataLoading && !hasMetadata;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkObjectSetField,\n \"aria-disabled\": disabled === true || undefined\n }, showLoadingState ? /*#__PURE__*/React.createElement(React.Fragment, null, OBJECT_SET_ICON_SKELETON, OBJECT_SET_LABEL_SKELETON) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(BlueprintIcon, {\n icon: icon,\n size: ICON_SIZE\n }), /*#__PURE__*/React.createElement(ObjectSetLabel, {\n displayName: displayName,\n totalCount: totalCount,\n error: objectSetError,\n isLoading: objectSetLoading\n })));\n});\nconst ObjectSetLabel = /*#__PURE__*/React.memo(function ObjectSetLabelFn({\n displayName,\n totalCount,\n isLoading,\n error\n}) {\n const hasData = totalCount != null;\n const label = displayName ?? (totalCount === \"1\" ? \"object\" : \"objects\");\n const showSkeleton = isLoading && !hasData;\n const showError = error != null && !hasData && !isLoading;\n return /*#__PURE__*/React.createElement(React.Fragment, null, showSkeleton && OBJECT_SET_LABEL_SKELETON, showError && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkObjectSetFieldError,\n role: \"alert\"\n }, `Failed to load: ${error.message}`), !showSkeleton && !showError && /*#__PURE__*/React.createElement(\"span\", null, `${formatCount(totalCount)} ${label}`));\n});\nconst OBJECT_SET_ICON_SKELETON = /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkObjectSetIconSkeleton\n});\nconst OBJECT_SET_LABEL_SKELETON = /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkObjectSetLabelSkeleton\n});\nfunction formatCount(count) {\n if (count == null) {\n return \"\\u2013\"; // '–' symbol\n }\n const num = Number(count);\n return Number.isNaN(num) ? count : num.toLocaleString();\n}\nfunction toComponentIcon(apiIcon) {\n return {\n name: apiIcon.name,\n color: apiIcon.color\n };\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkRadioGroup {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-radio-gap);\n\n &[data-orientation=\"horizontal\"] {\n flex-direction: row;\n flex-wrap: wrap;\n }\n}\n\n.osdkRadioItem {\n display: flex;\n align-items: center;\n gap: var(--osdk-radio-item-gap);\n\n &:has(.osdkRadioRoot[data-disabled]) {\n cursor: not-allowed;\n opacity: var(--osdk-disabled-opacity);\n }\n}\n\n.osdkRadioRoot {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--osdk-radio-size);\n height: var(--osdk-radio-size);\n border-radius: 50%;\n border: var(--osdk-radio-border);\n cursor: pointer;\n flex-shrink: 0;\n\n &[data-unchecked] {\n background-color: var(--osdk-radio-bg);\n\n &:hover {\n background-color: var(--osdk-radio-bg-hover);\n }\n }\n\n &[data-checked] {\n background-color: var(--osdk-radio-bg-checked);\n\n &:hover {\n background-color: var(--osdk-radio-bg-checked-hover);\n }\n\n &:active {\n background-color: var(--osdk-radio-bg-checked-active);\n }\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.osdkRadioIndicator {\n width: var(--osdk-radio-indicator-size);\n height: var(--osdk-radio-indicator-size);\n border-radius: 50%;\n background-color: var(--osdk-radio-indicator-color);\n\n &[data-unchecked] {\n display: none;\n }\n}\n\n.osdkRadioLabel {\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-medium);\n line-height: var(--osdk-typography-line-height-default);\n color: var(--osdk-typography-color-default-rest);\n cursor: pointer;\n\n .osdkRadioRoot[data-disabled] + & {\n cursor: not-allowed;\n }\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Radio } from \"@base-ui/react/radio\";\nimport { RadioGroup } from \"@base-ui/react/radio-group\";\nimport React, { memo, useCallback, useId, useMemo } from \"react\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nimport styles from \"./RadioButtonsField.module.css\";\nexport const RadioButtonsField = typedReactMemo(function RadioButtonsFieldFn({\n id,\n value,\n onChange,\n options,\n orientation,\n disabled\n}) {\n const selectedLabel = useMemo(() => value != null ? options.find(opt => opt.value === value)?.label : undefined, [options, value]);\n const handleValueChange = useCallback(nextLabel => {\n const match = options.find(opt => opt.label === nextLabel);\n onChange?.(match?.value ?? null);\n }, [options, onChange]);\n return /*#__PURE__*/React.createElement(RadioGroup, {\n id: id,\n className: styles.osdkRadioGroup,\n \"data-orientation\": orientation ?? \"vertical\",\n value: selectedLabel,\n onValueChange: handleValueChange,\n disabled: disabled\n }, options.map(option => /*#__PURE__*/React.createElement(RadioItem, {\n key: option.label,\n option: option,\n disabled: disabled\n })));\n});\nconst RadioItem = /*#__PURE__*/memo(function RadioItemFn({\n option,\n disabled\n}) {\n const labelId = useId();\n return /*#__PURE__*/React.createElement(\"label\", {\n className: styles.osdkRadioItem\n }, /*#__PURE__*/React.createElement(Radio.Root, {\n value: option.label,\n className: styles.osdkRadioRoot,\n disabled: disabled,\n \"aria-labelledby\": labelId,\n tabIndex: disabled === true ? -1 : undefined\n }, /*#__PURE__*/React.createElement(Radio.Indicator, {\n className: styles.osdkRadioIndicator\n })), /*#__PURE__*/React.createElement(\"span\", {\n id: labelId,\n className: styles.osdkRadioLabel\n }, option.label));\n});","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport { Switch } from \"../../base-components/switch/Switch.js\";\nexport const SwitchField = /*#__PURE__*/React.memo(function SwitchFieldFn({\n id,\n label,\n value,\n onChange,\n error,\n disabled\n}) {\n return /*#__PURE__*/React.createElement(Switch, {\n id: id,\n checked: value ?? false,\n onCheckedChange: onChange,\n \"aria-invalid\": error != null || undefined,\n \"aria-label\": label,\n disabled: disabled\n });\n});","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkBaseInput {\n display: block;\n width: 100%;\n min-height: var(--osdk-input-min-height);\n padding: var(--osdk-input-padding);\n border-radius: var(--osdk-input-border-radius);\n border: var(--osdk-input-border-width) solid var(--osdk-input-border-color);\n box-shadow: var(--osdk-input-shadow);\n background-color: var(--osdk-input-bg);\n color: var(--osdk-input-color);\n font-family: var(--osdk-input-font-family);\n font-size: var(--osdk-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n transition:\n background-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease),\n border-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease);\n\n &::placeholder {\n color: var(--osdk-input-placeholder-color);\n }\n\n &:hover {\n background-color: var(--osdk-input-bg-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-input-focus-width) solid var(--osdk-input-focus-color);\n outline-offset: var(--osdk-input-focus-offset);\n border-color: var(--osdk-input-border-color-focus);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: var(--osdk-input-disabled-opacity);\n }\n\n &[aria-invalid] {\n border-color: var(--osdk-input-border-color-error);\n }\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport React, { useCallback } from \"react\";\nimport styles from \"./BaseInput.module.css\";\nconst TEXTAREA_STYLE = {\n resize: \"vertical\"\n};\nexport function TextAreaField({\n id,\n value,\n onChange,\n error,\n placeholder,\n rows,\n wrap,\n minLength,\n maxLength,\n disabled\n}) {\n const renderTextarea = useCallback(props => /*#__PURE__*/React.createElement(\"textarea\", _extends({}, props, {\n rows: rows,\n wrap: wrap,\n style: TEXTAREA_STYLE\n })), [rows, wrap]);\n return /*#__PURE__*/React.createElement(Input, {\n id: id,\n className: styles.osdkBaseInput,\n value: value ?? \"\",\n onValueChange: onChange,\n placeholder: placeholder,\n minLength: minLength,\n maxLength: maxLength,\n disabled: disabled,\n render: renderTextarea,\n \"aria-invalid\": error != null || undefined\n });\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport React from \"react\";\nimport styles from \"./BaseInput.module.css\";\nexport function TextInputField({\n id,\n value,\n onChange,\n error,\n placeholder,\n minLength,\n maxLength,\n disabled\n}) {\n return /*#__PURE__*/React.createElement(Input, {\n id: id,\n className: styles.osdkBaseInput,\n type: \"text\",\n value: value ?? \"\",\n onValueChange: onChange,\n placeholder: placeholder,\n minLength: minLength,\n maxLength: maxLength,\n disabled: disabled,\n \"aria-invalid\": error != null || undefined\n });\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\nimport { DatePicker, DateRangePicker, EMPTY_RANGE } from \"../../shared/calendar/index.js\";\nimport { FormField } from \"../FormField.js\";\nimport { CustomField } from \"./CustomField.js\";\nimport { DropdownField } from \"./DropdownField.js\";\nimport { FilePickerField } from \"./FilePickerField.js\";\nimport { NumberInputField } from \"./NumberInputField.js\";\nimport { ObjectSelectField } from \"./ObjectSelectField.js\";\nimport { ObjectSetField } from \"./ObjectSetField.js\";\nimport { RadioButtonsField } from \"./RadioButtonsField.js\";\nimport { SwitchField } from \"./SwitchField.js\";\nimport { TextAreaField } from \"./TextAreaField.js\";\nimport { TextInputField } from \"./TextInputField.js\";\nconst UNSUPPORTED_FIELD_MESSAGE = \"Unsupported field type. Use a CUSTOM field instead\";\nexport const FormFieldRenderer = /*#__PURE__*/memo(function FormFieldRendererFn({\n fieldDefinition,\n value,\n onFieldValueChange,\n onBlur,\n onFieldBlur,\n isEdited,\n error,\n portalContainer\n}) {\n const {\n label,\n isRequired,\n helperText,\n helperTextPlacement\n } = fieldDefinition;\n return /*#__PURE__*/React.createElement(FormField, {\n label: label,\n isRequired: isRequired,\n fieldKey: fieldDefinition.fieldKey,\n helperText: helperText,\n helperTextPlacement: helperTextPlacement,\n isEdited: isEdited,\n error: error,\n onBlur: onBlur\n }, renderFieldComponent(fieldDefinition, value, onFieldValueChange, error, portalContainer, onFieldBlur));\n});\nfunction renderFieldComponent(fieldDefinition, value, onChange, error, portalContainer, onFieldBlur) {\n const disabled = fieldDefinition.disabled === true;\n switch (fieldDefinition.fieldComponent) {\n case \"DATE_RANGE_INPUT\":\n return /*#__PURE__*/React.createElement(DateRangePicker, _extends({\n id: fieldDefinition.fieldKey,\n value: coerceToDateRange(value),\n onChange: onChange,\n placeholderStart: fieldDefinition.placeholder\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled,\n portalContainer: resolvePortalContainer(fieldDefinition.fieldComponentProps, portalContainer)\n }));\n case \"TEXT_INPUT\":\n return /*#__PURE__*/React.createElement(TextInputField, _extends({\n id: fieldDefinition.fieldKey,\n value: value != null ? String(value) : \"\",\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled\n }));\n case \"UNSUPPORTED\":\n return /*#__PURE__*/React.createElement(TextInputField, _extends({}, fieldDefinition.fieldComponentProps, {\n id: fieldDefinition.fieldKey,\n value: UNSUPPORTED_FIELD_MESSAGE,\n error: error,\n disabled: true\n }));\n case \"TEXT_AREA\":\n return /*#__PURE__*/React.createElement(TextAreaField, _extends({\n id: fieldDefinition.fieldKey,\n value: value != null ? String(value) : \"\",\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled\n }));\n case \"DROPDOWN\":\n {\n return /*#__PURE__*/React.createElement(DropdownField, _extends({\n id: fieldDefinition.fieldKey,\n value: value,\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled,\n portalContainer: resolvePortalContainer(fieldDefinition.fieldComponentProps, portalContainer),\n onBlur: onFieldBlur\n }));\n }\n case \"DATETIME_PICKER\":\n return /*#__PURE__*/React.createElement(DatePicker, _extends({\n id: fieldDefinition.fieldKey,\n placeholder: fieldDefinition.placeholder\n // TODO: Use coerceFieldValue\n ,\n value: value instanceof Date ? value : null,\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled,\n portalContainer: resolvePortalContainer(fieldDefinition.fieldComponentProps, portalContainer)\n }));\n case \"RADIO_BUTTONS\":\n return /*#__PURE__*/React.createElement(RadioButtonsField, _extends({\n id: fieldDefinition.fieldKey,\n value: value,\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled\n }));\n case \"SWITCH\":\n return /*#__PURE__*/React.createElement(SwitchField, _extends({\n id: fieldDefinition.fieldKey,\n label: fieldDefinition.label,\n value: !!value,\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled\n }));\n case \"CUSTOM\":\n return /*#__PURE__*/React.createElement(CustomField, _extends({\n id: fieldDefinition.fieldKey,\n value: value,\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled\n }));\n case \"NUMBER_INPUT\":\n // TODO: Use coerceFieldValue\n return /*#__PURE__*/React.createElement(NumberInputField, _extends({\n id: fieldDefinition.fieldKey,\n value: typeof value === \"number\" ? value : null,\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled\n }));\n case \"FILE_PICKER\":\n return /*#__PURE__*/React.createElement(FilePickerField, _extends({\n id: fieldDefinition.fieldKey,\n value: coerceToFileValue(value),\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled\n }));\n case \"OBJECT_SELECT\":\n return /*#__PURE__*/React.createElement(ObjectSelectField, _extends({\n id: fieldDefinition.fieldKey,\n value: narrowToOsdkObject(value),\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled,\n portalContainer: resolvePortalContainer(fieldDefinition.fieldComponentProps, portalContainer)\n }));\n case \"OBJECT_SET\":\n return /*#__PURE__*/React.createElement(ObjectSetField, _extends({\n id: fieldDefinition.fieldKey\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled\n }));\n default:\n return assertUnreachableFieldComponent(fieldDefinition);\n }\n}\nfunction resolvePortalContainer(fieldComponentProps, formPortalContainer) {\n // A field-level value, including null, is an explicit override. That lets a\n // single field opt out of a form-level dialog portal when needed.\n return Object.hasOwn(fieldComponentProps, \"portalContainer\") ? fieldComponentProps.portalContainer : formPortalContainer;\n}\nfunction coerceToDateRange(value) {\n if (!Array.isArray(value) || value.length !== 2) return EMPTY_RANGE;\n const start = value[0] instanceof Date ? value[0] : null;\n const end = value[1] instanceof Date ? value[1] : null;\n if (start == null && end == null) return EMPTY_RANGE;\n return [start, end];\n}\n\n// TODO: Move and share with `coerceFieldValue`\nfunction isFileArray(value) {\n return value.every(v => v instanceof File);\n}\nfunction coerceToFileValue(value) {\n if (value instanceof File) {\n return value;\n }\n if (Array.isArray(value) && isFileArray(value)) {\n return value;\n }\n return null;\n}\n\n/** Narrows the untyped form value to an OsdkObject by checking for $primaryKey. */\nfunction narrowToOsdkObject(value) {\n if (value != null && typeof value === \"object\" && \"$primaryKey\" in value) {\n return value;\n }\n return null;\n}\nfunction assertUnreachableFieldComponent(value) {\n throw new Error(`Unhandled field component: ${String(value)}`);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo, useCallback, useMemo, useState } from \"react\";\nimport { useController } from \"react-hook-form\";\nimport { extractValidationRules } from \"../utils/extractValidationRules.js\";\nimport { FormFieldRenderer } from \"./FormFieldRenderer.js\";\nconst SELECT_LIKE_FIELDS = new Set([\"RADIO_BUTTONS\", \"SWITCH\"]);\nexport const FieldBridge = /*#__PURE__*/memo(function FieldBridgeFn({\n fieldDef,\n control,\n onExternalChange,\n portalContainer\n}) {\n const rules = useMemo(() => extractValidationRules(fieldDef), [fieldDef]);\n const {\n field: {\n onChange,\n onBlur,\n value\n },\n fieldState: {\n error: fieldError\n }\n } = useController({\n name: fieldDef.fieldKey,\n control,\n rules\n });\n const isSelectLike = SELECT_LIKE_FIELDS.has(fieldDef.fieldComponent);\n const isDropdown = fieldDef.fieldComponent === \"DROPDOWN\";\n // RHF's touched state is blur-based and dirty state is value-comparison\n // based. The tag represents an actual user edit, so set it from the\n // field change path and keep it visible even if the value is restored.\n const [isEdited, setIsEdited] = useState(false);\n const handleChange = useCallback(newValue => {\n onChange(newValue);\n setIsEdited(true);\n onExternalChange?.(fieldDef.fieldKey, newValue);\n // Select-like fields are \"pick once\" interactions — mark as touched\n // immediately so RHF revalidates (clears errors) on selection rather\n // than waiting for focus to leave the container.\n if (isSelectLike) {\n onBlur();\n }\n }, [onChange, onBlur, onExternalChange, fieldDef.fieldKey, isSelectLike]);\n\n // Ignore blur events where focus stays within the field container\n // (e.g. moving between radio buttons in a group). Only fire RHF's\n // onBlur when focus truly leaves the field.\n const handleBlur = useCallback(e => {\n if (e.currentTarget.contains(e.relatedTarget)) {\n return;\n }\n onBlur();\n }, [onBlur]);\n return /*#__PURE__*/React.createElement(FormFieldRenderer, {\n value: value,\n fieldDefinition: fieldDef,\n onFieldValueChange: handleChange\n // Dropdown fields own their blur signal because their popover renders\n // in a portal outside the container div — the container-level blur\n // would fire prematurely when the popover opens.\n ,\n onBlur: isDropdown ? undefined : handleBlur,\n onFieldBlur: isDropdown ? onBlur : undefined,\n isEdited: isEdited,\n error: fieldError?.message,\n portalContainer: portalContainer\n });\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkFormHeader {\n margin: 0;\n padding-block: var(--osdk-form-header-block-padding);\n padding-inline: var(--osdk-form-content-padding-inline);\n border-block-end: var(--osdk-surface-border-width) solid\n var(--osdk-form-header-border-color);\n font-size: var(--osdk-form-header-font-size);\n font-weight: var(--osdk-form-header-font-weight);\n color: var(--osdk-form-header-color);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\nimport styles from \"./FormHeader.module.css\";\nexport const FormHeader = /*#__PURE__*/memo(function FormHeaderFn({\n title\n}) {\n return /*#__PURE__*/React.createElement(\"h2\", {\n className: styles.osdkFormHeader\n }, title);\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* Box style container — matches input border tokens so collapsed\n sections blend with the rest of the form fields. */\n.osdkFormSectionBox {\n border-width: var(--osdk-form-section-border-width);\n border-style: solid;\n border-color: var(--osdk-form-section-border-color);\n border-radius: var(--osdk-form-section-border-radius);\n background-color: var(--osdk-form-section-background);\n}\n\n/* Header with title and collapse trigger */\n.osdkFormSectionHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-block: var(--osdk-form-section-header-padding-block);\n padding-inline: var(--osdk-form-section-header-padding-inline);\n gap: var(--osdk-form-section-header-gap);\n}\n\n.osdkFormSectionTitleArea {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-section-title-gap);\n flex: 1;\n min-width: 0;\n}\n\n.osdkFormSectionTitle {\n font-size: var(--osdk-form-section-title-font-size);\n font-weight: var(--osdk-form-section-title-font-weight);\n color: var(--osdk-form-section-title-color);\n}\n\n.osdkFormSectionDescription {\n font-size: var(--osdk-form-section-description-font-size);\n color: var(--osdk-form-section-description-color);\n}\n\n/* Collapse trigger button */\n.osdkFormSectionTrigger {\n display: flex;\n align-items: center;\n gap: var(--osdk-form-section-trigger-gap);\n background-color: transparent;\n border-style: none;\n cursor: pointer;\n padding: 0;\n color: var(--osdk-form-section-trigger-color);\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n/* Chevron rotates when panel is open */\n.osdkFormSectionChevron {\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform var(--osdk-form-section-transition-duration) ease;\n}\n\n.osdkFormSectionTrigger[data-panel-open] .osdkFormSectionChevron {\n transform: rotate(180deg);\n}\n\n/* Error badge shown on collapsed sections */\n.osdkFormSectionErrorBadge {\n font-size: var(--osdk-form-section-error-font-size);\n color: var(--osdk-form-section-error-color);\n white-space: nowrap;\n}\n\n/* Content area containing fields */\n.osdkFormSectionContent {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-section-field-gap);\n padding-block: var(--osdk-form-section-content-padding-block);\n padding-inline: var(--osdk-form-section-content-padding-inline);\n}\n\n/* Divider between header and content when expanded */\n.osdkFormSectionDivider {\n border-block-start-width: var(--osdk-form-section-border-width);\n border-block-start-style: solid;\n border-block-start-color: var(--osdk-form-section-border-color);\n}\n\n/* Multi-column grid layout */\n.osdkFormSectionGrid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n row-gap: var(--osdk-form-section-field-gap);\n column-gap: var(--osdk-form-section-grid-column-gap);\n padding-block: var(--osdk-form-section-content-padding-block);\n padding-inline: var(--osdk-form-section-content-padding-inline);\n}\n\n/* Last odd child spans both columns so it doesn't dangle alone */\n.osdkFormSectionGrid > :nth-child(odd):last-child {\n grid-column: 1 / -1;\n}\n\n/* Minimal style — no box, just a heading */\n.osdkFormSectionMinimalHeader {\n padding-block: var(--osdk-form-section-header-padding-block);\n}\n\n.osdkFormSectionMinimalTitle {\n font-size: var(--osdk-form-section-minimal-title-font-size);\n font-weight: var(--osdk-form-section-title-font-weight);\n color: var(--osdk-form-section-title-color);\n}\n\n.osdkFormSectionMinimalDescription {\n font-size: var(--osdk-form-section-description-font-size);\n color: var(--osdk-form-section-description-color);\n margin-block-start: var(--osdk-form-section-title-gap);\n}\n\n.osdkFormSectionMinimalContent {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-section-field-gap);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Collapsible } from \"@base-ui/react/collapsible\";\nimport { CaretDown } from \"@blueprintjs/icons\";\nimport classNames from \"classnames\";\nimport React, { memo } from \"react\";\nimport styles from \"./FormSection.module.css\";\nexport const FormSection = /*#__PURE__*/memo(function FormSectionFn({\n definition,\n errorCount,\n children\n}) {\n const {\n title,\n description,\n collapsedByDefault = false,\n showTitleBar = true,\n columnCount = 1,\n style = \"box\"\n } = definition;\n const isMinimal = style === \"minimal\";\n if (isMinimal) {\n return /*#__PURE__*/React.createElement(MinimalSection, {\n title: title,\n description: description\n }, children);\n }\n const contentClassName = classNames(columnCount === 2 ? styles.osdkFormSectionGrid : styles.osdkFormSectionContent, styles.osdkFormSectionDivider);\n if (!showTitleBar) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSectionBox\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: contentClassName\n }, children));\n }\n return /*#__PURE__*/React.createElement(Collapsible.Root, {\n // Inverted: Base UI uses \"open\" semantics, our API uses \"collapsed\" semantics\n defaultOpen: !collapsedByDefault,\n className: styles.osdkFormSectionBox\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSectionHeader\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSectionTitleArea\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormSectionTitle\n }, title), description != null && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormSectionDescription\n }, description)), /*#__PURE__*/React.createElement(Collapsible.Trigger, {\n className: styles.osdkFormSectionTrigger,\n \"aria-label\": title\n }, errorCount > 0 && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormSectionErrorBadge,\n role: \"status\"\n }, errorCount === 1 ? \"1 error\" : `${errorCount} errors`), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormSectionChevron\n }, /*#__PURE__*/React.createElement(CaretDown, {\n size: 16\n })))), /*#__PURE__*/React.createElement(Collapsible.Panel, {\n keepMounted: true\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: contentClassName\n }, children)));\n});\nconst MinimalSection = /*#__PURE__*/memo(function MinimalSectionFn({\n title,\n description,\n children\n}) {\n return /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSectionMinimalHeader\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSectionMinimalTitle\n }, title), description != null && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSectionMinimalDescription\n }, description)), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSectionMinimalContent\n }, children));\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Error as ErrorIcon } from \"@blueprintjs/icons\";\nimport classNames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useRef, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { SkeletonBar } from \"../base-components/skeleton/SkeletonBar.js\";\nimport { Tooltip } from \"../base-components/tooltip/Tooltip.js\";\nimport { useAsyncAction } from \"../shared/hooks/useAsyncAction.js\";\nimport styles from \"./BaseForm.module.css\";\nimport { FieldBridge } from \"./fields/FieldBridge.js\";\nimport { FormHeader } from \"./FormHeader.js\";\nimport { FormSection } from \"./FormSection.js\";\nexport const BaseForm = /*#__PURE__*/memo(function BaseFormFn({\n formTitle,\n formContent,\n formState: controlledFormState,\n onFieldValueChange,\n onSubmit,\n isSubmitDisabled = false,\n isPending = false,\n isLoading = false,\n className,\n submitButtonText = \"Submit\",\n submitButtonVariant = \"primary\"\n}) {\n const portalContainerRef = useRef(null);\n const isControlled = controlledFormState != null;\n const allFieldDefinitions = useMemo(() => flattenFieldDefinitions(formContent), [formContent]);\n const defaultValues = useMemo(() => buildDefaultValues(allFieldDefinitions), [allFieldDefinitions]);\n const {\n control,\n trigger,\n getValues,\n formState: {\n errors\n }\n } = useForm({\n // Validate on blur first, then revalidate on change after the first\n // error. This gives the user a chance to finish typing before seeing\n // errors, while staying responsive once an error is surfaced.\n mode: \"onTouched\",\n ...(isControlled ? {\n values: controlledFormState\n } : {\n defaultValues\n })\n });\n const [hasAttemptedSubmit, setHasAttemptedSubmit] = useState(false);\n const {\n isPending: isSubmitting,\n error: submissionError,\n execute: executeSubmit,\n clearError\n } = useAsyncAction(onSubmit);\n const submissionErrorMessage = submissionError != null ? submissionError instanceof Error ? submissionError.message\n // TODO: provide better error message\n : \"Submission failed\" : undefined;\n const submitForm = useCallback(async () => {\n setHasAttemptedSubmit(true);\n const isValid = await trigger();\n if (!isValid) {\n return;\n }\n\n // In controlled mode, always submit the controlled state, not RHF's\n // internal state. Between a user keystroke and the parent re-rendering,\n // RHF's store may hold the user-typed value rather than the parent's\n // value. Using controlledFormState directly preserves the existing\n // guarantee that controlled mode submits the parent's state.\n await executeSubmit(controlledFormState ?? getValues());\n }, [trigger, executeSubmit, controlledFormState, getValues]);\n const handleFieldChange = useCallback((fieldKey, value) => {\n clearError();\n onFieldValueChange?.(fieldKey, value);\n }, [clearError, onFieldValueChange]);\n const labelByFieldKey = useMemo(() => new Map(allFieldDefinitions.map(d => [d.fieldKey, d.label])), [allFieldDefinitions]);\n\n // RHF reuses the same errors object reference across renders so we cannot memoize errorEntries\n const errorEntries = Object.entries(errors).map(([key, entry]) => ({\n label: labelByFieldKey.get(key) ?? key,\n message: entry?.message ?? \"Invalid\"\n }));\n const areErrorsPresent = errorEntries.length > 0;\n const buttonErrorMessage = areErrorsPresent ? \"Some fields are invalid\" : submissionErrorMessage;\n const isFormPending = isPending || isSubmitting;\n const isSubmitButtonDisabled = isSubmitDisabled || hasAttemptedSubmit && areErrorsPresent;\n return /*#__PURE__*/React.createElement(\"form\", {\n ref: portalContainerRef,\n className: classNames(styles.osdkForm, className)\n // Workshop widgets can run in iframes without `allow-forms`, where\n // native form submission is blocked. Keep the form landmark, but do not\n // wire any form-level submit handlers; the submit button invokes our\n // JavaScript submit path directly.\n }, formTitle != null && /*#__PURE__*/React.createElement(FormHeader, {\n title: formTitle\n }), isLoading && allFieldDefinitions.length === 0 && /*#__PURE__*/React.createElement(\"div\", {\n role: \"status\",\n \"aria-label\": \"Loading form fields\",\n className: styles.osdkFormFields\n }, FORM_SKELETON), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFields\n }, formContent.map(item => {\n if (item.type === \"field\") {\n return /*#__PURE__*/React.createElement(FieldBridge, {\n key: item.definition.fieldKey,\n fieldDef: item.definition,\n control: control,\n onExternalChange: handleFieldChange,\n portalContainer: portalContainerRef\n });\n }\n const sectionErrorCount = item.definition.fields.reduce((count, field) => count + (errors[field.fieldKey] != null ? 1 : 0), 0);\n return /*#__PURE__*/React.createElement(FormSection, {\n key: item.key,\n definition: item.definition,\n errorCount: sectionErrorCount\n }, item.definition.fields.map(fieldDef => /*#__PURE__*/React.createElement(FieldBridge, {\n key: fieldDef.fieldKey,\n fieldDef: fieldDef,\n control: control,\n onExternalChange: handleFieldChange,\n portalContainer: portalContainerRef\n })));\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFooter\n }, /*#__PURE__*/React.createElement(ErrorIndicator, {\n errorEntries: errorEntries\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSubmitButton\n }, /*#__PURE__*/React.createElement(SubmitButton, {\n isPending: isFormPending,\n isSubmitDisabled: isSubmitButtonDisabled,\n errorMessage: buttonErrorMessage,\n buttonText: submitButtonText,\n buttonVariant: submitButtonVariant,\n onClick: submitForm\n }))));\n});\n\n/**\n * Extracts all RendererFieldDefinitions from formContent, flattening\n * section fields into a single array. RHF sees a flat field namespace\n * regardless of visual grouping, so this is used to build default values\n * and the field-key-to-label map for error display.\n */\nfunction flattenFieldDefinitions(formContent) {\n const result = [];\n for (const item of formContent) {\n if (item.type === \"field\") {\n result.push(item.definition);\n } else {\n for (const fieldDef of item.definition.fields) {\n result.push(fieldDef);\n }\n }\n }\n return result;\n}\nconst SKELETON_FIELD_COUNT = 3;\n\n// Mimics the label + input layout of real form fields.\nconst FORM_SKELETON = Array.from({\n length: SKELETON_FIELD_COUNT\n}, (_, i) => /*#__PURE__*/React.createElement(\"div\", {\n key: i,\n className: styles.osdkFormSkeletonField\n}, /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkFormSkeletonLabel\n}), /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkFormSkeletonInput\n})));\nfunction buildDefaultValues(fieldDefinitions) {\n const values = {};\n for (const def of fieldDefinitions) {\n const props = def.fieldComponentProps;\n if (\"defaultValue\" in props) {\n values[def.fieldKey] = props.defaultValue;\n }\n }\n return values;\n}\nconst SubmitButton = /*#__PURE__*/memo(function SubmitButtonFn({\n isPending,\n isSubmitDisabled,\n errorMessage,\n buttonText,\n buttonVariant,\n onClick\n}) {\n const buttonLabel = isPending ? \"Submitting\\u2026\" : buttonText;\n const button = /*#__PURE__*/React.createElement(ActionButton, {\n type: \"button\",\n variant: buttonVariant,\n disabled: isSubmitDisabled || isPending,\n onClick: onClick\n }, buttonLabel);\n if (errorMessage == null) {\n return button;\n }\n return /*#__PURE__*/React.createElement(Tooltip.Root, {\n defaultOpen: true\n }, /*#__PURE__*/React.createElement(Tooltip.Trigger, {\n render: /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkTooltipTriggerWrapper\n })\n }, button), /*#__PURE__*/React.createElement(Tooltip.Portal, null, /*#__PURE__*/React.createElement(Tooltip.Positioner, null, /*#__PURE__*/React.createElement(Tooltip.Popup, null, /*#__PURE__*/React.createElement(Tooltip.Arrow, null), errorMessage))));\n});\n// memo omitted: errorEntries is always a new array (RHF reuses the same errors ref)\nfunction ErrorIndicator({\n errorEntries\n}) {\n if (errorEntries.length === 0) {\n return null;\n }\n const count = errorEntries.length;\n return /*#__PURE__*/React.createElement(Tooltip.Root, null, /*#__PURE__*/React.createElement(Tooltip.Trigger, null, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormErrorIndicator\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n size: 14\n }), count === 1 ? \"1 issue\" : `${count} issues`)), /*#__PURE__*/React.createElement(Tooltip.Portal, null, /*#__PURE__*/React.createElement(Tooltip.Positioner, null, /*#__PURE__*/React.createElement(Tooltip.Popup, null, /*#__PURE__*/React.createElement(Tooltip.Arrow, null), /*#__PURE__*/React.createElement(\"ul\", {\n className: styles.osdkFormErrorList\n }, errorEntries.map(entry => /*#__PURE__*/React.createElement(\"li\", {\n key: entry.label\n }, /*#__PURE__*/React.createElement(\"strong\", null, entry.label, \":\"), \" \", entry.message)))))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Coerces a raw form field value to match the expected type for the given\n * field type. Returns `undefined` when coercion fails\n * (e.g. non-numeric string for a number field).\n *\n * Complex types (object, objectSet, struct, interface) are passed through\n * unchanged since they cannot be meaningfully coerced.\n */\nexport function coerceFieldValue(parameterType, rawValue) {\n if (rawValue == null) {\n return undefined;\n }\n if (parameterType == null) {\n return rawValue;\n }\n\n // TODO: Handle complex object types later\n if (typeof parameterType === \"object\") {\n return rawValue;\n }\n switch (parameterType) {\n case \"string\":\n case \"marking\":\n case \"geohash\":\n case \"geoshape\":\n case \"objectType\":\n return typeof rawValue === \"string\" ? rawValue : String(rawValue);\n case \"integer\":\n case \"long\":\n {\n const maybeNumber = extractNumber(rawValue);\n return maybeNumber != null ? Math.trunc(maybeNumber) : undefined;\n }\n case \"double\":\n {\n return extractNumber(rawValue);\n }\n case \"boolean\":\n {\n if (typeof rawValue === \"boolean\") {\n return rawValue;\n }\n if (rawValue === \"true\") return true;\n if (rawValue === \"false\") return false;\n return undefined;\n }\n case \"datetime\":\n case \"timestamp\":\n {\n if (typeof rawValue === \"string\") {\n return Number.isNaN(Date.parse(rawValue)) ? undefined : rawValue;\n }\n if (rawValue instanceof Date) {\n return rawValue.toISOString();\n }\n return undefined;\n }\n case \"attachment\":\n case \"mediaReference\":\n return rawValue;\n default:\n return rawValue;\n }\n}\nfunction extractNumber(rawValue) {\n if (typeof rawValue === \"number\") {\n return rawValue;\n }\n if (typeof rawValue === \"string\") {\n const trimmed = rawValue.trim();\n if (trimmed === \"\") return undefined;\n const parsed = Number(trimmed);\n return Number.isNaN(parsed) ? undefined : parsed;\n }\n return undefined;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\n/**\n * Derives default field definitions from ActionMetadata.\n *\n * Each parameter type maps to a concrete RendererFieldDefinition with the\n * correct fieldComponent and default fieldComponentProps.\n */\nexport function getDefaultFieldDefinitions(metadata) {\n return Object.entries(metadata.parameters).map(([key, param]) => buildFieldDefinition(key, param));\n}\n\n/**\n * Maps a single action parameter to its default RendererFieldDefinition.\n *\n * Switches on the parameter's data type to select both the field component\n * and its required default props.\n */\nfunction buildFieldDefinition(key, param) {\n const base = {\n fieldKey: key,\n label: key,\n isRequired: !param.nullable,\n fieldType: param.type\n };\n const paramType = param.type;\n if (typeof paramType === \"object\") {\n switch (paramType.type) {\n case \"objectSet\":\n return {\n ...base,\n fieldComponent: \"OBJECT_SET\",\n fieldComponentProps: {\n value: null\n }\n };\n case \"object\":\n return {\n ...base,\n fieldComponent: \"OBJECT_SELECT\",\n fieldComponentProps: {\n // Construct a minimal ObjectTypeDefinition from the action\n // parameter metadata. At runtime useOsdkObjects only reads\n // type + apiName from the definition.\n objectType: {\n type: \"object\",\n apiName: paramType.object\n }\n }\n };\n case \"interface\":\n case \"struct\":\n return {\n ...base,\n fieldComponent: \"UNSUPPORTED\",\n fieldComponentProps: {}\n };\n }\n }\n switch (paramType) {\n case \"string\":\n return {\n ...base,\n fieldComponent: \"TEXT_INPUT\",\n fieldComponentProps: {}\n };\n case \"marking\":\n case \"geohash\":\n case \"geoshape\":\n case \"objectType\":\n case \"scenarioReference\":\n return {\n ...base,\n fieldComponent: \"UNSUPPORTED\",\n fieldComponentProps: {}\n };\n case \"boolean\":\n return {\n ...base,\n fieldComponent: \"RADIO_BUTTONS\",\n fieldComponentProps: {\n options: [{\n label: \"True\",\n value: true\n }, {\n label: \"False\",\n value: false\n }]\n }\n };\n case \"integer\":\n case \"double\":\n case \"long\":\n return {\n ...base,\n fieldComponent: \"NUMBER_INPUT\",\n fieldComponentProps: {}\n };\n case \"datetime\":\n case \"timestamp\":\n return {\n ...base,\n fieldComponent: \"DATETIME_PICKER\",\n fieldComponentProps: {}\n };\n case \"attachment\":\n case \"mediaReference\":\n return {\n ...base,\n fieldComponent: \"FILE_PICKER\",\n fieldComponentProps: {}\n };\n default:\n return assertUnreachable(paramType);\n }\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useOsdkAction, useOsdkMetadata } from \"@osdk/react\";\nimport React, { useCallback, useEffect, useMemo } from \"react\";\nimport { typedReactMemo } from \"../shared/typedMemo.js\";\nimport { BaseForm } from \"./BaseForm.js\";\nimport { coerceFieldValue } from \"./utils/coerceFieldValue.js\";\nimport { getDefaultFieldDefinitions } from \"./utils/getDefaultFieldDefinitions.js\";\nconst EMPTY_FIELD_DEFINITIONS = [];\nconst EMPTY_FORM_CONTENT = [];\nexport const ActionForm = typedReactMemo(function ActionFormFn({\n actionDefinition,\n formTitle,\n showFormTitle = false,\n formFieldDefinitions,\n formState: controlledFormState,\n onFormStateChange,\n isSubmitDisabled,\n onSubmit,\n onValidationResponse: _onValidationResponse,\n onSuccess,\n onError\n}) {\n const {\n applyAction: osdkApplyAction,\n isPending\n } = useOsdkAction(actionDefinition);\n const {\n metadata,\n loading: metadataLoading,\n error: metadataError\n } = useOsdkMetadata(actionDefinition);\n useEffect(function saveMetadataError() {\n if (metadataError != null) {\n onError?.({\n type: \"unknown\",\n error: metadataError\n });\n }\n }, [metadataError, onError]);\n const parameters = metadata?.parameters;\n const customFieldDefinitions = useMemo(() => {\n if (formFieldDefinitions == null) {\n return null;\n }\n // RendererFieldDefinition is a discriminated union keyed by fieldComponent.\n // TypeScript can't verify that the spread preserves the fieldComponent ↔\n // fieldComponentProps pairing, but FormFieldDefinition guarantees it.\n return formFieldDefinitions.map(def => {\n const {\n defaultValue,\n ...fieldDefinition\n } = def;\n return {\n ...fieldDefinition,\n fieldKey: String(def.fieldKey),\n fieldType: parameters?.[String(def.fieldKey)]?.type,\n fieldComponentProps: defaultValue === undefined ? def.fieldComponentProps : {\n ...def.fieldComponentProps,\n defaultValue\n }\n };\n });\n }, [formFieldDefinitions, parameters]);\n const rendererFieldDefinitions = useMemo(() => customFieldDefinitions ?? (metadata != null ? getDefaultFieldDefinitions(metadata) : EMPTY_FIELD_DEFINITIONS), [customFieldDefinitions, metadata]);\n const formContent = useMemo(() => rendererFieldDefinitions.length === 0 ? EMPTY_FORM_CONTENT : rendererFieldDefinitions.map(def => ({\n type: \"field\",\n definition: def\n })), [rendererFieldDefinitions]);\n const coerceFormState = useCallback(rawState => {\n const coerced = {};\n for (const [key, value] of Object.entries(rawState)) {\n coerced[key] = coerceFieldValue(parameters?.[key]?.type, value);\n }\n return coerced;\n }, [parameters]);\n const handleSubmit = useCallback(async rawFormState => {\n const formState = coerceFormState(rawFormState);\n try {\n if (onSubmit != null) {\n await onSubmit(formState, osdkApplyAction);\n } else {\n const result = await osdkApplyAction(formState);\n onSuccess?.(result);\n }\n } catch (e) {\n onError?.({\n type: \"submission\",\n error: e\n });\n }\n }, [coerceFormState, onSubmit, osdkApplyAction, onSuccess, onError]);\n const handleFieldValueChange = useCallback((fieldKey, value) => {\n onFormStateChange?.(prev => ({\n ...prev,\n [fieldKey]: value\n }));\n }, [onFormStateChange]);\n const resolvedTitle = showFormTitle ? formTitle ?? metadata?.displayName ?? actionDefinition.apiName : undefined;\n const isControlled = controlledFormState != null;\n const commonProps = {\n formTitle: resolvedTitle,\n formContent,\n onSubmit: handleSubmit,\n isSubmitDisabled,\n isPending,\n isLoading: metadataLoading,\n onFieldValueChange: handleFieldValueChange\n };\n if (!isControlled) {\n return /*#__PURE__*/React.createElement(BaseForm, commonProps);\n }\n return /*#__PURE__*/React.createElement(BaseForm, _extends({}, commonProps, {\n formState: controlledFormState\n }));\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ActionForm as _ActionForm } from \"../../action-form/ActionForm.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const ActionForm = withOsdkMetrics(_ActionForm, \"ActionForm\");\nexport { BaseForm } from \"../../action-form/BaseForm.js\";"]}
1
+ {"version":3,"sources":["../../src/shared/hooks/useIsMounted.ts","../../src/shared/hooks/useAsyncAction.ts","../../src/action-form/BaseForm.module.css","../../src/action-form/utils/extractValidationRules.ts","../../src/action-form/FormField.module.css","../../src/action-form/FormField.tsx","../../src/action-form/fields/CustomField.tsx","../../src/action-form/fields/FilePickerField.module.css","../../src/action-form/fields/FilePickerField.tsx","../../src/action-form/fields/NumberInputField.module.css","../../src/action-form/fields/NumberInputField.tsx","../../src/shared/hooks/useDebouncedValue.ts","../../src/shared/hooks/useInfiniteScroll.ts","../../src/action-form/fields/AsyncDropdownField.module.css","../../src/action-form/fields/AsyncDropdownField.tsx","../../src/action-form/fields/ObjectSelectField.tsx","../../src/base-components/icon/BlueprintIcon.tsx","../../src/action-form/fields/ObjectSetField.module.css","../../src/action-form/fields/ObjectSetField.tsx","../../src/action-form/fields/RadioButtonsField.module.css","../../src/action-form/fields/RadioButtonsField.tsx","../../src/action-form/fields/SwitchField.tsx","../../src/action-form/fields/BaseInput.module.css","../../src/action-form/fields/TextAreaField.tsx","../../src/action-form/fields/TextInputField.tsx","../../src/action-form/fields/FormFieldRenderer.tsx","../../src/action-form/fields/FieldBridge.tsx","../../src/action-form/FormHeader.module.css","../../src/action-form/FormHeader.tsx","../../src/action-form/FormSection.module.css","../../src/action-form/FormSection.tsx","../../src/action-form/BaseForm.tsx","../../src/action-form/utils/coerceFieldValue.ts","../../src/action-form/utils/getDefaultFieldDefinitions.ts","../../src/action-form/ActionForm.tsx","../../src/public/experimental/action-form.ts"],"names":["useRef","useEffect","useState","useCallback","memo","React","Popover","InfoSign","useMemo","Button","classnames","Cross","ActionButton","Input","ChevronUp","ChevronDown","useEventCallback","throttle","typedReactMemo","DropdownField","SkeletonBar","_extends","useOsdkMetadata","useObjectSet","useOsdkObjects","SVGIconContainer","Icons","IconSize","RadioGroup","useId","Radio","Switch","DateRangePicker","DatePicker","EMPTY_RANGE","useController","classNames","Collapsible","CaretDown","useForm","Tooltip","ErrorIcon","assertUnreachable","useOsdkAction","ActionForm","withOsdkMetrics"],"mappings":"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","file":"chunk-MOL6BDEN.cjs","sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useRef } from \"react\";\n\n/**\n * Returns a ref whose `.current` is `true` while the component is mounted\n * and `false` after unmount. Use to guard async state updates.\n */\nexport function useIsMounted() {\n const isMountedRef = useRef(true);\n useEffect(function trackMountedState() {\n return () => {\n isMountedRef.current = false;\n };\n }, []);\n return isMountedRef;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useState } from \"react\";\nimport { useIsMounted } from \"./useIsMounted.js\";\n/**\n * Wraps an async callback with pending and error state tracking.\n *\n * - `isPending` is true while the action is executing\n * - `error` holds the error from the last rejection (cleared on next execute or via clearError)\n * - `execute` calls the action with pending/error bookkeeping\n * - `clearError` resets the error to undefined\n */\nexport function useAsyncAction(action) {\n const [isPending, setIsPending] = useState(false);\n const [error, setError] = useState(undefined);\n const isMountedRef = useIsMounted();\n const execute = useCallback(async (...args) => {\n setError(undefined);\n setIsPending(true);\n try {\n await action(...args);\n } catch (err) {\n if (isMountedRef.current) {\n setError(err);\n }\n } finally {\n if (isMountedRef.current) {\n setIsPending(false);\n }\n }\n }, [action, isMountedRef]);\n const clearError = useCallback(() => {\n setError(undefined);\n }, []);\n return {\n isPending,\n error,\n execute,\n clearError\n };\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkForm {\n display: flex;\n flex-direction: column;\n width: 100%;\n /* Override min-height:auto so the form can shrink inside flex parents\n with constrained height (e.g. dialogs with max-height). */\n min-height: 0;\n}\n\n.osdkFormFields {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-fields-gap);\n padding-block: var(--osdk-form-content-padding-block);\n padding-inline: var(--osdk-form-content-padding-inline);\n /* When the form lives inside a height-constrained parent (dialog, panel),\n the fields area shrinks and scrolls while the footer stays pinned.\n flex-basis stays auto so the dialog sizes to content naturally;\n min-height: 0 lets it shrink below content when constrained. */\n flex-grow: 1;\n min-height: 0;\n overflow-y: auto;\n}\n\n.osdkFormFooter {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n padding-block: var(--osdk-form-content-padding-inline);\n padding-inline: var(--osdk-form-content-padding-inline);\n border-block-start: var(--osdk-surface-border-width) solid var(--osdk-form-footer-border-color);\n flex-shrink: 0;\n}\n\n.osdkFormSubmitButton {\n margin-inline-start: auto;\n}\n\n.osdkFormErrorIndicator {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 2);\n color: var(--osdk-form-footer-error-color);\n font-size: var(--osdk-form-footer-error-font-size);\n cursor: help;\n}\n\n/* Replaces Tooltip.Trigger's default <button> with a <span> to avoid\n nested buttons. inline-flex keeps a real layout box for tooltip anchoring. */\n.osdkTooltipTriggerWrapper {\n display: inline-flex;\n}\n\n/* Loading skeleton — mimics label + input per field */\n.osdkFormSkeletonField {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-field-gap);\n}\n\n.osdkFormSkeletonLabel {\n width: 30%;\n height: var(--osdk-form-label-font-size);\n}\n\n.osdkFormSkeletonInput {\n width: 100%;\n height: var(--osdk-input-min-height);\n}\n\n.osdkFormErrorList {\n list-style: none;\n margin: 0;\n padding: 0;\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Derives react-hook-form validation rules from a field definition's\n * constraint props (min, max, minLength, etc.) and the optional\n * user-provided `validate` function.\n *\n * Called at rule-building time so that `onValidationError` can inject\n * custom messages into the RHF rules object.\n */\nexport function extractValidationRules(fieldDef) {\n const rules = {};\n if (fieldDef.isRequired) {\n rules.required = getMessage(fieldDef, {\n type: \"required\"\n });\n }\n const validateFns = {};\n switch (fieldDef.fieldComponent) {\n case \"NUMBER_INPUT\":\n {\n const {\n min,\n max\n } = fieldDef.fieldComponentProps;\n if (min != null) {\n const msg = getMessage(fieldDef, {\n type: \"min\",\n min\n });\n validateFns.min = value => typeof value === \"number\" && value < min ? msg : true;\n }\n if (max != null) {\n const msg = getMessage(fieldDef, {\n type: \"max\",\n max\n });\n validateFns.max = value => typeof value === \"number\" && value > max ? msg : true;\n }\n break;\n }\n case \"TEXT_INPUT\":\n case \"TEXT_AREA\":\n {\n const {\n minLength,\n maxLength\n } = fieldDef.fieldComponentProps;\n if (minLength != null) {\n rules.minLength = {\n value: minLength,\n message: getMessage(fieldDef, {\n type: \"minLength\",\n minLength\n })\n };\n }\n if (maxLength != null) {\n rules.maxLength = {\n value: maxLength,\n message: getMessage(fieldDef, {\n type: \"maxLength\",\n maxLength\n })\n };\n }\n break;\n }\n case \"DATETIME_PICKER\":\n {\n const {\n min,\n max\n } = fieldDef.fieldComponentProps;\n if (min != null) {\n const msg = getMessage(fieldDef, {\n type: \"min\",\n min\n });\n validateFns.min = value => value instanceof Date && value.getTime() < min.getTime() ? msg : true;\n }\n if (max != null) {\n const msg = getMessage(fieldDef, {\n type: \"max\",\n max\n });\n validateFns.max = value => value instanceof Date && value.getTime() > max.getTime() ? msg : true;\n }\n break;\n }\n case \"FILE_PICKER\":\n {\n const {\n maxSize\n } = fieldDef.fieldComponentProps;\n if (maxSize != null) {\n const msg = getMessage(fieldDef, {\n type: \"maxSize\",\n maxSize\n });\n validateFns.maxSize = value => {\n if (value instanceof File) {\n return value.size > maxSize ? msg : true;\n }\n if (Array.isArray(value)) {\n const oversized = value.some(f => f instanceof File && f.size > maxSize);\n return oversized ? msg : true;\n }\n return true;\n };\n }\n break;\n }\n // DROPDOWN, RADIO_BUTTONS, CUSTOM, OBJECT_SET, UNSUPPORTED: only `required` applies\n default:\n break;\n }\n if (fieldDef.validate != null) {\n const userValidate = fieldDef.validate;\n validateFns.custom = async value => {\n const result = await userValidate(value);\n if (result == null) {\n return true;\n }\n return getMessage(fieldDef, {\n type: \"validate\",\n message: result\n });\n };\n }\n if (Object.keys(validateFns).length > 0) {\n rules.validate = validateFns;\n }\n return rules;\n}\nfunction getMessage(fieldDef, error) {\n return fieldDef.onValidationError?.(error) ?? getDefaultMessage(error);\n}\nfunction getDefaultMessage(error) {\n switch (error.type) {\n case \"required\":\n return \"This field is required\";\n case \"min\":\n return `Must be at least ${formatConstraint(error.min)}`;\n case \"max\":\n return `Must be at most ${formatConstraint(error.max)}`;\n case \"minLength\":\n return `Must be at least ${error.minLength} characters`;\n case \"maxLength\":\n return `Must be at most ${error.maxLength} characters`;\n case \"maxSize\":\n return `File must be smaller than ${formatBytes(error.maxSize)}`;\n case \"validate\":\n return error.message;\n }\n}\nfunction formatConstraint(value) {\n if (value instanceof Date) {\n return value.toLocaleDateString();\n }\n return String(value);\n}\nfunction formatBytes(bytes) {\n if (bytes < 1024) {\n return `${bytes} B`;\n }\n if (bytes < 1024 * 1024) {\n return `${(bytes / 1024).toFixed(1)} KB`;\n }\n return `${(bytes / (1024 * 1024)).toFixed(1)} MB`;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkFormField {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-field-gap);\n}\n\n.osdkFormFieldLabel {\n font-size: var(--osdk-form-label-font-size);\n font-weight: var(--osdk-form-label-font-weight);\n color: var(--osdk-form-label-color);\n}\n\n.osdkFormFieldRequired {\n color: var(--osdk-form-required-color);\n}\n\n.osdkFormFieldError {\n font-size: var(--osdk-form-error-font-size);\n line-height: var(--osdk-form-error-line-height);\n color: var(--osdk-form-error-color);\n}\n\n.osdkFormFieldErrorSlot {\n min-block-size: var(--osdk-form-error-reserved-block-size);\n}\n\n.osdkFormFieldLabelRow {\n display: flex;\n align-items: center;\n gap: var(--osdk-form-label-row-gap);\n /* Reserve the edited pill's block size so showing it does not grow the label row. */\n min-block-size: var(--osdk-form-label-row-min-block-size);\n}\n\n.osdkFormFieldEditedTag {\n display: inline-flex;\n align-items: center;\n flex-shrink: 0;\n margin-inline-start: auto;\n padding-block: var(--osdk-form-edited-tag-padding-block);\n padding-inline: var(--osdk-form-edited-tag-padding-inline);\n border-radius: var(--osdk-form-edited-tag-border-radius);\n background-color: var(--osdk-form-edited-tag-bg);\n color: var(--osdk-form-edited-tag-color);\n font-size: var(--osdk-form-edited-tag-font-size);\n font-weight: var(--osdk-form-edited-tag-font-weight);\n line-height: var(--osdk-form-edited-tag-line-height);\n}\n\n.osdkFormFieldInfoIcon {\n display: inline-flex;\n align-items: center;\n color: var(--osdk-form-info-icon-color);\n cursor: pointer;\n flex-shrink: 0;\n}\n\n.osdkFormFieldInfoPopup {\n padding: var(--osdk-form-info-popup-padding);\n background-color: var(--osdk-form-info-popup-bg);\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-form-info-popup-shadow);\n max-width: var(--osdk-form-info-popup-max-width);\n font-size: var(--osdk-form-info-popup-font-size);\n}\n\n.osdkFormFieldHelperText {\n font-size: var(--osdk-typography-size-body-small);\n color: var(--osdk-typography-color-muted);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Popover } from \"@base-ui/react/popover\";\nimport { InfoSign } from \"@blueprintjs/icons\";\nimport React, { memo } from \"react\";\nimport styles from \"./FormField.module.css\";\nexport const FormField = /*#__PURE__*/memo(function FormFieldFn({\n fieldKey,\n label,\n isRequired,\n helperText,\n helperTextPlacement = \"tooltip\",\n isEdited,\n error,\n onBlur,\n children\n}) {\n const hasHelperText = helperText != null && helperText !== \"\";\n const showTooltip = hasHelperText && helperTextPlacement === \"tooltip\";\n const showBottomText = hasHelperText && helperTextPlacement === \"bottom\";\n const showEditedTag = isEdited === true;\n const labelElement = label != null ? /*#__PURE__*/React.createElement(\"label\", {\n className: styles.osdkFormFieldLabel,\n htmlFor: fieldKey\n }, label, isRequired === true && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormFieldRequired,\n \"aria-label\": \"required\"\n }, \" \", \"*\")) : null;\n const labelRow = labelElement != null || showTooltip || showEditedTag ? /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFieldLabelRow\n }, labelElement, showTooltip && /*#__PURE__*/React.createElement(InfoTip, {\n label: label\n }, helperText), showEditedTag && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormFieldEditedTag\n }, \"Edited\")) : null;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormField,\n onBlur: onBlur\n }, labelRow, showBottomText && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFieldHelperText\n }, helperText), children, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFieldErrorSlot,\n \"data-osdk-form-field-error-slot\": \"\"\n }, error != null && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFieldError,\n role: \"alert\"\n }, error)));\n});\n// Uses Popover (not Tooltip) because helper text may contain interactive\n// content like links that need focus management and keyboard navigation.\n// See https://base-ui.com/react/components/tooltip#infotips\nfunction InfoTip({\n label,\n children\n}) {\n return /*#__PURE__*/React.createElement(Popover.Root, null, /*#__PURE__*/React.createElement(Popover.Trigger, {\n render: /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormFieldInfoIcon\n }),\n nativeButton: false,\n openOnHover: true,\n \"aria-label\": label != null ? `Info about ${label}` : \"More information\"\n }, /*#__PURE__*/React.createElement(InfoSign, {\n size: 12\n })), /*#__PURE__*/React.createElement(Popover.Portal, null, /*#__PURE__*/React.createElement(Popover.Positioner, {\n sideOffset: 4\n }, /*#__PURE__*/React.createElement(Popover.Popup, {\n className: styles.osdkFormFieldInfoPopup\n }, children))));\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\n/**\n * Renders a user-provided custom field. Delegates all rendering to the\n * `customRenderer` callback, passing through the standard form field props\n * (value, onChange, id) so the custom implementation can participate in\n * form state management.\n */\nexport const CustomField = /*#__PURE__*/memo(function CustomFieldFn({\n customRenderer: CustomRenderer,\n ...baseProps\n}) {\n return /*#__PURE__*/React.createElement(CustomRenderer, baseProps);\n});","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* Outer wrapper — looks like an input field */\n.osdkFilePickerTrigger {\n display: flex;\n align-items: center;\n width: 100%;\n height: var(--osdk-file-picker-trigger-height);\n border: var(--osdk-file-picker-trigger-border);\n border-radius: var(--osdk-file-picker-trigger-border-radius);\n box-shadow: var(--osdk-input-shadow);\n background-color: var(--osdk-file-picker-trigger-bg);\n font-family: var(--osdk-file-picker-trigger-font-family);\n font-size: var(--osdk-file-picker-trigger-font-size);\n box-sizing: border-box;\n overflow: hidden;\n transition:\n background-color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease),\n border-color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease);\n}\n\n.osdkFilePickerTrigger:has(.osdkFilePickerText:focus-visible),\n.osdkFilePickerTrigger:has(.osdkFilePickerClear:focus-visible) {\n border-color: var(--osdk-file-picker-trigger-border-color-focus);\n outline: var(--osdk-file-picker-trigger-focus-width) solid\n var(--osdk-file-picker-trigger-focus-color);\n outline-offset: var(--osdk-file-picker-trigger-focus-offset);\n}\n\n.osdkFilePickerTrigger[aria-invalid] {\n border-color: var(--osdk-file-picker-trigger-border-color-error);\n}\n\n/* display: none fully removes the input from the a11y tree, avoiding\n nested-interactive inside the role=\"button\" trigger. Programmatic\n .click() still opens the file dialog. */\n.osdkFilePickerHiddenInput {\n display: none;\n}\n\n/* File name text (left section) */\n.osdkFilePickerText {\n flex: 1;\n align-self: stretch;\n min-width: 0;\n padding: var(--osdk-file-picker-trigger-padding);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n text-align: left;\n color: var(--osdk-file-picker-trigger-color);\n cursor: pointer;\n background-color: transparent;\n border: none;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n\n &:hover {\n background-color: var(--osdk-file-picker-trigger-bg-hover);\n }\n\n &:active {\n background-color: var(--osdk-surface-background-color-default-active);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: var(--osdk-input-disabled-opacity);\n }\n\n &:focus-visible {\n outline: none;\n }\n}\n\n.osdkFilePickerPlaceholder {\n color: var(--osdk-file-picker-trigger-placeholder-color);\n}\n\n/* Clear ✕ button */\n.osdkFilePickerClear {\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n width: var(--osdk-file-picker-clear-size);\n height: var(--osdk-file-picker-clear-size);\n margin: var(--osdk-file-picker-clear-margin);\n padding: 0;\n border: none;\n background: none;\n color: var(--osdk-file-picker-clear-color);\n cursor: pointer;\n transition: color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease);\n\n &:hover {\n color: var(--osdk-file-picker-clear-color-hover);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: var(--osdk-input-disabled-opacity);\n }\n\n &:disabled:hover {\n color: var(--osdk-file-picker-clear-color);\n }\n\n &:focus-visible {\n outline: var(--osdk-file-picker-trigger-focus-width) solid\n var(--osdk-file-picker-trigger-focus-color);\n border-radius: var(--osdk-surface-border-radius);\n }\n}\n\n/* Browse button (right section) */\n.osdkFilePickerBrowse {\n --osdk-button-min-height: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n min-height: 0;\n margin-block-start: calc(var(--osdk-surface-spacing) * 0.5);\n margin-block-end: calc(var(--osdk-surface-spacing) * 0.5);\n margin-inline-start: calc(var(--osdk-surface-spacing) * 0.5);\n margin-inline-end: calc(var(--osdk-surface-spacing) * 0.5);\n font-family: var(--osdk-file-picker-trigger-font-family);\n font-size: var(--osdk-file-picker-trigger-font-size);\n\n &:focus {\n outline: none;\n }\n}\n\n.osdkFilePickerBrowse.osdkFilePickerBrowse {\n padding-block: calc(var(--osdk-surface-spacing) * 0.5);\n padding-inline: calc(var(--osdk-surface-spacing) * 3);\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Cross } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useRef } from \"react\";\nimport { ActionButton } from \"../../base-components/action-button/ActionButton.js\";\nimport styles from \"./FilePickerField.module.css\";\nexport const FilePickerField = /*#__PURE__*/memo(function FilePickerFieldFn({\n id,\n value,\n onChange,\n error,\n isMulti,\n accept,\n // maxSize is enforced by form-level validation (extractValidationRules),\n // not here. Silently dropping oversized files would leave the user with\n // no indication of why their selection disappeared.\n maxSize: _maxSize,\n text = \"No file chosen\",\n buttonText = \"Browse\",\n disabled\n}) {\n const inputRef = useRef(null);\n const fileTriggerRef = useRef(null);\n const openFileDialog = useCallback(() => {\n inputRef.current?.click();\n }, []);\n const focusFileTrigger = useCallback(() => {\n fileTriggerRef.current?.focus();\n }, []);\n const handleBrowsePointerDown = useCallback(event => {\n // Browse is a visual affordance inside the field, not a separate tab\n // stop; keep the field trigger as the focused element and focus ring.\n event.preventDefault();\n focusFileTrigger();\n }, [focusFileTrigger]);\n const handleBrowseClick = useCallback(() => {\n focusFileTrigger();\n openFileDialog();\n }, [focusFileTrigger, openFileDialog]);\n const handleInputChange = useCallback(event => {\n const files = event.target.files;\n if (files == null || files.length === 0) {\n onChange?.(null);\n return;\n }\n if (isMulti) {\n onChange?.(Array.from(files));\n } else {\n onChange?.(files[0] ?? null);\n }\n }, [onChange, isMulti]);\n const handleClear = useCallback(event => {\n event.preventDefault();\n onChange?.(null);\n if (inputRef.current != null) {\n inputRef.current.value = \"\";\n }\n }, [onChange]);\n const handleKeyDown = useCallback(event => {\n if (event.key === \"Enter\" || event.key === \" \") {\n event.preventDefault();\n openFileDialog();\n }\n }, [openFileDialog]);\n const displayText = useMemo(() => getDisplayText(value), [value]);\n const hasValue = displayText != null;\n const acceptString = useMemo(() => normalizeAccept(accept), [accept]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFilePickerTrigger,\n \"aria-invalid\": error != null || undefined\n }, /*#__PURE__*/React.createElement(\"input\", {\n ref: inputRef,\n type: \"file\",\n className: styles.osdkFilePickerHiddenInput,\n multiple: isMulti,\n accept: acceptString,\n onChange: handleInputChange,\n tabIndex: -1,\n disabled: disabled\n }), /*#__PURE__*/React.createElement(Button, {\n ref: fileTriggerRef,\n id: id,\n type: \"button\",\n className: classnames(styles.osdkFilePickerText, !hasValue && styles.osdkFilePickerPlaceholder),\n onClick: openFileDialog,\n onKeyDown: handleKeyDown,\n \"aria-label\": \"Choose file\",\n \"aria-invalid\": error != null || undefined,\n disabled: disabled\n }, displayText ?? text), hasValue && /*#__PURE__*/React.createElement(Button, {\n type: \"button\",\n className: styles.osdkFilePickerClear,\n onClick: handleClear,\n \"aria-label\": \"Clear selection\",\n disabled: disabled\n }, /*#__PURE__*/React.createElement(Cross, null)), /*#__PURE__*/React.createElement(ActionButton, {\n type: \"button\",\n tabIndex: -1,\n className: styles.osdkFilePickerBrowse,\n onPointerDown: handleBrowsePointerDown,\n onClick: handleBrowseClick,\n disabled: disabled\n }, buttonText));\n});\nfunction normalizeAccept(accept) {\n if (accept == null) {\n return undefined;\n }\n return Array.isArray(accept) ? accept.join(\",\") : accept;\n}\nfunction getDisplayText(value) {\n if (value == null) {\n return undefined;\n }\n if (Array.isArray(value)) {\n return value.map(f => f.name).join(\", \");\n }\n return value.name;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkNumberInputWrapper {\n display: flex;\n border-radius: var(--osdk-input-border-radius);\n border: var(--osdk-input-border-width) solid var(--osdk-input-border-color);\n box-shadow: var(--osdk-input-shadow);\n background-color: var(--osdk-input-bg);\n transition:\n background-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease),\n border-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease);\n\n &:hover {\n background-color: var(--osdk-input-bg-hover);\n }\n\n &:focus-within {\n outline: var(--osdk-input-focus-width) solid var(--osdk-input-focus-color);\n outline-offset: var(--osdk-input-focus-offset);\n border-color: var(--osdk-input-border-color-focus);\n }\n\n &[aria-invalid] {\n border-color: var(--osdk-input-border-color-error);\n }\n}\n\n.osdkNumberInputField {\n flex: 1;\n min-width: 0;\n min-height: var(--osdk-input-min-height);\n padding: var(--osdk-input-padding);\n border: none;\n border-radius: var(--osdk-input-border-radius) 0 0\n var(--osdk-input-border-radius);\n background: transparent;\n color: var(--osdk-input-color);\n font-family: var(--osdk-input-font-family);\n font-size: var(--osdk-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n\n &::placeholder {\n color: var(--osdk-input-placeholder-color);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: var(--osdk-disabled-opacity);\n }\n\n &:focus-visible {\n outline: none;\n }\n}\n\n.osdkNumberInputStepper {\n display: flex;\n flex-direction: column;\n border-left: var(--osdk-input-border-width) solid\n var(--osdk-input-border-color);\n}\n\n.osdkNumberInputStepButton {\n display: flex;\n align-items: center;\n justify-content: center;\n flex: 1;\n padding: 0 calc(var(--osdk-surface-spacing) * 1.5);\n border: none;\n background: transparent;\n color: var(--osdk-input-color);\n cursor: pointer;\n line-height: 0;\n\n &:hover {\n background-color: var(--osdk-input-bg-hover);\n }\n\n &:active {\n background-color: var(--osdk-input-border-color);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: var(--osdk-disabled-opacity);\n }\n\n & + & {\n border-top: var(--osdk-input-border-width) solid\n var(--osdk-input-border-color);\n }\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Input } from \"@base-ui/react/input\";\nimport { ChevronDown, ChevronUp } from \"@blueprintjs/icons\";\nimport React, { useCallback, useRef, useState } from \"react\";\nimport styles from \"./NumberInputField.module.css\";\n\n/**\n * Structural regex for valid numeric input.\n *\n * Allows intermediate typing states that will become valid numbers:\n * \"\" — user cleared the field (all groups are optional)\n * \"-\" — user started typing a negative number\n * \".\" — user started typing a decimal like \".5\"\n * \"+\" — user started typing an explicitly positive number\n * \"1.\", \"1e\", \"1e+\" — partial but structurally valid\n *\n * Rejects obviously invalid strings like \"1.2.3\" or \"+-5\".\n */\nconst VALID_NUMERIC_REGEX = /^[+-.]?(\\d+\\.?\\d*|\\d*\\.?\\d+)?([eE][+-]?\\d*)?$/;\nconst DEFAULT_STEP = 1;\nconst CHEVRON_SIZE = 12;\nexport function NumberInputField({\n id,\n value,\n onChange,\n error,\n placeholder,\n min,\n max,\n step,\n disabled\n}) {\n const [displayValue, setDisplayValue] = useState(() => formatNumberForDisplay(value));\n const prevValueRef = useRef(value);\n\n // Sync external value → internal display string\n if (prevValueRef.current !== value) {\n prevValueRef.current = value;\n const currentParsed = parseNumericValue(displayValue);\n if (value !== currentParsed) {\n setDisplayValue(formatNumberForDisplay(value));\n }\n }\n const handleValueChange = useCallback(newValue => {\n if (!isValidInput(newValue)) {\n return;\n }\n setDisplayValue(newValue);\n onChange?.(parseNumericValue(newValue));\n }, [onChange]);\n const applyStep = useCallback(direction => {\n const current = parseNumericValue(displayValue) ?? 0;\n const delta = direction * (step ?? DEFAULT_STEP);\n const next = clamp(current + delta, min, max);\n const formatted = formatNumberForDisplay(next);\n setDisplayValue(formatted);\n onChange?.(next);\n }, [displayValue, onChange, step, min, max]);\n const handleKeyDown = useCallback(e => {\n if (e.key !== \"ArrowUp\" && e.key !== \"ArrowDown\") {\n return;\n }\n e.preventDefault();\n applyStep(e.key === \"ArrowUp\" ? 1 : -1);\n }, [applyStep]);\n const handleStepUp = useCallback(() => {\n applyStep(1);\n }, [applyStep]);\n const handleStepDown = useCallback(() => {\n applyStep(-1);\n }, [applyStep]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkNumberInputWrapper,\n \"aria-invalid\": error != null || undefined\n }, /*#__PURE__*/React.createElement(Input, {\n id: id,\n className: styles.osdkNumberInputField,\n type: \"text\",\n inputMode: \"decimal\",\n value: displayValue,\n onValueChange: handleValueChange,\n onKeyDown: handleKeyDown,\n placeholder: placeholder,\n disabled: disabled\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkNumberInputStepper\n }, /*#__PURE__*/React.createElement(Button, {\n className: styles.osdkNumberInputStepButton,\n \"aria-label\": \"Increment\",\n tabIndex: -1,\n disabled: disabled,\n onClick: handleStepUp\n }, /*#__PURE__*/React.createElement(ChevronUp, {\n size: CHEVRON_SIZE\n })), /*#__PURE__*/React.createElement(Button, {\n className: styles.osdkNumberInputStepButton,\n \"aria-label\": \"Decrement\",\n tabIndex: -1,\n disabled: disabled,\n onClick: handleStepDown\n }, /*#__PURE__*/React.createElement(ChevronDown, {\n size: CHEVRON_SIZE\n }))));\n}\nfunction isValidInput(text) {\n return VALID_NUMERIC_REGEX.test(text);\n}\nfunction parseNumericValue(text) {\n if (text === \"\") {\n return null;\n }\n const parsed = Number(text);\n return Number.isNaN(parsed) ? null : parsed;\n}\nfunction formatNumberForDisplay(value) {\n return value != null ? String(value) : \"\";\n}\nfunction clamp(value, min, max) {\n if (min != null && value < min) return min;\n if (max != null && value > max) return max;\n return value;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useEffect, useState } from \"react\";\n\n/**\n * Returns a debounced version of `value` that only updates after `debounceMs`\n * of inactivity. Each change to `value` resets the timer.\n */\nexport function useDebouncedValue(value, debounceMs) {\n const [debouncedValue, setDebouncedValue] = useState(value);\n useEffect(function debounceValue() {\n const timer = setTimeout(() => {\n setDebouncedValue(value);\n }, debounceMs);\n return () => {\n clearTimeout(timer);\n };\n }, [value, debounceMs]);\n return debouncedValue;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { throttle } from \"lodash-es\";\nimport { useCallback, useEffect, useRef } from \"react\";\nimport { useEventCallback } from \"./useEventCallback.js\";\nconst THRESHOLD = 0.5;\nconst OPTIONS = {\n threshold: THRESHOLD\n};\n/**\n * This hooks handles the logic of triggering a callback when the user reaches the target element (e.g. spinner).\n * It returns a callback that must be set as the ref of the target element at the bottom of the\n * scroll container.\n */\nexport function useInfiniteScroll({\n callback,\n loadedCount\n}) {\n const observer = useRef();\n const targetRef = useRef();\n const eventCallback = useEventCallback(callback);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n const throttledCallback = useCallback(throttle(eventCallback), []);\n\n /**\n * If the observer updates the entry in a way that indicates that the target element is intersecting\n * with the scroll container, invoke the callback.\n */\n const handleObserverUpdate = useCallback(entries => {\n const ent = entries[0];\n if (ent && ent.isIntersecting) {\n throttledCallback();\n }\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []);\n\n /**\n * Retrigger visibility detection whenever the loaded count of items changes. This allows us to\n * detect loading initial pages in a tall container that do not cause the target element to\n * change visibility.\n */\n useEffect(() => {\n const {\n current: targetElement\n } = targetRef;\n if (observer.current == null || targetElement == null) {\n return;\n }\n observer.current.observe(targetElement);\n return () => {\n observer.current?.unobserve(targetElement);\n };\n }, [loadedCount]);\n const setRef = node => {\n if (node != null) {\n targetRef.current = node;\n if (observer.current == null) {\n observer.current = new IntersectionObserver(handleObserverUpdate, OPTIONS);\n }\n observer.current.observe(node);\n } else if (targetRef.current != null) {\n observer.current?.unobserve(targetRef.current);\n }\n };\n return setRef;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkAsyncDropdownError {\n color: var(--osdk-async-dropdown-error-color);\n}\n\n.osdkAsyncDropdownStatus {\n padding: var(--osdk-async-dropdown-status-padding);\n color: var(--osdk-async-dropdown-status-color);\n}\n\n.osdkAsyncDropdownSkeleton {\n width: var(--osdk-async-dropdown-skeleton-width);\n height: var(--osdk-async-dropdown-skeleton-height);\n margin: var(--osdk-async-dropdown-skeleton-margin);\n border-radius: var(--osdk-async-dropdown-skeleton-border-radius);\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { useMemo } from \"react\";\nimport { SkeletonBar } from \"../../base-components/skeleton/SkeletonBar.js\";\nimport { useInfiniteScroll } from \"../../shared/hooks/useInfiniteScroll.js\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nimport styles from \"./AsyncDropdownField.module.css\";\nimport { DropdownField } from \"./DropdownField.js\";\nexport const AsyncDropdownField = typedReactMemo(function AsyncDropdownFieldFn({\n isLoading,\n hasMore,\n isSearching,\n onFetchMore,\n fetchError,\n ...dropdownProps\n}) {\n const itemCount = dropdownProps.items.length;\n const popupStatus = useMemo(() => {\n if (fetchError != null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkAsyncDropdownError,\n role: \"alert\"\n }, fetchError.message);\n }\n if (isSearching) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkAsyncDropdownStatus\n }, \"Searching\\u2026\");\n }\n // Show \"Loading…\" during the initial fetch before any data arrives,\n // so the user doesn't see a misleading \"No results\" message.\n if (isLoading && itemCount === 0) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkAsyncDropdownStatus\n }, \"Loading\\u2026\");\n }\n // \"No results\" is handled by Combobox.Empty inside DropdownField\n return null;\n }, [fetchError, isSearching, isLoading, itemCount]);\n const infiniteScrollRef = useInfiniteScroll({\n callback: onFetchMore,\n loadedCount: itemCount\n });\n return /*#__PURE__*/React.createElement(DropdownField, _extends({}, dropdownProps, {\n isSearchable: true,\n popupStatus: popupStatus,\n trailingItem: hasMore ? /*#__PURE__*/React.createElement(InfiniteScrollSentinel, {\n key: \"sentinel\",\n infiniteScrollRef: infiniteScrollRef\n }) : null,\n disableClientSideFiltering: dropdownProps.onQueryChange != null\n }));\n});\n\n/** Skeleton placeholder that triggers the next page fetch when it scrolls into view. */\nfunction InfiniteScrollSentinel({\n infiniteScrollRef\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n ref: infiniteScrollRef,\n role: \"presentation\"\n }, /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkAsyncDropdownSkeleton\n }));\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useObjectSet, useOsdkMetadata, useOsdkObjects } from \"@osdk/react\";\nimport React, { memo, useCallback, useMemo, useState } from \"react\";\nimport { useDebouncedValue } from \"../../shared/hooks/useDebouncedValue.js\";\nimport { AsyncDropdownField } from \"./AsyncDropdownField.js\";\n\n/** Debounce search input to avoid firing a server query on every keystroke. */\nconst SEARCH_DEBOUNCE_MS = 300;\n/** Number of objects fetched per page from the OSDK. */\nconst PAGE_SIZE = 50;\n/** Stable empty array so the component doesn't re-render when data is undefined. */\nconst EMPTY_OBJECT_SELECT_ITEMS = [];\nexport const ObjectSelectField = /*#__PURE__*/memo(function ObjectSelectFieldFn(props) {\n const source = resolveObjectSelectSource(props);\n return /*#__PURE__*/React.createElement(ObjectSelectInner, _extends({}, props, {\n source: source\n }));\n});\nconst ObjectSelectInner = /*#__PURE__*/memo(function ObjectSelectInnerFn({\n source,\n value,\n onChange,\n error,\n id,\n placeholder,\n isMultiple,\n portalRef,\n portalContainer,\n disabled\n}) {\n // Tracks the user's search text. Cleared on selection so the selected\n // label (managed by base-ui) doesn't trigger a server-side search.\n const [query, setQuery] = useState(\"\");\n const debouncedQuery = useDebouncedValue(query, SEARCH_DEBOUNCE_MS);\n const handleChange = useCallback(newValue => {\n onChange?.(newValue);\n setQuery(\"\");\n }, [onChange]);\n const {\n metadata\n } = useOsdkMetadata(source.objectType);\n const titleProperty = typeof metadata?.titleProperty === \"string\" ? metadata.titleProperty : undefined;\n\n // Search on the title property (e.g. \"fullName\") so the where clause\n // matches the same text displayed to the user via obj.$title.\n // The where clause is loosely typed because we resolve the property\n // name at runtime from metadata, not from compile-time type info.\n const where = useMemo(() => {\n const trimmed = debouncedQuery.trim();\n if (trimmed === \"\" || titleProperty == null) {\n return undefined;\n }\n return {\n [titleProperty]: {\n $containsAllTermsInOrder: trimmed\n }\n };\n }, [debouncedQuery, titleProperty]);\n const objectSetResult = useObjectSet(source.objectSet, {\n where,\n pageSize: PAGE_SIZE,\n enabled: source.kind === \"objectSet\"\n });\n const objectTypeResult = useOsdkObjects(source.objectType, {\n where,\n pageSize: PAGE_SIZE,\n enabled: source.kind === \"objectType\"\n });\n const {\n data,\n isLoading,\n error: fetchError,\n fetchMore,\n hasMore\n } = source.kind === \"objectSet\" ? objectSetResult : objectTypeResult;\n const items = data ?? EMPTY_OBJECT_SELECT_ITEMS;\n const handleFetchMore = useCallback(() => {\n void fetchMore?.();\n }, [fetchMore]);\n return /*#__PURE__*/React.createElement(AsyncDropdownField, {\n id: id,\n value: value,\n onChange: handleChange,\n error: error,\n items: items,\n itemToStringLabel: itemToStringLabel,\n itemToKey: itemToKey,\n isItemEqual: isItemEqual,\n placeholder: placeholder ?? \"Search…\",\n isMultiple: isMultiple,\n portalRef: portalRef,\n portalContainer: portalContainer,\n disabled: disabled,\n onQueryChange: setQuery,\n isLoading: isLoading,\n isSearching: debouncedQuery.trim() !== \"\" && isLoading,\n hasMore: hasMore,\n onFetchMore: handleFetchMore,\n fetchError: fetchError\n });\n});\nfunction resolveObjectSelectSource(props) {\n if (\"objectSet\" in props && props.objectSet != null) {\n return {\n kind: \"objectSet\",\n objectSet: props.objectSet,\n objectType: props.objectSet.$objectSetInternals.def\n };\n }\n return {\n kind: \"objectType\",\n objectType: props.objectType\n };\n}\nfunction itemToStringLabel(obj) {\n return obj.$title ?? String(obj.$primaryKey);\n}\nfunction itemToKey(obj) {\n return String(obj.$primaryKey);\n}\nfunction isItemEqual(a, b) {\n return a.$primaryKey === b.$primaryKey;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Icons, SVGIconContainer } from \"@blueprintjs/icons\";\nimport React from \"react\";\nexport const BlueprintIcon = /*#__PURE__*/React.memo(function BlueprintIconFn({\n icon,\n size\n}) {\n const paths = useIcon(icon.name, size);\n return /*#__PURE__*/React.createElement(SVGIconContainer, {\n iconName: icon.name,\n color: icon.color\n }, paths != null ? paths.map((d, i) => /*#__PURE__*/React.createElement(\"path\", {\n key: i,\n d: d,\n fillRule: \"evenodd\"\n })) : []);\n});\n\n/**\n * Loads icon paths on demand via the public `Icons.load()` API\n * instead of the static `getIconPaths()` which bundles every icon definition.\n */\nfunction useIcon(icon, size) {\n const [iconPaths, setIconPaths] = React.useState(() => Icons.getPaths(icon, size));\n React.useEffect(function loadIconPaths() {\n let isMounted = true;\n const loadedIconPaths = Icons.getPaths(icon, size);\n if (loadedIconPaths != null) {\n setIconPaths(loadedIconPaths);\n } else {\n void Icons.load(icon, size).then(() => {\n if (isMounted) {\n setIconPaths(Icons.getPaths(icon, size));\n }\n });\n }\n return () => {\n isMounted = false;\n };\n }, [icon, size]);\n return iconPaths;\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkObjectSetField {\n display: flex;\n align-items: center;\n gap: var(--osdk-object-set-gap);\n min-height: var(--osdk-object-set-min-height);\n padding: var(--osdk-object-set-padding);\n color: var(--osdk-object-set-color);\n font-family: var(--osdk-object-set-font-family);\n font-size: var(--osdk-object-set-font-size);\n line-height: var(--osdk-object-set-line-height);\n\n &[aria-disabled=\"true\"] {\n opacity: var(--osdk-disabled-opacity);\n }\n}\n\n.osdkObjectSetFieldEmpty {\n color: var(--osdk-object-set-placeholder-color);\n}\n\n.osdkObjectSetFieldError {\n color: var(--osdk-object-set-error-color);\n}\n\n.osdkObjectSetIconSkeleton {\n width: var(--osdk-object-set-icon-skeleton-width);\n align-self: stretch;\n}\n\n.osdkObjectSetLabelSkeleton {\n width: var(--osdk-object-set-label-skeleton-width);\n align-self: stretch;\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { IconSize } from \"@blueprintjs/icons\";\nimport { useObjectSet, useOsdkMetadata } from \"@osdk/react\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport { BlueprintIcon } from \"../../base-components/icon/BlueprintIcon.js\";\nimport { SkeletonBar } from \"../../base-components/skeleton/SkeletonBar.js\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nimport styles from \"./ObjectSetField.module.css\";\nconst DEFAULT_OBJECT_ICON = {\n name: \"cube\",\n color: \"#4C90F0\"\n};\nconst ICON_SIZE = IconSize.STANDARD;\nconst DEFAULT_EMPTY_MESSAGE = \"Object set is not defined\";\nexport const ObjectSetField = typedReactMemo(function ObjectSetFieldFn({\n value,\n emptyMessage = DEFAULT_EMPTY_MESSAGE,\n disabled\n}) {\n if (value == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.osdkObjectSetField, styles.osdkObjectSetFieldEmpty),\n \"aria-disabled\": disabled === true || undefined\n }, emptyMessage);\n }\n return /*#__PURE__*/React.createElement(ObjectSetFieldContent, {\n objectSet: value,\n disabled: disabled\n });\n});\nconst ObjectSetFieldContent = /*#__PURE__*/React.memo(function ObjectSetFieldContentFn({\n objectSet,\n disabled\n}) {\n const objectTypeDef = objectSet.$objectSetInternals.def;\n const {\n metadata,\n loading: metadataLoading\n } = useOsdkMetadata(objectTypeDef);\n const {\n totalCount,\n data,\n isLoading: objectSetLoading,\n error: objectSetError\n } = useObjectSet(objectSet, {\n // Fetching a page size of one is enough to get the totalCount\n pageSize: 1\n });\n const hasMetadata = metadata != null;\n const icon = React.useMemo(() => metadata != null && \"icon\" in metadata && metadata.icon != null ? toComponentIcon(metadata.icon) : DEFAULT_OBJECT_ICON, [metadata]);\n const displayName = totalCount === \"1\" || !hasMetadata || !(\"pluralDisplayName\" in metadata) ? metadata?.displayName : metadata.pluralDisplayName;\n\n // Wait for metadata even if the count is already available, so we can\n // show the correct display name and avoid a flash of \"objects\" → \"Employees\".\n const showLoadingState = metadataLoading && !hasMetadata;\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkObjectSetField,\n \"aria-disabled\": disabled === true || undefined\n }, showLoadingState ? /*#__PURE__*/React.createElement(React.Fragment, null, OBJECT_SET_ICON_SKELETON, OBJECT_SET_LABEL_SKELETON) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(BlueprintIcon, {\n icon: icon,\n size: ICON_SIZE\n }), /*#__PURE__*/React.createElement(ObjectSetLabel, {\n displayName: displayName,\n totalCount: totalCount,\n error: objectSetError,\n isLoading: objectSetLoading\n })));\n});\nconst ObjectSetLabel = /*#__PURE__*/React.memo(function ObjectSetLabelFn({\n displayName,\n totalCount,\n isLoading,\n error\n}) {\n const hasData = totalCount != null;\n const label = displayName ?? (totalCount === \"1\" ? \"object\" : \"objects\");\n const showSkeleton = isLoading && !hasData;\n const showError = error != null && !hasData && !isLoading;\n return /*#__PURE__*/React.createElement(React.Fragment, null, showSkeleton && OBJECT_SET_LABEL_SKELETON, showError && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkObjectSetFieldError,\n role: \"alert\"\n }, `Failed to load: ${error.message}`), !showSkeleton && !showError && /*#__PURE__*/React.createElement(\"span\", null, `${formatCount(totalCount)} ${label}`));\n});\nconst OBJECT_SET_ICON_SKELETON = /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkObjectSetIconSkeleton\n});\nconst OBJECT_SET_LABEL_SKELETON = /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkObjectSetLabelSkeleton\n});\nfunction formatCount(count) {\n if (count == null) {\n return \"\\u2013\"; // '–' symbol\n }\n const num = Number(count);\n return Number.isNaN(num) ? count : num.toLocaleString();\n}\nfunction toComponentIcon(apiIcon) {\n return {\n name: apiIcon.name,\n color: apiIcon.color\n };\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkRadioGroup {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-radio-gap);\n\n &[data-orientation=\"horizontal\"] {\n flex-direction: row;\n flex-wrap: wrap;\n }\n}\n\n.osdkRadioItem {\n display: flex;\n align-items: center;\n gap: var(--osdk-radio-item-gap);\n\n &:has(.osdkRadioRoot[data-disabled]) {\n cursor: not-allowed;\n opacity: var(--osdk-disabled-opacity);\n }\n}\n\n.osdkRadioRoot {\n display: flex;\n align-items: center;\n justify-content: center;\n width: var(--osdk-radio-size);\n height: var(--osdk-radio-size);\n border-radius: 50%;\n border: var(--osdk-radio-border);\n cursor: pointer;\n flex-shrink: 0;\n\n &[data-unchecked] {\n background-color: var(--osdk-radio-bg);\n\n &:hover {\n background-color: var(--osdk-radio-bg-hover);\n }\n }\n\n &[data-checked] {\n background-color: var(--osdk-radio-bg-checked);\n\n &:hover {\n background-color: var(--osdk-radio-bg-checked-hover);\n }\n\n &:active {\n background-color: var(--osdk-radio-bg-checked-active);\n }\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n }\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: calc(-1 * var(--osdk-focus-visible-outline-offset));\n }\n}\n\n.osdkRadioIndicator {\n width: var(--osdk-radio-indicator-size);\n height: var(--osdk-radio-indicator-size);\n border-radius: 50%;\n background-color: var(--osdk-radio-indicator-color);\n\n &[data-unchecked] {\n display: none;\n }\n}\n\n.osdkRadioLabel {\n font-family: var(--osdk-typography-family-default);\n font-size: var(--osdk-typography-size-body-medium);\n line-height: var(--osdk-typography-line-height-default);\n color: var(--osdk-typography-color-default-rest);\n cursor: pointer;\n\n .osdkRadioRoot[data-disabled] + & {\n cursor: not-allowed;\n }\n}\n","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Radio } from \"@base-ui/react/radio\";\nimport { RadioGroup } from \"@base-ui/react/radio-group\";\nimport React, { memo, useCallback, useId, useMemo } from \"react\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nimport styles from \"./RadioButtonsField.module.css\";\nexport const RadioButtonsField = typedReactMemo(function RadioButtonsFieldFn({\n id,\n value,\n onChange,\n options,\n orientation,\n disabled\n}) {\n const selectedLabel = useMemo(() => value != null ? options.find(opt => opt.value === value)?.label : undefined, [options, value]);\n const handleValueChange = useCallback(nextLabel => {\n const match = options.find(opt => opt.label === nextLabel);\n onChange?.(match?.value ?? null);\n }, [options, onChange]);\n return /*#__PURE__*/React.createElement(RadioGroup, {\n id: id,\n className: styles.osdkRadioGroup,\n \"data-orientation\": orientation ?? \"vertical\",\n value: selectedLabel,\n onValueChange: handleValueChange,\n disabled: disabled\n }, options.map(option => /*#__PURE__*/React.createElement(RadioItem, {\n key: option.label,\n option: option,\n disabled: disabled\n })));\n});\nconst RadioItem = /*#__PURE__*/memo(function RadioItemFn({\n option,\n disabled\n}) {\n const labelId = useId();\n return /*#__PURE__*/React.createElement(\"label\", {\n className: styles.osdkRadioItem\n }, /*#__PURE__*/React.createElement(Radio.Root, {\n value: option.label,\n className: styles.osdkRadioRoot,\n disabled: disabled,\n \"aria-labelledby\": labelId,\n tabIndex: disabled === true ? -1 : undefined\n }, /*#__PURE__*/React.createElement(Radio.Indicator, {\n className: styles.osdkRadioIndicator\n })), /*#__PURE__*/React.createElement(\"span\", {\n id: labelId,\n className: styles.osdkRadioLabel\n }, option.label));\n});","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport { Switch } from \"../../base-components/switch/Switch.js\";\nexport const SwitchField = /*#__PURE__*/React.memo(function SwitchFieldFn({\n id,\n label,\n value,\n onChange,\n error,\n disabled\n}) {\n return /*#__PURE__*/React.createElement(Switch, {\n id: id,\n checked: value ?? false,\n onCheckedChange: onChange,\n \"aria-invalid\": error != null || undefined,\n \"aria-label\": label,\n disabled: disabled\n });\n});","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkBaseInput {\n display: block;\n width: 100%;\n min-height: var(--osdk-input-min-height);\n padding: var(--osdk-input-padding);\n border-radius: var(--osdk-input-border-radius);\n border: var(--osdk-input-border-width) solid var(--osdk-input-border-color);\n box-shadow: var(--osdk-input-shadow);\n background-color: var(--osdk-input-bg);\n color: var(--osdk-input-color);\n font-family: var(--osdk-input-font-family);\n font-size: var(--osdk-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n transition:\n background-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease),\n border-color var(--osdk-input-transition-duration)\n var(--osdk-input-transition-ease);\n\n &::placeholder {\n color: var(--osdk-input-placeholder-color);\n }\n\n &:hover {\n background-color: var(--osdk-input-bg-hover);\n }\n\n &:focus-visible {\n outline: var(--osdk-input-focus-width) solid var(--osdk-input-focus-color);\n outline-offset: var(--osdk-input-focus-offset);\n border-color: var(--osdk-input-border-color-focus);\n }\n\n &:disabled {\n cursor: not-allowed;\n opacity: var(--osdk-input-disabled-opacity);\n }\n\n &[aria-invalid] {\n border-color: var(--osdk-input-border-color-error);\n }\n}\n","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport React, { useCallback } from \"react\";\nimport styles from \"./BaseInput.module.css\";\nconst TEXTAREA_STYLE = {\n resize: \"vertical\"\n};\nexport function TextAreaField({\n id,\n value,\n onChange,\n error,\n placeholder,\n rows,\n wrap,\n minLength,\n maxLength,\n disabled\n}) {\n const renderTextarea = useCallback(props => /*#__PURE__*/React.createElement(\"textarea\", _extends({}, props, {\n rows: rows,\n wrap: wrap,\n style: TEXTAREA_STYLE\n })), [rows, wrap]);\n return /*#__PURE__*/React.createElement(Input, {\n id: id,\n className: styles.osdkBaseInput,\n value: value ?? \"\",\n onValueChange: onChange,\n placeholder: placeholder,\n minLength: minLength,\n maxLength: maxLength,\n disabled: disabled,\n render: renderTextarea,\n \"aria-invalid\": error != null || undefined\n });\n}","/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Input } from \"@base-ui/react/input\";\nimport React from \"react\";\nimport styles from \"./BaseInput.module.css\";\nexport function TextInputField({\n id,\n value,\n onChange,\n error,\n placeholder,\n minLength,\n maxLength,\n disabled\n}) {\n return /*#__PURE__*/React.createElement(Input, {\n id: id,\n className: styles.osdkBaseInput,\n type: \"text\",\n value: value ?? \"\",\n onValueChange: onChange,\n placeholder: placeholder,\n minLength: minLength,\n maxLength: maxLength,\n disabled: disabled,\n \"aria-invalid\": error != null || undefined\n });\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\nimport { DatePicker, DateRangePicker, EMPTY_RANGE } from \"../../shared/calendar/index.js\";\nimport { FormField } from \"../FormField.js\";\nimport { CustomField } from \"./CustomField.js\";\nimport { DropdownField } from \"./DropdownField.js\";\nimport { FilePickerField } from \"./FilePickerField.js\";\nimport { NumberInputField } from \"./NumberInputField.js\";\nimport { ObjectSelectField } from \"./ObjectSelectField.js\";\nimport { ObjectSetField } from \"./ObjectSetField.js\";\nimport { RadioButtonsField } from \"./RadioButtonsField.js\";\nimport { SwitchField } from \"./SwitchField.js\";\nimport { TextAreaField } from \"./TextAreaField.js\";\nimport { TextInputField } from \"./TextInputField.js\";\nconst UNSUPPORTED_FIELD_MESSAGE = \"Unsupported field type. Use a CUSTOM field instead\";\nexport const FormFieldRenderer = /*#__PURE__*/memo(function FormFieldRendererFn({\n fieldDefinition,\n value,\n onFieldValueChange,\n onBlur,\n onFieldBlur,\n isEdited,\n error,\n portalContainer\n}) {\n const {\n label,\n isRequired,\n helperText,\n helperTextPlacement\n } = fieldDefinition;\n return /*#__PURE__*/React.createElement(FormField, {\n label: label,\n isRequired: isRequired,\n fieldKey: fieldDefinition.fieldKey,\n helperText: helperText,\n helperTextPlacement: helperTextPlacement,\n isEdited: isEdited,\n error: error,\n onBlur: onBlur\n }, renderFieldComponent(fieldDefinition, value, onFieldValueChange, error, portalContainer, onFieldBlur));\n});\nfunction renderFieldComponent(fieldDefinition, value, onChange, error, portalContainer, onFieldBlur) {\n const disabled = fieldDefinition.disabled === true;\n switch (fieldDefinition.fieldComponent) {\n case \"DATE_RANGE_INPUT\":\n return /*#__PURE__*/React.createElement(DateRangePicker, _extends({\n id: fieldDefinition.fieldKey,\n value: coerceToDateRange(value),\n onChange: onChange,\n placeholderStart: fieldDefinition.placeholder\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled,\n portalContainer: resolvePortalContainer(fieldDefinition.fieldComponentProps, portalContainer)\n }));\n case \"TEXT_INPUT\":\n return /*#__PURE__*/React.createElement(TextInputField, _extends({\n id: fieldDefinition.fieldKey,\n value: value != null ? String(value) : \"\",\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled\n }));\n case \"UNSUPPORTED\":\n return /*#__PURE__*/React.createElement(TextInputField, _extends({}, fieldDefinition.fieldComponentProps, {\n id: fieldDefinition.fieldKey,\n value: UNSUPPORTED_FIELD_MESSAGE,\n error: error,\n disabled: true\n }));\n case \"TEXT_AREA\":\n return /*#__PURE__*/React.createElement(TextAreaField, _extends({\n id: fieldDefinition.fieldKey,\n value: value != null ? String(value) : \"\",\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled\n }));\n case \"DROPDOWN\":\n {\n return /*#__PURE__*/React.createElement(DropdownField, _extends({\n id: fieldDefinition.fieldKey,\n value: value,\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled,\n portalContainer: resolvePortalContainer(fieldDefinition.fieldComponentProps, portalContainer),\n onBlur: onFieldBlur\n }));\n }\n case \"DATETIME_PICKER\":\n return /*#__PURE__*/React.createElement(DatePicker, _extends({\n id: fieldDefinition.fieldKey,\n placeholder: fieldDefinition.placeholder\n // TODO: Use coerceFieldValue\n ,\n value: value instanceof Date ? value : null,\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled,\n portalContainer: resolvePortalContainer(fieldDefinition.fieldComponentProps, portalContainer)\n }));\n case \"RADIO_BUTTONS\":\n return /*#__PURE__*/React.createElement(RadioButtonsField, _extends({\n id: fieldDefinition.fieldKey,\n value: value,\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled\n }));\n case \"SWITCH\":\n return /*#__PURE__*/React.createElement(SwitchField, _extends({\n id: fieldDefinition.fieldKey,\n label: fieldDefinition.label,\n value: !!value,\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled\n }));\n case \"CUSTOM\":\n return /*#__PURE__*/React.createElement(CustomField, _extends({\n id: fieldDefinition.fieldKey,\n value: value,\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled\n }));\n case \"NUMBER_INPUT\":\n // TODO: Use coerceFieldValue\n return /*#__PURE__*/React.createElement(NumberInputField, _extends({\n id: fieldDefinition.fieldKey,\n value: typeof value === \"number\" ? value : null,\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled\n }));\n case \"FILE_PICKER\":\n return /*#__PURE__*/React.createElement(FilePickerField, _extends({\n id: fieldDefinition.fieldKey,\n value: coerceToFileValue(value),\n onChange: onChange,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled\n }));\n case \"OBJECT_SELECT\":\n return /*#__PURE__*/React.createElement(ObjectSelectField, _extends({\n id: fieldDefinition.fieldKey,\n value: narrowToOsdkObject(value),\n onChange: onChange,\n placeholder: fieldDefinition.placeholder,\n error: error\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled,\n portalContainer: resolvePortalContainer(fieldDefinition.fieldComponentProps, portalContainer)\n }));\n case \"OBJECT_SET\":\n return /*#__PURE__*/React.createElement(ObjectSetField, _extends({\n id: fieldDefinition.fieldKey\n }, fieldDefinition.fieldComponentProps, {\n disabled: disabled\n }));\n default:\n return assertUnreachableFieldComponent(fieldDefinition);\n }\n}\nfunction resolvePortalContainer(fieldComponentProps, formPortalContainer) {\n // A field-level value, including null, is an explicit override. That lets a\n // single field opt out of a form-level dialog portal when needed.\n return Object.hasOwn(fieldComponentProps, \"portalContainer\") ? fieldComponentProps.portalContainer : formPortalContainer;\n}\nfunction coerceToDateRange(value) {\n if (!Array.isArray(value) || value.length !== 2) return EMPTY_RANGE;\n const start = value[0] instanceof Date ? value[0] : null;\n const end = value[1] instanceof Date ? value[1] : null;\n if (start == null && end == null) return EMPTY_RANGE;\n return [start, end];\n}\n\n// TODO: Move and share with `coerceFieldValue`\nfunction isFileArray(value) {\n return value.every(v => v instanceof File);\n}\nfunction coerceToFileValue(value) {\n if (value instanceof File) {\n return value;\n }\n if (Array.isArray(value) && isFileArray(value)) {\n return value;\n }\n return null;\n}\n\n/** Narrows the untyped form value to an OsdkObject by checking for $primaryKey. */\nfunction narrowToOsdkObject(value) {\n if (value != null && typeof value === \"object\" && \"$primaryKey\" in value) {\n return value;\n }\n return null;\n}\nfunction assertUnreachableFieldComponent(value) {\n throw new Error(`Unhandled field component: ${String(value)}`);\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo, useCallback, useMemo, useState } from \"react\";\nimport { useController } from \"react-hook-form\";\nimport { extractValidationRules } from \"../utils/extractValidationRules.js\";\nimport { FormFieldRenderer } from \"./FormFieldRenderer.js\";\nconst SELECT_LIKE_FIELDS = new Set([\"RADIO_BUTTONS\", \"SWITCH\"]);\nexport const FieldBridge = /*#__PURE__*/memo(function FieldBridgeFn({\n fieldDef,\n control,\n onExternalChange,\n portalContainer\n}) {\n const rules = useMemo(() => extractValidationRules(fieldDef), [fieldDef]);\n const {\n field: {\n onChange,\n onBlur,\n value\n },\n fieldState: {\n error: fieldError\n }\n } = useController({\n name: fieldDef.fieldKey,\n control,\n rules\n });\n const isSelectLike = SELECT_LIKE_FIELDS.has(fieldDef.fieldComponent);\n const isDropdown = fieldDef.fieldComponent === \"DROPDOWN\";\n // RHF's touched state is blur-based and dirty state is value-comparison\n // based. The tag represents an actual user edit, so set it from the\n // field change path and keep it visible even if the value is restored.\n const [isEdited, setIsEdited] = useState(false);\n const handleChange = useCallback(newValue => {\n onChange(newValue);\n setIsEdited(true);\n onExternalChange?.(fieldDef.fieldKey, newValue);\n // Select-like fields are \"pick once\" interactions — mark as touched\n // immediately so RHF revalidates (clears errors) on selection rather\n // than waiting for focus to leave the container.\n if (isSelectLike) {\n onBlur();\n }\n }, [onChange, onBlur, onExternalChange, fieldDef.fieldKey, isSelectLike]);\n\n // Ignore blur events where focus stays within the field container\n // (e.g. moving between radio buttons in a group). Only fire RHF's\n // onBlur when focus truly leaves the field.\n const handleBlur = useCallback(e => {\n if (e.currentTarget.contains(e.relatedTarget)) {\n return;\n }\n onBlur();\n }, [onBlur]);\n return /*#__PURE__*/React.createElement(FormFieldRenderer, {\n value: value,\n fieldDefinition: fieldDef,\n onFieldValueChange: handleChange\n // Dropdown fields own their blur signal because their popover renders\n // in a portal outside the container div — the container-level blur\n // would fire prematurely when the popover opens.\n ,\n onBlur: isDropdown ? undefined : handleBlur,\n onFieldBlur: isDropdown ? onBlur : undefined,\n isEdited: isEdited,\n error: fieldError?.message,\n portalContainer: portalContainer\n });\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n.osdkFormHeader {\n margin: 0;\n padding-block: var(--osdk-form-header-block-padding);\n padding-inline: var(--osdk-form-content-padding-inline);\n border-block-end: var(--osdk-surface-border-width) solid\n var(--osdk-form-header-border-color);\n font-size: var(--osdk-form-header-font-size);\n font-weight: var(--osdk-form-header-font-weight);\n color: var(--osdk-form-header-color);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React, { memo } from \"react\";\nimport styles from \"./FormHeader.module.css\";\nexport const FormHeader = /*#__PURE__*/memo(function FormHeaderFn({\n title\n}) {\n return /*#__PURE__*/React.createElement(\"h2\", {\n className: styles.osdkFormHeader\n }, title);\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/* Box style container — matches input border tokens so collapsed\n sections blend with the rest of the form fields. */\n.osdkFormSectionBox {\n border-width: var(--osdk-form-section-border-width);\n border-style: solid;\n border-color: var(--osdk-form-section-border-color);\n border-radius: var(--osdk-form-section-border-radius);\n background-color: var(--osdk-form-section-background);\n}\n\n/* Header with title and collapse trigger */\n.osdkFormSectionHeader {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding-block: var(--osdk-form-section-header-padding-block);\n padding-inline: var(--osdk-form-section-header-padding-inline);\n gap: var(--osdk-form-section-header-gap);\n}\n\n.osdkFormSectionTitleArea {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-section-title-gap);\n flex: 1;\n min-width: 0;\n}\n\n.osdkFormSectionTitle {\n font-size: var(--osdk-form-section-title-font-size);\n font-weight: var(--osdk-form-section-title-font-weight);\n color: var(--osdk-form-section-title-color);\n}\n\n.osdkFormSectionDescription {\n font-size: var(--osdk-form-section-description-font-size);\n color: var(--osdk-form-section-description-color);\n}\n\n/* Collapse trigger button */\n.osdkFormSectionTrigger {\n display: flex;\n align-items: center;\n gap: var(--osdk-form-section-trigger-gap);\n background-color: transparent;\n border-style: none;\n cursor: pointer;\n padding: 0;\n color: var(--osdk-form-section-trigger-color);\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n}\n\n/* Chevron rotates when panel is open */\n.osdkFormSectionChevron {\n display: flex;\n align-items: center;\n justify-content: center;\n transition: transform var(--osdk-form-section-transition-duration) ease;\n}\n\n.osdkFormSectionTrigger[data-panel-open] .osdkFormSectionChevron {\n transform: rotate(180deg);\n}\n\n/* Error badge shown on collapsed sections */\n.osdkFormSectionErrorBadge {\n font-size: var(--osdk-form-section-error-font-size);\n color: var(--osdk-form-section-error-color);\n white-space: nowrap;\n}\n\n/* Content area containing fields */\n.osdkFormSectionContent {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-section-field-gap);\n padding-block: var(--osdk-form-section-content-padding-block);\n padding-inline: var(--osdk-form-section-content-padding-inline);\n}\n\n/* Divider between header and content when expanded */\n.osdkFormSectionDivider {\n border-block-start-width: var(--osdk-form-section-border-width);\n border-block-start-style: solid;\n border-block-start-color: var(--osdk-form-section-border-color);\n}\n\n/* Multi-column grid layout */\n.osdkFormSectionGrid {\n display: grid;\n grid-template-columns: repeat(2, 1fr);\n row-gap: var(--osdk-form-section-field-gap);\n column-gap: var(--osdk-form-section-grid-column-gap);\n padding-block: var(--osdk-form-section-content-padding-block);\n padding-inline: var(--osdk-form-section-content-padding-inline);\n}\n\n/* Last odd child spans both columns so it doesn't dangle alone */\n.osdkFormSectionGrid > :nth-child(odd):last-child {\n grid-column: 1 / -1;\n}\n\n/* Minimal style — no box, just a heading */\n.osdkFormSectionMinimalHeader {\n padding-block: var(--osdk-form-section-header-padding-block);\n}\n\n.osdkFormSectionMinimalTitle {\n font-size: var(--osdk-form-section-minimal-title-font-size);\n font-weight: var(--osdk-form-section-title-font-weight);\n color: var(--osdk-form-section-title-color);\n}\n\n.osdkFormSectionMinimalDescription {\n font-size: var(--osdk-form-section-description-font-size);\n color: var(--osdk-form-section-description-color);\n margin-block-start: var(--osdk-form-section-title-gap);\n}\n\n.osdkFormSectionMinimalContent {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-section-field-gap);\n}\n","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Collapsible } from \"@base-ui/react/collapsible\";\nimport { CaretDown } from \"@blueprintjs/icons\";\nimport classNames from \"classnames\";\nimport React, { memo } from \"react\";\nimport styles from \"./FormSection.module.css\";\nexport const FormSection = /*#__PURE__*/memo(function FormSectionFn({\n definition,\n errorCount,\n children\n}) {\n const {\n title,\n description,\n collapsedByDefault = false,\n showTitleBar = true,\n columnCount = 1,\n style = \"box\"\n } = definition;\n const isMinimal = style === \"minimal\";\n if (isMinimal) {\n return /*#__PURE__*/React.createElement(MinimalSection, {\n title: title,\n description: description\n }, children);\n }\n const contentClassName = classNames(columnCount === 2 ? styles.osdkFormSectionGrid : styles.osdkFormSectionContent, styles.osdkFormSectionDivider);\n if (!showTitleBar) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSectionBox\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: contentClassName\n }, children));\n }\n return /*#__PURE__*/React.createElement(Collapsible.Root, {\n // Inverted: Base UI uses \"open\" semantics, our API uses \"collapsed\" semantics\n defaultOpen: !collapsedByDefault,\n className: styles.osdkFormSectionBox\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSectionHeader\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSectionTitleArea\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormSectionTitle\n }, title), description != null && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormSectionDescription\n }, description)), /*#__PURE__*/React.createElement(Collapsible.Trigger, {\n className: styles.osdkFormSectionTrigger,\n \"aria-label\": title\n }, errorCount > 0 && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormSectionErrorBadge,\n role: \"status\"\n }, errorCount === 1 ? \"1 error\" : `${errorCount} errors`), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormSectionChevron\n }, /*#__PURE__*/React.createElement(CaretDown, {\n size: 16\n })))), /*#__PURE__*/React.createElement(Collapsible.Panel, {\n keepMounted: true\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: contentClassName\n }, children)));\n});\nconst MinimalSection = /*#__PURE__*/memo(function MinimalSectionFn({\n title,\n description,\n children\n}) {\n return /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSectionMinimalHeader\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSectionMinimalTitle\n }, title), description != null && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSectionMinimalDescription\n }, description)), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSectionMinimalContent\n }, children));\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Error as ErrorIcon } from \"@blueprintjs/icons\";\nimport classNames from \"classnames\";\nimport React, { memo, useCallback, useMemo, useRef, useState } from \"react\";\nimport { useForm } from \"react-hook-form\";\nimport { ActionButton } from \"../base-components/action-button/ActionButton.js\";\nimport { SkeletonBar } from \"../base-components/skeleton/SkeletonBar.js\";\nimport { Tooltip } from \"../base-components/tooltip/Tooltip.js\";\nimport { useAsyncAction } from \"../shared/hooks/useAsyncAction.js\";\nimport styles from \"./BaseForm.module.css\";\nimport { FieldBridge } from \"./fields/FieldBridge.js\";\nimport { FormHeader } from \"./FormHeader.js\";\nimport { FormSection } from \"./FormSection.js\";\nexport const BaseForm = /*#__PURE__*/memo(function BaseFormFn({\n formTitle,\n formContent,\n formState: controlledFormState,\n onFieldValueChange,\n onSubmit,\n isSubmitDisabled = false,\n isPending = false,\n isLoading = false,\n className,\n submitButtonText = \"Submit\",\n submitButtonVariant = \"primary\"\n}) {\n const portalContainerRef = useRef(null);\n const isControlled = controlledFormState != null;\n const allFieldDefinitions = useMemo(() => flattenFieldDefinitions(formContent), [formContent]);\n const defaultValues = useMemo(() => buildDefaultValues(allFieldDefinitions), [allFieldDefinitions]);\n const {\n control,\n trigger,\n getValues,\n formState: {\n errors\n }\n } = useForm({\n // Validate on blur first, then revalidate on change after the first\n // error. This gives the user a chance to finish typing before seeing\n // errors, while staying responsive once an error is surfaced.\n mode: \"onTouched\",\n ...(isControlled ? {\n values: controlledFormState\n } : {\n defaultValues\n })\n });\n const [hasAttemptedSubmit, setHasAttemptedSubmit] = useState(false);\n const {\n isPending: isSubmitting,\n error: submissionError,\n execute: executeSubmit,\n clearError\n } = useAsyncAction(onSubmit);\n const submissionErrorMessage = submissionError != null ? submissionError instanceof Error ? submissionError.message\n // TODO: provide better error message\n : \"Submission failed\" : undefined;\n const submitForm = useCallback(async () => {\n setHasAttemptedSubmit(true);\n const isValid = await trigger();\n if (!isValid) {\n return;\n }\n\n // In controlled mode, always submit the controlled state, not RHF's\n // internal state. Between a user keystroke and the parent re-rendering,\n // RHF's store may hold the user-typed value rather than the parent's\n // value. Using controlledFormState directly preserves the existing\n // guarantee that controlled mode submits the parent's state.\n await executeSubmit(controlledFormState ?? getValues());\n }, [trigger, executeSubmit, controlledFormState, getValues]);\n const handleFieldChange = useCallback((fieldKey, value) => {\n clearError();\n onFieldValueChange?.(fieldKey, value);\n }, [clearError, onFieldValueChange]);\n const labelByFieldKey = useMemo(() => new Map(allFieldDefinitions.map(d => [d.fieldKey, d.label])), [allFieldDefinitions]);\n\n // RHF reuses the same errors object reference across renders so we cannot memoize errorEntries\n const errorEntries = Object.entries(errors).map(([key, entry]) => ({\n label: labelByFieldKey.get(key) ?? key,\n message: entry?.message ?? \"Invalid\"\n }));\n const areErrorsPresent = errorEntries.length > 0;\n const buttonErrorMessage = areErrorsPresent ? \"Some fields are invalid\" : submissionErrorMessage;\n const isFormPending = isPending || isSubmitting;\n const isSubmitButtonDisabled = isSubmitDisabled || hasAttemptedSubmit && areErrorsPresent;\n return /*#__PURE__*/React.createElement(\"form\", {\n ref: portalContainerRef,\n className: classNames(styles.osdkForm, className)\n // Workshop widgets can run in iframes without `allow-forms`, where\n // native form submission is blocked. Keep the form landmark, but do not\n // wire any form-level submit handlers; the submit button invokes our\n // JavaScript submit path directly.\n }, formTitle != null && /*#__PURE__*/React.createElement(FormHeader, {\n title: formTitle\n }), isLoading && allFieldDefinitions.length === 0 && /*#__PURE__*/React.createElement(\"div\", {\n role: \"status\",\n \"aria-label\": \"Loading form fields\",\n className: styles.osdkFormFields\n }, FORM_SKELETON), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFields\n }, formContent.map(item => {\n if (item.type === \"field\") {\n return /*#__PURE__*/React.createElement(FieldBridge, {\n key: item.definition.fieldKey,\n fieldDef: item.definition,\n control: control,\n onExternalChange: handleFieldChange,\n portalContainer: portalContainerRef\n });\n }\n const sectionErrorCount = item.definition.fields.reduce((count, field) => count + (errors[field.fieldKey] != null ? 1 : 0), 0);\n return /*#__PURE__*/React.createElement(FormSection, {\n key: item.key,\n definition: item.definition,\n errorCount: sectionErrorCount\n }, item.definition.fields.map(fieldDef => /*#__PURE__*/React.createElement(FieldBridge, {\n key: fieldDef.fieldKey,\n fieldDef: fieldDef,\n control: control,\n onExternalChange: handleFieldChange,\n portalContainer: portalContainerRef\n })));\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFooter\n }, /*#__PURE__*/React.createElement(ErrorIndicator, {\n errorEntries: errorEntries\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormSubmitButton\n }, /*#__PURE__*/React.createElement(SubmitButton, {\n isPending: isFormPending,\n isSubmitDisabled: isSubmitButtonDisabled,\n errorMessage: buttonErrorMessage,\n buttonText: submitButtonText,\n buttonVariant: submitButtonVariant,\n onClick: submitForm\n }))));\n});\n\n/**\n * Extracts all RendererFieldDefinitions from formContent, flattening\n * section fields into a single array. RHF sees a flat field namespace\n * regardless of visual grouping, so this is used to build default values\n * and the field-key-to-label map for error display.\n */\nfunction flattenFieldDefinitions(formContent) {\n const result = [];\n for (const item of formContent) {\n if (item.type === \"field\") {\n result.push(item.definition);\n } else {\n for (const fieldDef of item.definition.fields) {\n result.push(fieldDef);\n }\n }\n }\n return result;\n}\nconst SKELETON_FIELD_COUNT = 3;\n\n// Mimics the label + input layout of real form fields.\nconst FORM_SKELETON = Array.from({\n length: SKELETON_FIELD_COUNT\n}, (_, i) => /*#__PURE__*/React.createElement(\"div\", {\n key: i,\n className: styles.osdkFormSkeletonField\n}, /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkFormSkeletonLabel\n}), /*#__PURE__*/React.createElement(SkeletonBar, {\n className: styles.osdkFormSkeletonInput\n})));\nfunction buildDefaultValues(fieldDefinitions) {\n const values = {};\n for (const def of fieldDefinitions) {\n const props = def.fieldComponentProps;\n if (\"defaultValue\" in props) {\n values[def.fieldKey] = props.defaultValue;\n }\n }\n return values;\n}\nconst SubmitButton = /*#__PURE__*/memo(function SubmitButtonFn({\n isPending,\n isSubmitDisabled,\n errorMessage,\n buttonText,\n buttonVariant,\n onClick\n}) {\n const buttonLabel = isPending ? \"Submitting\\u2026\" : buttonText;\n const button = /*#__PURE__*/React.createElement(ActionButton, {\n type: \"button\",\n variant: buttonVariant,\n disabled: isSubmitDisabled || isPending,\n onClick: onClick\n }, buttonLabel);\n if (errorMessage == null) {\n return button;\n }\n return /*#__PURE__*/React.createElement(Tooltip.Root, {\n defaultOpen: true\n }, /*#__PURE__*/React.createElement(Tooltip.Trigger, {\n render: /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkTooltipTriggerWrapper\n })\n }, button), /*#__PURE__*/React.createElement(Tooltip.Portal, null, /*#__PURE__*/React.createElement(Tooltip.Positioner, null, /*#__PURE__*/React.createElement(Tooltip.Popup, null, /*#__PURE__*/React.createElement(Tooltip.Arrow, null), errorMessage))));\n});\n// memo omitted: errorEntries is always a new array (RHF reuses the same errors ref)\nfunction ErrorIndicator({\n errorEntries\n}) {\n if (errorEntries.length === 0) {\n return null;\n }\n const count = errorEntries.length;\n return /*#__PURE__*/React.createElement(Tooltip.Root, null, /*#__PURE__*/React.createElement(Tooltip.Trigger, null, /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFormErrorIndicator\n }, /*#__PURE__*/React.createElement(ErrorIcon, {\n size: 14\n }), count === 1 ? \"1 issue\" : `${count} issues`)), /*#__PURE__*/React.createElement(Tooltip.Portal, null, /*#__PURE__*/React.createElement(Tooltip.Positioner, null, /*#__PURE__*/React.createElement(Tooltip.Popup, null, /*#__PURE__*/React.createElement(Tooltip.Arrow, null), /*#__PURE__*/React.createElement(\"ul\", {\n className: styles.osdkFormErrorList\n }, errorEntries.map(entry => /*#__PURE__*/React.createElement(\"li\", {\n key: entry.label\n }, /*#__PURE__*/React.createElement(\"strong\", null, entry.label, \":\"), \" \", entry.message)))))));\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Coerces a raw form field value to match the expected type for the given\n * field type. Returns `undefined` when coercion fails\n * (e.g. non-numeric string for a number field).\n *\n * Complex types (object, objectSet, struct, interface) are passed through\n * unchanged since they cannot be meaningfully coerced.\n */\nexport function coerceFieldValue(parameterType, rawValue) {\n if (rawValue == null) {\n return undefined;\n }\n if (parameterType == null) {\n return rawValue;\n }\n\n // TODO: Handle complex object types later\n if (typeof parameterType === \"object\") {\n return rawValue;\n }\n switch (parameterType) {\n case \"string\":\n case \"marking\":\n case \"geohash\":\n case \"geoshape\":\n case \"objectType\":\n return typeof rawValue === \"string\" ? rawValue : String(rawValue);\n case \"integer\":\n case \"long\":\n {\n const maybeNumber = extractNumber(rawValue);\n return maybeNumber != null ? Math.trunc(maybeNumber) : undefined;\n }\n case \"double\":\n {\n return extractNumber(rawValue);\n }\n case \"boolean\":\n {\n if (typeof rawValue === \"boolean\") {\n return rawValue;\n }\n if (rawValue === \"true\") return true;\n if (rawValue === \"false\") return false;\n return undefined;\n }\n case \"datetime\":\n case \"timestamp\":\n {\n if (typeof rawValue === \"string\") {\n return Number.isNaN(Date.parse(rawValue)) ? undefined : rawValue;\n }\n if (rawValue instanceof Date) {\n return rawValue.toISOString();\n }\n return undefined;\n }\n case \"attachment\":\n case \"mediaReference\":\n return rawValue;\n default:\n return rawValue;\n }\n}\nfunction extractNumber(rawValue) {\n if (typeof rawValue === \"number\") {\n return rawValue;\n }\n if (typeof rawValue === \"string\") {\n const trimmed = rawValue.trim();\n if (trimmed === \"\") return undefined;\n const parsed = Number(trimmed);\n return Number.isNaN(parsed) ? undefined : parsed;\n }\n return undefined;\n}","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assertUnreachable } from \"../../shared/assertUnreachable.js\";\n/**\n * Derives default field definitions from ActionMetadata.\n *\n * Each parameter type maps to a concrete RendererFieldDefinition with the\n * correct fieldComponent and default fieldComponentProps.\n */\nexport function getDefaultFieldDefinitions(metadata) {\n return Object.entries(metadata.parameters).map(([key, param]) => buildFieldDefinition(key, param));\n}\n\n/**\n * Maps a single action parameter to its default RendererFieldDefinition.\n *\n * Switches on the parameter's data type to select both the field component\n * and its required default props.\n */\nfunction buildFieldDefinition(key, param) {\n const base = {\n fieldKey: key,\n label: key,\n isRequired: !param.nullable,\n fieldType: param.type\n };\n const paramType = param.type;\n if (typeof paramType === \"object\") {\n switch (paramType.type) {\n case \"objectSet\":\n return {\n ...base,\n fieldComponent: \"OBJECT_SET\",\n fieldComponentProps: {\n value: null\n }\n };\n case \"object\":\n return {\n ...base,\n fieldComponent: \"OBJECT_SELECT\",\n fieldComponentProps: {\n // Construct a minimal ObjectTypeDefinition from the action\n // parameter metadata. At runtime useOsdkObjects only reads\n // type + apiName from the definition.\n objectType: {\n type: \"object\",\n apiName: paramType.object\n }\n }\n };\n case \"interface\":\n case \"struct\":\n return {\n ...base,\n fieldComponent: \"UNSUPPORTED\",\n fieldComponentProps: {}\n };\n }\n }\n switch (paramType) {\n case \"string\":\n return {\n ...base,\n fieldComponent: \"TEXT_INPUT\",\n fieldComponentProps: {}\n };\n case \"marking\":\n case \"geohash\":\n case \"geoshape\":\n case \"objectType\":\n case \"scenarioReference\":\n return {\n ...base,\n fieldComponent: \"UNSUPPORTED\",\n fieldComponentProps: {}\n };\n case \"boolean\":\n return {\n ...base,\n fieldComponent: \"RADIO_BUTTONS\",\n fieldComponentProps: {\n options: [{\n label: \"True\",\n value: true\n }, {\n label: \"False\",\n value: false\n }]\n }\n };\n case \"integer\":\n case \"double\":\n case \"long\":\n return {\n ...base,\n fieldComponent: \"NUMBER_INPUT\",\n fieldComponentProps: {}\n };\n case \"datetime\":\n case \"timestamp\":\n return {\n ...base,\n fieldComponent: \"DATETIME_PICKER\",\n fieldComponentProps: {}\n };\n case \"attachment\":\n case \"mediaReference\":\n return {\n ...base,\n fieldComponent: \"FILE_PICKER\",\n fieldComponentProps: {}\n };\n default:\n return assertUnreachable(paramType);\n }\n}","function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\n/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useOsdkAction, useOsdkMetadata } from \"@osdk/react\";\nimport React, { useCallback, useEffect, useMemo } from \"react\";\nimport { typedReactMemo } from \"../shared/typedMemo.js\";\nimport { BaseForm } from \"./BaseForm.js\";\nimport { coerceFieldValue } from \"./utils/coerceFieldValue.js\";\nimport { getDefaultFieldDefinitions } from \"./utils/getDefaultFieldDefinitions.js\";\nconst EMPTY_FIELD_DEFINITIONS = [];\nconst EMPTY_FORM_CONTENT = [];\nexport const ActionForm = typedReactMemo(function ActionFormFn({\n actionDefinition,\n formTitle,\n showFormTitle = false,\n formFieldDefinitions,\n formState: controlledFormState,\n onFormStateChange,\n isSubmitDisabled,\n onSubmit,\n onValidationResponse: _onValidationResponse,\n onSuccess,\n onError\n}) {\n const {\n applyAction: osdkApplyAction,\n isPending\n } = useOsdkAction(actionDefinition);\n const {\n metadata,\n loading: metadataLoading,\n error: metadataError\n } = useOsdkMetadata(actionDefinition);\n useEffect(function saveMetadataError() {\n if (metadataError != null) {\n onError?.({\n type: \"unknown\",\n error: metadataError\n });\n }\n }, [metadataError, onError]);\n const parameters = metadata?.parameters;\n const customFieldDefinitions = useMemo(() => {\n if (formFieldDefinitions == null) {\n return null;\n }\n // RendererFieldDefinition is a discriminated union keyed by fieldComponent.\n // TypeScript can't verify that the spread preserves the fieldComponent ↔\n // fieldComponentProps pairing, but FormFieldDefinition guarantees it.\n return formFieldDefinitions.map(def => {\n const {\n defaultValue,\n ...fieldDefinition\n } = def;\n return {\n ...fieldDefinition,\n fieldKey: String(def.fieldKey),\n fieldType: parameters?.[String(def.fieldKey)]?.type,\n fieldComponentProps: defaultValue === undefined ? def.fieldComponentProps : {\n ...def.fieldComponentProps,\n defaultValue\n }\n };\n });\n }, [formFieldDefinitions, parameters]);\n const rendererFieldDefinitions = useMemo(() => customFieldDefinitions ?? (metadata != null ? getDefaultFieldDefinitions(metadata) : EMPTY_FIELD_DEFINITIONS), [customFieldDefinitions, metadata]);\n const formContent = useMemo(() => rendererFieldDefinitions.length === 0 ? EMPTY_FORM_CONTENT : rendererFieldDefinitions.map(def => ({\n type: \"field\",\n definition: def\n })), [rendererFieldDefinitions]);\n const coerceFormState = useCallback(rawState => {\n const coerced = {};\n for (const [key, value] of Object.entries(rawState)) {\n coerced[key] = coerceFieldValue(parameters?.[key]?.type, value);\n }\n return coerced;\n }, [parameters]);\n const handleSubmit = useCallback(async rawFormState => {\n const formState = coerceFormState(rawFormState);\n try {\n if (onSubmit != null) {\n await onSubmit(formState, osdkApplyAction);\n } else {\n const result = await osdkApplyAction(formState);\n onSuccess?.(result);\n }\n } catch (e) {\n onError?.({\n type: \"submission\",\n error: e\n });\n }\n }, [coerceFormState, onSubmit, osdkApplyAction, onSuccess, onError]);\n const handleFieldValueChange = useCallback((fieldKey, value) => {\n onFormStateChange?.(prev => ({\n ...prev,\n [fieldKey]: value\n }));\n }, [onFormStateChange]);\n const resolvedTitle = showFormTitle ? formTitle ?? metadata?.displayName ?? actionDefinition.apiName : undefined;\n const isControlled = controlledFormState != null;\n const commonProps = {\n formTitle: resolvedTitle,\n formContent,\n onSubmit: handleSubmit,\n isSubmitDisabled,\n isPending,\n isLoading: metadataLoading,\n onFieldValueChange: handleFieldValueChange\n };\n if (!isControlled) {\n return /*#__PURE__*/React.createElement(BaseForm, commonProps);\n }\n return /*#__PURE__*/React.createElement(BaseForm, _extends({}, commonProps, {\n formState: controlledFormState\n }));\n});","/*\n * Copyright 2025 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { ActionForm as _ActionForm } from \"../../action-form/ActionForm.js\";\nimport { withOsdkMetrics } from \"../../util/withOsdkMetrics.js\";\nexport const ActionForm = withOsdkMetrics(_ActionForm, \"ActionForm\");\nexport { BaseForm } from \"../../action-form/BaseForm.js\";"]}