@xh/hoist 81.0.0 β†’ 81.0.2

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.
package/CHANGELOG.md CHANGED
@@ -1,6 +1,21 @@
1
1
  # Changelog
2
2
 
3
- ## 81.0.0 - 2026-02-12
3
+ ## 81.0.2 - 2026-02-12
4
+
5
+ ### πŸ’₯ Breaking Changes (upgrade difficulty: 🟒 LOW)
6
+
7
+ See [`docs/upgrade-notes/v81-upgrade-notes.md`](docs/upgrade-notes/v81-upgrade-notes.md) for
8
+ detailed, step-by-step upgrade instructions with before/after code examples.
9
+
10
+ * Requires hoist-core `v36.1` or greater.
11
+ * Renamed the CSS class on Panel's outer structural wrapper from `xh-panel__content` to
12
+ `xh-panel__inner`. The `xh-panel__content` class is now used on the new inner frame wrapping
13
+ content items (the target of `contentBoxProps`). Update any app CSS selectors targeting the old
14
+ `xh-panel__content` class accordingly.
15
+ * Changed the signatures of some `HoistAuthModel` methods to return `IdentityInfo` rather than
16
+ a `boolean`. For most apps this will require a trivial change to the signature of the
17
+ implementation of `HoistAuthModel.completeAuthAsync`.
18
+ * Renamed Blueprint `Card` exports to `BpCard` and `bpCard`.
4
19
 
5
20
  ### 🎁 New Features
6
21
 
@@ -14,20 +29,9 @@
14
29
  `Card`.
15
30
  * Added `scrollable` prop to desktop `Panel`, matching the existing mobile `Panel` API. Sets
16
31
  `overflowY: 'auto'` on the content area.
17
- * Layout props `padding`, `margin` (and their directional variants), and `gap` now accept a boolean
18
- shorthand: `true` resolves to the standard app padding CSS variable (`--xh-pad-px`, default 10px),
19
- `false` is treated as unset.
20
-
21
- ### πŸ’₯ Breaking Changes
22
- * Requires hoist-core `v36.1` or greater.
23
- * The CSS class on Panel's outer structural wrapper has been renamed from `xh-panel__content` to
24
- `xh-panel__inner`. The `xh-panel__content` class is now used on the new inner frame wrapping
25
- content items (the target of `contentBoxProps`). Update any app CSS selectors targeting the old
26
- `xh-panel__content` class accordingly.
27
- * Change to the signatures of some `HoistAuthModel` methods to return `IdentityInfo` rather than
28
- a `boolean`. For most apps this will require a trivial change to the signature of the
29
- implementation of `HoistAuthModel.completeAuthAsync`.
30
- * Renamed Blueprint `Card` exports to `BpCard` and `bpCard`.
32
+ * Enhanced layout props `padding`, `margin` (and their directional variants), and `gap` to accept a
33
+ boolean shorthand: `true` - resolves to the standard app padding CSS variable (`--xh-pad-px`,
34
+ default 10px), with `false` treated as unset.
31
35
 
32
36
  ### 🐞 Bug Fixes
33
37
 
@@ -42,19 +46,22 @@
42
46
 
43
47
  ### βš™οΈ Technical
44
48
 
45
- * Improve the efficiency of initialization by reducing the number of server requests required
46
- to get user identity.
49
+ * Improved the efficiency of initialization by reducing the number of fetch requests required to
50
+ load user identity.
47
51
 
48
52
  ## 80.0.1 - 2026-01-28
49
53
 
50
54
  ### βš™οΈ Technical
51
55
 
52
- * New properties `Cube.lastUpdated` and `View.cubeUpdated` support more efficient updating of
56
+ * Added `Cube.lastUpdated` and `View.cubeUpdated` properties to support more efficient updating of
53
57
  connected cube views.
54
58
 
55
59
  ## 80.0.0 - 2026-01-27
56
60
 
