@osdk/react-components 0.26.0 → 0.27.0-main-db8df2423f72b154e84da1e327691afbc569c5aa

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 +14 -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-6IIKW56G.cjs +11 -0
  86. package/build/cjs/{chunk-W6C6UWUN.cjs.map → chunk-6IIKW56G.cjs.map} +1 -1
  87. package/build/cjs/{chunk-Y4OUZFGE.cjs → chunk-B7QEY2ER.cjs} +4 -4
  88. package/build/cjs/{chunk-Y4OUZFGE.cjs.map → chunk-B7QEY2ER.cjs.map} +1 -1
  89. package/build/cjs/{chunk-OZ3OGPEA.cjs → chunk-DAWQ5KT5.cjs} +4 -4
  90. package/build/cjs/{chunk-OZ3OGPEA.cjs.map → chunk-DAWQ5KT5.cjs.map} +1 -1
  91. package/build/cjs/chunk-EI62HPZN.cjs +11 -0
  92. package/build/cjs/{chunk-YLYICFCA.cjs.map → chunk-EI62HPZN.cjs.map} +1 -1
  93. package/build/cjs/{chunk-RDILWZTC.cjs → chunk-JQ67SCIO.cjs} +6 -6
  94. package/build/cjs/{chunk-RDILWZTC.cjs.map → chunk-JQ67SCIO.cjs.map} +1 -1
  95. package/build/cjs/{chunk-DY6YZDDT.cjs → chunk-MUITA6EM.cjs} +4 -4
  96. package/build/cjs/{chunk-DY6YZDDT.cjs.map → chunk-MUITA6EM.cjs.map} +1 -1
  97. package/build/cjs/{chunk-3VL5YVFA.cjs → chunk-NPT4RHWG.cjs} +4 -4
  98. package/build/cjs/{chunk-3VL5YVFA.cjs.map → chunk-NPT4RHWG.cjs.map} +1 -1
  99. package/build/cjs/{chunk-3FFHTVG7.cjs → chunk-NSXB2TXV.cjs} +6 -6
  100. package/build/cjs/{chunk-3FFHTVG7.cjs.map → chunk-NSXB2TXV.cjs.map} +1 -1
  101. package/build/cjs/chunk-PJVK32YR.cjs +11 -0
  102. package/build/cjs/{chunk-GKWXRVFO.cjs.map → chunk-PJVK32YR.cjs.map} +1 -1
  103. package/build/cjs/chunk-V6CDK4G4.cjs +11 -0
  104. package/build/cjs/{chunk-JPVZGQXS.cjs.map → chunk-V6CDK4G4.cjs.map} +1 -1
  105. package/build/cjs/chunk-VFRZREZV.cjs +4 -0
  106. package/build/cjs/chunk-VFRZREZV.cjs.map +1 -0
  107. package/build/cjs/chunk-W4T7KB4R.cjs +11 -0
  108. package/build/cjs/{chunk-UJXNFENA.cjs.map → chunk-W4T7KB4R.cjs.map} +1 -1
  109. package/build/cjs/{chunk-IFOPHNX3.cjs → chunk-X7AKMQQW.cjs} +8 -8
  110. package/build/cjs/{chunk-IFOPHNX3.cjs.map → chunk-X7AKMQQW.cjs.map} +1 -1
  111. package/build/cjs/chunk-Y47SHEG7.cjs +1190 -0
  112. package/build/cjs/chunk-Y47SHEG7.cjs.map +1 -0
  113. package/build/cjs/{chunk-UTB55N5Y.cjs → chunk-YBGT4WIE.cjs} +3 -3
  114. package/build/cjs/chunk-YBGT4WIE.cjs.map +1 -0
  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 +18 -9
  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
