@osdk/react-components 0.9.0 → 0.10.0-main-b355bc3b41a4d89ec093054dc8d2845c772ef1e2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/README.md +23 -0
- package/build/browser/action-form/FormFieldApi.js +8 -0
- package/build/browser/action-form/FormFieldApi.js.map +1 -1
- package/build/browser/action-form/fields/AsyncDropdownField.js +81 -0
- package/build/browser/action-form/fields/AsyncDropdownField.js.map +1 -0
- package/build/browser/action-form/fields/AsyncDropdownField.module.css +31 -0
- package/build/browser/action-form/fields/AsyncDropdownField.module.css.js +8 -0
- package/build/browser/action-form/fields/DropdownField.js +29 -14
- package/build/browser/action-form/fields/DropdownField.js.map +1 -1
- package/build/browser/action-form/fields/FormFieldRenderer.js +17 -0
- package/build/browser/action-form/fields/FormFieldRenderer.js.map +1 -1
- package/build/browser/action-form/fields/ObjectSelectField.js +109 -0
- package/build/browser/action-form/fields/ObjectSelectField.js.map +1 -0
- package/build/browser/action-form/utils/getDefaultFieldDefinitions.js +14 -5
- package/build/browser/action-form/utils/getDefaultFieldDefinitions.js.map +1 -1
- package/build/browser/base-components/combobox/Combobox.module.css +23 -2
- package/build/browser/base-components/combobox/Combobox.module.css.js +3 -3
- package/build/browser/filter-list/base/inputs/TextTagsInput.js.map +1 -1
- package/build/browser/shared/hooks/useDebouncedValue.js +35 -0
- package/build/browser/shared/hooks/useDebouncedValue.js.map +1 -0
- package/build/browser/shared/hooks/useEventCallback.js +44 -0
- package/build/browser/shared/hooks/useEventCallback.js.map +1 -0
- package/build/browser/shared/hooks/useInfiniteScroll.js +81 -0
- package/build/browser/shared/hooks/useInfiniteScroll.js.map +1 -0
- package/build/browser/styles.css +73 -2
- package/build/browser/tokens/component-tokens/async-dropdown.css +16 -0
- package/build/browser/tokens.css +1 -0
- package/build/browser/util/UserAgent.js +1 -1
- package/build/browser/util/UserAgent.js.map +1 -1
- package/build/cjs/{chunk-EEES66LS.cjs → chunk-5DVHLBWS.cjs} +3 -3
- package/build/cjs/chunk-5DVHLBWS.cjs.map +1 -0
- package/build/cjs/{chunk-OXP3XQE4.cjs → chunk-ALZS624H.cjs} +47 -47
- package/build/cjs/{chunk-OXP3XQE4.cjs.map → chunk-ALZS624H.cjs.map} +1 -1
- package/build/cjs/{chunk-UEY63J2G.cjs → chunk-FURJRQWI.cjs} +9 -9
- package/build/cjs/{chunk-UEY63J2G.cjs.map → chunk-FURJRQWI.cjs.map} +1 -1
- package/build/cjs/{chunk-RY2GVYT2.cjs → chunk-MVNWOKH2.cjs} +49 -36
- package/build/cjs/chunk-MVNWOKH2.cjs.map +1 -0
- package/build/cjs/{chunk-O5ZAMFDU.cjs → chunk-QWFJF7IM.cjs} +468 -207
- package/build/cjs/chunk-QWFJF7IM.cjs.map +1 -0
- package/build/cjs/{chunk-2FPKTOPE.cjs → chunk-XBXC6VAS.cjs} +2 -2
- package/build/cjs/{chunk-2FPKTOPE.cjs.map → chunk-XBXC6VAS.cjs.map} +1 -1
- package/build/cjs/{chunk-SHTQGKS5.cjs → chunk-Z3CXMFCZ.cjs} +4 -4
- package/build/cjs/{chunk-SHTQGKS5.cjs.map → chunk-Z3CXMFCZ.cjs.map} +1 -1
- package/build/cjs/public/experimental/action-form.cjs +6 -6
- package/build/cjs/public/experimental/action-form.css +24 -1
- package/build/cjs/public/experimental/action-form.css.map +1 -1
- package/build/cjs/public/experimental/action-form.d.cts +48 -3
- package/build/cjs/public/experimental/filter-list.cjs +7 -7
- package/build/cjs/public/experimental/filter-list.css +9 -1
- package/build/cjs/public/experimental/filter-list.css.map +1 -1
- package/build/cjs/public/experimental/object-table.cjs +10 -10
- package/build/cjs/public/experimental/object-table.css +9 -1
- package/build/cjs/public/experimental/object-table.css.map +1 -1
- package/build/cjs/public/experimental/pdf-viewer.cjs +24 -24
- package/build/cjs/public/experimental.cjs +41 -41
- package/build/cjs/public/experimental.css +24 -1
- package/build/cjs/public/experimental.css.map +1 -1
- package/build/esm/action-form/FormFieldApi.js +8 -0
- package/build/esm/action-form/FormFieldApi.js.map +1 -1
- package/build/esm/action-form/fields/AsyncDropdownField.js +81 -0
- package/build/esm/action-form/fields/AsyncDropdownField.js.map +1 -0
- package/build/esm/action-form/fields/AsyncDropdownField.module.css +31 -0
- package/build/esm/action-form/fields/DropdownField.js +29 -14
- package/build/esm/action-form/fields/DropdownField.js.map +1 -1
- package/build/esm/action-form/fields/FormFieldRenderer.js +17 -0
- package/build/esm/action-form/fields/FormFieldRenderer.js.map +1 -1
- package/build/esm/action-form/fields/ObjectSelectField.js +109 -0
- package/build/esm/action-form/fields/ObjectSelectField.js.map +1 -0
- package/build/esm/action-form/utils/getDefaultFieldDefinitions.js +14 -5
- package/build/esm/action-form/utils/getDefaultFieldDefinitions.js.map +1 -1
- package/build/esm/base-components/combobox/Combobox.module.css +23 -2
- package/build/esm/filter-list/base/inputs/TextTagsInput.js.map +1 -1
- package/build/esm/shared/hooks/useDebouncedValue.js +35 -0
- package/build/esm/shared/hooks/useDebouncedValue.js.map +1 -0
- package/build/esm/shared/hooks/useEventCallback.js +44 -0
- package/build/esm/shared/hooks/useEventCallback.js.map +1 -0
- package/build/esm/shared/hooks/useInfiniteScroll.js +81 -0
- package/build/esm/shared/hooks/useInfiniteScroll.js.map +1 -0
- package/build/esm/tokens/component-tokens/async-dropdown.css +16 -0
- package/build/esm/tokens.css +1 -0
- package/build/esm/util/UserAgent.js +1 -1
- package/build/esm/util/UserAgent.js.map +1 -1
- package/build/types/action-form/FormFieldApi.d.ts +48 -3
- package/build/types/action-form/FormFieldApi.d.ts.map +1 -1
- package/build/types/action-form/fields/AsyncDropdownField.d.ts +25 -0
- package/build/types/action-form/fields/AsyncDropdownField.d.ts.map +1 -0
- package/build/types/action-form/fields/DropdownField.d.ts +2 -2
- package/build/types/action-form/fields/DropdownField.d.ts.map +1 -1
- package/build/types/action-form/fields/FormFieldRenderer.d.ts.map +1 -1
- package/build/types/action-form/fields/ObjectSelectField.d.ts +3 -0
- package/build/types/action-form/fields/ObjectSelectField.d.ts.map +1 -0
- package/build/types/shared/hooks/useDebouncedValue.d.ts +5 -0
- package/build/types/shared/hooks/useDebouncedValue.d.ts.map +1 -0
- package/build/types/shared/hooks/useEventCallback.d.ts +13 -0
- package/build/types/shared/hooks/useEventCallback.d.ts.map +1 -0
- package/build/types/shared/hooks/useInfiniteScroll.d.ts +19 -0
- package/build/types/shared/hooks/useInfiniteScroll.d.ts.map +1 -0
- package/package.json +9 -9
- package/build/cjs/chunk-EEES66LS.cjs.map +0 -1
- package/build/cjs/chunk-O5ZAMFDU.cjs.map +0 -1
- package/build/cjs/chunk-RY2GVYT2.cjs.map +0 -1
|
@@ -1 +0,0 @@
|
|
|
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/FormFieldApi.ts","../../src/action-form/fields/CustomField.tsx","../../src/action-form/fields/DateRangeInputField.module.css","../../src/action-form/fields/LazyDateRangeCalendar.tsx","../../src/action-form/fields/DateRangeInputField.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/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/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/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","Suspense","DatePickerCommon_default","stopPropagation","DateRangeInputField","useId","formatDatetimeForInput","formatDateForInput","formatDateForDisplay","parseDatetimeFromInput","parseDateFromInput","useDateEditState","parseTimeString","TimePicker","getTimeValue","Popover","classnames","Input","useMemo","Button","Cross","ChevronUp","ChevronDown","SVGIconContainer","Icons","IconSize","typedReactMemo","useOsdkMetadata","useObjectSet","SkeletonBar","RadioGroup","Radio","_extends","DropdownField","DatetimePickerField","useController","useForm","classNames","ActionButton","Tooltip","ErrorIcon","assertUnreachable","useOsdkAction","ActionForm","withOsdkMetrics"],"mappings":"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","file":"chunk-O5ZAMFDU.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}\n\n.osdkFormFields {\n display: flex;\n flex-direction: column;\n gap: var(--osdk-form-field-gap);\n padding: var(--osdk-form-content-padding);\n}\n\n.osdkFormFooter {\n display: flex;\n flex-direction: row;\n justify-content: space-between;\n align-items: center;\n border-top: var(--osdk-surface-border-width) solid\n var(--osdk-form-footer-border-color);\n padding-block: var(--osdk-form-content-padding);\n padding-inline: var(--osdk-form-content-padding);\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-label-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: 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-label-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 color: var(--osdk-form-error-color);\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 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 error,\n onBlur,\n children\n}) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormField,\n onBlur: onBlur\n }, 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 }, \" \", \"*\")), children, error != null && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFieldError,\n role: \"alert\"\n }, error), helperText != null && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkFormFieldHelperText\n }, helperText));\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 * A form field definition specifies configuration for a single field\n */\n\n/**\n * A discriminated union describing which validation rule failed and the\n * constraint data the user needs to build a meaningful error message.\n */\n\n/**\n * Maps field types to their corresponding props\n */\n\n/**\n * Datetime picker field props.\n *\n * When `formatDate` is omitted, ISO-like format is used (YYYY-MM-DD / YYYY-MM-DD HH:mm).\n */\n\n/**\n * A date range represented as a start/end tuple.\n * Either element may be `null` when the range is partially selected.\n */\n\n/** Default empty range — both bounds are null. */\nexport const EMPTY_RANGE = [null, null];\n\n/**\n * Date range input field props.\n *\n * Renders two text inputs (start / end) with a shared calendar popover\n * that supports range selection.\n */\n\n/**\n * Dropdown field props with selectable items\n */\n\n/**\n * Text area field props\n */\n\n/**\n * Number input field props\n */\n\n/**\n * Radio buttons field props\n */\n\n/**\n * Option interface for radio button options\n */\n\n/**\n * Object set field displays the summary of the count of the given object set\n */\n\n/**\n * Custom field props for user-defined renderers\n */\n\n/**\n * Extracts parameters from an ActionDefinition\n */\n\n/**\n * Extracts the value type for a specific parameter\n *\n * TODO: Re-use `BaseType`\n */\n\n/**\n * Extracts the parameter type descriptor for a specific action parameter.\n */\n\n/**\n * Available form field component types\n */\n\n/**\n * Describes the data type of a form field, independent of OSDK.\n * Mirrors ActionMetadata.DataType to keep the rendering layer OSDK-agnostic.\n */\n\n/**\n * Props managed by form state infrastructure (FieldBridge / RHF).\n * Fields with onChange participate in form state → value and onChange are managed\n * externally. Read-only fields (no onChange, e.g. ObjectSetField) keep value in\n * fieldComponentProps so it bypasses form state cloning.\n */\n\n/**\n * An OSDK-agnostic field definition used by BaseForm and FormFieldRenderer.\n * Contains only the information needed to render a single field — no generics,\n * no compile-time parameter constraints.\n *\n * Implemented as a distributed mapped type: switching on `fieldComponent`\n * narrows `fieldComponentProps` to the correct props type automatically.\n */\n\n/**\n * Gets valid form field types for a given property type\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});","/* DateRangeInputField — two separate bordered inputs + shared popover */\n\n/* Outer container that holds both inputs side by side.\n Acts as Popover.Trigger — suppress the focus ring when\n focus returns here after the popover closes. */\n.osdkDateRangeContainer {\n display: flex;\n align-items: center;\n gap: calc(var(--osdk-surface-spacing) * 2);\n outline: none;\n}\n\n/* Each input wrapper gets flex: 1 to split equally */\n.osdkDateRangeInputWrapper {\n flex: 1;\n min-width: 0;\n}\n\n/* Two TimePickers side-by-side, each centered under its calendar month.\n Negative horizontal margin counters the popover padding so the border-top\n spans the full width of the popover. */\n.osdkDateRangeTimeRow {\n display: flex;\n gap: var(--osdk-time-picker-gap);\n padding-top: var(--osdk-time-picker-padding-top);\n padding-left: var(--osdk-datetime-popover-padding);\n padding-right: var(--osdk-datetime-popover-padding);\n margin-top: var(--osdk-time-picker-margin-top);\n margin-left: calc(var(--osdk-datetime-popover-padding) * -1);\n margin-right: calc(var(--osdk-datetime-popover-padding) * -1);\n border-top: var(--osdk-time-picker-border-top);\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, { Suspense } from \"react\";\nimport styles from \"./DatePickerCommon.module.css\";\nconst DateRangeCalendarLazy = /*#__PURE__*/React.lazy(() => import(\"./DateRangeCalendar.js\"));\nexport function LazyDateRangeCalendar(props) {\n return /*#__PURE__*/React.createElement(Suspense, {\n fallback: /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkDatePickerFallback\n })\n }, /*#__PURE__*/React.createElement(DateRangeCalendarLazy, props));\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 { Input } from \"@base-ui/react/input\";\nimport { Popover } from \"@base-ui/react/popover\";\nimport classnames from \"classnames\";\nimport React, { useCallback, useId, useRef, useState } from \"react\";\nimport { formatDateForDisplay, formatDateForInput, formatDatetimeForInput, getTimeValue, parseDateFromInput, parseDatetimeFromInput, parseTimeString } from \"../../shared/dateUtils.js\";\nimport { EMPTY_RANGE } from \"../FormFieldApi.js\";\nimport { stopPropagation } from \"./calendarShared.js\";\nimport commonStyles from \"./DatePickerCommon.module.css\";\nimport styles from \"./DateRangeInputField.module.css\";\nimport { LazyDateRangeCalendar } from \"./LazyDateRangeCalendar.js\";\nimport { TimePicker } from \"./TimePicker.js\";\nimport { useDateEditState } from \"./useDateEditState.js\";\n// Shared props for both start/end inputs. role=\"combobox\" because each input\n// triggers a shared popup (the calendar popover) — matching WAI-ARIA combobox pattern.\nconst SHARED_INPUT_PROPS = {\n className: commonStyles.osdkDatePickerInput,\n type: \"text\",\n onClick: stopPropagation,\n autoComplete: \"off\",\n role: \"combobox\",\n \"aria-haspopup\": \"dialog\"\n};\nexport const DateRangeInputField = /*#__PURE__*/React.memo(function DateRangeInputField({\n id,\n value,\n onChange,\n min,\n max,\n placeholderStart,\n placeholderEnd,\n allowSingleDayRange = true,\n showTime = false,\n formatDate,\n parseDate\n}) {\n const shouldCloseOnSelection = !showTime;\n const popoverId = useId();\n const startInputRef = useRef(null);\n const endInputRef = useRef(null);\n const popoverRef = useRef(null);\n const [isOpen, setIsOpen] = useState(false);\n // Tracks which input (start/end) owns the shared calendar popover.\n // Used to restore focus to the correct input when Tab-cycling through\n // focus boundaries and when the calendar selects a range endpoint.\n const [activeBoundary, setActiveBoundary] = useState(\"start\");\n const [startDate, endDate] = value ?? EMPTY_RANGE;\n\n // editFormatFn produces a parsable string for typing (e.g. \"2024-01-15\" or \"2024-01-15 14:30\").\n // displayFormatFn produces a human-readable string for idle state (e.g. \"Jan 15, 2024\").\n const editFormatFn = showTime ? formatDatetimeForInput : formatDateForInput;\n const displayFormatFn = formatDate ?? (showTime ? formatDatetimeForInput : formatDateForDisplay);\n const parseFn = parseDate ?? (showTime ? parseDatetimeFromInput : parseDateFromInput);\n\n // Wrap onChange to handle tuple construction and overlap rejection.\n // Clearing (null) is always allowed; overlap is checked for non-null dates.\n const startOnChange = useCallback(date => {\n if (date != null && isOverlapping(date, endDate, allowSingleDayRange)) {\n return;\n }\n onChange?.([date, endDate ?? null]);\n }, [endDate, onChange, allowSingleDayRange]);\n const endOnChange = useCallback(date => {\n if (date != null && isOverlapping(startDate, date, allowSingleDayRange)) {\n return;\n }\n onChange?.([startDate ?? null, date]);\n }, [startDate, onChange, allowSingleDayRange]);\n const {\n isEditing: isEditingStart,\n dateValue: startParsedValue,\n inputError: startInputError,\n displayedValue: displayedStart,\n startEditing: beginStartEditing,\n stopEditing: stopStartEditing,\n commitAndStopEditing: commitStartAndStopEditing,\n setInputValue: setStartInputValue,\n setDateValue: setStartDateValue\n } = useDateEditState({\n value: startDate,\n displayFormatFn,\n editFormatFn,\n parseFn,\n min,\n max,\n onChange: startOnChange\n });\n const {\n isEditing: isEditingEnd,\n dateValue: endParsedValue,\n inputError: endInputError,\n displayedValue: displayedEnd,\n startEditing: beginEndEditing,\n stopEditing: stopEndEditing,\n commitAndStopEditing: commitEndAndStopEditing,\n setInputValue: setEndInputValue,\n setDateValue: setEndDateValue\n } = useDateEditState({\n value: endDate,\n displayFormatFn,\n editFormatFn,\n parseFn,\n min,\n max,\n onChange: endOnChange\n });\n\n // --- Cross-input error: overlapping range (live feedback while typing) ---\n // Blur/Enter handlers prevent overlapping values from being committed,\n // so this only fires during editing for immediate red-border feedback.\n const hasOverlapError = (() => {\n if (!isEditingStart && !isEditingEnd) return false;\n const effectiveStart = isEditingStart ? startParsedValue : startDate ?? undefined;\n const effectiveEnd = isEditingEnd ? endParsedValue : endDate ?? undefined;\n return isOverlapping(effectiveStart, effectiveEnd, allowSingleDayRange);\n })();\n const startInvalid = startInputError != null || hasOverlapError;\n const endInvalid = endInputError != null || hasOverlapError;\n\n // --- Focus handlers ---\n\n const handleStartFocus = useCallback(() => {\n beginStartEditing();\n setActiveBoundary(\"start\");\n setIsOpen(true);\n }, [beginStartEditing]);\n const handleEndFocus = useCallback(() => {\n beginEndEditing();\n setActiveBoundary(\"end\");\n setIsOpen(true);\n }, [beginEndEditing]);\n\n // --- Blur handlers ---\n\n const handleStartBlur = useCallback(e => {\n const related = e.relatedTarget ?? document.activeElement;\n if (popoverRef.current?.contains(related)) {\n // Focus moved into the popover portal — the field is still logically\n // active, so suppress the blur from bubbling to parent containers.\n e.stopPropagation();\n return;\n }\n if (endInputRef.current === related) {\n return;\n }\n commitStartAndStopEditing();\n }, [commitStartAndStopEditing]);\n const handleEndBlur = useCallback(e => {\n const related = e.relatedTarget ?? document.activeElement;\n if (popoverRef.current?.contains(related)) {\n e.stopPropagation();\n return;\n }\n if (startInputRef.current === related) {\n return;\n }\n commitEndAndStopEditing();\n }, [commitEndAndStopEditing]);\n\n // --- Popover helpers ---\n\n // Shared close sequence: dismiss the popover, reset both editing states,\n // and blur both inputs so focus doesn't linger after the calendar disappears.\n const closePopover = useCallback(() => {\n setIsOpen(false);\n stopStartEditing();\n stopEndEditing();\n startInputRef.current?.blur();\n endInputRef.current?.blur();\n }, [stopStartEditing, stopEndEditing]);\n\n // --- Keyboard handlers ---\n\n const handleStartKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n commitStartAndStopEditing();\n // Auto-advance to end\n endInputRef.current?.focus();\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n closePopover();\n } else if (e.key === \"Tab\" && e.shiftKey) {\n setIsOpen(false);\n }\n }, [commitStartAndStopEditing, closePopover]);\n const handleEndKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n commitEndAndStopEditing();\n closePopover();\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n closePopover();\n } else if (e.key === \"Tab\" && !e.shiftKey && isOpen) {\n // Tab from the end input bridges focus into the popover. The popover\n // doesn't auto-focus on open (to keep the cursor in the input for typing),\n // so we manually focus the first interactive element (nav button or select).\n const firstButton = popoverRef.current?.querySelector(\"button, select\");\n if (firstButton != null) {\n e.preventDefault();\n firstButton.focus();\n }\n }\n }, [commitEndAndStopEditing, closePopover, isOpen]);\n\n // Called by base-ui when the popover opens or closes (e.g. click outside, Escape).\n const handleOpenChange = useCallback(nextOpen => {\n if (nextOpen) {\n setIsOpen(true);\n } else {\n closePopover();\n }\n }, [closePopover]);\n\n // --- Calendar handlers ---\n\n const handleRangeSelect = useCallback(range => {\n const newStart = range?.from ?? null;\n const newEnd = range?.to ?? null;\n onChange?.([newStart, newEnd]);\n if (newStart != null && newEnd == null) {\n // Start selected — commit the start and advance to end.\n // displayedValue handles the display format after stopEditing.\n stopStartEditing();\n setActiveBoundary(\"end\");\n endInputRef.current?.focus();\n } else if (newStart != null && newEnd != null && shouldCloseOnSelection) {\n // Full range selected — close and blur.\n closePopover();\n } else if (newStart != null && newEnd != null) {\n // Full range selected but popover stays open (showTime) —\n // inputs remain in editing mode, so update with editFormatFn.\n setStartDateValue(newStart);\n setEndDateValue(newEnd);\n }\n }, [onChange, shouldCloseOnSelection, closePopover, stopStartEditing, setStartDateValue, setEndDateValue]);\n\n // --- Time handlers ---\n\n const handleStartTimeChange = useCallback(timeString => {\n const {\n hours,\n minutes\n } = parseTimeString(timeString);\n const base = startDate != null ? new Date(startDate.getTime()) : new Date();\n base.setHours(hours, minutes, 0, 0);\n onChange?.([base, endDate ?? null]);\n setStartDateValue(base);\n }, [startDate, endDate, onChange, setStartDateValue]);\n const handleEndTimeChange = useCallback(timeString => {\n const {\n hours,\n minutes\n } = parseTimeString(timeString);\n const base = endDate != null ? new Date(endDate.getTime()) : new Date();\n base.setHours(hours, minutes, 0, 0);\n onChange?.([startDate ?? null, base]);\n setEndDateValue(base);\n }, [startDate, endDate, onChange, setEndDateValue]);\n\n // --- Focus boundary handlers ---\n // Visually-hidden sentinels at the top/bottom of the popover that trap Tab\n // cycling between the text inputs and calendar.\n\n // Start boundary (top): Shift+Tab past the first calendar element redirects\n // focus to whichever input is currently active.\n const handleStartFocusBoundary = useCallback(() => {\n const activeRef = activeBoundary === \"start\" ? startInputRef : endInputRef;\n activeRef.current?.focus();\n }, [activeBoundary]);\n\n // End boundary (bottom): Two cases —\n // (1) Tab past the last calendar element (focus came from inside the popover)\n // → close the popover and blur both inputs.\n // (2) Focus entered from outside the popover (e.g. reverse Tab from the page)\n // → redirect to the last interactive element inside the popover.\n const handleEndFocusBoundary = useCallback(e => {\n const related = e.relatedTarget ?? document.activeElement;\n if (popoverRef.current?.contains(related)) {\n closePopover();\n } else {\n const buttons = popoverRef.current?.querySelectorAll(\"button, select\");\n const lastButton = buttons?.[buttons.length - 1];\n lastButton?.focus();\n }\n }, [closePopover]);\n\n // --- Calendar selected range ---\n\n const calendarSelected = startDate != null || endDate != null ? {\n from: startDate ?? undefined,\n to: endDate ?? undefined\n } : undefined;\n const timeFooter = showTime ? /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkDateRangeTimeRow\n }, /*#__PURE__*/React.createElement(TimePicker, {\n value: getTimeValue(startDate),\n onChange: handleStartTimeChange,\n label: \"Start time\"\n }), /*#__PURE__*/React.createElement(TimePicker, {\n value: getTimeValue(endDate),\n onChange: handleEndTimeChange,\n label: \"End time\"\n })) : undefined;\n const sharedInputProps = {\n ...SHARED_INPUT_PROPS,\n \"aria-controls\": popoverId\n };\n return /*#__PURE__*/React.createElement(Popover.Root, {\n open: isOpen,\n onOpenChange: handleOpenChange\n }, /*#__PURE__*/React.createElement(Popover.Trigger, {\n nativeButton: false,\n render: /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkDateRangeContainer\n })\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(commonStyles.osdkDatePickerInputWrapper, styles.osdkDateRangeInputWrapper, startInvalid && commonStyles.osdkDatePickerInputWrapperError)\n }, /*#__PURE__*/React.createElement(Input, _extends({\n ref: startInputRef,\n id: id != null ? `${id}-start` : undefined,\n value: displayedStart,\n onValueChange: setStartInputValue,\n onFocus: handleStartFocus,\n onBlur: handleStartBlur,\n onKeyDown: handleStartKeyDown,\n placeholder: placeholderStart,\n \"aria-expanded\": isOpen && activeBoundary === \"start\",\n \"aria-label\": \"Start date\",\n \"aria-invalid\": startInvalid || undefined\n }, sharedInputProps))), /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(commonStyles.osdkDatePickerInputWrapper, styles.osdkDateRangeInputWrapper, endInvalid && commonStyles.osdkDatePickerInputWrapperError)\n }, /*#__PURE__*/React.createElement(Input, _extends({\n ref: endInputRef,\n id: id != null ? `${id}-end` : undefined,\n value: displayedEnd,\n onValueChange: setEndInputValue,\n onFocus: handleEndFocus,\n onBlur: handleEndBlur,\n onKeyDown: handleEndKeyDown,\n placeholder: placeholderEnd,\n \"aria-expanded\": isOpen && activeBoundary === \"end\",\n \"aria-label\": \"End date\",\n \"aria-invalid\": endInvalid || undefined\n }, sharedInputProps)))), /*#__PURE__*/React.createElement(Popover.Portal, null, /*#__PURE__*/React.createElement(Popover.Positioner, {\n sideOffset: 4\n }, /*#__PURE__*/React.createElement(Popover.Popup, {\n ref: popoverRef,\n className: commonStyles.osdkDatePickerPopover,\n id: popoverId,\n role: \"dialog\",\n \"aria-label\": \"date range picker\"\n // Disable base-ui's automatic focus restoration to the trigger on close.\n // We manage focus ourselves via closePopover() which blurs the inputs.\n ,\n finalFocus: false\n }, /*#__PURE__*/React.createElement(\"div\", {\n onFocus: handleStartFocusBoundary,\n tabIndex: 0,\n \"aria-label\": \"Start of date range picker dialog\",\n className: commonStyles.osdkDatePickerFocusBoundary\n }), /*#__PURE__*/React.createElement(LazyDateRangeCalendar, {\n selected: calendarSelected,\n onSelect: handleRangeSelect,\n min: min,\n max: max\n }), timeFooter, /*#__PURE__*/React.createElement(\"div\", {\n onFocus: handleEndFocusBoundary,\n tabIndex: 0,\n \"aria-label\": \"End of date range picker dialog\",\n className: commonStyles.osdkDatePickerFocusBoundary\n })))));\n});\n\n/** True when the end boundary is before (or same-day when disallowed) the start. */\nfunction isOverlapping(start, end, allowSingleDayRange) {\n if (start == null || end == null) return false;\n if (!allowSingleDayRange && end.getTime() === start.getTime()) return true;\n return end.getTime() < start.getTime();\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 background: 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 &:hover {\n background: var(--osdk-file-picker-trigger-bg-hover);\n }\n\n &: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 &[aria-invalid] {\n border-color: var(--osdk-file-picker-trigger-border-color-error);\n }\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 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: none;\n border: none;\n font-family: inherit;\n font-size: inherit;\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 &: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 label (right section) */\n.osdkFilePickerBrowse {\n flex-shrink: 0;\n align-self: stretch;\n display: flex;\n align-items: center;\n padding: var(--osdk-file-picker-browse-padding);\n border-left: var(--osdk-file-picker-browse-border-left);\n background: var(--osdk-file-picker-browse-bg);\n color: var(--osdk-file-picker-browse-color);\n font-family: var(--osdk-file-picker-trigger-font-family);\n font-size: var(--osdk-file-picker-trigger-font-size);\n pointer-events: none;\n transition: background-color var(--osdk-file-picker-transition-duration)\n var(--osdk-file-picker-transition-ease);\n}\n\n.osdkFilePickerTrigger:hover .osdkFilePickerBrowse {\n background-color: var(--osdk-file-picker-browse-bg-hover);\n}\n\n.osdkFilePickerTrigger:active .osdkFilePickerBrowse {\n background-color: var(--osdk-file-picker-browse-bg-active);\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 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}) {\n const inputRef = useRef(null);\n const openFileDialog = useCallback(() => {\n inputRef.current?.click();\n }, []);\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.stopPropagation();\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 (\n /*#__PURE__*/\n // The entire component is a single tab stop (tabIndex={0}).\n // Text and Browse are <span>s (not buttons) so they don't create\n // extra tab stops — clicks on them bubble up to the container's onClick.\n // The clear button is the only inner interactive element and gets its\n // own tab stop so keyboard users can clear the selection.\n React.createElement(\"div\", {\n id: id,\n className: styles.osdkFilePickerTrigger,\n tabIndex: 0,\n role: \"button\",\n \"aria-label\": \"Choose file\",\n onClick: openFileDialog,\n onKeyDown: handleKeyDown,\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 }), /*#__PURE__*/React.createElement(\"span\", {\n className: classnames(styles.osdkFilePickerText, !hasValue && styles.osdkFilePickerPlaceholder)\n }, displayText ?? text), hasValue &&\n /*#__PURE__*/\n // stopPropagation + preventDefault prevent the click from\n // bubbling to the container's onClick which opens the file dialog.\n React.createElement(Button, {\n className: styles.osdkFilePickerClear,\n onClick: handleClear,\n \"aria-label\": \"Clear selection\"\n }, /*#__PURE__*/React.createElement(Cross, null)), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkFilePickerBrowse\n }, buttonText))\n );\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 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 &: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 & + & {\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}) {\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 }), /*#__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 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 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 { 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\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 { useOsdkMetadata } from \"@osdk/react\";\nimport { useObjectSet } from \"@osdk/react/experimental\";\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}) {\n if (value == null) {\n return /*#__PURE__*/React.createElement(\"div\", {\n className: classnames(styles.osdkObjectSetField, styles.osdkObjectSetFieldEmpty)\n }, emptyMessage);\n }\n return /*#__PURE__*/React.createElement(ObjectSetFieldContent, {\n objectSet: value\n });\n});\nconst ObjectSetFieldContent = /*#__PURE__*/React.memo(function ObjectSetFieldContentFn({\n objectSet\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 }, 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\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 &: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-font-family);\n font-size: var(--osdk-typography-font-size-default);\n line-height: var(--osdk-typography-line-height-default);\n color: var(--osdk-typography-color-default);\n cursor: pointer;\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, 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}) {\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 }, options.map(option => /*#__PURE__*/React.createElement(RadioItem, {\n key: option.label,\n option: option\n })));\n});\nconst RadioItem = /*#__PURE__*/memo(function RadioItemFn({\n option\n}) {\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 }, /*#__PURE__*/React.createElement(Radio.Indicator, {\n className: styles.osdkRadioIndicator\n })), /*#__PURE__*/React.createElement(\"span\", {\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\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 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}) {\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 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}) {\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 \"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 { FormField } from \"../FormField.js\";\nimport { EMPTY_RANGE } from \"../FormFieldApi.js\";\nimport { CustomField } from \"./CustomField.js\";\nimport { DateRangeInputField } from \"./DateRangeInputField.js\";\nimport { DatetimePickerField } from \"./DatetimePickerField.js\";\nimport { DropdownField } from \"./DropdownField.js\";\nimport { FilePickerField } from \"./FilePickerField.js\";\nimport { NumberInputField } from \"./NumberInputField.js\";\nimport { ObjectSetField } from \"./ObjectSetField.js\";\nimport { RadioButtonsField } from \"./RadioButtonsField.js\";\nimport { TextAreaField } from \"./TextAreaField.js\";\nimport { TextInputField } from \"./TextInputField.js\";\nexport const FormFieldRenderer = /*#__PURE__*/memo(function FormFieldRendererFn({\n fieldDefinition,\n value,\n onFieldValueChange,\n onBlur,\n error\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: helperTextPlacement !== \"tooltip\" ? helperText : undefined,\n error: error,\n onBlur: onBlur\n }, renderFieldComponent(fieldDefinition, value, onFieldValueChange, error));\n});\nfunction renderFieldComponent(fieldDefinition, value, onChange, error) {\n switch (fieldDefinition.fieldComponent) {\n case \"DATE_RANGE_INPUT\":\n return /*#__PURE__*/React.createElement(DateRangeInputField, _extends({\n id: fieldDefinition.fieldKey,\n value: coerceToDateRange(value),\n onChange: onChange,\n placeholderStart: fieldDefinition.placeholder\n }, fieldDefinition.fieldComponentProps));\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 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 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 }\n case \"DATETIME_PICKER\":\n return /*#__PURE__*/React.createElement(DatetimePickerField, _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 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 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 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 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 case \"OBJECT_SET\":\n return /*#__PURE__*/React.createElement(ObjectSetField, _extends({\n id: fieldDefinition.fieldKey\n }, fieldDefinition.fieldComponentProps));\n default:\n return assertUnreachableFieldComponent(fieldDefinition);\n }\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}\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 } 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\", \"DROPDOWN\"]);\nexport const FieldBridge = /*#__PURE__*/memo(function FieldBridgeFn({\n fieldDef,\n control,\n onExternalChange\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 handleChange = useCallback(newValue => {\n onChange(newValue);\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 onBlur: handleBlur,\n error: fieldError?.message\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-header-inline-padding);\n border-bottom: 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\nimport { Error as ErrorIcon } from \"@blueprintjs/icons\";\nimport classNames from \"classnames\";\nimport React, { memo, useCallback, useMemo, 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\";\nexport const BaseForm = /*#__PURE__*/memo(function BaseFormFn({\n formTitle,\n fieldDefinitions,\n formState: controlledFormState,\n onFieldValueChange,\n onSubmit,\n isSubmitDisabled = false,\n isPending = false,\n isLoading = false,\n className\n}) {\n const isControlled = controlledFormState != null;\n const defaultValues = useMemo(() => buildDefaultValues(fieldDefinitions), [fieldDefinitions]);\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 handleFormSubmit = useCallback(async e => {\n e.preventDefault();\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 isFormPending = isPending || isSubmitting;\n const labelByFieldKey = useMemo(() => new Map(fieldDefinitions.map(d => [d.fieldKey, d.label])), [fieldDefinitions]);\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 return /*#__PURE__*/React.createElement(\"form\", {\n className: classNames(styles.osdkForm, className),\n onSubmit: handleFormSubmit\n }, formTitle != null && /*#__PURE__*/React.createElement(FormHeader, {\n title: formTitle\n }), isLoading && fieldDefinitions.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 }, fieldDefinitions.map(fieldDef => /*#__PURE__*/React.createElement(FieldBridge, {\n key: fieldDef.fieldKey,\n fieldDef: fieldDef,\n control: control,\n onExternalChange: handleFieldChange\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: isSubmitDisabled || hasAttemptedSubmit && areErrorsPresent,\n errorMessage: buttonErrorMessage\n }))));\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}) {\n const buttonLabel = isPending ? \"Submitting\\u2026\" : \"Submit\";\n const button = /*#__PURE__*/React.createElement(ActionButton, {\n type: \"submit\",\n variant: \"primary\",\n disabled: isSubmitDisabled || isPending\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}\nconst EMPTY_ITEMS = [];\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 case \"interface\":\n // TODO: provide correct items\n return {\n ...base,\n fieldComponent: \"DROPDOWN\",\n fieldComponentProps: {\n items: EMPTY_ITEMS\n }\n };\n case \"struct\":\n return {\n ...base,\n fieldComponent: \"TEXT_INPUT\",\n fieldComponentProps: {}\n };\n }\n }\n switch (paramType) {\n case \"string\":\n case \"marking\":\n case \"geohash\":\n case \"geoshape\":\n case \"objectType\":\n return {\n ...base,\n fieldComponent: \"TEXT_INPUT\",\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 { useOsdkMetadata } from \"@osdk/react\";\nimport { useOsdkAction } from \"@osdk/react/experimental\";\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 = [];\nexport const ActionForm = typedReactMemo(function ActionFormFn({\n actionDefinition,\n formTitle,\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 ...def,\n fieldKey: String(def.fieldKey),\n fieldType: parameters?.[String(def.fieldKey)]?.type,\n defaultValue: def.defaultValue\n }));\n }, [formFieldDefinitions, parameters]);\n const rendererFieldDefinitions = useMemo(() => customFieldDefinitions ?? (metadata != null ? getDefaultFieldDefinitions(metadata) : EMPTY_FIELD_DEFINITIONS), [customFieldDefinitions, metadata]);\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 = formTitle ?? metadata?.displayName ?? actionDefinition.apiName;\n const isControlled = controlledFormState != null;\n const commonProps = {\n formTitle: resolvedTitle,\n fieldDefinitions: rendererFieldDefinitions,\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 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/shared/typedMemo.ts","../../src/action-form/fields/DatePickerCommon.module.css","../../src/action-form/fields/DatetimePickerField.module.css","../../src/action-form/fields/LazyDateCalendar.tsx","../../src/action-form/fields/TimePicker.module.css","../../src/action-form/fields/TimePicker.tsx","../../src/action-form/fields/useDateEditState.ts","../../src/action-form/fields/DatetimePickerField.tsx","../../src/base-components/select/Select.module.css","../../src/base-components/select/Select.tsx","../../src/action-form/fields/DropdownField.tsx"],"names":["React","Suspense","useState","useRef","useCallback","Input","isDateInRange","DatetimePickerField","useId","formatDatetimeForInput","formatDateForInput","formatDateForDisplay","parseDatetimeFromInput","parseDateFromInput","parseTimeString","getTimeValue","classnames","Popover","stopPropagation","BaseUISelect","CaretDown","_extends","Cross","Combobox","Tick","Combobox_default"],"mappings":"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","file":"chunk-RY2GVYT2.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 React from \"react\";\n\n/**\n * TODO: Delete this once `React.memo` is typed to not lose generics to `unknown`\n *\n * Context: https://github.com/DefinitelyTyped/DefinitelyTyped/issues/37087\n */\nexport const typedReactMemo = React.memo;","/* Bare input inside a date picker wrapper */\n.osdkDatePickerInput {\n width: 100%;\n flex: 1;\n min-width: 0;\n min-height: var(--osdk-datetime-input-min-height);\n padding: var(--osdk-datetime-input-padding);\n border: none;\n border-radius: var(--osdk-datetime-input-border-radius);\n background: transparent;\n color: var(--osdk-datetime-input-color);\n font-family: var(--osdk-datetime-input-font-family);\n font-size: var(--osdk-datetime-input-font-size);\n line-height: var(--osdk-datetime-input-line-height);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n\n &::placeholder {\n color: var(--osdk-datetime-input-placeholder-color);\n }\n\n &:focus-visible {\n outline: none;\n }\n}\n\n/* Popover container */\n.osdkDatePickerPopover {\n background: var(--osdk-datetime-popover-bg);\n padding: var(--osdk-datetime-popover-padding);\n z-index: var(--osdk-datetime-popover-z-index);\n box-shadow: var(--osdk-datetime-popover-shadow);\n}\n\n/* Visually-hidden focus boundary for Tab cycling between input and popover */\n.osdkDatePickerFocusBoundary {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n outline: none;\n}\n\n/* Shared input wrapper — border, bg, hover, focus-within */\n.osdkDatePickerInputWrapper {\n display: flex;\n align-items: center;\n border-radius: var(--osdk-datetime-input-border-radius);\n border: var(--osdk-datetime-input-border-width) solid\n var(--osdk-datetime-input-border-color);\n background-color: var(--osdk-datetime-input-bg);\n transition:\n background-color var(--osdk-datetime-input-transition-duration)\n var(--osdk-datetime-input-transition-ease),\n border-color var(--osdk-datetime-input-transition-duration)\n var(--osdk-datetime-input-transition-ease);\n cursor: text;\n\n &:hover {\n background-color: var(--osdk-datetime-input-bg-hover);\n }\n\n &:focus-within {\n outline: var(--osdk-datetime-input-focus-width) solid\n var(--osdk-datetime-input-focus-color);\n outline-offset: var(--osdk-datetime-input-focus-offset);\n border-color: var(--osdk-datetime-input-border-color-focus);\n }\n}\n\n.osdkDatePickerInputWrapperError {\n border-color: var(--osdk-datetime-input-error-border-color);\n\n &:focus-within {\n border-color: var(--osdk-datetime-input-error-border-color);\n }\n}\n\n/* Calendar fallback / loading skeleton */\n.osdkDatePickerFallback {\n width: var(--osdk-datetime-calendar-fallback-width);\n height: var(--osdk-datetime-calendar-fallback-height);\n}\n","/* DatetimePickerField — component-specific overrides.\n Wrapper doubles as Popover.Trigger — suppress its own outline since\n :focus-within handles the focus indicator when the inner input is focused. */\n.osdkDatetimeInputWrapper {\n outline: none;\n}\n\n/* Time footer — rendered as a popover sibling (not a DayPicker tfoot) so the\n border-top can span the full popover width via negative margins. */\n.osdkDatetimeTimeFooter {\n padding-top: var(--osdk-time-picker-padding-top);\n padding-left: var(--osdk-datetime-popover-padding);\n padding-right: var(--osdk-datetime-popover-padding);\n margin-top: var(--osdk-time-picker-margin-top);\n margin-left: calc(var(--osdk-datetime-popover-padding) * -1);\n margin-right: calc(var(--osdk-datetime-popover-padding) * -1);\n border-top: var(--osdk-time-picker-border-top);\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, { Suspense } from \"react\";\nimport styles from \"./DatePickerCommon.module.css\";\nconst DateCalendarLazy = /*#__PURE__*/React.lazy(() => import(\"./DateCalendar.js\"));\nexport function LazyDateCalendar(props) {\n return /*#__PURE__*/React.createElement(Suspense, {\n fallback: /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkDatePickerFallback\n })\n }, /*#__PURE__*/React.createElement(DateCalendarLazy, props));\n}","/* TimePicker — bare time input. Layout (spacing, borders) owned by the parent. */\n\n.osdkTimePickerInput {\n width: 100%;\n font-family: var(--osdk-time-picker-input-font-family);\n font-size: var(--osdk-time-picker-input-font-size);\n padding: var(--osdk-time-picker-input-padding);\n border: var(--osdk-time-picker-input-border);\n border-radius: var(--osdk-time-picker-input-border-radius);\n background: var(--osdk-time-picker-input-bg);\n color: var(--osdk-time-picker-input-color);\n box-sizing: border-box;\n\n &:focus {\n border-color: var(--osdk-time-picker-input-border-color-focus);\n outline: var(--osdk-time-picker-input-focus-outline);\n outline-offset: var(--osdk-time-picker-input-focus-offset);\n }\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 { Input } from \"@base-ui/react/input\";\nimport React, { useCallback, useRef, useState } from \"react\";\nimport styles from \"./TimePicker.module.css\";\nexport function TimePicker({\n value,\n onChange,\n label = \"Time\"\n}) {\n const [localValue, setLocalValue] = useState(value);\n const isFocusedRef = useRef(false);\n\n // Sync from prop when not focused (parent changed the value externally)\n const prevValueRef = useRef(value);\n if (prevValueRef.current !== value) {\n prevValueRef.current = value;\n if (!isFocusedRef.current) {\n setLocalValue(value);\n }\n }\n const handleFocus = useCallback(() => {\n isFocusedRef.current = true;\n }, []);\n const handleBlur = useCallback(() => {\n isFocusedRef.current = false;\n onChange(localValue);\n }, [onChange, localValue]);\n return /*#__PURE__*/React.createElement(Input, {\n type: \"time\",\n value: localValue,\n onValueChange: setLocalValue,\n onFocus: handleFocus,\n onBlur: handleBlur,\n className: styles.osdkTimePickerInput,\n \"aria-label\": label\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 { useCallback, useRef, useState } from \"react\";\nimport { isDateInRange } from \"../../shared/dateUtils.js\";\n/**\n * Manages the editing lifecycle for a single date text input.\n *\n * Handles the two-phase display pattern where the input shows a formatted\n * display value when idle and switches to an editable format when focused.\n */\nexport function useDateEditState({\n value,\n displayFormatFn,\n editFormatFn,\n parseFn,\n min,\n max,\n onChange\n}) {\n const [isEditing, setIsEditing] = useState(false);\n const [inputValue, setInputValue] = useState(\"\");\n\n // Sync inputValue when external value changes (e.g. parent resets)\n const prevValueTimeRef = useRef(value?.getTime() ?? null);\n const currentValueTime = value?.getTime() ?? null;\n if (prevValueTimeRef.current !== currentValueTime) {\n prevValueTimeRef.current = currentValueTime;\n if (!isEditing) {\n setInputValue(value != null ? editFormatFn(value) : \"\");\n }\n }\n\n // During editing the user needs parsable text they can modify and that\n // round-trips through parseFn (e.g. \"2024-01-15\"). When idle the input\n // shows a locale-friendly string that may not be parsable (e.g. \"Jan 15, 2024\")\n // but is more readable. displayedValue is the single source of truth\n // for the input's visible text.\n const displayedValue = isEditing ? inputValue : value != null ? displayFormatFn(value) : \"\";\n\n // Parse the input once per render and derive all validation state from it.\n const dateValue = inputValue !== \"\" ? parseFn(inputValue) : undefined;\n const inputError = (() => {\n // Not editing: no validation feedback.\n // Empty input: the user cleared the field — that means null, not invalid.\n if (!isEditing || inputValue === \"\") return null;\n if (dateValue == null) return \"invalid\";\n if (!isDateInRange(dateValue, min, max)) return \"out-of-range\";\n return null;\n })();\n\n // The validated date ready for onChange, derived from dateValue + inputError.\n const validatedDate = inputError == null && dateValue != null ? dateValue : null;\n const setDateValue = useCallback(date => {\n setInputValue(date != null ? editFormatFn(date) : \"\");\n }, [editFormatFn]);\n const startEditing = useCallback(() => {\n setIsEditing(true);\n setDateValue(value);\n }, [value, setDateValue]);\n const stopEditing = useCallback(() => {\n setIsEditing(false);\n setDateValue(value);\n }, [value, setDateValue]);\n\n // Refs so commitAndStopEditing reads the latest derived values without\n // closing over inputValue/validatedDate (which change every keystroke).\n const inputValueRef = useRef(inputValue);\n inputValueRef.current = inputValue;\n const validatedDateRef = useRef(validatedDate);\n validatedDateRef.current = validatedDate;\n const commitAndStopEditing = useCallback(() => {\n if (inputValueRef.current === \"\") {\n onChange?.(null);\n } else if (validatedDateRef.current != null) {\n onChange?.(validatedDateRef.current);\n }\n setIsEditing(false);\n setDateValue(value);\n }, [onChange, setDateValue, value]);\n return {\n isEditing,\n displayedValue,\n inputError,\n dateValue,\n startEditing,\n stopEditing,\n commitAndStopEditing,\n setInputValue,\n setDateValue\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 { Input } from \"@base-ui/react/input\";\nimport { Popover } from \"@base-ui/react/popover\";\nimport classnames from \"classnames\";\nimport React, { useCallback, useId, useRef, useState } from \"react\";\nimport { formatDateForDisplay, formatDateForInput, formatDatetimeForInput, getTimeValue, parseDateFromInput, parseDatetimeFromInput, parseTimeString } from \"../../shared/dateUtils.js\";\nimport { stopPropagation } from \"./calendarShared.js\";\nimport commonStyles from \"./DatePickerCommon.module.css\";\nimport styles from \"./DatetimePickerField.module.css\";\nimport { LazyDateCalendar } from \"./LazyDateCalendar.js\";\nimport { TimePicker } from \"./TimePicker.js\";\nimport { useDateEditState } from \"./useDateEditState.js\";\nexport const DatetimePickerField = /*#__PURE__*/React.memo(function DatetimePickerField({\n id,\n value,\n onChange,\n error,\n min,\n max,\n placeholder,\n formatDate,\n parseDate,\n showTime = false,\n closeOnSelection,\n portalRef\n}) {\n const shouldCloseOnSelection = closeOnSelection ?? !showTime;\n const popoverId = useId();\n const inputRef = useRef(null);\n const popoverRef = useRef(null);\n const [isOpen, setIsOpen] = useState(false);\n // When true, the next handleFocus call skips reopening the popover.\n // Set before focusing the input from a popover boundary exit so that\n // Tab/Shift-Tab proceeds to the adjacent form field naturally.\n const skipReopenRef = useRef(false);\n\n // Format/parse: pick between date-only and datetime variants.\n // editFormatFn produces a parsable string for typing (e.g. \"2024-01-15\" or \"2024-01-15 14:30\").\n // displayFormatFn produces a human-readable string for idle state (e.g. \"Jan 15, 2024\").\n const editFormatFn = showTime ? formatDatetimeForInput : formatDateForInput;\n const displayFormatFn = formatDate ?? (showTime ? formatDatetimeForInput : formatDateForDisplay);\n const parseFn = parseDate ?? (showTime ? parseDatetimeFromInput : parseDateFromInput);\n const {\n displayedValue,\n inputError,\n startEditing,\n stopEditing,\n commitAndStopEditing,\n setInputValue,\n setDateValue\n } = useDateEditState({\n value,\n displayFormatFn,\n editFormatFn,\n parseFn,\n min,\n max,\n onChange\n });\n\n // --- Input event handlers ---\n\n const handleFocus = useCallback(() => {\n if (skipReopenRef.current) {\n skipReopenRef.current = false;\n startEditing();\n return;\n }\n startEditing();\n setIsOpen(true);\n }, [startEditing]);\n const handleBlur = useCallback(e => {\n const relatedTarget = e.relatedTarget ?? document.activeElement;\n if (popoverRef.current?.contains(relatedTarget)) {\n // Focus moved into the popover portal (e.g. clicking a calendar day).\n // The field is still logically active, so suppress the blur from\n // bubbling — parent containers should not treat this as a field exit.\n e.stopPropagation();\n return;\n }\n commitAndStopEditing();\n }, [commitAndStopEditing]);\n\n // Shared close sequence: dismiss the popover, reset editing state, and\n // blur the input so focus doesn't linger after the calendar disappears.\n // Uses stopEditing (not commitAndStopEditing) to avoid double-firing\n // onChange when called from calendar-select or after Enter already committed.\n const closePopover = useCallback(() => {\n setIsOpen(false);\n stopEditing();\n inputRef.current?.blur();\n }, [stopEditing]);\n const handleKeyDown = useCallback(e => {\n if (e.key === \"Enter\") {\n e.preventDefault();\n commitAndStopEditing();\n setIsOpen(false);\n inputRef.current?.blur();\n } else if (e.key === \"Escape\") {\n e.preventDefault();\n closePopover();\n } else if (e.key === \"Tab\" && !e.shiftKey && isOpen) {\n // Move focus from the text input into the calendar popover.\n // The popover doesn't auto-focus on open (to keep the cursor in the input),\n // so Tab manually bridges focus to the first interactive calendar element.\n const firstFocusable = popoverRef.current?.querySelector(\"button, select\");\n if (firstFocusable != null) {\n e.preventDefault();\n firstFocusable.focus();\n }\n } else if (e.key === \"Tab\" && e.shiftKey) {\n setIsOpen(false);\n }\n }, [commitAndStopEditing, closePopover, isOpen]);\n\n // --- Popover handlers ---\n\n // Called by base-ui when the popover opens or closes (e.g. click outside, Escape).\n const handleOpenChange = useCallback(nextOpen => {\n if (nextOpen) {\n setIsOpen(true);\n } else {\n closePopover();\n }\n }, [closePopover]);\n\n // --- Calendar handlers ---\n\n const handleCalendarSelect = useCallback(selected => {\n if (selected == null) {\n onChange?.(null);\n setInputValue(\"\");\n return;\n }\n const date = new Date(selected.getTime());\n if (showTime && value != null) {\n date.setHours(value.getHours(), value.getMinutes());\n }\n onChange?.(date);\n setDateValue(date);\n if (shouldCloseOnSelection) {\n closePopover();\n }\n }, [onChange, showTime, value, shouldCloseOnSelection, setDateValue, setInputValue, closePopover]);\n const handleTimeChange = useCallback(timeString => {\n const {\n hours,\n minutes\n } = parseTimeString(timeString);\n const base = value != null ? new Date(value.getTime()) : new Date();\n base.setHours(hours, minutes, 0, 0);\n onChange?.(base);\n setDateValue(base);\n }, [value, onChange, setDateValue]);\n\n // --- Focus boundary handlers ---\n // Visually-hidden elements at the start/end of the popover that trap Tab\n // cycling between the text input and calendar. Without these, Tab would\n // escape the popover into the page behind it.\n\n const handleStartFocusBoundary = useCallback(() => {\n inputRef.current?.focus();\n }, []);\n const handleEndFocusBoundary = useCallback(e => {\n const relatedTarget = e.relatedTarget ?? document.activeElement;\n if (popoverRef.current?.contains(relatedTarget)) {\n // Tab reached the end of the popover. Close the popover and\n // return focus to the input without reopening it, so the next\n // Tab advances to the next form field.\n skipReopenRef.current = true;\n setIsOpen(false);\n stopEditing();\n inputRef.current?.focus();\n } else {\n const buttons = popoverRef.current?.querySelectorAll(\"button, select\");\n const lastButton = buttons?.[buttons.length - 1];\n lastButton?.focus();\n }\n }, [stopEditing]);\n\n // --- Time picker (rendered as a popover sibling, not a DayPicker footer,\n // so the border-top can span the full popover width via negative margins) ---\n\n const timeFooter = showTime ? /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkDatetimeTimeFooter\n }, /*#__PURE__*/React.createElement(TimePicker, {\n value: getTimeValue(value),\n onChange: handleTimeChange\n })) : undefined;\n const wrapperClassName = classnames(commonStyles.osdkDatePickerInputWrapper, styles.osdkDatetimeInputWrapper, inputError != null && commonStyles.osdkDatePickerInputWrapperError);\n return /*#__PURE__*/React.createElement(Popover.Root, {\n open: isOpen,\n onOpenChange: handleOpenChange\n }, /*#__PURE__*/React.createElement(Popover.Trigger, {\n nativeButton: false,\n render: /*#__PURE__*/React.createElement(\"div\", {\n className: wrapperClassName,\n tabIndex: -1\n })\n }, /*#__PURE__*/React.createElement(Input, {\n ref: inputRef,\n id: id,\n className: commonStyles.osdkDatePickerInput,\n type: \"text\",\n value: displayedValue,\n onValueChange: setInputValue,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onClick: stopPropagation,\n onKeyDown: handleKeyDown,\n placeholder: placeholder,\n autoComplete: \"off\",\n role: \"combobox\",\n \"aria-expanded\": isOpen,\n \"aria-controls\": popoverId,\n \"aria-haspopup\": \"dialog\"\n })), /*#__PURE__*/React.createElement(Popover.Portal, {\n ref: portalRef\n }, /*#__PURE__*/React.createElement(Popover.Positioner, {\n sideOffset: 4\n }, /*#__PURE__*/React.createElement(Popover.Popup, {\n ref: popoverRef,\n className: commonStyles.osdkDatePickerPopover,\n id: popoverId,\n role: \"dialog\",\n \"aria-label\": \"date picker\"\n // Disable base-ui's automatic focus restoration to the trigger on close.\n // We manage focus ourselves via closePopover() which blurs the input.\n ,\n finalFocus: false\n }, /*#__PURE__*/React.createElement(\"div\", {\n onFocus: handleStartFocusBoundary,\n tabIndex: 0,\n \"aria-label\": \"Start of date picker dialog\",\n className: commonStyles.osdkDatePickerFocusBoundary\n }), /*#__PURE__*/React.createElement(LazyDateCalendar, {\n dateSelected: value ?? undefined,\n onSelect: handleCalendarSelect,\n min: min,\n max: max\n }), timeFooter, /*#__PURE__*/React.createElement(\"div\", {\n onFocus: handleEndFocusBoundary,\n tabIndex: 0,\n \"aria-label\": \"End of date picker dialog\",\n className: commonStyles.osdkDatePickerFocusBoundary\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/* TODO: Extract each variable into its tokens file and map to default value there */\n\n.osdkSelectTrigger {\n display: inline-flex;\n align-items: center;\n justify-content: space-between;\n gap: var(--osdk-select-spacing, var(--osdk-surface-spacing));\n width: 100%;\n min-height: var(--osdk-select-min-height, 30px);\n padding: var(\n --osdk-select-trigger-padding,\n calc(var(--osdk-surface-spacing) * 1.5)\n calc(var(--osdk-surface-spacing) * 2.5)\n );\n cursor: pointer;\n border-radius: var(\n --osdk-select-border-radius,\n var(--osdk-surface-border-radius)\n );\n border: var(--osdk-select-border-width, var(--osdk-surface-border-width))\n solid\n var(--osdk-select-border-color, var(--osdk-surface-border-color-default));\n background-color: var(\n --osdk-select-trigger-bg,\n var(--osdk-surface-background-color-default-rest)\n );\n color: var(\n --osdk-select-trigger-color,\n var(--osdk-typography-color-default-rest)\n );\n font-family: var(\n --osdk-select-font-family,\n var(--osdk-typography-family-default)\n );\n font-size: var(\n --osdk-select-font-size,\n var(--osdk-typography-size-body-medium)\n );\n line-height: var(\n --osdk-select-line-height,\n var(--osdk-typography-line-height-default)\n );\n transition:\n background-color\n var(\n --osdk-select-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-select-transition-ease, var(--osdk-emphasis-ease-default)),\n border-color\n var(\n --osdk-select-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-select-transition-ease, var(--osdk-emphasis-ease-default));\n\n &:hover {\n background-color: var(\n --osdk-select-trigger-bg-hover,\n var(--osdk-surface-background-color-default-hover)\n );\n }\n\n &:active {\n background-color: var(\n --osdk-select-trigger-bg-active,\n var(--osdk-surface-background-color-default-active)\n );\n }\n\n &:focus-visible {\n outline: var(--osdk-select-focus-width, var(--osdk-emphasis-focus-width))\n solid var(--osdk-select-focus-color, var(--osdk-emphasis-focus-color));\n outline-offset: var(\n --osdk-select-focus-offset,\n var(--osdk-emphasis-focus-offset)\n );\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n opacity: var(--osdk-disabled-opacity, 0.5);\n }\n\n &[data-popup-open] {\n border-color: var(\n --osdk-select-border-color-active,\n var(--osdk-intent-primary-rest)\n );\n }\n}\n\n.osdkSelectValueContainer {\n flex: 1;\n display: grid;\n min-width: 0;\n\n & > * {\n grid-area: 1 / 1;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n}\n\n.osdkSelectValue {\n text-align: left;\n}\n\n.osdkSelectPlaceholder {\n text-align: left;\n color: var(\n --osdk-select-placeholder-color,\n var(--osdk-typography-color-muted)\n );\n pointer-events: none;\n}\n\n.osdkSelectValue:not([data-placeholder]) ~ .osdkSelectPlaceholder {\n display: none;\n}\n\n.osdkSelectIcon {\n display: flex;\n align-items: center;\n justify-content: center;\n line-height: 0;\n color: var(--osdk-select-icon-color, var(--osdk-iconography-color-muted));\n flex-shrink: 0;\n transition: transform\n var(\n --osdk-select-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-select-transition-ease, var(--osdk-emphasis-ease-default));\n\n [data-popup-open] > & {\n transform: rotate(180deg);\n }\n}\n\n.osdkSelectClear {\n display: flex;\n align-items: center;\n justify-content: center;\n margin: 0;\n padding: 0;\n line-height: 0;\n border: none;\n background: transparent;\n cursor: pointer;\n flex-shrink: 0;\n color: var(--osdk-select-clear-color, var(--osdk-iconography-color-muted));\n border-radius: var(\n --osdk-select-border-radius,\n var(--osdk-surface-border-radius)\n );\n transition:\n color\n var(\n --osdk-select-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-select-transition-ease, var(--osdk-emphasis-ease-default)),\n background-color\n var(\n --osdk-select-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-select-transition-ease, var(--osdk-emphasis-ease-default));\n\n &:hover {\n color: var(\n --osdk-select-clear-color-hover,\n var(--osdk-typography-color-default-rest)\n );\n background-color: var(\n --osdk-select-clear-bg-hover,\n var(--osdk-surface-background-color-default-hover)\n );\n }\n}\n\n.osdkSelectPositioner {\n z-index: var(--osdk-select-z-index, var(--osdk-surface-z-index-3));\n}\n\n.osdkSelectPopup {\n display: flex;\n flex-direction: column;\n min-width: var(--anchor-width);\n max-height: var(--available-height);\n overflow-y: auto;\n padding: calc(var(--osdk-select-spacing, var(--osdk-surface-spacing)) * 1.5);\n border-radius: var(\n --osdk-select-border-radius,\n var(--osdk-surface-border-radius)\n );\n border: var(--osdk-select-border-width, var(--osdk-surface-border-width))\n solid\n var(--osdk-select-border-color, var(--osdk-surface-border-color-default));\n background-color: var(\n --osdk-select-popup-bg,\n var(--osdk-surface-background-color-default-rest)\n );\n box-shadow: var(--osdk-select-popup-shadow, var(--osdk-surface-shadow-2));\n}\n\n.osdkSelectItem {\n display: flex;\n align-items: center;\n padding: calc(var(--osdk-select-spacing, var(--osdk-surface-spacing)) * 1.5)\n calc(var(--osdk-select-spacing, var(--osdk-surface-spacing)) * 2);\n border-radius: var(\n --osdk-select-border-radius,\n var(--osdk-surface-border-radius)\n );\n cursor: pointer;\n font-family: var(\n --osdk-select-font-family,\n var(--osdk-typography-family-default)\n );\n font-size: var(\n --osdk-select-font-size,\n var(--osdk-typography-size-body-medium)\n );\n line-height: var(\n --osdk-select-line-height,\n var(--osdk-typography-line-height-default)\n );\n color: var(\n --osdk-select-item-color,\n var(--osdk-typography-color-default-rest)\n );\n transition: background-color\n var(\n --osdk-select-transition-duration,\n var(--osdk-emphasis-transition-duration)\n )\n var(--osdk-select-transition-ease, var(--osdk-emphasis-ease-default));\n\n &[data-highlighted] {\n background-color: var(\n --osdk-select-item-bg-highlighted,\n var(--osdk-surface-background-color-default-hover)\n );\n outline: none;\n }\n\n &[data-selected] {\n background-color: var(\n --osdk-select-item-bg-selected,\n var(--osdk-surface-layer-primary)\n );\n color: var(\n --osdk-select-item-color-selected,\n var(--osdk-intent-primary-rest)\n );\n }\n\n &[data-disabled] {\n cursor: not-allowed;\n opacity: var(--osdk-disabled-opacity, 0.5);\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 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 { Select as BaseUISelect } from \"@base-ui/react/select\";\nimport { CaretDown } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./Select.module.css\";\nfunction SelectRoot({\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUISelect.Root, rest, children);\n}\nfunction SelectTrigger({\n className,\n placeholder,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUISelect.Trigger, _extends({\n className: classnames(styles.osdkSelectTrigger, className)\n }, rest), children ?? /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkSelectValueContainer\n }, /*#__PURE__*/React.createElement(BaseUISelect.Value, {\n className: styles.osdkSelectValue\n }), placeholder != null && /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkSelectPlaceholder\n }, placeholder)), /*#__PURE__*/React.createElement(BaseUISelect.Icon, {\n className: styles.osdkSelectIcon\n }, /*#__PURE__*/React.createElement(CaretDown, null))));\n}\nfunction SelectValue(props) {\n const {\n className,\n ...rest\n } = props;\n return /*#__PURE__*/React.createElement(BaseUISelect.Value, _extends({\n className: classnames(styles.osdkSelectValue, className)\n }, rest));\n}\nfunction SelectPositioner({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUISelect.Positioner, _extends({\n className: classnames(styles.osdkSelectPositioner, className),\n sideOffset: 4\n /* Disable Base UI's default behavior of aligning the selected item in\n the popup with the trigger. This causes layout jumps when the popup\n opens because the list scrolls to center the selected item. A static\n dropdown position below the trigger is more predictable. */,\n alignItemWithTrigger: false\n }, rest), children);\n}\nfunction SelectPopup({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUISelect.Popup, _extends({\n className: classnames(styles.osdkSelectPopup, className)\n }, rest), children);\n}\nfunction SelectItem({\n className,\n children,\n ...rest\n}) {\n return /*#__PURE__*/React.createElement(BaseUISelect.Item, _extends({\n className: classnames(styles.osdkSelectItem, className)\n }, rest), /*#__PURE__*/React.createElement(BaseUISelect.ItemText, null, children));\n}\nexport const Select = {\n Root: SelectRoot,\n Trigger: SelectTrigger,\n Value: SelectValue,\n Portal: BaseUISelect.Portal,\n Positioner: SelectPositioner,\n Popup: SelectPopup,\n Item: SelectItem\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 { CaretDown, Cross, Tick } from \"@blueprintjs/icons\";\nimport React, { useCallback, useState } from \"react\";\nimport { Combobox } from \"../../base-components/combobox/Combobox.js\";\nimport comboboxStyles from \"../../base-components/combobox/Combobox.module.css\";\nimport { Select } from \"../../base-components/select/Select.js\";\nimport selectStyles from \"../../base-components/select/Select.module.css\";\nimport { typedReactMemo } from \"../../shared/typedMemo.js\";\nconst EMPTY_ARRAY = [];\n\n/**\n * SelectDropdown is only used for single-select (the multi-select path\n * always routes to ComboboxDropdown). We keep the `Multiple` generic so\n * the spread from DropdownField type-checks, but SelectDropdown never\n * reads `isMultiple`.\n */\n\nexport function DropdownField({\n isSearchable = false,\n isMultiple,\n itemToStringLabel,\n itemToKey,\n value,\n ...rest\n}) {\n // Ensure always controlled from first render: multi-select needs [],\n // single-select needs null. Passing undefined switches Base UI from\n // uncontrolled to controlled and triggers a warning.\n const normalizedValue = value ?? (isMultiple ? EMPTY_ARRAY : null);\n const resolvedItemToStringLabel = itemToStringLabel ?? defaultItemToStringLabel;\n const getKey = useCallback(item => itemToKey?.(item) ?? resolvedItemToStringLabel(item), [itemToKey, resolvedItemToStringLabel]);\n\n // Multi-select always uses Combobox for the chip-based UI because it looks better\n if (isSearchable || isMultiple) {\n return /*#__PURE__*/React.createElement(ComboboxDropdown, _extends({}, rest, {\n isMultiple: isMultiple,\n value: normalizedValue,\n itemToStringLabel: resolvedItemToStringLabel,\n getKey: getKey,\n isSearchable: isSearchable\n }));\n }\n return /*#__PURE__*/React.createElement(SelectDropdown, _extends({}, rest, {\n value: normalizedValue,\n itemToStringLabel: resolvedItemToStringLabel,\n getKey: getKey\n }));\n}\nconst SelectDropdown = typedReactMemo(function SelectDropdownFn({\n id,\n value,\n onChange,\n items,\n itemToStringLabel,\n getKey,\n isItemEqual,\n placeholder,\n portalRef\n}) {\n const [open, setOpen] = useState(false);\n const hasValue = value != null;\n const handleClear = useCallback(() => {\n // SelectDropdown is always single-select, so cleared value is null.\n onChange?.(null);\n setOpen(false);\n }, [onChange]);\n return /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(Select.Root, {\n value: value,\n onValueChange: onChange,\n open: open,\n onOpenChange: setOpen,\n isItemEqualToValue: isItemEqual,\n itemToStringLabel: itemToStringLabel\n }, /*#__PURE__*/React.createElement(Select.Trigger, {\n id: id,\n placeholder: placeholder\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: selectStyles.osdkSelectValueContainer\n }, /*#__PURE__*/React.createElement(Select.Value, null), placeholder != null && /*#__PURE__*/React.createElement(\"span\", {\n className: selectStyles.osdkSelectPlaceholder\n }, placeholder)), hasValue && /*#__PURE__*/React.createElement(\"span\", {\n role: \"button\",\n \"aria-label\": \"Clear\",\n className: selectStyles.osdkSelectClear,\n onMouseDown: preventTriggerOpen,\n onClick: handleClear\n }, /*#__PURE__*/React.createElement(Cross, null)), /*#__PURE__*/React.createElement(\"span\", {\n className: selectStyles.osdkSelectIcon\n }, /*#__PURE__*/React.createElement(CaretDown, null))), /*#__PURE__*/React.createElement(Select.Portal, {\n ref: portalRef\n }, /*#__PURE__*/React.createElement(Select.Positioner, null, /*#__PURE__*/React.createElement(Select.Popup, null, items.map(item => /*#__PURE__*/React.createElement(Select.Item, {\n key: getKey(item),\n value: item\n }, itemToStringLabel(item))))))));\n});\nconst ComboboxDropdown = typedReactMemo(function ComboboxDropdownFn({\n id,\n value,\n onChange,\n items,\n itemToStringLabel,\n getKey,\n isItemEqual,\n isMultiple,\n isSearchable,\n placeholder,\n portalRef\n}) {\n const [open, setOpen] = useState(false);\n const hasValue = isMultiple ? Array.isArray(value) && value.length > 0 : value != null;\n const handleClear = useCallback(() => {\n // TypeScript can't narrow the conditional type `Multiple extends true ? V[] : V`\n // at runtime, so we cast through the known parameter type at this single call site.\n const cleared = isMultiple ? EMPTY_ARRAY : null;\n onChange?.(cleared);\n // Single-select: close after clearing. Multi-select: keep open for continued selection.\n if (!isMultiple) {\n setOpen(false);\n }\n }, [isMultiple, onChange]);\n const handleRemoveItem = useCallback(itemToRemove => {\n if (!isMultiple || !Array.isArray(value)) {\n return;\n }\n const next = value.filter(v => isItemEqual != null ? !isItemEqual(v, itemToRemove) : v !== itemToRemove);\n onChange?.(next);\n }, [isMultiple, value, onChange, isItemEqual]);\n const renderItem = useCallback(item => /*#__PURE__*/React.createElement(Combobox.Item, {\n key: getKey(item),\n value: item\n }, itemToStringLabel(item)), [getKey, itemToStringLabel]);\n const renderItemWithIndicator = useCallback(item => /*#__PURE__*/React.createElement(Combobox.Item, {\n key: getKey(item),\n value: item\n }, /*#__PURE__*/React.createElement(Combobox.ItemIndicator, null, /*#__PURE__*/React.createElement(Tick, null)), itemToStringLabel(item)), [getKey, itemToStringLabel]);\n return /*#__PURE__*/React.createElement(\"div\", null, /*#__PURE__*/React.createElement(Combobox.Root, {\n value: value,\n onValueChange: onChange,\n open: open,\n onOpenChange: setOpen,\n multiple: isMultiple,\n itemToStringLabel: itemToStringLabel,\n isItemEqualToValue: isItemEqual,\n items: items,\n autoHighlight: isSearchable\n }, /*#__PURE__*/React.createElement(Combobox.Trigger, {\n id: id,\n className: isMultiple ? comboboxStyles.osdkComboboxTriggerMulti : undefined\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: comboboxStyles.osdkComboboxValueContainer\n }, isMultiple && Array.isArray(value) && value.length > 0 ? /*#__PURE__*/React.createElement(\"div\", {\n className: comboboxStyles.osdkComboboxTriggerChips\n }, value.map(item => /*#__PURE__*/React.createElement(\"span\", {\n key: getKey(item),\n className: comboboxStyles.osdkComboboxTriggerChip\n }, itemToStringLabel(item), /*#__PURE__*/React.createElement(\"span\", {\n role: \"button\",\n \"aria-label\": `Remove ${itemToStringLabel(item)}`,\n className: comboboxStyles.osdkComboboxTriggerChipRemove,\n onMouseDown: preventTriggerOpen,\n onClick: () => handleRemoveItem(item)\n }, /*#__PURE__*/React.createElement(Cross, {\n size: 12\n }))))) : /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Combobox.Value, null), !hasValue && placeholder != null && /*#__PURE__*/React.createElement(\"span\", {\n className: comboboxStyles.osdkComboboxPlaceholder\n }, placeholder))), hasValue && /*#__PURE__*/React.createElement(\"span\", {\n role: \"button\",\n \"aria-label\": \"Clear\",\n className: comboboxStyles.osdkComboboxClear,\n onMouseDown: preventTriggerOpen,\n onClick: handleClear\n }, /*#__PURE__*/React.createElement(Cross, null)), /*#__PURE__*/React.createElement(Combobox.Icon, null, /*#__PURE__*/React.createElement(CaretDown, null))), /*#__PURE__*/React.createElement(Combobox.Portal, {\n ref: portalRef\n }, /*#__PURE__*/React.createElement(Combobox.Positioner, null, /*#__PURE__*/React.createElement(Combobox.Popup, null, isSearchable && /*#__PURE__*/React.createElement(\"div\", {\n className: comboboxStyles.osdkComboboxPopupSearchInput\n }, /*#__PURE__*/React.createElement(Combobox.SearchInput, {\n placeholder: \"Search\\u2026\"\n })), /*#__PURE__*/React.createElement(Combobox.Empty, null, \"No results\"), /*#__PURE__*/React.createElement(Combobox.List, null, isMultiple ? renderItemWithIndicator : renderItem))))));\n});\n\n// Prevent the clear/remove click from bubbling into the trigger\n// and toggling the dropdown open/closed.\nfunction preventTriggerOpen(e) {\n e.stopPropagation();\n e.preventDefault();\n}\nfunction defaultItemToStringLabel(item) {\n if (item == null || typeof item !== \"object\") {\n return String(item);\n }\n if (\"label\" in item && item.label != null && typeof item.label === \"string\") {\n return item.label;\n }\n return String(item);\n}"]}
|