57
- ### πŸ’₯ Breaking Changes
61
+ ### πŸ’₯ Breaking Changes (upgrade difficulty: 🟒 LOW)
62
+
63
+ See [`docs/upgrade-notes/v80-upgrade-notes.md`](docs/upgrade-notes/v80-upgrade-notes.md) for
64
+ detailed, step-by-step upgrade instructions with before/after code examples.
58
65
 
59
66
  * Modified several CSS classes related to `FormField` to better follow BEM conventions.
60
67
  * ⚠️The commonly targeted `xh-form-field-label` class is now `xh-form-field__label`, although
@@ -88,7 +95,7 @@
88
95
  * Added `AggregationContext` as an additional argument to `CubeField.canAggregateFn`.
89
96
  * Added `filterMatchMode` option to `ColChooserModel`, allowing customizing match to `start`,
90
97
  `startWord`, or `any`.
91
- * Added support for reconnecting a `View` to its associated `Cube`
98
+ * Added support for reconnecting a `View` to its associated `Cube`.
92
99
 
93
100
  ### βš™οΈ Typescript API Adjustments
94
101
 
@@ -122,11 +129,14 @@
122
129
  * Added a direct dependency and forced resolution to pin to `jquery@3.x`. This is a transitive
123
130
  dependency of the `golden-layout` library and is specified by that library very loosely as `*`,
124
131
  causing a break if upgraded to jQuery's new 4.x release.
125
- * ⚠️Apps will need to add their own resolution to ensure they stay on the last 3.x version.
132
+ * ⚠️Apps will need to add their own resolution to ensure they stay on the last 3.x version.
126
133
 
127
134
  ## 79.0.0 - 2026-01-05
128
135
 
129
- ### πŸ’₯ Breaking Changes
136
+ ### πŸ’₯ Breaking Changes (upgrade difficulty: 🟠 MEDIUM)
137
+
138
+ See [`docs/upgrade-notes/v79-upgrade-notes.md`](docs/upgrade-notes/v79-upgrade-notes.md) for
139
+ detailed, step-by-step upgrade instructions with before/after code examples.
130
140
 
131
141
  Note that a server-side upgrade to `hoist-core >= 35` is recommended to support several changes in
132
142
  this release, but is not strictly required.
@@ -206,7 +216,7 @@ this release, but is not strictly required.
206
216
  ### 🐞 Bug Fixes
207
217
 
208
218
  * Fixed Highcharts timezone handling regression from version 77.
209
- * Note that Highcharts has deprecated the `time.useUTC` option and its functioning seem
219
+ * Note that Highcharts has deprecated the `time.useUTC` option and its functioning seems
210
220
  suspect - set `time.timezone` instead. See https://api.highcharts.com/highcharts/time.useUTC.
211
221
 
212
222
  ### βš™οΈ Technical
@@ -231,7 +241,10 @@ this release, but is not strictly required.
231
241
 
232
242
  ## 78.0.0 - 2025-11-21
233
243
 
234
- ### πŸ’₯ Breaking Changes
244
+ ### πŸ’₯ Breaking Changes (upgrade difficulty: πŸŽ‰ TRIVIAL)
245
+
246
+ See [`docs/upgrade-notes/v78-upgrade-notes.md`](docs/upgrade-notes/v78-upgrade-notes.md) for
247
+ detailed, step-by-step upgrade instructions with before/after code examples.
235
248
 
236
249
  * `GridModel.setColumnState` no longer patches existing column state, but instead replaces it
237
250
  wholesale. Applications that were relying on the prior patching behavior will need to
@@ -248,7 +261,7 @@ this release, but is not strictly required.
248
261
  ### 🐞 Bug Fixes
249
262
 
250
263
  * Fixed `GridModel` not appending children to the parents correctly when recs have numeric IDs.
251
- * Fixed issue where newly added columns appearing in the Displayed Columns section of the column
264
+ * Fixed issue where newly added columns would appear in the Displayed Columns section of the column
252
265
  chooser after loading grid state that was persisted before the columns were added to the grid.
253
266
  * Removed a minor Cube `Query` annoyance - `dimensions` are now automatically added to the `fields`
254
267
  list and do not need to be manually repeated there.
@@ -273,10 +286,10 @@ this release, but is not strictly required.
273
286
 
