@osdk/react-components 0.26.0 → 0.27.0-main-3c39c107baa40833fcc79d0d913fb4a468a6bd06

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 (269) hide show
  1. package/AGENTS.md +27 -19
  2. package/CHANGELOG.md +10 -0
  3. package/README.md +1 -0
  4. package/build/browser/cbac-picker/CbacBanner.js +42 -0
  5. package/build/browser/cbac-picker/CbacBanner.js.map +1 -0
  6. package/build/browser/cbac-picker/CbacBannerPopover.js +83 -0
  7. package/build/browser/cbac-picker/CbacBannerPopover.js.map +1 -0
  8. package/build/browser/cbac-picker/CbacPicker.js +69 -0
  9. package/build/browser/cbac-picker/CbacPicker.js.map +1 -0
  10. package/build/browser/cbac-picker/CbacPickerDialog.js +81 -0
  11. package/build/browser/cbac-picker/CbacPickerDialog.js.map +1 -0
  12. package/build/browser/cbac-picker/base/BaseCbacBanner.js +64 -0
  13. package/build/browser/cbac-picker/base/BaseCbacBanner.js.map +1 -0
  14. package/build/browser/cbac-picker/base/BaseCbacBanner.module.css +74 -0
  15. package/build/browser/cbac-picker/base/BaseCbacBanner.module.css.js +9 -0
  16. package/build/browser/cbac-picker/base/BaseCbacBannerPopover.js +168 -0
  17. package/build/browser/cbac-picker/base/BaseCbacBannerPopover.js.map +1 -0
  18. package/build/browser/cbac-picker/base/BaseCbacBannerPopover.module.css +193 -0
  19. package/build/browser/cbac-picker/base/BaseCbacBannerPopover.module.css.js +30 -0
  20. package/build/browser/cbac-picker/base/BaseCbacPicker.js +74 -0
  21. package/build/browser/cbac-picker/base/BaseCbacPicker.js.map +1 -0
  22. package/build/browser/cbac-picker/base/BaseCbacPicker.module.css +47 -0
  23. package/build/browser/cbac-picker/base/BaseCbacPicker.module.css.js +9 -0
  24. package/build/browser/cbac-picker/base/BaseCbacPickerDialog.js +51 -0
  25. package/build/browser/cbac-picker/base/BaseCbacPickerDialog.js.map +1 -0
  26. package/build/browser/cbac-picker/base/CategoryMarkingGroup.js +91 -0
  27. package/build/browser/cbac-picker/base/CategoryMarkingGroup.js.map +1 -0
  28. package/build/browser/cbac-picker/base/CategoryMarkingGroup.module.css +69 -0
  29. package/build/browser/cbac-picker/base/CategoryMarkingGroup.module.css.js +12 -0
  30. package/build/browser/cbac-picker/base/CbacPickerDialogFooter.js +43 -0
  31. package/build/browser/cbac-picker/base/CbacPickerDialogFooter.js.map +1 -0
  32. package/build/browser/cbac-picker/base/CbacPickerDialogFooter.module.css +19 -0
  33. package/build/browser/cbac-picker/base/CbacPickerDialogFooter.module.css.js +6 -0
  34. package/build/browser/cbac-picker/base/InfoBanner.js +32 -0
  35. package/build/browser/cbac-picker/base/InfoBanner.js.map +1 -0
  36. package/build/browser/cbac-picker/base/InfoBanner.module.css +30 -0
  37. package/build/browser/cbac-picker/base/InfoBanner.module.css.js +7 -0
  38. package/build/browser/cbac-picker/base/MarkingButton.js +83 -0
  39. package/build/browser/cbac-picker/base/MarkingButton.js.map +1 -0
  40. package/build/browser/cbac-picker/base/MarkingButton.module.css +104 -0
  41. package/build/browser/cbac-picker/base/MarkingButton.module.css.js +14 -0
  42. package/build/browser/cbac-picker/base/MaxClassificationField.js +42 -0
  43. package/build/browser/cbac-picker/base/MaxClassificationField.js.map +1 -0
  44. package/build/browser/cbac-picker/base/MaxClassificationField.module.css +39 -0
  45. package/build/browser/cbac-picker/base/MaxClassificationField.module.css.js +9 -0
  46. package/build/browser/cbac-picker/base/OverflowButton.js +51 -0
  47. package/build/browser/cbac-picker/base/OverflowButton.js.map +1 -0
  48. package/build/browser/cbac-picker/base/OverflowButton.module.css +57 -0
  49. package/build/browser/cbac-picker/base/OverflowButton.module.css.js +8 -0
  50. package/build/browser/cbac-picker/base/OverflowItem.js +64 -0
  51. package/build/browser/cbac-picker/base/OverflowItem.js.map +1 -0
  52. package/build/browser/cbac-picker/base/OverflowItem.module.css +75 -0
  53. package/build/browser/cbac-picker/base/OverflowItem.module.css.js +11 -0
  54. package/build/browser/cbac-picker/base/ValidationWarning.js +44 -0
  55. package/build/browser/cbac-picker/base/ValidationWarning.js.map +1 -0
  56. package/build/browser/cbac-picker/base/ValidationWarning.module.css +71 -0
  57. package/build/browser/cbac-picker/base/ValidationWarning.module.css.js +12 -0
  58. package/build/browser/cbac-picker/base/selectionStateHelpers.js +35 -0
  59. package/build/browser/cbac-picker/base/selectionStateHelpers.js.map +1 -0
  60. package/build/browser/cbac-picker/types.js +2 -0
  61. package/build/browser/cbac-picker/types.js.map +1 -0
  62. package/build/browser/cbac-picker/useCbacPickerState.js +104 -0
  63. package/build/browser/cbac-picker/useCbacPickerState.js.map +1 -0
  64. package/build/browser/cbac-picker/useCbacSelection.js +52 -0
  65. package/build/browser/cbac-picker/useCbacSelection.js.map +1 -0
  66. package/build/browser/cbac-picker/useConstraintCallout.js +42 -0
  67. package/build/browser/cbac-picker/useConstraintCallout.js.map +1 -0
  68. package/build/browser/cbac-picker/utils/cbacPickerUtils.js +60 -0
  69. package/build/browser/cbac-picker/utils/cbacPickerUtils.js.map +1 -0
  70. package/build/browser/cbac-picker/utils/errorMessages.js +78 -0
  71. package/build/browser/cbac-picker/utils/errorMessages.js.map +1 -0
  72. package/build/browser/cbac-picker/utils/selectionLogic.js +91 -0
  73. package/build/browser/cbac-picker/utils/selectionLogic.js.map +1 -0
  74. package/build/browser/cbac-picker/utils/validationMessages.js +34 -0
  75. package/build/browser/cbac-picker/utils/validationMessages.js.map +1 -0
  76. package/build/browser/filter-list/base/inputs/ListogramInput.module.css +2 -5
  77. package/build/browser/public/experimental/cbac-picker.js +36 -0
  78. package/build/browser/public/experimental/cbac-picker.js.map +1 -0
  79. package/build/browser/public/experimental.js +1 -0
  80. package/build/browser/public/experimental.js.map +1 -1
  81. package/build/browser/styles.css +815 -7
  82. package/build/browser/tokens/component-tokens/filter-list.css +2 -2
  83. package/build/browser/util/UserAgent.js +1 -1
  84. package/build/browser/util/UserAgent.js.map +1 -1
  85. package/build/cjs/{chunk-OZ3OGPEA.cjs → chunk-53T3H77X.cjs} +4 -4
  86. package/build/cjs/{chunk-OZ3OGPEA.cjs.map → chunk-53T3H77X.cjs.map} +1 -1
  87. package/build/cjs/chunk-57BIF23Z.cjs +11 -0
  88. package/build/cjs/{chunk-JPVZGQXS.cjs.map → chunk-57BIF23Z.cjs.map} +1 -1
  89. package/build/cjs/{chunk-3FFHTVG7.cjs → chunk-H2CKWHIK.cjs} +6 -6
  90. package/build/cjs/{chunk-3FFHTVG7.cjs.map → chunk-H2CKWHIK.cjs.map} +1 -1
  91. package/build/cjs/{chunk-UTB55N5Y.cjs → chunk-IOEFNU2L.cjs} +3 -3
  92. package/build/cjs/chunk-IOEFNU2L.cjs.map +1 -0
  93. package/build/cjs/chunk-JMSXOH46.cjs +11 -0
  94. package/build/cjs/{chunk-W6C6UWUN.cjs.map → chunk-JMSXOH46.cjs.map} +1 -1
  95. package/build/cjs/{chunk-IFOPHNX3.cjs → chunk-K23T6HK7.cjs} +8 -8
  96. package/build/cjs/{chunk-IFOPHNX3.cjs.map → chunk-K23T6HK7.cjs.map} +1 -1
  97. package/build/cjs/chunk-MPFJIBNU.cjs +11 -0
  98. package/build/cjs/{chunk-GKWXRVFO.cjs.map → chunk-MPFJIBNU.cjs.map} +1 -1
  99. package/build/cjs/chunk-MZW2H2KM.cjs +11 -0
  100. package/build/cjs/{chunk-UJXNFENA.cjs.map → chunk-MZW2H2KM.cjs.map} +1 -1
  101. package/build/cjs/chunk-O5D7OJYY.cjs +11 -0
  102. package/build/cjs/{chunk-YLYICFCA.cjs.map → chunk-O5D7OJYY.cjs.map} +1 -1
  103. package/build/cjs/{chunk-3VL5YVFA.cjs → chunk-OJ4X5364.cjs} +4 -4
  104. package/build/cjs/{chunk-3VL5YVFA.cjs.map → chunk-OJ4X5364.cjs.map} +1 -1
  105. package/build/cjs/chunk-OLIJICA5.cjs +1190 -0
  106. package/build/cjs/chunk-OLIJICA5.cjs.map +1 -0
  107. package/build/cjs/chunk-VFRZREZV.cjs +4 -0
  108. package/build/cjs/chunk-VFRZREZV.cjs.map +1 -0
  109. package/build/cjs/{chunk-RDILWZTC.cjs → chunk-WGJETQAS.cjs} +6 -6
  110. package/build/cjs/{chunk-RDILWZTC.cjs.map → chunk-WGJETQAS.cjs.map} +1 -1
  111. package/build/cjs/{chunk-DY6YZDDT.cjs → chunk-XCABG3EW.cjs} +4 -4
  112. package/build/cjs/{chunk-DY6YZDDT.cjs.map → chunk-XCABG3EW.cjs.map} +1 -1
  113. package/build/cjs/{chunk-Y4OUZFGE.cjs → chunk-YBDVNB3B.cjs} +4 -4
  114. package/build/cjs/{chunk-Y4OUZFGE.cjs.map → chunk-YBDVNB3B.cjs.map} +1 -1
  115. package/build/cjs/public/experimental/action-form.cjs +6 -6
  116. package/build/cjs/public/experimental/cbac-picker.cjs +60 -0
  117. package/build/cjs/public/experimental/cbac-picker.cjs.map +1 -0
  118. package/build/cjs/public/experimental/cbac-picker.css +731 -0
  119. package/build/cjs/public/experimental/cbac-picker.css.map +1 -0
  120. package/build/cjs/public/experimental/cbac-picker.d.cts +122 -0
  121. package/build/cjs/public/experimental/document-viewer.cjs +6 -6
  122. package/build/cjs/public/experimental/email-viewer.cjs +3 -3
  123. package/build/cjs/public/experimental/excel-viewer.cjs +3 -3
  124. package/build/cjs/public/experimental/filter-list.cjs +16 -16
  125. package/build/cjs/public/experimental/filter-list.css +2 -5
  126. package/build/cjs/public/experimental/filter-list.css.map +1 -1
  127. package/build/cjs/public/experimental/image-viewer.cjs +3 -3
  128. package/build/cjs/public/experimental/markdown-renderer.cjs +3 -3
  129. package/build/cjs/public/experimental/object-table.cjs +12 -12
  130. package/build/cjs/public/experimental/pdf-viewer.cjs +7 -7
  131. package/build/cjs/public/experimental/tiff-renderer.cjs +3 -3
  132. package/build/cjs/public/experimental/video-viewer.cjs +3 -3
  133. package/build/cjs/public/experimental/xml-viewer.cjs +3 -3
  134. package/build/cjs/public/experimental.cjs +151 -105
  135. package/build/cjs/public/experimental.css +612 -76
  136. package/build/cjs/public/experimental.css.map +1 -1
  137. package/build/cjs/public/experimental.d.cts +1 -0
  138. package/build/cjs/public/primitives.cjs +2 -1
  139. package/build/esm/cbac-picker/CbacBanner.js +42 -0
  140. package/build/esm/cbac-picker/CbacBanner.js.map +1 -0
  141. package/build/esm/cbac-picker/CbacBannerPopover.js +83 -0
  142. package/build/esm/cbac-picker/CbacBannerPopover.js.map +1 -0
  143. package/build/esm/cbac-picker/CbacPicker.js +69 -0
  144. package/build/esm/cbac-picker/CbacPicker.js.map +1 -0
  145. package/build/esm/cbac-picker/CbacPickerDialog.js +81 -0
  146. package/build/esm/cbac-picker/CbacPickerDialog.js.map +1 -0
  147. package/build/esm/cbac-picker/base/BaseCbacBanner.js +64 -0
  148. package/build/esm/cbac-picker/base/BaseCbacBanner.js.map +1 -0
  149. package/build/esm/cbac-picker/base/BaseCbacBanner.module.css +74 -0
  150. package/build/esm/cbac-picker/base/BaseCbacBannerPopover.js +168 -0
  151. package/build/esm/cbac-picker/base/BaseCbacBannerPopover.js.map +1 -0
  152. package/build/esm/cbac-picker/base/BaseCbacBannerPopover.module.css +193 -0
  153. package/build/esm/cbac-picker/base/BaseCbacPicker.js +74 -0
  154. package/build/esm/cbac-picker/base/BaseCbacPicker.js.map +1 -0
  155. package/build/esm/cbac-picker/base/BaseCbacPicker.module.css +47 -0
  156. package/build/esm/cbac-picker/base/BaseCbacPickerDialog.js +51 -0
  157. package/build/esm/cbac-picker/base/BaseCbacPickerDialog.js.map +1 -0
  158. package/build/esm/cbac-picker/base/CategoryMarkingGroup.js +91 -0
  159. package/build/esm/cbac-picker/base/CategoryMarkingGroup.js.map +1 -0
  160. package/build/esm/cbac-picker/base/CategoryMarkingGroup.module.css +69 -0
  161. package/build/esm/cbac-picker/base/CbacPickerDialogFooter.js +43 -0
  162. package/build/esm/cbac-picker/base/CbacPickerDialogFooter.js.map +1 -0
  163. package/build/esm/cbac-picker/base/CbacPickerDialogFooter.module.css +19 -0
  164. package/build/esm/cbac-picker/base/InfoBanner.js +32 -0
  165. package/build/esm/cbac-picker/base/InfoBanner.js.map +1 -0
  166. package/build/esm/cbac-picker/base/InfoBanner.module.css +30 -0
  167. package/build/esm/cbac-picker/base/MarkingButton.js +83 -0
  168. package/build/esm/cbac-picker/base/MarkingButton.js.map +1 -0
  169. package/build/esm/cbac-picker/base/MarkingButton.module.css +104 -0
  170. package/build/esm/cbac-picker/base/MaxClassificationField.js +42 -0
  171. package/build/esm/cbac-picker/base/MaxClassificationField.js.map +1 -0
  172. package/build/esm/cbac-picker/base/MaxClassificationField.module.css +39 -0
  173. package/build/esm/cbac-picker/base/OverflowButton.js +51 -0
  174. package/build/esm/cbac-picker/base/OverflowButton.js.map +1 -0
  175. package/build/esm/cbac-picker/base/OverflowButton.module.css +57 -0
  176. package/build/esm/cbac-picker/base/OverflowItem.js +64 -0
  177. package/build/esm/cbac-picker/base/OverflowItem.js.map +1 -0
  178. package/build/esm/cbac-picker/base/OverflowItem.module.css +75 -0
  179. package/build/esm/cbac-picker/base/ValidationWarning.js +44 -0
  180. package/build/esm/cbac-picker/base/ValidationWarning.js.map +1 -0
  181. package/build/esm/cbac-picker/base/ValidationWarning.module.css +71 -0
  182. package/build/esm/cbac-picker/base/selectionStateHelpers.js +35 -0
  183. package/build/esm/cbac-picker/base/selectionStateHelpers.js.map +1 -0
  184. package/build/esm/cbac-picker/types.js +2 -0
  185. package/build/esm/cbac-picker/types.js.map +1 -0
  186. package/build/esm/cbac-picker/useCbacPickerState.js +104 -0
  187. package/build/esm/cbac-picker/useCbacPickerState.js.map +1 -0
  188. package/build/esm/cbac-picker/useCbacSelection.js +52 -0
  189. package/build/esm/cbac-picker/useCbacSelection.js.map +1 -0
  190. package/build/esm/cbac-picker/useConstraintCallout.js +42 -0
  191. package/build/esm/cbac-picker/useConstraintCallout.js.map +1 -0
  192. package/build/esm/cbac-picker/utils/cbacPickerUtils.js +60 -0
  193. package/build/esm/cbac-picker/utils/cbacPickerUtils.js.map +1 -0
  194. package/build/esm/cbac-picker/utils/errorMessages.js +78 -0
  195. package/build/esm/cbac-picker/utils/errorMessages.js.map +1 -0
  196. package/build/esm/cbac-picker/utils/selectionLogic.js +91 -0
  197. package/build/esm/cbac-picker/utils/selectionLogic.js.map +1 -0
  198. package/build/esm/cbac-picker/utils/validationMessages.js +34 -0
  199. package/build/esm/cbac-picker/utils/validationMessages.js.map +1 -0
  200. package/build/esm/filter-list/base/inputs/ListogramInput.module.css +2 -5
  201. package/build/esm/public/experimental/cbac-picker.js +36 -0
  202. package/build/esm/public/experimental/cbac-picker.js.map +1 -0
  203. package/build/esm/public/experimental.js +1 -0
  204. package/build/esm/public/experimental.js.map +1 -1
  205. package/build/esm/tokens/component-tokens/filter-list.css +2 -2
  206. package/build/esm/util/UserAgent.js +1 -1
  207. package/build/esm/util/UserAgent.js.map +1 -1
  208. package/build/types/cbac-picker/CbacBanner.d.ts +8 -0
  209. package/build/types/cbac-picker/CbacBanner.d.ts.map +1 -0
  210. package/build/types/cbac-picker/CbacBannerPopover.d.ts +9 -0
  211. package/build/types/cbac-picker/CbacBannerPopover.d.ts.map +1 -0
  212. package/build/types/cbac-picker/CbacPicker.d.ts +10 -0
  213. package/build/types/cbac-picker/CbacPicker.d.ts.map +1 -0
  214. package/build/types/cbac-picker/CbacPickerDialog.d.ts +10 -0
  215. package/build/types/cbac-picker/CbacPickerDialog.d.ts.map +1 -0
  216. package/build/types/cbac-picker/base/BaseCbacBanner.d.ts +10 -0
  217. package/build/types/cbac-picker/base/BaseCbacBanner.d.ts.map +1 -0
  218. package/build/types/cbac-picker/base/BaseCbacBannerPopover.d.ts +18 -0
  219. package/build/types/cbac-picker/base/BaseCbacBannerPopover.d.ts.map +1 -0
  220. package/build/types/cbac-picker/base/BaseCbacPicker.d.ts +18 -0
  221. package/build/types/cbac-picker/base/BaseCbacPicker.d.ts.map +1 -0
  222. package/build/types/cbac-picker/base/BaseCbacPickerDialog.d.ts +11 -0
  223. package/build/types/cbac-picker/base/BaseCbacPickerDialog.d.ts.map +1 -0
  224. package/build/types/cbac-picker/base/CategoryMarkingGroup.d.ts +15 -0
  225. package/build/types/cbac-picker/base/CategoryMarkingGroup.d.ts.map +1 -0
  226. package/build/types/cbac-picker/base/CbacPickerDialogFooter.d.ts +8 -0
  227. package/build/types/cbac-picker/base/CbacPickerDialogFooter.d.ts.map +1 -0
  228. package/build/types/cbac-picker/base/InfoBanner.d.ts +6 -0
  229. package/build/types/cbac-picker/base/InfoBanner.d.ts.map +1 -0
  230. package/build/types/cbac-picker/base/MarkingButton.d.ts +11 -0
  231. package/build/types/cbac-picker/base/MarkingButton.d.ts.map +1 -0
  232. package/build/types/cbac-picker/base/MaxClassificationField.d.ts +9 -0
  233. package/build/types/cbac-picker/base/MaxClassificationField.d.ts.map +1 -0
  234. package/build/types/cbac-picker/base/OverflowButton.d.ts +14 -0
  235. package/build/types/cbac-picker/base/OverflowButton.d.ts.map +1 -0
  236. package/build/types/cbac-picker/base/OverflowItem.d.ts +11 -0
  237. package/build/types/cbac-picker/base/OverflowItem.d.ts.map +1 -0
  238. package/build/types/cbac-picker/base/ValidationWarning.d.ts +7 -0
  239. package/build/types/cbac-picker/base/ValidationWarning.d.ts.map +1 -0
  240. package/build/types/cbac-picker/base/selectionStateHelpers.d.ts +5 -0
  241. package/build/types/cbac-picker/base/selectionStateHelpers.d.ts.map +1 -0
  242. package/build/types/cbac-picker/types.d.ts +32 -0
  243. package/build/types/cbac-picker/types.d.ts.map +1 -0
  244. package/build/types/cbac-picker/useCbacPickerState.d.ts +14 -0
  245. package/build/types/cbac-picker/useCbacPickerState.d.ts.map +1 -0
  246. package/build/types/cbac-picker/useCbacSelection.d.ts +11 -0
  247. package/build/types/cbac-picker/useCbacSelection.d.ts.map +1 -0
  248. package/build/types/cbac-picker/useConstraintCallout.d.ts +3 -0
  249. package/build/types/cbac-picker/useConstraintCallout.d.ts.map +1 -0
  250. package/build/types/cbac-picker/utils/cbacPickerUtils.d.ts +22 -0
  251. package/build/types/cbac-picker/utils/cbacPickerUtils.d.ts.map +1 -0
  252. package/build/types/cbac-picker/utils/errorMessages.d.ts +5 -0
  253. package/build/types/cbac-picker/utils/errorMessages.d.ts.map +1 -0
  254. package/build/types/cbac-picker/utils/selectionLogic.d.ts +4 -0
  255. package/build/types/cbac-picker/utils/selectionLogic.d.ts.map +1 -0
  256. package/build/types/cbac-picker/utils/validationMessages.d.ts +9 -0
  257. package/build/types/cbac-picker/utils/validationMessages.d.ts.map +1 -0
  258. package/build/types/public/experimental/cbac-picker.d.ts +12 -0
  259. package/build/types/public/experimental/cbac-picker.d.ts.map +1 -0
  260. package/build/types/public/experimental.d.ts +1 -0
  261. package/build/types/public/experimental.d.ts.map +1 -1
  262. package/docs/CbacPicker.md +495 -0
  263. package/package.json +11 -2
  264. package/build/cjs/chunk-GKWXRVFO.cjs +0 -11
  265. package/build/cjs/chunk-JPVZGQXS.cjs +0 -11
  266. package/build/cjs/chunk-UJXNFENA.cjs +0 -11
  267. package/build/cjs/chunk-UTB55N5Y.cjs.map +0 -1
  268. package/build/cjs/chunk-W6C6UWUN.cjs +0 -11
  269. package/build/cjs/chunk-YLYICFCA.cjs +0 -11
