@osdk/react-components 0.12.0 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (328) hide show
  1. package/AGENTS.md +4 -0
  2. package/CHANGELOG.md +11 -0
  3. package/build/browser/action-form/ActionForm.js +19 -11
  4. package/build/browser/action-form/ActionForm.js.map +1 -1
  5. package/build/browser/action-form/ActionFormApi.js.map +1 -1
  6. package/build/browser/action-form/BaseForm.js +19 -13
  7. package/build/browser/action-form/BaseForm.js.map +1 -1
  8. package/build/browser/action-form/BaseForm.module.css +7 -7
  9. package/build/browser/action-form/FormField.js +5 -2
  10. package/build/browser/action-form/FormField.js.map +1 -1
  11. package/build/browser/action-form/FormField.module.css +6 -1
  12. package/build/browser/action-form/FormField.module.css.js +1 -0
  13. package/build/browser/action-form/FormFieldApi.js +7 -1
  14. package/build/browser/action-form/FormFieldApi.js.map +1 -1
  15. package/build/browser/action-form/FormHeader.module.css +2 -2
  16. package/build/browser/action-form/fields/DateCalendar.js +41 -3
  17. package/build/browser/action-form/fields/DateCalendar.js.map +1 -1
  18. package/build/browser/action-form/fields/DateCalendar.module.css +59 -10
  19. package/build/browser/action-form/fields/DateCalendar.module.css.js +5 -1
  20. package/build/browser/action-form/fields/DateRangeCalendar.js +8 -5
  21. package/build/browser/action-form/fields/DateRangeCalendar.js.map +1 -1
  22. package/build/browser/action-form/fields/DateRangeInputField.js +76 -61
  23. package/build/browser/action-form/fields/DateRangeInputField.js.map +1 -1
  24. package/build/browser/action-form/fields/DateRangeInputField.module.css +0 -15
  25. package/build/browser/action-form/fields/DateRangeInputField.module.css.js +1 -2
  26. package/build/browser/action-form/fields/DatetimePickerField.js +74 -40
  27. package/build/browser/action-form/fields/DatetimePickerField.js.map +1 -1
  28. package/build/browser/action-form/fields/DatetimePickerField.module.css +2 -9
  29. package/build/browser/action-form/fields/FieldBridge.js +1 -1
  30. package/build/browser/action-form/fields/FieldBridge.js.map +1 -1
  31. package/build/browser/action-form/fields/FilePickerField.js +47 -39
  32. package/build/browser/action-form/fields/FilePickerField.js.map +1 -1
  33. package/build/browser/action-form/fields/FilePickerField.module.css +43 -31
  34. package/build/browser/action-form/fields/FilePickerField.module.css.js +2 -2
  35. package/build/browser/action-form/fields/FormFieldRenderer.js +9 -0
  36. package/build/browser/action-form/fields/FormFieldRenderer.js.map +1 -1
  37. package/build/browser/action-form/fields/RadioButtonsField.module.css +3 -3
  38. package/build/browser/action-form/fields/SwitchField.js +34 -0
  39. package/build/browser/action-form/fields/SwitchField.js.map +1 -0
  40. package/build/browser/action-form/fields/TimePicker.js +165 -26
  41. package/build/browser/action-form/fields/TimePicker.js.map +1 -1
  42. package/build/browser/action-form/fields/TimePicker.module.css +27 -2
  43. package/build/browser/action-form/fields/TimePicker.module.css.js +3 -1
  44. package/build/browser/action-form/fields/calendarShared.js +5 -0
  45. package/build/browser/action-form/fields/calendarShared.js.map +1 -1
  46. package/build/browser/action-form/fields/useDateEditState.js +3 -4
  47. package/build/browser/action-form/fields/useDateEditState.js.map +1 -1
  48. package/build/browser/base-components/action-button/ActionButton.js +2 -1
  49. package/build/browser/base-components/action-button/ActionButton.js.map +1 -1
  50. package/build/browser/base-components/action-button/ActionButton.module.css +19 -0
  51. package/build/browser/base-components/action-button/ActionButton.module.css.js +2 -1
  52. package/build/browser/base-components/combobox/Combobox.module.css +31 -3
  53. package/build/browser/base-components/select/Select.module.css +18 -0
  54. package/build/browser/base-components/switch/Switch.module.css +18 -6
  55. package/build/browser/filter-list/base/inputs/ListogramInput.js +34 -6
  56. package/build/browser/filter-list/base/inputs/ListogramInput.js.map +1 -1
  57. package/build/browser/filter-list/base/inputs/ListogramInput.module.css +11 -5
  58. package/build/browser/filter-list/base/inputs/ListogramInput.module.css.js +1 -1
  59. package/build/browser/filter-list/base/inputs/MultiSelectInput.js +20 -12
  60. package/build/browser/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
  61. package/build/browser/filter-list/base/inputs/NoValueLabel.js +36 -0
  62. package/build/browser/filter-list/base/inputs/NoValueLabel.js.map +1 -0
  63. package/build/browser/filter-list/base/inputs/NoValueLabel.module.css +20 -0
  64. package/build/browser/filter-list/base/inputs/NoValueLabel.module.css.js +6 -0
  65. package/build/browser/filter-list/base/inputs/NullValueWrapper.js +4 -3
  66. package/build/browser/filter-list/base/inputs/NullValueWrapper.js.map +1 -1
  67. package/build/browser/filter-list/base/inputs/NullValueWrapper.module.css +10 -7
  68. package/build/browser/filter-list/base/inputs/NullValueWrapper.module.css.js +1 -1
  69. package/build/browser/filter-list/base/inputs/SingleSelectInput.js +13 -8
  70. package/build/browser/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
  71. package/build/browser/filter-list/base/inputs/TextTagsInput.js +6 -2
  72. package/build/browser/filter-list/base/inputs/TextTagsInput.js.map +1 -1
  73. package/build/browser/filter-list/hooks/useFilterListState.js +7 -6
  74. package/build/browser/filter-list/hooks/useFilterListState.js.map +1 -1
  75. package/build/browser/filter-list/hooks/useStableMapEntries.js +35 -0
  76. package/build/browser/filter-list/hooks/useStableMapEntries.js.map +1 -0
  77. package/build/browser/filter-list/utils/filterValues.js +13 -0
  78. package/build/browser/filter-list/utils/filterValues.js.map +1 -1
  79. package/build/browser/object-table/DefaultCellRenderer.js +12 -2
  80. package/build/browser/object-table/DefaultCellRenderer.js.map +1 -1
  81. package/build/browser/object-table/EditableCell.js +14 -4
  82. package/build/browser/object-table/EditableCell.js.map +1 -1
  83. package/build/browser/object-table/EditableCell.module.css +4 -0
  84. package/build/browser/object-table/EditableCell.module.css.js +1 -0
  85. package/build/browser/object-table/ObjectTable.js +3 -1
  86. package/build/browser/object-table/ObjectTable.js.map +1 -1
  87. package/build/browser/object-table/ObjectTableApi.js.map +1 -1
  88. package/build/browser/object-table/Table.js +8 -4
  89. package/build/browser/object-table/Table.js.map +1 -1
  90. package/build/browser/object-table/TableBody.js +4 -2
  91. package/build/browser/object-table/TableBody.js.map +1 -1
  92. package/build/browser/object-table/TableRow.js +12 -4
  93. package/build/browser/object-table/TableRow.js.map +1 -1
  94. package/build/browser/object-table/hooks/useColumnDefs.js.map +1 -1
  95. package/build/browser/object-table/utils/editableUtils.js +39 -0
  96. package/build/browser/object-table/utils/editableUtils.js.map +1 -0
  97. package/build/browser/object-table/utils/shouldShowEditableCell.js +1 -1
  98. package/build/browser/object-table/utils/shouldShowEditableCell.js.map +1 -1
  99. package/build/browser/object-table/utils/types.js.map +1 -1
  100. package/build/browser/styles.css +331 -130
  101. package/build/browser/tokens/component-tokens/button.css +15 -0
  102. package/build/browser/tokens/component-tokens/combobox.css +9 -0
  103. package/build/browser/tokens/component-tokens/datetime-picker.css +2 -2
  104. package/build/browser/tokens/component-tokens/file-picker.css +0 -10
  105. package/build/browser/tokens/component-tokens/filter-list.css +9 -6
  106. package/build/browser/tokens/component-tokens/form-section.css +1 -1
  107. package/build/browser/tokens/component-tokens/form.css +9 -5
  108. package/build/browser/tokens/component-tokens/table.css +3 -5
  109. package/build/browser/tokens.css +1 -0
  110. package/build/browser/util/UserAgent.js +1 -1
  111. package/build/cjs/{DateCalendar-2W4QHEEI.css → DateCalendar-G7RC2FCG.css} +105 -8
  112. package/build/cjs/DateCalendar-G7RC2FCG.css.map +1 -0
  113. package/build/cjs/DateCalendar-RX7HP2XP.cjs +26 -0
  114. package/build/cjs/{DateCalendar-QGSYBWJB.cjs.map → DateCalendar-RX7HP2XP.cjs.map} +1 -1
  115. package/build/cjs/{DateRangeCalendar-M63S2LLG.css → DateRangeCalendar-JBVYJDBJ.css} +105 -8
  116. package/build/cjs/DateRangeCalendar-JBVYJDBJ.css.map +1 -0
  117. package/build/cjs/DateRangeCalendar-OHT4IUWQ.cjs +54 -0
  118. package/build/cjs/DateRangeCalendar-OHT4IUWQ.cjs.map +1 -0
  119. package/build/cjs/{chunk-T7I6O43T.cjs → chunk-6SPXSFPI.cjs} +237 -85
  120. package/build/cjs/chunk-6SPXSFPI.cjs.map +1 -0
  121. package/build/cjs/{chunk-SZXVBDSA.cjs → chunk-6UDBHYSO.cjs} +3 -3
  122. package/build/cjs/{chunk-SZXVBDSA.cjs.map → chunk-6UDBHYSO.cjs.map} +1 -1
  123. package/build/cjs/{chunk-YBDS5WQP.cjs → chunk-7H6WXQ35.cjs} +4 -4
  124. package/build/cjs/{chunk-YBDS5WQP.cjs.map → chunk-7H6WXQ35.cjs.map} +1 -1
  125. package/build/cjs/{chunk-VVJFMOZI.cjs → chunk-I3OSD6CF.cjs} +19 -45
  126. package/build/cjs/chunk-I3OSD6CF.cjs.map +1 -0
  127. package/build/cjs/chunk-MD4KDE44.cjs +41 -0
  128. package/build/cjs/chunk-MD4KDE44.cjs.map +1 -0
  129. package/build/cjs/{chunk-YPXTSEE7.cjs → chunk-MLFMSZJQ.cjs} +85 -38
  130. package/build/cjs/chunk-MLFMSZJQ.cjs.map +1 -0
  131. package/build/cjs/chunk-MQYOHGPY.cjs +52 -0
  132. package/build/cjs/chunk-MQYOHGPY.cjs.map +1 -0
  133. package/build/cjs/{chunk-BJDCC446.cjs → chunk-PTTCWNZZ.cjs} +417 -364
  134. package/build/cjs/chunk-PTTCWNZZ.cjs.map +1 -0
  135. package/build/cjs/{chunk-B2GRQRWU.cjs → chunk-TOJSJN3L.cjs} +44 -8
  136. package/build/cjs/chunk-TOJSJN3L.cjs.map +1 -0
  137. package/build/cjs/{chunk-JLESWL47.cjs → chunk-V7XWTJV7.cjs} +4 -2
  138. package/build/cjs/chunk-V7XWTJV7.cjs.map +1 -0
  139. package/build/cjs/{chunk-L5LPFCXT.cjs → chunk-W2IASYE4.cjs} +163 -125
  140. package/build/cjs/chunk-W2IASYE4.cjs.map +1 -0
  141. package/build/cjs/chunk-X337DNCW.cjs +45 -0
  142. package/build/cjs/chunk-X337DNCW.cjs.map +1 -0
  143. package/build/cjs/{chunk-SB2VTP67.cjs → chunk-Z7VHLTKD.cjs} +2 -64
  144. package/build/cjs/chunk-Z7VHLTKD.cjs.map +1 -0
  145. package/build/cjs/public/experimental/action-form.cjs +11 -9
  146. package/build/cjs/public/experimental/action-form.css +223 -68
  147. package/build/cjs/public/experimental/action-form.css.map +1 -1
  148. package/build/cjs/public/experimental/action-form.d.cts +83 -74
  149. package/build/cjs/public/experimental/filter-list.cjs +9 -8
  150. package/build/cjs/public/experimental/filter-list.css +38 -19
  151. package/build/cjs/public/experimental/filter-list.css.map +1 -1
  152. package/build/cjs/public/experimental/object-table.cjs +14 -12
  153. package/build/cjs/public/experimental/object-table.css +152 -59
  154. package/build/cjs/public/experimental/object-table.css.map +1 -1
  155. package/build/cjs/public/experimental/object-table.d.cts +39 -20
  156. package/build/cjs/public/experimental/pdf-viewer.cjs +24 -24
  157. package/build/cjs/public/experimental.cjs +46 -44
  158. package/build/cjs/public/experimental.css +242 -139
  159. package/build/cjs/public/experimental.css.map +1 -1
  160. package/build/cjs/public/primitives.cjs +8 -7
  161. package/build/cjs/public/primitives.css +15 -0
  162. package/build/cjs/public/primitives.css.map +1 -1
  163. package/build/cjs/public/primitives.d.cts +1 -0
  164. package/build/esm/action-form/ActionForm.js +19 -11
  165. package/build/esm/action-form/ActionForm.js.map +1 -1
  166. package/build/esm/action-form/ActionFormApi.js.map +1 -1
  167. package/build/esm/action-form/BaseForm.js +19 -13
  168. package/build/esm/action-form/BaseForm.js.map +1 -1
  169. package/build/esm/action-form/BaseForm.module.css +7 -7
  170. package/build/esm/action-form/FormField.js +5 -2
  171. package/build/esm/action-form/FormField.js.map +1 -1
  172. package/build/esm/action-form/FormField.module.css +6 -1
  173. package/build/esm/action-form/FormFieldApi.js +7 -1
  174. package/build/esm/action-form/FormFieldApi.js.map +1 -1
  175. package/build/esm/action-form/FormHeader.module.css +2 -2
  176. package/build/esm/action-form/fields/DateCalendar.js +41 -3
  177. package/build/esm/action-form/fields/DateCalendar.js.map +1 -1
  178. package/build/esm/action-form/fields/DateCalendar.module.css +59 -10
  179. package/build/esm/action-form/fields/DateRangeCalendar.js +8 -5
  180. package/build/esm/action-form/fields/DateRangeCalendar.js.map +1 -1
  181. package/build/esm/action-form/fields/DateRangeInputField.js +76 -61
  182. package/build/esm/action-form/fields/DateRangeInputField.js.map +1 -1
  183. package/build/esm/action-form/fields/DateRangeInputField.module.css +0 -15
  184. package/build/esm/action-form/fields/DatetimePickerField.js +74 -40
  185. package/build/esm/action-form/fields/DatetimePickerField.js.map +1 -1
  186. package/build/esm/action-form/fields/DatetimePickerField.module.css +2 -9
  187. package/build/esm/action-form/fields/FieldBridge.js +1 -1
  188. package/build/esm/action-form/fields/FieldBridge.js.map +1 -1
  189. package/build/esm/action-form/fields/FilePickerField.js +47 -39
  190. package/build/esm/action-form/fields/FilePickerField.js.map +1 -1
  191. package/build/esm/action-form/fields/FilePickerField.module.css +43 -31
  192. package/build/esm/action-form/fields/FormFieldRenderer.js +9 -0
  193. package/build/esm/action-form/fields/FormFieldRenderer.js.map +1 -1
  194. package/build/esm/action-form/fields/RadioButtonsField.module.css +3 -3
  195. package/build/esm/action-form/fields/SwitchField.js +34 -0
  196. package/build/esm/action-form/fields/SwitchField.js.map +1 -0
  197. package/build/esm/action-form/fields/TimePicker.js +165 -26
  198. package/build/esm/action-form/fields/TimePicker.js.map +1 -1
  199. package/build/esm/action-form/fields/TimePicker.module.css +27 -2
  200. package/build/esm/action-form/fields/calendarShared.js +5 -0
  201. package/build/esm/action-form/fields/calendarShared.js.map +1 -1
  202. package/build/esm/action-form/fields/useDateEditState.js +3 -4
  203. package/build/esm/action-form/fields/useDateEditState.js.map +1 -1
  204. package/build/esm/base-components/action-button/ActionButton.js +2 -1
  205. package/build/esm/base-components/action-button/ActionButton.js.map +1 -1
  206. package/build/esm/base-components/action-button/ActionButton.module.css +19 -0
  207. package/build/esm/base-components/combobox/Combobox.module.css +31 -3
  208. package/build/esm/base-components/select/Select.module.css +18 -0
  209. package/build/esm/base-components/switch/Switch.module.css +18 -6
  210. package/build/esm/filter-list/base/inputs/ListogramInput.js +34 -6
  211. package/build/esm/filter-list/base/inputs/ListogramInput.js.map +1 -1
  212. package/build/esm/filter-list/base/inputs/ListogramInput.module.css +11 -5
  213. package/build/esm/filter-list/base/inputs/MultiSelectInput.js +20 -12
  214. package/build/esm/filter-list/base/inputs/MultiSelectInput.js.map +1 -1
  215. package/build/esm/filter-list/base/inputs/NoValueLabel.js +36 -0
  216. package/build/esm/filter-list/base/inputs/NoValueLabel.js.map +1 -0
  217. package/build/esm/filter-list/base/inputs/NoValueLabel.module.css +20 -0
  218. package/build/esm/filter-list/base/inputs/NullValueWrapper.js +4 -3
  219. package/build/esm/filter-list/base/inputs/NullValueWrapper.js.map +1 -1
  220. package/build/esm/filter-list/base/inputs/NullValueWrapper.module.css +10 -7
  221. package/build/esm/filter-list/base/inputs/SingleSelectInput.js +13 -8
  222. package/build/esm/filter-list/base/inputs/SingleSelectInput.js.map +1 -1
  223. package/build/esm/filter-list/base/inputs/TextTagsInput.js +6 -2
  224. package/build/esm/filter-list/base/inputs/TextTagsInput.js.map +1 -1
  225. package/build/esm/filter-list/hooks/useFilterListState.js +7 -6
  226. package/build/esm/filter-list/hooks/useFilterListState.js.map +1 -1
  227. package/build/esm/filter-list/hooks/useStableMapEntries.js +35 -0
  228. package/build/esm/filter-list/hooks/useStableMapEntries.js.map +1 -0
  229. package/build/esm/filter-list/utils/filterValues.js +13 -0
  230. package/build/esm/filter-list/utils/filterValues.js.map +1 -1
  231. package/build/esm/object-table/DefaultCellRenderer.js +12 -2
  232. package/build/esm/object-table/DefaultCellRenderer.js.map +1 -1
  233. package/build/esm/object-table/EditableCell.js +14 -4
  234. package/build/esm/object-table/EditableCell.js.map +1 -1
  235. package/build/esm/object-table/EditableCell.module.css +4 -0
  236. package/build/esm/object-table/ObjectTable.js +3 -1
  237. package/build/esm/object-table/ObjectTable.js.map +1 -1
  238. package/build/esm/object-table/ObjectTableApi.js.map +1 -1
  239. package/build/esm/object-table/Table.js +8 -4
  240. package/build/esm/object-table/Table.js.map +1 -1
  241. package/build/esm/object-table/TableBody.js +4 -2
  242. package/build/esm/object-table/TableBody.js.map +1 -1
  243. package/build/esm/object-table/TableRow.js +12 -4
  244. package/build/esm/object-table/TableRow.js.map +1 -1
  245. package/build/esm/object-table/hooks/useColumnDefs.js.map +1 -1
  246. package/build/esm/object-table/utils/editableUtils.js +39 -0
  247. package/build/esm/object-table/utils/editableUtils.js.map +1 -0
  248. package/build/esm/object-table/utils/shouldShowEditableCell.js +1 -1
  249. package/build/esm/object-table/utils/shouldShowEditableCell.js.map +1 -1
  250. package/build/esm/object-table/utils/types.js.map +1 -1
  251. package/build/esm/tokens/component-tokens/button.css +15 -0
  252. package/build/esm/tokens/component-tokens/combobox.css +9 -0
  253. package/build/esm/tokens/component-tokens/datetime-picker.css +2 -2
  254. package/build/esm/tokens/component-tokens/file-picker.css +0 -10
  255. package/build/esm/tokens/component-tokens/filter-list.css +9 -6
  256. package/build/esm/tokens/component-tokens/form-section.css +1 -1
  257. package/build/esm/tokens/component-tokens/form.css +9 -5
  258. package/build/esm/tokens/component-tokens/table.css +3 -5
  259. package/build/esm/tokens.css +1 -0
  260. package/build/esm/util/UserAgent.js +1 -1
  261. package/build/types/action-form/ActionFormApi.d.ts +8 -8
  262. package/build/types/action-form/ActionFormApi.d.ts.map +1 -1
  263. package/build/types/action-form/BaseForm.d.ts.map +1 -1
  264. package/build/types/action-form/FormFieldApi.d.ts +29 -22
  265. package/build/types/action-form/FormFieldApi.d.ts.map +1 -1
  266. package/build/types/action-form/fields/DateCalendar.d.ts +6 -1
  267. package/build/types/action-form/fields/DateCalendar.d.ts.map +1 -1
  268. package/build/types/action-form/fields/DateRangeCalendar.d.ts.map +1 -1
  269. package/build/types/action-form/fields/DateRangeInputField.d.ts.map +1 -1
  270. package/build/types/action-form/fields/DatetimePickerField.d.ts.map +1 -1
  271. package/build/types/action-form/fields/FieldBridge.d.ts.map +1 -1
  272. package/build/types/action-form/fields/FilePickerField.d.ts.map +1 -1
  273. package/build/types/action-form/fields/FormFieldRenderer.d.ts.map +1 -1
  274. package/build/types/action-form/fields/SwitchField.d.ts +7 -0
  275. package/build/types/action-form/fields/SwitchField.d.ts.map +1 -0
  276. package/build/types/action-form/fields/TimePicker.d.ts +4 -5
  277. package/build/types/action-form/fields/TimePicker.d.ts.map +1 -1
  278. package/build/types/action-form/fields/useDateEditState.d.ts +2 -2
  279. package/build/types/base-components/action-button/ActionButton.d.ts +1 -0
  280. package/build/types/base-components/action-button/ActionButton.d.ts.map +1 -1
  281. package/build/types/filter-list/base/inputs/ListogramInput.d.ts.map +1 -1
  282. package/build/types/filter-list/base/inputs/MultiSelectInput.d.ts.map +1 -1
  283. package/build/types/filter-list/base/inputs/NoValueLabel.d.ts +15 -0
  284. package/build/types/filter-list/base/inputs/NoValueLabel.d.ts.map +1 -0
  285. package/build/types/filter-list/base/inputs/NullValueWrapper.d.ts.map +1 -1
  286. package/build/types/filter-list/base/inputs/SingleSelectInput.d.ts.map +1 -1
  287. package/build/types/filter-list/base/inputs/TextTagsInput.d.ts.map +1 -1
  288. package/build/types/filter-list/hooks/useFilterListState.d.ts.map +1 -1
  289. package/build/types/filter-list/hooks/useStableMapEntries.d.ts +9 -0
  290. package/build/types/filter-list/hooks/useStableMapEntries.d.ts.map +1 -0
  291. package/build/types/filter-list/utils/filterValues.d.ts +7 -0
  292. package/build/types/filter-list/utils/filterValues.d.ts.map +1 -1
  293. package/build/types/object-table/DefaultCellRenderer.d.ts.map +1 -1
  294. package/build/types/object-table/EditableCell.d.ts +1 -1
  295. package/build/types/object-table/EditableCell.d.ts.map +1 -1
  296. package/build/types/object-table/ObjectTableApi.d.ts +26 -7
  297. package/build/types/object-table/ObjectTableApi.d.ts.map +1 -1
  298. package/build/types/object-table/Table.d.ts +9 -2
  299. package/build/types/object-table/Table.d.ts.map +1 -1
  300. package/build/types/object-table/TableBody.d.ts +2 -1
  301. package/build/types/object-table/TableBody.d.ts.map +1 -1
  302. package/build/types/object-table/TableRow.d.ts +2 -1
  303. package/build/types/object-table/TableRow.d.ts.map +1 -1
  304. package/build/types/object-table/utils/editableUtils.d.ts +16 -0
  305. package/build/types/object-table/utils/editableUtils.d.ts.map +1 -0
  306. package/build/types/object-table/utils/shouldShowEditableCell.d.ts +2 -1
  307. package/build/types/object-table/utils/shouldShowEditableCell.d.ts.map +1 -1
  308. package/build/types/object-table/utils/types.d.ts +4 -11
  309. package/build/types/object-table/utils/types.d.ts.map +1 -1
  310. package/docs/ActionForm.md +176 -0
  311. package/docs/CSSVariables.md +31 -30
  312. package/docs/ObjectTable.md +141 -16
  313. package/package.json +6 -5
  314. package/build/cjs/DateCalendar-2W4QHEEI.css.map +0 -1
  315. package/build/cjs/DateCalendar-QGSYBWJB.cjs +0 -24
  316. package/build/cjs/DateRangeCalendar-JHO2BF3Z.cjs +0 -48
  317. package/build/cjs/DateRangeCalendar-JHO2BF3Z.cjs.map +0 -1
  318. package/build/cjs/DateRangeCalendar-M63S2LLG.css.map +0 -1
  319. package/build/cjs/chunk-B2GRQRWU.cjs.map +0 -1
  320. package/build/cjs/chunk-BJDCC446.cjs.map +0 -1
  321. package/build/cjs/chunk-JLESWL47.cjs.map +0 -1
  322. package/build/cjs/chunk-L5LPFCXT.cjs.map +0 -1
  323. package/build/cjs/chunk-SB2VTP67.cjs.map +0 -1
  324. package/build/cjs/chunk-T7I6O43T.cjs.map +0 -1
  325. package/build/cjs/chunk-UCTQICPR.cjs +0 -10
  326. package/build/cjs/chunk-UCTQICPR.cjs.map +0 -1
  327. package/build/cjs/chunk-VVJFMOZI.cjs.map +0 -1
  328. package/build/cjs/chunk-YPXTSEE7.cjs.map +0 -1