274
287
  ### 🐞 Bug Fixes
275
288
 
276
- * Improved `StoreRecord.isModified` to no return `true` after a field has been edited but then
289
+ * Improved `StoreRecord.isModified` to not return `true` after a field has been edited but then
277
290
  returned to its original value in a subsequent edit.
278
291
  * Restored support for `TabModel.content` set to `null`, to support dynamic tab content.
279
- * Fixed and issue where stray context menus could appear when clicking on column group headers and
292
+ * Fixed an issue where stray context menus could appear when clicking on column group headers and
280
293
  other grid empty space.
281
294
 
282
295
  ## 77.0.1 - 2025-10-29
@@ -305,7 +318,7 @@ this release, but is not strictly required.
305
318
 
306
319
  ### βš™οΈ Technical
307
320
 
308
- * Support Grails 7 service name conventions in admin client (backward compatible)
321
+ * Added support for Grails 7 service name conventions in admin client (backward compatible).
309
322
 
310
323
  ## 76.2.0 - 2025-10-22
311
324
 
@@ -1,5 +1,8 @@
1
- import { Alert, Button, ButtonGroup, Callout, Card as BpCard, 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';
1
+ import { Alert, Button, ButtonGroup, Callout, Card as BpCard, Checkbox, ControlGroup, type DialogProps, Drawer, EditableText, FileInput, FormGroup, Hotkey, Hotkeys, InputGroup, Label, Menu, MenuDivider, MenuItem, Navbar, NavbarDivider, NavbarGroup, NavbarHeading, NumericInput, OverflowList, Overlay2 as Overlay, type PopoverProps, Radio, RadioGroup, RangeSlider, Slider, Switch, Tab, Tabs, Tag, TagInput, Text, TextArea, Tooltip, Tree } from '@blueprintjs/core';
2
2
  import { DatePicker } from '@blueprintjs/datetime';
3
+ import React from 'react';
4
+ declare const Dialog: React.FC<DialogProps>;
5
+ declare const Popover: React.FC<PopoverProps>;
3
6
  export { Alert, Button, ButtonGroup, Callout, BpCard, 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/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
- export declare const buttonGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").ButtonGroupProps>, callout: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").CalloutProps>, bpCard: 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>;
7
+ 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<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<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"> & React.RefAttributes<import("@blueprintjs/core").OverlayInstance>>, tooltip: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").TooltipProps<import("@blueprintjs/core").DefaultPopoverTargetHTMLProps>>;
8
+ export declare const buttonGroup: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").ButtonGroupProps>, callout: import("@xh/hoist/core").ElementFactory<import("@blueprintjs/core").CalloutProps>, bpCard: 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<React.AllHTMLAttributes<HTMLLabelElement> & 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>;
@@ -10,9 +10,11 @@ apply.
10
10
  ```markdown
11
11
  ## {VERSION} - {YYYY-MM-DD}
12
12
 
13
- ### πŸ’₯ Breaking Changes
13
+ ### πŸ’₯ Breaking Changes (upgrade difficulty: {RATING})
14
+
15
+ See [`docs/upgrade-notes/v{NN}-upgrade-notes.md`](docs/upgrade-notes/v{NN}-upgrade-notes.md) for
16
+ detailed, step-by-step upgrade instructions with before/after code examples.
14
17
 
15
- * {Introductory bullet with overview and link to upgrade notes}
16
18
  * {Required change 1}
17
19
  * {Required change 2}
18
20
  * {Sub-detail if needed}
@@ -87,12 +89,20 @@ Bad:
87
89
 
88
90
  ## Breaking Changes Section
89
91
 
90
- For major versions, this section should:
91
-
92
- 1. **List** every required app-level change as a separate bullet
93
- 2. **Be specific** β€” name exact classes, methods, and config keys
94
- 3. **Include** difficulty-rated sub-headers when useful (see Difficulty Ratings below)
95
- 4. **Link** to upgrade notes when available: `docs/upgrade-notes/v{NN}-upgrade-notes.md`
92
+ **Every major version with breaking changes MUST include all of the following.** Do not skip or
93
+ reorder these requirements:
94
+
95
+ 1. **Difficulty rating in the header** β€” append `(upgrade difficulty: {RATING})` to the section
96
+ header. See Difficulty Ratings below for the rating scale.
97
+ 2. **Upgrade notes link as a standalone sentence** β€” immediately after the header (before any
98
+ bullets), include a sentence linking to the upgrade notes file. This is **not** a bullet point β€”
99
+ it is a standalone paragraph. Use this exact format:
100
+ ```markdown
101
+ See [`docs/upgrade-notes/v{NN}-upgrade-notes.md`](docs/upgrade-notes/v{NN}-upgrade-notes.md) for
102
+ detailed, step-by-step upgrade instructions with before/after code examples.
103
+ ```
104
+ 3. **List** every required app-level change as a separate bullet
105
+ 4. **Be specific** β€” name exact classes, methods, and config keys
96
106
  5. **Link** to relevant framework upgrade guides (e.g. Blueprint, AG Grid) when applicable
97
107
 
98
108
  Each bullet should be concise (1-2 lines). The upgrade notes file handles expanded detail with
@@ -1,9 +1,6 @@
1
1
  # Hoist React v81 Upgrade Notes
2
2
 
3
- > **From:** v80.x β†’ v81.0.0 | **Released:** _unreleased_ | **Difficulty:** 🟒 LOW
4
-
5
- **Note:** This guide is a draft for the upcoming v81 release and may be updated before the final
6
- release.
3
+ > **From:** v80.x β†’ v81.0.2 | **Released:** 2026-02-12 | **Difficulty:** 🟒 LOW
7
4
 
8
5
  ## Overview
9
6
 
@@ -39,7 +36,7 @@ Before:
39
36
 
40
37
  After:
41
38
  ```json
