@osdk/react-components 0.21.0 → 0.21.1-main-8965bdf6a0c540d35214e7ff7328defbf04cf4c8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/CHANGELOG.md +11 -0
  2. package/build/browser/shared/calendar/DateCalendar.js +27 -4
  3. package/build/browser/shared/calendar/DateCalendar.js.map +1 -1
  4. package/build/browser/shared/calendar/DatePicker.js +4 -17
  5. package/build/browser/shared/calendar/DatePicker.js.map +1 -1
  6. package/build/browser/shared/calendar/DatePicker.module.css +0 -5
  7. package/build/browser/shared/calendar/DatePicker.module.css.js +1 -2
  8. package/build/browser/shared/calendar/DateRangePicker.js +4 -2
  9. package/build/browser/shared/calendar/DateRangePicker.js.map +1 -1
  10. package/build/browser/shared/calendar/TimePicker.js +24 -45
  11. package/build/browser/shared/calendar/TimePicker.js.map +1 -1
  12. package/build/browser/styles.css +0 -5
  13. package/build/browser/util/UserAgent.js +1 -1
  14. package/build/browser/util/UserAgent.js.map +1 -1
  15. package/build/cjs/{DateCalendar-OLI4WF2E.cjs → DateCalendar-PZO23MYM.cjs} +6 -6
  16. package/build/cjs/{DateCalendar-OLI4WF2E.cjs.map → DateCalendar-PZO23MYM.cjs.map} +1 -1
  17. package/build/cjs/{DateCalendar-7E5ZCI7U.css → DateCalendar-XTX3RI6O.css} +35 -1
  18. package/build/cjs/DateCalendar-XTX3RI6O.css.map +1 -0
  19. package/build/cjs/DateRangeCalendar-2MBQAU3Z.cjs +12 -0
  20. package/build/cjs/{DateRangeCalendar-TC7G2J2D.cjs.map → DateRangeCalendar-2MBQAU3Z.cjs.map} +1 -1
  21. package/build/cjs/{DateRangeCalendar-R3RYMAD4.css → DateRangeCalendar-R7KHDKJT.css} +35 -1
  22. package/build/cjs/DateRangeCalendar-R7KHDKJT.css.map +1 -0
  23. package/build/cjs/{chunk-Y6BGC7DP.cjs → chunk-3S52UDZM.cjs} +22 -22
  24. package/build/cjs/{chunk-Y6BGC7DP.cjs.map → chunk-3S52UDZM.cjs.map} +1 -1
  25. package/build/cjs/{chunk-5XDYMIRI.cjs → chunk-BOPWPSHS.cjs} +17 -17
  26. package/build/cjs/{chunk-5XDYMIRI.cjs.map → chunk-BOPWPSHS.cjs.map} +1 -1
  27. package/build/cjs/{chunk-XA3S7YAO.cjs → chunk-E5OKIBYJ.cjs} +145 -317
  28. package/build/cjs/chunk-E5OKIBYJ.cjs.map +1 -0
  29. package/build/cjs/{chunk-TIFUKHW7.cjs → chunk-ESXB4FJ3.cjs} +3 -3
  30. package/build/cjs/chunk-ESXB4FJ3.cjs.map +1 -0
  31. package/build/cjs/chunk-GUV4HDHF.cjs +11 -0
  32. package/build/cjs/{chunk-F2WUXH2W.cjs.map → chunk-GUV4HDHF.cjs.map} +1 -1
  33. package/build/cjs/{chunk-MZPKV7JC.cjs → chunk-HN6TTUZV.cjs} +4 -4
  34. package/build/cjs/{chunk-MZPKV7JC.cjs.map → chunk-HN6TTUZV.cjs.map} +1 -1
  35. package/build/cjs/chunk-HY74JMBD.cjs +11 -0
  36. package/build/cjs/{chunk-XBIJFLHM.cjs.map → chunk-HY74JMBD.cjs.map} +1 -1
  37. package/build/cjs/{chunk-LBWASTWS.cjs → chunk-KPLJJZUF.cjs} +12 -12
  38. package/build/cjs/{chunk-LBWASTWS.cjs.map → chunk-KPLJJZUF.cjs.map} +1 -1
  39. package/build/cjs/{chunk-ZGW2CPEY.cjs → chunk-MXHPDZRJ.cjs} +11 -11
  40. package/build/cjs/{chunk-ZGW2CPEY.cjs.map → chunk-MXHPDZRJ.cjs.map} +1 -1
  41. package/build/cjs/chunk-NE7GRF7G.cjs +366 -0
  42. package/build/cjs/chunk-NE7GRF7G.cjs.map +1 -0
  43. package/build/cjs/chunk-OXPFQGCX.cjs +11 -0
  44. package/build/cjs/{chunk-JOVWU475.cjs.map → chunk-OXPFQGCX.cjs.map} +1 -1
  45. package/build/cjs/chunk-QKRCTJ73.cjs +11 -0
  46. package/build/cjs/{chunk-DUQXYBH2.cjs.map → chunk-QKRCTJ73.cjs.map} +1 -1
  47. package/build/cjs/{chunk-RHIG474S.cjs → chunk-SUQDMDNS.cjs} +4 -4
  48. package/build/cjs/{chunk-RHIG474S.cjs.map → chunk-SUQDMDNS.cjs.map} +1 -1
  49. package/build/cjs/{chunk-7NQZT4VM.cjs → chunk-U7OJ52TT.cjs} +4 -4
  50. package/build/cjs/{chunk-7NQZT4VM.cjs.map → chunk-U7OJ52TT.cjs.map} +1 -1
  51. package/build/cjs/{chunk-FIM67ZE2.cjs → chunk-VEICVFRI.cjs} +51 -51
  52. package/build/cjs/{chunk-FIM67ZE2.cjs.map → chunk-VEICVFRI.cjs.map} +1 -1
  53. package/build/cjs/chunk-WCXGGFZ6.cjs +11 -0
  54. package/build/cjs/{chunk-VA2HOEKY.cjs.map → chunk-WCXGGFZ6.cjs.map} +1 -1
  55. package/build/cjs/{chunk-53QFFROW.cjs → chunk-XARSK3Q7.cjs} +4 -4
  56. package/build/cjs/{chunk-53QFFROW.cjs.map → chunk-XARSK3Q7.cjs.map} +1 -1
  57. package/build/cjs/public/experimental/action-form.cjs +8 -8
  58. package/build/cjs/public/experimental/action-form.css +34 -38
  59. package/build/cjs/public/experimental/action-form.css.map +1 -1
  60. package/build/cjs/public/experimental/document-viewer.cjs +4 -4
  61. package/build/cjs/public/experimental/email-viewer.cjs +3 -3
  62. package/build/cjs/public/experimental/excel-viewer.cjs +3 -3
  63. package/build/cjs/public/experimental/filter-list.cjs +17 -17
  64. package/build/cjs/public/experimental/filter-list.css +34 -38
  65. package/build/cjs/public/experimental/filter-list.css.map +1 -1
  66. package/build/cjs/public/experimental/image-viewer.cjs +3 -3
  67. package/build/cjs/public/experimental/markdown-renderer.cjs +3 -3
  68. package/build/cjs/public/experimental/object-table.cjs +12 -12
  69. package/build/cjs/public/experimental/object-table.css +34 -38
  70. package/build/cjs/public/experimental/object-table.css.map +1 -1
  71. package/build/cjs/public/experimental/pdf-viewer.cjs +7 -7
  72. package/build/cjs/public/experimental/tiff-renderer.cjs +3 -3
  73. package/build/cjs/public/experimental/video-viewer.cjs +3 -3
  74. package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
  75. package/build/cjs/public/experimental.cjs +51 -51
  76. package/build/cjs/public/experimental.css +34 -38
  77. package/build/cjs/public/experimental.css.map +1 -1
  78. package/build/esm/shared/calendar/DateCalendar.js +27 -4
  79. package/build/esm/shared/calendar/DateCalendar.js.map +1 -1
  80. package/build/esm/shared/calendar/DatePicker.js +4 -17
  81. package/build/esm/shared/calendar/DatePicker.js.map +1 -1
  82. package/build/esm/shared/calendar/DatePicker.module.css +0 -5
  83. package/build/esm/shared/calendar/DateRangePicker.js +4 -2
  84. package/build/esm/shared/calendar/DateRangePicker.js.map +1 -1
  85. package/build/esm/shared/calendar/TimePicker.js +24 -45
  86. package/build/esm/shared/calendar/TimePicker.js.map +1 -1
  87. package/build/esm/util/UserAgent.js +1 -1
  88. package/build/esm/util/UserAgent.js.map +1 -1
  89. package/build/types/shared/calendar/DateCalendar.d.ts +2 -2
  90. package/build/types/shared/calendar/DateCalendar.d.ts.map +1 -1
  91. package/build/types/shared/calendar/DatePicker.d.ts.map +1 -1
  92. package/build/types/shared/calendar/TimePicker.d.ts.map +1 -1
  93. package/package.json +8 -8
  94. package/build/cjs/DateCalendar-7E5ZCI7U.css.map +0 -1
  95. package/build/cjs/DateRangeCalendar-R3RYMAD4.css.map +0 -1
  96. package/build/cjs/DateRangeCalendar-TC7G2J2D.cjs +0 -12
  97. package/build/cjs/chunk-DUQXYBH2.cjs +0 -11
  98. package/build/cjs/chunk-F2WUXH2W.cjs +0 -11
  99. package/build/cjs/chunk-JBRNNWYC.cjs +0 -197
  100. package/build/cjs/chunk-JBRNNWYC.cjs.map +0 -1
  101. package/build/cjs/chunk-JOVWU475.cjs +0 -11
  102. package/build/cjs/chunk-TIFUKHW7.cjs.map +0 -1
  103. package/build/cjs/chunk-VA2HOEKY.cjs +0 -11
  104. package/build/cjs/chunk-XA3S7YAO.cjs.map +0 -1
  105. package/build/cjs/chunk-XBIJFLHM.cjs +0 -11
