@xh/hoist 79.0.0-SNAPSHOT.1767029174152 → 79.0.0-SNAPSHOT.1767046009354

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 (54) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/admin/App.scss +1 -1
  3. package/appcontainer/ThemeModel.ts +1 -1
  4. package/build/types/desktop/cmp/input/DateInput.d.ts +1 -1
  5. package/build/types/desktop/hooks/UseContextMenu.d.ts +1 -1
  6. package/build/types/kit/blueprint/Wrappers.d.ts +2 -2
  7. package/build/types/kit/blueprint/index.d.ts +0 -1
  8. package/cmp/ag-grid/AgGrid.scss +1 -1
  9. package/cmp/chart/Chart.scss +1 -1
  10. package/desktop/appcontainer/ExceptionDialog.scss +1 -1
  11. package/desktop/appcontainer/LoginPanel.scss +1 -1
  12. package/desktop/appcontainer/Message.scss +1 -1
  13. package/desktop/appcontainer/Toast.scss +3 -3
  14. package/desktop/appcontainer/ToastSource.ts +2 -45
  15. package/desktop/cmp/appbar/AppBar.scss +10 -10
  16. package/desktop/cmp/button/Button.scss +11 -11
  17. package/desktop/cmp/dash/canvas/DashCanvas.scss +1 -1
  18. package/desktop/cmp/dash/canvas/DashCanvas.ts +1 -2
  19. package/desktop/cmp/dash/container/DashContainer.scss +1 -1
  20. package/desktop/cmp/dash/container/DashContainerModel.ts +1 -1
  21. package/desktop/cmp/dock/impl/Dock.scss +1 -1
  22. package/desktop/cmp/filter/FilterChooser.scss +1 -1
  23. package/desktop/cmp/filter/PopoverFilterChooser.scss +3 -3
  24. package/desktop/cmp/form/FormField.scss +4 -4
  25. package/desktop/cmp/grid/columns/Actions.ts +1 -1
  26. package/desktop/cmp/grid/editors/Editors.scss +4 -4
  27. package/desktop/cmp/grid/find/GridFindField.scss +1 -1
  28. package/desktop/cmp/grid/impl/filter/headerfilter/custom/CustomTab.scss +2 -2
  29. package/desktop/cmp/grid/impl/filter/headerfilter/values/ValuesTab.scss +2 -2
  30. package/desktop/cmp/grouping/GroupingChooser.scss +3 -3
  31. package/desktop/cmp/input/Checkbox.scss +1 -1
  32. package/desktop/cmp/input/DateInput.scss +3 -3
  33. package/desktop/cmp/input/DateInput.ts +1 -1
  34. package/desktop/cmp/input/RadioInput.scss +2 -2
  35. package/desktop/cmp/input/Select.ts +1 -1
  36. package/desktop/cmp/input/Slider.scss +1 -1
  37. package/desktop/cmp/input/Slider.ts +1 -1
  38. package/desktop/cmp/input/SwitchInput.scss +1 -1
  39. package/desktop/cmp/mask/impl/Mask.scss +1 -1
  40. package/desktop/cmp/panel/impl/PanelHeader.scss +1 -1
  41. package/desktop/cmp/tab/TabSwitcher.ts +1 -1
  42. package/desktop/cmp/tab/Tabs.scss +7 -7
  43. package/desktop/cmp/tab/dynamic/DynamicTabSwitcher.scss +1 -1
  44. package/desktop/cmp/tab/dynamic/DynamicTabSwitcher.ts +4 -4
  45. package/desktop/cmp/toolbar/Toolbar.scss +16 -16
  46. package/desktop/hooks/UseContextMenu.ts +1 -1
  47. package/kit/blueprint/ContextMenu.ts +1 -12
  48. package/kit/blueprint/Dialog.ts +3 -3
  49. package/kit/blueprint/Wrappers.ts +1 -1
  50. package/kit/blueprint/index.ts +2 -5
  51. package/kit/blueprint/styles.scss +79 -75
  52. package/package.json +3 -4
  53. package/styles/XH.scss +2 -2
  54. package/tsconfig.tsbuildinfo +1 -1
package/CHANGELOG.md CHANGED
@@ -17,6 +17,9 @@
17
17
 
18
18
  ### 💥 Breaking Changes
19
19
 