42
- "@xh/hoist": "~81.0.0"
39
+ "@xh/hoist": "~81.0.2"
43
40
  ```
44
41
 
45
42
  ### 2. Update Panel CSS Class References
@@ -15,7 +15,8 @@ import {
15
15
  Card as BpCard,
16
16
  Checkbox,
17
17
  ControlGroup,
18
- Dialog,
18
+ Dialog as BpDialog,
19
+ type DialogProps,
19
20
  Drawer,
20
21
  EditableText,
21
22
  FileInput,
@@ -34,7 +35,8 @@ import {
34
35
  NumericInput,
35
36
  OverflowList,
36
37
  Overlay2 as Overlay,
37
- Popover,
38
+ Popover as BpPopover,
39
+ type PopoverProps,
38
40
  Radio,
39
41
  RadioGroup,
40
42
  RangeSlider,
@@ -51,6 +53,15 @@ import {
51
53
  } from '@blueprintjs/core';
52
54
  import {DatePicker} from '@blueprintjs/datetime';
53
55
  import {elementFactory} from '@xh/hoist/core';
56
+ import React, {createElement as reactCreateElement} from 'react';
57
+
58
+ // Wrap Dialog and Popover to disable fade/scale-in transitions by default.
59
+ // See also popover & overlay related CSS overrides in ./styles.scss.
60
+ const Dialog: React.FC<DialogProps> = props =>
61
+ reactCreateElement(BpDialog, {transitionDuration: 0, transitionName: 'none', ...props});
62
+
63
+ const Popover: React.FC<PopoverProps> = props =>
64
+ reactCreateElement(BpPopover, {transitionDuration: 0, ...props});
54
65
 
55
66
  //---------------------
56
67
  // Re-exports
@@ -7,11 +7,9 @@
7
7
  import {
8
8
  BlueprintProvider,
9
9
  Classes,
10
- Dialog,
11
10
  FocusStyleManager,
12
11
  type HotkeyConfig,
13
12
  OverlayToaster,
14
- Popover,
15
13
  PopoverInteractionKind,
16
14
  Position,
17
15
  type ToasterPosition,
@@ -26,12 +24,6 @@ import './styles.scss';
26
24
  // on focusable components when focused via mouse click.
27
25
  FocusStyleManager.onlyShowFocusOnTabs();
28
26
 
29
- // Disable fade/scale-in transitions.
30
- // See also popover & overlay related overrides in ./styles.scss.
31
- Dialog.defaultProps.transitionDuration = 0;
32
- Dialog.defaultProps.transitionName = 'none';
33
- Popover.defaultProps.transitionDuration = 0;
34
-
35
27
  //---------------------
36
28
  // Re-exports
37
29
  //---------------------
package/package.json CHANGED
@@ -1,8 +1,11 @@
1
1
  {
2
2
  "name": "@xh/hoist",
3
- "version": "81.0.0",
3
+ "version": "81.0.2",
4
4
  "description": "Hoist add-on for building and deploying React Applications.",
5
- "repository": "github:xh/hoist-react",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "git+https://github.com/xh/hoist-react.git"
8
+ },
6
9
  "homepage": "https://xh.io",
7
10
  "bugs": "https://github.com/xh/hoist-react/issues",
8
11
  "author": "Extremely Heavy Industries, Inc.",
@@ -1,6 +0,0 @@
1
- {
2
- "enabledPlugins": {
3
- "typescript-lsp@claude-plugins-official": true,
4
- "jdtls-lsp@claude-plugins-official": true
5
- }
6
- }
@@ -1,108 +0,0 @@
1
- ---
2
- name: xh-update-doc-links
3
- description: Pre-commit documentation consistency check. Ensures docs/README.md index and docs/README-ROADMAP.md stay in sync with documentation files on disk, validates inter-doc links, and enhances cross-references when new docs are added. Invoke after editing READMEs or concept docs, before committing.
4
- tools: Read, Glob, Grep, Bash, Edit, Write
5
- ---
6
-
7
- # xh-update-doc-links β€” Documentation Consistency Check
8
-
9
- Pre-commit skill to ensure documentation index files, inter-doc links, and cross-references
10
- stay consistent after editing READMEs or concept docs.
11
-
12
- ## Step 1: Discover Documentation Files
13
-
14
- Build a complete inventory of documentation files on disk.
15
-
16
- 1. Use `Glob` to find all `**/README.md` files, excluding `node_modules/`, `public/`, and
17
- `static/` directories.
18
- 2. Use `Glob` to find all files under `docs/`.
19
- 3. Run `git diff --name-only` and `git status --porcelain` to identify which docs were
20
- recently changed or added.
21
- 4. Build a master list of all documentation files, noting which are new or recently modified.
22
-
23
- ## Step 2: Read Index Files
24
-
25
- Read the two index files and parse their current entries.
26
-
27
- 1. Read `docs/README.md` β€” focus on the **Package Documentation** section (the tables under
28
- "Core Framework", "Components", "Utilities", "Concepts", and "Other Packages").
29
- - Parse each table row to extract the package path and linked README path.
30
- - Parse the "Other Packages" paragraph to extract unlisted package names.
31
-
32
- 2. Read `docs/README-ROADMAP.md` β€” parse all priority tables and the Concepts table.
33
- - Extract each package path, description, and status value.
34
- - Note which entries are `Planned`, `Drafted`, or `[Done](link)`.
35
-
36
- ## Step 3: Reconcile Indexes
37
-
38
- Compare documentation on disk against both index files.
39
-
40
- ### docs/README.md Reconciliation
41
-
42
- For each README on disk:
43
- - Check if it has an entry in the appropriate `docs/README.md` table (Core Framework, Components,
44
- Utilities, Concepts, or Other Packages).
45
- - **Missing entries:** Add a new table row in the correct section using this format:
46
- ```markdown
47
- | [`/package/`](../package/README.md) | One-sentence description | Key, Topics, Here |
48
- ```
49
- (Note: paths are relative from `docs/`, so package READMEs use `../` prefix.)
50
- - **Stale entries:** If an entry links to a README that no longer exists, remove it.
51
- - **Promotion:** If a package is listed in the "Other Packages" paragraph and now has a
52
- README, move it to the appropriate table and remove it from the paragraph.
53
- - **AGENTS.md directive:** Verify that `AGENTS.md` still contains the directive pointing
54
- to `docs/README.md` (the "Hoist Documentation" section). Do not re-add package tables
55
- to AGENTS.md.
56
-
57
- ### README-ROADMAP.md Reconciliation
58
-
59
- For each README on disk:
60
- - Check if it has an entry in the roadmap with the correct status.
61
- - **Status updates:** Change `Planned` β†’ `[Done](../path/README.md)` for newly completed docs.
62
- Change `Drafted` β†’ `[Done](../path/README.md)` if appropriate.
63
- - **Missing entries:** Add entries for docs not yet on the roadmap.
64
- - **Progress notes:** Add a progress note entry for the current date if doc changes are
65
- detected. Follow the existing format in the "Progress Notes" section.
66
-
67
- ## Step 4: Validate Inter-Doc Links
68
-
69
- Scan every documentation file (READMEs + concept docs) for relative markdown links.
70
-
71
- 1. For each file, extract all markdown links matching `[text](path)` where `path` is a
72
- relative path (not a URL).
73
- 2. Resolve each relative path from the source file's directory.
74
- 3. Verify the target exists on disk.
75
- 4. **Broken links:** Report and fix. Common fixes include:
76
- - Correcting `../` depth for moved files
77
- - Updating paths for renamed files
78
- - Removing links to deleted files
79
-
80
- ## Step 5: Enhance Cross-Links
81
-
82
- When new or recently changed docs are detected, look for cross-linking opportunities.
83
-
84
- 1. **Topic-based linking:** Scan existing READMEs for sections that discuss the same topic
85
- as a new doc. Where an existing README has a brief treatment of a topic that now has
86
- dedicated documentation, add a contextual "See [`/package/`](path) for details" link.
87
-
88
- 2. **Related Packages sections:** Check if a new README was created for a package that is
89
- referenced without a link in another doc's "Related Packages" section. Add the link using
90
- the format:
91
- ```markdown
92
- - [`/package/`](path) - Brief description
93
- ```
94
-
95
- 3. **Be conservative:** Only add links where the existing text already discusses the topic.
96
- Do not restructure existing content or add new sections just to create links.
97
-
98
- ## Step 6: Report
99
-
100
- Output a summary organized into these sections:
101
-
102
- 1. **Index Updates** β€” `docs/README.md` entries added, updated, or removed.
103
- 2. **Roadmap Updates** β€” Status changes, new entries, progress notes added.
104
- 3. **Broken Links Fixed** β€” Source file, broken target, and fix applied.
105
- 4. **New Cross-Links Added** β€” Source file, target doc, and surrounding context.
106
- 5. **Items Needing Review** β€” Ambiguities or items requiring human judgment.
107
-
108
- If no changes were needed in a category, note "None" for that section.
@@ -1,112 +0,0 @@
1
- ---
2
- name: xh-update-docs
3
- description: Update hoist-react documentation after adding new components or features. Use when a developer has made changes to hoist-react and wants to update README files, AGENTS.md, and the documentation roadmap to reflect those changes. Invoke with a commit hash or PR number. Also use when you detect that recent commits or PRs have added new components, models, or services that are not yet reflected in the documentation.
4
- tools: Read, Glob, Grep, Bash, Edit, Write
5
- ---
6
-
7
- # xh-update-docs β€” Documentation Update Skill
8
-
9
- Update hoist-react documentation to reflect recent code changes. This skill analyzes
10
- commits or PRs, identifies documentation-worthy changes, and proposes targeted updates
11
- to package READMEs, AGENTS.md, and the documentation roadmap.
12
-
13
- ## Step 1: Resolve Input
14
-
15
- Accept `$ARGUMENTS` as a commit hash or PR number.
16
-
17
- **If arguments are provided:**
18
- - If it looks like a PR number (digits only, typically 1-5 digits), use `gh pr diff <number>`
19
- and `gh pr view <number>` to analyze
20
- - Otherwise treat it as a commit hash and use `git diff <hash>~1..<hash>`
21
-
22
- **If no arguments are provided:**
23
- - Run `git log --oneline -6` to fetch the last 6 commits
24
- - Present them to the user via `AskUserQuestion` as selectable options, where each option
25
- label is the short hash + commit message
26
- - The user picks the commit(s) that contain the changes to document
27
-
28
- ## Step 2: Analyze Changes
29
-
30
- Analyze the diff to identify documentation-worthy changes:
31
-
32
- 1. **Identify new and modified files:**
33
- - New files added (new components, models, services)
34
- - Modified files (changed behavior, new props/config, new methods)
35
-
36
- 2. **Determine affected packages:**
37
- - Map changed files to packages: `/cmp/`, `/core/`, `/data/`, `/svc/`, `/desktop/`,
38
- `/mobile/`, `/admin/`, `/format/`, `/utils/`, etc.
39
-
40
- 3. **Read source files:**
41
- - Don't just rely on the diff β€” read the actual source files to understand what was
42
- added or changed, including class hierarchies and exported APIs
43
-
44
- 4. **Cross-reference CHANGELOG.md:**
45
- - Check `CHANGELOG.md` for entries related to the commit/PR
46
- - The changelog uses categorized sections under version headers:
47
- `πŸ’₯ Breaking Changes`, `🎁 New Features`, `βš™οΈ Technical`, `🐞 Bug Fixes`
48
- - Look for entries in the current SNAPSHOT version that describe the change
49
- - These provide curated descriptions and are a strong signal of documentation-worthy changes
50
-
51
- ## Step 3: Inventory Existing Documentation
52
-
53
- Check current documentation state for each affected package:
54
-
55
- 1. **Package READMEs** β€” Read the relevant README(s) to see what's already documented.
56
- Use `Glob` to check for `<package>/README.md` files.
57
-
58
- 2. **Documentation Index** β€” Check for existing entries in the `docs/README.md` Package
59
- Documentation tables. Read `docs/README.md` and look for the affected package paths.
60
-
61
- 3. **Documentation Roadmap** β€” Check `docs/README-ROADMAP.md` for status of affected packages.
62
-
63
- ## Step 4: Propose Updates
64
-
65
- Generate a categorized list of proposed documentation changes. For each change, explain
66
- **what** would be updated and **why**.
67
-
68
- Categories:
69
-
70
- ### README Updates
71
- Edits to existing package READMEs. Examples:
72
- - New section for a newly added component or model
73
- - Updated configuration table with new properties
74
- - New usage pattern or code example
75
- - Updated architecture diagram
76
- - New entry in Common Pitfalls
77
-
78
- ### New READMEs
79
- If a new sub-package was added that lacks a README, propose creating one following the
80
- 7-section structure defined in `references/doc-conventions.md`.
81
-
82
- ### Documentation Index Updates
83
- New or updated entries in the `docs/README.md` Package Documentation tables. Each entry needs:
84
- - Linked package path (relative from `docs/`, e.g., `../package/README.md`)
85
- - One-sentence description
86
- - Comma-separated list of key topics
87
-
88
- ### Roadmap Updates
89
- Status changes in `docs/README-ROADMAP.md`:
90
- - New package entries added to the appropriate priority tier
91
- - Status changes (e.g., `Planned` β†’ `Done` with link)
92
- - New progress notes with date
93
-
94
- ## Step 5: Confirm with User
95
-
96
- Present the full list of proposed changes in a clear summary. Ask the user to confirm
97
- before applying any changes. Group by category and include enough context for the user
98
- to evaluate each proposed change.
99
-
100
- ## Step 6: Apply Changes
101
-
102
- After user confirmation, apply the approved documentation updates using Edit and Write tools.
103
-
104
- Follow conventions from `references/doc-conventions.md`:
105
- - Use the 7-section README structure for new READMEs
106
- - Use element factory style in code examples (not JSX)
107
- - Use `config` (not `props`) for model constructor args
108
- - Fold defaults into description column (no separate Default column)
109
- - Use βœ…/❌ markers for correct/incorrect code patterns
110
- - Use `**Avoid:**` prefix for inline warnings
111
-
112
- After applying changes, present a summary of what was updated.