package/AGENTS.md CHANGED
@@ -51,25 +51,32 @@ Components are imported from their individual entry points under `@osdk/react-co
51
51
  - `@osdk/react-components/experimental/video-viewer` — VideoViewer, BaseVideoViewer
52
52
  - `@osdk/react-components/experimental/xml-viewer` — XmlViewer, BaseXmlViewer
53
53
 
54
- | Component | Description |
55
- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
56
- | **ObjectTable** | Table for displaying OSDK object sets with sorting, filtering, inline editing, column pinning/resizing, row selection, and infinite scroll. |
57
- | **BaseTable** | OSDK-agnostic base table — use when building custom data fetching on top of the table UI. |
58
- | **FilterList** | Aggregation-based filter UI for object sets with draggable reordering. |
59
- | **BaseFilterList** | OSDK-agnostic base filter list — use for custom filter implementations. |
60
- | **ActionForm** | Form for applying OSDK actions with generated or custom field definitions. |
61
- | **BaseForm** | OSDK-agnostic base action form — use when supplying explicit field content and submit handling. |
62
- | **ColumnConfigDialog** | Dialog for managing column visibility and drag-and-drop reordering. |
63
- | **PdfViewer** | PDF viewer for OSDK Media objects with toolbar, search, annotations, sidebar (thumbnails/outline), highlight mode, and form fields. |
64
- | **BasePdfViewer** | OSDK-agnostic base PDF viewer — accepts a URL or ArrayBuffer directly. Use when building custom data fetching on top of the viewer UI. |
65
- | **TiffRenderer** | TIFF image renderer — accepts a `Uint8Array` and renders onto a canvas with size validation and error handling. |
66
- | **MarkdownRenderer** | Markdown renderer that accepts a markdown string and renders it with styled headings, code blocks, tables, and links. |
67
- | **DocumentViewer** | Unified media viewer that auto-detects file type (PDF, TIFF, image, video, Excel, email, markdown, XML) and renders the appropriate viewer. |
68
- | **EmailViewer** | Email viewer — parses and renders `.eml` files with headers, HTML body (sandboxed iframe), and plain text fallback. |
69
- | **ExcelViewer** | Excel viewer — parses and renders `.xlsx` spreadsheets with sheet tabs and column/row headers. |
70
- | **ImageViewer** | Image viewer — renders images (PNG, JPEG, GIF, SVG, WebP, BMP) with object-fit contain. |
71
- | **VideoViewer** | Video viewer — renders video with native browser controls. |
72
- | **XmlViewer** | XML viewer — renders XML content with syntax preservation. |
54
+ | Component | Description |
55
+ | -------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------- |
56
+ | **ObjectTable** | Table for displaying OSDK object sets with sorting, filtering, inline editing, column pinning/resizing, row selection, and infinite scroll. |
57
+ | **BaseTable** | OSDK-agnostic base table — use when building custom data fetching on top of the table UI. |
58
+ | **FilterList** | Aggregation-based filter UI for object sets with draggable reordering. |
59
+ | **BaseFilterList** | OSDK-agnostic base filter list — use for custom filter implementations. |
60
+ | **ActionForm** | Form for applying OSDK actions with generated or custom field definitions. |
61
+ | **BaseForm** | OSDK-agnostic base action form — use when supplying explicit field content and submit handling. |
62
+ | **ColumnConfigDialog** | Dialog for managing column visibility and drag-and-drop reordering. |
63
+ | **PdfViewer** | PDF viewer for OSDK Media objects with toolbar, search, annotations, sidebar (thumbnails/outline), highlight mode, and form fields. |
64
+ | **BasePdfViewer** | OSDK-agnostic base PDF viewer — accepts a URL or ArrayBuffer directly. Use when building custom data fetching on top of the viewer UI. |
65
+ | **TiffRenderer** | TIFF image renderer — accepts a `Uint8Array` and renders onto a canvas with size validation and error handling. |
66
+ | **MarkdownRenderer** | Markdown renderer that accepts a markdown string and renders it with styled headings, code blocks, tables, and links. |
67
+ | **DocumentViewer** | Unified media viewer that auto-detects file type (PDF, TIFF, image, video, Excel, email, markdown, XML) and renders the appropriate viewer. |
68
+ | **EmailViewer** | Email viewer — parses and renders `.eml` files with headers, HTML body (sandboxed iframe), and plain text fallback. |
69
+ | **ExcelViewer** | Excel viewer — parses and renders `.xlsx` spreadsheets with sheet tabs and column/row headers. |
70
+ | **ImageViewer** | Image viewer — renders images (PNG, JPEG, GIF, SVG, WebP, BMP) with object-fit contain. |
71
+ | **VideoViewer** | Video viewer — renders video with native browser controls. |
72
+ | **XmlViewer** | XML viewer — renders XML content with syntax preservation. |
73
+ | **CbacPicker** | Picker for classification-based access control (CBAC) markings — disjunctive/conjunctive categories, restriction enforcement, banner. |
74
+ | **CbacPickerDialog** | Dialog wrapper for `CbacPicker` with confirm/cancel actions and validation. |
75
+ | **CbacBanner** | OSDK-aware classification banner that resolves a marking-set into a colored banner. |
76
+ | **BaseCbacPicker** | OSDK-agnostic base CBAC picker — use when building custom data fetching on top of the picker UI. |
77
+ | **BaseCbacBanner** | OSDK-agnostic classification banner display with customizable colors and text. |
78
+ | **BaseCbacPickerDialog** | OSDK-agnostic dialog wrapper for `BaseCbacPicker`. |
79
+ | **MaxClassificationField** | Field that lets users constrain the maximum classification allowed for a marking selection. |
73
80
 
74
81
  ## Documentation
75
82
 
@@ -82,3 +89,4 @@ Before using any component, read the relevant doc from this package:
82
89
  - **TiffRenderer**: Read [docs/TiffViewer.md](./docs/TiffViewer.md) for props and usage
83
90
  - **MarkdownRenderer**: Read [docs/MarkdownRenderer.md](./docs/MarkdownRenderer.md) for props, examples, and theming
84
91
  - **FilterList**: Read [docs/FilterList.md](./docs/FilterList.md) for props, examples, and usage
92
+ - **CbacPicker**: Read [docs/CbacPicker.md](./docs/CbacPicker.md) for props, examples, base components, and troubleshooting
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # @osdk/react-components
2
2
 
3
+ ## 0.27.0-main-3c39c107baa40833fcc79d0d913fb4a468a6bd06
4
+
5
+ ### Minor Changes
6
+
7
+ - 3c39c10: Merge `@osdk/cbac-components` into `@osdk/react-components`. The CBAC picker (`CbacPicker`, `CbacPickerDialog`, `CbacBanner`, `BaseCbacPicker`, `BaseCbacBanner`, `BaseCbacPickerDialog`, `MaxClassificationField`, and selection-logic utilities) is now exported from `@osdk/react-components/experimental/cbac-picker`. The legacy `@osdk/cbac-components` package remains in the repository for reference but is no longer the source of truth.
8
+
9
+ ### Patch Changes
10
+
11
+ - 820bc7b: Fix listogram bar border-radius distortion and use theme-aware background token
12
+
3
13
  ## 0.26.0
4
14
 
5
15
  ### Minor Changes
package/README.md CHANGED
@@ -137,6 +137,7 @@ The components that this package will provide are:
137
137
  | `ImageViewer` | Renders images (PNG, JPEG, GIF, SVG, WebP, BMP) | [Guide](https://github.com/palantir/osdk-ts/blob/main/packages/react-components/docs/ImageViewer.md) |
138
138
  | `VideoViewer` | Renders video with native browser controls | [Guide](https://github.com/palantir/osdk-ts/blob/main/packages/react-components/docs/VideoViewer.md) |
139
139
  | `XmlViewer` | Renders XML content with syntax preservation | [Guide](https://github.com/palantir/osdk-ts/blob/main/packages/react-components/docs/XmlViewer.md) |
140
+ | `CbacPicker` | Picker for classification-based access control (CBAC) markings with banner display | [Guide](https://github.com/palantir/osdk-ts/blob/main/packages/react-components/docs/CbacPicker.md) |
140
141
 
141
142
  ## Component Architecture
142
143
 
@@ -0,0 +1,42 @@
1
+ /*
2
+ * Copyright 2026 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { useCbacBanner } from "@osdk/react/platform-apis";
18
+ import React from "react";
19
+ import { BaseCbacBanner } from "./base/BaseCbacBanner.js";
20
+ import { resolveBannerDisplay } from "./utils/cbacPickerUtils.js";
21
+ export function CbacBanner({
22
+ markingIds,
23
+ onClick,
24
+ onDismiss,
25
+ className
26
+ }) {
27
+ const {
28
+ banner
29
+ } = useCbacBanner({
30
+ markingIds
31
+ });
32
+ const resolved = resolveBannerDisplay(banner);
33
+ return /*#__PURE__*/React.createElement(BaseCbacBanner, {
34
+ classificationString: resolved.classificationString,
35
+ textColor: resolved.textColor,
36
+ backgroundColors: resolved.backgroundColors,
37
+ onClick: onClick,
38
+ onDismiss: onDismiss,
39
+ className: className
40
+ });
41
+ }
42
+ //# sourceMappingURL=CbacBanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CbacBanner.js","names":["useCbacBanner","React","BaseCbacBanner","resolveBannerDisplay","CbacBanner","markingIds","onClick","onDismiss","className","banner","resolved","createElement","classificationString","textColor","backgroundColors"],"sources":["CbacBanner.tsx"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCbacBanner } from \"@osdk/react/platform-apis\";\nimport React from \"react\";\nimport { BaseCbacBanner } from \"./base/BaseCbacBanner.js\";\nimport { resolveBannerDisplay } from \"./utils/cbacPickerUtils.js\";\n\nexport interface CbacBannerProps {\n markingIds: string[];\n onClick?: () => void;\n onDismiss?: () => void;\n className?: string;\n}\n\nexport function CbacBanner({\n markingIds,\n onClick,\n onDismiss,\n className,\n}: CbacBannerProps): React.ReactElement {\n const { banner } = useCbacBanner({ markingIds });\n const resolved = resolveBannerDisplay(banner);\n\n return (\n <BaseCbacBanner\n classificationString={resolved.classificationString}\n textColor={resolved.textColor}\n backgroundColors={resolved.backgroundColors}\n onClick={onClick}\n onDismiss={onDismiss}\n className={className}\n />\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,aAAa,QAAQ,2BAA2B;AACzD,OAAOC,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc,QAAQ,0BAA0B;AACzD,SAASC,oBAAoB,QAAQ,4BAA4B;AASjE,OAAO,SAASC,UAAUA,CAAC;EACzBC,UAAU;EACVC,OAAO;EACPC,SAAS;EACTC;AACe,CAAC,EAAsB;EACtC,MAAM;IAAEC;EAAO,CAAC,GAAGT,aAAa,CAAC;IAAEK;EAAW,CAAC,CAAC;EAChD,MAAMK,QAAQ,GAAGP,oBAAoB,CAACM,MAAM,CAAC;EAE7C,oBACER,KAAA,CAAAU,aAAA,CAACT,cAAc;IACbU,oBAAoB,EAAEF,QAAQ,CAACE,oBAAqB;IACpDC,SAAS,EAAEH,QAAQ,CAACG,SAAU;IAC9BC,gBAAgB,EAAEJ,QAAQ,CAACI,gBAAiB;IAC5CR,OAAO,EAAEA,OAAQ;IACjBC,SAAS,EAAEA,SAAU;IACrBC,SAAS,EAAEA;EAAU,CACtB,CAAC;AAEN","ignoreList":[]}
@@ -0,0 +1,83 @@
1
+ /*
2
+ * Copyright 2026 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { useCbacBanner, useMarkingCategories, useMarkings } from "@osdk/react/platform-apis";
18
+ import React from "react";
19
+ import { BaseCbacBannerPopover } from "./base/BaseCbacBannerPopover.js";
20
+ import { CbacPickerDialog } from "./CbacPickerDialog.js";
21
+ import { groupMarkingsByCategory, resolveBannerDisplay } from "./utils/cbacPickerUtils.js";
22
+ export function CbacBannerPopover({
23
+ markingIds,
24
+ onChange,
25
+ maxClassificationConstraint,
26
+ className
27
+ }) {
28
+ const {
29
+ banner,
30
+ isLoading: bannerLoading,
31
+ error: bannerError,
32
+ refetch: refetchBanner
33
+ } = useCbacBanner({
34
+ markingIds
35
+ });
36
+ const {
37
+ categories,
38
+ isLoading: categoriesLoading,
39
+ error: categoriesError,
40
+ refetch: refetchCategories
41
+ } = useMarkingCategories();
42
+ const {
43
+ markings,
44
+ isLoading: markingsLoading,
45
+ error: markingsError,
46
+ refetch: refetchMarkings
47
+ } = useMarkings();
48
+ const [isDialogOpen, setIsDialogOpen] = React.useState(false);
49
+ const handleRetry = React.useCallback(() => {
50
+ refetchBanner();
51
+ refetchCategories();
52
+ refetchMarkings();
53
+ }, [refetchBanner, refetchCategories, refetchMarkings]);
54
+ const appliedMarkings = React.useMemo(() => groupMarkingsByCategory(markingIds, categories, markings), [markingIds, categories, markings]);
55
+ const resolved = resolveBannerDisplay(banner);
56
+ const description = markingIds.length === 0 ? "This data has no classification restrictions." : `This data is classified as: ${resolved.classificationString}`;
57
+ const handleEditClick = React.useCallback(() => {
58
+ setIsDialogOpen(true);
59
+ }, []);
60
+ const handleConfirm = React.useCallback(newMarkingIds => {
61
+ onChange(newMarkingIds);
62
+ setIsDialogOpen(false);
63
+ }, [onChange]);
64
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(BaseCbacBannerPopover, {
65
+ classificationString: resolved.classificationString,
66
+ textColor: resolved.textColor,
67
+ backgroundColors: resolved.backgroundColors,
68
+ appliedMarkings: appliedMarkings,
69
+ onEditClick: handleEditClick,
70
+ description: description,
71
+ isLoading: bannerLoading || categoriesLoading || markingsLoading,
72
+ error: bannerError ?? categoriesError ?? markingsError,
73
+ onRetry: handleRetry,
74
+ className: className
75
+ }), isDialogOpen && /*#__PURE__*/React.createElement(CbacPickerDialog, {
76
+ isOpen: isDialogOpen,
77
+ onOpenChange: setIsDialogOpen,
78
+ onConfirm: handleConfirm,
79
+ initialMarkingIds: markingIds,
80
+ maxClassificationConstraint: maxClassificationConstraint
81
+ }));
82
+ }
83
+ //# sourceMappingURL=CbacBannerPopover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CbacBannerPopover.js","names":["useCbacBanner","useMarkingCategories","useMarkings","React","BaseCbacBannerPopover","CbacPickerDialog","groupMarkingsByCategory","resolveBannerDisplay","CbacBannerPopover","markingIds","onChange","maxClassificationConstraint","className","banner","isLoading","bannerLoading","error","bannerError","refetch","refetchBanner","categories","categoriesLoading","categoriesError","refetchCategories","markings","markingsLoading","markingsError","refetchMarkings","isDialogOpen","setIsDialogOpen","useState","handleRetry","useCallback","appliedMarkings","useMemo","resolved","description","length","classificationString","handleEditClick","handleConfirm","newMarkingIds","createElement","Fragment","textColor","backgroundColors","onEditClick","onRetry","isOpen","onOpenChange","onConfirm","initialMarkingIds"],"sources":["CbacBannerPopover.tsx"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n useCbacBanner,\n useMarkingCategories,\n useMarkings,\n} from \"@osdk/react/platform-apis\";\nimport React from \"react\";\nimport { BaseCbacBannerPopover } from \"./base/BaseCbacBannerPopover.js\";\nimport { CbacPickerDialog } from \"./CbacPickerDialog.js\";\nimport type { MaxClassificationConstraint } from \"./types.js\";\nimport {\n groupMarkingsByCategory,\n resolveBannerDisplay,\n} from \"./utils/cbacPickerUtils.js\";\n\nexport interface CbacBannerPopoverProps {\n markingIds: string[];\n onChange: (markingIds: string[]) => void;\n maxClassificationConstraint?: MaxClassificationConstraint;\n className?: string;\n}\n\nexport function CbacBannerPopover({\n markingIds,\n onChange,\n maxClassificationConstraint,\n className,\n}: CbacBannerPopoverProps): React.ReactElement {\n const {\n banner,\n isLoading: bannerLoading,\n error: bannerError,\n refetch: refetchBanner,\n } = useCbacBanner({ markingIds });\n const {\n categories,\n isLoading: categoriesLoading,\n error: categoriesError,\n refetch: refetchCategories,\n } = useMarkingCategories();\n const {\n markings,\n isLoading: markingsLoading,\n error: markingsError,\n refetch: refetchMarkings,\n } = useMarkings();\n\n const [isDialogOpen, setIsDialogOpen] = React.useState(false);\n\n const isLoading = bannerLoading || categoriesLoading || markingsLoading;\n\n const error = bannerError ?? categoriesError ?? markingsError;\n\n const handleRetry = React.useCallback(() => {\n refetchBanner();\n refetchCategories();\n refetchMarkings();\n }, [refetchBanner, refetchCategories, refetchMarkings]);\n\n const appliedMarkings = React.useMemo(\n () => groupMarkingsByCategory(markingIds, categories, markings),\n [markingIds, categories, markings],\n );\n\n const resolved = resolveBannerDisplay(banner);\n\n const description = markingIds.length === 0\n ? \"This data has no classification restrictions.\"\n : `This data is classified as: ${resolved.classificationString}`;\n\n const handleEditClick = React.useCallback(() => {\n setIsDialogOpen(true);\n }, []);\n\n const handleConfirm = React.useCallback((newMarkingIds: string[]) => {\n onChange(newMarkingIds);\n setIsDialogOpen(false);\n }, [onChange]);\n\n return (\n <>\n <BaseCbacBannerPopover\n classificationString={resolved.classificationString}\n textColor={resolved.textColor}\n backgroundColors={resolved.backgroundColors}\n appliedMarkings={appliedMarkings}\n onEditClick={handleEditClick}\n description={description}\n isLoading={isLoading}\n error={error}\n onRetry={handleRetry}\n className={className}\n />\n {isDialogOpen && (\n <CbacPickerDialog\n isOpen={isDialogOpen}\n onOpenChange={setIsDialogOpen}\n onConfirm={handleConfirm}\n initialMarkingIds={markingIds}\n maxClassificationConstraint={maxClassificationConstraint}\n />\n )}\n </>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SACEA,aAAa,EACbC,oBAAoB,EACpBC,WAAW,QACN,2BAA2B;AAClC,OAAOC,KAAK,MAAM,OAAO;AACzB,SAASC,qBAAqB,QAAQ,iCAAiC;AACvE,SAASC,gBAAgB,QAAQ,uBAAuB;AAExD,SACEC,uBAAuB,EACvBC,oBAAoB,QACf,4BAA4B;AASnC,OAAO,SAASC,iBAAiBA,CAAC;EAChCC,UAAU;EACVC,QAAQ;EACRC,2BAA2B;EAC3BC;AACsB,CAAC,EAAsB;EAC7C,MAAM;IACJC,MAAM;IACNC,SAAS,EAAEC,aAAa;IACxBC,KAAK,EAAEC,WAAW;IAClBC,OAAO,EAAEC;EACX,CAAC,GAAGnB,aAAa,CAAC;IAAES;EAAW,CAAC,CAAC;EACjC,MAAM;IACJW,UAAU;IACVN,SAAS,EAAEO,iBAAiB;IAC5BL,KAAK,EAAEM,eAAe;IACtBJ,OAAO,EAAEK;EACX,CAAC,GAAGtB,oBAAoB,CAAC,CAAC;EAC1B,MAAM;IACJuB,QAAQ;IACRV,SAAS,EAAEW,eAAe;IAC1BT,KAAK,EAAEU,aAAa;IACpBR,OAAO,EAAES;EACX,CAAC,GAAGzB,WAAW,CAAC,CAAC;EAEjB,MAAM,CAAC0B,YAAY,EAAEC,eAAe,CAAC,GAAG1B,KAAK,CAAC2B,QAAQ,CAAC,KAAK,CAAC;EAM7D,MAAMC,WAAW,GAAG5B,KAAK,CAAC6B,WAAW,CAAC,MAAM;IAC1Cb,aAAa,CAAC,CAAC;IACfI,iBAAiB,CAAC,CAAC;IACnBI,eAAe,CAAC,CAAC;EACnB,CAAC,EAAE,CAACR,aAAa,EAAEI,iBAAiB,EAAEI,eAAe,CAAC,CAAC;EAEvD,MAAMM,eAAe,GAAG9B,KAAK,CAAC+B,OAAO,CACnC,MAAM5B,uBAAuB,CAACG,UAAU,EAAEW,UAAU,EAAEI,QAAQ,CAAC,EAC/D,CAACf,UAAU,EAAEW,UAAU,EAAEI,QAAQ,CACnC,CAAC;EAED,MAAMW,QAAQ,GAAG5B,oBAAoB,CAACM,MAAM,CAAC;EAE7C,MAAMuB,WAAW,GAAG3B,UAAU,CAAC4B,MAAM,KAAK,CAAC,GACvC,+CAA+C,GAC/C,+BAA+BF,QAAQ,CAACG,oBAAoB,EAAE;EAElE,MAAMC,eAAe,GAAGpC,KAAK,CAAC6B,WAAW,CAAC,MAAM;IAC9CH,eAAe,CAAC,IAAI,CAAC;EACvB,CAAC,EAAE,EAAE,CAAC;EAEN,MAAMW,aAAa,GAAGrC,KAAK,CAAC6B,WAAW,CAAES,aAAuB,IAAK;IACnE/B,QAAQ,CAAC+B,aAAa,CAAC;IACvBZ,eAAe,CAAC,KAAK,CAAC;EACxB,CAAC,EAAE,CAACnB,QAAQ,CAAC,CAAC;EAEd,oBACEP,KAAA,CAAAuC,aAAA,CAAAvC,KAAA,CAAAwC,QAAA,qBACExC,KAAA,CAAAuC,aAAA,CAACtC,qBAAqB;IACpBkC,oBAAoB,EAAEH,QAAQ,CAACG,oBAAqB;IACpDM,SAAS,EAAET,QAAQ,CAACS,SAAU;IAC9BC,gBAAgB,EAAEV,QAAQ,CAACU,gBAAiB;IAC5CZ,eAAe,EAAEA,eAAgB;IACjCa,WAAW,EAAEP,eAAgB;IAC7BH,WAAW,EAAEA,WAAY;IACzBtB,SAAS,EAvCGC,aAAa,IAAIM,iBAAiB,IAAII,eAuC7B;IACrBT,KAAK,EAtCGC,WAAW,IAAIK,eAAe,IAAII,aAsC7B;IACbqB,OAAO,EAAEhB,WAAY;IACrBnB,SAAS,EAAEA;EAAU,CACtB,CAAC,EACDgB,YAAY,iBACXzB,KAAA,CAAAuC,aAAA,CAACrC,gBAAgB;IACf2C,MAAM,EAAEpB,YAAa;IACrBqB,YAAY,EAAEpB,eAAgB;IAC9BqB,SAAS,EAAEV,aAAc;IACzBW,iBAAiB,EAAE1C,UAAW;IAC9BE,2BAA2B,EAAEA;EAA4B,CAC1D,CAEH,CAAC;AAEP","ignoreList":[]}
@@ -0,0 +1,69 @@
1
+ /*
2
+ * Copyright 2026 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import React from "react";
18
+ import { BaseCbacPicker } from "./base/BaseCbacPicker.js";
19
+ import { useCbacSelection } from "./useCbacSelection.js";
20
+ import { useConstraintCallout } from "./useConstraintCallout.js";
21
+ import { EMPTY_ARRAY } from "./utils/cbacPickerUtils.js";
22
+ import { toggleMarking } from "./utils/selectionLogic.js";
23
+ export function CbacPicker({
24
+ initialMarkingIds,
25
+ onChange,
26
+ maxClassificationConstraint,
27
+ readOnly,
28
+ className
29
+ }) {
30
+ const {
31
+ selectedIdsRef,
32
+ setSelectedIds,
33
+ categoryGroups,
34
+ markingStates,
35
+ banner,
36
+ requiredMarkingGroups,
37
+ isValid,
38
+ isLoading,
39
+ error
40
+ } = useCbacSelection(initialMarkingIds);
41
+ const handleMarkingToggle = React.useCallback(markingId => {
42
+ if (readOnly) {
43
+ return;
44
+ }
45
+ const newSelection = toggleMarking(markingId, selectedIdsRef.current, categoryGroups);
46
+ setSelectedIds(newSelection);
47
+ onChange(newSelection);
48
+ }, [readOnly, categoryGroups, onChange]);
49
+ const handleDismiss = React.useCallback(() => {
50
+ setSelectedIds(EMPTY_ARRAY);
51
+ onChange(EMPTY_ARRAY);
52
+ }, [onChange]);
53
+ const constraintCallout = useConstraintCallout(maxClassificationConstraint);
54
+ return /*#__PURE__*/React.createElement(BaseCbacPicker, {
55
+ categories: categoryGroups,
56
+ markingStates: markingStates,
57
+ banner: banner,
58
+ onMarkingToggle: handleMarkingToggle,
59
+ onDismissBanner: handleDismiss,
60
+ requiredMarkingGroups: requiredMarkingGroups,
61
+ isValid: isValid,
62
+ readOnly: readOnly,
63
+ isLoading: isLoading,
64
+ error: error,
65
+ validationCallouts: constraintCallout,
66
+ className: className
67
+ });
68
+ }
69
+ //# sourceMappingURL=CbacPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CbacPicker.js","names":["React","BaseCbacPicker","useCbacSelection","useConstraintCallout","EMPTY_ARRAY","toggleMarking","CbacPicker","initialMarkingIds","onChange","maxClassificationConstraint","readOnly","className","selectedIdsRef","setSelectedIds","categoryGroups","markingStates","banner","requiredMarkingGroups","isValid","isLoading","error","handleMarkingToggle","useCallback","markingId","newSelection","current","handleDismiss","constraintCallout","createElement","categories","onMarkingToggle","onDismissBanner","validationCallouts"],"sources":["CbacPicker.tsx"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport { BaseCbacPicker } from \"./base/BaseCbacPicker.js\";\nimport type { MaxClassificationConstraint } from \"./types.js\";\nimport { useCbacSelection } from \"./useCbacSelection.js\";\nimport { useConstraintCallout } from \"./useConstraintCallout.js\";\nimport { EMPTY_ARRAY } from \"./utils/cbacPickerUtils.js\";\nimport { toggleMarking } from \"./utils/selectionLogic.js\";\n\nexport interface CbacPickerProps {\n initialMarkingIds?: string[];\n onChange: (markingIds: string[]) => void;\n maxClassificationConstraint?: MaxClassificationConstraint;\n readOnly?: boolean;\n className?: string;\n}\n\nexport function CbacPicker({\n initialMarkingIds,\n onChange,\n maxClassificationConstraint,\n readOnly,\n className,\n}: CbacPickerProps): React.ReactElement {\n const {\n selectedIdsRef,\n setSelectedIds,\n categoryGroups,\n markingStates,\n banner,\n requiredMarkingGroups,\n isValid,\n isLoading,\n error,\n } = useCbacSelection(initialMarkingIds);\n\n const handleMarkingToggle = React.useCallback(\n (markingId: string) => {\n if (readOnly) {\n return;\n }\n const newSelection = toggleMarking(\n markingId,\n selectedIdsRef.current,\n categoryGroups,\n );\n setSelectedIds(newSelection);\n onChange(newSelection);\n },\n [readOnly, categoryGroups, onChange],\n );\n\n const handleDismiss = React.useCallback(() => {\n setSelectedIds(EMPTY_ARRAY);\n onChange(EMPTY_ARRAY);\n }, [onChange]);\n\n const constraintCallout = useConstraintCallout(maxClassificationConstraint);\n\n return (\n <BaseCbacPicker\n categories={categoryGroups}\n markingStates={markingStates}\n banner={banner}\n onMarkingToggle={handleMarkingToggle}\n onDismissBanner={handleDismiss}\n requiredMarkingGroups={requiredMarkingGroups}\n isValid={isValid}\n readOnly={readOnly}\n isLoading={isLoading}\n error={error}\n validationCallouts={constraintCallout}\n className={className}\n />\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc,QAAQ,0BAA0B;AAEzD,SAASC,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,oBAAoB,QAAQ,2BAA2B;AAChE,SAASC,WAAW,QAAQ,4BAA4B;AACxD,SAASC,aAAa,QAAQ,2BAA2B;AAUzD,OAAO,SAASC,UAAUA,CAAC;EACzBC,iBAAiB;EACjBC,QAAQ;EACRC,2BAA2B;EAC3BC,QAAQ;EACRC;AACe,CAAC,EAAsB;EACtC,MAAM;IACJC,cAAc;IACdC,cAAc;IACdC,cAAc;IACdC,aAAa;IACbC,MAAM;IACNC,qBAAqB;IACrBC,OAAO;IACPC,SAAS;IACTC;EACF,CAAC,GAAGlB,gBAAgB,CAACK,iBAAiB,CAAC;EAEvC,MAAMc,mBAAmB,GAAGrB,KAAK,CAACsB,WAAW,CAC1CC,SAAiB,IAAK;IACrB,IAAIb,QAAQ,EAAE;MACZ;IACF;IACA,MAAMc,YAAY,GAAGnB,aAAa,CAChCkB,SAAS,EACTX,cAAc,CAACa,OAAO,EACtBX,cACF,CAAC;IACDD,cAAc,CAACW,YAAY,CAAC;IAC5BhB,QAAQ,CAACgB,YAAY,CAAC;EACxB,CAAC,EACD,CAACd,QAAQ,EAAEI,cAAc,EAAEN,QAAQ,CACrC,CAAC;EAED,MAAMkB,aAAa,GAAG1B,KAAK,CAACsB,WAAW,CAAC,MAAM;IAC5CT,cAAc,CAACT,WAAW,CAAC;IAC3BI,QAAQ,CAACJ,WAAW,CAAC;EACvB,CAAC,EAAE,CAACI,QAAQ,CAAC,CAAC;EAEd,MAAMmB,iBAAiB,GAAGxB,oBAAoB,CAACM,2BAA2B,CAAC;EAE3E,oBACET,KAAA,CAAA4B,aAAA,CAAC3B,cAAc;IACb4B,UAAU,EAAEf,cAAe;IAC3BC,aAAa,EAAEA,aAAc;IAC7BC,MAAM,EAAEA,MAAO;IACfc,eAAe,EAAET,mBAAoB;IACrCU,eAAe,EAAEL,aAAc;IAC/BT,qBAAqB,EAAEA,qBAAsB;IAC7CC,OAAO,EAAEA,OAAQ;IACjBR,QAAQ,EAAEA,QAAS;IACnBS,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA,KAAM;IACbY,kBAAkB,EAAEL,iBAAkB;IACtChB,SAAS,EAAEA;EAAU,CACtB,CAAC;AAEN","ignoreList":[]}
@@ -0,0 +1,81 @@
1
+ /*
2
+ * Copyright 2026 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import React from "react";
18
+ import { BaseCbacPickerDialog } from "./base/BaseCbacPickerDialog.js";
19
+ import { useCbacSelection } from "./useCbacSelection.js";
20
+ import { useConstraintCallout } from "./useConstraintCallout.js";
21
+ import { getSubmitDisabledReason } from "./utils/validationMessages.js";
22
+ export function CbacPickerDialog({
23
+ isOpen,
24
+ onOpenChange,
25
+ onConfirm,
26
+ initialMarkingIds,
27
+ maxClassificationConstraint
28
+ }) {
29
+ const {
30
+ selectedIds,
31
+ categoryGroups,
32
+ markingStates,
33
+ banner,
34
+ requiredMarkingGroups,
35
+ isValid,
36
+ userSatisfiesMarkings,
37
+ disallowedMarkingIds,
38
+ isLoading,
39
+ error,
40
+ toggle,
41
+ dismiss,
42
+ reset
43
+ } = useCbacSelection(initialMarkingIds);
44
+
45
+ // Parent controls dialog close on confirm (e.g. to show a loading state)
46
+ const handleConfirm = React.useCallback(() => {
47
+ onConfirm(selectedIds);
48
+ }, [onConfirm, selectedIds]);
49
+ const handleCancel = React.useCallback(() => {
50
+ reset();
51
+ onOpenChange(false);
52
+ }, [reset, onOpenChange]);
53
+ const hasInitialMarkings = initialMarkingIds !== undefined && initialMarkingIds.length > 0;
54
+ const submitDisabledReason = React.useMemo(() => getSubmitDisabledReason({
55
+ isValid,
56
+ requiredMarkingGroups,
57
+ selectedIds,
58
+ disallowedMarkingIds,
59
+ userSatisfiesMarkings
60
+ }), [isValid, requiredMarkingGroups, selectedIds, disallowedMarkingIds, userSatisfiesMarkings]);
61
+ const constraintCallout = useConstraintCallout(maxClassificationConstraint);
62
+ return /*#__PURE__*/React.createElement(BaseCbacPickerDialog, {
63
+ isOpen: isOpen,
64
+ onOpenChange: onOpenChange,
65
+ onConfirm: handleConfirm,
66
+ onCancel: handleCancel,
67
+ title: hasInitialMarkings ? "Edit classification" : "Add classification",
68
+ categories: categoryGroups,
69
+ markingStates: markingStates,
70
+ banner: banner,
71
+ onMarkingToggle: toggle,
72
+ onDismissBanner: dismiss,
73
+ requiredMarkingGroups: requiredMarkingGroups,
74
+ isValid: isValid,
75
+ submitDisabledReason: submitDisabledReason,
76
+ validationCallouts: constraintCallout,
77
+ isLoading: isLoading,
78
+ error: error
79
+ });
80
+ }
81
+ //# sourceMappingURL=CbacPickerDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CbacPickerDialog.js","names":["React","BaseCbacPickerDialog","useCbacSelection","useConstraintCallout","getSubmitDisabledReason","CbacPickerDialog","isOpen","onOpenChange","onConfirm","initialMarkingIds","maxClassificationConstraint","selectedIds","categoryGroups","markingStates","banner","requiredMarkingGroups","isValid","userSatisfiesMarkings","disallowedMarkingIds","isLoading","error","toggle","dismiss","reset","handleConfirm","useCallback","handleCancel","hasInitialMarkings","undefined","length","submitDisabledReason","useMemo","constraintCallout","createElement","onCancel","title","categories","onMarkingToggle","onDismissBanner","validationCallouts"],"sources":["CbacPickerDialog.tsx"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport { BaseCbacPickerDialog } from \"./base/BaseCbacPickerDialog.js\";\nimport type { MaxClassificationConstraint } from \"./types.js\";\nimport { useCbacSelection } from \"./useCbacSelection.js\";\nimport { useConstraintCallout } from \"./useConstraintCallout.js\";\nimport { getSubmitDisabledReason } from \"./utils/validationMessages.js\";\n\nexport interface CbacPickerDialogProps {\n isOpen: boolean;\n onOpenChange: (open: boolean) => void;\n onConfirm: (markingIds: string[]) => void;\n initialMarkingIds?: string[];\n maxClassificationConstraint?: MaxClassificationConstraint;\n}\n\nexport function CbacPickerDialog({\n isOpen,\n onOpenChange,\n onConfirm,\n initialMarkingIds,\n maxClassificationConstraint,\n}: CbacPickerDialogProps): React.ReactElement {\n const {\n selectedIds,\n categoryGroups,\n markingStates,\n banner,\n requiredMarkingGroups,\n isValid,\n userSatisfiesMarkings,\n disallowedMarkingIds,\n isLoading,\n error,\n toggle,\n dismiss,\n reset,\n } = useCbacSelection(initialMarkingIds);\n\n // Parent controls dialog close on confirm (e.g. to show a loading state)\n const handleConfirm = React.useCallback(() => {\n onConfirm(selectedIds);\n }, [onConfirm, selectedIds]);\n\n const handleCancel = React.useCallback(() => {\n reset();\n onOpenChange(false);\n }, [reset, onOpenChange]);\n\n const hasInitialMarkings = initialMarkingIds !== undefined\n && initialMarkingIds.length > 0;\n\n const submitDisabledReason = React.useMemo(\n () =>\n getSubmitDisabledReason({\n isValid,\n requiredMarkingGroups,\n selectedIds,\n disallowedMarkingIds,\n userSatisfiesMarkings,\n }),\n [\n isValid,\n requiredMarkingGroups,\n selectedIds,\n disallowedMarkingIds,\n userSatisfiesMarkings,\n ],\n );\n\n const constraintCallout = useConstraintCallout(maxClassificationConstraint);\n\n return (\n <BaseCbacPickerDialog\n isOpen={isOpen}\n onOpenChange={onOpenChange}\n onConfirm={handleConfirm}\n onCancel={handleCancel}\n title={hasInitialMarkings ? \"Edit classification\" : \"Add classification\"}\n categories={categoryGroups}\n markingStates={markingStates}\n banner={banner}\n onMarkingToggle={toggle}\n onDismissBanner={dismiss}\n requiredMarkingGroups={requiredMarkingGroups}\n isValid={isValid}\n submitDisabledReason={submitDisabledReason}\n validationCallouts={constraintCallout}\n isLoading={isLoading}\n error={error}\n />\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,oBAAoB,QAAQ,gCAAgC;AAErE,SAASC,gBAAgB,QAAQ,uBAAuB;AACxD,SAASC,oBAAoB,QAAQ,2BAA2B;AAChE,SAASC,uBAAuB,QAAQ,+BAA+B;AAUvE,OAAO,SAASC,gBAAgBA,CAAC;EAC/BC,MAAM;EACNC,YAAY;EACZC,SAAS;EACTC,iBAAiB;EACjBC;AACqB,CAAC,EAAsB;EAC5C,MAAM;IACJC,WAAW;IACXC,cAAc;IACdC,aAAa;IACbC,MAAM;IACNC,qBAAqB;IACrBC,OAAO;IACPC,qBAAqB;IACrBC,oBAAoB;IACpBC,SAAS;IACTC,KAAK;IACLC,MAAM;IACNC,OAAO;IACPC;EACF,CAAC,GAAGrB,gBAAgB,CAACO,iBAAiB,CAAC;;EAEvC;EACA,MAAMe,aAAa,GAAGxB,KAAK,CAACyB,WAAW,CAAC,MAAM;IAC5CjB,SAAS,CAACG,WAAW,CAAC;EACxB,CAAC,EAAE,CAACH,SAAS,EAAEG,WAAW,CAAC,CAAC;EAE5B,MAAMe,YAAY,GAAG1B,KAAK,CAACyB,WAAW,CAAC,MAAM;IAC3CF,KAAK,CAAC,CAAC;IACPhB,YAAY,CAAC,KAAK,CAAC;EACrB,CAAC,EAAE,CAACgB,KAAK,EAAEhB,YAAY,CAAC,CAAC;EAEzB,MAAMoB,kBAAkB,GAAGlB,iBAAiB,KAAKmB,SAAS,IACrDnB,iBAAiB,CAACoB,MAAM,GAAG,CAAC;EAEjC,MAAMC,oBAAoB,GAAG9B,KAAK,CAAC+B,OAAO,CACxC,MACE3B,uBAAuB,CAAC;IACtBY,OAAO;IACPD,qBAAqB;IACrBJ,WAAW;IACXO,oBAAoB;IACpBD;EACF,CAAC,CAAC,EACJ,CACED,OAAO,EACPD,qBAAqB,EACrBJ,WAAW,EACXO,oBAAoB,EACpBD,qBAAqB,CAEzB,CAAC;EAED,MAAMe,iBAAiB,GAAG7B,oBAAoB,CAACO,2BAA2B,CAAC;EAE3E,oBACEV,KAAA,CAAAiC,aAAA,CAAChC,oBAAoB;IACnBK,MAAM,EAAEA,MAAO;IACfC,YAAY,EAAEA,YAAa;IAC3BC,SAAS,EAAEgB,aAAc;IACzBU,QAAQ,EAAER,YAAa;IACvBS,KAAK,EAAER,kBAAkB,GAAG,qBAAqB,GAAG,oBAAqB;IACzES,UAAU,EAAExB,cAAe;IAC3BC,aAAa,EAAEA,aAAc;IAC7BC,MAAM,EAAEA,MAAO;IACfuB,eAAe,EAAEhB,MAAO;IACxBiB,eAAe,EAAEhB,OAAQ;IACzBP,qBAAqB,EAAEA,qBAAsB;IAC7CC,OAAO,EAAEA,OAAQ;IACjBc,oBAAoB,EAAEA,oBAAqB;IAC3CS,kBAAkB,EAAEP,iBAAkB;IACtCb,SAAS,EAAEA,SAAU;IACrBC,KAAK,EAAEA;EAAM,CACd,CAAC;AAEN","ignoreList":[]}
@@ -0,0 +1,64 @@
1
+ /*
2
+ * Copyright 2026 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { Button } from "@base-ui/react/button";
18
+ import { Cross } from "@blueprintjs/icons";
19
+ import classnames from "classnames";
20
+ import React from "react";
21
+ import { backgroundFromColors } from "../utils/cbacPickerUtils.js";
22
+ import styles from "./BaseCbacBanner.module.css.js";
23
+ export function BaseCbacBanner({
24
+ classificationString,
25
+ textColor,
26
+ backgroundColors,
27
+ onClick,
28
+ onDismiss,
29
+ className
30
+ }) {
31
+ const bannerStyle = React.useMemo(() => ({
32
+ "--osdk-cbac-banner-bg": backgroundFromColors(backgroundColors),
33
+ "--osdk-cbac-banner-color": textColor
34
+ }), [textColor, backgroundColors]);
35
+ const handleDismiss = React.useCallback(e => {
36
+ e.stopPropagation();
37
+ onDismiss?.();
38
+ }, [onDismiss]);
39
+ const dismissButton = onDismiss != null ? /*#__PURE__*/React.createElement(Button, {
40
+ className: styles.dismissButton,
41
+ onClick: handleDismiss,
42
+ "aria-label": "Clear classification"
43
+ }, /*#__PURE__*/React.createElement(Cross, {
44
+ size: 12,
45
+ color: "currentColor"
46
+ })) : null;
47
+ if (onClick != null) {
48
+ return /*#__PURE__*/React.createElement("div", {
49
+ className: classnames(styles.bannerRow, className),
50
+ style: bannerStyle
51
+ }, /*#__PURE__*/React.createElement(Button, {
52
+ className: classnames(styles.banner, styles.clickable),
53
+ onClick: onClick,
54
+ "aria-label": "Edit classification"
55
+ }, classificationString), dismissButton);
56
+ }
57
+ return /*#__PURE__*/React.createElement("div", {
58
+ className: classnames(styles.bannerRow, className),
59
+ style: bannerStyle
60
+ }, /*#__PURE__*/React.createElement("span", {
61
+ className: styles.banner
62
+ }, classificationString), dismissButton);
63
+ }
64
+ //# sourceMappingURL=BaseCbacBanner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseCbacBanner.js","names":["Button","Cross","classnames","React","backgroundFromColors","styles","BaseCbacBanner","classificationString","textColor","backgroundColors","onClick","onDismiss","className","bannerStyle","useMemo","handleDismiss","useCallback","e","stopPropagation","dismissButton","createElement","size","color","bannerRow","style","banner","clickable"],"sources":["BaseCbacBanner.tsx"],"sourcesContent":["/*\n * Copyright 2026 Palantir Technologies, Inc. All rights reserved.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Button } from \"@base-ui/react/button\";\nimport { Cross } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport { backgroundFromColors } from \"../utils/cbacPickerUtils.js\";\nimport styles from \"./BaseCbacBanner.module.css\";\n\nexport interface BaseCbacBannerProps {\n classificationString: string;\n textColor: string;\n backgroundColors: string[];\n onClick?: () => void;\n onDismiss?: () => void;\n className?: string;\n}\n\nexport function BaseCbacBanner({\n classificationString,\n textColor,\n backgroundColors,\n onClick,\n onDismiss,\n className,\n}: BaseCbacBannerProps): React.ReactElement {\n const bannerStyle = React.useMemo((): React.CSSProperties => ({\n \"--osdk-cbac-banner-bg\": backgroundFromColors(backgroundColors),\n \"--osdk-cbac-banner-color\": textColor,\n } as React.CSSProperties), [textColor, backgroundColors]);\n\n const handleDismiss = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onDismiss?.();\n },\n [onDismiss],\n );\n\n const dismissButton = onDismiss != null\n ? (\n <Button\n className={styles.dismissButton}\n onClick={handleDismiss}\n aria-label=\"Clear classification\"\n >\n <Cross size={12} color=\"currentColor\" />\n </Button>\n )\n : null;\n\n if (onClick != null) {\n return (\n <div\n className={classnames(styles.bannerRow, className)}\n style={bannerStyle}\n >\n <Button\n className={classnames(styles.banner, styles.clickable)}\n onClick={onClick}\n aria-label=\"Edit classification\"\n >\n {classificationString}\n </Button>\n {dismissButton}\n </div>\n );\n }\n\n return (\n <div\n className={classnames(styles.bannerRow, className)}\n style={bannerStyle}\n >\n <span className={styles.banner}>\n {classificationString}\n </span>\n {dismissButton}\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,MAAM,QAAQ,uBAAuB;AAC9C,SAASC,KAAK,QAAQ,oBAAoB;AAC1C,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,MAAM,OAAO;AACzB,SAASC,oBAAoB,QAAQ,6BAA6B;AAClE,OAAOC,MAAM,MAAM,6BAA6B;AAWhD,OAAO,SAASC,cAAcA,CAAC;EAC7BC,oBAAoB;EACpBC,SAAS;EACTC,gBAAgB;EAChBC,OAAO;EACPC,SAAS;EACTC;AACmB,CAAC,EAAsB;EAC1C,MAAMC,WAAW,GAAGV,KAAK,CAACW,OAAO,CAAC,OAA4B;IAC5D,uBAAuB,EAAEV,oBAAoB,CAACK,gBAAgB,CAAC;IAC/D,0BAA0B,EAAED;EAC9B,CAAC,CAAwB,EAAE,CAACA,SAAS,EAAEC,gBAAgB,CAAC,CAAC;EAEzD,MAAMM,aAAa,GAAGZ,KAAK,CAACa,WAAW,CACpCC,CAAmB,IAAK;IACvBA,CAAC,CAACC,eAAe,CAAC,CAAC;IACnBP,SAAS,GAAG,CAAC;EACf,CAAC,EACD,CAACA,SAAS,CACZ,CAAC;EAED,MAAMQ,aAAa,GAAGR,SAAS,IAAI,IAAI,gBAEnCR,KAAA,CAAAiB,aAAA,CAACpB,MAAM;IACLY,SAAS,EAAEP,MAAM,CAACc,aAAc;IAChCT,OAAO,EAAEK,aAAc;IACvB,cAAW;EAAsB,gBAEjCZ,KAAA,CAAAiB,aAAA,CAACnB,KAAK;IAACoB,IAAI,EAAE,EAAG;IAACC,KAAK,EAAC;EAAc,CAAE,CACjC,CAAC,GAET,IAAI;EAER,IAAIZ,OAAO,IAAI,IAAI,EAAE;IACnB,oBACEP,KAAA,CAAAiB,aAAA;MACER,SAAS,EAAEV,UAAU,CAACG,MAAM,CAACkB,SAAS,EAAEX,SAAS,CAAE;MACnDY,KAAK,EAAEX;IAAY,gBAEnBV,KAAA,CAAAiB,aAAA,CAACpB,MAAM;MACLY,SAAS,EAAEV,UAAU,CAACG,MAAM,CAACoB,MAAM,EAAEpB,MAAM,CAACqB,SAAS,CAAE;MACvDhB,OAAO,EAAEA,OAAQ;MACjB,cAAW;IAAqB,GAE/BH,oBACK,CAAC,EACRY,aACE,CAAC;EAEV;EAEA,oBACEhB,KAAA,CAAAiB,aAAA;IACER,SAAS,EAAEV,UAAU,CAACG,MAAM,CAACkB,SAAS,EAAEX,SAAS,CAAE;IACnDY,KAAK,EAAEX;EAAY,gBAEnBV,KAAA,CAAAiB,aAAA;IAAMR,SAAS,EAAEP,MAAM,CAACoB;EAAO,GAC5BlB,oBACG,CAAC,EACNY,aACE,CAAC;AAEV","ignoreList":[]}
@@ -0,0 +1,74 @@
1
+ /*
2
+ * Copyright 2026 Palantir Technologies, Inc. All rights reserved.
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ .bannerRow {
18
+ display: flex;
19
+ align-items: center;
20
+ border-radius: var(--osdk-cbac-banner-border-radius);
21
+ width: 100%;
22
+ box-sizing: border-box;
23
+ background: var(--osdk-cbac-banner-bg);
24
+ color: var(--osdk-cbac-banner-color);
25
+ }
26
+
27
+ .banner {
28
+ flex: 1;
29
+ padding: var(--osdk-cbac-banner-padding);
30
+ font-size: var(--osdk-cbac-banner-font-size);
31
+ font-weight: var(--osdk-cbac-banner-font-weight);
32
+ text-align: var(--osdk-cbac-banner-text-align);
33
+ font-family: inherit;
34
+ border: none;
35
+ background: transparent;
36
+ color: inherit;
37
+ }
38
+
39
+ .clickable {
40
+ cursor: pointer;
41
+ }
42
+
43
+ .clickable:focus-visible {
44
+ outline: var(--osdk-focus-outline);
45
+ outline-offset: var(--osdk-focus-visible-outline-offset);
46
+ }
47
+
48
+ .clickable:hover {
49
+ filter: brightness(0.9);
50
+ text-decoration: underline;
51
+ }
52
+
53
+ .dismissButton {
54
+ display: flex;
55
+ align-items: center;
56
+ justify-content: center;
57
+ padding: calc(var(--osdk-surface-spacing) * 1);
58
+ margin-right: calc(var(--osdk-surface-spacing) * 1);
59
+ background: transparent;
60
+ border: none;
61
+ color: inherit;
62
+ cursor: pointer;
63
+ border-radius: var(--osdk-surface-border-radius);
64
+ flex-shrink: 0;
65
+ }
66
+
67
+ .dismissButton:hover {
68
+ filter: brightness(0.8);
69
+ }
70
+
71
+ .dismissButton:focus-visible {
72
+ outline: var(--osdk-focus-outline);
73
+ outline-offset: var(--osdk-focus-visible-outline-offset);
74
+ }
@@ -0,0 +1,9 @@
1
+ // CSS Module proxy for BaseCbacBanner.module.css
2
+ const styles = {
3
+ "bannerRow": "BaseCbacBanner-module__bannerRow___oxu42hEl",
4
+ "banner": "BaseCbacBanner-module__banner___IjvLA5g7",
5
+ "clickable": "BaseCbacBanner-module__clickable___EhVZQgrU",
6
+ "dismissButton": "BaseCbacBanner-module__dismissButton___pEhcnzSL"
7
+ };
8
+
9
+ export default styles;