@@ -34,67 +34,52 @@ export const TimePicker = /*#__PURE__*/React.memo(function ({
34
34
  label = "Time"
35
35
  }) {
36
36
  const valueTimestamp = value?.getTime() ?? null;
37
- // Keep typed text locally so users can enter temporarily invalid values
38
- // like "99" or "" without immediately mutating/clamping the parent Date.
39
- const [internalSegments, setInternalSegments] = useState(() => createInternalSegments(valueTimestamp, segmentsFromTimestamp(valueTimestamp)));
40
37
  const valueSegments = useMemo(() => segmentsFromTimestamp(valueTimestamp), [valueTimestamp]);
41
-
42
- // Track which external value this internal text was derived from. If the
43
- // parent commits a different Date, ignore stale internal text and render
44
- // from the new value instead.
45
- const activeSegments = internalSegments.valueTimestamp === valueTimestamp ? internalSegments : createInternalSegments(valueTimestamp, valueSegments);
46
- const hourText = activeSegments.hours;
47
- const minuteText = activeSegments.minutes;
38
+ // draftSegments always holds the displayed text. It is reset to
39
+ // valueSegments whenever the controlled value changes, so the parent
40
+ // Date is the source of truth once an edit is committed or discarded.
41
+ const [draftSegments, setDraftSegments] = useState(valueSegments);
42
+ const [prevSegments, setPrevSegments] = useState(valueSegments);
43
+ if (prevSegments.hours !== valueSegments.hours || prevSegments.minutes !== valueSegments.minutes) {
44
+ setPrevSegments(valueSegments);
45
+ setDraftSegments(valueSegments);
46
+ }
47
+ const hourText = draftSegments.hours;
48
+ const minuteText = draftSegments.minutes;
48
49
  const hourInvalid = isSegmentInvalid(hourText, "hours");
49
50
  const minuteInvalid = isSegmentInvalid(minuteText, "minutes");
51
+ const handleSegmentChange = useCallback((segment, nextText) => {
52
+ setDraftSegments(prev => replaceSegmentText(prev, {
53
+ segment,
54
+ nextText
55
+ }));
56
+ }, []);
50
57
  const emitChange = useCallback((hours, minutes) => {
51
58
  const nextDate = value != null ? new Date(value.getTime()) : new Date();
52
59
  nextDate.setHours(hours, minutes, 0, 0);
53
60
  onChange?.(nextDate);
54
61
  }, [onChange, value]);
55
- const handleSegmentChange = useCallback((segment, nextText) => {
56
- setInternalSegments({
57
- valueTimestamp,
58
- ...replaceSegmentText({
59
- hours: hourText,
60
- minutes: minuteText
61
- }, {
62
- segment,
63
- nextText
64
- })
65
- });
66
- }, [hourText, minuteText, valueTimestamp]);
67
62
  const handleSegmentBlur = useCallback((segment, text) => {
68
63
  const parsedSegment = parseNumber(text);
69
64
  if (parsedSegment == null) {
70
65
  // Non-numeric text cannot be converted into a valid time segment, so
71
- // restore the displayed value instead of emitting an arbitrary Date.
72
- setInternalSegments(createInternalSegments(valueTimestamp, valueSegments));
66
+ // restore the controlled value instead of emitting an arbitrary Date.
67
+ setDraftSegments(valueSegments);
73
68
  return;
74
69
  }
75
70
  const clampedSegment = clampSegment(parsedSegment, segment);
76
- const nextSegments = replaceSegmentText({
77
- hours: hourText,
78
- minutes: minuteText
79
- }, {
71
+ setDraftSegments(prev => replaceSegmentText(prev, {
80
72
  segment,
81
73
  nextText: formatSegment(clampedSegment, segment)
82
- });
83
- // Only the blurred segment should commit. If the other segment is
84
- // currently invalid, preserve the committed value for that segment.
85
- const nextHours = parseSegment(nextSegments.hours, "hours") ?? Number(valueSegments.hours);
86
- const nextMinutes = parseSegment(nextSegments.minutes, "minutes") ?? Number(valueSegments.minutes);
87
- setInternalSegments({
88
- valueTimestamp,
89
- hours: formatSegment(nextHours, "hours"),
90
- minutes: formatSegment(nextMinutes, "minutes")
91
- });
74
+ }));
92
75
  const currentHours = Number(valueSegments.hours);
93
76
  const currentMinutes = Number(valueSegments.minutes);
77
+ const nextHours = segment === "hours" ? clampedSegment : currentHours;
78
+ const nextMinutes = segment === "minutes" ? clampedSegment : currentMinutes;
94
79
  if (nextHours !== currentHours || nextMinutes !== currentMinutes) {
95
80
  emitChange(nextHours, nextMinutes);
96
81
  }
97
- }, [emitChange, hourText, minuteText, valueTimestamp, valueSegments]);
82
+ }, [emitChange, valueSegments]);
98
83
  const handleHourChange = useCallback(nextText => handleSegmentChange("hours", nextText), [handleSegmentChange]);
99
84
  const handleMinuteChange = useCallback(nextText => handleSegmentChange("minutes", nextText), [handleSegmentChange]);
100
85
  const handleHourBlur = useCallback(() => handleSegmentBlur("hours", hourText), [handleSegmentBlur, hourText]);
@@ -128,12 +113,6 @@ export const TimePicker = /*#__PURE__*/React.memo(function ({
128
113
  "aria-invalid": minuteInvalid || undefined
129
114
  }));
130
115
  });