20
+ * Blueprint has been upgraded from version 5 to version 6. Most apps will not need to change,
21
+ but see https://github.com/palantir/blueprint/wiki/Blueprint-6.0 for more details. Also note that
22
+ any custom css overrides to blueprint will need to be updated to refer to `bp6` instead of `bp5`.
20
23
  * Renamed `LoadSupport.loadModel` to `LoadSupport.loadObserver` for clarity. This property is a
21
24
  `TaskObserver` instance, not a `HoistModel`. The getter methods `HoistModel.loadModel` and
22
25
  `HoistService.loadModel` remain as aliases but are now deprecated and scheduled for removal in
@@ -37,6 +40,7 @@
37
40
  * `DashCanvasModel.containerPadding` is now applied to the `react-grid-layout` div by RGL, not to the
38
41
  hoist-react provided containing div. This may affect printing layouts.
39
42
 
43
+
40
44
  ### 🐞 Bug Fixes
41
45
 
42
46
  * Fixed column chooser to display columns in the same order as they appear in the grid.
@@ -56,10 +60,15 @@
56
60
  * Improved the efficiency and logging of MsalClient.
57
61
  * Improved protections against running stale versions of client app code.
58
62
 
63
+ * Grid performance optimizations introduced on an experimental basis. See
64
+ `GridExperimentalFlags.deltaSort` and `GridExperimentalFlags.disableScrollOptimization`
65
+
59
66
 
60
67
  ### 📚 Libraries
61
68
  * react-grid-layout `1.5.0 → 2.1.1`
62
69
  * hoist-core `35.0.0`
70
+ * @blueprintjs/core: 5.10.5 -> 6.3.2 ,
71
+ * @blueprintjs/datetime: 5.3.7 -> 6.0.6,
63
72
 
64
73
  ## 78.1.4 - 2025-12-05
65
74
 
package/admin/App.scss CHANGED
@@ -12,7 +12,7 @@
12
12
  background-color: var(--xh-grid-bg-odd);
13
13
  border-right: var(--xh-border-solid);
14
14
 
