@osdk/react-components 0.35.0 → 0.35.1-main-12e5e63aaee98d704e38748853b40679e847249e

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 (99) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/build/browser/base-components/action-button/ActionButton.module.css +1 -1
  3. package/build/browser/styles.css +2 -1
  4. package/build/browser/tokens/component-tokens/button.css +1 -0
  5. package/build/browser/util/UserAgent.js +1 -1
  6. package/build/browser/util/UserAgent.js.map +1 -1
  7. package/build/cjs/DateCalendar-62IDZDEI.cjs +24 -0
  8. package/build/cjs/{DateCalendar-FCZXD24P.cjs.map → DateCalendar-62IDZDEI.cjs.map} +1 -1
  9. package/build/cjs/{DateCalendar-VBZGPZ5P.css → DateCalendar-FZ4QRCRH.css} +2 -2
  10. package/build/cjs/DateCalendar-FZ4QRCRH.css.map +1 -0
  11. package/build/cjs/{DateRangeCalendar-2M2I5Q3Z.css → DateRangeCalendar-2C2XUXUS.css} +2 -2
  12. package/build/cjs/DateRangeCalendar-2C2XUXUS.css.map +1 -0
  13. package/build/cjs/DateRangeCalendar-67R6GXCH.cjs +12 -0
  14. package/build/cjs/{DateRangeCalendar-XN2ZWAFK.cjs.map → DateRangeCalendar-67R6GXCH.cjs.map} +1 -1
  15. package/build/cjs/{chunk-KQ4B2XDH.cjs → chunk-3NK7SJZJ.cjs} +5 -5
  16. package/build/cjs/{chunk-KQ4B2XDH.cjs.map → chunk-3NK7SJZJ.cjs.map} +1 -1
  17. package/build/cjs/{chunk-ENE2RWIL.cjs → chunk-3O4IPFOY.cjs} +17 -17
  18. package/build/cjs/{chunk-ENE2RWIL.cjs.map → chunk-3O4IPFOY.cjs.map} +1 -1
  19. package/build/cjs/{chunk-CW644WDI.cjs → chunk-46BP2MQW.cjs} +4 -4
  20. package/build/cjs/{chunk-CW644WDI.cjs.map → chunk-46BP2MQW.cjs.map} +1 -1
  21. package/build/cjs/chunk-6IQWCVAL.cjs +11 -0
  22. package/build/cjs/{chunk-LL5CBNDZ.cjs.map → chunk-6IQWCVAL.cjs.map} +1 -1
  23. package/build/cjs/chunk-ADTODU4W.cjs +11 -0
  24. package/build/cjs/{chunk-NZRXL4JP.cjs.map → chunk-ADTODU4W.cjs.map} +1 -1
  25. package/build/cjs/chunk-AU2FUE53.cjs +11 -0
  26. package/build/cjs/{chunk-IYHK2H55.cjs.map → chunk-AU2FUE53.cjs.map} +1 -1
  27. package/build/cjs/{chunk-YCWT23HH.cjs → chunk-CHJHKFYC.cjs} +4 -4
  28. package/build/cjs/{chunk-YCWT23HH.cjs.map → chunk-CHJHKFYC.cjs.map} +1 -1
  29. package/build/cjs/{chunk-UJEI6Z4C.cjs → chunk-CP3GFWGV.cjs} +4 -4
  30. package/build/cjs/{chunk-UJEI6Z4C.cjs.map → chunk-CP3GFWGV.cjs.map} +1 -1
  31. package/build/cjs/{chunk-EN6IZOML.cjs → chunk-DED346LG.cjs} +20 -20
  32. package/build/cjs/{chunk-EN6IZOML.cjs.map → chunk-DED346LG.cjs.map} +1 -1
  33. package/build/cjs/chunk-GCHUA67V.cjs +11 -0
  34. package/build/cjs/{chunk-PBMJNJLL.cjs.map → chunk-GCHUA67V.cjs.map} +1 -1
  35. package/build/cjs/{chunk-SMVWJHAQ.cjs → chunk-GHHTWPKY.cjs} +51 -51
  36. package/build/cjs/{chunk-SMVWJHAQ.cjs.map → chunk-GHHTWPKY.cjs.map} +1 -1
  37. package/build/cjs/{chunk-INFRT5OY.cjs → chunk-HVX36U5R.cjs} +20 -20
  38. package/build/cjs/{chunk-INFRT5OY.cjs.map → chunk-HVX36U5R.cjs.map} +1 -1
  39. package/build/cjs/{chunk-MUDJXY6I.cjs → chunk-LBPOK2RE.cjs} +22 -22
  40. package/build/cjs/{chunk-MUDJXY6I.cjs.map → chunk-LBPOK2RE.cjs.map} +1 -1
  41. package/build/cjs/{chunk-N3ARFCNR.cjs → chunk-QE5JP46L.cjs} +3 -3
  42. package/build/cjs/chunk-QE5JP46L.cjs.map +1 -0
  43. package/build/cjs/{chunk-MD4KDE44.cjs → chunk-QP2LHBCZ.cjs} +2 -2
  44. package/build/cjs/chunk-QP2LHBCZ.cjs.map +1 -0
  45. package/build/cjs/chunk-TJGXEFB2.cjs +11 -0
  46. package/build/cjs/{chunk-W6W3Q7BQ.cjs.map → chunk-TJGXEFB2.cjs.map} +1 -1
  47. package/build/cjs/{chunk-BFRUHBWM.cjs → chunk-X7LQ2HH4.cjs} +12 -12
  48. package/build/cjs/{chunk-BFRUHBWM.cjs.map → chunk-X7LQ2HH4.cjs.map} +1 -1
  49. package/build/cjs/{chunk-2UQ7CJCR.cjs → chunk-YYOTGD45.cjs} +9 -9
  50. package/build/cjs/{chunk-2UQ7CJCR.cjs.map → chunk-YYOTGD45.cjs.map} +1 -1
  51. package/build/cjs/{chunk-N6MCFY34.cjs → chunk-ZL4G4QPB.cjs} +4 -4
  52. package/build/cjs/{chunk-N6MCFY34.cjs.map → chunk-ZL4G4QPB.cjs.map} +1 -1
  53. package/build/cjs/public/experimental/action-form.cjs +9 -9
  54. package/build/cjs/public/experimental/action-form.css +1 -1
  55. package/build/cjs/public/experimental/action-form.css.map +1 -1
  56. package/build/cjs/public/experimental/aip-agent-chat.cjs +4 -4
  57. package/build/cjs/public/experimental/aip-agent-chat.css +1 -1
  58. package/build/cjs/public/experimental/aip-agent-chat.css.map +1 -1
  59. package/build/cjs/public/experimental/cbac-picker.cjs +12 -12
  60. package/build/cjs/public/experimental/cbac-picker.css +1 -1
  61. package/build/cjs/public/experimental/cbac-picker.css.map +1 -1
  62. package/build/cjs/public/experimental/document-viewer.cjs +4 -4
  63. package/build/cjs/public/experimental/email-viewer.cjs +3 -3
  64. package/build/cjs/public/experimental/excel-viewer.cjs +3 -3
  65. package/build/cjs/public/experimental/filter-list.cjs +19 -19
  66. package/build/cjs/public/experimental/filter-list.css +1 -1
  67. package/build/cjs/public/experimental/filter-list.css.map +1 -1
  68. package/build/cjs/public/experimental/image-viewer.cjs +3 -3
  69. package/build/cjs/public/experimental/markdown-renderer.cjs +3 -3
  70. package/build/cjs/public/experimental/object-table.cjs +13 -13
  71. package/build/cjs/public/experimental/object-table.css +1 -1
  72. package/build/cjs/public/experimental/object-table.css.map +1 -1
  73. package/build/cjs/public/experimental/pdf-viewer.cjs +7 -7
  74. package/build/cjs/public/experimental/tiff-renderer.cjs +3 -3
  75. package/build/cjs/public/experimental/video-viewer.cjs +3 -3
  76. package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
  77. package/build/cjs/public/experimental.cjs +63 -63
  78. package/build/cjs/public/experimental.css +1 -1
  79. package/build/cjs/public/experimental.css.map +1 -1
  80. package/build/cjs/public/primitives.cjs +2 -2
  81. package/build/cjs/public/primitives.css +1 -1
  82. package/build/cjs/public/primitives.css.map +1 -1
  83. package/build/esm/base-components/action-button/ActionButton.module.css +1 -1
  84. package/build/esm/tokens/component-tokens/button.css +1 -0
  85. package/build/esm/util/UserAgent.js +1 -1
  86. package/build/esm/util/UserAgent.js.map +1 -1
  87. package/docs/CSSVariables.md +8 -7
  88. package/package.json +7 -7
  89. package/build/cjs/DateCalendar-FCZXD24P.cjs +0 -24
  90. package/build/cjs/DateCalendar-VBZGPZ5P.css.map +0 -1
  91. package/build/cjs/DateRangeCalendar-2M2I5Q3Z.css.map +0 -1
  92. package/build/cjs/DateRangeCalendar-XN2ZWAFK.cjs +0 -12
  93. package/build/cjs/chunk-IYHK2H55.cjs +0 -11
  94. package/build/cjs/chunk-LL5CBNDZ.cjs +0 -11
  95. package/build/cjs/chunk-MD4KDE44.cjs.map +0 -1
  96. package/build/cjs/chunk-N3ARFCNR.cjs.map +0 -1
  97. package/build/cjs/chunk-NZRXL4JP.cjs +0 -11
  98. package/build/cjs/chunk-PBMJNJLL.cjs +0 -11
  99. package/build/cjs/chunk-W6W3Q7BQ.cjs +0 -11
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @osdk/react-components
2
2
 