@@ -0,0 +1,168 @@
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 { Popover } from "@base-ui/react/popover";
18
+ import { CaretDown, CaretUp, WarningSign } from "@blueprintjs/icons";
19
+ import classnames from "classnames";
20
+ import React from "react";
21
+ import { ActionButton } from "../../base-components/action-button/ActionButton.js";
22
+ import { SkeletonBar } from "../../base-components/skeleton/SkeletonBar.js";
23
+ import { backgroundFromColors } from "../utils/cbacPickerUtils.js";
24
+ import { formatCbacError } from "../utils/errorMessages.js";
25
+ import { BaseCbacBanner } from "./BaseCbacBanner.js";
26
+ import styles from "./BaseCbacBannerPopover.module.css.js";
27
+ export function BaseCbacBannerPopover({
28
+ classificationString,
29
+ textColor,
30
+ backgroundColors,
31
+ appliedMarkings,
32
+ onEditClick,
33
+ description,
34
+ isLoading,
35
+ error,
36
+ onRetry,
37
+ onDismiss,
38
+ warnings,
39
+ className
40
+ }) {
41
+ const [open, setOpen] = React.useState(false);
42
+ const handleEditClick = React.useCallback(() => {
43
+ setOpen(false);
44
+ onEditClick();
45
+ }, [onEditClick]);
46
+ const pillStyle = React.useMemo(() => ({
47
+ color: textColor,
48
+ background: backgroundFromColors(backgroundColors)
49
+ }), [textColor, backgroundColors]);
50
+ const showSkeleton = isLoading === true && appliedMarkings.length === 0;
51
+ return /*#__PURE__*/React.createElement(Popover.Root, {
52
+ open: open,
53
+ onOpenChange: setOpen
54
+ }, /*#__PURE__*/React.createElement(Popover.Trigger, {
55
+ nativeButton: false,
56
+ render: /*#__PURE__*/React.createElement("div", {
57
+ className: styles.bannerTriggerWrapper
58
+ }, /*#__PURE__*/React.createElement(BaseCbacBanner, {
59
+ classificationString: classificationString,
60
+ textColor: textColor,
61
+ backgroundColors: backgroundColors,
62
+ onDismiss: onDismiss,
63
+ className: className
64
+ }), /*#__PURE__*/React.createElement("span", {
65
+ className: classnames(styles.caretIcon, open && styles.caretIconVisible)
66
+ }, open ? /*#__PURE__*/React.createElement(CaretUp, {
67
+ size: 12
68
+ }) : /*#__PURE__*/React.createElement(CaretDown, {
69
+ size: 12
70
+ })))
71
+ }), /*#__PURE__*/React.createElement(Popover.Portal, null, /*#__PURE__*/React.createElement(Popover.Positioner, {
72
+ side: "bottom",
73
+ align: "center"
74
+ }, /*#__PURE__*/React.createElement(Popover.Popup, {
75
+ className: styles.popover
76
+ }, /*#__PURE__*/React.createElement(PopoverContent, {
77
+ showSkeleton: showSkeleton,
78
+ error: error,
79
+ onRetry: onRetry,
80
+ pillStyle: pillStyle,
81
+ classificationString: classificationString,
82
+ description: description,
83
+ appliedMarkings: appliedMarkings,
84
+ warnings: warnings,
85
+ handleEditClick: handleEditClick
86
+ })))));
87
+ }
88
+ const PopoverContent = /*#__PURE__*/React.memo(function ({
89
+ showSkeleton,
90
+ error,
91
+ onRetry,
92
+ pillStyle,
93
+ classificationString,
94
+ description,
95
+ appliedMarkings,
96
+ warnings,
97
+ handleEditClick
98
+ }) {
99
+ const hasMarkings = appliedMarkings.length > 0;
100
+ const hasWarnings = warnings !== undefined && warnings.length > 0;
101
+ if (showSkeleton) {
102
+ return /*#__PURE__*/React.createElement(PopoverSkeleton, null);
103
+ }
104
+ if (error !== undefined) {
105
+ const errorMessage = formatCbacError(error);
106
+ return /*#__PURE__*/React.createElement("div", {
107
+ className: styles.errorContainer
108
+ }, /*#__PURE__*/React.createElement("p", {
109
+ className: styles.errorMessage
110
+ }, errorMessage.title), errorMessage.remediation && /*#__PURE__*/React.createElement("p", {
111
+ className: styles.errorRemediation
112
+ }, errorMessage.remediation), onRetry !== undefined && /*#__PURE__*/React.createElement(ActionButton, {
113
+ variant: "secondary",
114
+ onClick: onRetry
115
+ }, "Retry"));
116
+ }
117
+ return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("div", {
118
+ className: styles.pill,
119
+ style: pillStyle,
120
+ title: classificationString
121
+ }, classificationString), description !== undefined && /*#__PURE__*/React.createElement("p", {
122
+ className: styles.description
123
+ }, description), /*#__PURE__*/React.createElement("p", {
124
+ className: styles.sectionLabel
125
+ }, "Applied markings"), hasMarkings ? appliedMarkings.map(group => /*#__PURE__*/React.createElement("div", {
126
+ key: group.categoryName,
127
+ className: styles.markingGroup
128
+ }, /*#__PURE__*/React.createElement("p", {
129
+ className: styles.markingCategoryName
130
+ }, group.categoryName), group.markingNames.map((name, i) => /*#__PURE__*/React.createElement("p", {
131
+ key: `${name}-${i}`,
132
+ className: styles.markingName
133
+ }, name)))) : /*#__PURE__*/React.createElement("p", {
134
+ className: styles.noMarkings
135
+ }, "No markings applied"), hasWarnings && warnings !== undefined && /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement("hr", {
136
+ className: styles.divider
137
+ }), /*#__PURE__*/React.createElement("div", {
138
+ className: styles.warningsSection
139
+ }, /*#__PURE__*/React.createElement("p", {
140
+ className: styles.warningsHeader
141
+ }, "Warnings and Notices"), warnings.map((warning, i) => /*#__PURE__*/React.createElement("div", {
142
+ key: `warning-${i}`,
143
+ className: styles.warningCallout
144
+ }, /*#__PURE__*/React.createElement(WarningSign, {
145
+ className: styles.warningIcon,
146
+ size: 14
147
+ }), /*#__PURE__*/React.createElement("p", {
148
+ className: styles.warningText
149
+ }, warning))))), /*#__PURE__*/React.createElement("hr", {
150
+ className: styles.divider
151
+ }), /*#__PURE__*/React.createElement(ActionButton, {
152
+ variant: "primary",
153
+ className: styles.editButton,
154
+ onClick: handleEditClick
155
+ }, hasMarkings ? "Edit classification" : "Set classification"));
156
+ });
157
+ function PopoverSkeleton() {
158
+ return /*#__PURE__*/React.createElement("div", {
159
+ className: styles.skeletonContainer
160
+ }, /*#__PURE__*/React.createElement(SkeletonBar, {
161
+ className: styles.skeletonPill
162
+ }), /*#__PURE__*/React.createElement(SkeletonBar, {
163
+ className: styles.skeletonLine
164
+ }), /*#__PURE__*/React.createElement(SkeletonBar, {
165
+ className: styles.skeletonLineNarrow
166
+ }));
167
+ }
168
+ //# sourceMappingURL=BaseCbacBannerPopover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseCbacBannerPopover.js","names":["Popover","CaretDown","CaretUp","WarningSign","classnames","React","ActionButton","SkeletonBar","backgroundFromColors","formatCbacError","BaseCbacBanner","styles","BaseCbacBannerPopover","classificationString","textColor","backgroundColors","appliedMarkings","onEditClick","description","isLoading","error","onRetry","onDismiss","warnings","className","open","setOpen","useState","handleEditClick","useCallback","pillStyle","useMemo","color","background","showSkeleton","length","createElement","Root","onOpenChange","Trigger","nativeButton","render","bannerTriggerWrapper","caretIcon","caretIconVisible","size","Portal","Positioner","side","align","Popup","popover","PopoverContent","memo","hasMarkings","hasWarnings","undefined","PopoverSkeleton","errorMessage","errorContainer","title","remediation","errorRemediation","variant","onClick","Fragment","pill","style","sectionLabel","map","group","key","categoryName","markingGroup","markingCategoryName","markingNames","name","i","markingName","noMarkings","divider","warningsSection","warningsHeader","warning","warningCallout","warningIcon","warningText","editButton","skeletonContainer","skeletonPill","skeletonLine","skeletonLineNarrow"],"sources":["BaseCbacBannerPopover.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 { Popover } from \"@base-ui/react/popover\";\nimport { CaretDown, CaretUp, WarningSign } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport { ActionButton } from \"../../base-components/action-button/ActionButton.js\";\nimport { SkeletonBar } from \"../../base-components/skeleton/SkeletonBar.js\";\nimport {\n type AppliedMarkingGroup,\n backgroundFromColors,\n} from \"../utils/cbacPickerUtils.js\";\nexport type { AppliedMarkingGroup } from \"../utils/cbacPickerUtils.js\";\nimport { formatCbacError } from \"../utils/errorMessages.js\";\nimport { BaseCbacBanner } from \"./BaseCbacBanner.js\";\nimport styles from \"./BaseCbacBannerPopover.module.css\";\n\nexport interface BaseCbacBannerPopoverProps {\n classificationString: string;\n textColor: string;\n backgroundColors: string[];\n appliedMarkings: AppliedMarkingGroup[];\n onEditClick: () => void;\n description?: string;\n isLoading?: boolean;\n error?: Error;\n onRetry?: () => void;\n onDismiss?: () => void;\n warnings?: string[];\n className?: string;\n}\n\nexport function BaseCbacBannerPopover({\n classificationString,\n textColor,\n backgroundColors,\n appliedMarkings,\n onEditClick,\n description,\n isLoading,\n error,\n onRetry,\n onDismiss,\n warnings,\n className,\n}: BaseCbacBannerPopoverProps): React.ReactElement {\n const [open, setOpen] = React.useState(false);\n\n const handleEditClick = React.useCallback(() => {\n setOpen(false);\n onEditClick();\n }, [onEditClick]);\n\n const pillStyle = React.useMemo((): React.CSSProperties => ({\n color: textColor,\n background: backgroundFromColors(backgroundColors),\n }), [textColor, backgroundColors]);\n\n const showSkeleton = isLoading === true && appliedMarkings.length === 0;\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger\n nativeButton={false}\n render={\n <div className={styles.bannerTriggerWrapper}>\n <BaseCbacBanner\n classificationString={classificationString}\n textColor={textColor}\n backgroundColors={backgroundColors}\n onDismiss={onDismiss}\n className={className}\n />\n <span\n className={classnames(\n styles.caretIcon,\n open && styles.caretIconVisible,\n )}\n >\n {open ? <CaretUp size={12} /> : <CaretDown size={12} />}\n </span>\n </div>\n }\n />\n <Popover.Portal>\n <Popover.Positioner side=\"bottom\" align=\"center\">\n <Popover.Popup className={styles.popover}>\n <PopoverContent\n showSkeleton={showSkeleton}\n error={error}\n onRetry={onRetry}\n pillStyle={pillStyle}\n classificationString={classificationString}\n description={description}\n appliedMarkings={appliedMarkings}\n warnings={warnings}\n handleEditClick={handleEditClick}\n />\n </Popover.Popup>\n </Popover.Positioner>\n </Popover.Portal>\n </Popover.Root>\n );\n}\n\ninterface PopoverContentProps {\n showSkeleton: boolean;\n error: Error | undefined;\n onRetry: (() => void) | undefined;\n pillStyle: React.CSSProperties;\n classificationString: string;\n description: string | undefined;\n appliedMarkings: AppliedMarkingGroup[];\n warnings: string[] | undefined;\n handleEditClick: () => void;\n}\n\nconst PopoverContent = React.memo(function PopoverContent({\n showSkeleton,\n error,\n onRetry,\n pillStyle,\n classificationString,\n description,\n appliedMarkings,\n warnings,\n handleEditClick,\n}: PopoverContentProps): React.ReactElement {\n const hasMarkings = appliedMarkings.length > 0;\n const hasWarnings = warnings !== undefined && warnings.length > 0;\n if (showSkeleton) {\n return <PopoverSkeleton />;\n }\n\n if (error !== undefined) {\n const errorMessage = formatCbacError(error);\n return (\n <div className={styles.errorContainer}>\n <p className={styles.errorMessage}>\n {errorMessage.title}\n </p>\n {errorMessage.remediation && (\n <p className={styles.errorRemediation}>\n {errorMessage.remediation}\n </p>\n )}\n {onRetry !== undefined && (\n <ActionButton variant=\"secondary\" onClick={onRetry}>\n Retry\n </ActionButton>\n )}\n </div>\n );\n }\n\n return (\n <>\n <div\n className={styles.pill}\n style={pillStyle}\n title={classificationString}\n >\n {classificationString}\n </div>\n\n {description !== undefined && (\n <p className={styles.description}>{description}</p>\n )}\n\n <p className={styles.sectionLabel}>Applied markings</p>\n\n {hasMarkings\n ? (\n appliedMarkings.map((group) => (\n <div key={group.categoryName} className={styles.markingGroup}>\n <p className={styles.markingCategoryName}>\n {group.categoryName}\n </p>\n {group.markingNames.map((name, i) => (\n <p key={`${name}-${i}`} className={styles.markingName}>\n {name}\n </p>\n ))}\n </div>\n ))\n )\n : <p className={styles.noMarkings}>No markings applied</p>}\n\n {hasWarnings && warnings !== undefined && (\n <>\n <hr className={styles.divider} />\n <div className={styles.warningsSection}>\n <p className={styles.warningsHeader}>Warnings and Notices</p>\n {warnings.map((warning, i) => (\n <div key={`warning-${i}`} className={styles.warningCallout}>\n <WarningSign className={styles.warningIcon} size={14} />\n <p className={styles.warningText}>{warning}</p>\n </div>\n ))}\n </div>\n </>\n )}\n\n <hr className={styles.divider} />\n\n <ActionButton\n variant=\"primary\"\n className={styles.editButton}\n onClick={handleEditClick}\n >\n {hasMarkings ? \"Edit classification\" : \"Set classification\"}\n </ActionButton>\n </>\n );\n});\n\nfunction PopoverSkeleton(): React.ReactElement {\n return (\n <div className={styles.skeletonContainer}>\n <SkeletonBar className={styles.skeletonPill} />\n <SkeletonBar className={styles.skeletonLine} />\n <SkeletonBar className={styles.skeletonLineNarrow} />\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,193 @@
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
+ .popover {
18
+ max-width: var(--osdk-cbac-popover-max-width);
19
+ padding: var(--osdk-cbac-popover-padding);
20
+ background: var(--osdk-surface-background-color-default);
21
+ border: 1px solid var(--osdk-surface-border-color-default);
22
+ border-radius: var(--osdk-surface-border-radius);
23
+ box-shadow: var(--osdk-surface-elevation-2);
24
+ display: flex;
25
+ flex-direction: column;
26
+ gap: var(--osdk-cbac-popover-section-gap);
27
+ }
28
+
29
+ .pill {
30
+ display: inline-flex;
31
+ align-items: center;
32
+ padding: var(--osdk-cbac-popover-pill-padding);
33
+ border-radius: var(--osdk-cbac-popover-pill-border-radius);
34
+ font-size: var(--osdk-typography-size-body-small);
35
+ font-weight: var(--osdk-typography-weight-bold);
36
+ width: fit-content;
37
+ }
38
+
39
+ .sectionLabel {
40
+ font-size: var(--osdk-typography-size-body-small);
41
+ font-weight: var(--osdk-typography-weight-bold);
42
+ color: var(--osdk-typography-color-default-muted);
43
+ text-transform: uppercase;
44
+ margin: 0;
45
+ }
46
+
47
+ .markingGroup {
48
+ display: flex;
49
+ flex-direction: column;
50
+ gap: calc(var(--osdk-surface-spacing) * 0.5);
51
+ }
52
+
53
+ .markingCategoryName {
54
+ font-size: var(--osdk-typography-size-body-small);
55
+ font-weight: var(--osdk-typography-weight-bold);
56
+ color: var(--osdk-typography-color-default-rest);
57
+ margin: 0;
58
+ }
59
+
60
+ .markingName {
61
+ font-size: var(--osdk-typography-size-body-small);
62
+ color: var(--osdk-typography-color-default-rest);
63
+ margin: 0;
64
+ padding-left: calc(var(--osdk-surface-spacing) * 2);
65
+ }
66
+
67
+ .noMarkings {
68
+ font-size: var(--osdk-typography-size-body-small);
69
+ color: var(--osdk-typography-color-default-muted);
70
+ margin: 0;
71
+ }
72
+
73
+ .divider {
74
+ border: none;
75
+ border-top: 1px solid var(--osdk-surface-border-color-default);
76
+ margin: 0;
77
+ }
78
+
79
+ .editButton {
80
+ width: 100%;
81
+ }
82
+
83
+ .description {
84
+ font-size: var(--osdk-typography-size-body-small);
85
+ color: var(--osdk-typography-color-default-muted);
86
+ margin: 0;
87
+ }
88
+
89
+ /* Skeleton loading */
90
+ .skeletonContainer {
91
+ display: flex;
92
+ flex-direction: column;
93
+ gap: calc(var(--osdk-surface-spacing) * 1.5);
94
+ }
95
+
96
+ .skeletonPill {
97
+ width: var(--osdk-cbac-skeleton-pill-width);
98
+ height: var(--osdk-cbac-skeleton-pill-height);
99
+ }
100
+
101
+ .skeletonLine {
102
+ width: 100%;
103
+ height: var(--osdk-cbac-skeleton-line-height);
104
+ }
105
+
106
+ .skeletonLineNarrow {
107
+ width: var(--osdk-cbac-skeleton-line-narrow-width);
108
+ height: var(--osdk-cbac-skeleton-line-height);
109
+ }
110
+
111
+ /* Error state */
112
+ .errorContainer {
113
+ display: flex;
114
+ flex-direction: column;
115
+ align-items: center;
116
+ gap: var(--osdk-surface-spacing);
117
+ padding: calc(var(--osdk-surface-spacing) * 2) 0;
118
+ }
119
+
120
+ .errorMessage {
121
+ font-size: var(--osdk-typography-size-body-small);
122
+ color: var(--osdk-typography-color-default-rest);
123
+ font-weight: var(--osdk-typography-weight-bold);
124
+ margin: 0;
125
+ text-align: center;
126
+ }
127
+
128
+ .errorRemediation {
129
+ font-size: var(--osdk-typography-size-body-small);
130
+ color: var(--osdk-typography-color-default-muted);
131
+ margin: 0;
132
+ text-align: center;
133
+ }
134
+
135
+ /* Warnings section */
136
+ .warningsSection {
137
+ display: flex;
138
+ flex-direction: column;
139
+ gap: calc(var(--osdk-surface-spacing) * 1.5);
140
+ }
141
+
142
+ .warningsHeader {
143
+ font-size: var(--osdk-typography-size-body-small);
144
+ font-weight: var(--osdk-typography-weight-bold);
145
+ color: var(--osdk-typography-color-default-muted);
146
+ text-transform: uppercase;
147
+ margin: 0;
148
+ }
149
+
150
+ .warningCallout {
151
+ display: flex;
152
+ align-items: flex-start;
153
+ gap: var(--osdk-surface-spacing);
154
+ padding: var(--osdk-cbac-warning-callout-padding);
155
+ background: var(--osdk-cbac-warning-callout-bg);
156
+ color: var(--osdk-cbac-warning-callout-color);
157
+ border-radius: var(--osdk-cbac-warning-callout-border-radius);
158
+ font-size: var(--osdk-cbac-warning-callout-font-size);
159
+ }
160
+
161
+ .warningIcon {
162
+ flex-shrink: 0;
163
+ margin-top: calc(var(--osdk-surface-spacing) * 0.125);
164
+ }
165
+
166
+ .warningText {
167
+ margin: 0;
168
+ }
169
+
170
+ /* Banner trigger wrapper with caret */
171
+ .bannerTriggerWrapper {
172
+ position: relative;
173
+ display: flex;
174
+ align-items: center;
175
+ width: 100%;
176
+ }
177
+
178
+ .caretIcon {
179
+ position: absolute;
180
+ right: calc(var(--osdk-surface-spacing) * 1.5);
181
+ display: flex;
182
+ align-items: center;
183
+ color: inherit;
184
+ opacity: 0;
185
+ transition: opacity var(--osdk-emphasis-transition-duration)
186
+ var(--osdk-emphasis-ease-default);
187
+ pointer-events: none;
188
+ }
189
+
190
+ .bannerTriggerWrapper:hover .caretIcon,
191
+ .caretIconVisible {
192
+ opacity: 1;
193
+ }
@@ -0,0 +1,30 @@
1
+ // CSS Module proxy for BaseCbacBannerPopover.module.css
2
+ const styles = {
3
+ "popover": "BaseCbacBannerPopover-module__popover___vnZHHx--",
4
+ "pill": "BaseCbacBannerPopover-module__pill___GoT-3iQV",
5
+ "sectionLabel": "BaseCbacBannerPopover-module__sectionLabel___ErzKeZAy",
6
+ "markingGroup": "BaseCbacBannerPopover-module__markingGroup___h7Iz--bI",
7
+ "markingCategoryName": "BaseCbacBannerPopover-module__markingCategoryName___O22vgxpy",
8
+ "markingName": "BaseCbacBannerPopover-module__markingName___DLZC3G04",
9
+ "noMarkings": "BaseCbacBannerPopover-module__noMarkings___2zHI3tFA",
10
+ "divider": "BaseCbacBannerPopover-module__divider___4DQ3X1Tf",
11
+ "editButton": "BaseCbacBannerPopover-module__editButton___11s-TzHx",
12
+ "description": "BaseCbacBannerPopover-module__description___KLqXnfqX",
13
+ "skeletonContainer": "BaseCbacBannerPopover-module__skeletonContainer___Qxh-mq9l",
14
+ "skeletonPill": "BaseCbacBannerPopover-module__skeletonPill___N8QouMJL",
15
+ "skeletonLine": "BaseCbacBannerPopover-module__skeletonLine___nZxotm7-",
16
+ "skeletonLineNarrow": "BaseCbacBannerPopover-module__skeletonLineNarrow___e6FBTwRB",
17
+ "errorContainer": "BaseCbacBannerPopover-module__errorContainer___zuPXZ2jF",
18
+ "errorMessage": "BaseCbacBannerPopover-module__errorMessage___KH1kWTJ6",
19
+ "errorRemediation": "BaseCbacBannerPopover-module__errorRemediation___2sT01xLQ",
20
+ "warningsSection": "BaseCbacBannerPopover-module__warningsSection___CXm-bDOw",
21
+ "warningsHeader": "BaseCbacBannerPopover-module__warningsHeader___MtRYmMOy",
22
+ "warningCallout": "BaseCbacBannerPopover-module__warningCallout___8vnlqA17",
23
+ "warningIcon": "BaseCbacBannerPopover-module__warningIcon___-Go7liEd",
24
+ "warningText": "BaseCbacBannerPopover-module__warningText___X8omxSGR",
25
+ "bannerTriggerWrapper": "BaseCbacBannerPopover-module__bannerTriggerWrapper___LvP1g-bt",
26
+ "caretIcon": "BaseCbacBannerPopover-module__caretIcon___zCPBfoKh",
27
+ "caretIconVisible": "BaseCbacBannerPopover-module__caretIconVisible___cWFnLC0K"
28
+ };
29
+
30
+ export default styles;
@@ -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
+ import classnames from "classnames";
18
+ import React from "react";
19
+ import { formatCbacError } from "../utils/errorMessages.js";
20
+ import { BaseCbacBanner } from "./BaseCbacBanner.js";
21
+ import styles from "./BaseCbacPicker.module.css.js";
22
+ import { CategoryMarkingGroup } from "./CategoryMarkingGroup.js";
23
+ import { InfoBanner } from "./InfoBanner.js";
24
+ import { ValidationWarning } from "./ValidationWarning.js";
25
+ export function BaseCbacPicker({
26
+ categories,
27
+ markingStates,
28
+ banner,
29
+ onMarkingToggle,
30
+ onDismissBanner,
31
+ showInfoBanner,
32
+ requiredMarkingGroups,
33
+ isValid,
34
+ readOnly,
35
+ isLoading,
36
+ error,
37
+ validationCallouts,
38
+ className
39
+ }) {
40
+ const errorMessage = error != null ? formatCbacError(error) : undefined;
41
+ const showInitialLoading = isLoading === true && categories.length === 0;
42
+ const showValidationWarning = isValid === false && requiredMarkingGroups != null && requiredMarkingGroups.length > 0;
43
+ return /*#__PURE__*/React.createElement("div", {
44
+ className: classnames(styles.picker, className)
45
+ }, showInfoBanner === true && /*#__PURE__*/React.createElement(InfoBanner, {
46
+ message: "Implied markings are (in parentheses)."
47
+ }), banner != null && /*#__PURE__*/React.createElement(BaseCbacBanner, {
48
+ classificationString: banner.classificationString,
49
+ textColor: banner.textColor,
50
+ backgroundColors: banner.backgroundColors,
51
+ onDismiss: onDismissBanner,
52
+ className: styles.innerBanner
53
+ }), errorMessage !== undefined ? /*#__PURE__*/React.createElement("div", {
54
+ className: styles.statusMessage,
55
+ role: "alert"
56
+ }, /*#__PURE__*/React.createElement("p", null, errorMessage.title), errorMessage.remediation && /*#__PURE__*/React.createElement("p", null, errorMessage.remediation)) : showInitialLoading ? /*#__PURE__*/React.createElement("div", {
57
+ className: styles.statusMessage,
58
+ role: "status",
59
+ "aria-live": "polite"
60
+ }, "Loading...") : /*#__PURE__*/React.createElement("div", {
61
+ className: styles.categoriesContainer
62
+ }, categories.map(group => /*#__PURE__*/React.createElement(CategoryMarkingGroup, {
63
+ key: group.category.id,
64
+ categoryName: group.category.name,
65
+ categoryDescription: group.category.description,
66
+ markings: group.markings,
67
+ markingStates: markingStates,
68
+ readOnly: readOnly,
69
+ onMarkingToggle: onMarkingToggle
70
+ }))), validationCallouts, showValidationWarning && /*#__PURE__*/React.createElement(ValidationWarning, {
71
+ requiredMarkingGroups: requiredMarkingGroups
72
+ }));
73
+ }
74
+ //# sourceMappingURL=BaseCbacPicker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseCbacPicker.js","names":["classnames","React","formatCbacError","BaseCbacBanner","styles","CategoryMarkingGroup","InfoBanner","ValidationWarning","BaseCbacPicker","categories","markingStates","banner","onMarkingToggle","onDismissBanner","showInfoBanner","requiredMarkingGroups","isValid","readOnly","isLoading","error","validationCallouts","className","errorMessage","undefined","showInitialLoading","length","showValidationWarning","createElement","picker","message","classificationString","textColor","backgroundColors","onDismiss","innerBanner","statusMessage","role","title","remediation","categoriesContainer","map","group","key","category","id","categoryName","name","categoryDescription","description","markings"],"sources":["BaseCbacPicker.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 classnames from \"classnames\";\nimport React from \"react\";\nimport type {\n CategoryMarkingGroup as CategoryMarkingGroupType,\n CbacBannerData,\n MarkingSelectionState,\n RequiredMarkingGroup,\n} from \"../types.js\";\nimport { formatCbacError } from \"../utils/errorMessages.js\";\nimport { BaseCbacBanner } from \"./BaseCbacBanner.js\";\nimport styles from \"./BaseCbacPicker.module.css\";\nimport { CategoryMarkingGroup } from \"./CategoryMarkingGroup.js\";\nimport { InfoBanner } from \"./InfoBanner.js\";\nimport { ValidationWarning } from \"./ValidationWarning.js\";\n\nexport interface BaseCbacPickerProps {\n categories: CategoryMarkingGroupType[];\n markingStates: Map<string, MarkingSelectionState>;\n banner?: CbacBannerData;\n onMarkingToggle: (markingId: string) => void;\n onDismissBanner?: () => void;\n showInfoBanner?: boolean;\n requiredMarkingGroups?: ReadonlyArray<RequiredMarkingGroup>;\n isValid?: boolean;\n readOnly?: boolean;\n isLoading?: boolean;\n error?: Error;\n validationCallouts?: React.ReactNode;\n className?: string;\n}\n\nexport function BaseCbacPicker({\n categories,\n markingStates,\n banner,\n onMarkingToggle,\n onDismissBanner,\n showInfoBanner,\n requiredMarkingGroups,\n isValid,\n readOnly,\n isLoading,\n error,\n validationCallouts,\n className,\n}: BaseCbacPickerProps): React.ReactElement {\n const errorMessage = error != null ? formatCbacError(error) : undefined;\n const showInitialLoading = isLoading === true && categories.length === 0;\n const showValidationWarning = isValid === false\n && requiredMarkingGroups != null\n && requiredMarkingGroups.length > 0;\n\n return (\n <div className={classnames(styles.picker, className)}>\n {showInfoBanner === true && (\n <InfoBanner message=\"Implied markings are (in parentheses).\" />\n )}\n {banner != null && (\n <BaseCbacBanner\n classificationString={banner.classificationString}\n textColor={banner.textColor}\n backgroundColors={banner.backgroundColors}\n onDismiss={onDismissBanner}\n className={styles.innerBanner}\n />\n )}\n {errorMessage !== undefined\n ? (\n <div\n className={styles.statusMessage}\n role=\"alert\"\n >\n <p>{errorMessage.title}</p>\n {errorMessage.remediation && <p>{errorMessage.remediation}</p>}\n </div>\n )\n : showInitialLoading\n ? (\n <div\n className={styles.statusMessage}\n role=\"status\"\n aria-live=\"polite\"\n >\n Loading...\n </div>\n )\n : (\n <div className={styles.categoriesContainer}>\n {categories.map((group) => (\n <CategoryMarkingGroup\n key={group.category.id}\n categoryName={group.category.name}\n categoryDescription={group.category.description}\n markings={group.markings}\n markingStates={markingStates}\n readOnly={readOnly}\n onMarkingToggle={onMarkingToggle}\n />\n ))}\n </div>\n )}\n {validationCallouts}\n {showValidationWarning && (\n <ValidationWarning requiredMarkingGroups={requiredMarkingGroups} />\n )}\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,47 @@
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
+ .picker {
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: var(--osdk-cbac-picker-category-gap);
21
+ padding: var(--osdk-cbac-picker-padding);
22
+ width: 100%;
23
+ }
24
+
25
+ .categoriesContainer {
26
+ display: flex;
27
+ flex-direction: column;
28
+ gap: var(--osdk-cbac-picker-category-gap);
29
+ overflow-y: auto;
30
+ }
31
+
32
+ .innerBanner {
33
+ border: 1px solid var(--osdk-cbac-banner-border-color);
34
+ }
35
+
36
+ .statusMessage {
37
+ display: flex;
38
+ flex-direction: column;
39
+ gap: calc(var(--osdk-surface-spacing) * 0.5);
40
+ padding: calc(var(--osdk-surface-spacing) * 3) 0;
41
+ color: var(--osdk-typography-color-muted);
42
+ font-style: italic;
43
+ }
44
+
45
+ .statusMessage p {
46
+ margin: 0;
47
+ }
@@ -0,0 +1,9 @@
1
+ // CSS Module proxy for BaseCbacPicker.module.css
2
+ const styles = {
3
+ "picker": "BaseCbacPicker-module__picker___MceZY02I",
4
+ "categoriesContainer": "BaseCbacPicker-module__categoriesContainer___nXngi1OL",
5
+ "innerBanner": "BaseCbacPicker-module__innerBanner___VcvOQHCz",
6
+ "statusMessage": "BaseCbacPicker-module__statusMessage___Rf2tId8K"
7
+ };
8
+
9
+ export default styles;
@@ -0,0 +1,51 @@
1
+ function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
2
+ /*
3
+ * Copyright 2026 Palantir Technologies, Inc. All rights reserved.
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+
18
+ import React from "react";
19
+ import { Dialog } from "../../base-components/dialog/Dialog.js";
20
+ import { BaseCbacPicker } from "./BaseCbacPicker.js";
21
+ import { CbacPickerDialogFooter } from "./CbacPickerDialogFooter.js";
22
+ export function BaseCbacPickerDialog({
23
+ isOpen,
24
+ onOpenChange,
25
+ onConfirm,
26
+ onCancel,
27
+ title = "Select classification",
28
+ submitDisabledReason,
29
+ ...pickerProps
30
+ }) {
31
+ const handleOpenChange = React.useCallback(open => {
32
+ if (!open) {
33
+ onCancel();
34
+ }
35
+ onOpenChange(open);
36
+ }, [onCancel, onOpenChange]);
37
+ return /*#__PURE__*/React.createElement(Dialog, {
38
+ isOpen: isOpen,
39
+ onOpenChange: handleOpenChange,
40
+ title: title,
41
+ footer: /*#__PURE__*/React.createElement(CbacPickerDialogFooter, {
42
+ onCancel: onCancel,
43
+ onConfirm: onConfirm,
44
+ submitDisabledReason: submitDisabledReason
45
+ }),
46
+ disablePointerDismissal: true
47
+ }, /*#__PURE__*/React.createElement(BaseCbacPicker, _extends({}, pickerProps, {
48
+ showInfoBanner: pickerProps.showInfoBanner ?? true
49
+ })));
50
+ }
51
+ //# sourceMappingURL=BaseCbacPickerDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BaseCbacPickerDialog.js","names":["React","Dialog","BaseCbacPicker","CbacPickerDialogFooter","BaseCbacPickerDialog","isOpen","onOpenChange","onConfirm","onCancel","title","submitDisabledReason","pickerProps","handleOpenChange","useCallback","open","createElement","footer","disablePointerDismissal","_extends","showInfoBanner"],"sources":["BaseCbacPickerDialog.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 { Dialog } from \"../../base-components/dialog/Dialog.js\";\nimport { BaseCbacPicker } from \"./BaseCbacPicker.js\";\nimport type { BaseCbacPickerProps } from \"./BaseCbacPicker.js\";\nimport { CbacPickerDialogFooter } from \"./CbacPickerDialogFooter.js\";\n\nexport interface BaseCbacPickerDialogProps extends BaseCbacPickerProps {\n isOpen: boolean;\n onOpenChange: (open: boolean) => void;\n onConfirm: () => void;\n onCancel: () => void;\n title?: string;\n submitDisabledReason?: string;\n}\n\nexport function BaseCbacPickerDialog({\n isOpen,\n onOpenChange,\n onConfirm,\n onCancel,\n title = \"Select classification\",\n submitDisabledReason,\n ...pickerProps\n}: BaseCbacPickerDialogProps): React.ReactElement {\n const handleOpenChange = React.useCallback(\n (open: boolean) => {\n if (!open) {\n onCancel();\n }\n onOpenChange(open);\n },\n [onCancel, onOpenChange],\n );\n\n return (\n <Dialog\n isOpen={isOpen}\n onOpenChange={handleOpenChange}\n title={title}\n footer={\n <CbacPickerDialogFooter\n onCancel={onCancel}\n onConfirm={onConfirm}\n submitDisabledReason={submitDisabledReason}\n />\n }\n disablePointerDismissal={true}\n >\n <BaseCbacPicker\n {...pickerProps}\n showInfoBanner={pickerProps.showInfoBanner ?? true}\n />\n </Dialog>\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,MAAM,QAAQ,wCAAwC;AAC/D,SAASC,cAAc,QAAQ,qBAAqB;AAEpD,SAASC,sBAAsB,QAAQ,6BAA6B;AAWpE,OAAO,SAASC,oBAAoBA,CAAC;EACnCC,MAAM;EACNC,YAAY;EACZC,SAAS;EACTC,QAAQ;EACRC,KAAK,GAAG,uBAAuB;EAC/BC,oBAAoB;EACpB,GAAGC;AACsB,CAAC,EAAsB;EAChD,MAAMC,gBAAgB,GAAGZ,KAAK,CAACa,WAAW,CACvCC,IAAa,IAAK;IACjB,IAAI,CAACA,IAAI,EAAE;MACTN,QAAQ,CAAC,CAAC;IACZ;IACAF,YAAY,CAACQ,IAAI,CAAC;EACpB,CAAC,EACD,CAACN,QAAQ,EAAEF,YAAY,CACzB,CAAC;EAED,oBACEN,KAAA,CAAAe,aAAA,CAACd,MAAM;IACLI,MAAM,EAAEA,MAAO;IACfC,YAAY,EAAEM,gBAAiB;IAC/BH,KAAK,EAAEA,KAAM;IACbO,MAAM,eACJhB,KAAA,CAAAe,aAAA,CAACZ,sBAAsB;MACrBK,QAAQ,EAAEA,QAAS;MACnBD,SAAS,EAAEA,SAAU;MACrBG,oBAAoB,EAAEA;IAAqB,CAC5C,CACF;IACDO,uBAAuB,EAAE;EAAK,gBAE9BjB,KAAA,CAAAe,aAAA,CAACb,cAAc,EAAAgB,QAAA,KACTP,WAAW;IACfQ,cAAc,EAAER,WAAW,CAACQ,cAAc,IAAI;EAAK,EACpD,CACK,CAAC;AAEb","ignoreList":[]}