131
- function createInternalSegments(valueTimestamp, segments) {
132
- return {
133
- valueTimestamp,
134
- ...segments
135
- };
136
- }
137
116
  function replaceSegmentText(segments, {
138
117
  segment,
139
118
  nextText
@@ -1 +1 @@
1
- {"version":3,"file":"TimePicker.js","names":["Input","React","useCallback","useMemo","useState","styles","NUMERIC_INPUT_PATTERN","SEGMENT_LIMITS","hours","min","max","minutes","TimePicker","memo","value","onChange","label","valueTimestamp","getTime","internalSegments","setInternalSegments","createInternalSegments","segmentsFromTimestamp","valueSegments","activeSegments","hourText","minuteText","hourInvalid","isSegmentInvalid","minuteInvalid","emitChange","nextDate","Date","setHours","handleSegmentChange","segment","nextText","replaceSegmentText","handleSegmentBlur","text","parsedSegment","parseNumber","clampedSegment","clampSegment","nextSegments","formatSegment","nextHours","parseSegment","Number","nextMinutes","currentHours","currentMinutes","handleHourChange","handleMinuteChange","handleHourBlur","handleMinuteBlur","createElement","className","osdkTimePickerRoot","role","type","inputMode","pattern","onValueChange","onBlur","osdkTimePickerInput","undefined","osdkTimePickerSeparator","segments","getHours","getMinutes","String","padStart","test","parsed","isNaN","Math"],"sources":["TimePicker.tsx"],"sourcesContent":["/*\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, useMemo, useState } from \"react\";\nimport styles from \"./TimePicker.module.css\";\n\nexport interface TimePickerProps {\n value: Date | null;\n onChange?: (newTime: Date) => void;\n label?: string;\n}\n\ntype TimeSegment = \"hours\" | \"minutes\";\ntype TimeSegments = Record<TimeSegment, string>;\n\ninterface InternalSegments extends TimeSegments {\n valueTimestamp: number | null;\n}\n\nconst NUMERIC_INPUT_PATTERN = \"[0-9]*\";\n\nconst SEGMENT_LIMITS: Record<TimeSegment, { min: number; max: number }> = {\n hours: { min: 0, max: 23 },\n minutes: { min: 0, max: 59 },\n} as const;\n\nexport const TimePicker: React.NamedExoticComponent<TimePickerProps> = React\n .memo(function TimePickerFn({\n value,\n onChange,\n label = \"Time\",\n }: TimePickerProps): React.ReactElement {\n const valueTimestamp = value?.getTime() ?? null;\n // Keep typed text locally so users can enter temporarily invalid values\n // like \"99\" or \"\" without immediately mutating/clamping the parent Date.\n const [internalSegments, setInternalSegments] = useState<InternalSegments>(\n () =>\n createInternalSegments(\n valueTimestamp,\n segmentsFromTimestamp(valueTimestamp),\n ),\n );\n const valueSegments = useMemo(\n () => segmentsFromTimestamp(valueTimestamp),\n [valueTimestamp],\n );\n\n // Track which external value this internal text was derived from. If the\n // parent commits a different Date, ignore stale internal text and render\n // from the new value instead.\n const activeSegments = internalSegments.valueTimestamp === valueTimestamp\n ? internalSegments\n : createInternalSegments(valueTimestamp, valueSegments);\n const hourText = activeSegments.hours;\n const minuteText = activeSegments.minutes;\n const hourInvalid = isSegmentInvalid(hourText, \"hours\");\n const minuteInvalid = isSegmentInvalid(minuteText, \"minutes\");\n\n const emitChange = useCallback(\n (hours: number, minutes: number) => {\n const nextDate = value != null ? new Date(value.getTime()) : new Date();\n nextDate.setHours(hours, minutes, 0, 0);\n onChange?.(nextDate);\n },\n [onChange, value],\n );\n\n const handleSegmentChange = useCallback(\n (segment: TimeSegment, nextText: string) => {\n setInternalSegments({\n valueTimestamp,\n ...replaceSegmentText(\n { hours: hourText, minutes: minuteText },\n { segment, nextText },\n ),\n });\n },\n [hourText, minuteText, valueTimestamp],\n );\n\n const handleSegmentBlur = useCallback(\n (segment: TimeSegment, text: string) => {\n const parsedSegment = parseNumber(text);\n if (parsedSegment == null) {\n // Non-numeric text cannot be converted into a valid time segment, so\n // restore the displayed value instead of emitting an arbitrary Date.\n setInternalSegments(\n createInternalSegments(valueTimestamp, valueSegments),\n );\n return;\n }\n\n const clampedSegment = clampSegment(parsedSegment, segment);\n const nextSegments = replaceSegmentText(\n { hours: hourText, minutes: minuteText },\n { segment, nextText: formatSegment(clampedSegment, segment) },\n );\n // Only the blurred segment should commit. If the other segment is\n // currently invalid, preserve the committed value for that segment.\n const nextHours = parseSegment(nextSegments.hours, \"hours\")\n ?? Number(valueSegments.hours);\n const nextMinutes = parseSegment(nextSegments.minutes, \"minutes\")\n ?? Number(valueSegments.minutes);\n\n setInternalSegments({\n valueTimestamp,\n hours: formatSegment(nextHours, \"hours\"),\n minutes: formatSegment(nextMinutes, \"minutes\"),\n });\n\n const currentHours = Number(valueSegments.hours);\n const currentMinutes = Number(valueSegments.minutes);\n if (nextHours !== currentHours || nextMinutes !== currentMinutes) {\n emitChange(nextHours, nextMinutes);\n }\n },\n [\n emitChange,\n hourText,\n minuteText,\n valueTimestamp,\n valueSegments,\n ],\n );\n\n const handleHourChange = useCallback(\n (nextText: string) => handleSegmentChange(\"hours\", nextText),\n [handleSegmentChange],\n );\n const handleMinuteChange = useCallback(\n (nextText: string) => handleSegmentChange(\"minutes\", nextText),\n [handleSegmentChange],\n );\n const handleHourBlur = useCallback(\n () => handleSegmentBlur(\"hours\", hourText),\n [handleSegmentBlur, hourText],\n );\n const handleMinuteBlur = useCallback(\n () => handleSegmentBlur(\"minutes\", minuteText),\n [handleSegmentBlur, minuteText],\n );\n\n return (\n <div\n className={styles.osdkTimePickerRoot}\n role=\"group\"\n aria-label={label}\n >\n <Input\n type=\"text\"\n inputMode=\"numeric\"\n pattern={NUMERIC_INPUT_PATTERN}\n value={hourText}\n onValueChange={handleHourChange}\n onBlur={handleHourBlur}\n className={styles.osdkTimePickerInput}\n aria-label={`${label} hours`}\n aria-invalid={hourInvalid || undefined}\n />\n <span className={styles.osdkTimePickerSeparator} aria-hidden=\"true\">\n :\n </span>\n <Input\n type=\"text\"\n inputMode=\"numeric\"\n pattern={NUMERIC_INPUT_PATTERN}\n value={minuteText}\n onValueChange={handleMinuteChange}\n onBlur={handleMinuteBlur}\n className={styles.osdkTimePickerInput}\n aria-label={`${label} minutes`}\n aria-invalid={minuteInvalid || undefined}\n />\n </div>\n );\n });\n\nfunction createInternalSegments(\n valueTimestamp: number | null,\n segments: TimeSegments,\n): InternalSegments {\n return { valueTimestamp, ...segments };\n}\n\nfunction replaceSegmentText(\n segments: TimeSegments,\n {\n segment,\n nextText,\n }: {\n segment: TimeSegment;\n nextText: string;\n },\n): TimeSegments {\n return {\n ...segments,\n [segment]: nextText,\n };\n}\n\nfunction segmentsFromTimestamp(valueTimestamp: number | null): TimeSegments {\n if (valueTimestamp == null) {\n return {\n hours: formatSegment(0, \"hours\"),\n minutes: formatSegment(0, \"minutes\"),\n };\n }\n const value = new Date(valueTimestamp);\n return {\n hours: formatSegment(value.getHours(), \"hours\"),\n minutes: formatSegment(value.getMinutes(), \"minutes\"),\n };\n}\n\nfunction formatSegment(value: number, segment: TimeSegment): string {\n // Hours stay compact while minutes stay two digits so the HH:mm control\n // remains easy to scan.\n return segment === \"hours\" ? String(value) : String(value).padStart(2, \"0\");\n}\n\nfunction parseNumber(text: string): number | undefined {\n if (!/^\\d{1,2}$/.test(text)) {\n return undefined;\n }\n const parsed = Number(text);\n return Number.isNaN(parsed) ? undefined : parsed;\n}\n\nfunction parseSegment(\n text: string,\n segment: TimeSegment,\n): number | undefined {\n const parsed = parseNumber(text);\n if (parsed == null) {\n return undefined;\n }\n const { min, max } = SEGMENT_LIMITS[segment];\n return parsed >= min && parsed <= max ? parsed : undefined;\n}\n\nfunction isSegmentInvalid(text: string, segment: TimeSegment): boolean {\n return parseSegment(text, segment) == null;\n}\n\nfunction clampSegment(value: number, segment: TimeSegment): number {\n const { min, max } = SEGMENT_LIMITS[segment];\n return Math.min(Math.max(value, min), max);\n}\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"TimePicker.js","names":["Input","React","useCallback","useMemo","useState","styles","NUMERIC_INPUT_PATTERN","SEGMENT_LIMITS","hours","min","max","minutes","TimePicker","memo","value","onChange","label","valueTimestamp","getTime","valueSegments","segmentsFromTimestamp","draftSegments","setDraftSegments","prevSegments","setPrevSegments","hourText","minuteText","hourInvalid","isSegmentInvalid","minuteInvalid","handleSegmentChange","segment","nextText","prev","replaceSegmentText","emitChange","nextDate","Date","setHours","handleSegmentBlur","text","parsedSegment","parseNumber","clampedSegment","clampSegment","formatSegment","currentHours","Number","currentMinutes","nextHours","nextMinutes","handleHourChange","handleMinuteChange","handleHourBlur","handleMinuteBlur","createElement","className","osdkTimePickerRoot","role","type","inputMode","pattern","onValueChange","onBlur","osdkTimePickerInput","undefined","osdkTimePickerSeparator","segments","getHours","getMinutes","String","padStart","test","parsed","isNaN","parseSegment","Math"],"sources":["TimePicker.tsx"],"sourcesContent":["/*\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, useMemo, useState } from \"react\";\nimport styles from \"./TimePicker.module.css\";\n\nexport interface TimePickerProps {\n value: Date | null;\n onChange?: (newTime: Date) => void;\n label?: string;\n}\n\ntype TimeSegment = \"hours\" | \"minutes\";\ntype TimeSegments = Record<TimeSegment, string>;\n\nconst NUMERIC_INPUT_PATTERN = \"[0-9]*\";\n\nconst SEGMENT_LIMITS: Record<TimeSegment, { min: number; max: number }> = {\n hours: { min: 0, max: 23 },\n minutes: { min: 0, max: 59 },\n} as const;\n\nexport const TimePicker: React.NamedExoticComponent<TimePickerProps> = React\n .memo(function TimePickerFn({\n value,\n onChange,\n label = \"Time\",\n }: TimePickerProps): React.ReactElement {\n const valueTimestamp = value?.getTime() ?? null;\n const valueSegments = useMemo(\n () => segmentsFromTimestamp(valueTimestamp),\n [valueTimestamp],\n );\n // draftSegments always holds the displayed text. It is reset to\n // valueSegments whenever the controlled value changes, so the parent\n // Date is the source of truth once an edit is committed or discarded.\n const [draftSegments, setDraftSegments] = useState(valueSegments);\n const [prevSegments, setPrevSegments] = useState(valueSegments);\n if (\n prevSegments.hours !== valueSegments.hours\n || prevSegments.minutes !== valueSegments.minutes\n ) {\n setPrevSegments(valueSegments);\n setDraftSegments(valueSegments);\n }\n\n const hourText = draftSegments.hours;\n const minuteText = draftSegments.minutes;\n const hourInvalid = isSegmentInvalid(hourText, \"hours\");\n const minuteInvalid = isSegmentInvalid(minuteText, \"minutes\");\n\n const handleSegmentChange = useCallback(\n (segment: TimeSegment, nextText: string) => {\n setDraftSegments((prev) =>\n replaceSegmentText(prev, { segment, nextText })\n );\n },\n [],\n );\n\n const emitChange = useCallback(\n (hours: number, minutes: number) => {\n const nextDate = value != null ? new Date(value.getTime()) : new Date();\n nextDate.setHours(hours, minutes, 0, 0);\n onChange?.(nextDate);\n },\n [onChange, value],\n );\n\n const handleSegmentBlur = useCallback(\n (segment: TimeSegment, text: string) => {\n const parsedSegment = parseNumber(text);\n if (parsedSegment == null) {\n // Non-numeric text cannot be converted into a valid time segment, so\n // restore the controlled value instead of emitting an arbitrary Date.\n setDraftSegments(valueSegments);\n return;\n }\n\n const clampedSegment = clampSegment(parsedSegment, segment);\n setDraftSegments((prev) =>\n replaceSegmentText(prev, {\n segment,\n nextText: formatSegment(clampedSegment, segment),\n })\n );\n\n const currentHours = Number(valueSegments.hours);\n const currentMinutes = Number(valueSegments.minutes);\n const nextHours = segment === \"hours\" ? clampedSegment : currentHours;\n const nextMinutes = segment === \"minutes\"\n ? clampedSegment\n : currentMinutes;\n if (nextHours !== currentHours || nextMinutes !== currentMinutes) {\n emitChange(nextHours, nextMinutes);\n }\n },\n [emitChange, valueSegments],\n );\n\n const handleHourChange = useCallback(\n (nextText: string) => handleSegmentChange(\"hours\", nextText),\n [handleSegmentChange],\n );\n const handleMinuteChange = useCallback(\n (nextText: string) => handleSegmentChange(\"minutes\", nextText),\n [handleSegmentChange],\n );\n const handleHourBlur = useCallback(\n () => handleSegmentBlur(\"hours\", hourText),\n [handleSegmentBlur, hourText],\n );\n const handleMinuteBlur = useCallback(\n () => handleSegmentBlur(\"minutes\", minuteText),\n [handleSegmentBlur, minuteText],\n );\n\n return (\n <div\n className={styles.osdkTimePickerRoot}\n role=\"group\"\n aria-label={label}\n >\n <Input\n type=\"text\"\n inputMode=\"numeric\"\n pattern={NUMERIC_INPUT_PATTERN}\n value={hourText}\n onValueChange={handleHourChange}\n onBlur={handleHourBlur}\n className={styles.osdkTimePickerInput}\n aria-label={`${label} hours`}\n aria-invalid={hourInvalid || undefined}\n />\n <span className={styles.osdkTimePickerSeparator} aria-hidden=\"true\">\n :\n </span>\n <Input\n type=\"text\"\n inputMode=\"numeric\"\n pattern={NUMERIC_INPUT_PATTERN}\n value={minuteText}\n onValueChange={handleMinuteChange}\n onBlur={handleMinuteBlur}\n className={styles.osdkTimePickerInput}\n aria-label={`${label} minutes`}\n aria-invalid={minuteInvalid || undefined}\n />\n </div>\n );\n });\n\nfunction replaceSegmentText(\n segments: TimeSegments,\n {\n segment,\n nextText,\n }: {\n segment: TimeSegment;\n nextText: string;\n },\n): TimeSegments {\n return {\n ...segments,\n [segment]: nextText,\n };\n}\n\nfunction segmentsFromTimestamp(valueTimestamp: number | null): TimeSegments {\n if (valueTimestamp == null) {\n return {\n hours: formatSegment(0, \"hours\"),\n minutes: formatSegment(0, \"minutes\"),\n };\n }\n const value = new Date(valueTimestamp);\n return {\n hours: formatSegment(value.getHours(), \"hours\"),\n minutes: formatSegment(value.getMinutes(), \"minutes\"),\n };\n}\n\nfunction formatSegment(value: number, segment: TimeSegment): string {\n // Hours stay compact while minutes stay two digits so the HH:mm control\n // remains easy to scan.\n return segment === \"hours\" ? String(value) : String(value).padStart(2, \"0\");\n}\n\nfunction parseNumber(text: string): number | undefined {\n if (!/^\\d{1,2}$/.test(text)) {\n return undefined;\n }\n const parsed = Number(text);\n return Number.isNaN(parsed) ? undefined : parsed;\n}\n\nfunction parseSegment(text: string, segment: TimeSegment): number | undefined {\n const parsed = parseNumber(text);\n if (parsed == null) {\n return undefined;\n }\n const { min, max } = SEGMENT_LIMITS[segment];\n return parsed >= min && parsed <= max ? parsed : undefined;\n}\n\nfunction isSegmentInvalid(text: string, segment: TimeSegment): boolean {\n return parseSegment(text, segment) == null;\n}\n\nfunction clampSegment(value: number, segment: TimeSegment): number {\n const { min, max } = SEGMENT_LIMITS[segment];\n return Math.min(Math.max(value, min), max);\n}\n"],"mappings":"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","ignoreList":[]}
@@ -9912,11 +9912,6 @@
9912
9912
  outline: none;
9913
9913
  }
9914
9914
 
9915
- .DatePicker-module__osdkDatetimeTimeFooter___BJGF9UWo {
9916
- display: flex;
9917
- justify-content: center;
9918
- }
9919
-
9920
9915
 
9921
9916
  /* shared/calendar/DatePickerCommon.module.css */
9922
9917
  /* Bare input inside a date picker wrapper */
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- const PACKAGE_USER_AGENT = `osdk-react-components/${"0.21.0"}`;
17
+ const PACKAGE_USER_AGENT = `osdk-react-components/${"0.21.1-main-8965bdf6a0c540d35214e7ff7328defbf04cf4c8"}`;
18
18
  export function componentUserAgent(componentName) {
19
19
  return `${PACKAGE_USER_AGENT}/${componentName}`;
20
20
  }
@@ -1 +1 @@
1
- {"version":3,"file":"UserAgent.js","names":["PACKAGE_USER_AGENT","componentUserAgent","componentName"],"sources":["UserAgent.ts"],"sourcesContent":["/*\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\nconst PACKAGE_USER_AGENT =\n `osdk-react-components/${process.env.PACKAGE_VERSION}`;\n\nexport function componentUserAgent(componentName: string): string {\n return `${PACKAGE_USER_AGENT}/${componentName}`;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,kBAAkB,GACtB,mCAAsD;AAExD,OAAO,SAASC,kBAAkBA,CAACC,aAAqB,EAAU;EAChE,OAAO,GAAGF,kBAAkB,IAAIE,aAAa,EAAE;AACjD","ignoreList":[]}
1
+ {"version":3,"file":"UserAgent.js","names":["PACKAGE_USER_AGENT","componentUserAgent","componentName"],"sources":["UserAgent.ts"],"sourcesContent":["/*\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\nconst PACKAGE_USER_AGENT =\n `osdk-react-components/${process.env.PACKAGE_VERSION}`;\n\nexport function componentUserAgent(componentName: string): string {\n return `${PACKAGE_USER_AGENT}/${componentName}`;\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAMA,kBAAkB,GACtB,iFAAsD;AAExD,OAAO,SAASC,kBAAkBA,CAACC,aAAqB,EAAU;EAChE,OAAO,GAAGF,kBAAkB,IAAIE,aAAa,EAAE;AACjD","ignoreList":[]}
@@ -2,7 +2,7 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
- var chunkJBRNNWYC_cjs = require('./chunk-JBRNNWYC.cjs');
5
+ var chunkNE7GRF7G_cjs = require('./chunk-NE7GRF7G.cjs');
6
6
  require('./chunk-MD4KDE44.cjs');
7
7
  require('./chunk-Q2W6GYRK.cjs');
8
8
 
@@ -10,15 +10,15 @@ require('./chunk-Q2W6GYRK.cjs');
10
10
 
11
11
  Object.defineProperty(exports, "CALENDAR_COMPONENTS", {
12
12
  enumerable: true,
13
- get: function () { return chunkJBRNNWYC_cjs.CALENDAR_COMPONENTS; }
13
+ get: function () { return chunkNE7GRF7G_cjs.CALENDAR_COMPONENTS; }
14
14
  });
15
15
  Object.defineProperty(exports, "CLASS_NAMES", {
16
16
  enumerable: true,
17
- get: function () { return chunkJBRNNWYC_cjs.CLASS_NAMES; }
17
+ get: function () { return chunkNE7GRF7G_cjs.CLASS_NAMES; }
18
18
  });
19
19
  Object.defineProperty(exports, "default", {
20
20
  enumerable: true,
21
- get: function () { return chunkJBRNNWYC_cjs.DateCalendar; }
21
+ get: function () { return chunkNE7GRF7G_cjs.DateCalendar; }
22
22
  });
23
- //# sourceMappingURL=DateCalendar-OLI4WF2E.cjs.map
24
- //# sourceMappingURL=DateCalendar-OLI4WF2E.cjs.map
23
+ //# sourceMappingURL=DateCalendar-PZO23MYM.cjs.map
24
+ //# sourceMappingURL=DateCalendar-PZO23MYM.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"DateCalendar-OLI4WF2E.cjs"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"DateCalendar-PZO23MYM.cjs"}
@@ -275,4 +275,38 @@
275
275
  margin-inline: calc(var(--osdk-datetime-popover-padding) * -1);
276
276
  border-block-start: var(--osdk-time-picker-border-top);
277
277
  }
278
- /*# sourceMappingURL=DateCalendar-7E5ZCI7U.css.map */
278
+
279
+ /* src/shared/calendar/TimePicker.module.css */
280
+ .osdkTimePickerRoot {
281
+ display: inline-flex;
282
+ align-items: center;
283
+ gap: var(--osdk-surface-spacing);
284
+ }
285
+ .osdkTimePickerInput {
286
+ width: calc(var(--osdk-surface-spacing) * 10);
287
+ font-family: var(--osdk-time-picker-input-font-family);
288
+ font-size: var(--osdk-time-picker-input-font-size);
289
+ line-height: var( --osdk-input-line-height, var(--osdk-typography-line-height-default) );
290
+ text-align: center;
291
+ padding: var(--osdk-time-picker-input-padding);
292
+ border: var(--osdk-time-picker-input-border);
293
+ border-radius: var(--osdk-time-picker-input-border-radius);
294
+ background: var(--osdk-time-picker-input-bg);
295
+ color: var(--osdk-time-picker-input-color);
296
+ box-sizing: border-box;
297
+ &:focus {
298
+ border-color: var(--osdk-time-picker-input-border-color-focus);
299
+ outline: var(--osdk-time-picker-input-focus-outline);
300
+ outline-offset: var(--osdk-time-picker-input-focus-offset);
301
+ }
302
+ &[aria-invalid] {
303
+ border-color: var(--osdk-input-border-color-error);
304
+ }
305
+ }
306
+ .osdkTimePickerSeparator {
307
+ color: var(--osdk-typography-color-muted);
308
+ font-family: var(--osdk-time-picker-input-font-family);
309
+ font-size: var(--osdk-time-picker-input-font-size);
310
+ line-height: var( --osdk-input-line-height, var(--osdk-typography-line-height-default) );
311
+ }
312
+ /*# sourceMappingURL=DateCalendar-XTX3RI6O.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/base-components/action-button/ActionButton.module.css","../../src/shared/calendar/DateCalendar.module.css","../../src/shared/calendar/TimePicker.module.css"],"sourcesContent":["/*\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.button {\n min-height: var(--osdk-button-min-height);\n padding: calc(var(--osdk-surface-spacing) * 1.5)\n calc(var(--osdk-surface-spacing) * 1.75);\n border: var(--osdk-button-border);\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-button-shadow);\n font-size: var(--osdk-typography-size-body-medium);\n cursor: pointer;\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n.secondaryButton {\n background-color: var(--osdk-button-secondary-bg);\n border-color: var(--osdk-button-secondary-border-color);\n color: var(--osdk-button-secondary-color);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-secondary-bg-hover);\n }\n\n &:active:not(:disabled) {\n background-color: var(--osdk-button-secondary-bg-active);\n }\n}\n\n.primaryButton {\n background-color: var(--osdk-button-primary-bg);\n border-color: var(--osdk-button-primary-border-color);\n color: var(--osdk-button-primary-color);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-primary-bg-hover);\n }\n\n &:active:not(:disabled) {\n background-color: var(--osdk-button-primary-bg-active);\n }\n}\n\n.minimalButton {\n background-color: var(--osdk-button-minimal-bg);\n border: var(--osdk-button-minimal-border);\n box-shadow: var(--osdk-button-minimal-shadow);\n color: var(--osdk-button-secondary-minimal-color);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-minimal-bg-hover);\n }\n\n &:active:not(:disabled) {\n background-color: var(--osdk-button-minimal-bg-active);\n }\n}\n\n.primaryButton.minimalButton {\n color: var(--osdk-button-primary-minimal-color);\n}\n","/* DateCalendar — DayPicker classNames.\n All values reference --osdk-datetime-calendar-* tokens defined in\n react-components-styles/tokens/datetime-picker.css. */\n\n.calendar {\n position: relative;\n width: 100%;\n font-family: var(--osdk-datetime-calendar-font-family);\n font-size: var(--osdk-datetime-calendar-font-size);\n}\n\n.calendarMonths {\n display: flex;\n gap: var(--osdk-datetime-calendar-months-gap);\n}\n\n.calendarMonthGrid {\n width: 100%;\n border-collapse: collapse;\n}\n\n.calendarWeekday {\n padding: var(--osdk-datetime-calendar-gap);\n font-size: var(--osdk-datetime-calendar-weekday-font-size);\n color: var(--osdk-datetime-calendar-weekday-color);\n text-align: center;\n width: var(--osdk-datetime-calendar-cell-size);\n}\n\n.calendarDay {\n position: relative;\n padding: var(--osdk-datetime-calendar-gap);\n text-align: center;\n}\n\n.calendarDayButton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--osdk-datetime-calendar-cell-size);\n height: var(--osdk-datetime-calendar-cell-size);\n border: none;\n border-radius: var(--osdk-datetime-calendar-day-border-radius);\n background: transparent;\n cursor: pointer;\n font: inherit;\n color: var(--osdk-datetime-calendar-day-color);\n\n &:hover {\n background: var(--osdk-datetime-calendar-day-hover-bg);\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\n\n &:active {\n background: var(--osdk-datetime-calendar-day-active-bg);\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\n\n &:focus-visible {\n outline: var(--osdk-datetime-calendar-focus-outline);\n outline-offset: -2px;\n }\n}\n\n/* :not([disabled]) bumps specificity to (0,4,0) — matching rdp's default\n .rdp-button:hover:not([disabled]):not(.rdp-day_selected) rule so our\n styles win by source order. Without this, rdp overrides the selected\n background on hover because we remap day_selected and its :not() always matches. */\n.calendarDayButton.calendarSelected {\n background: var(--osdk-datetime-calendar-selected-bg);\n color: var(--osdk-datetime-calendar-selected-color);\n\n &:hover:not([disabled]) {\n background: var(--osdk-datetime-calendar-selected-hover-bg);\n color: var(--osdk-datetime-calendar-selected-color);\n }\n\n &:active:not([disabled]) {\n color: var(--osdk-datetime-calendar-selected-color);\n }\n}\n\n.calendarDayButton.calendarToday {\n border: var(--osdk-datetime-calendar-today-border);\n}\n\n.calendarDayButton.calendarOutside {\n color: var(--osdk-datetime-calendar-outside-color);\n opacity: var(--osdk-datetime-calendar-outside-opacity);\n}\n\n.calendarDayButton.calendarDisabled {\n color: var(--osdk-datetime-calendar-disabled-color);\n cursor: default;\n\n &:hover {\n background: transparent;\n }\n}\n\n/* Range selection styles — shared base for start/end endpoints */\n.calendarRangeEndpoint {\n background: var(--osdk-datetime-calendar-selected-bg);\n color: var(--osdk-datetime-calendar-selected-color);\n\n &:hover:not([disabled]) {\n background: var(--osdk-datetime-calendar-selected-hover-bg);\n color: var(--osdk-datetime-calendar-selected-color);\n }\n\n &:active:not([disabled]) {\n color: var(--osdk-datetime-calendar-selected-color);\n }\n}\n\n/* Day buttons are inset by cell padding; paint the range on the table cell too\n so the range spans horizontal gaps while staying the same height as a day. */\n.calendarDay:has(.calendarRangeStart)::before,\n.calendarDay:has(.calendarRangeMiddle)::before,\n.calendarDay:has(.calendarRangeEnd)::before {\n content: \"\";\n position: absolute;\n inset-block: var(--osdk-datetime-calendar-gap);\n background: var(--osdk-datetime-calendar-range-middle-bg);\n pointer-events: none;\n}\n\n.calendarDay:has(.calendarRangeStart)::before {\n inset-inline-start: 50%;\n inset-inline-end: 0;\n}\n\n.calendarDay:has(.calendarRangeMiddle)::before {\n inset-inline: 0;\n}\n\n.calendarDay:has(.calendarRangeEnd)::before {\n inset-inline-start: 0;\n inset-inline-end: 50%;\n}\n\n.calendarDay:has(.calendarRangeStart.calendarRangeEnd)::before {\n content: none;\n}\n\n/* The table cell owns the translucent range fill. Keeping the middle button\n transparent avoids alpha-stacking the same token over itself. */\n.calendarDayButton.calendarRangeMiddle {\n background: transparent;\n color: var(--osdk-datetime-calendar-day-color);\n border-radius: 0;\n\n &:hover {\n background: transparent;\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\n\n &:active {\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\n}\n\n.calendarRangeFooter {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n column-gap: var(--osdk-datetime-calendar-months-gap);\n justify-items: center;\n padding-block-start: var(--osdk-time-picker-padding-top);\n}\n\n.calendarHidden {\n visibility: hidden;\n}\n\n/* Calendar navigation — dissolve the nav wrapper so buttons become\n direct flex children of the caption row. This lets order: -1 move\n the prev button before the dropdowns while next stays after. */\n.calendarNav {\n display: contents;\n}\n\n/* Shared nav button base — small, matching dropdown caret scale */\n.calendarNavButton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--osdk-datetime-calendar-nav-button-size);\n height: var(--osdk-datetime-calendar-nav-button-size);\n border: none;\n background: transparent;\n cursor: pointer;\n border-radius: var(--osdk-datetime-calendar-nav-button-border-radius);\n padding: 0;\n color: inherit;\n\n &:hover {\n background: var(--osdk-datetime-calendar-nav-button-hover-bg);\n }\n\n &:disabled {\n color: var(--osdk-datetime-calendar-nav-disabled-color);\n cursor: default;\n opacity: 1; /* Override browser default disabled opacity */\n\n &:hover {\n background: transparent;\n }\n }\n\n &:focus-visible {\n outline: var(--osdk-datetime-calendar-focus-outline);\n outline-offset: -1px;\n }\n}\n\n/* Hide the default SVG chevron icon — Blueprint icons rendered inline instead */\n.calendarChevron {\n display: none;\n}\n\n.calendarNavPrev {\n order: -1;\n}\n\n.calendarMonthCaption {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: var(--osdk-datetime-calendar-nav-button-size);\n}\n\n/* Visually hidden — used for accessibility-only text (caption label, dropdown labels) */\n.calendarVhidden {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n\n\n/* Caption dropdowns container */\n.calendarCaptionDropdowns {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-datetime-calendar-caption-gap);\n}\n\n/* Month/year selects — borderless, matching caption text weight */\n.calendarDropdown {\n /* Native selects otherwise reserve room for the longest option, which makes\n the month caret drift away from short month names like \"May\". */\n field-sizing: content;\n font-family: var(--osdk-datetime-calendar-font-family);\n font-size: var(--osdk-datetime-calendar-caption-font-size);\n font-weight: var(--osdk-datetime-calendar-caption-font-weight);\n color: inherit;\n background: transparent;\n border: none;\n padding: var(--osdk-datetime-calendar-dropdown-padding);\n cursor: pointer;\n border-radius: var(--osdk-datetime-calendar-dropdown-border-radius);\n\n &:focus-visible {\n outline: var(--osdk-datetime-calendar-focus-outline);\n outline-offset: 1px;\n }\n}\n\n\n.calendarTimeFooter {\n display: flex;\n justify-content: center;\n padding-block-start: var(--osdk-time-picker-padding-top);\n}\n\n.calendarActionBar {\n display: flex;\n justify-content: space-between;\n gap: var(--osdk-surface-spacing);\n padding-block-start: var(--osdk-time-picker-padding-top);\n padding-inline: var(--osdk-datetime-popover-padding);\n margin-block-start: var(--osdk-time-picker-margin-top);\n margin-inline: calc(var(--osdk-datetime-popover-padding) * -1);\n border-block-start: var(--osdk-time-picker-border-top);\n}\n","/* TimePicker — HH:mm control. Outer layout is owned by the parent. */\n\n.osdkTimePickerRoot {\n display: inline-flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n}\n\n.osdkTimePickerInput {\n width: calc(var(--osdk-surface-spacing) * 10);\n font-family: var(--osdk-time-picker-input-font-family);\n font-size: var(--osdk-time-picker-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n text-align: center;\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 &[aria-invalid] {\n border-color: var(--osdk-input-border-color-error);\n }\n}\n\n.osdkTimePickerSeparator {\n color: var(--osdk-typography-color-muted);\n font-family: var(--osdk-time-picker-input-font-family);\n font-size: var(--osdk-time-picker-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n}\n"],"mappings":"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","names":[]}
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var chunkKPLJJZUF_cjs = require('./chunk-KPLJJZUF.cjs');
4
+ require('./chunk-NE7GRF7G.cjs');
5
+ require('./chunk-MD4KDE44.cjs');
6
+ require('./chunk-Q2W6GYRK.cjs');
7
+
8
+
9
+
10
+ module.exports = chunkKPLJJZUF_cjs.DateRangeCalendar;
11
+ //# sourceMappingURL=DateRangeCalendar-2MBQAU3Z.cjs.map
12
+ //# sourceMappingURL=DateRangeCalendar-2MBQAU3Z.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"DateRangeCalendar-TC7G2J2D.cjs"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"DateRangeCalendar-2MBQAU3Z.cjs"}
@@ -275,4 +275,38 @@
275
275
  margin-inline: calc(var(--osdk-datetime-popover-padding) * -1);
276
276
  border-block-start: var(--osdk-time-picker-border-top);
277
277
  }
278
- /*# sourceMappingURL=DateRangeCalendar-R3RYMAD4.css.map */
278
+
279
+ /* src/shared/calendar/TimePicker.module.css */
280
+ .osdkTimePickerRoot {
281
+ display: inline-flex;
282
+ align-items: center;
283
+ gap: var(--osdk-surface-spacing);
284
+ }
285
+ .osdkTimePickerInput {
286
+ width: calc(var(--osdk-surface-spacing) * 10);
287
+ font-family: var(--osdk-time-picker-input-font-family);
288
+ font-size: var(--osdk-time-picker-input-font-size);
289
+ line-height: var( --osdk-input-line-height, var(--osdk-typography-line-height-default) );
290
+ text-align: center;
291
+ padding: var(--osdk-time-picker-input-padding);
292
+ border: var(--osdk-time-picker-input-border);
293
+ border-radius: var(--osdk-time-picker-input-border-radius);
294
+ background: var(--osdk-time-picker-input-bg);
295
+ color: var(--osdk-time-picker-input-color);
296
+ box-sizing: border-box;
297
+ &:focus {
298
+ border-color: var(--osdk-time-picker-input-border-color-focus);
299
+ outline: var(--osdk-time-picker-input-focus-outline);
300
+ outline-offset: var(--osdk-time-picker-input-focus-offset);
301
+ }
302
+ &[aria-invalid] {
303
+ border-color: var(--osdk-input-border-color-error);
304
+ }
305
+ }
306
+ .osdkTimePickerSeparator {
307
+ color: var(--osdk-typography-color-muted);
308
+ font-family: var(--osdk-time-picker-input-font-family);
309
+ font-size: var(--osdk-time-picker-input-font-size);
310
+ line-height: var( --osdk-input-line-height, var(--osdk-typography-line-height-default) );
311
+ }
312
+ /*# sourceMappingURL=DateRangeCalendar-R7KHDKJT.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/base-components/action-button/ActionButton.module.css","../../src/shared/calendar/DateCalendar.module.css","../../src/shared/calendar/TimePicker.module.css"],"sourcesContent":["/*\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.button {\n min-height: var(--osdk-button-min-height);\n padding: calc(var(--osdk-surface-spacing) * 1.5)\n calc(var(--osdk-surface-spacing) * 1.75);\n border: var(--osdk-button-border);\n border-radius: var(--osdk-surface-border-radius);\n box-shadow: var(--osdk-button-shadow);\n font-size: var(--osdk-typography-size-body-medium);\n cursor: pointer;\n\n &:focus-visible {\n outline: var(--osdk-focus-outline);\n outline-offset: var(--osdk-focus-visible-outline-offset);\n }\n\n &:disabled {\n opacity: 0.5;\n cursor: not-allowed;\n }\n}\n\n.secondaryButton {\n background-color: var(--osdk-button-secondary-bg);\n border-color: var(--osdk-button-secondary-border-color);\n color: var(--osdk-button-secondary-color);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-secondary-bg-hover);\n }\n\n &:active:not(:disabled) {\n background-color: var(--osdk-button-secondary-bg-active);\n }\n}\n\n.primaryButton {\n background-color: var(--osdk-button-primary-bg);\n border-color: var(--osdk-button-primary-border-color);\n color: var(--osdk-button-primary-color);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-primary-bg-hover);\n }\n\n &:active:not(:disabled) {\n background-color: var(--osdk-button-primary-bg-active);\n }\n}\n\n.minimalButton {\n background-color: var(--osdk-button-minimal-bg);\n border: var(--osdk-button-minimal-border);\n box-shadow: var(--osdk-button-minimal-shadow);\n color: var(--osdk-button-secondary-minimal-color);\n\n &:hover:not(:disabled) {\n background-color: var(--osdk-button-minimal-bg-hover);\n }\n\n &:active:not(:disabled) {\n background-color: var(--osdk-button-minimal-bg-active);\n }\n}\n\n.primaryButton.minimalButton {\n color: var(--osdk-button-primary-minimal-color);\n}\n","/* DateCalendar — DayPicker classNames.\n All values reference --osdk-datetime-calendar-* tokens defined in\n react-components-styles/tokens/datetime-picker.css. */\n\n.calendar {\n position: relative;\n width: 100%;\n font-family: var(--osdk-datetime-calendar-font-family);\n font-size: var(--osdk-datetime-calendar-font-size);\n}\n\n.calendarMonths {\n display: flex;\n gap: var(--osdk-datetime-calendar-months-gap);\n}\n\n.calendarMonthGrid {\n width: 100%;\n border-collapse: collapse;\n}\n\n.calendarWeekday {\n padding: var(--osdk-datetime-calendar-gap);\n font-size: var(--osdk-datetime-calendar-weekday-font-size);\n color: var(--osdk-datetime-calendar-weekday-color);\n text-align: center;\n width: var(--osdk-datetime-calendar-cell-size);\n}\n\n.calendarDay {\n position: relative;\n padding: var(--osdk-datetime-calendar-gap);\n text-align: center;\n}\n\n.calendarDayButton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--osdk-datetime-calendar-cell-size);\n height: var(--osdk-datetime-calendar-cell-size);\n border: none;\n border-radius: var(--osdk-datetime-calendar-day-border-radius);\n background: transparent;\n cursor: pointer;\n font: inherit;\n color: var(--osdk-datetime-calendar-day-color);\n\n &:hover {\n background: var(--osdk-datetime-calendar-day-hover-bg);\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\n\n &:active {\n background: var(--osdk-datetime-calendar-day-active-bg);\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\n\n &:focus-visible {\n outline: var(--osdk-datetime-calendar-focus-outline);\n outline-offset: -2px;\n }\n}\n\n/* :not([disabled]) bumps specificity to (0,4,0) — matching rdp's default\n .rdp-button:hover:not([disabled]):not(.rdp-day_selected) rule so our\n styles win by source order. Without this, rdp overrides the selected\n background on hover because we remap day_selected and its :not() always matches. */\n.calendarDayButton.calendarSelected {\n background: var(--osdk-datetime-calendar-selected-bg);\n color: var(--osdk-datetime-calendar-selected-color);\n\n &:hover:not([disabled]) {\n background: var(--osdk-datetime-calendar-selected-hover-bg);\n color: var(--osdk-datetime-calendar-selected-color);\n }\n\n &:active:not([disabled]) {\n color: var(--osdk-datetime-calendar-selected-color);\n }\n}\n\n.calendarDayButton.calendarToday {\n border: var(--osdk-datetime-calendar-today-border);\n}\n\n.calendarDayButton.calendarOutside {\n color: var(--osdk-datetime-calendar-outside-color);\n opacity: var(--osdk-datetime-calendar-outside-opacity);\n}\n\n.calendarDayButton.calendarDisabled {\n color: var(--osdk-datetime-calendar-disabled-color);\n cursor: default;\n\n &:hover {\n background: transparent;\n }\n}\n\n/* Range selection styles — shared base for start/end endpoints */\n.calendarRangeEndpoint {\n background: var(--osdk-datetime-calendar-selected-bg);\n color: var(--osdk-datetime-calendar-selected-color);\n\n &:hover:not([disabled]) {\n background: var(--osdk-datetime-calendar-selected-hover-bg);\n color: var(--osdk-datetime-calendar-selected-color);\n }\n\n &:active:not([disabled]) {\n color: var(--osdk-datetime-calendar-selected-color);\n }\n}\n\n/* Day buttons are inset by cell padding; paint the range on the table cell too\n so the range spans horizontal gaps while staying the same height as a day. */\n.calendarDay:has(.calendarRangeStart)::before,\n.calendarDay:has(.calendarRangeMiddle)::before,\n.calendarDay:has(.calendarRangeEnd)::before {\n content: \"\";\n position: absolute;\n inset-block: var(--osdk-datetime-calendar-gap);\n background: var(--osdk-datetime-calendar-range-middle-bg);\n pointer-events: none;\n}\n\n.calendarDay:has(.calendarRangeStart)::before {\n inset-inline-start: 50%;\n inset-inline-end: 0;\n}\n\n.calendarDay:has(.calendarRangeMiddle)::before {\n inset-inline: 0;\n}\n\n.calendarDay:has(.calendarRangeEnd)::before {\n inset-inline-start: 0;\n inset-inline-end: 50%;\n}\n\n.calendarDay:has(.calendarRangeStart.calendarRangeEnd)::before {\n content: none;\n}\n\n/* The table cell owns the translucent range fill. Keeping the middle button\n transparent avoids alpha-stacking the same token over itself. */\n.calendarDayButton.calendarRangeMiddle {\n background: transparent;\n color: var(--osdk-datetime-calendar-day-color);\n border-radius: 0;\n\n &:hover {\n background: transparent;\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\n\n &:active {\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\n}\n\n.calendarRangeFooter {\n display: grid;\n grid-template-columns: repeat(2, minmax(0, 1fr));\n column-gap: var(--osdk-datetime-calendar-months-gap);\n justify-items: center;\n padding-block-start: var(--osdk-time-picker-padding-top);\n}\n\n.calendarHidden {\n visibility: hidden;\n}\n\n/* Calendar navigation — dissolve the nav wrapper so buttons become\n direct flex children of the caption row. This lets order: -1 move\n the prev button before the dropdowns while next stays after. */\n.calendarNav {\n display: contents;\n}\n\n/* Shared nav button base — small, matching dropdown caret scale */\n.calendarNavButton {\n display: inline-flex;\n align-items: center;\n justify-content: center;\n width: var(--osdk-datetime-calendar-nav-button-size);\n height: var(--osdk-datetime-calendar-nav-button-size);\n border: none;\n background: transparent;\n cursor: pointer;\n border-radius: var(--osdk-datetime-calendar-nav-button-border-radius);\n padding: 0;\n color: inherit;\n\n &:hover {\n background: var(--osdk-datetime-calendar-nav-button-hover-bg);\n }\n\n &:disabled {\n color: var(--osdk-datetime-calendar-nav-disabled-color);\n cursor: default;\n opacity: 1; /* Override browser default disabled opacity */\n\n &:hover {\n background: transparent;\n }\n }\n\n &:focus-visible {\n outline: var(--osdk-datetime-calendar-focus-outline);\n outline-offset: -1px;\n }\n}\n\n/* Hide the default SVG chevron icon — Blueprint icons rendered inline instead */\n.calendarChevron {\n display: none;\n}\n\n.calendarNavPrev {\n order: -1;\n}\n\n.calendarMonthCaption {\n display: flex;\n align-items: center;\n justify-content: center;\n min-height: var(--osdk-datetime-calendar-nav-button-size);\n}\n\n/* Visually hidden — used for accessibility-only text (caption label, dropdown labels) */\n.calendarVhidden {\n position: absolute;\n width: 1px;\n height: 1px;\n overflow: hidden;\n clip-path: inset(50%);\n white-space: nowrap;\n}\n\n\n/* Caption dropdowns container */\n.calendarCaptionDropdowns {\n display: flex;\n align-items: center;\n justify-content: center;\n gap: var(--osdk-datetime-calendar-caption-gap);\n}\n\n/* Month/year selects — borderless, matching caption text weight */\n.calendarDropdown {\n /* Native selects otherwise reserve room for the longest option, which makes\n the month caret drift away from short month names like \"May\". */\n field-sizing: content;\n font-family: var(--osdk-datetime-calendar-font-family);\n font-size: var(--osdk-datetime-calendar-caption-font-size);\n font-weight: var(--osdk-datetime-calendar-caption-font-weight);\n color: inherit;\n background: transparent;\n border: none;\n padding: var(--osdk-datetime-calendar-dropdown-padding);\n cursor: pointer;\n border-radius: var(--osdk-datetime-calendar-dropdown-border-radius);\n\n &:focus-visible {\n outline: var(--osdk-datetime-calendar-focus-outline);\n outline-offset: 1px;\n }\n}\n\n\n.calendarTimeFooter {\n display: flex;\n justify-content: center;\n padding-block-start: var(--osdk-time-picker-padding-top);\n}\n\n.calendarActionBar {\n display: flex;\n justify-content: space-between;\n gap: var(--osdk-surface-spacing);\n padding-block-start: var(--osdk-time-picker-padding-top);\n padding-inline: var(--osdk-datetime-popover-padding);\n margin-block-start: var(--osdk-time-picker-margin-top);\n margin-inline: calc(var(--osdk-datetime-popover-padding) * -1);\n border-block-start: var(--osdk-time-picker-border-top);\n}\n","/* TimePicker — HH:mm control. Outer layout is owned by the parent. */\n\n.osdkTimePickerRoot {\n display: inline-flex;\n align-items: center;\n gap: var(--osdk-surface-spacing);\n}\n\n.osdkTimePickerInput {\n width: calc(var(--osdk-surface-spacing) * 10);\n font-family: var(--osdk-time-picker-input-font-family);\n font-size: var(--osdk-time-picker-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n text-align: center;\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 &[aria-invalid] {\n border-color: var(--osdk-input-border-color-error);\n }\n}\n\n.osdkTimePickerSeparator {\n color: var(--osdk-typography-color-muted);\n font-family: var(--osdk-time-picker-input-font-family);\n font-size: var(--osdk-time-picker-input-font-size);\n line-height: var(\n --osdk-input-line-height,\n var(--osdk-typography-line-height-default)\n );\n}\n"],"mappings":"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","names":[]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkXA3S7YAO_cjs = require('./chunk-XA3S7YAO.cjs');
3
+ var chunkE5OKIBYJ_cjs = require('./chunk-E5OKIBYJ.cjs');
4
4
  var React4 = require('react');
5
5
  var icons = require('@blueprintjs/icons');
6
6
  var select = require('@base-ui/react/select');
@@ -250,7 +250,7 @@ var SelectDropdown = typedReactMemo(function SelectDropdownFn({
250
250
  }, /* @__PURE__ */ React4__namespace.default.createElement(icons.CaretDown, null))), /* @__PURE__ */ React4__namespace.default.createElement(Select.Portal, {
251
251
  ref: portalRef,
252
252
  container: portalContainer
253
- }, isOpen && modal && /* @__PURE__ */ React4__namespace.default.createElement(chunkXA3S7YAO_cjs.PortalDismissLayer, {
253
+ }, isOpen && modal && /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.PortalDismissLayer, {
254
254
  className: DropdownField_default.osdkSelectDismissLayer,
255
255
  onDismiss: handleDismiss
256
256
  }), /* @__PURE__ */ React4__namespace.default.createElement(Select.Positioner, null, /* @__PURE__ */ React4__namespace.default.createElement(Select.Popup, null, items.map((item) => {
@@ -321,13 +321,13 @@ var ComboboxDropdown = typedReactMemo(function ComboboxDropdownFn({
321
321
  }, [handleOpenChange]);
322
322
  const renderItem = React4.useCallback((item) => {
323
323
  const itemLabel = itemToStringLabel(item);
324
- return /* @__PURE__ */ React4__namespace.default.createElement(chunkXA3S7YAO_cjs.Combobox.Item, {
324
+ return /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Item, {
325
325
  key: getKey(item),
326
326
  value: item,
327
327
  "aria-label": itemLabel
328
- }, isMultiple && /* @__PURE__ */ React4__namespace.default.createElement(chunkXA3S7YAO_cjs.Combobox.ItemIndicator, null, /* @__PURE__ */ React4__namespace.default.createElement(icons.Tick, null)), renderItemLabel(item));
328
+ }, isMultiple && /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.ItemIndicator, null, /* @__PURE__ */ React4__namespace.default.createElement(icons.Tick, null)), renderItemLabel(item));
329
329
  }, [getKey, isMultiple, itemToStringLabel, renderItemLabel]);
330
- return /* @__PURE__ */ React4__namespace.default.createElement("div", null, /* @__PURE__ */ React4__namespace.default.createElement(chunkXA3S7YAO_cjs.Combobox.Root, {
330
+ return /* @__PURE__ */ React4__namespace.default.createElement("div", null, /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Root, {
331
331
  value,
332
332
  onValueChange: handleValueChange,
333
333
  open: isOpen,
@@ -340,46 +340,46 @@ var ComboboxDropdown = typedReactMemo(function ComboboxDropdownFn({
340
340
  onInputValueChange: onQueryChange,
341
341
  filter: disableClientSideFiltering ? null : void 0,
342
342
  disabled
343
- }, /* @__PURE__ */ React4__namespace.default.createElement(chunkXA3S7YAO_cjs.Combobox.Trigger, {
343
+ }, /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Trigger, {
344
344
  id,
345
345
  disabled,
346
- className: isMultiple ? chunkXA3S7YAO_cjs.Combobox_default.osdkComboboxTriggerMulti : void 0
346
+ className: isMultiple ? chunkE5OKIBYJ_cjs.Combobox_default.osdkComboboxTriggerMulti : void 0
347
347
  }, /* @__PURE__ */ React4__namespace.default.createElement("div", {
348
- className: chunkXA3S7YAO_cjs.Combobox_default.osdkComboboxValueContainer
348
+ className: chunkE5OKIBYJ_cjs.Combobox_default.osdkComboboxValueContainer
349
349
  }, isMultiple && Array.isArray(value) && value.length > 0 ? /* @__PURE__ */ React4__namespace.default.createElement("div", {
350
- className: chunkXA3S7YAO_cjs.Combobox_default.osdkComboboxTriggerChips
350
+ className: chunkE5OKIBYJ_cjs.Combobox_default.osdkComboboxTriggerChips
351
351
  }, value.map((item) => /* @__PURE__ */ React4__namespace.default.createElement("span", {
352
352
  key: getKey(item),
353
- className: chunkXA3S7YAO_cjs.Combobox_default.osdkComboboxTriggerChip
353
+ className: chunkE5OKIBYJ_cjs.Combobox_default.osdkComboboxTriggerChip
354
354
  }, renderItemLabel(item), /* @__PURE__ */ React4__namespace.default.createElement("span", {
355
355
  role: "button",
356
356
  "aria-label": `Remove ${itemToStringLabel(item)}`,
357
- className: chunkXA3S7YAO_cjs.Combobox_default.osdkComboboxTriggerChipRemove,
357
+ className: chunkE5OKIBYJ_cjs.Combobox_default.osdkComboboxTriggerChipRemove,
358
358
  "aria-disabled": disabled || void 0,
359
359
  onMouseDown: disabled ? void 0 : preventTriggerOpen,
360
360
  onClick: disabled ? void 0 : () => handleRemoveItem(item)
361
361
  }, /* @__PURE__ */ React4__namespace.default.createElement(icons.Cross, {
362
362
  size: 12
363
- }))))) : /* @__PURE__ */ React4__namespace.default.createElement(React4__namespace.default.Fragment, null, /* @__PURE__ */ React4__namespace.default.createElement(chunkXA3S7YAO_cjs.Combobox.Value, null, renderSingleSelectedItemLabel), !hasValue && placeholder != null && /* @__PURE__ */ React4__namespace.default.createElement("span", {
364
- className: chunkXA3S7YAO_cjs.Combobox_default.osdkComboboxPlaceholder
363
+ }))))) : /* @__PURE__ */ React4__namespace.default.createElement(React4__namespace.default.Fragment, null, /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Value, null, renderSingleSelectedItemLabel), !hasValue && placeholder != null && /* @__PURE__ */ React4__namespace.default.createElement("span", {
364
+ className: chunkE5OKIBYJ_cjs.Combobox_default.osdkComboboxPlaceholder
365
365
  }, placeholder))), hasValue && /* @__PURE__ */ React4__namespace.default.createElement("span", {
366
366
  role: "button",
367
367
  "aria-label": "Clear",
368
- className: chunkXA3S7YAO_cjs.Combobox_default.osdkComboboxClear,
368
+ className: chunkE5OKIBYJ_cjs.Combobox_default.osdkComboboxClear,
369
369
  "aria-disabled": disabled || void 0,
370
370
  onMouseDown: disabled ? void 0 : preventTriggerOpen,
371
371
  onClick: disabled ? void 0 : handleClear
372
- }, /* @__PURE__ */ React4__namespace.default.createElement(icons.SmallCross, null)), /* @__PURE__ */ React4__namespace.default.createElement(chunkXA3S7YAO_cjs.Combobox.Icon, null, /* @__PURE__ */ React4__namespace.default.createElement(icons.CaretDown, null))), /* @__PURE__ */ React4__namespace.default.createElement(chunkXA3S7YAO_cjs.Combobox.Portal, {
372
+ }, /* @__PURE__ */ React4__namespace.default.createElement(icons.SmallCross, null)), /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Icon, null, /* @__PURE__ */ React4__namespace.default.createElement(icons.CaretDown, null))), /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Portal, {
373
373
  ref: portalRef,
374
374
  container: portalContainer
375
- }, isOpen && modal && /* @__PURE__ */ React4__namespace.default.createElement(chunkXA3S7YAO_cjs.PortalDismissLayer, {
375
+ }, isOpen && modal && /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.PortalDismissLayer, {
376
376
  className: DropdownField_default.osdkComboboxDismissLayer,
377
377
  onDismiss: handleDismiss
378
- }), /* @__PURE__ */ React4__namespace.default.createElement(chunkXA3S7YAO_cjs.Combobox.Positioner, null, /* @__PURE__ */ React4__namespace.default.createElement(chunkXA3S7YAO_cjs.Combobox.Popup, null, isSearchable && /* @__PURE__ */ React4__namespace.default.createElement("div", {
379
- className: chunkXA3S7YAO_cjs.Combobox_default.osdkComboboxPopupSearchInput
380
- }, /* @__PURE__ */ React4__namespace.default.createElement(chunkXA3S7YAO_cjs.Combobox.SearchInput, {
378
+ }), /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Positioner, null, /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Popup, null, isSearchable && /* @__PURE__ */ React4__namespace.default.createElement("div", {
379
+ className: chunkE5OKIBYJ_cjs.Combobox_default.osdkComboboxPopupSearchInput
380
+ }, /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.SearchInput, {
381
381
  placeholder: "Search\u2026"
382
- })), popupStatus, popupStatus == null && /* @__PURE__ */ React4__namespace.default.createElement(chunkXA3S7YAO_cjs.Combobox.Empty, null, "No results"), /* @__PURE__ */ React4__namespace.default.createElement(chunkXA3S7YAO_cjs.Combobox.List, null, /* @__PURE__ */ React4__namespace.default.createElement(chunkXA3S7YAO_cjs.Combobox.Collection, null, renderItem), trailingItem))))));
382
+ })), popupStatus, popupStatus == null && /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Empty, null, "No results"), /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.List, null, /* @__PURE__ */ React4__namespace.default.createElement(chunkE5OKIBYJ_cjs.Combobox.Collection, null, renderItem), trailingItem))))));
383
383
  });
384
384
  function preventTriggerOpen(e) {
385
385
  e.stopPropagation();
@@ -398,5 +398,5 @@ function defaultItemToStringLabel(item) {
398
398
  exports.DropdownField = DropdownField;
399
399
  exports.typedReactMemo = typedReactMemo;
400
400
  exports.useEventCallback = useEventCallback;
401
- //# sourceMappingURL=chunk-Y6BGC7DP.cjs.map
402
- //# sourceMappingURL=chunk-Y6BGC7DP.cjs.map
401
+ //# sourceMappingURL=chunk-3S52UDZM.cjs.map
402
+ //# sourceMappingURL=chunk-3S52UDZM.cjs.map