3
+ ## 0.35.1-main-12e5e63aaee98d704e38748853b40679e847249e
4
+
5
+ ### Patch Changes
6
+
7
+ - 12e5e63: Add `--osdk-button-border-radius` token so a theme can round buttons independently of inputs/cards.
8
+ - Updated dependencies [3c48f5a]
9
+ - @osdk/client@2.42.1-main-12e5e63aaee98d704e38748853b40679e847249e
10
+ - @osdk/api@2.42.1-main-12e5e63aaee98d704e38748853b40679e847249e
11
+ - @osdk/react@2.42.1-main-12e5e63aaee98d704e38748853b40679e847249e
12
+
3
13
  ## 0.35.0
4
14
 
5
15
  ### Minor Changes
@@ -19,7 +19,7 @@
19
19
  padding: calc(var(--osdk-surface-spacing) * 1.5)
20
20
  calc(var(--osdk-surface-spacing) * 1.75);
21
21
  border: var(--osdk-button-border);
22
- border-radius: var(--osdk-surface-border-radius);
22
+ border-radius: var(--osdk-button-border-radius);
23
23
  box-shadow: var(--osdk-button-shadow);
24
24
  font-size: var(--osdk-typography-size-body-medium);
25
25
  cursor: pointer;
@@ -704,6 +704,7 @@
704
704
  --osdk-button-min-height: calc(var(--osdk-surface-spacing) * 7.5);
705
705
  --osdk-button-border-color: color-mix(in oklch, var(--bp-palette-black) 20%, transparent);
706
706
  --osdk-button-border: none;
707
+ --osdk-button-border-radius: var(--osdk-surface-border-radius);
707
708
  --osdk-button-drop-shadow-color: color-mix(in oklch, var(--bp-palette-black) 10%, transparent);
708
709
  --osdk-button-shadow:
709
710
  inset 0 0 0 1px var(--osdk-button-border-color),
@@ -3448,7 +3449,7 @@
3448
3449
  padding: calc(var(--osdk-surface-spacing) * 1.5)
3449
3450
  calc(var(--osdk-surface-spacing) * 1.75);
3450
3451
  border: var(--osdk-button-border);
3451
- border-radius: var(--osdk-surface-border-radius);
3452
+ border-radius: var(--osdk-button-border-radius);
3452
3453
  box-shadow: var(--osdk-button-shadow);
3453
3454
  font-size: var(--osdk-typography-size-body-medium);
3454
3455
  cursor: pointer;
@@ -4,6 +4,7 @@
4
4
  --osdk-button-min-height: calc(var(--osdk-surface-spacing) * 7.5);
5
5
  --osdk-button-border-color: color-mix(in oklch, var(--bp-palette-black) 20%, transparent);
6
6
  --osdk-button-border: none;
7
+ --osdk-button-border-radius: var(--osdk-surface-border-radius);
7
8
  --osdk-button-drop-shadow-color: color-mix(in oklch, var(--bp-palette-black) 10%, transparent);
8
9
  --osdk-button-shadow:
9
10
  inset 0 0 0 1px var(--osdk-button-border-color),
@@ -14,7 +14,7 @@
14
14
  * limitations under the License.
15
15
  */
16
16
 
17
- const PACKAGE_USER_AGENT = `osdk-react-components/${"0.35.0"}`;
17
+ const PACKAGE_USER_AGENT = `osdk-react-components/${"0.35.1-main-12e5e63aaee98d704e38748853b40679e847249e"}`;
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 = `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,GAAG,mCAAsD;AAEjF,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 = `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,GAAG,iFAAsD;AAEjF,OAAO,SAASC,kBAAkBA,CAACC,aAAqB,EAAU;EAChE,OAAO,GAAGF,kBAAkB,IAAIE,aAAa,EAAE;AACjD","ignoreList":[]}
@@ -0,0 +1,24 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var chunk3NK7SJZJ_cjs = require('./chunk-3NK7SJZJ.cjs');
6
+ require('./chunk-QP2LHBCZ.cjs');
7
+ require('./chunk-PZPCRXSV.cjs');
8
+
9
+
10
+
11
+ Object.defineProperty(exports, "CALENDAR_COMPONENTS", {
12
+ enumerable: true,
13
+ get: function () { return chunk3NK7SJZJ_cjs.CALENDAR_COMPONENTS; }
14
+ });
15
+ Object.defineProperty(exports, "CLASS_NAMES", {
16
+ enumerable: true,
17
+ get: function () { return chunk3NK7SJZJ_cjs.CLASS_NAMES; }
18
+ });
19
+ Object.defineProperty(exports, "default", {
20
+ enumerable: true,
21
+ get: function () { return chunk3NK7SJZJ_cjs.DateCalendar; }
22
+ });
23
+ //# sourceMappingURL=DateCalendar-62IDZDEI.cjs.map
24
+ //# sourceMappingURL=DateCalendar-62IDZDEI.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"DateCalendar-FCZXD24P.cjs"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"DateCalendar-62IDZDEI.cjs"}
@@ -3,7 +3,7 @@
3
3
  min-height: var(--osdk-button-min-height);
4
4
  padding: calc(var(--osdk-surface-spacing) * 1.5) calc(var(--osdk-surface-spacing) * 1.75);
5
5
  border: var(--osdk-button-border);
6
- border-radius: var(--osdk-surface-border-radius);
6
+ border-radius: var(--osdk-button-border-radius);
7
7
  box-shadow: var(--osdk-button-shadow);