@@ -137,20 +137,22 @@ Each column header has a menu with items for sorting, filtering, pinning, resizi
137
137
 
138
138
  ### Interactions
139
139
 
140
- | Prop | Type | Description |
141
- | ----------------------- | ------------------------------- | -------------------------------------------- |
142
- | `onRowClick` | `(object) => void` | Called when a row is clicked |
143
- | `renderCellContextMenu` | `(row, cellValue) => ReactNode` | Custom context menu for right-click on cells |
140
+ | Prop | Type | Description |
141
+ | ----------------------- | -------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
142
+ | `onRowClick` | `(object) => void` | Called when a row is clicked |
143
+ | `renderCellContextMenu` | `(row, cellValue) => ReactNode` | Custom context menu for right-click on cells |
144
+ | `getRowAttributes` | `(rowData) => Record<string, string \| undefined>` | Extra HTML attributes (typically `data-*`) applied to each `<tr>`. See [Row Attributes](#row-attributes-and-conditional-row-styling) |
144
145
 
145
146
  ### Cell Editing
146
147
 
147
148
  > The editable feature allows inline editing with validation and bulk submission capabilities. Editable cells support text inputs, number inputs, and dropdown selectors.
148
149
 
149
- | Prop | Type | Description |
150
- | -------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- |
151
- | `editMode` | `"always" \| "manual"` | Controls edit mode behavior. "always": Table is always in edit mode. "manual": User toggles edit mode on/off. Default: "manual" |
152
- | `onCellValueChanged` | `(info: CellEditInfo) => void` | Called when a cell value is edited. The info object contains rowId, columnId, newValue, oldValue, and originalRowData |
153
- | `onSubmitEdits` | `(edits: CellEditInfo[]) => Promise<boolean>` | When provided, shows a "Submit Edits" button that calls this function with all pending edits. Return true on success |
150
+ | Prop | Type | Description |
151
+ | -------------------- | --------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
152
+ | `editMode` | `"always" \| "manual"` | Controls edit mode behavior. "always": Table is always in edit mode. "manual": User toggles edit mode on/off. Default: "manual" |
153
+ | `onCellValueChanged` | `(info: CellEditInfo) => void` | Called when a cell value is edited. The info object contains rowId, columnId, newValue, oldValue, and originalRowData |
154
+ | `onSubmitEdits` | `(edits: CellEditInfo[]) => Promise<boolean>` | When provided, shows a "Submit Edits" button in the edit footer. Return true on success |
155
+ | `showEditFooter` | `boolean` | Whether to render the bottom edit footer (Edit Table / Cancel / Submit Edits). Defaults to `true`. When `false`, the "Edit Table" and "Submit Edits" buttons will not be shown. |
154
156
 
155
157
  ## Column Definitions
156
158
 
@@ -167,7 +169,7 @@ type ColumnDefinition<Q, RDPs, FunctionColumns> = {
167
169
  resizable?: boolean; // Allow column resizing
168
170
  orderable?: boolean; // Allow column sorting
169
171
  filterable?: boolean; // Allow column filtering
170
- editable?: boolean; // Allow inline editing for this column
172
+ editable?: boolean | ((rowData) => boolean); // Allow inline editing for this column. Pass a function to make it conditional per row
171
173
  editFieldConfig?: EditFieldConfig; // Optional editor component config (e.g. dropdown)
172
174
  validateEdit?: (value: unknown) => Promise<string | undefined>; // Custom validation function for cell edits
173
175
  renderCell?: (object, locator) => React.ReactNode; // Custom cell renderer
@@ -176,19 +178,54 @@ type ColumnDefinition<Q, RDPs, FunctionColumns> = {
176
178
  };
177
179
  ```
178
180
 
181
+ #### `editable`
182
+
183
+ `editable` accepts either a boolean or a function `(rowData) => boolean`:
184
+
185
+ - `editable: true` — every cell in the column is editable.
186
+ - `editable: (rowData) => boolean` — configurable per row. The function receives the row's data and returns whether the cell should be editable.
187
+
188
+ ```typescript
189
+ {
190
+ locator: { type: "property", id: "salary" },
191
+ // Only editable for active employees
192
+ editable: (employee) => employee.status === "Active",
193
+ }
194
+ ```
195
+
196
+ When `editable` is a function, the column is still considered "potentially editable" at the table level — the bottom edit-mode bar is shown so users can enter and exit edit mode. The per-row predicate decides whether each cell renders the editor or the read-only value.
197
+
179
198
  #### `editFieldConfig`
180
199
 
181
- When `editable` is `true`, columns default to a text or number input (auto-detected from the property type). Use `editFieldConfig` to specify a different editor component.
200
+ When `editable` is truthy, columns default to a text or number input (auto-detected from the property type). Use `editFieldConfig` to specify a different editor component.
182
201
 
183
202
  **Supported editor components:**
184
203
 
185
204
  | `fieldComponent` | Description | Renders |
186
205
  | ---------------- | ---------------------------------------- | ------------------------------------------------------------ |
187
206
  | `"DROPDOWN"` | A select dropdown or searchable combobox | `Select` (default) or `Combobox` (when `isSearchable: true`) |
207
+ | `"DATE_PICKER"` | A date or datetime picker | `DatetimePicker` |
188
208
 
189
209
  Without `editFieldConfig`, editable columns use a text input for string properties and a number input for numeric properties (`double`, `integer`, `long`, `float`, `decimal`, `byte`, `short`).
190
210
 
191
- **Dropdown `fieldComponentProps`:**
211
+ `getFieldComponentProps` receives the row's data and returns the props passed to the field component, so editor configuration can vary per row (e.g. dropdown items computed from the row's state).
212
+
213
+ ```typescript
214
+ {
215
+ locator: { type: "property", id: "department" },
216
+ editable: true,
217
+ editFieldConfig: {
218
+ fieldComponent: "DROPDOWN",
219
+ getFieldComponentProps: (employee) => ({
220
+ // Allow the user to pick from departments compatible with the
221
+ // employee's role
222
+ items: getCompatibleDepartments(employee.role),
223
+ }),
224
+ },
225
+ }
226
+ ```
227
+
228
+ **Dropdown `fieldComponentProps` (returned from `getFieldComponentProps`):**
192
229
 
193
230
  | Prop | Type | Default | Description |
194
231
  | ------------------- | ------------------------- | -------------- | -------------------------------------------------------- |
@@ -688,7 +725,7 @@ const columnDefinitions: Array<ColumnDefinition<typeof Employee>> = [
688
725
  editable: true,
689
726
  editFieldConfig: {
690
727
  fieldComponent: "DROPDOWN",
691
- fieldComponentProps: {
728
+ getFieldComponentProps: () => ({
692
729
  items: [
693
730
  "Engineering",
694
731
  "Product",
@@ -698,7 +735,7 @@ const columnDefinitions: Array<ColumnDefinition<typeof Employee>> = [
698
735
  "Finance",
699
736
  "Human Resources",
700
737
  ],
701
- },
738
+ }),
702
739
  },
703
740
  },
704
741
  {
@@ -706,7 +743,7 @@ const columnDefinitions: Array<ColumnDefinition<typeof Employee>> = [
706
743
  editable: true,
707
744
  editFieldConfig: {
708
745
  fieldComponent: "DROPDOWN",
709
- fieldComponentProps: {
746
+ getFieldComponentProps: () => ({
710
747
  items: [
711
748
  "Software Engineer",
712
749
  "Senior Software Engineer",
@@ -717,7 +754,7 @@ const columnDefinitions: Array<ColumnDefinition<typeof Employee>> = [
717
754
  ],
718
755
  isSearchable: true, // Renders a searchable combobox
719
756
  placeholder: "Search job titles…",
720
- },
757
+ }),
721
758
  },
722
759
  },
723
760
  ];
@@ -797,6 +834,37 @@ function EditableEmployeesTable() {
797
834
  - All edits are submitted together
798
835
  - Return `true` from `onSubmitEdits` to clear edits after successful submission
799
836
 
837
+ #### Per-Row Configuration for Editable and FieldComponentProps
838
+
839
+ Pass a function to `editable` to gate editing per row, and a `getFieldComponentProps` function to compute editor props from the row's data:
840
+
841
+ ```typescript
842
+ import {
843
+ type ColumnDefinition,
844
+ ObjectTable,
845
+ } from "@osdk/react-components/experimental/object-table";
846
+ import { Employee } from "@YourApp/sdk";
847
+
848
+ const columnDefinitions: Array<ColumnDefinition<typeof Employee>> = [
849
+ {
850
+ locator: { type: "property", id: "salary" },
851
+ // Only editable for active employees
852
+ editable: (employee) => employee.status === "Active",
853
+ },
854
+ {
855
+ locator: { type: "property", id: "department" },
856
+ editable: true,
857
+ editFieldConfig: {
858
+ fieldComponent: "DROPDOWN",
859
+ // Items depend on the employee's role
860
+ getFieldComponentProps: (employee) => ({
861
+ items: getCompatibleDepartments(employee.role),
862
+ }),
863
+ },
864
+ },
865
+ ];
866
+ ```
867
+
800
868
  ### Example 14: Custom Column Configuration Dialog
801
869
 
802
870
  Use the `ColumnConfigDialog` component to create a custom column configuration experience:
@@ -1101,6 +1169,63 @@ Adjust row height for better readability:
1101
1169
  />;
1102
1170
  ```
1103
1171
 
1172
+ ### Row Attributes and Conditional Row Styling
1173
+
1174
+ Use `getRowAttributes` to apply custom HTML attributes (typically `data-*` attributes) to each `<tr>` element. This is the recommended pattern for conditional row styling — for example, changing a row's background color based on the underlying object's state.
1175
+
1176
+ ```tsx
1177
+ import type { Osdk } from "@osdk/api";
1178
+ import { ObjectTable } from "@osdk/react-components/experimental/object-table";
1179
+ import { Employee } from "@YourApp/sdk";
1180
+ import { useCallback } from "react";
1181
+
1182
+ function EmployeesTable() {
1183
+ const getRowAttributes = useCallback(
1184
+ (employee: Osdk.Instance<typeof Employee>) => ({
1185
+ "data-status": employee.status,
1186
+ "data-overdue": employee.daysOverdue > 0 ? "true" : undefined,
1187
+ }),
1188
+ [],
1189
+ );
1190
+
1191
+ return (
1192
+ <ObjectTable
1193
+ objectType={Employee}
1194
+ className="employees-table"
1195
+ getRowAttributes={getRowAttributes}
1196
+ />
1197
+ );
1198
+ }
1199
+ ```
1200
+
1201
+ Entries whose value is `undefined` are skipped, so you can include attributes conditionally without emitting empty values.
1202
+
1203
+ Then drive your row styling in CSS using attribute selectors. Row background colors come from `--osdk-table-row-bg-default` (and `--osdk-table-row-bg-alternate` for odd zebra rows) — overriding both on a `<tr>` for matching rows takes precedence:
1204
+
1205
+ ```css
1206
+ .employees-table tr[data-status="Inactive"] {
1207
+ --osdk-table-row-bg-default: #f3f4f6;
1208
+ --osdk-table-row-bg-alternate: #f3f4f6;
1209
+ color: #6b7280;
1210
+ }
1211
+
1212
+ .employees-table tr[data-overdue="true"] {
1213
+ --osdk-table-row-bg-default: #fef2f2;
1214
+ --osdk-table-row-bg-alternate: #fef2f2;
1215
+ }
1216
+
1217
+ .employees-table tr[data-status="Active"][data-overdue="true"] {
1218
+ --osdk-table-row-bg-default: #fffbeb;
1219
+ --osdk-table-row-bg-alternate: #fffbeb;
1220
+ }
1221
+ ```
1222
+
1223
+ Notes:
1224
+
1225
+ - Combine multiple attribute selectors to express priority (the most specific selector wins, per normal CSS rules).
1226
+ - The table sets its own attributes (`data-selected`, `data-focused`, `data-row-parity`, `data-pinned`) on rows and cells. Avoid using these names in `getRowAttributes` since they would override the built-in behavior.
1227
+ - `getRowAttributes` runs for every visible row, so memoize it with `useCallback` to keep referential equality across renders.
1228
+
1104
1229
  ### Loading and Empty States
1105
1230
 
1106
1231
  The ObjectTable automatically handles:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@osdk/react-components",
3
- "version": "0.12.0",
3
+ "version": "0.13.0",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -109,6 +109,7 @@
109
109
  "@tanstack/react-virtual": "^3.13.13",
110
110
  "date-fns": "^2.28.0",
111
111
  "date-fns-tz": "^2.0.0",
112
+ "fast-deep-equal": "^3.1.3",
112
113
  "lodash-es": "^4.17.21",
113
114
  "pdfjs-dist": "~4.8.69",
114
115
  "react-day-picker": "^8.10.0",
@@ -138,11 +139,11 @@
138
139
  "react": "^18.3.1",
139
140
  "react-dom": "^18.3.1",
140
141
  "typescript": "~5.5.4",
141
- "@osdk/client": "2.16.0",
142
+ "@osdk/api": "2.17.0",
143
+ "@osdk/client": "2.17.0",
142
144
  "@osdk/monorepo.api-extractor": "~0.7.0",
143
- "@osdk/monorepo.tsconfig": "~0.7.0",
144
- "@osdk/react": "2.16.0",
145
- "@osdk/api": "2.16.0"
145
+ "@osdk/react": "2.17.0",
146
+ "@osdk/monorepo.tsconfig": "~0.7.0"
146
147
  },
147
148
  "publishConfig": {
148
149
  "access": "public"
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/action-form/fields/DateCalendar.module.css"],"sourcesContent":["/* 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 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 font-weight: var(--osdk-datetime-calendar-today-font-weight);\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\n/* Range-middle needs .calendarDayButton prefix to match specificity of\n .calendarDayButton.calendarSelected (rdp applies both to range-middle days). */\n.calendarDayButton.calendarRangeMiddle {\n background: var(--osdk-datetime-calendar-range-middle-bg);\n color: var(--osdk-datetime-calendar-day-color);\n border-radius: 0;\n\n &:hover {\n background: var(--osdk-datetime-calendar-range-middle-bg);\n color: var(--osdk-datetime-calendar-day-hover-color);\n filter: brightness(0.95);\n }\n\n &:active {\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\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 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/* Footer — content rendered inside DayPicker's <tfoot> (constrained by the table). */\n.calendarFooter {\n padding-top: var(--osdk-time-picker-padding-top);\n margin-top: var(--osdk-time-picker-margin-top);\n border-top: var(--osdk-time-picker-border-top);\n}\n\n"],"mappings":"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","names":[]}
@@ -1,24 +0,0 @@
1
- 'use strict';
2
-
3
- Object.defineProperty(exports, '__esModule', { value: true });
4
-
5
- var chunkB2GRQRWU_cjs = require('./chunk-B2GRQRWU.cjs');
6
- require('./chunk-JLESWL47.cjs');
7
- require('./chunk-Q2W6GYRK.cjs');
8
-
9
-
10
-
11
- Object.defineProperty(exports, "CALENDAR_COMPONENTS", {
12
- enumerable: true,
13
- get: function () { return chunkB2GRQRWU_cjs.CALENDAR_COMPONENTS; }
14
- });
15
- Object.defineProperty(exports, "CLASS_NAMES", {
16
- enumerable: true,
17
- get: function () { return chunkB2GRQRWU_cjs.CLASS_NAMES; }
18
- });
19
- Object.defineProperty(exports, "default", {
20
- enumerable: true,
21
- get: function () { return chunkB2GRQRWU_cjs.DateCalendar; }
22
- });
23
- //# sourceMappingURL=DateCalendar-QGSYBWJB.cjs.map
24
- //# sourceMappingURL=DateCalendar-QGSYBWJB.cjs.map
@@ -1,48 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkB2GRQRWU_cjs = require('./chunk-B2GRQRWU.cjs');
4
- var chunkJLESWL47_cjs = require('./chunk-JLESWL47.cjs');
5
- require('./chunk-Q2W6GYRK.cjs');
6
- var React = require('react');
7
- var reactDayPicker = require('react-day-picker');
8
-
9
- function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
10
-
11
- var React__default = /*#__PURE__*/_interopDefault(React);
12
-
13
- var CLASS_NAMES2 = {
14
- ...chunkB2GRQRWU_cjs.CLASS_NAMES,
15
- day_range_start: chunkB2GRQRWU_cjs.DateCalendar_default.calendarRangeEndpoint,
16
- day_range_middle: chunkB2GRQRWU_cjs.DateCalendar_default.calendarRangeMiddle,
17
- day_range_end: chunkB2GRQRWU_cjs.DateCalendar_default.calendarRangeEndpoint
18
- };
19
- function DateRangeCalendar({
20
- selected,
21
- onSelect,
22
- min,
23
- max,
24
- footer
25
- }) {
26
- const disabled = React.useMemo(() => chunkJLESWL47_cjs.buildDisabledMatchers(min, max), [min, max]);
27
- const fromYear = min != null ? min.getFullYear() : chunkJLESWL47_cjs.DEFAULT_FROM_YEAR;
28
- const toYear = max != null ? max.getFullYear() : chunkJLESWL47_cjs.DEFAULT_TO_YEAR;
29
- return /* @__PURE__ */ React__default.default.createElement(reactDayPicker.DayPicker, {
30
- mode: "range",
31
- selected,
32
- onSelect,
33
- disabled,
34
- defaultMonth: selected?.from,
35
- classNames: CLASS_NAMES2,
36
- components: chunkB2GRQRWU_cjs.CALENDAR_COMPONENTS,
37
- footer,
38
- captionLayout: "dropdown-buttons",
39
- fromYear,
40
- toYear,
41
- numberOfMonths: 2,
42
- pagedNavigation: true
43
- });
44
- }
45
-
46
- module.exports = DateRangeCalendar;
47
- //# sourceMappingURL=DateRangeCalendar-JHO2BF3Z.cjs.map
48
- //# sourceMappingURL=DateRangeCalendar-JHO2BF3Z.cjs.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/action-form/fields/DateRangeCalendar.tsx"],"names":["CLASS_NAMES","DateCalendar_default","useMemo","buildDisabledMatchers","DEFAULT_FROM_YEAR","DEFAULT_TO_YEAR","React","DayPicker","CALENDAR_COMPONENTS"],"mappings":";;;;;;;;;;;;AAqBA,IAAMA,YAAAA,GAAc;AAAA,EAClB,GAAGA,6BAAA;AAAA,EACH,iBAAiBC,sCAAA,CAAO,qBAAA;AAAA,EACxB,kBAAkBA,sCAAA,CAAO,mBAAA;AAAA,EACzB,eAAeA,sCAAA,CAAO;AACxB,CAAA;AACe,SAAR,iBAAA,CAAmC;AAAA,EACxC,QAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,MAAM,QAAA,GAAWC,aAAA,CAAQ,MAAMC,uCAAA,CAAsB,GAAA,EAAK,GAAG,CAAA,EAAG,CAAC,GAAA,EAAK,GAAG,CAAC,CAAA;AAC1E,EAAA,MAAM,QAAA,GAAW,GAAA,IAAO,IAAA,GAAO,GAAA,CAAI,aAAY,GAAIC,mCAAA;AACnD,EAAA,MAAM,MAAA,GAAS,GAAA,IAAO,IAAA,GAAO,GAAA,CAAI,aAAY,GAAIC,iCAAA;AACjD,EAAA,uBAAoBC,sBAAA,CAAM,cAAcC,wBAAA,EAAW;AAAA,IACjD,IAAA,EAAM,OAAA;AAAA,IACN,QAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAc,QAAA,EAAU,IAAA;AAAA,IACxB,UAAA,EAAYP,YAAAA;AAAA,IACZ,UAAA,EAAYQ,qCAAA;AAAA,IACZ,MAAA;AAAA,IACA,aAAA,EAAe,kBAAA;AAAA,IACf,QAAA;AAAA,IACA,MAAA;AAAA,IACA,cAAA,EAAgB,CAAA;AAAA,IAChB,eAAA,EAAiB;AAAA,GAClB,CAAA;AACH","file":"DateRangeCalendar-JHO2BF3Z.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\nimport React, { useMemo } from \"react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { buildDisabledMatchers, DEFAULT_FROM_YEAR, DEFAULT_TO_YEAR } from \"./calendarShared.js\";\nimport { CALENDAR_COMPONENTS, CLASS_NAMES as BASE_CLASS_NAMES } from \"./DateCalendar.js\";\nimport styles from \"./DateCalendar.module.css\";\nconst CLASS_NAMES = {\n ...BASE_CLASS_NAMES,\n day_range_start: styles.calendarRangeEndpoint,\n day_range_middle: styles.calendarRangeMiddle,\n day_range_end: styles.calendarRangeEndpoint\n};\nexport default function DateRangeCalendar({\n selected,\n onSelect,\n min,\n max,\n footer\n}) {\n const disabled = useMemo(() => buildDisabledMatchers(min, max), [min, max]);\n const fromYear = min != null ? min.getFullYear() : DEFAULT_FROM_YEAR;\n const toYear = max != null ? max.getFullYear() : DEFAULT_TO_YEAR;\n return /*#__PURE__*/React.createElement(DayPicker, {\n mode: \"range\",\n selected: selected,\n onSelect: onSelect,\n disabled: disabled,\n defaultMonth: selected?.from,\n classNames: CLASS_NAMES,\n components: CALENDAR_COMPONENTS,\n footer: footer,\n captionLayout: \"dropdown-buttons\",\n fromYear: fromYear,\n toYear: toYear,\n numberOfMonths: 2,\n pagedNavigation: true\n });\n}"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/action-form/fields/DateCalendar.module.css"],"sourcesContent":["/* 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 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 font-weight: var(--osdk-datetime-calendar-today-font-weight);\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\n/* Range-middle needs .calendarDayButton prefix to match specificity of\n .calendarDayButton.calendarSelected (rdp applies both to range-middle days). */\n.calendarDayButton.calendarRangeMiddle {\n background: var(--osdk-datetime-calendar-range-middle-bg);\n color: var(--osdk-datetime-calendar-day-color);\n border-radius: 0;\n\n &:hover {\n background: var(--osdk-datetime-calendar-range-middle-bg);\n color: var(--osdk-datetime-calendar-day-hover-color);\n filter: brightness(0.95);\n }\n\n &:active {\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\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 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/* Footer — content rendered inside DayPicker's <tfoot> (constrained by the table). */\n.calendarFooter {\n padding-top: var(--osdk-time-picker-padding-top);\n margin-top: var(--osdk-time-picker-margin-top);\n border-top: var(--osdk-time-picker-border-top);\n}\n\n"],"mappings":"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","names":[]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../src/action-form/fields/DateCalendar.module.css","../../src/action-form/fields/DateCalendar.tsx"],"names":["classnames","React","ChevronLeft","ChevronRight","useMemo","buildDisabledMatchers","DEFAULT_FROM_YEAR","DEFAULT_TO_YEAR","DayPicker"],"mappings":";;;;;;;;;;;;;;AAAA,IAAA,oBAAA,GAAA;;;ACsBO,IAAM,WAAA,GAAc;AAAA,EACzB,MAAM,oBAAA,CAAO,QAAA;AAAA,EACb,QAAQ,oBAAA,CAAO,cAAA;AAAA,EACf,OAAO,oBAAA,CAAO,iBAAA;AAAA,EACd,WAAW,oBAAA,CAAO,eAAA;AAAA,EAClB,MAAM,oBAAA,CAAO,WAAA;AAAA,EACb,KAAK,oBAAA,CAAO,iBAAA;AAAA,EACZ,cAAc,oBAAA,CAAO,gBAAA;AAAA,EACrB,WAAW,oBAAA,CAAO,aAAA;AAAA,EAClB,aAAa,oBAAA,CAAO,eAAA;AAAA,EACpB,cAAc,oBAAA,CAAO,gBAAA;AAAA,EACrB,YAAY,oBAAA,CAAO,cAAA;AAAA,EACnB,KAAK,oBAAA,CAAO,WAAA;AAAA,EACZ,mBAAA,EAAqBA,2BAAA,CAAW,oBAAA,CAAO,iBAAA,EAAmB,qBAAO,eAAe,CAAA;AAAA,EAChF,eAAA,EAAiBA,2BAAA,CAAW,oBAAA,CAAO,iBAAA,EAAmB,qBAAO,eAAe,CAAA;AAAA,EAC5E,SAAS,oBAAA,CAAO,oBAAA;AAAA,EAChB,eAAe,oBAAA,CAAO,eAAA;AAAA,EACtB,mBAAmB,oBAAA,CAAO,wBAAA;AAAA,EAC1B,UAAU,oBAAA,CAAO,gBAAA;AAAA,EACjB,gBAAgB,oBAAA,CAAO,gBAAA;AAAA,EACvB,eAAe,oBAAA,CAAO,gBAAA;AAAA,EACtB,UAAU,oBAAA,CAAO,eAAA;AAAA,EACjB,SAAS,oBAAA,CAAO,eAAA;AAAA,EAChB,OAAO,oBAAA,CAAO;AAChB;AACA,IAAM,aAAA,GAAgB,EAAA;AACtB,SAAS,QAAA,GAAW;AAClB,EAAA,uBAAoBC,sBAAA,CAAM,cAAcC,iBAAA,EAAa;AAAA,IACnD,IAAA,EAAM;AAAA,GACP,CAAA;AACH;AACA,SAAS,SAAA,GAAY;AACnB,EAAA,uBAAoBD,sBAAA,CAAM,cAAcE,kBAAA,EAAc;AAAA,IACpD,IAAA,EAAM;AAAA,GACP,CAAA;AACH;AACO,IAAM,mBAAA,GAAsB;AAAA,EACjC,QAAA;AAAA,EACA;AACF;AACe,SAAR,YAAA,CAA8B;AAAA,EACnC,YAAA;AAAA,EACA,QAAA;AAAA,EACA,GAAA;AAAA,EACA,GAAA;AAAA,EACA;AACF,CAAA,EAAG;AACD,EAAA,MAAM,QAAA,GAAWC,aAAA,CAAQ,MAAMC,uCAAA,CAAsB,GAAA,EAAK,GAAG,CAAA,EAAG,CAAC,GAAA,EAAK,GAAG,CAAC,CAAA;AAC1E,EAAA,MAAM,QAAA,GAAW,GAAA,IAAO,IAAA,GAAO,GAAA,CAAI,aAAY,GAAIC,mCAAA;AACnD,EAAA,MAAM,MAAA,GAAS,GAAA,IAAO,IAAA,GAAO,GAAA,CAAI,aAAY,GAAIC,iCAAA;AACjD,EAAA,uBAAoBN,sBAAA,CAAM,cAAcO,wBAAA,EAAW;AAAA,IACjD,IAAA,EAAM,QAAA;AAAA,IACN,QAAA,EAAU,YAAA;AAAA,IACV,QAAA;AAAA,IACA,QAAA;AAAA,IACA,YAAA,EAAc,YAAA;AAAA,IACd,UAAA,EAAY,WAAA;AAAA,IACZ,UAAA,EAAY,mBAAA;AAAA,IACZ,MAAA;AAAA,IAIA,aAAA,EAAe,kBAAA;AAAA,IACf,QAAA;AAAA,IACA,MAAA;AAAA,IACA,eAAA,EAAiB,IAAA;AAAA,IAGjB,UAAA,EAAY;AAAA,GACb,CAAA;AACH","file":"chunk-B2GRQRWU.cjs","sourcesContent":["/* 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 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 font-weight: var(--osdk-datetime-calendar-today-font-weight);\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\n/* Range-middle needs .calendarDayButton prefix to match specificity of\n .calendarDayButton.calendarSelected (rdp applies both to range-middle days). */\n.calendarDayButton.calendarRangeMiddle {\n background: var(--osdk-datetime-calendar-range-middle-bg);\n color: var(--osdk-datetime-calendar-day-color);\n border-radius: 0;\n\n &:hover {\n background: var(--osdk-datetime-calendar-range-middle-bg);\n color: var(--osdk-datetime-calendar-day-hover-color);\n filter: brightness(0.95);\n }\n\n &:active {\n color: var(--osdk-datetime-calendar-day-hover-color);\n }\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 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/* Footer — content rendered inside DayPicker's <tfoot> (constrained by the table). */\n.calendarFooter {\n padding-top: var(--osdk-time-picker-padding-top);\n margin-top: var(--osdk-time-picker-margin-top);\n border-top: var(--osdk-time-picker-border-top);\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 { ChevronLeft, ChevronRight } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React, { useMemo } from \"react\";\nimport { DayPicker } from \"react-day-picker\";\nimport { buildDisabledMatchers, DEFAULT_FROM_YEAR, DEFAULT_TO_YEAR } from \"./calendarShared.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 min,\n max,\n footer\n}) {\n const disabled = useMemo(() => buildDisabledMatchers(min, max), [min, max]);\n const fromYear = min != null ? min.getFullYear() : DEFAULT_FROM_YEAR;\n const toYear = max != null ? max.getFullYear() : DEFAULT_TO_YEAR;\n return /*#__PURE__*/React.createElement(DayPicker, {\n mode: \"single\",\n selected: dateSelected,\n onSelect: onSelect,\n disabled: disabled,\n defaultMonth: dateSelected,\n classNames: CLASS_NAMES,\n components: CALENDAR_COMPONENTS,\n footer: footer\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}"]}