@osdk/cbac-components 0.6.0 → 0.6.1-main-ecf7e8a1ecd0fc163dcdb7ac86c2342b40d4c799

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/AGENTS.md +2 -0
  2. package/CHANGELOG.md +6 -0
  3. package/README.md +2 -0
  4. package/build/browser/cbac-picker/CbacBanner.js.map +1 -1
  5. package/build/browser/cbac-picker/CbacBannerPopover.js.map +1 -1
  6. package/build/browser/cbac-picker/CbacPicker.js.map +1 -1
  7. package/build/browser/cbac-picker/CbacPickerDialog.js.map +1 -1
  8. package/build/browser/cbac-picker/base/BaseCbacBanner.js.map +1 -1
  9. package/build/browser/cbac-picker/base/BaseCbacBannerPopover.js.map +1 -1
  10. package/build/browser/cbac-picker/base/BaseCbacPicker.js +1 -1
  11. package/build/browser/cbac-picker/base/BaseCbacPicker.js.map +1 -1
  12. package/build/browser/cbac-picker/base/BaseCbacPickerDialog.js.map +1 -1
  13. package/build/browser/cbac-picker/base/CategoryMarkingGroup.js +1 -1
  14. package/build/browser/cbac-picker/base/CategoryMarkingGroup.js.map +1 -1
  15. package/build/browser/cbac-picker/base/CbacPickerDialogFooter.js.map +1 -1
  16. package/build/browser/cbac-picker/base/InfoBanner.js.map +1 -1
  17. package/build/browser/cbac-picker/base/MarkingButton.js +1 -1
  18. package/build/browser/cbac-picker/base/MarkingButton.js.map +1 -1
  19. package/build/browser/cbac-picker/base/MaxClassificationField.js.map +1 -1
  20. package/build/browser/cbac-picker/base/OverflowButton.js +1 -1
  21. package/build/browser/cbac-picker/base/OverflowButton.js.map +1 -1
  22. package/build/browser/cbac-picker/base/OverflowItem.js +1 -1
  23. package/build/browser/cbac-picker/base/OverflowItem.js.map +1 -1
  24. package/build/browser/cbac-picker/base/ValidationWarning.js.map +1 -1
  25. package/build/browser/cbac-picker/base/selectionStateHelpers.js.map +1 -1
  26. package/build/browser/cbac-picker/useCbacPickerState.js.map +1 -1
  27. package/build/browser/cbac-picker/useCbacSelection.js.map +1 -1
  28. package/build/browser/cbac-picker/useConstraintCallout.js.map +1 -1
  29. package/build/browser/cbac-picker/utils/cbacPickerUtils.js.map +1 -1
  30. package/build/browser/cbac-picker/utils/errorMessages.js.map +1 -1
  31. package/build/browser/cbac-picker/utils/selectionLogic.js.map +1 -1
  32. package/build/browser/cbac-picker/utils/validationMessages.js.map +1 -1
  33. package/build/browser/public/experimental.js.map +1 -1
  34. package/build/browser/util/UserAgent.js +1 -1
  35. package/build/browser/util/UserAgent.js.map +1 -1
  36. package/build/browser/util/withOsdkMetrics.js.map +1 -1
  37. package/build/cjs/public/experimental.cjs +13 -13
  38. package/build/cjs/public/experimental.cjs.map +1 -1
  39. package/build/cjs/public/experimental.css +110 -110
  40. package/build/cjs/public/experimental.css.map +1 -1
  41. package/build/esm/cbac-picker/CbacBanner.js.map +1 -1
  42. package/build/esm/cbac-picker/CbacBannerPopover.js.map +1 -1
  43. package/build/esm/cbac-picker/CbacPicker.js.map +1 -1
  44. package/build/esm/cbac-picker/CbacPickerDialog.js.map +1 -1
  45. package/build/esm/cbac-picker/base/BaseCbacBanner.js.map +1 -1
  46. package/build/esm/cbac-picker/base/BaseCbacBannerPopover.js.map +1 -1
  47. package/build/esm/cbac-picker/base/BaseCbacPicker.js +1 -1
  48. package/build/esm/cbac-picker/base/BaseCbacPicker.js.map +1 -1
  49. package/build/esm/cbac-picker/base/BaseCbacPickerDialog.js.map +1 -1
  50. package/build/esm/cbac-picker/base/CategoryMarkingGroup.js +1 -1
  51. package/build/esm/cbac-picker/base/CategoryMarkingGroup.js.map +1 -1
  52. package/build/esm/cbac-picker/base/CbacPickerDialogFooter.js.map +1 -1
  53. package/build/esm/cbac-picker/base/InfoBanner.js.map +1 -1
  54. package/build/esm/cbac-picker/base/MarkingButton.js +1 -1
  55. package/build/esm/cbac-picker/base/MarkingButton.js.map +1 -1
  56. package/build/esm/cbac-picker/base/MaxClassificationField.js.map +1 -1
  57. package/build/esm/cbac-picker/base/OverflowButton.js +1 -1
  58. package/build/esm/cbac-picker/base/OverflowButton.js.map +1 -1
  59. package/build/esm/cbac-picker/base/OverflowItem.js +1 -1
  60. package/build/esm/cbac-picker/base/OverflowItem.js.map +1 -1
  61. package/build/esm/cbac-picker/base/ValidationWarning.js.map +1 -1
  62. package/build/esm/cbac-picker/base/selectionStateHelpers.js.map +1 -1
  63. package/build/esm/cbac-picker/useCbacPickerState.js.map +1 -1
  64. package/build/esm/cbac-picker/useCbacSelection.js.map +1 -1
  65. package/build/esm/cbac-picker/useConstraintCallout.js.map +1 -1
  66. package/build/esm/cbac-picker/utils/cbacPickerUtils.js.map +1 -1
  67. package/build/esm/cbac-picker/utils/errorMessages.js.map +1 -1
  68. package/build/esm/cbac-picker/utils/selectionLogic.js.map +1 -1
  69. package/build/esm/cbac-picker/utils/validationMessages.js.map +1 -1
  70. package/build/esm/public/experimental.js.map +1 -1
  71. package/build/esm/util/UserAgent.js +1 -1
  72. package/build/esm/util/UserAgent.js.map +1 -1
  73. package/build/esm/util/withOsdkMetrics.js.map +1 -1
  74. package/build/types/cbac-picker/CbacBanner.d.ts.map +1 -1
  75. package/build/types/cbac-picker/CbacBannerPopover.d.ts.map +1 -1
  76. package/build/types/cbac-picker/CbacPicker.d.ts.map +1 -1
  77. package/build/types/cbac-picker/CbacPickerDialog.d.ts.map +1 -1
  78. package/build/types/cbac-picker/base/BaseCbacBanner.d.ts.map +1 -1
  79. package/build/types/cbac-picker/base/BaseCbacBannerPopover.d.ts.map +1 -1
  80. package/build/types/cbac-picker/base/BaseCbacPicker.d.ts.map +1 -1
  81. package/build/types/cbac-picker/base/BaseCbacPickerDialog.d.ts.map +1 -1
  82. package/build/types/cbac-picker/base/CategoryMarkingGroup.d.ts.map +1 -1
  83. package/build/types/cbac-picker/base/CbacPickerDialogFooter.d.ts.map +1 -1
  84. package/build/types/cbac-picker/base/InfoBanner.d.ts.map +1 -1
  85. package/build/types/cbac-picker/base/MarkingButton.d.ts.map +1 -1
  86. package/build/types/cbac-picker/base/MaxClassificationField.d.ts.map +1 -1
  87. package/build/types/cbac-picker/base/OverflowButton.d.ts.map +1 -1
  88. package/build/types/cbac-picker/base/OverflowItem.d.ts.map +1 -1
  89. package/build/types/cbac-picker/base/ValidationWarning.d.ts.map +1 -1
  90. package/build/types/cbac-picker/useCbacPickerState.d.ts.map +1 -1
  91. package/build/types/cbac-picker/useCbacSelection.d.ts.map +1 -1
  92. package/build/types/cbac-picker/useConstraintCallout.d.ts.map +1 -1
  93. package/build/types/cbac-picker/utils/cbacPickerUtils.d.ts.map +1 -1
  94. package/build/types/cbac-picker/utils/errorMessages.d.ts.map +1 -1
  95. package/build/types/public/experimental.d.ts.map +1 -1
  96. package/build/types/util/UserAgent.d.ts.map +1 -1
  97. package/build/types/util/withOsdkMetrics.d.ts.map +1 -1
  98. package/docs/CbacPicker.md +2 -0
  99. package/package.json +5 -6
package/AGENTS.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # @osdk/cbac-components
2
2
 