15
- .bp5-tab {
15
+ .bp6-tab {
16
16
  border-radius: 0 !important;
17
17
  }
18
18
 
@@ -30,7 +30,7 @@ export class ThemeModel extends HoistModel {
30
30
  setDarkTheme(value: boolean) {
31
31
  const classList = document.body.classList;
32
32
  classList.toggle('xh-dark', value);
33
- classList.toggle('bp5-dark', value);
33
+ classList.toggle('bp6-dark', value);
34
34
  this.darkTheme = value;
35
35
  }
36
36
 
@@ -1,6 +1,6 @@
1
1
  import { PopperBoundary, PopperModifierOverrides } from '@blueprintjs/core';
2
2
  import { TimePickerProps } from '@blueprintjs/datetime';
3
- import { ReactDayPickerSingleProps } from '@blueprintjs/datetime2/src/common/reactDayPickerProps';
3
+ import { ReactDayPickerSingleProps } from '@blueprintjs/datetime/src/common/reactDayPickerProps';
4
4
  import { HoistInputProps } from '@xh/hoist/cmp/input';
5
5
  import { HoistProps, LayoutProps, Some } from '@xh/hoist/core';
6
6
  import '@xh/hoist/desktop/register';
@@ -1,4 +1,4 @@
1
- import type { ContextMenuSpec } from '@xh/hoist/core';
1
+ import { ContextMenuSpec } from '@xh/hoist/core';
2
2
  import { ReactElement } from 'react';
3
3
  /**
4
4
  * Hook to add a right-click context menu to a component.
@@ -1,5 +1,5 @@
1
1
  import { Alert, Button, ButtonGroup, Callout, Card, Checkbox, ControlGroup, Dialog, Drawer, EditableText, FileInput, FormGroup, Hotkey, Hotkeys, InputGroup, Label, Menu, MenuDivider, MenuItem, Navbar, NavbarDivider, NavbarGroup, NavbarHeading, NumericInput, OverflowList, Overlay2 as Overlay, Popover, Radio, RadioGroup, RangeSlider, Slider, Switch, Tab, Tabs, Tag, TagInput, Text, TextArea, Tooltip, Tree } from '@blueprintjs/core';
2
- import { DatePicker3 as DatePicker } from '@blueprintjs/datetime2';
2
+ import { DatePicker } from '@blueprintjs/datetime';
3
3
  export { Alert, Button, ButtonGroup, Callout, Card, Checkbox, ControlGroup, DatePicker, Dialog, Drawer, EditableText, FileInput, FormGroup, Hotkeys, Hotkey, InputGroup, Label, Menu, MenuItem, MenuDivider, Navbar, NavbarDivider, NavbarGroup, NavbarHeading, NumericInput, OverflowList, Overlay, Popover, Radio, RadioGroup, RangeSlider, Slider, Switch, Tab, Tabs, Tag, TagInput, TextArea, Text, Tooltip, Tree };
4
- export declare const alert: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").AlertProps>, button: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").ButtonProps>, controlGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").ControlGroupProps>, checkbox: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").CheckboxProps>, dialog: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").DialogProps>, datePicker: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/datetime2").DatePicker3Props>, menuDivider: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").MenuDividerProps>, menuItem: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").MenuItemProps>, navbarDivider: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").NavbarDividerProps>, numericInput: import("@xh/hoist/core").ElementFactory<Omit<import("@blueprintjs/core").HTMLInputProps, "size"> & import("@blueprintjs/core").NumericInputProps>, overflowList: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").OverflowListProps<any>>, popover: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").PopoverProps<import("@blueprintjs/core").DefaultPopoverTargetHTMLProps>>, radio: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").ControlProps>, rangeSlider: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").RangeSliderProps>, slider: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").SliderProps>, switchControl: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").SwitchProps>, textArea: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TextAreaProps>, tree: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TreeProps<unknown>>, tagInput: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TagInputProps>, fileInput: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").FileInputProps>, overlay: import("@xh/hoist/core").ElementFactory<Omit<import("@blueprintjs/core").Overlay2Props, "ref"> & import("react").RefAttributes<import("@blueprintjs/core").OverlayInstance>>, tooltip: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TooltipProps<import("@blueprintjs/core").DefaultPopoverTargetHTMLProps>>;
4
+ export declare const alert: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").AlertProps>, button: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").ButtonProps>, controlGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").ControlGroupProps>, checkbox: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").CheckboxProps>, dialog: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").DialogProps>, datePicker: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/datetime").DatePickerProps>, menuDivider: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").MenuDividerProps>, menuItem: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").MenuItemProps>, navbarDivider: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").NavbarDividerProps>, numericInput: import("@xh/hoist/core").ElementFactory<Omit<import("@blueprintjs/core").HTMLInputProps, "size"> & import("@blueprintjs/core").NumericInputProps>, overflowList: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").OverflowListProps<any>>, popover: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").PopoverProps<import("@blueprintjs/core").DefaultPopoverTargetHTMLProps>>, radio: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").ControlProps>, rangeSlider: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").RangeSliderProps>, slider: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").SliderProps>, switchControl: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").SwitchProps>, textArea: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TextAreaProps>, tree: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TreeProps<unknown>>, tagInput: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TagInputProps>, fileInput: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").FileInputProps>, overlay: import("@xh/hoist/core").ElementFactory<Omit<import("@blueprintjs/core").Overlay2Props, "ref"> & import("react").RefAttributes<import("@blueprintjs/core").OverlayInstance>>, tooltip: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TooltipProps<import("@blueprintjs/core").DefaultPopoverTargetHTMLProps>>;
5
5
  export declare const buttonGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").ButtonGroupProps>, callout: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").CalloutProps>, card: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").CardProps>, drawer: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").DrawerProps>, editableText: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").EditableTextProps>, formGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").FormGroupProps>, hotkey: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").HotkeyProps>, hotkeys: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").HotkeysProps>, inputGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").InputGroupProps>, label: import("@xh/hoist/core").ElementFactory<import("react").AllHTMLAttributes<HTMLLabelElement> & import("react").RefAttributes<HTMLLabelElement>>, menu: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").MenuProps>, navbar: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").NavbarProps>, navbarHeading: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").NavbarHeadingProps>, navbarGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").NavbarGroupProps>, radioGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").RadioGroupProps>, tabs: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TabsProps>, tab: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TabProps>, tag: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TagProps>, text: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TextProps>;
@@ -1,7 +1,6 @@
1
1
  import { Classes, type HotkeyConfig, OverlayToaster, PopoverInteractionKind, Position, type ToasterPosition, useHotkeys } from '@blueprintjs/core';
2
2
  import '@blueprintjs/core/lib/css/blueprint.css';
3
3
  import '@blueprintjs/datetime/lib/css/blueprint-datetime.css';
4
- import '@blueprintjs/datetime2/lib/css/blueprint-datetime2.css';
5
4
  import './styles.scss';
6
5
  export { useHotkeys, HotkeyConfig, Classes, PopoverInteractionKind, Position, OverlayToaster, ToasterPosition };
7
6
  export * from './Wrappers';
@@ -446,7 +446,7 @@
446
446
  }
447
447
 
448
448
  // Set Blueprint controls - specifically checkboxes - to match grid size.
449
- .bp5-control .bp5-control-indicator {
449
+ .bp6-control .bp6-control-indicator {
450
450
  font-size: 1em;
451
451
  }
452
452
  }
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  // Allows inside of chart navigator mask to be draggable.
9
- .bp5-dialog .xh-chart {
9
+ .bp6-dialog .xh-chart {
10
10
  pointer-events: auto;
11
11
  }
12
12
 
@@ -7,7 +7,7 @@
7
7
  .xh-exception-dialog {
8
8
  max-height: 80vh;
9
9
 
10
- .bp5-dialog-body {
10
+ .bp6-dialog-body {
11
11
  max-height: inherit;
12
12
  overflow-y: auto;
13
13
  }
@@ -9,7 +9,7 @@
9
9
  border: var(--xh-border-solid);
10
10
  border-radius: var(--xh-border-radius-px);
11
11
 
12
- .bp5-input-group {
12
+ .bp6-input-group {
13
13
  margin: 0 var(--xh-pad-px) var(--xh-pad-px) var(--xh-pad-px);
14
14
  }
15
15
 
@@ -11,7 +11,7 @@
11
11
 
12
12
  .xh-message {
13
13
  max-height: 90vh;
14
- .bp5-dialog-body {
14
+ .bp6-dialog-body {
15
15
  overflow-y: auto;
16
16
  }
17
17
  }
@@ -29,16 +29,16 @@
29
29
  margin: 0 0 0 var(--xh-pad-half-px);
30
30
  }
31
31
 
32
- .bp5-toast-message {
32
+ .bp6-toast-message {
33
33
  overflow-wrap: break-word;
34
34
  }
35
35
 
36
36
  // High level of specificity here required to override built-in BP styles
37
- &.bp5-toast .bp5-button {
37
+ &.bp6-toast .bp6-button {
38
38
  background: none !important;
39
39
  color: white !important;
40
40
 
41
- .bp5-icon {
41
+ .bp6-icon {
42
42
  color: white !important;
43
43
  }
44
44
  }
@@ -4,26 +4,14 @@
4
4
  *
5
5
  * Copyright © 2025 Extremely Heavy Industries Inc.
6
6
  */
7
- import {OverlayToasterProps} from '@blueprintjs/core';
8
7
  import {ToastModel} from '@xh/hoist/appcontainer/ToastModel';
9
8
  import {ToastSourceModel} from '@xh/hoist/appcontainer/ToastSourceModel';
10
9
  import {div} from '@xh/hoist/cmp/layout';
11
- import {
12
- elementFactory,
13
- hoistCmp,
14
- HoistModel,
15
- lookup,
16
- PlainObject,
17
- useLocalModel,
18
- uses,
19
- XH
20
- } from '@xh/hoist/core';
10
+ import {hoistCmp, HoistModel, lookup, useLocalModel, uses} from '@xh/hoist/core';
21
11
  import {OverlayToaster, ToasterPosition} from '@xh/hoist/kit/blueprint';
22
12
  import {getOrCreate} from '@xh/hoist/utils/js';
23
13
  import classNames from 'classnames';
24
14
  import {isElement, map} from 'lodash';
25
- import {RefAttributes} from 'react';
26
- import {createRoot} from 'react-dom/client';
27
15
  import {wait} from '../../promise';
28
16
  import './Toast.scss';
29
17
 
@@ -108,39 +96,8 @@ class ToastSourceLocalModel extends HoistModel {
108
96
  const toasterMap = this._toasterMap,
109
97
  toasters = getOrCreate(toasterMap, container, () => ({}));
110
98
  if (!toasters[position]) {
111
- toasters[position] = await this.createToaster({position, className}, container);
99
+ toasters[position] = await OverlayToaster.create({position, className}, {container});
112
100
  }
113
101
  return toasters[position];
114
102
  }
115
-
116
- /**
117
- * Workaround to avoid calling OverlayToaster.create(). It uses ReactDOM.render
118
- * that gives a warning because it is deprecated in React 18.
119
- *
120
- * The use of ReactDOM.render set to be removed from OverlayToaster.create() in Blueprint v6.0
121
- * https://github.com/palantir/blueprint/issues/5212#issuecomment-1294958195
122
- */
123
- private createToaster(props: PlainObject, container: HTMLElement): Promise<OverlayToaster> {
124
- const containerElement = document.createElement('div');
125
- container.appendChild(containerElement);
126
- const root = createRoot(containerElement);
127
- return new Promise((resolve, reject) => {
128
- root.render(
129
- overlayToaster({
130
- ...props,
131
- usePortal: false,
132
- ref: instance => {
133
- instance
134
- ? resolve(instance)
135
- : reject(XH.exception('Unable to create Blueprint toaster.'));
136
- }
137
- })
138
- );
139
- });
140
- }
141
103
  }
142
-
143
- // `OverlayToasterProps` does not include `ref` prop, so we need to add it manually
144
- const overlayToaster = elementFactory<OverlayToasterProps & RefAttributes<OverlayToaster>>(
145
- OverlayToaster
146
- );
@@ -25,8 +25,8 @@
25
25
  //------------------------
26
26
  // Blueprint overrides
27
27
  //------------------------
28
- .bp5-navbar,
29
- .bp5-dark .bp5-navbar {
28
+ .bp6-navbar,
29
+ .bp6-dark .bp6-navbar {
30
30
  display: flex;
31
31
  align-items: center;
32
32
  flex-wrap: nowrap;
@@ -40,7 +40,7 @@
40
40
  // Curiously, Admin Log Viewer would cause appbar to shrink without min-height
41
41
  min-height: var(--xh-appbar-height-px);
42
42
 
43
- .bp5-navbar-divider {
43
+ .bp6-navbar-divider {
44
44
  border-left-color: var(--xh-tbar-separator-color);
45
45
  }
46
46
 
@@ -49,17 +49,17 @@
49
49
  flex-shrink: 0;
50
50
  }
51
51
 
52
- .bp5-navbar-heading {
52
+ .bp6-navbar-heading {
53
53
  color: var(--xh-appbar-title-color);
54
54
  font-size: var(--xh-appbar-title-font-size-px);
55
55
  margin-left: var(--xh-pad-px);
56
56
  }
57
57
 
58
- .bp5-navbar-group {
58
+ .bp6-navbar-group {
59
59
  overflow: hidden;
60
60
  height: var(--xh-appbar-height-px);
61
61
 
62
- .bp5-navbar-divider {
62
+ .bp6-navbar-divider {
63
63
  margin: 0 var(--xh-pad-px);
64
64
  }
65
65
 
@@ -70,7 +70,7 @@
70
70
  margin: 0 5px 0 0;
71
71
  }
72
72
 
73
- &.bp5-align-left {
73
+ &.bp6-align-left {
74
74
  // Flex simulates left alignment
75
75
  flex: 1;
76
76
 
@@ -80,13 +80,13 @@
80
80
  }
81
81
  }
82
82
 
83
- &.bp5-align-right {
83
+ &.bp6-align-right {
84
84
  // Apply standardized spacing to extra appBar items, excepting dividers and xh-no-pad elements.
85
- > *:not(.bp5-navbar-divider):not(.xh-no-pad) {
85
+ > *:not(.bp6-navbar-divider):not(.xh-no-pad) {
86
86
  margin-left: var(--xh-pad-px);
87
87
  }
88
88
 
89
- .bp5-navbar-divider {
89
+ .bp6-navbar-divider {
90
90
  margin-right: 0;
91
91
  }
92
92
  }
@@ -11,8 +11,8 @@
11
11
  //-----------------------------------------------
12
12
  .xh-app,
13
13
  .xh-app.xh-dark,
14
- .xh-app.xh-dark.bp5-dark {
15
- .xh-button.bp5-button {
14
+ .xh-app.xh-dark.bp6-dark {
15
+ .xh-button.bp6-button {
16
16
  border-radius: var(--xh-button-border-radius-px);
17
17
  font-family: var(--xh-button-font-family);
18
18
  font-size: var(--xh-button-font-size-px);
@@ -48,7 +48,7 @@
48
48
  // Button group (input)
49
49
  //------------------------
50
50
  .xh-button-group {
51
- .xh-button.bp5-button {
51
+ .xh-button.bp6-button {
52
52
  &.xh-button--minimal,
53
53
  &.xh-button--outlined {
54
54
  // Ensures outlined buttons in button-groups appear seamlessly adjacent to each other in dark mode.
@@ -74,8 +74,8 @@
74
74
  }
75
75
 
76
76
  // Horizontal mode only styles
77
- &:not(.bp5-vertical) {
78
- .xh-button.bp5-button {
77
+ &:not(.bp6-vertical) {
78
+ .xh-button.bp6-button {
79
79
  // Standard and outlined have borders - remove standard radius in between adjacent buttons so
80
80
  // they seamlessly combine their inner borders.
81
81
  border-radius: 0;
@@ -98,8 +98,8 @@
98
98
  }
99
99
 
100
100
  // Vertical mode only styles
101
- &.bp5-vertical {
102
- .xh-button.bp5-button {
101
+ &.bp6-vertical {
102
+ .xh-button.bp6-button {
103
103
  // Standard and outlined have borders - remove standard radius in between adjacent buttons so
104
104
  // they seamlessly combine their inner borders.
105
105
  border-radius: 0;
@@ -127,7 +127,7 @@
127
127
  // Default/light theme colors
128
128
  //---------------------------
129
129
  .xh-app {
130
- .xh-button.bp5-button {
130
+ .xh-button.bp6-button {
131
131
  // Shaded/filled-in (non-minimal) mode.
132
132
  &.xh-button--standard {
133
133
  &.xh-button--active {
@@ -320,8 +320,8 @@
320
320
  // Dark theme colors
321
321
  //---------------------------
322
322
  .xh-app.xh-dark,
323
- .xh-app.xh-dark.bp5-dark {
324
- .xh-button.bp5-button {
323
+ .xh-app.xh-dark.bp6-dark {
324
+ .xh-button.bp6-button {
325
325
  // Dark - shaded/filled-in (non-minimal) mode.
326
326
  &.xh-button--standard {
327
327
  &.xh-button--intent-none {
@@ -507,7 +507,7 @@
507
507
  .xh-panel-header__items,
508
508
  .xh-panel-header--right,
509
509
  .xh-panel-header--left {
510
- .xh-button.bp5-button.xh-button--minimal {
510
+ .xh-button.bp6-button.xh-button--minimal {
511
511
  &.xh-button--intent-none {
512
512
  &.xh-button--enabled {
513
513
  &:hover:not(:active):not(.xh-button--active) {
@@ -40,7 +40,7 @@
40
40
  align-items: center;
41
41
  justify-content: center;
42
42
 
43
- .bp5-overlay-backdrop {
43
+ .bp6-overlay-backdrop {
44
44
  background-color: var(--xh-bg);
45
45
  }
46
46
  }
@@ -11,7 +11,6 @@ import ReactGridLayout, {
11
11
  getCompactor
12
12
  } from 'react-grid-layout';
13
13
  import {GridBackground, type GridBackgroundProps} from 'react-grid-layout/extras';
14
- import {showContextMenu} from '@xh/hoist/kit/blueprint';
15
14
  import composeRefs from '@seznam/compose-react-refs';
16
15
  import {div, vbox, vspacer} from '@xh/hoist/cmp/layout';
17
16
  import {
@@ -24,7 +23,7 @@ import {
24
23
  } from '@xh/hoist/core';
25
24
  import {dashCanvasAddViewButton} from '@xh/hoist/desktop/cmp/button/DashCanvasAddViewButton';
26
25
  import '@xh/hoist/desktop/register';
27
- import {Classes, overlay} from '@xh/hoist/kit/blueprint';
26
+ import {Classes, overlay, showContextMenu} from '@xh/hoist/kit/blueprint';
28
27
  import {consumeEvent, mergeDeep, TEST_ID} from '@xh/hoist/utils/js';
29
28
  import classNames from 'classnames';
30
29
  import {DashCanvasModel} from './DashCanvasModel';
@@ -5,7 +5,7 @@
5
5
  align-items: center;
6
6
  justify-content: center;
7
7
 
8
- .bp5-overlay-backdrop {
8
+ .bp6-overlay-backdrop {
9
9
  background-color: var(--xh-bg);
10
10
  }
11
11
  }
@@ -17,7 +17,6 @@ import {
17
17
  XH
18
18
  } from '@xh/hoist/core';
19
19
  import {convertIconToHtml, deserializeIcon, ResolvedIconProps} from '@xh/hoist/icon';
20
- import {showContextMenu} from '@xh/hoist/kit/blueprint';
21
20
  import {GoldenLayout} from '@xh/hoist/kit/golden-layout';
22
21
  import {action, bindable, makeObservable, observable, runInAction} from '@xh/hoist/mobx';
23
22
  import {wait} from '@xh/hoist/promise';
@@ -48,6 +47,7 @@ import {
48
47
  goldenLayoutConfig
49
48
  } from './impl/DashContainerUtils';
50
49
  import {dashContainerView} from './impl/DashContainerView';
50
+ import {showContextMenu} from '@xh/hoist/kit/blueprint';
51
51
 
52
52
  export interface DashContainerConfig extends DashConfig<
53
53
  DashContainerViewSpec,
@@ -86,7 +86,7 @@
86
86
  }
87
87
 
88
88
  // Extra specificity needed here to overcome the specificity in Button.scss.
89
- .xh-button.bp5-button {
89
+ .xh-button.bp6-button {
90
90
  &.xh-button--minimal {
91
91
  &.xh-button--intent-none {
92
92
  &.xh-button--enabled {
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  .xh-filter-chooser {
9
- .bp5-popover-target {
9
+ .bp6-popover-target {
10
10
  display: flex;
11
11
  flex: 1;
12
12
  }
@@ -5,17 +5,17 @@
5
5
  * Copyright © 2025 Extremely Heavy Industries Inc.
6
6
  */
7
7
  .xh-popover-filter-chooser {
8
- & > .bp5-popover-target {
8
+ & > .bp6-popover-target {
9
9
  display: flex;
10
10
  flex: 1;
11
11
  }
12
12
 
13
13
  // Extra class names required to override the default styles of the popover
14
- &__popover.bp5-popover.bp5-minimal {
14
+ &__popover.bp6-popover.bp6-minimal {
15
15
  margin-top: -15px !important;
16
16
  box-shadow: none;
17
17
 
18
- .bp5-popover-content {
18
+ .bp6-popover-content {
19
19
  background: transparent;
20
20
  }
21
21
 
@@ -29,18 +29,18 @@
29
29
  align-items: stretch;
30
30
 
31
31
  .xh-input {
32
- .bp5-input-group {
32
+ .bp6-input-group {
33
33
  width: 100%;
34
34
  }
35
35
 
36
- &.bp5-popover-target,
37
- .bp5-popover-target {
36
+ &.bp6-popover-target,
37
+ .bp6-popover-target {
38
38
  display: flex;
39
39
  flex: 1;
40
40
  }
41
41
  }
42
42
 
43
- .bp5-popover-target > .bp5-control-group {
43
+ .bp6-popover-target > .bp6-control-group {
44
44
  display: flex;
45
45
  flex: 1;
46
46
  }
@@ -69,7 +69,7 @@ export const actionCol: ColumnSpec = {
69
69
  disabled,
70
70
  tooltip,
71
71
  intent,
72
- className: classNames('bp5-small', 'xh-record-action-button', className),
72
+ className: classNames('bp6-small', 'xh-record-action-button', className),
73
73
  onClick: ev => {
74
74
  ev.stopPropagation();
75
75
  action.call({record, selectedRecords: [record], gridModel, column});
@@ -21,7 +21,7 @@
21
21
  }
22
22
 
23
23
  .xh-date-input__wrapper,
24
- .bp5-popover-target > div {
24
+ .bp6-popover-target > div {
25
25
  display: flex;
26
26
  flex: 1;
27
27
  height: 100%;
@@ -32,13 +32,13 @@
32
32
  width: 100%;
33
33
  height: 100%;
34
34
 
35
- .bp5-input-group {
35
+ .bp6-input-group {
36
36
  display: flex;
37
37
  flex: 1;
38
38
  height: 100%;
39
39
  width: 100%;
40
40
 
41
- .bp5-input-action {
41
+ .bp6-input-action {
42
42
  button {
43
43
  min-height: 18px;
44
44
 
@@ -79,7 +79,7 @@
79
79
  justify-content: center;
80
80
  padding: 0;
81
81
 
82
- .bp5-control-indicator {
82
+ .bp6-control-indicator {
83
83
  margin: 0;
84
84
  }
85
85
  }
@@ -6,7 +6,7 @@
6
6
  */
7
7
 
8
8
  .xh-grid-find-field {
9
- .bp5-input {
9
+ .bp6-input {
10
10
  border-radius: 3px 0 0 3px;
11
11
  }
12
12
 
@@ -28,8 +28,8 @@
28
28
  &__bottom {
29
29
  margin-top: var(--xh-pad-half-px);
30
30
 
31
- .bp5-popover-target,
32
- .bp5-input-group {
31
+ .bp6-popover-target,
32
+ .bp6-input-group {
33
33
  width: 100%;
34
34
  }
35
35
  }
@@ -4,7 +4,7 @@
4
4
  padding: 5px 7px;
5
5
  row-gap: 5px;
6
6
 
7
- .bp5-control-indicator {
7
+ .bp6-control-indicator {
8
8
  font-size: 1em;
9
9
  }
10
10
 
@@ -54,7 +54,7 @@
54
54
 
55
55
  .ag-pinned-left-header,
56
56
  .ag-cell.ag-cell-last-left-pinned {
57
- .bp5-control.bp5-inline {
57
+ .bp6-control.bp6-inline {
58
58
  margin-right: -8px;
59
59
 
60
60
  input {
@@ -25,12 +25,12 @@
25
25
  }
26
26
 
27
27
  // Outer box is sized via layoutSupport - all nested inner elements should stretch to fill.
28
- .bp5-popover-target,
28
+ .bp6-popover-target,
29
29
  .xh-grouping-chooser-button {
30
30
  width: 100%;
31
31
  }
32
32
 
33
- .bp5-popover-target span {
33
+ .bp6-popover-target span {
34
34
  position: relative;
35
35
  }
36
36
 
@@ -148,7 +148,7 @@
148
148
 
149
149
  --xh-menu-border: none;
150
150
 
151
- .bp5-menu {
151
+ .bp6-menu {
152
152
  padding: 0;
153
153
  }
154
154
 
@@ -5,7 +5,7 @@
5
5
  * Copyright © 2025 Extremely Heavy Industries Inc.
6
6
  */
7
7
 
8
- .xh-check-box.xh-input-disabled input:checked ~ .bp5-control-indicator {
8
+ .xh-check-box.xh-input-disabled input:checked ~ .bp6-control-indicator {
9
9
  background-color: var(--xh-input-disabled-bg) !important;
10
10
  &::before {
11
11
  background-image: var(--xh-input-disabled-checkmark-svg) !important;
@@ -6,11 +6,11 @@
6
6
  */
7
7
 
8
8
  .xh-date-input__wrapper {
9
- .bp5-input-action {
9
+ .bp6-input-action {
10
10
  height: 100%;
11
11
  }
12
12
 
13
- .bp5-input-group .xh-icon {
13
+ .bp6-input-group .xh-icon {
14
14
  position: relative;
15
15
  margin: 0 !important;
16
16
  }
@@ -24,7 +24,7 @@
24
24
  cursor: pointer !important;
25
25
  }
26
26
 
27
- .bp5-input-group.bp5-disabled {
27
+ .bp6-input-group.bp6-disabled {
28
28
  cursor: pointer !important;
29
29
  }
30
30
  }
@@ -6,7 +6,7 @@
6
6
  */
7
7
  import {PopperBoundary, PopperModifierOverrides} from '@blueprintjs/core';
8
8
  import {TimePickerProps} from '@blueprintjs/datetime';
9
- import {ReactDayPickerSingleProps} from '@blueprintjs/datetime2/src/common/reactDayPickerProps';
9
+ import {ReactDayPickerSingleProps} from '@blueprintjs/datetime/src/common/reactDayPickerProps';
10
10
  import {HoistInputModel, HoistInputProps, useHoistInputModel} from '@xh/hoist/cmp/input';
11
11
  import {div, hbox} from '@xh/hoist/cmp/layout';
12
12
  import {hoistCmp, HoistProps, LayoutProps, Some} from '@xh/hoist/core';