8
8
  font-size: var(--osdk-typography-size-body-medium);
9
9
  cursor: pointer;
@@ -313,4 +313,4 @@
313
313
  margin-inline: calc(var(--osdk-datetime-popover-padding) * -1);
314
314
  border-block-start: var(--osdk-time-picker-border-top);
315
315
  }
316
- /*# sourceMappingURL=DateCalendar-VBZGPZ5P.css.map */
316
+ /*# sourceMappingURL=DateCalendar-FZ4QRCRH.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/base-components/action-button/ActionButton.module.css","../../src/shared/calendar/TimePicker.module.css","../../src/shared/calendar/DateCalendar.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-button-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","/* 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 box-shadow: var(--osdk-time-picker-input-shadow);\n\n &:focus-visible {\n outline: var(--osdk-time-picker-input-focus-outline);\n outline-offset: var(--osdk-input-focus-outline-offset);\n box-shadow: var(--osdk-time-picker-input-focus-shadow);\n }\n\n &[aria-invalid] {\n box-shadow: var(--osdk-time-picker-input-shadow-error);\n }\n\n &[aria-invalid]:focus-visible {\n box-shadow: var(--osdk-time-picker-input-focus-shadow-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","/* 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"],"mappings":"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","names":[]}
@@ -3,7 +3,7 @@
3
3
  min-height: var(--osdk-button-min-height);
4
4
  padding: calc(var(--osdk-surface-spacing) * 1.5) calc(var(--osdk-surface-spacing) * 1.75);
5
5
  border: var(--osdk-button-border);
6
- border-radius: var(--osdk-surface-border-radius);
6
+ border-radius: var(--osdk-button-border-radius);
7
7
  box-shadow: var(--osdk-button-shadow);
8
8
  font-size: var(--osdk-typography-size-body-medium);
9
9
  cursor: pointer;
@@ -313,4 +313,4 @@
313
313
  margin-inline: calc(var(--osdk-datetime-popover-padding) * -1);
314
314
  border-block-start: var(--osdk-time-picker-border-top);
315
315
  }
316
- /*# sourceMappingURL=DateRangeCalendar-2M2I5Q3Z.css.map */
316
+ /*# sourceMappingURL=DateRangeCalendar-2C2XUXUS.css.map */
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/base-components/action-button/ActionButton.module.css","../../src/shared/calendar/TimePicker.module.css","../../src/shared/calendar/DateCalendar.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-button-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","/* 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 box-shadow: var(--osdk-time-picker-input-shadow);\n\n &:focus-visible {\n outline: var(--osdk-time-picker-input-focus-outline);\n outline-offset: var(--osdk-input-focus-outline-offset);\n box-shadow: var(--osdk-time-picker-input-focus-shadow);\n }\n\n &[aria-invalid] {\n box-shadow: var(--osdk-time-picker-input-shadow-error);\n }\n\n &[aria-invalid]:focus-visible {\n box-shadow: var(--osdk-time-picker-input-focus-shadow-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","/* 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"],"mappings":"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","names":[]}
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var chunkX7LQ2HH4_cjs = require('./chunk-X7LQ2HH4.cjs');
4
+ require('./chunk-3NK7SJZJ.cjs');
5
+ require('./chunk-QP2LHBCZ.cjs');
6
+ require('./chunk-PZPCRXSV.cjs');
7
+
8
+
9
+
10
+ module.exports = chunkX7LQ2HH4_cjs.DateRangeCalendar;
11
+ //# sourceMappingURL=DateRangeCalendar-67R6GXCH.cjs.map
12
+ //# sourceMappingURL=DateRangeCalendar-67R6GXCH.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":[],"names":[],"mappings":"","file":"DateRangeCalendar-XN2ZWAFK.cjs"}
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"DateRangeCalendar-67R6GXCH.cjs"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkMD4KDE44_cjs = require('./chunk-MD4KDE44.cjs');
3
+ var chunkQP2LHBCZ_cjs = require('./chunk-QP2LHBCZ.cjs');
4
4
  var icons = require('@blueprintjs/icons');
5
5
  var classnames = require('classnames');
6
6
  var React2 = require('react');
@@ -318,12 +318,12 @@ function DateCalendar({
318
318
  onChange: onTimeChange
319
319
  })), /* @__PURE__ */ React2__default.default.createElement("div", {
320
320
  className: DateCalendar_default.calendarActionBar
321
- }, /* @__PURE__ */ React2__default.default.createElement(chunkMD4KDE44_cjs.ActionButton, {
321
+ }, /* @__PURE__ */ React2__default.default.createElement(chunkQP2LHBCZ_cjs.ActionButton, {
322
322
  type: "button",
323
323
  appearance: "minimal",
324
324
  disabled: !isTodaySelectable,
325
325
  onClick: handleTodayClick
326
- }, todayButtonText), onClear != null && /* @__PURE__ */ React2__default.default.createElement(chunkMD4KDE44_cjs.ActionButton, {
326
+ }, todayButtonText), onClear != null && /* @__PURE__ */ React2__default.default.createElement(chunkQP2LHBCZ_cjs.ActionButton, {
327
327
  type: "button",
328
328
  appearance: "minimal",
329
329
  onClick: onClear
@@ -362,5 +362,5 @@ exports.isDateInRange = isDateInRange;
362
362
  exports.parseDateFromInput = parseDateFromInput;
363
363
  exports.parseDatetimeFromInput = parseDatetimeFromInput;
364
364
  exports.stopPropagation = stopPropagation;
365
- //# sourceMappingURL=chunk-KQ4B2XDH.cjs.map
366
- //# sourceMappingURL=chunk-KQ4B2XDH.cjs.map
365
+ //# sourceMappingURL=chunk-3NK7SJZJ.cjs.map
366
+ //# sourceMappingURL=chunk-3NK7SJZJ.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/shared/dateUtils.ts","../../src/shared/calendar/calendarShared.ts","../../src/shared/calendar/TimePicker.module.css","../../src/shared/calendar/TimePicker.tsx","../../src/shared/calendar/DateCalendar.module.css","../../src/shared/calendar/DateCalendar.tsx"],"names":["React","useMemo","useState","useCallback","Input","classnames","ChevronLeft","ChevronRight","ActionButton","DayPicker"],"mappings":"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","file":"chunk-KQ4B2XDH.cjs","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/**\n * Date utilities for HTML date inputs.\n *\n * These functions operate on local time by design. HTML <input type=\"date\">\n * returns and expects values in \"YYYY-MM-DD\" format without timezone info.\n *\n * `parseDateFromInput` appends \"T00:00:00\" (no \"Z\") so the date is parsed as\n * local midnight rather than UTC midnight. Without this, negative-offset\n * timezones (e.g. US timezones) would shift \"2024-01-15\" to Jan 14 locally.\n *\n * Consumers providing dates from an API (typically UTC) should handle\n * UTC-to-local conversion before passing values to these functions.\n */\n\nexport function formatDateForInput(date) {\n if (date == null) return \"\";\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n return `${year}-${month}-${day}`;\n}\n\n/** Formats the time portion of a Date as \"HH:mm\". */\nexport function formatTime(date) {\n const hours = String(date.getHours()).padStart(2, \"0\");\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n return `${hours}:${minutes}`;\n}\nexport function parseDateFromInput(value) {\n if (!value) return undefined;\n const date = new Date(value + \"T00:00:00\");\n return isNaN(date.getTime()) ? undefined : date;\n}\nexport function formatDateForDisplay(date, fallback = \"\") {\n if (date == null) return fallback;\n return date.toLocaleDateString(undefined, {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\"\n });\n}\n\n/** Formats a Date as \"2024-06-15 14:30\" — space-separated, parsable, for text input editing. */\nexport function formatDatetimeForInput(date) {\n if (date == null) return \"\";\n return `${formatDateForInput(date)} ${formatTime(date)}`;\n}\n\n/**\n * Parses space-separated (\"2024-06-15 14:30\") or T-separated datetime strings.\n * Inverse of `formatDatetimeForInput`, which joins date and time with a space\n * for readability. Here we replace that space with \"T\" so `new Date()` parses\n * it as a local datetime (e.g. \"2024-06-15T14:30\").\n */\nexport function parseDatetimeFromInput(value) {\n if (!value) return undefined;\n const normalized = value.includes(\"T\") ? value : value.replace(/\\s/, \"T\");\n const date = new Date(normalized);\n return isNaN(date.getTime()) ? undefined : date;\n}\n\n/** Returns true if `date` falls within [min, max] (inclusive). */\nexport function isDateInRange(date, min, max) {\n if (min != null && date.getTime() < min.getTime()) return false;\n if (max != null && date.getTime() > max.getTime()) return false;\n return true;\n}\nexport function parseDateFromISO(value) {\n if (value == null) return undefined;\n if (value instanceof Date) return value;\n const date = new Date(value);\n return isNaN(date.getTime()) ? undefined : date;\n}\n\n/** Parses an \"HH:mm\" time string into hours and minutes. */\nexport function parseTimeString(timeString) {\n const [hoursStr, minutesStr] = timeString.split(\":\");\n const hours = parseInt(hoursStr ?? \"0\", 10);\n const minutes = parseInt(minutesStr ?? \"0\", 10);\n return {\n hours: isNaN(hours) ? 0 : hours,\n minutes: isNaN(minutes) ? 0 : minutes\n };\n}\n\n/** Returns the \"HH:mm\" time value for a date, defaulting to \"00:00\" when null. */\nexport function getTimeValue(date) {\n return date != null ? formatTime(date) : \"00:00\";\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 * Shared constants and utilities for DateCalendar, DateRangeCalendar,\n * DatePicker, and DateRangePicker.\n */\n\n/** Fallback year range for the month/year dropdown when no min/max is provided. */\nexport const DEFAULT_FROM_YEAR = new Date().getFullYear() - 10;\nexport const DEFAULT_TO_YEAR = new Date().getFullYear() + 10;\n\n/**\n * Builds the `disabled` matcher array for react-day-picker from optional\n * min/max date constraints. Dates before min or after max are disabled.\n */\nexport function buildDisabledMatchers(min, max) {\n const matchers = [];\n if (min != null) {\n const before = {\n before: min\n };\n matchers.push(before);\n }\n if (max != null) {\n const after = {\n after: max\n };\n matchers.push(after);\n }\n return matchers;\n}\n\n/**\n * Stable click handler that stops event propagation. Used on date inputs\n * inside Popover.Trigger to prevent the trigger's click handler from\n * toggling the popover closed when the user clicks the already-open input.\n */\nexport const stopPropagation = e => {\n e.stopPropagation();\n // Base UI chains its trigger handler after this click handler. When focus or\n // pointer-down already opened the popover, suppress that handler so the same\n // click does not immediately toggle the popover closed again.\n const preventBaseUIHandler = e.preventBaseUIHandler;\n preventBaseUIHandler?.();\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 box-shadow: var(--osdk-time-picker-input-shadow);\n\n &:focus-visible {\n outline: var(--osdk-time-picker-input-focus-outline);\n outline-offset: var(--osdk-input-focus-outline-offset);\n box-shadow: var(--osdk-time-picker-input-focus-shadow);\n }\n\n &[aria-invalid] {\n box-shadow: var(--osdk-time-picker-input-shadow-error);\n }\n\n &[aria-invalid]:focus-visible {\n box-shadow: var(--osdk-time-picker-input-focus-shadow-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","/*\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\";\nconst NUMERIC_INPUT_PATTERN = \"[0-9]*\";\nconst SEGMENT_LIMITS = {\n hours: {\n min: 0,\n max: 23\n },\n minutes: {\n min: 0,\n max: 59\n }\n};\nexport const TimePicker = /*#__PURE__*/React.memo(function TimePickerFn({\n value,\n onChange,\n label = \"Time\"\n}) {\n const valueTimestamp = value?.getTime() ?? null;\n const valueSegments = useMemo(() => segmentsFromTimestamp(valueTimestamp), [valueTimestamp]);\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 (prevSegments.hours !== valueSegments.hours || prevSegments.minutes !== valueSegments.minutes) {\n setPrevSegments(valueSegments);\n setDraftSegments(valueSegments);\n }\n const hourText = draftSegments.hours;\n const minuteText = draftSegments.minutes;\n const hourInvalid = isSegmentInvalid(hourText, \"hours\");\n const minuteInvalid = isSegmentInvalid(minuteText, \"minutes\");\n const handleSegmentChange = useCallback((segment, nextText) => {\n setDraftSegments(prev => replaceSegmentText(prev, {\n segment,\n nextText\n }));\n }, []);\n const emitChange = useCallback((hours, minutes) => {\n const nextDate = value != null ? new Date(value.getTime()) : new Date();\n nextDate.setHours(hours, minutes, 0, 0);\n onChange?.(nextDate);\n }, [onChange, value]);\n const handleSegmentBlur = useCallback((segment, text) => {\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 const clampedSegment = clampSegment(parsedSegment, segment);\n setDraftSegments(prev => replaceSegmentText(prev, {\n segment,\n nextText: formatSegment(clampedSegment, segment)\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\" ? clampedSegment : currentMinutes;\n if (nextHours !== currentHours || nextMinutes !== currentMinutes) {\n emitChange(nextHours, nextMinutes);\n }\n }, [emitChange, valueSegments]);\n const handleHourChange = useCallback(nextText => handleSegmentChange(\"hours\", nextText), [handleSegmentChange]);\n const handleMinuteChange = useCallback(nextText => handleSegmentChange(\"minutes\", nextText), [handleSegmentChange]);\n const handleHourBlur = useCallback(() => handleSegmentBlur(\"hours\", hourText), [handleSegmentBlur, hourText]);\n const handleMinuteBlur = useCallback(() => handleSegmentBlur(\"minutes\", minuteText), [handleSegmentBlur, minuteText]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkTimePickerRoot,\n role: \"group\",\n \"aria-label\": label\n }, /*#__PURE__*/React.createElement(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 }), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkTimePickerSeparator,\n \"aria-hidden\": \"true\"\n }, \":\"), /*#__PURE__*/React.createElement(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});\nfunction replaceSegmentText(segments, {\n segment,\n nextText\n}) {\n return {\n ...segments,\n [segment]: nextText\n };\n}\nfunction segmentsFromTimestamp(valueTimestamp) {\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}\nfunction formatSegment(value, segment) {\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}\nfunction parseNumber(text) {\n if (!/^\\d{1,2}$/.test(text)) {\n return undefined;\n }\n const parsed = Number(text);\n return Number.isNaN(parsed) ? undefined : parsed;\n}\nfunction parseSegment(text, segment) {\n const parsed = parseNumber(text);\n if (parsed == null) {\n return undefined;\n }\n const {\n min,\n max\n } = SEGMENT_LIMITS[segment];\n return parsed >= min && parsed <= max ? parsed : undefined;\n}\nfunction isSegmentInvalid(text, segment) {\n return parseSegment(text, segment) == null;\n}\nfunction clampSegment(value, segment) {\n const {\n min,\n max\n } = SEGMENT_LIMITS[segment];\n return Math.min(Math.max(value, min), max);\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","/*\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 { ChevronLeft, ChevronRight } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { useCallback, useMemo } from \"react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { ActionButton } from \"../../base-components/action-button/ActionButton.js\";\nimport { isDateInRange } from \"../../shared/dateUtils.js\";\nimport { buildDisabledMatchers, DEFAULT_FROM_YEAR, DEFAULT_TO_YEAR } from \"./calendarShared.js\";\nimport { TimePicker } from \"./TimePicker.js\";\nimport styles from \"./DateCalendar.module.css\";\nexport const CLASS_NAMES = {\n root: styles.calendar,\n months: styles.calendarMonths,\n table: styles.calendarMonthGrid,\n head_cell: styles.calendarWeekday,\n cell: styles.calendarDay,\n day: styles.calendarDayButton,\n day_selected: styles.calendarSelected,\n day_today: styles.calendarToday,\n day_outside: styles.calendarOutside,\n day_disabled: styles.calendarDisabled,\n day_hidden: styles.calendarHidden,\n nav: styles.calendarNav,\n nav_button_previous: classnames(styles.calendarNavButton, styles.calendarNavPrev),\n nav_button_next: classnames(styles.calendarNavButton, styles.calendarNavNext),\n caption: styles.calendarMonthCaption,\n caption_label: styles.calendarVhidden,\n caption_dropdowns: styles.calendarCaptionDropdowns,\n dropdown: styles.calendarDropdown,\n dropdown_month: styles.calendarDropdown,\n dropdown_year: styles.calendarDropdown,\n nav_icon: styles.calendarChevron,\n vhidden: styles.calendarVhidden,\n tfoot: styles.calendarFooter\n};\nconst NAV_ICON_SIZE = 12;\nfunction IconLeft() {\n return /*#__PURE__*/React.createElement(ChevronLeft, {\n size: NAV_ICON_SIZE\n });\n}\nfunction IconRight() {\n return /*#__PURE__*/React.createElement(ChevronRight, {\n size: NAV_ICON_SIZE\n });\n}\nexport const CALENDAR_COMPONENTS = {\n IconLeft,\n IconRight\n};\nexport default function DateCalendar({\n dateSelected,\n onSelect,\n onTimeChange,\n onClear,\n month,\n onMonthChange,\n min,\n max,\n todayButtonText = \"Today\",\n clearButtonText = \"Clear\"\n}) {\n const disabled = useMemo(() => buildDisabledMatchers(min, max), [min, max]);\n const showTime = onTimeChange != null;\n const fromYear = min != null ? min.getFullYear() : DEFAULT_FROM_YEAR;\n const toYear = max != null ? max.getFullYear() : DEFAULT_TO_YEAR;\n const today = new Date();\n // Compare at midnight so the Today button stays enabled when min/max are\n // set to today's date at midnight (the common case for date-only bounds).\n const todayMidnight = new Date(today.getFullYear(), today.getMonth(), today.getDate());\n const isTodaySelectable = isDateInRange(todayMidnight, min, max);\n const applySelectedTime = useCallback(selected => {\n // Calendar day buttons provide local-midnight dates. In datetime mode,\n // keep the currently visible time when the user changes only the day.\n // The Today action intentionally bypasses this path and uses wall-clock\n // time from `new Date()`.\n if (!showTime) {\n return selected;\n }\n if (dateSelected == null) {\n return selected;\n }\n const date = new Date(selected.getTime());\n date.setHours(dateSelected.getHours(), dateSelected.getMinutes(), 0, 0);\n return date;\n }, [dateSelected, showTime]);\n const handleSelect = useCallback(selected => {\n onSelect(selected == null ? undefined : applySelectedTime(selected));\n }, [applySelectedTime, onSelect]);\n const handleTodayClick = useCallback(() => {\n if (!isTodaySelectable) {\n return;\n }\n onSelect(new Date());\n }, [isTodaySelectable, onSelect]);\n const calendarFooter = /*#__PURE__*/React.createElement(React.Fragment, null, showTime && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.calendarTimeFooter\n }, /*#__PURE__*/React.createElement(TimePicker, {\n value: dateSelected ?? null,\n onChange: onTimeChange\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.calendarActionBar\n }, /*#__PURE__*/React.createElement(ActionButton, {\n type: \"button\",\n appearance: \"minimal\",\n disabled: !isTodaySelectable,\n onClick: handleTodayClick\n }, todayButtonText), onClear != null && /*#__PURE__*/React.createElement(ActionButton, {\n type: \"button\",\n appearance: \"minimal\",\n onClick: onClear\n }, clearButtonText)));\n return /*#__PURE__*/React.createElement(DayPicker, {\n mode: \"single\",\n selected: dateSelected,\n onSelect: handleSelect,\n month: month,\n onMonthChange: onMonthChange,\n disabled: disabled,\n defaultMonth: dateSelected,\n classNames: CLASS_NAMES,\n components: CALENDAR_COMPONENTS,\n footer: calendarFooter\n // Render month/year as dropdown selects + prev/next arrows,\n // so users can jump directly to any month/year without paging.\n ,\n captionLayout: \"dropdown-buttons\",\n fromYear: fromYear,\n toYear: toYear,\n showOutsideDays: true\n // Always render 6 rows so the calendar height doesn't jump between months.\n ,\n fixedWeeks: true\n });\n}"]}
1
+ {"version":3,"sources":["../../src/shared/dateUtils.ts","../../src/shared/calendar/calendarShared.ts","../../src/shared/calendar/TimePicker.module.css","../../src/shared/calendar/TimePicker.tsx","../../src/shared/calendar/DateCalendar.module.css","../../src/shared/calendar/DateCalendar.tsx"],"names":["React","useMemo","useState","useCallback","Input","classnames","ChevronLeft","ChevronRight","ActionButton","DayPicker"],"mappings":"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","file":"chunk-3NK7SJZJ.cjs","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/**\n * Date utilities for HTML date inputs.\n *\n * These functions operate on local time by design. HTML <input type=\"date\">\n * returns and expects values in \"YYYY-MM-DD\" format without timezone info.\n *\n * `parseDateFromInput` appends \"T00:00:00\" (no \"Z\") so the date is parsed as\n * local midnight rather than UTC midnight. Without this, negative-offset\n * timezones (e.g. US timezones) would shift \"2024-01-15\" to Jan 14 locally.\n *\n * Consumers providing dates from an API (typically UTC) should handle\n * UTC-to-local conversion before passing values to these functions.\n */\n\nexport function formatDateForInput(date) {\n if (date == null) return \"\";\n const year = date.getFullYear();\n const month = String(date.getMonth() + 1).padStart(2, \"0\");\n const day = String(date.getDate()).padStart(2, \"0\");\n return `${year}-${month}-${day}`;\n}\n\n/** Formats the time portion of a Date as \"HH:mm\". */\nexport function formatTime(date) {\n const hours = String(date.getHours()).padStart(2, \"0\");\n const minutes = String(date.getMinutes()).padStart(2, \"0\");\n return `${hours}:${minutes}`;\n}\nexport function parseDateFromInput(value) {\n if (!value) return undefined;\n const date = new Date(value + \"T00:00:00\");\n return isNaN(date.getTime()) ? undefined : date;\n}\nexport function formatDateForDisplay(date, fallback = \"\") {\n if (date == null) return fallback;\n return date.toLocaleDateString(undefined, {\n year: \"numeric\",\n month: \"short\",\n day: \"numeric\"\n });\n}\n\n/** Formats a Date as \"2024-06-15 14:30\" — space-separated, parsable, for text input editing. */\nexport function formatDatetimeForInput(date) {\n if (date == null) return \"\";\n return `${formatDateForInput(date)} ${formatTime(date)}`;\n}\n\n/**\n * Parses space-separated (\"2024-06-15 14:30\") or T-separated datetime strings.\n * Inverse of `formatDatetimeForInput`, which joins date and time with a space\n * for readability. Here we replace that space with \"T\" so `new Date()` parses\n * it as a local datetime (e.g. \"2024-06-15T14:30\").\n */\nexport function parseDatetimeFromInput(value) {\n if (!value) return undefined;\n const normalized = value.includes(\"T\") ? value : value.replace(/\\s/, \"T\");\n const date = new Date(normalized);\n return isNaN(date.getTime()) ? undefined : date;\n}\n\n/** Returns true if `date` falls within [min, max] (inclusive). */\nexport function isDateInRange(date, min, max) {\n if (min != null && date.getTime() < min.getTime()) return false;\n if (max != null && date.getTime() > max.getTime()) return false;\n return true;\n}\nexport function parseDateFromISO(value) {\n if (value == null) return undefined;\n if (value instanceof Date) return value;\n const date = new Date(value);\n return isNaN(date.getTime()) ? undefined : date;\n}\n\n/** Parses an \"HH:mm\" time string into hours and minutes. */\nexport function parseTimeString(timeString) {\n const [hoursStr, minutesStr] = timeString.split(\":\");\n const hours = parseInt(hoursStr ?? \"0\", 10);\n const minutes = parseInt(minutesStr ?? \"0\", 10);\n return {\n hours: isNaN(hours) ? 0 : hours,\n minutes: isNaN(minutes) ? 0 : minutes\n };\n}\n\n/** Returns the \"HH:mm\" time value for a date, defaulting to \"00:00\" when null. */\nexport function getTimeValue(date) {\n return date != null ? formatTime(date) : \"00:00\";\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 * Shared constants and utilities for DateCalendar, DateRangeCalendar,\n * DatePicker, and DateRangePicker.\n */\n\n/** Fallback year range for the month/year dropdown when no min/max is provided. */\nexport const DEFAULT_FROM_YEAR = new Date().getFullYear() - 10;\nexport const DEFAULT_TO_YEAR = new Date().getFullYear() + 10;\n\n/**\n * Builds the `disabled` matcher array for react-day-picker from optional\n * min/max date constraints. Dates before min or after max are disabled.\n */\nexport function buildDisabledMatchers(min, max) {\n const matchers = [];\n if (min != null) {\n const before = {\n before: min\n };\n matchers.push(before);\n }\n if (max != null) {\n const after = {\n after: max\n };\n matchers.push(after);\n }\n return matchers;\n}\n\n/**\n * Stable click handler that stops event propagation. Used on date inputs\n * inside Popover.Trigger to prevent the trigger's click handler from\n * toggling the popover closed when the user clicks the already-open input.\n */\nexport const stopPropagation = e => {\n e.stopPropagation();\n // Base UI chains its trigger handler after this click handler. When focus or\n // pointer-down already opened the popover, suppress that handler so the same\n // click does not immediately toggle the popover closed again.\n const preventBaseUIHandler = e.preventBaseUIHandler;\n preventBaseUIHandler?.();\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 box-shadow: var(--osdk-time-picker-input-shadow);\n\n &:focus-visible {\n outline: var(--osdk-time-picker-input-focus-outline);\n outline-offset: var(--osdk-input-focus-outline-offset);\n box-shadow: var(--osdk-time-picker-input-focus-shadow);\n }\n\n &[aria-invalid] {\n box-shadow: var(--osdk-time-picker-input-shadow-error);\n }\n\n &[aria-invalid]:focus-visible {\n box-shadow: var(--osdk-time-picker-input-focus-shadow-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","/*\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\";\nconst NUMERIC_INPUT_PATTERN = \"[0-9]*\";\nconst SEGMENT_LIMITS = {\n hours: {\n min: 0,\n max: 23\n },\n minutes: {\n min: 0,\n max: 59\n }\n};\nexport const TimePicker = /*#__PURE__*/React.memo(function TimePickerFn({\n value,\n onChange,\n label = \"Time\"\n}) {\n const valueTimestamp = value?.getTime() ?? null;\n const valueSegments = useMemo(() => segmentsFromTimestamp(valueTimestamp), [valueTimestamp]);\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 (prevSegments.hours !== valueSegments.hours || prevSegments.minutes !== valueSegments.minutes) {\n setPrevSegments(valueSegments);\n setDraftSegments(valueSegments);\n }\n const hourText = draftSegments.hours;\n const minuteText = draftSegments.minutes;\n const hourInvalid = isSegmentInvalid(hourText, \"hours\");\n const minuteInvalid = isSegmentInvalid(minuteText, \"minutes\");\n const handleSegmentChange = useCallback((segment, nextText) => {\n setDraftSegments(prev => replaceSegmentText(prev, {\n segment,\n nextText\n }));\n }, []);\n const emitChange = useCallback((hours, minutes) => {\n const nextDate = value != null ? new Date(value.getTime()) : new Date();\n nextDate.setHours(hours, minutes, 0, 0);\n onChange?.(nextDate);\n }, [onChange, value]);\n const handleSegmentBlur = useCallback((segment, text) => {\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 const clampedSegment = clampSegment(parsedSegment, segment);\n setDraftSegments(prev => replaceSegmentText(prev, {\n segment,\n nextText: formatSegment(clampedSegment, segment)\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\" ? clampedSegment : currentMinutes;\n if (nextHours !== currentHours || nextMinutes !== currentMinutes) {\n emitChange(nextHours, nextMinutes);\n }\n }, [emitChange, valueSegments]);\n const handleHourChange = useCallback(nextText => handleSegmentChange(\"hours\", nextText), [handleSegmentChange]);\n const handleMinuteChange = useCallback(nextText => handleSegmentChange(\"minutes\", nextText), [handleSegmentChange]);\n const handleHourBlur = useCallback(() => handleSegmentBlur(\"hours\", hourText), [handleSegmentBlur, hourText]);\n const handleMinuteBlur = useCallback(() => handleSegmentBlur(\"minutes\", minuteText), [handleSegmentBlur, minuteText]);\n return /*#__PURE__*/React.createElement(\"div\", {\n className: styles.osdkTimePickerRoot,\n role: \"group\",\n \"aria-label\": label\n }, /*#__PURE__*/React.createElement(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 }), /*#__PURE__*/React.createElement(\"span\", {\n className: styles.osdkTimePickerSeparator,\n \"aria-hidden\": \"true\"\n }, \":\"), /*#__PURE__*/React.createElement(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});\nfunction replaceSegmentText(segments, {\n segment,\n nextText\n}) {\n return {\n ...segments,\n [segment]: nextText\n };\n}\nfunction segmentsFromTimestamp(valueTimestamp) {\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}\nfunction formatSegment(value, segment) {\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}\nfunction parseNumber(text) {\n if (!/^\\d{1,2}$/.test(text)) {\n return undefined;\n }\n const parsed = Number(text);\n return Number.isNaN(parsed) ? undefined : parsed;\n}\nfunction parseSegment(text, segment) {\n const parsed = parseNumber(text);\n if (parsed == null) {\n return undefined;\n }\n const {\n min,\n max\n } = SEGMENT_LIMITS[segment];\n return parsed >= min && parsed <= max ? parsed : undefined;\n}\nfunction isSegmentInvalid(text, segment) {\n return parseSegment(text, segment) == null;\n}\nfunction clampSegment(value, segment) {\n const {\n min,\n max\n } = SEGMENT_LIMITS[segment];\n return Math.min(Math.max(value, min), max);\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","/*\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 { ChevronLeft, ChevronRight } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { useCallback, useMemo } from \"react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { ActionButton } from \"../../base-components/action-button/ActionButton.js\";\nimport { isDateInRange } from \"../../shared/dateUtils.js\";\nimport { buildDisabledMatchers, DEFAULT_FROM_YEAR, DEFAULT_TO_YEAR } from \"./calendarShared.js\";\nimport { TimePicker } from \"./TimePicker.js\";\nimport styles from \"./DateCalendar.module.css\";\nexport const CLASS_NAMES = {\n root: styles.calendar,\n months: styles.calendarMonths,\n table: styles.calendarMonthGrid,\n head_cell: styles.calendarWeekday,\n cell: styles.calendarDay,\n day: styles.calendarDayButton,\n day_selected: styles.calendarSelected,\n day_today: styles.calendarToday,\n day_outside: styles.calendarOutside,\n day_disabled: styles.calendarDisabled,\n day_hidden: styles.calendarHidden,\n nav: styles.calendarNav,\n nav_button_previous: classnames(styles.calendarNavButton, styles.calendarNavPrev),\n nav_button_next: classnames(styles.calendarNavButton, styles.calendarNavNext),\n caption: styles.calendarMonthCaption,\n caption_label: styles.calendarVhidden,\n caption_dropdowns: styles.calendarCaptionDropdowns,\n dropdown: styles.calendarDropdown,\n dropdown_month: styles.calendarDropdown,\n dropdown_year: styles.calendarDropdown,\n nav_icon: styles.calendarChevron,\n vhidden: styles.calendarVhidden,\n tfoot: styles.calendarFooter\n};\nconst NAV_ICON_SIZE = 12;\nfunction IconLeft() {\n return /*#__PURE__*/React.createElement(ChevronLeft, {\n size: NAV_ICON_SIZE\n });\n}\nfunction IconRight() {\n return /*#__PURE__*/React.createElement(ChevronRight, {\n size: NAV_ICON_SIZE\n });\n}\nexport const CALENDAR_COMPONENTS = {\n IconLeft,\n IconRight\n};\nexport default function DateCalendar({\n dateSelected,\n onSelect,\n onTimeChange,\n onClear,\n month,\n onMonthChange,\n min,\n max,\n todayButtonText = \"Today\",\n clearButtonText = \"Clear\"\n}) {\n const disabled = useMemo(() => buildDisabledMatchers(min, max), [min, max]);\n const showTime = onTimeChange != null;\n const fromYear = min != null ? min.getFullYear() : DEFAULT_FROM_YEAR;\n const toYear = max != null ? max.getFullYear() : DEFAULT_TO_YEAR;\n const today = new Date();\n // Compare at midnight so the Today button stays enabled when min/max are\n // set to today's date at midnight (the common case for date-only bounds).\n const todayMidnight = new Date(today.getFullYear(), today.getMonth(), today.getDate());\n const isTodaySelectable = isDateInRange(todayMidnight, min, max);\n const applySelectedTime = useCallback(selected => {\n // Calendar day buttons provide local-midnight dates. In datetime mode,\n // keep the currently visible time when the user changes only the day.\n // The Today action intentionally bypasses this path and uses wall-clock\n // time from `new Date()`.\n if (!showTime) {\n return selected;\n }\n if (dateSelected == null) {\n return selected;\n }\n const date = new Date(selected.getTime());\n date.setHours(dateSelected.getHours(), dateSelected.getMinutes(), 0, 0);\n return date;\n }, [dateSelected, showTime]);\n const handleSelect = useCallback(selected => {\n onSelect(selected == null ? undefined : applySelectedTime(selected));\n }, [applySelectedTime, onSelect]);\n const handleTodayClick = useCallback(() => {\n if (!isTodaySelectable) {\n return;\n }\n onSelect(new Date());\n }, [isTodaySelectable, onSelect]);\n const calendarFooter = /*#__PURE__*/React.createElement(React.Fragment, null, showTime && /*#__PURE__*/React.createElement(\"div\", {\n className: styles.calendarTimeFooter\n }, /*#__PURE__*/React.createElement(TimePicker, {\n value: dateSelected ?? null,\n onChange: onTimeChange\n })), /*#__PURE__*/React.createElement(\"div\", {\n className: styles.calendarActionBar\n }, /*#__PURE__*/React.createElement(ActionButton, {\n type: \"button\",\n appearance: \"minimal\",\n disabled: !isTodaySelectable,\n onClick: handleTodayClick\n }, todayButtonText), onClear != null && /*#__PURE__*/React.createElement(ActionButton, {\n type: \"button\",\n appearance: \"minimal\",\n onClick: onClear\n }, clearButtonText)));\n return /*#__PURE__*/React.createElement(DayPicker, {\n mode: \"single\",\n selected: dateSelected,\n onSelect: handleSelect,\n month: month,\n onMonthChange: onMonthChange,\n disabled: disabled,\n defaultMonth: dateSelected,\n classNames: CLASS_NAMES,\n components: CALENDAR_COMPONENTS,\n footer: calendarFooter\n // Render month/year as dropdown selects + prev/next arrows,\n // so users can jump directly to any month/year without paging.\n ,\n captionLayout: \"dropdown-buttons\",\n fromYear: fromYear,\n toYear: toYear,\n showOutsideDays: true\n // Always render 6 rows so the calendar height doesn't jump between months.\n ,\n fixedWeeks: true\n });\n}"]}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var chunkKQ4B2XDH_cjs = require('./chunk-KQ4B2XDH.cjs');
3
+ var chunk3NK7SJZJ_cjs = require('./chunk-3NK7SJZJ.cjs');
4
4
  var input = require('@base-ui/react/input');
5
5
  var popover = require('@base-ui/react/popover');
6
6
  var classnames3 = require('classnames');
@@ -37,7 +37,7 @@ var PortalDismissLayer = /* @__PURE__ */ React6__default.default.memo(function P
37
37
  var DatePickerCommon_default = {};
38
38
 
39
39
  // src/shared/calendar/LazyDateCalendar.tsx
40
- var DateCalendarLazy = /* @__PURE__ */ React6__default.default.lazy(() => import('./DateCalendar-FCZXD24P.cjs'));
40
+ var DateCalendarLazy = /* @__PURE__ */ React6__default.default.lazy(() => import('./DateCalendar-62IDZDEI.cjs'));
41
41
  function LazyDateCalendar(props) {
42
42
  return /* @__PURE__ */ React6__default.default.createElement(React6.Suspense, {
43
43
  fallback: /* @__PURE__ */ React6__default.default.createElement("div", {
@@ -69,7 +69,7 @@ function useDateEditState({
69
69
  const inputError = (() => {
70
70
  if (!isEditing || inputValue === "") return null;
71
71
  if (dateValue == null) return "invalid";
72
- if (!chunkKQ4B2XDH_cjs.isDateInRange(dateValue, min, max)) return "out-of-range";
72
+ if (!chunk3NK7SJZJ_cjs.isDateInRange(dateValue, min, max)) return "out-of-range";
73
73
  return null;
74
74
  })();
75
75
  const validatedDate = inputError == null && dateValue != null ? dateValue : null;
@@ -141,9 +141,9 @@ var DatePicker = /* @__PURE__ */ React6__default.default.memo(function DatePicke
141
141
  const [isOpen, setIsOpen] = React6.useState(false);
142
142
  const [visibleCalendarMonth, setVisibleCalendarMonth] = React6.useState(value ?? /* @__PURE__ */ new Date());
143
143
  const skipReopenRef = React6.useRef(false);
144
- const editFormatFn = showTime ? chunkKQ4B2XDH_cjs.formatDatetimeForInput : chunkKQ4B2XDH_cjs.formatDateForInput;
145
- const displayFormatFn = formatDate ?? (showTime ? chunkKQ4B2XDH_cjs.formatDatetimeForInput : chunkKQ4B2XDH_cjs.formatDateForInput);
146
- const parseFn = parseDate ?? (showTime ? chunkKQ4B2XDH_cjs.parseDatetimeFromInput : chunkKQ4B2XDH_cjs.parseDateFromInput);
144
+ const editFormatFn = showTime ? chunk3NK7SJZJ_cjs.formatDatetimeForInput : chunk3NK7SJZJ_cjs.formatDateForInput;
145
+ const displayFormatFn = formatDate ?? (showTime ? chunk3NK7SJZJ_cjs.formatDatetimeForInput : chunk3NK7SJZJ_cjs.formatDateForInput);
146
+ const parseFn = parseDate ?? (showTime ? chunk3NK7SJZJ_cjs.parseDatetimeFromInput : chunk3NK7SJZJ_cjs.parseDateFromInput);
147
147
  const handleChange = React6.useCallback((date) => {
148
148
  if (onChange == null) {
149
149
  return;
@@ -192,7 +192,7 @@ var DatePicker = /* @__PURE__ */ React6__default.default.memo(function DatePicke
192
192
  const handleInputValueChange = React6.useCallback((nextValue) => {
193
193
  setInputValue(nextValue);
194
194
  const parsedDate = nextValue !== "" ? parseFn(nextValue) : void 0;
195
- if (parsedDate != null && chunkKQ4B2XDH_cjs.isDateInRange(parsedDate, min, max)) {
195
+ if (parsedDate != null && chunk3NK7SJZJ_cjs.isDateInRange(parsedDate, min, max)) {
196
196
  setVisibleCalendarMonth(parsedDate);
197
197
  }
198
198
  }, [max, min, parseFn, setInputValue]);
@@ -296,7 +296,7 @@ var DatePicker = /* @__PURE__ */ React6__default.default.memo(function DatePicke
296
296
  onFocus: handleFocus,
297
297
  onPointerDown: handlePointerDown,
298
298
  onBlur: handleBlur,
299
- onClick: chunkKQ4B2XDH_cjs.stopPropagation,
299
+ onClick: chunk3NK7SJZJ_cjs.stopPropagation,
300
300
  onKeyDown: handleKeyDown,
301
301
  placeholder,
302
302
  autoComplete: "off",
@@ -346,7 +346,7 @@ var DatePicker = /* @__PURE__ */ React6__default.default.memo(function DatePicke
346
346
  className: DatePickerCommon_default.osdkDatePickerFocusBoundary
347
347
  })))));
348
348
  });
349
- var DateRangeCalendarLazy = /* @__PURE__ */ React6__default.default.lazy(() => import('./DateRangeCalendar-XN2ZWAFK.cjs'));
349
+ var DateRangeCalendarLazy = /* @__PURE__ */ React6__default.default.lazy(() => import('./DateRangeCalendar-67R6GXCH.cjs'));
350
350
  function LazyDateRangeCalendar(props) {
351
351
  return /* @__PURE__ */ React6__default.default.createElement(React6.Suspense, {
352
352
  fallback: /* @__PURE__ */ React6__default.default.createElement("div", {
@@ -372,7 +372,7 @@ var EMPTY_RANGE = [null, null];
372
372
  var SHARED_INPUT_PROPS = {
373
373
  className: DatePickerCommon_default.osdkDatePickerInput,
374
374
  type: "text",
375
- onClick: chunkKQ4B2XDH_cjs.stopPropagation,
375
+ onClick: chunk3NK7SJZJ_cjs.stopPropagation,
376
376
  autoComplete: "off",
377
377
  role: "combobox",
378
378
  "aria-haspopup": "dialog"
@@ -403,9 +403,9 @@ var DateRangePicker = /* @__PURE__ */ React6__default.default.memo(function Date
403
403
  const skipReopenRef = React6.useRef(false);
404
404
  const [activeBoundary, setActiveBoundary] = React6.useState("start");
405
405
  const [startDate, endDate] = value ?? EMPTY_RANGE;
406
- const editFormatFn = showTime ? chunkKQ4B2XDH_cjs.formatDatetimeForInput : chunkKQ4B2XDH_cjs.formatDateForInput;
407
- const displayFormatFn = formatDate ?? (showTime ? chunkKQ4B2XDH_cjs.formatDatetimeForInput : chunkKQ4B2XDH_cjs.formatDateForInput);
408
- const parseFn = parseDate ?? (showTime ? chunkKQ4B2XDH_cjs.parseDatetimeFromInput : chunkKQ4B2XDH_cjs.parseDateFromInput);
406
+ const editFormatFn = showTime ? chunk3NK7SJZJ_cjs.formatDatetimeForInput : chunk3NK7SJZJ_cjs.formatDateForInput;
407
+ const displayFormatFn = formatDate ?? (showTime ? chunk3NK7SJZJ_cjs.formatDatetimeForInput : chunk3NK7SJZJ_cjs.formatDateForInput);
408
+ const parseFn = parseDate ?? (showTime ? chunk3NK7SJZJ_cjs.parseDatetimeFromInput : chunk3NK7SJZJ_cjs.parseDateFromInput);
409
409
  const startOnChange = React6.useCallback((date) => {
410
410
  if (date != null && isOverlapping(date, endDate, allowSingleDayRange)) {
411
411
  return;
@@ -608,11 +608,11 @@ var DateRangePicker = /* @__PURE__ */ React6__default.default.memo(function Date
608
608
  from: startDate ?? void 0,
609
609
  to: endDate ?? void 0
610
610
  } : void 0;
611
- const timeFooter = showTime ? /* @__PURE__ */ React6__default.default.createElement(React6__default.default.Fragment, null, /* @__PURE__ */ React6__default.default.createElement(chunkKQ4B2XDH_cjs.TimePicker, {
611
+ const timeFooter = showTime ? /* @__PURE__ */ React6__default.default.createElement(React6__default.default.Fragment, null, /* @__PURE__ */ React6__default.default.createElement(chunk3NK7SJZJ_cjs.TimePicker, {
612
612
  value: activeStartDateValue ?? null,
613
613
  onChange: handleStartTimeChange,
614
614
  label: "Start time"
615
- }), /* @__PURE__ */ React6__default.default.createElement(chunkKQ4B2XDH_cjs.TimePicker, {
615
+ }), /* @__PURE__ */ React6__default.default.createElement(chunk3NK7SJZJ_cjs.TimePicker, {
616
616
  value: activeEndDateValue ?? null,
617
617
  onChange: handleEndTimeChange,
618
618
  label: "End time"
@@ -886,5 +886,5 @@ exports.DatePicker = DatePicker;
886
886
  exports.DateRangePicker = DateRangePicker;
887
887
  exports.EMPTY_RANGE = EMPTY_RANGE;
888
888
  exports.PortalDismissLayer = PortalDismissLayer;
889
- //# sourceMappingURL=chunk-ENE2RWIL.cjs.map
890
- //# sourceMappingURL=chunk-ENE2RWIL.cjs.map
889
+ //# sourceMappingURL=chunk-3O4IPFOY.cjs.map
890
+ //# sourceMappingURL=chunk-3O4IPFOY.cjs.map