3
+ > **DEPRECATED / RELOCATED**: The CBAC components have been merged into [`@osdk/react-components`](../react-components) and are now exported from `@osdk/react-components/experimental/cbac-picker`. This package is kept for legacy reference only and is no longer the source of truth. **New consumers should import from `@osdk/react-components`.** See [`../react-components/docs/CbacPicker.md`](../react-components/docs/CbacPicker.md) and [`../react-components/AGENTS.md`](../react-components/AGENTS.md) for usage guidance.
4
+
3
5
  React components for [classification-based access control (CBAC)](https://www.palantir.com/docs/foundry/security/classification-based-access-controls/). CBAC markings control who can access data — users select markings from categories (disjunctive = pick one, conjunctive = pick many) and the server computes restrictions (implied, disallowed, required markings) and resolves a classification banner. Pass in marking IDs and these components handle all of that automatically. Requires `@osdk/react` (see the `@osdk/react` package's `AGENTS.md` for hooks and provider setup).
4
6
 
5
7
  ## Components
package/CHANGELOG.md CHANGED
@@ -1,5 +1,11 @@
1
1
  # @osdk/cbac-components
2
2
 
3
+ ## 0.6.1-main-ecf7e8a1ecd0fc163dcdb7ac86c2342b40d4c799
4
+
5
+ ### Patch Changes
6
+
7
+ - 9c6b0e3: Migrate @osdk/cbac-components to lint with oxlint and format with oxfmt (configured via Ultracite) instead of ESLint and dprint (fifth increment of the repo-wide oxc migration; first React package with CSS exports)
8
+
3
9
  ## 0.6.0
4
10
 
5
11
  ### Minor Changes
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # @osdk/cbac-components
2
2
 
3
+ > **DEPRECATED / RELOCATED**: The CBAC components have been merged into [`@osdk/react-components`](https://github.com/palantir/osdk-ts/tree/main/packages/react-components) and are now exported from `@osdk/react-components/experimental/cbac-picker`. This package is kept in the repository for legacy reference only and is no longer the source of truth. **New consumers should import from `@osdk/react-components`.** See [`packages/react-components/docs/CbacPicker.md`](https://github.com/palantir/osdk-ts/blob/main/packages/react-components/docs/CbacPicker.md) for usage.
4
+
3
5
  > **Beta Release**: This package is currently in beta. Please use the latest beta version for the most up-to-date features and fixes.
4
6
 
5
7
  React components for managing [classification-based access control (CBAC)](https://www.palantir.com/docs/foundry/security/classification-based-access-controls/) markings. CBAC markings control who can access data — each piece of data can be tagged with markings from different categories, and the combination determines its access restrictions.
@@ -1 +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":[]}
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\";\n\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;AAEzB,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":[]}
@@ -1 +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":"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","ignoreList":[]}
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\";\n\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 =\n 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(\n (newMarkingIds: string[]) => {\n onChange(newMarkingIds);\n setIsDialogOpen(false);\n },\n [onChange]\n );\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":"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","ignoreList":[]}
@@ -1 +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":[]}
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\";\n\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;AAEzB,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":[]}
@@ -1 +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":[]}
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\";\n\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 =\n initialMarkingIds !== undefined && 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;AAEzB,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,GACtBlB,iBAAiB,KAAKmB,SAAS,IAAInB,iBAAiB,CAACoB,MAAM,GAAG,CAAC;EAEjE,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":[]}
@@ -1 +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":[]}
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\";\n\nimport { backgroundFromColors } from \"../utils/cbacPickerUtils.js\";\n\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(\n (): React.CSSProperties =>\n ({\n \"--osdk-cbac-banner-bg\": backgroundFromColors(backgroundColors),\n \"--osdk-cbac-banner-color\": textColor,\n }) as React.CSSProperties,\n [textColor, backgroundColors]\n );\n\n const handleDismiss = React.useCallback(\n (e: React.MouseEvent) => {\n e.stopPropagation();\n onDismiss?.();\n },\n [onDismiss]\n );\n\n const dismissButton =\n onDismiss != null ? (\n <Button\n className={styles.dismissButton}\n onClick={handleDismiss}\n aria-label=\"Clear classification\"\n >\n <Cross size={12} color=\"currentColor\" />\n </Button>\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}>{classificationString}</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;AAEzB,SAASC,oBAAoB,QAAQ,6BAA6B;AAElE,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,CAC/B,OACG;IACC,uBAAuB,EAAEV,oBAAoB,CAACK,gBAAgB,CAAC;IAC/D,0BAA0B,EAAED;EAC9B,CAAC,CAAwB,EAC3B,CAACA,SAAS,EAAEC,gBAAgB,CAC9B,CAAC;EAED,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,GACjBR,SAAS,IAAI,IAAI,gBACfR,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,GACP,IAAI;EAEV,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,GAAElB,oBAA2B,CAAC,EAC5DY,aACE,CAAC;AAEV","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"BaseCbacBannerPopover.js","names":["Popover","CaretDown","CaretUp","WarningSign","ActionButton","SkeletonBar","classnames","React","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 { ActionButton, SkeletonBar } from \"@osdk/react-components/primitives\";\nimport classnames from \"classnames\";\nimport React from \"react\";\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":[]}
1
+ {"version":3,"file":"BaseCbacBannerPopover.js","names":["Popover","CaretDown","CaretUp","WarningSign","ActionButton","SkeletonBar","classnames","React","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 { ActionButton, SkeletonBar } from \"@osdk/react-components/primitives\";\nimport classnames from \"classnames\";\nimport React from \"react\";\n\nimport {\n type AppliedMarkingGroup,\n backgroundFromColors,\n} from \"../utils/cbacPickerUtils.js\";\n\nexport type { AppliedMarkingGroup } from \"../utils/cbacPickerUtils.js\";\nimport { formatCbacError } from \"../utils/errorMessages.js\";\nimport { BaseCbacBanner } from \"./BaseCbacBanner.js\";\n\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(\n (): React.CSSProperties => ({\n color: textColor,\n background: backgroundFromColors(backgroundColors),\n }),\n [textColor, backgroundColors]\n );\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}>{errorMessage.title}</p>\n {errorMessage.remediation && (\n <p className={styles.errorRemediation}>{errorMessage.remediation}</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 appliedMarkings.map((group) => (\n <div key={group.categoryName} className={styles.markingGroup}>\n <p className={styles.markingCategoryName}>{group.categoryName}</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\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":[]}
@@ -18,10 +18,10 @@ import classnames from "classnames";
18
18
  import React from "react";
19
19
  import { formatCbacError } from "../utils/errorMessages.js";
20
20
  import { BaseCbacBanner } from "./BaseCbacBanner.js";
21
- import styles from "./BaseCbacPicker.module.css.js";
22
21
  import { CategoryMarkingGroup } from "./CategoryMarkingGroup.js";
23
22
  import { InfoBanner } from "./InfoBanner.js";
24
23
  import { ValidationWarning } from "./ValidationWarning.js";
24
+ import styles from "./BaseCbacPicker.module.css.js";
25
25
  export function BaseCbacPicker({
26
26
  categories,
27
27
  markingStates,
@@ -1 +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":[]}
1
+ {"version":3,"file":"BaseCbacPicker.js","names":["classnames","React","formatCbacError","BaseCbacBanner","CategoryMarkingGroup","InfoBanner","ValidationWarning","styles","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\";\n\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 { CategoryMarkingGroup } from \"./CategoryMarkingGroup.js\";\nimport { InfoBanner } from \"./InfoBanner.js\";\nimport { ValidationWarning } from \"./ValidationWarning.js\";\n\nimport styles from \"./BaseCbacPicker.module.css\";\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 =\n 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 <div className={styles.statusMessage} role=\"alert\">\n <p>{errorMessage.title}</p>\n {errorMessage.remediation && <p>{errorMessage.remediation}</p>}\n </div>\n ) : showInitialLoading ? (\n <div className={styles.statusMessage} role=\"status\" aria-live=\"polite\">\n Loading...\n </div>\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":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"BaseCbacPickerDialog.js","names":["Dialog","React","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 { Dialog } from \"@osdk/react-components/primitives\";\nimport React from \"react\";\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,SAASA,MAAM,QAAQ,mCAAmC;AAC1D,OAAOC,KAAK,MAAM,OAAO;AACzB,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,GAAGX,KAAK,CAACY,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,oBACEL,KAAA,CAAAc,aAAA,CAACf,MAAM;IACLK,MAAM,EAAEA,MAAO;IACfC,YAAY,EAAEM,gBAAiB;IAC/BH,KAAK,EAAEA,KAAM;IACbO,MAAM,eACJf,KAAA,CAAAc,aAAA,CAACZ,sBAAsB;MACrBK,QAAQ,EAAEA,QAAS;MACnBD,SAAS,EAAEA,SAAU;MACrBG,oBAAoB,EAAEA;IAAqB,CAC5C,CACF;IACDO,uBAAuB,EAAE;EAAK,gBAE9BhB,KAAA,CAAAc,aAAA,CAACb,cAAc,EAAAgB,QAAA,KACTP,WAAW;IACfQ,cAAc,EAAER,WAAW,CAACQ,cAAc,IAAI;EAAK,EACpD,CACK,CAAC;AAEb","ignoreList":[]}
1
+ {"version":3,"file":"BaseCbacPickerDialog.js","names":["Dialog","React","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 { Dialog } from \"@osdk/react-components/primitives\";\nimport React from \"react\";\n\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,SAASA,MAAM,QAAQ,mCAAmC;AAC1D,OAAOC,KAAK,MAAM,OAAO;AAEzB,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,GAAGX,KAAK,CAACY,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,oBACEL,KAAA,CAAAc,aAAA,CAACf,MAAM;IACLK,MAAM,EAAEA,MAAO;IACfC,YAAY,EAAEM,gBAAiB;IAC/BH,KAAK,EAAEA,KAAM;IACbO,MAAM,eACJf,KAAA,CAAAc,aAAA,CAACZ,sBAAsB;MACrBK,QAAQ,EAAEA,QAAS;MACnBD,SAAS,EAAEA,SAAU;MACrBG,oBAAoB,EAAEA;IAAqB,CAC5C,CACF;IACDO,uBAAuB,EAAE;EAAK,gBAE9BhB,KAAA,CAAAc,aAAA,CAACb,cAAc,EAAAgB,QAAA,KACTP,WAAW;IACfQ,cAAc,EAAER,WAAW,CAACQ,cAAc,IAAI;EAAK,EACpD,CACK,CAAC;AAEb","ignoreList":[]}
@@ -17,10 +17,10 @@
17
17
  import { Tooltip } from "@base-ui/react/tooltip";
18
18
  import { InfoSign } from "@blueprintjs/icons";
19
19
  import React from "react";
20
- import styles from "./CategoryMarkingGroup.module.css.js";
21
20
  import { MarkingButton } from "./MarkingButton.js";
22
21
  import { OverflowButton } from "./OverflowButton.js";
23
22
  import { isImplied } from "./selectionStateHelpers.js";
23
+ import styles from "./CategoryMarkingGroup.module.css.js";
24
24
  const GRID_COLUMNS = 4;
25
25
  const VISIBLE_ROWS = 3;
26
26
  const DEFAULT_MARKING_STATE = "NONE";
@@ -1 +1 @@
1
- {"version":3,"file":"CategoryMarkingGroup.js","names":["Tooltip","InfoSign","React","styles","MarkingButton","OverflowButton","isImplied","GRID_COLUMNS","VISIBLE_ROWS","DEFAULT_MARKING_STATE","CategoryMarkingGroup","memo","categoryName","categoryDescription","markings","markingStates","readOnly","onMarkingToggle","headingId","useId","resolvedMarkings","useMemo","map","marking","id","label","name","description","selectionState","get","disabled","maxVisible","hasOverflow","length","visibleMarkings","slice","overflowMarkings","gridItemCount","hasActiveOverflow","some","m","createElement","className","categoryGroup","role","categoryHeader","Root","Trigger","render","infoIcon","size","Portal","Positioner","side","sideOffset","Popup","infoTooltip","markingGrid","key","onToggle","Array","from","_","i","emptyCell"],"sources":["CategoryMarkingGroup.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 { Tooltip } from \"@base-ui/react/tooltip\";\nimport { InfoSign } from \"@blueprintjs/icons\";\nimport React from \"react\";\nimport type { MarkingSelectionState } from \"../types.js\";\nimport styles from \"./CategoryMarkingGroup.module.css\";\nimport { MarkingButton } from \"./MarkingButton.js\";\nimport { OverflowButton } from \"./OverflowButton.js\";\nimport { isImplied } from \"./selectionStateHelpers.js\";\n\nconst GRID_COLUMNS = 4;\nconst VISIBLE_ROWS = 3;\nconst DEFAULT_MARKING_STATE: MarkingSelectionState = \"NONE\";\n\nexport interface CategoryMarkingGroupProps {\n categoryName: string;\n categoryDescription?: string;\n markings: ReadonlyArray<{ id: string; name: string; description?: string }>;\n markingStates: Map<string, MarkingSelectionState>;\n readOnly?: boolean;\n onMarkingToggle: (markingId: string) => void;\n}\n\nexport const CategoryMarkingGroup: React.MemoExoticComponent<\n (props: CategoryMarkingGroupProps) => React.ReactElement\n> = React.memo(function CategoryMarkingGroup({\n categoryName,\n categoryDescription,\n markings,\n markingStates,\n readOnly,\n onMarkingToggle,\n}: CategoryMarkingGroupProps): React.ReactElement {\n const headingId = React.useId();\n\n const resolvedMarkings = React.useMemo(\n () =>\n markings.map((marking) => ({\n id: marking.id,\n label: marking.name,\n description: marking.description,\n selectionState: markingStates.get(marking.id) ?? DEFAULT_MARKING_STATE,\n disabled: readOnly,\n })),\n [markings, markingStates, readOnly],\n );\n\n const maxVisible = GRID_COLUMNS * VISIBLE_ROWS;\n const hasOverflow = resolvedMarkings.length > maxVisible;\n const visibleMarkings = hasOverflow\n ? resolvedMarkings.slice(0, maxVisible - 1)\n : resolvedMarkings;\n const overflowMarkings = hasOverflow\n ? resolvedMarkings.slice(maxVisible - 1)\n : [];\n\n const gridItemCount = hasOverflow\n ? visibleMarkings.length + 1\n : visibleMarkings.length;\n const emptyCellCount = (GRID_COLUMNS - (gridItemCount % GRID_COLUMNS))\n % GRID_COLUMNS;\n\n const hasActiveOverflow = overflowMarkings.some(\n (m) => m.selectionState === \"SELECTED\" || isImplied(m.selectionState),\n );\n\n return (\n <div\n className={styles.categoryGroup}\n role=\"group\"\n aria-labelledby={headingId}\n >\n <div className={styles.categoryHeader}>\n <h3 id={headingId} className={styles.categoryName}>{categoryName}</h3>\n {categoryDescription != null && categoryDescription.length > 0 && (\n <Tooltip.Root>\n <Tooltip.Trigger\n render={\n <span\n className={styles.infoIcon}\n aria-label=\"Category description\"\n >\n <InfoSign size={12} />\n </span>\n }\n />\n <Tooltip.Portal>\n <Tooltip.Positioner side=\"top\" sideOffset={4}>\n <Tooltip.Popup className={styles.infoTooltip}>\n {categoryDescription}\n </Tooltip.Popup>\n </Tooltip.Positioner>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n </div>\n <div className={styles.markingGrid}>\n {visibleMarkings.map((marking) => (\n <MarkingButton\n key={marking.id}\n id={marking.id}\n label={marking.label}\n description={marking.description}\n selectionState={marking.selectionState}\n disabled={marking.disabled}\n onToggle={onMarkingToggle}\n />\n ))}\n {hasOverflow && (\n <OverflowButton\n overflowMarkings={overflowMarkings}\n hasActiveOverflow={hasActiveOverflow}\n onMarkingToggle={onMarkingToggle}\n />\n )}\n {Array.from({ length: emptyCellCount }, (_, i) => (\n <div\n key={`empty-${i}`}\n className={styles.emptyCell}\n />\n ))}\n </div>\n </div>\n );\n});\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,OAAO,QAAQ,wBAAwB;AAChD,SAASC,QAAQ,QAAQ,oBAAoB;AAC7C,OAAOC,KAAK,MAAM,OAAO;AAEzB,OAAOC,MAAM,MAAM,mCAAmC;AACtD,SAASC,aAAa,QAAQ,oBAAoB;AAClD,SAASC,cAAc,QAAQ,qBAAqB;AACpD,SAASC,SAAS,QAAQ,4BAA4B;AAEtD,MAAMC,YAAY,GAAG,CAAC;AACtB,MAAMC,YAAY,GAAG,CAAC;AACtB,MAAMC,qBAA4C,GAAG,MAAM;AAW3D,OAAO,MAAMC,oBAEZ,gBAAGR,KAAK,CAACS,IAAI,CAAC,UAA8B;EAC3CC,YAAY;EACZC,mBAAmB;EACnBC,QAAQ;EACRC,aAAa;EACbC,QAAQ;EACRC;AACyB,CAAC,EAAsB;EAChD,MAAMC,SAAS,GAAGhB,KAAK,CAACiB,KAAK,CAAC,CAAC;EAE/B,MAAMC,gBAAgB,GAAGlB,KAAK,CAACmB,OAAO,CACpC,MACEP,QAAQ,CAACQ,GAAG,CAAEC,OAAO,KAAM;IACzBC,EAAE,EAAED,OAAO,CAACC,EAAE;IACdC,KAAK,EAAEF,OAAO,CAACG,IAAI;IACnBC,WAAW,EAAEJ,OAAO,CAACI,WAAW;IAChCC,cAAc,EAAEb,aAAa,CAACc,GAAG,CAACN,OAAO,CAACC,EAAE,CAAC,IAAIf,qBAAqB;IACtEqB,QAAQ,EAAEd;EACZ,CAAC,CAAC,CAAC,EACL,CAACF,QAAQ,EAAEC,aAAa,EAAEC,QAAQ,CACpC,CAAC;EAED,MAAMe,UAAU,GAAGxB,YAAY,GAAGC,YAAY;EAC9C,MAAMwB,WAAW,GAAGZ,gBAAgB,CAACa,MAAM,GAAGF,UAAU;EACxD,MAAMG,eAAe,GAAGF,WAAW,GAC/BZ,gBAAgB,CAACe,KAAK,CAAC,CAAC,EAAEJ,UAAU,GAAG,CAAC,CAAC,GACzCX,gBAAgB;EACpB,MAAMgB,gBAAgB,GAAGJ,WAAW,GAChCZ,gBAAgB,CAACe,KAAK,CAACJ,UAAU,GAAG,CAAC,CAAC,GACtC,EAAE;EAEN,MAAMM,aAAa,GAAGL,WAAW,GAC7BE,eAAe,CAACD,MAAM,GAAG,CAAC,GAC1BC,eAAe,CAACD,MAAM;EAI1B,MAAMK,iBAAiB,GAAGF,gBAAgB,CAACG,IAAI,CAC5CC,CAAC,IAAKA,CAAC,CAACZ,cAAc,KAAK,UAAU,IAAItB,SAAS,CAACkC,CAAC,CAACZ,cAAc,CACtE,CAAC;EAED,oBACE1B,KAAA,CAAAuC,aAAA;IACEC,SAAS,EAAEvC,MAAM,CAACwC,aAAc;IAChCC,IAAI,EAAC,OAAO;IACZ,mBAAiB1B;EAAU,gBAE3BhB,KAAA,CAAAuC,aAAA;IAAKC,SAAS,EAAEvC,MAAM,CAAC0C;EAAe,gBACpC3C,KAAA,CAAAuC,aAAA;IAAIjB,EAAE,EAAEN,SAAU;IAACwB,SAAS,EAAEvC,MAAM,CAACS;EAAa,GAAEA,YAAiB,CAAC,EACrEC,mBAAmB,IAAI,IAAI,IAAIA,mBAAmB,CAACoB,MAAM,GAAG,CAAC,iBAC5D/B,KAAA,CAAAuC,aAAA,CAACzC,OAAO,CAAC8C,IAAI,qBACX5C,KAAA,CAAAuC,aAAA,CAACzC,OAAO,CAAC+C,OAAO;IACdC,MAAM,eACJ9C,KAAA,CAAAuC,aAAA;MACEC,SAAS,EAAEvC,MAAM,CAAC8C,QAAS;MAC3B,cAAW;IAAsB,gBAEjC/C,KAAA,CAAAuC,aAAA,CAACxC,QAAQ;MAACiD,IAAI,EAAE;IAAG,CAAE,CACjB;EACP,CACF,CAAC,eACFhD,KAAA,CAAAuC,aAAA,CAACzC,OAAO,CAACmD,MAAM,qBACbjD,KAAA,CAAAuC,aAAA,CAACzC,OAAO,CAACoD,UAAU;IAACC,IAAI,EAAC,KAAK;IAACC,UAAU,EAAE;EAAE,gBAC3CpD,KAAA,CAAAuC,aAAA,CAACzC,OAAO,CAACuD,KAAK;IAACb,SAAS,EAAEvC,MAAM,CAACqD;EAAY,GAC1C3C,mBACY,CACG,CACN,CACJ,CAEb,CAAC,eACNX,KAAA,CAAAuC,aAAA;IAAKC,SAAS,EAAEvC,MAAM,CAACsD;EAAY,GAChCvB,eAAe,CAACZ,GAAG,CAAEC,OAAO,iBAC3BrB,KAAA,CAAAuC,aAAA,CAACrC,aAAa;IACZsD,GAAG,EAAEnC,OAAO,CAACC,EAAG;IAChBA,EAAE,EAAED,OAAO,CAACC,EAAG;IACfC,KAAK,EAAEF,OAAO,CAACE,KAAM;IACrBE,WAAW,EAAEJ,OAAO,CAACI,WAAY;IACjCC,cAAc,EAAEL,OAAO,CAACK,cAAe;IACvCE,QAAQ,EAAEP,OAAO,CAACO,QAAS;IAC3B6B,QAAQ,EAAE1C;EAAgB,CAC3B,CACF,CAAC,EACDe,WAAW,iBACV9B,KAAA,CAAAuC,aAAA,CAACpC,cAAc;IACb+B,gBAAgB,EAAEA,gBAAiB;IACnCE,iBAAiB,EAAEA,iBAAkB;IACrCrB,eAAe,EAAEA;EAAgB,CAClC,CACF,EACA2C,KAAK,CAACC,IAAI,CAAC;IAAE5B,MAAM,EAxDH,CAAC1B,YAAY,GAAI8B,aAAa,GAAG9B,YAAa,IACjEA;EAuDuC,CAAC,EAAE,CAACuD,CAAC,EAAEC,CAAC,kBAC3C7D,KAAA,CAAAuC,aAAA;IACEiB,GAAG,EAAE,SAASK,CAAC,EAAG;IAClBrB,SAAS,EAAEvC,MAAM,CAAC6D;EAAU,CAC7B,CACF,CACE,CACF,CAAC;AAEV,CAAC,CAAC","ignoreList":[]}
1
+ {"version":3,"file":"CategoryMarkingGroup.js","names":["Tooltip","InfoSign","React","MarkingButton","OverflowButton","isImplied","styles","GRID_COLUMNS","VISIBLE_ROWS","DEFAULT_MARKING_STATE","CategoryMarkingGroup","memo","categoryName","categoryDescription","markings","markingStates","readOnly","onMarkingToggle","headingId","useId","resolvedMarkings","useMemo","map","marking","id","label","name","description","selectionState","get","disabled","maxVisible","hasOverflow","length","visibleMarkings","slice","overflowMarkings","gridItemCount","hasActiveOverflow","some","m","createElement","className","categoryGroup","role","categoryHeader","Root","Trigger","render","infoIcon","size","Portal","Positioner","side","sideOffset","Popup","infoTooltip","markingGrid","key","onToggle","Array","from","_","i","emptyCell"],"sources":["CategoryMarkingGroup.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 { Tooltip } from \"@base-ui/react/tooltip\";\nimport { InfoSign } from \"@blueprintjs/icons\";\nimport React from \"react\";\n\nimport type { MarkingSelectionState } from \"../types.js\";\nimport { MarkingButton } from \"./MarkingButton.js\";\nimport { OverflowButton } from \"./OverflowButton.js\";\nimport { isImplied } from \"./selectionStateHelpers.js\";\n\nimport styles from \"./CategoryMarkingGroup.module.css\";\n\nconst GRID_COLUMNS = 4;\nconst VISIBLE_ROWS = 3;\nconst DEFAULT_MARKING_STATE: MarkingSelectionState = \"NONE\";\n\nexport interface CategoryMarkingGroupProps {\n categoryName: string;\n categoryDescription?: string;\n markings: ReadonlyArray<{ id: string; name: string; description?: string }>;\n markingStates: Map<string, MarkingSelectionState>;\n readOnly?: boolean;\n onMarkingToggle: (markingId: string) => void;\n}\n\nexport const CategoryMarkingGroup: React.MemoExoticComponent<\n (props: CategoryMarkingGroupProps) => React.ReactElement\n> = React.memo(function CategoryMarkingGroup({\n categoryName,\n categoryDescription,\n markings,\n markingStates,\n readOnly,\n onMarkingToggle,\n}: CategoryMarkingGroupProps): React.ReactElement {\n const headingId = React.useId();\n\n const resolvedMarkings = React.useMemo(\n () =>\n markings.map((marking) => ({\n id: marking.id,\n label: marking.name,\n description: marking.description,\n selectionState: markingStates.get(marking.id) ?? DEFAULT_MARKING_STATE,\n disabled: readOnly,\n })),\n [markings, markingStates, readOnly]\n );\n\n const maxVisible = GRID_COLUMNS * VISIBLE_ROWS;\n const hasOverflow = resolvedMarkings.length > maxVisible;\n const visibleMarkings = hasOverflow\n ? resolvedMarkings.slice(0, maxVisible - 1)\n : resolvedMarkings;\n const overflowMarkings = hasOverflow\n ? resolvedMarkings.slice(maxVisible - 1)\n : [];\n\n const gridItemCount = hasOverflow\n ? visibleMarkings.length + 1\n : visibleMarkings.length;\n const emptyCellCount =\n (GRID_COLUMNS - (gridItemCount % GRID_COLUMNS)) % GRID_COLUMNS;\n\n const hasActiveOverflow = overflowMarkings.some(\n (m) => m.selectionState === \"SELECTED\" || isImplied(m.selectionState)\n );\n\n return (\n <div\n className={styles.categoryGroup}\n role=\"group\"\n aria-labelledby={headingId}\n >\n <div className={styles.categoryHeader}>\n <h3 id={headingId} className={styles.categoryName}>\n {categoryName}\n </h3>\n {categoryDescription != null && categoryDescription.length > 0 && (\n <Tooltip.Root>\n <Tooltip.Trigger\n render={\n <span\n className={styles.infoIcon}\n aria-label=\"Category description\"\n >\n <InfoSign size={12} />\n </span>\n }\n />\n <Tooltip.Portal>\n <Tooltip.Positioner side=\"top\" sideOffset={4}>\n <Tooltip.Popup className={styles.infoTooltip}>\n {categoryDescription}\n </Tooltip.Popup>\n </Tooltip.Positioner>\n </Tooltip.Portal>\n </Tooltip.Root>\n )}\n </div>\n <div className={styles.markingGrid}>\n {visibleMarkings.map((marking) => (\n <MarkingButton\n key={marking.id}\n id={marking.id}\n label={marking.label}\n description={marking.description}\n selectionState={marking.selectionState}\n disabled={marking.disabled}\n onToggle={onMarkingToggle}\n />\n ))}\n {hasOverflow && (\n <OverflowButton\n overflowMarkings={overflowMarkings}\n hasActiveOverflow={hasActiveOverflow}\n onMarkingToggle={onMarkingToggle}\n />\n )}\n {Array.from({ length: emptyCellCount }, (_, i) => (\n <div key={`empty-${i}`} className={styles.emptyCell} />\n ))}\n </div>\n </div>\n );\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"CbacPickerDialogFooter.js","names":["ActionButton","Tooltip","React","styles","CbacPickerDialogFooter","onCancel","onConfirm","submitDisabledReason","isSubmitDisabled","submitButton","createElement","variant","onClick","disabled","Fragment","Root","Trigger","render","className","tooltipTriggerWrapper","Portal","Positioner","side","Popup","Arrow"],"sources":["CbacPickerDialogFooter.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 { ActionButton, Tooltip } from \"@osdk/react-components/primitives\";\nimport React from \"react\";\nimport styles from \"./CbacPickerDialogFooter.module.css\";\n\ninterface CbacPickerDialogFooterProps {\n onCancel: () => void;\n onConfirm: () => void;\n submitDisabledReason?: string;\n}\n\nexport function CbacPickerDialogFooter({\n onCancel,\n onConfirm,\n submitDisabledReason,\n}: CbacPickerDialogFooterProps): React.ReactElement {\n const isSubmitDisabled = submitDisabledReason != null;\n\n const submitButton = (\n <ActionButton\n variant=\"primary\"\n onClick={onConfirm}\n disabled={isSubmitDisabled}\n >\n Set classification\n </ActionButton>\n );\n\n return (\n <>\n <ActionButton variant=\"secondary\" onClick={onCancel}>\n Cancel\n </ActionButton>\n {isSubmitDisabled\n ? (\n <Tooltip.Root>\n <Tooltip.Trigger\n render={<span className={styles.tooltipTriggerWrapper} />}\n >\n {submitButton}\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Positioner side=\"top\">\n <Tooltip.Popup>\n {submitDisabledReason}\n <Tooltip.Arrow />\n </Tooltip.Popup>\n </Tooltip.Positioner>\n </Tooltip.Portal>\n </Tooltip.Root>\n )\n : submitButton}\n </>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,YAAY,EAAEC,OAAO,QAAQ,mCAAmC;AACzE,OAAOC,KAAK,MAAM,OAAO;AACzB,OAAOC,MAAM,MAAM,qCAAqC;AAQxD,OAAO,SAASC,sBAAsBA,CAAC;EACrCC,QAAQ;EACRC,SAAS;EACTC;AAC2B,CAAC,EAAsB;EAClD,MAAMC,gBAAgB,GAAGD,oBAAoB,IAAI,IAAI;EAErD,MAAME,YAAY,gBAChBP,KAAA,CAAAQ,aAAA,CAACV,YAAY;IACXW,OAAO,EAAC,SAAS;IACjBC,OAAO,EAAEN,SAAU;IACnBO,QAAQ,EAAEL;EAAiB,GAC5B,oBAEa,CACf;EAED,oBACEN,KAAA,CAAAQ,aAAA,CAAAR,KAAA,CAAAY,QAAA,qBACEZ,KAAA,CAAAQ,aAAA,CAACV,YAAY;IAACW,OAAO,EAAC,WAAW;IAACC,OAAO,EAAEP;EAAS,GAAC,QAEvC,CAAC,EACdG,gBAAgB,gBAEbN,KAAA,CAAAQ,aAAA,CAACT,OAAO,CAACc,IAAI,qBACXb,KAAA,CAAAQ,aAAA,CAACT,OAAO,CAACe,OAAO;IACdC,MAAM,eAAEf,KAAA,CAAAQ,aAAA;MAAMQ,SAAS,EAAEf,MAAM,CAACgB;IAAsB,CAAE;EAAE,GAEzDV,YACc,CAAC,eAClBP,KAAA,CAAAQ,aAAA,CAACT,OAAO,CAACmB,MAAM,qBACblB,KAAA,CAAAQ,aAAA,CAACT,OAAO,CAACoB,UAAU;IAACC,IAAI,EAAC;EAAK,gBAC5BpB,KAAA,CAAAQ,aAAA,CAACT,OAAO,CAACsB,KAAK,QACXhB,oBAAoB,eACrBL,KAAA,CAAAQ,aAAA,CAACT,OAAO,CAACuB,KAAK,MAAE,CACH,CACG,CACN,CACJ,CAAC,GAEff,YACJ,CAAC;AAEP","ignoreList":[]}
1
+ {"version":3,"file":"CbacPickerDialogFooter.js","names":["ActionButton","Tooltip","React","styles","CbacPickerDialogFooter","onCancel","onConfirm","submitDisabledReason","isSubmitDisabled","submitButton","createElement","variant","onClick","disabled","Fragment","Root","Trigger","render","className","tooltipTriggerWrapper","Portal","Positioner","side","Popup","Arrow"],"sources":["CbacPickerDialogFooter.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 { ActionButton, Tooltip } from \"@osdk/react-components/primitives\";\nimport React from \"react\";\n\nimport styles from \"./CbacPickerDialogFooter.module.css\";\n\ninterface CbacPickerDialogFooterProps {\n onCancel: () => void;\n onConfirm: () => void;\n submitDisabledReason?: string;\n}\n\nexport function CbacPickerDialogFooter({\n onCancel,\n onConfirm,\n submitDisabledReason,\n}: CbacPickerDialogFooterProps): React.ReactElement {\n const isSubmitDisabled = submitDisabledReason != null;\n\n const submitButton = (\n <ActionButton\n variant=\"primary\"\n onClick={onConfirm}\n disabled={isSubmitDisabled}\n >\n Set classification\n </ActionButton>\n );\n\n return (\n <>\n <ActionButton variant=\"secondary\" onClick={onCancel}>\n Cancel\n </ActionButton>\n {isSubmitDisabled ? (\n <Tooltip.Root>\n <Tooltip.Trigger\n render={<span className={styles.tooltipTriggerWrapper} />}\n >\n {submitButton}\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Positioner side=\"top\">\n <Tooltip.Popup>\n {submitDisabledReason}\n <Tooltip.Arrow />\n </Tooltip.Popup>\n </Tooltip.Positioner>\n </Tooltip.Portal>\n </Tooltip.Root>\n ) : (\n submitButton\n )}\n </>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,YAAY,EAAEC,OAAO,QAAQ,mCAAmC;AACzE,OAAOC,KAAK,MAAM,OAAO;AAEzB,OAAOC,MAAM,MAAM,qCAAqC;AAQxD,OAAO,SAASC,sBAAsBA,CAAC;EACrCC,QAAQ;EACRC,SAAS;EACTC;AAC2B,CAAC,EAAsB;EAClD,MAAMC,gBAAgB,GAAGD,oBAAoB,IAAI,IAAI;EAErD,MAAME,YAAY,gBAChBP,KAAA,CAAAQ,aAAA,CAACV,YAAY;IACXW,OAAO,EAAC,SAAS;IACjBC,OAAO,EAAEN,SAAU;IACnBO,QAAQ,EAAEL;EAAiB,GAC5B,oBAEa,CACf;EAED,oBACEN,KAAA,CAAAQ,aAAA,CAAAR,KAAA,CAAAY,QAAA,qBACEZ,KAAA,CAAAQ,aAAA,CAACV,YAAY;IAACW,OAAO,EAAC,WAAW;IAACC,OAAO,EAAEP;EAAS,GAAC,QAEvC,CAAC,EACdG,gBAAgB,gBACfN,KAAA,CAAAQ,aAAA,CAACT,OAAO,CAACc,IAAI,qBACXb,KAAA,CAAAQ,aAAA,CAACT,OAAO,CAACe,OAAO;IACdC,MAAM,eAAEf,KAAA,CAAAQ,aAAA;MAAMQ,SAAS,EAAEf,MAAM,CAACgB;IAAsB,CAAE;EAAE,GAEzDV,YACc,CAAC,eAClBP,KAAA,CAAAQ,aAAA,CAACT,OAAO,CAACmB,MAAM,qBACblB,KAAA,CAAAQ,aAAA,CAACT,OAAO,CAACoB,UAAU;IAACC,IAAI,EAAC;EAAK,gBAC5BpB,KAAA,CAAAQ,aAAA,CAACT,OAAO,CAACsB,KAAK,QACXhB,oBAAoB,eACrBL,KAAA,CAAAQ,aAAA,CAACT,OAAO,CAACuB,KAAK,MAAE,CACH,CACG,CACN,CACJ,CAAC,GAEff,YAEF,CAAC;AAEP","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"InfoBanner.js","names":["InfoSign","classnames","React","styles","InfoBanner","message","className","createElement","infoBanner","icon","size"],"sources":["InfoBanner.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 { InfoSign } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport styles from \"./InfoBanner.module.css\";\n\nexport interface InfoBannerProps {\n message: string;\n className?: string;\n}\n\nexport function InfoBanner({\n message,\n className,\n}: InfoBannerProps): React.ReactElement {\n return (\n <div className={classnames(styles.infoBanner, className)}>\n <InfoSign className={styles.icon} size={14} />\n <span>{message}</span>\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,QAAQ,QAAQ,oBAAoB;AAC7C,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,MAAM,OAAO;AACzB,OAAOC,MAAM,MAAM,yBAAyB;AAO5C,OAAO,SAASC,UAAUA,CAAC;EACzBC,OAAO;EACPC;AACe,CAAC,EAAsB;EACtC,oBACEJ,KAAA,CAAAK,aAAA;IAAKD,SAAS,EAAEL,UAAU,CAACE,MAAM,CAACK,UAAU,EAAEF,SAAS;EAAE,gBACvDJ,KAAA,CAAAK,aAAA,CAACP,QAAQ;IAACM,SAAS,EAAEH,MAAM,CAACM,IAAK;IAACC,IAAI,EAAE;EAAG,CAAE,CAAC,eAC9CR,KAAA,CAAAK,aAAA,eAAOF,OAAc,CAClB,CAAC;AAEV","ignoreList":[]}
1
+ {"version":3,"file":"InfoBanner.js","names":["InfoSign","classnames","React","styles","InfoBanner","message","className","createElement","infoBanner","icon","size"],"sources":["InfoBanner.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 { InfoSign } from \"@blueprintjs/icons\";\nimport classnames from \"classnames\";\nimport React from \"react\";\n\nimport styles from \"./InfoBanner.module.css\";\n\nexport interface InfoBannerProps {\n message: string;\n className?: string;\n}\n\nexport function InfoBanner({\n message,\n className,\n}: InfoBannerProps): React.ReactElement {\n return (\n <div className={classnames(styles.infoBanner, className)}>\n <InfoSign className={styles.icon} size={14} />\n <span>{message}</span>\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,QAAQ,QAAQ,oBAAoB;AAC7C,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,MAAM,OAAO;AAEzB,OAAOC,MAAM,MAAM,yBAAyB;AAO5C,OAAO,SAASC,UAAUA,CAAC;EACzBC,OAAO;EACPC;AACe,CAAC,EAAsB;EACtC,oBACEJ,KAAA,CAAAK,aAAA;IAAKD,SAAS,EAAEL,UAAU,CAACE,MAAM,CAACK,UAAU,EAAEF,SAAS;EAAE,gBACvDJ,KAAA,CAAAK,aAAA,CAACP,QAAQ;IAACM,SAAS,EAAEH,MAAM,CAACM,IAAK;IAACC,IAAI,EAAE;EAAG,CAAE,CAAC,eAC9CR,KAAA,CAAAK,aAAA,eAAOF,OAAc,CAClB,CAAC;AAEV","ignoreList":[]}
@@ -18,8 +18,8 @@ import { Button } from "@base-ui/react/button";
18
18
  import { Tooltip } from "@base-ui/react/tooltip";
19
19
  import classnames from "classnames";
20
20
  import React from "react";
21
- import styles from "./MarkingButton.module.css.js";
22
21
  import { getDisplayLabel, isDisallowed } from "./selectionStateHelpers.js";
22
+ import styles from "./MarkingButton.module.css.js";
23
23
  const selectionStateClassMap = {
24
24
  SELECTED: styles.selected,
25
25
  IMPLIED: styles.implied,
@@ -1 +1 @@
1
- {"version":3,"file":"MarkingButton.js","names":["Button","Tooltip","classnames","React","styles","getDisplayLabel","isDisallowed","selectionStateClassMap","SELECTED","selected","IMPLIED","implied","DISALLOWED","disallowed","IMPLIED_DISALLOWED","impliedDisallowed","NONE","undefined","getSelectionHint","state","MarkingButton","memo","id","label","description","selectionState","onToggle","disabled","handleToggle","useCallback","hasDescription","length","isButtonDisabled","showTooltip","hint","button","createElement","className","markingButton","onClick","title","Root","Trigger","render","Portal","Positioner","sideOffset","Popup","tooltip","tooltipTitle","tooltipDescription","tooltipHint"],"sources":["MarkingButton.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 { Tooltip } from \"@base-ui/react/tooltip\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport type { MarkingSelectionState } from \"../types.js\";\nimport styles from \"./MarkingButton.module.css\";\nimport { getDisplayLabel, isDisallowed } from \"./selectionStateHelpers.js\";\n\nexport interface MarkingButtonProps {\n id: string;\n label: string;\n description?: string;\n selectionState: MarkingSelectionState;\n onToggle: (markingId: string) => void;\n disabled?: boolean;\n}\n\nconst selectionStateClassMap: Record<\n MarkingSelectionState,\n string | undefined\n> = {\n SELECTED: styles.selected,\n IMPLIED: styles.implied,\n DISALLOWED: styles.disallowed,\n IMPLIED_DISALLOWED: styles.impliedDisallowed,\n NONE: undefined,\n};\n\nfunction getSelectionHint(state: MarkingSelectionState): string | undefined {\n switch (state) {\n case \"SELECTED\":\n return \"Click to deselect\";\n case \"IMPLIED\":\n return \"Implied by another marking\";\n case \"DISALLOWED\":\n case \"IMPLIED_DISALLOWED\":\n return \"Not available with current selection. Deselect your current choice first.\";\n case \"NONE\":\n return undefined;\n }\n}\n\nexport const MarkingButton: React.MemoExoticComponent<\n (props: MarkingButtonProps) => React.ReactElement\n> = React.memo(function MarkingButton({\n id,\n label,\n description,\n selectionState,\n onToggle,\n disabled,\n}: MarkingButtonProps): React.ReactElement {\n const handleToggle = React.useCallback(() => {\n onToggle(id);\n }, [onToggle, id]);\n\n const hasDescription = description !== undefined\n && description.length > 0;\n const isButtonDisabled = disabled ?? isDisallowed(selectionState);\n const showTooltip = hasDescription || isDisallowed(selectionState);\n const hint = getSelectionHint(selectionState);\n\n const button = (\n <Button\n className={classnames(\n styles.markingButton,\n selectionStateClassMap[selectionState],\n )}\n onClick={isButtonDisabled ? undefined : handleToggle}\n disabled={showTooltip ? undefined : isButtonDisabled}\n aria-disabled={showTooltip ? isButtonDisabled : undefined}\n aria-pressed={selectionState === \"SELECTED\"\n || selectionState === \"IMPLIED\"}\n title={showTooltip ? undefined : label}\n >\n {getDisplayLabel(label, selectionState)}\n </Button>\n );\n\n if (!showTooltip) {\n return button;\n }\n\n return (\n <Tooltip.Root>\n <Tooltip.Trigger render={button} />\n <Tooltip.Portal>\n <Tooltip.Positioner sideOffset={8}>\n <Tooltip.Popup className={styles.tooltip}>\n <p className={styles.tooltipTitle}>{label}</p>\n {hasDescription && (\n <p className={styles.tooltipDescription}>{description}</p>\n )}\n {hint != null && (\n <p className={styles.tooltipHint}>\n {hint}\n </p>\n )}\n </Tooltip.Popup>\n </Tooltip.Positioner>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n});\n"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"file":"MarkingButton.js","names":["Button","Tooltip","classnames","React","getDisplayLabel","isDisallowed","styles","selectionStateClassMap","SELECTED","selected","IMPLIED","implied","DISALLOWED","disallowed","IMPLIED_DISALLOWED","impliedDisallowed","NONE","undefined","getSelectionHint","state","MarkingButton","memo","id","label","description","selectionState","onToggle","disabled","handleToggle","useCallback","hasDescription","length","isButtonDisabled","showTooltip","hint","button","createElement","className","markingButton","onClick","title","Root","Trigger","render","Portal","Positioner","sideOffset","Popup","tooltip","tooltipTitle","tooltipDescription","tooltipHint"],"sources":["MarkingButton.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 { Tooltip } from \"@base-ui/react/tooltip\";\nimport classnames from \"classnames\";\nimport React from \"react\";\n\nimport type { MarkingSelectionState } from \"../types.js\";\nimport { getDisplayLabel, isDisallowed } from \"./selectionStateHelpers.js\";\n\nimport styles from \"./MarkingButton.module.css\";\n\nexport interface MarkingButtonProps {\n id: string;\n label: string;\n description?: string;\n selectionState: MarkingSelectionState;\n onToggle: (markingId: string) => void;\n disabled?: boolean;\n}\n\nconst selectionStateClassMap: Record<\n MarkingSelectionState,\n string | undefined\n> = {\n SELECTED: styles.selected,\n IMPLIED: styles.implied,\n DISALLOWED: styles.disallowed,\n IMPLIED_DISALLOWED: styles.impliedDisallowed,\n NONE: undefined,\n};\n\nfunction getSelectionHint(state: MarkingSelectionState): string | undefined {\n switch (state) {\n case \"SELECTED\":\n return \"Click to deselect\";\n case \"IMPLIED\":\n return \"Implied by another marking\";\n case \"DISALLOWED\":\n case \"IMPLIED_DISALLOWED\":\n return \"Not available with current selection. Deselect your current choice first.\";\n case \"NONE\":\n return undefined;\n }\n}\n\nexport const MarkingButton: React.MemoExoticComponent<\n (props: MarkingButtonProps) => React.ReactElement\n> = React.memo(function MarkingButton({\n id,\n label,\n description,\n selectionState,\n onToggle,\n disabled,\n}: MarkingButtonProps): React.ReactElement {\n const handleToggle = React.useCallback(() => {\n onToggle(id);\n }, [onToggle, id]);\n\n const hasDescription = description !== undefined && description.length > 0;\n const isButtonDisabled = disabled ?? isDisallowed(selectionState);\n const showTooltip = hasDescription || isDisallowed(selectionState);\n const hint = getSelectionHint(selectionState);\n\n const button = (\n <Button\n className={classnames(\n styles.markingButton,\n selectionStateClassMap[selectionState]\n )}\n onClick={isButtonDisabled ? undefined : handleToggle}\n disabled={showTooltip ? undefined : isButtonDisabled}\n aria-disabled={showTooltip ? isButtonDisabled : undefined}\n aria-pressed={\n selectionState === \"SELECTED\" || selectionState === \"IMPLIED\"\n }\n title={showTooltip ? undefined : label}\n >\n {getDisplayLabel(label, selectionState)}\n </Button>\n );\n\n if (!showTooltip) {\n return button;\n }\n\n return (\n <Tooltip.Root>\n <Tooltip.Trigger render={button} />\n <Tooltip.Portal>\n <Tooltip.Positioner sideOffset={8}>\n <Tooltip.Popup className={styles.tooltip}>\n <p className={styles.tooltipTitle}>{label}</p>\n {hasDescription && (\n <p className={styles.tooltipDescription}>{description}</p>\n )}\n {hint != null && <p className={styles.tooltipHint}>{hint}</p>}\n </Tooltip.Popup>\n </Tooltip.Positioner>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n});\n"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"MaxClassificationField.js","names":["classnames","React","BaseCbacBanner","styles","MaxClassificationField","classificationString","textColor","backgroundColors","helperText","className","createElement","container","label","bannerWrapper"],"sources":["MaxClassificationField.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 { BaseCbacBanner } from \"./BaseCbacBanner.js\";\nimport styles from \"./MaxClassificationField.module.css\";\n\nexport interface MaxClassificationFieldProps {\n classificationString: string;\n textColor: string;\n backgroundColors: string[];\n helperText?: string;\n className?: string;\n}\n\nexport function MaxClassificationField({\n classificationString,\n textColor,\n backgroundColors,\n helperText,\n className,\n}: MaxClassificationFieldProps): React.ReactElement {\n return (\n <div className={classnames(styles.container, className)}>\n <p className={styles.label}>Maximum allowed classification</p>\n <div className={styles.bannerWrapper}>\n <BaseCbacBanner\n classificationString={classificationString}\n textColor={textColor}\n backgroundColors={backgroundColors}\n />\n </div>\n {helperText != null && <p className={styles.helperText}>{helperText}</p>}\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,MAAM,OAAO;AACzB,SAASC,cAAc,QAAQ,qBAAqB;AACpD,OAAOC,MAAM,MAAM,qCAAqC;AAUxD,OAAO,SAASC,sBAAsBA,CAAC;EACrCC,oBAAoB;EACpBC,SAAS;EACTC,gBAAgB;EAChBC,UAAU;EACVC;AAC2B,CAAC,EAAsB;EAClD,oBACER,KAAA,CAAAS,aAAA;IAAKD,SAAS,EAAET,UAAU,CAACG,MAAM,CAACQ,SAAS,EAAEF,SAAS;EAAE,gBACtDR,KAAA,CAAAS,aAAA;IAAGD,SAAS,EAAEN,MAAM,CAACS;EAAM,GAAC,gCAAiC,CAAC,eAC9DX,KAAA,CAAAS,aAAA;IAAKD,SAAS,EAAEN,MAAM,CAACU;EAAc,gBACnCZ,KAAA,CAAAS,aAAA,CAACR,cAAc;IACbG,oBAAoB,EAAEA,oBAAqB;IAC3CC,SAAS,EAAEA,SAAU;IACrBC,gBAAgB,EAAEA;EAAiB,CACpC,CACE,CAAC,EACLC,UAAU,IAAI,IAAI,iBAAIP,KAAA,CAAAS,aAAA;IAAGD,SAAS,EAAEN,MAAM,CAACK;EAAW,GAAEA,UAAc,CACpE,CAAC;AAEV","ignoreList":[]}
1
+ {"version":3,"file":"MaxClassificationField.js","names":["classnames","React","BaseCbacBanner","styles","MaxClassificationField","classificationString","textColor","backgroundColors","helperText","className","createElement","container","label","bannerWrapper"],"sources":["MaxClassificationField.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\";\n\nimport { BaseCbacBanner } from \"./BaseCbacBanner.js\";\n\nimport styles from \"./MaxClassificationField.module.css\";\n\nexport interface MaxClassificationFieldProps {\n classificationString: string;\n textColor: string;\n backgroundColors: string[];\n helperText?: string;\n className?: string;\n}\n\nexport function MaxClassificationField({\n classificationString,\n textColor,\n backgroundColors,\n helperText,\n className,\n}: MaxClassificationFieldProps): React.ReactElement {\n return (\n <div className={classnames(styles.container, className)}>\n <p className={styles.label}>Maximum allowed classification</p>\n <div className={styles.bannerWrapper}>\n <BaseCbacBanner\n classificationString={classificationString}\n textColor={textColor}\n backgroundColors={backgroundColors}\n />\n </div>\n {helperText != null && <p className={styles.helperText}>{helperText}</p>}\n </div>\n );\n}\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,OAAOA,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,MAAM,OAAO;AAEzB,SAASC,cAAc,QAAQ,qBAAqB;AAEpD,OAAOC,MAAM,MAAM,qCAAqC;AAUxD,OAAO,SAASC,sBAAsBA,CAAC;EACrCC,oBAAoB;EACpBC,SAAS;EACTC,gBAAgB;EAChBC,UAAU;EACVC;AAC2B,CAAC,EAAsB;EAClD,oBACER,KAAA,CAAAS,aAAA;IAAKD,SAAS,EAAET,UAAU,CAACG,MAAM,CAACQ,SAAS,EAAEF,SAAS;EAAE,gBACtDR,KAAA,CAAAS,aAAA;IAAGD,SAAS,EAAEN,MAAM,CAACS;EAAM,GAAC,gCAAiC,CAAC,eAC9DX,KAAA,CAAAS,aAAA;IAAKD,SAAS,EAAEN,MAAM,CAACU;EAAc,gBACnCZ,KAAA,CAAAS,aAAA,CAACR,cAAc;IACbG,oBAAoB,EAAEA,oBAAqB;IAC3CC,SAAS,EAAEA,SAAU;IACrBC,gBAAgB,EAAEA;EAAiB,CACpC,CACE,CAAC,EACLC,UAAU,IAAI,IAAI,iBAAIP,KAAA,CAAAS,aAAA;IAAGD,SAAS,EAAEN,MAAM,CAACK;EAAW,GAAEA,UAAc,CACpE,CAAC;AAEV","ignoreList":[]}
@@ -18,8 +18,8 @@ import { Button } from "@base-ui/react/button";
18
18
  import { Popover } from "@base-ui/react/popover";
19
19
  import classnames from "classnames";
20
20
  import React from "react";
21
- import styles from "./OverflowButton.module.css.js";
22
21
  import { OverflowItem } from "./OverflowItem.js";
22
+ import styles from "./OverflowButton.module.css.js";
23
23
  export function OverflowButton({
24
24
  overflowMarkings,
25
25
  hasActiveOverflow,
@@ -1 +1 @@
1
- {"version":3,"file":"OverflowButton.js","names":["Button","Popover","classnames","React","styles","OverflowItem","OverflowButton","overflowMarkings","hasActiveOverflow","onMarkingToggle","open","setOpen","useState","createElement","Root","onOpenChange","Trigger","render","className","moreButton","moreButtonActive","length","Portal","Positioner","side","align","Popup","overflowList","map","marking","key","id","label","description","selectionState","disabled","onToggle"],"sources":["OverflowButton.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 { Popover } from \"@base-ui/react/popover\";\nimport classnames from \"classnames\";\nimport React from \"react\";\nimport type { MarkingSelectionState } from \"../types.js\";\nimport styles from \"./OverflowButton.module.css\";\nimport { OverflowItem } from \"./OverflowItem.js\";\n\nexport interface OverflowButtonProps {\n overflowMarkings: ReadonlyArray<{\n id: string;\n label: string;\n description?: string;\n selectionState: MarkingSelectionState;\n disabled?: boolean;\n }>;\n hasActiveOverflow: boolean;\n onMarkingToggle: (markingId: string) => void;\n}\n\nexport function OverflowButton({\n overflowMarkings,\n hasActiveOverflow,\n onMarkingToggle,\n}: OverflowButtonProps): React.ReactElement {\n const [open, setOpen] = React.useState(false);\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger\n render={\n <Button\n className={classnames(\n styles.moreButton,\n hasActiveOverflow && styles.moreButtonActive,\n )}\n >\n +{overflowMarkings.length} more\n </Button>\n }\n />\n <Popover.Portal>\n <Popover.Positioner side=\"bottom\" align=\"start\">\n <Popover.Popup className={styles.overflowList}>\n {overflowMarkings.map((marking) => (\n <OverflowItem\n key={marking.id}\n id={marking.id}\n label={marking.label}\n description={marking.description}\n selectionState={marking.selectionState}\n disabled={marking.disabled}\n onToggle={onMarkingToggle}\n />\n ))}\n </Popover.Popup>\n </Popover.Positioner>\n </Popover.Portal>\n </Popover.Root>\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,OAAO,QAAQ,wBAAwB;AAChD,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,MAAM,OAAO;AAEzB,OAAOC,MAAM,MAAM,6BAA6B;AAChD,SAASC,YAAY,QAAQ,mBAAmB;AAchD,OAAO,SAASC,cAAcA,CAAC;EAC7BC,gBAAgB;EAChBC,iBAAiB;EACjBC;AACmB,CAAC,EAAsB;EAC1C,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGR,KAAK,CAACS,QAAQ,CAAC,KAAK,CAAC;EAE7C,oBACET,KAAA,CAAAU,aAAA,CAACZ,OAAO,CAACa,IAAI;IAACJ,IAAI,EAAEA,IAAK;IAACK,YAAY,EAAEJ;EAAQ,gBAC9CR,KAAA,CAAAU,aAAA,CAACZ,OAAO,CAACe,OAAO;IACdC,MAAM,eACJd,KAAA,CAAAU,aAAA,CAACb,MAAM;MACLkB,SAAS,EAAEhB,UAAU,CACnBE,MAAM,CAACe,UAAU,EACjBX,iBAAiB,IAAIJ,MAAM,CAACgB,gBAC9B;IAAE,GACH,GACE,EAACb,gBAAgB,CAACc,MAAM,EAAC,OACpB;EACT,CACF,CAAC,eACFlB,KAAA,CAAAU,aAAA,CAACZ,OAAO,CAACqB,MAAM,qBACbnB,KAAA,CAAAU,aAAA,CAACZ,OAAO,CAACsB,UAAU;IAACC,IAAI,EAAC,QAAQ;IAACC,KAAK,EAAC;EAAO,gBAC7CtB,KAAA,CAAAU,aAAA,CAACZ,OAAO,CAACyB,KAAK;IAACR,SAAS,EAAEd,MAAM,CAACuB;EAAa,GAC3CpB,gBAAgB,CAACqB,GAAG,CAAEC,OAAO,iBAC5B1B,KAAA,CAAAU,aAAA,CAACR,YAAY;IACXyB,GAAG,EAAED,OAAO,CAACE,EAAG;IAChBA,EAAE,EAAEF,OAAO,CAACE,EAAG;IACfC,KAAK,EAAEH,OAAO,CAACG,KAAM;IACrBC,WAAW,EAAEJ,OAAO,CAACI,WAAY;IACjCC,cAAc,EAAEL,OAAO,CAACK,cAAe;IACvCC,QAAQ,EAAEN,OAAO,CAACM,QAAS;IAC3BC,QAAQ,EAAE3B;EAAgB,CAC3B,CACF,CACY,CACG,CACN,CACJ,CAAC;AAEnB","ignoreList":[]}
1
+ {"version":3,"file":"OverflowButton.js","names":["Button","Popover","classnames","React","OverflowItem","styles","OverflowButton","overflowMarkings","hasActiveOverflow","onMarkingToggle","open","setOpen","useState","createElement","Root","onOpenChange","Trigger","render","className","moreButton","moreButtonActive","length","Portal","Positioner","side","align","Popup","overflowList","map","marking","key","id","label","description","selectionState","disabled","onToggle"],"sources":["OverflowButton.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 { Popover } from \"@base-ui/react/popover\";\nimport classnames from \"classnames\";\nimport React from \"react\";\n\nimport type { MarkingSelectionState } from \"../types.js\";\nimport { OverflowItem } from \"./OverflowItem.js\";\n\nimport styles from \"./OverflowButton.module.css\";\n\nexport interface OverflowButtonProps {\n overflowMarkings: ReadonlyArray<{\n id: string;\n label: string;\n description?: string;\n selectionState: MarkingSelectionState;\n disabled?: boolean;\n }>;\n hasActiveOverflow: boolean;\n onMarkingToggle: (markingId: string) => void;\n}\n\nexport function OverflowButton({\n overflowMarkings,\n hasActiveOverflow,\n onMarkingToggle,\n}: OverflowButtonProps): React.ReactElement {\n const [open, setOpen] = React.useState(false);\n\n return (\n <Popover.Root open={open} onOpenChange={setOpen}>\n <Popover.Trigger\n render={\n <Button\n className={classnames(\n styles.moreButton,\n hasActiveOverflow && styles.moreButtonActive\n )}\n >\n +{overflowMarkings.length} more\n </Button>\n }\n />\n <Popover.Portal>\n <Popover.Positioner side=\"bottom\" align=\"start\">\n <Popover.Popup className={styles.overflowList}>\n {overflowMarkings.map((marking) => (\n <OverflowItem\n key={marking.id}\n id={marking.id}\n label={marking.label}\n description={marking.description}\n selectionState={marking.selectionState}\n disabled={marking.disabled}\n onToggle={onMarkingToggle}\n />\n ))}\n </Popover.Popup>\n </Popover.Positioner>\n </Popover.Portal>\n </Popover.Root>\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,OAAO,QAAQ,wBAAwB;AAChD,OAAOC,UAAU,MAAM,YAAY;AACnC,OAAOC,KAAK,MAAM,OAAO;AAGzB,SAASC,YAAY,QAAQ,mBAAmB;AAEhD,OAAOC,MAAM,MAAM,6BAA6B;AAchD,OAAO,SAASC,cAAcA,CAAC;EAC7BC,gBAAgB;EAChBC,iBAAiB;EACjBC;AACmB,CAAC,EAAsB;EAC1C,MAAM,CAACC,IAAI,EAAEC,OAAO,CAAC,GAAGR,KAAK,CAACS,QAAQ,CAAC,KAAK,CAAC;EAE7C,oBACET,KAAA,CAAAU,aAAA,CAACZ,OAAO,CAACa,IAAI;IAACJ,IAAI,EAAEA,IAAK;IAACK,YAAY,EAAEJ;EAAQ,gBAC9CR,KAAA,CAAAU,aAAA,CAACZ,OAAO,CAACe,OAAO;IACdC,MAAM,eACJd,KAAA,CAAAU,aAAA,CAACb,MAAM;MACLkB,SAAS,EAAEhB,UAAU,CACnBG,MAAM,CAACc,UAAU,EACjBX,iBAAiB,IAAIH,MAAM,CAACe,gBAC9B;IAAE,GACH,GACE,EAACb,gBAAgB,CAACc,MAAM,EAAC,OACpB;EACT,CACF,CAAC,eACFlB,KAAA,CAAAU,aAAA,CAACZ,OAAO,CAACqB,MAAM,qBACbnB,KAAA,CAAAU,aAAA,CAACZ,OAAO,CAACsB,UAAU;IAACC,IAAI,EAAC,QAAQ;IAACC,KAAK,EAAC;EAAO,gBAC7CtB,KAAA,CAAAU,aAAA,CAACZ,OAAO,CAACyB,KAAK;IAACR,SAAS,EAAEb,MAAM,CAACsB;EAAa,GAC3CpB,gBAAgB,CAACqB,GAAG,CAAEC,OAAO,iBAC5B1B,KAAA,CAAAU,aAAA,CAACT,YAAY;IACX0B,GAAG,EAAED,OAAO,CAACE,EAAG;IAChBA,EAAE,EAAEF,OAAO,CAACE,EAAG;IACfC,KAAK,EAAEH,OAAO,CAACG,KAAM;IACrBC,WAAW,EAAEJ,OAAO,CAACI,WAAY;IACjCC,cAAc,EAAEL,OAAO,CAACK,cAAe;IACvCC,QAAQ,EAAEN,OAAO,CAACM,QAAS;IAC3BC,QAAQ,EAAE3B;EAAgB,CAC3B,CACF,CACY,CACG,CACN,CACJ,CAAC;AAEnB","ignoreList":[]}
@@ -18,8 +18,8 @@ import { Button } from "@base-ui/react/button";
18
18
  import { Tooltip } from "@base-ui/react/tooltip";
19
19
  import classnames from "classnames";
20
20
  import React from "react";
21
- import styles from "./OverflowItem.module.css.js";
22
21
  import { getDisplayLabel, getTooltipText, isDisallowed, isImplied } from "./selectionStateHelpers.js";
22
+ import styles from "./OverflowItem.module.css.js";
23
23
  export const OverflowItem = /*#__PURE__*/React.memo(function ({
24
24
  id,
25
25
  label,