react-science 19.11.0 → 20.0.0

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 (226) hide show
  1. package/lib/components/accordion/accordion.d.ts +2 -2
  2. package/lib/components/accordion/accordion.d.ts.map +1 -1
  3. package/lib/components/accordion/accordion_context_provider.d.ts +1 -1
  4. package/lib/components/accordion/accordion_context_provider.d.ts.map +1 -1
  5. package/lib/components/activity_bar/activity_bar.d.ts +2 -2
  6. package/lib/components/activity_bar/activity_bar.d.ts.map +1 -1
  7. package/lib/components/activity_bar/activity_bar.js +5 -1
  8. package/lib/components/activity_bar/activity_bar.js.map +1 -1
  9. package/lib/components/activity_panel/activity_panel.d.ts +2 -2
  10. package/lib/components/activity_panel/activity_panel.d.ts.map +1 -1
  11. package/lib/components/button/Button.d.ts +1 -1
  12. package/lib/components/button/Button.d.ts.map +1 -1
  13. package/lib/components/button/Button.js +30 -22
  14. package/lib/components/button/Button.js.map +1 -1
  15. package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.d.ts +3 -3
  16. package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.d.ts.map +1 -1
  17. package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.js +2 -2
  18. package/lib/components/color-picker/color-picker-dropdown/ColorPickerDropdown.js.map +1 -1
  19. package/lib/components/color-picker/gradient_select/gradient_select.d.ts +1 -1
  20. package/lib/components/color-picker/gradient_select/gradient_select.d.ts.map +1 -1
  21. package/lib/components/color-picker/gradient_select/gradient_select.js +1 -1
  22. package/lib/components/color-picker/gradient_select/gradient_select.js.map +1 -1
  23. package/lib/components/color-picker/preview/ColorPreview.d.ts +1 -1
  24. package/lib/components/color-picker/preview/ColorPreview.d.ts.map +1 -1
  25. package/lib/components/color-picker/preview/FixedColorPreview.d.ts +1 -1
  26. package/lib/components/color-picker/preview/FixedColorPreview.d.ts.map +1 -1
  27. package/lib/components/color-picker/preview/FixedGradientPreview.d.ts +1 -1
  28. package/lib/components/color-picker/preview/FixedGradientPreview.d.ts.map +1 -1
  29. package/lib/components/color-picker/react-color/ColorPicker.d.ts +1 -1
  30. package/lib/components/color-picker/react-color/ColorPicker.d.ts.map +1 -1
  31. package/lib/components/color-picker/react-color/ColorPicker.js +2 -2
  32. package/lib/components/color-picker/react-color/ColorPicker.js.map +1 -1
  33. package/lib/components/color-picker/react-color/common/Alpha.d.ts +1 -1
  34. package/lib/components/color-picker/react-color/common/Alpha.d.ts.map +1 -1
  35. package/lib/components/color-picker/react-color/common/CheckBoard.d.ts +1 -1
  36. package/lib/components/color-picker/react-color/common/CheckBoard.d.ts.map +1 -1
  37. package/lib/components/color-picker/react-color/common/EditableInput.d.ts +1 -1
  38. package/lib/components/color-picker/react-color/common/EditableInput.d.ts.map +1 -1
  39. package/lib/components/color-picker/react-color/common/Hue.d.ts +1 -1
  40. package/lib/components/color-picker/react-color/common/Hue.d.ts.map +1 -1
  41. package/lib/components/color-picker/react-color/common/Saturation.d.ts +1 -1
  42. package/lib/components/color-picker/react-color/common/Saturation.d.ts.map +1 -1
  43. package/lib/components/color-picker/react-color/sketch/SketchFields.d.ts +2 -2
  44. package/lib/components/color-picker/react-color/sketch/SketchFields.d.ts.map +1 -1
  45. package/lib/components/color-picker/react-color/sketch/SketchPresetColors.d.ts +1 -1
  46. package/lib/components/color-picker/react-color/sketch/SketchPresetColors.d.ts.map +1 -1
  47. package/lib/components/dialog/ConfirmDialog.d.ts +1 -1
  48. package/lib/components/dialog/ConfirmDialog.d.ts.map +1 -1
  49. package/lib/components/doi/doi.d.ts +1 -1
  50. package/lib/components/doi/doi.d.ts.map +1 -1
  51. package/lib/components/doi/doi_logo.d.ts +1 -1
  52. package/lib/components/doi/doi_logo.d.ts.map +1 -1
  53. package/lib/components/drop-zone/DropZone.d.ts +2 -2
  54. package/lib/components/drop-zone/DropZone.d.ts.map +1 -1
  55. package/lib/components/form/components/input/checkbox.d.ts +1 -1
  56. package/lib/components/form/components/input/checkbox.d.ts.map +1 -1
  57. package/lib/components/form/components/input/color_picker.d.ts +1 -1
  58. package/lib/components/form/components/input/color_picker.d.ts.map +1 -1
  59. package/lib/components/form/components/input/input.d.ts +1 -1
  60. package/lib/components/form/components/input/input.d.ts.map +1 -1
  61. package/lib/components/form/components/input/numeric_input.d.ts +1 -1
  62. package/lib/components/form/components/input/numeric_input.d.ts.map +1 -1
  63. package/lib/components/form/components/input/radio_group.d.ts +1 -1
  64. package/lib/components/form/components/input/radio_group.d.ts.map +1 -1
  65. package/lib/components/form/components/input/radio_group.js.map +1 -1
  66. package/lib/components/form/components/input/reset_button.d.ts +1 -1
  67. package/lib/components/form/components/input/reset_button.d.ts.map +1 -1
  68. package/lib/components/form/components/input/select.d.ts +1 -1
  69. package/lib/components/form/components/input/select.d.ts.map +1 -1
  70. package/lib/components/form/components/input/submit_button.d.ts +1 -1
  71. package/lib/components/form/components/input/submit_button.d.ts.map +1 -1
  72. package/lib/components/form/components/input/switch.d.ts +1 -1
  73. package/lib/components/form/components/input/switch.d.ts.map +1 -1
  74. package/lib/components/form/components/input_groups/form.d.ts +1 -1
  75. package/lib/components/form/components/input_groups/form.d.ts.map +1 -1
  76. package/lib/components/form/components/input_groups/form_group.d.ts +1 -1
  77. package/lib/components/form/components/input_groups/form_group.d.ts.map +1 -1
  78. package/lib/components/form/components/layout/Section.d.ts +1 -1
  79. package/lib/components/form/components/layout/Section.d.ts.map +1 -1
  80. package/lib/components/fullscreen/fullscreen_context.provider.d.ts +3 -3
  81. package/lib/components/fullscreen/fullscreen_context.provider.d.ts.map +1 -1
  82. package/lib/components/fullscreen/fullscreen_toolbar_button.d.ts +1 -1
  83. package/lib/components/fullscreen/fullscreen_toolbar_button.d.ts.map +1 -1
  84. package/lib/components/header/Header.d.ts +1 -1
  85. package/lib/components/header/Header.d.ts.map +1 -1
  86. package/lib/components/header/PanelHeader.d.ts +1 -1
  87. package/lib/components/header/PanelHeader.d.ts.map +1 -1
  88. package/lib/components/icon.d.ts +1 -1
  89. package/lib/components/icon.d.ts.map +1 -1
  90. package/lib/components/info-panel/InfoPanel.d.ts +1 -1
  91. package/lib/components/info-panel/InfoPanel.d.ts.map +1 -1
  92. package/lib/components/info-panel/InfoPanel.js +13 -10
  93. package/lib/components/info-panel/InfoPanel.js.map +1 -1
  94. package/lib/components/inline_editable_renderer/inline_editable_renderer.d.ts +1 -1
  95. package/lib/components/inline_editable_renderer/inline_editable_renderer.d.ts.map +1 -1
  96. package/lib/components/input/radio-button-group/RadioButton.d.ts +1 -1
  97. package/lib/components/input/radio-button-group/RadioButton.d.ts.map +1 -1
  98. package/lib/components/input/radio-button-group/RadioButtonGroup.d.ts +1 -1
  99. package/lib/components/input/radio-button-group/RadioButtonGroup.d.ts.map +1 -1
  100. package/lib/components/input/radio-button-group/RadioButtonGroup.js +5 -4
  101. package/lib/components/input/radio-button-group/RadioButtonGroup.js.map +1 -1
  102. package/lib/components/input/utils/SubText.d.ts +1 -1
  103. package/lib/components/input/utils/SubText.d.ts.map +1 -1
  104. package/lib/components/logger/FifoLoggerDialog.d.ts +1 -1
  105. package/lib/components/logger/FifoLoggerDialog.d.ts.map +1 -1
  106. package/lib/components/logger/FifoLoggerProvider.d.ts +1 -1
  107. package/lib/components/logger/FifoLoggerProvider.d.ts.map +1 -1
  108. package/lib/components/logger/FifoLoggerToolbarItem.d.ts +1 -1
  109. package/lib/components/logger/FifoLoggerToolbarItem.d.ts.map +1 -1
  110. package/lib/components/root-layout/root_layout.d.ts +1 -1
  111. package/lib/components/root-layout/root_layout.d.ts.map +1 -1
  112. package/lib/components/root-layout/root_layout.js +1 -2
  113. package/lib/components/root-layout/root_layout.js.map +1 -1
  114. package/lib/components/root-layout/root_layout_context.provider.d.ts +1 -1
  115. package/lib/components/root-layout/root_layout_context.provider.d.ts.map +1 -1
  116. package/lib/components/selected-total/SelectedTotal.d.ts +1 -1
  117. package/lib/components/selected-total/SelectedTotal.d.ts.map +1 -1
  118. package/lib/components/split_pane/split_pane.d.ts +1 -1
  119. package/lib/components/split_pane/split_pane.d.ts.map +1 -1
  120. package/lib/components/split_pane/use_split_pane_size.d.ts +1 -1
  121. package/lib/components/split_pane/use_split_pane_size.d.ts.map +1 -1
  122. package/lib/components/svg/styled/svg_styled_line.d.ts +1 -1
  123. package/lib/components/svg/styled/svg_styled_line.d.ts.map +1 -1
  124. package/lib/components/svg/styled/svg_styled_path.d.ts +1 -1
  125. package/lib/components/svg/styled/svg_styled_path.d.ts.map +1 -1
  126. package/lib/components/svg/styled/svg_styled_text.d.ts +1 -1
  127. package/lib/components/svg/styled/svg_styled_text.d.ts.map +1 -1
  128. package/lib/components/table/default_table_cell.d.ts +1 -1
  129. package/lib/components/table/default_table_cell.d.ts.map +1 -1
  130. package/lib/components/table/flash_row/flashed_row_provider.d.ts +1 -1
  131. package/lib/components/table/flash_row/flashed_row_provider.d.ts.map +1 -1
  132. package/lib/components/table/flash_row/use_flash_row_effect.d.ts +1 -1
  133. package/lib/components/table/flash_row/use_flash_row_effect.d.ts.map +1 -1
  134. package/lib/components/table/flash_row/use_flash_row_effect.js.map +1 -1
  135. package/lib/components/table/preview_table.d.ts +1 -1
  136. package/lib/components/table/preview_table.d.ts.map +1 -1
  137. package/lib/components/table/reorder_rows/draggable_row_context.d.ts +1 -1
  138. package/lib/components/table/reorder_rows/draggable_row_context.d.ts.map +1 -1
  139. package/lib/components/table/reorder_rows/draggable_row_tr.d.ts +1 -1
  140. package/lib/components/table/reorder_rows/draggable_row_tr.d.ts.map +1 -1
  141. package/lib/components/table/reorder_rows/draggable_row_tr.js.map +1 -1
  142. package/lib/components/table/reorder_rows/item_data.d.ts +1 -1
  143. package/lib/components/table/reorder_rows/item_data.d.ts.map +1 -1
  144. package/lib/components/table/reorder_rows/item_data.js.map +1 -1
  145. package/lib/components/table/reorder_rows/item_order_provider.d.ts +1 -1
  146. package/lib/components/table/reorder_rows/item_order_provider.d.ts.map +1 -1
  147. package/lib/components/table/reorder_rows/item_order_provider.js +10 -5
  148. package/lib/components/table/reorder_rows/item_order_provider.js.map +1 -1
  149. package/lib/components/table/reorder_rows/table_drag_row_handler.d.ts +1 -1
  150. package/lib/components/table/reorder_rows/table_drag_row_handler.d.ts.map +1 -1
  151. package/lib/components/table/reorder_rows/use_drop_monitor.d.ts +1 -1
  152. package/lib/components/table/reorder_rows/use_drop_monitor.d.ts.map +1 -1
  153. package/lib/components/table/reorder_rows/use_drop_monitor.js.map +1 -1
  154. package/lib/components/table/table_body.d.ts +1 -1
  155. package/lib/components/table/table_body.d.ts.map +1 -1
  156. package/lib/components/table/table_header.d.ts +1 -1
  157. package/lib/components/table/table_header.d.ts.map +1 -1
  158. package/lib/components/table/table_header_cell.d.ts +1 -1
  159. package/lib/components/table/table_header_cell.d.ts.map +1 -1
  160. package/lib/components/table/table_root.d.ts +2 -2
  161. package/lib/components/table/table_root.d.ts.map +1 -1
  162. package/lib/components/table/table_row.d.ts +3 -3
  163. package/lib/components/table/table_row.d.ts.map +1 -1
  164. package/lib/components/table/table_row.js.map +1 -1
  165. package/lib/components/table/table_row_cell.d.ts +1 -1
  166. package/lib/components/table/table_row_cell.d.ts.map +1 -1
  167. package/lib/components/table/table_scroll_container.d.ts +2 -2
  168. package/lib/components/table/table_scroll_container.d.ts.map +1 -1
  169. package/lib/components/table/use_table_scroll.d.ts +1 -1
  170. package/lib/components/table/use_table_scroll.d.ts.map +1 -1
  171. package/lib/components/toolbar/OverflowButton.d.ts +3 -3
  172. package/lib/components/toolbar/OverflowButton.d.ts.map +1 -1
  173. package/lib/components/toolbar/OverflowButton.js +2 -4
  174. package/lib/components/toolbar/OverflowButton.js.map +1 -1
  175. package/lib/components/toolbar/PanelPreferencesToolbar.d.ts +1 -1
  176. package/lib/components/toolbar/PanelPreferencesToolbar.d.ts.map +1 -1
  177. package/lib/components/toolbar/Toolbar.d.ts +8 -301
  178. package/lib/components/toolbar/Toolbar.d.ts.map +1 -1
  179. package/lib/components/toolbar/Toolbar.js +13 -13
  180. package/lib/components/toolbar/Toolbar.js.map +1 -1
  181. package/lib/components/toolbar/TooltipHelpContent.d.ts +1 -1
  182. package/lib/components/toolbar/TooltipHelpContent.d.ts.map +1 -1
  183. package/lib/components/toolbar/useCheckOverflow.d.ts +2 -1
  184. package/lib/components/toolbar/useCheckOverflow.d.ts.map +1 -1
  185. package/lib/components/toolbar/useCheckOverflow.js.map +1 -1
  186. package/lib/components/value-renderers/Boolean.d.ts +1 -1
  187. package/lib/components/value-renderers/Boolean.d.ts.map +1 -1
  188. package/lib/components/value-renderers/Color.d.ts +1 -1
  189. package/lib/components/value-renderers/Color.d.ts.map +1 -1
  190. package/lib/components/value-renderers/Component.d.ts +1 -1
  191. package/lib/components/value-renderers/Component.d.ts.map +1 -1
  192. package/lib/components/value-renderers/Number.d.ts +1 -1
  193. package/lib/components/value-renderers/Number.d.ts.map +1 -1
  194. package/lib/components/value-renderers/ObjectRenderer.d.ts +1 -1
  195. package/lib/components/value-renderers/ObjectRenderer.d.ts.map +1 -1
  196. package/lib/components/value-renderers/Text.d.ts +1 -1
  197. package/lib/components/value-renderers/Text.d.ts.map +1 -1
  198. package/lib/components/value-renderers/Title.d.ts +1 -1
  199. package/lib/components/value-renderers/Title.d.ts.map +1 -1
  200. package/package.json +48 -51
  201. package/src/components/activity_bar/activity_bar.tsx +5 -1
  202. package/src/components/button/Button.tsx +39 -42
  203. package/src/components/color-picker/color-picker-dropdown/ColorPickerDropdown.tsx +8 -6
  204. package/src/components/color-picker/gradient_select/gradient_select.tsx +1 -1
  205. package/src/components/color-picker/react-color/ColorPicker.tsx +8 -4
  206. package/src/components/color-picker/react-color/sketch/SketchFields.tsx +1 -1
  207. package/src/components/form/components/input/radio_group.tsx +2 -2
  208. package/src/components/fullscreen/fullscreen_context.provider.tsx +2 -2
  209. package/src/components/info-panel/InfoPanel.tsx +13 -12
  210. package/src/components/input/radio-button-group/RadioButtonGroup.tsx +9 -4
  211. package/src/components/root-layout/root_layout.tsx +2 -4
  212. package/src/components/split_pane/split_pane.tsx +1 -1
  213. package/src/components/split_pane/use_split_pane_size.tsx +1 -1
  214. package/src/components/table/flash_row/use_flash_row_effect.ts +1 -1
  215. package/src/components/table/reorder_rows/draggable_row_context.ts +1 -1
  216. package/src/components/table/reorder_rows/draggable_row_tr.tsx +1 -1
  217. package/src/components/table/reorder_rows/item_data.ts +4 -1
  218. package/src/components/table/reorder_rows/item_order_provider.tsx +8 -6
  219. package/src/components/table/reorder_rows/use_drop_monitor.ts +1 -1
  220. package/src/components/table/table_root.tsx +1 -1
  221. package/src/components/table/table_row.tsx +3 -3
  222. package/src/components/table/table_scroll_container.tsx +3 -3
  223. package/src/components/table/use_table_scroll.ts +1 -1
  224. package/src/components/toolbar/OverflowButton.tsx +9 -10
  225. package/src/components/toolbar/Toolbar.tsx +36 -29
  226. package/src/components/toolbar/useCheckOverflow.tsx +2 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-science",
3
- "version": "19.11.0",
3
+ "version": "20.0.0",
4
4
  "description": "React components to build scientific applications UI",
5
5
  "type": "module",
6
6
  "exports": {
@@ -23,7 +23,7 @@
23
23
  "createData": "npm run prepack && node scripts/createData",
24
24
  "dev": "echo Use npm run dev-app or npm run storybook && exit 1",
25
25
  "dev-app": "vite --open /pages/demo.html",
26
- "eslint": "eslint . --cache --max-warnings=40",
26
+ "eslint": "eslint . --cache --max-warnings=39",
27
27
  "eslint-fix": "npm run eslint -- --fix",
28
28
  "playwright": "npm run playwright-ct -- --project chromium && npm run playwright-e2e -- --project chromium",
29
29
  "playwright-ct": "playwright test -c playwright-ct.config.mts",
@@ -48,22 +48,22 @@
48
48
  },
49
49
  "homepage": "https://github.com/zakodium-oss/react-science#readme",
50
50
  "peerDependencies": {
51
- "@blueprintjs/core": "^6.0.0",
52
- "@blueprintjs/icons": "^6.0.0",
53
- "@blueprintjs/select": "^6.0.0",
54
- "fifo-logger": "^1.0.0 || ^2.0.0",
55
- "react": ">=18.0.0",
56
- "react-dom": ">=18.0.0"
51
+ "@blueprintjs/core": "^6.16.0",
52
+ "@blueprintjs/icons": "^6.11.0",
53
+ "@blueprintjs/select": "^6.3.0",
54
+ "fifo-logger": "^2.0.1",
55
+ "react": "^19.2.7",
56
+ "react-dom": "^19.2.7"
57
57
  },
58
58
  "dependencies": {
59
- "@atlaskit/pragmatic-drag-and-drop": "^1.8.0",
59
+ "@atlaskit/pragmatic-drag-and-drop": "^1.8.1",
60
60
  "@atlaskit/pragmatic-drag-and-drop-auto-scroll": "^2.1.5",
61
- "@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.1.0",
61
+ "@atlaskit/pragmatic-drag-and-drop-hitbox": "^1.2.0",
62
62
  "@emotion/styled": "^11.14.1",
63
- "@radix-ui/react-use-controllable-state": "^1.2.2",
64
- "@tanstack/react-form": "^1.29.0",
63
+ "@radix-ui/react-use-controllable-state": "^1.2.3",
64
+ "@tanstack/react-form": "^1.33.0",
65
65
  "@tanstack/react-table": "^8.21.3",
66
- "@tanstack/react-virtual": "^3.13.24",
66
+ "@tanstack/react-virtual": "^3.14.2",
67
67
  "@zakodium/pdnd-esm": "^1.0.2",
68
68
  "d3-scale-chromatic": "^3.1.0",
69
69
  "react-d3-utils": "^3.1.2",
@@ -73,66 +73,63 @@
73
73
  "react-inspector": "^9.0.0",
74
74
  "tinycolor2": "^1.6.0",
75
75
  "ts-pattern": "^5.9.0",
76
- "zod": "^4.3.6"
76
+ "zod": "^4.4.3"
77
77
  },
78
78
  "devDependencies": {
79
- "@blueprintjs/core": "6.0.0",
80
- "@blueprintjs/icons": "6.0.0",
81
- "@blueprintjs/select": "6.0.0",
79
+ "@blueprintjs/core": "6.16.0",
80
+ "@blueprintjs/icons": "6.11.0",
81
+ "@blueprintjs/select": "6.3.0",
82
82
  "@floating-ui/react": "^0.27.19",
83
- "@playwright/experimental-ct-react": "^1.59.1",
84
- "@playwright/test": "^1.59.1",
85
- "@storybook/addon-docs": "^10.3.5",
86
- "@storybook/react-vite": "^10.3.5",
87
- "@tanstack/react-query": "^5.99.0",
83
+ "@playwright/experimental-ct-react": "^1.60.0",
84
+ "@playwright/test": "^1.60.0",
85
+ "@storybook/addon-docs": "^10.4.3",
86
+ "@storybook/react-vite": "^10.4.3",
87
+ "@tanstack/react-query": "^5.101.0",
88
88
  "@types/babel__core": "^7.20.5",
89
89
  "@types/d3-scale-chromatic": "^3.1.0",
90
- "@types/node": "^24.7.0",
91
- "@types/react": "^18.3.12",
92
- "@types/react-dom": "^18.3.1",
90
+ "@types/node": "^24.13.1",
91
+ "@types/react": "^19.2.17",
92
+ "@types/react-dom": "^19.2.3",
93
93
  "@types/tinycolor2": "^1.4.6",
94
- "@vitejs/plugin-react": "^6.0.1",
95
- "@vitest/coverage-v8": "^4.1.4",
94
+ "@vitejs/plugin-react": "^6.0.2",
95
+ "@vitest/coverage-v8": "^4.1.8",
96
96
  "@zakodium/tsconfig": "^1.0.5",
97
97
  "biologic-converter": "^1.0.0",
98
- "cheminfo-font": "^1.26.0",
98
+ "cheminfo-font": "^1.27.0",
99
99
  "cheminfo-types": "^1.15.0",
100
100
  "cross-env": "^10.1.0",
101
- "eslint": "^9.39.2",
101
+ "eslint": "^9.39.4",
102
102
  "eslint-config-zakodium": "^20.0.0",
103
- "eslint-plugin-storybook": "^10.3.5",
104
- "fifo-logger": "^2.0.1",
103
+ "eslint-plugin-storybook": "^10.4.3",
104
+ "fifo-logger": "2.0.1",
105
105
  "filelist-utils": "^1.11.3",
106
- "immer": "^11.1.4",
107
- "jcampconverter": "^12.2.7",
108
- "ml-gsd": "^13.1.1",
109
- "ml-peak-shape-generator": "^4.2.0",
110
- "ml-signal-processing": "^2.2.0",
111
- "ml-spectra-processing": "^14.28.1",
112
- "ms-spectrum": "^3.10.0",
106
+ "immer": "^11.1.8",
107
+ "jcampconverter": "^12.3.3",
108
+ "ml-gsd": "^14.1.0",
109
+ "ml-peak-shape-generator": "^5.1.0",
110
+ "ml-signal-processing": "^2.2.1",
111
+ "ml-spectra-processing": "^14.29.0",
112
+ "ms-spectrum": "^3.10.1",
113
113
  "netcdfjs": "^4.0.0",
114
114
  "postcss-styled-syntax": "^0.7.1",
115
- "prettier": "^3.8.3",
116
- "react": "^18.3.1",
117
- "react-dom": "^18.3.1",
118
- "react-error-boundary": "^6.1.1",
115
+ "prettier": "^3.8.4",
116
+ "react": "19.2.7",
117
+ "react-dom": "19.2.7",
118
+ "react-error-boundary": "^6.1.2",
119
119
  "react-kbs": "^3.1.0",
120
- "react-ocl": "^8.7.0",
120
+ "react-ocl": "^8.7.1",
121
121
  "react-plot": "^3.1.2",
122
122
  "rimraf": "^6.1.3",
123
123
  "spc-parser": "^2.0.0",
124
- "storybook": "^10.3.5",
125
- "stylelint": "^17.8.0",
124
+ "storybook": "^10.4.3",
125
+ "stylelint": "^17.13.0",
126
126
  "stylelint-config-standard": "^40.0.0",
127
127
  "typescript": "^6.0.3",
128
- "vite": "^8.0.8",
129
- "vitest": "^4.1.4",
128
+ "vite": "^8.0.16",
129
+ "vitest": "^4.1.8",
130
130
  "wdf-parser": "^1.0.0"
131
131
  },
132
132
  "volta": {
133
- "node": "24.15.0"
134
- },
135
- "overrides": {
136
- "storybook": "$storybook"
133
+ "node": "24.16.0"
137
134
  }
138
135
  }
@@ -43,8 +43,12 @@ export function ActivityBar(props: ActivityBarProps) {
43
43
  const ActivityButton = styled(Button)`
44
44
  font-size: 1.125em;
45
45
  width: fit-content;
46
+
47
+ /* Override the padding set by the large button group */
48
+ padding: var(--bp-surface-spacing) calc(var(--bp-surface-spacing) * 2) !important;
49
+
46
50
  .${Classes.ICON} {
47
- color: ${Colors.DARK_GRAY3};
51
+ color: ${Colors.DARK_GRAY3} !important;
48
52
  }
49
53
 
50
54
  .${Classes.TAG} {
@@ -7,11 +7,10 @@ import type {
7
7
  import {
8
8
  AnchorButton,
9
9
  Button as BlueprintButton,
10
- Icon,
10
+ Classes,
11
11
  Tag,
12
12
  Tooltip,
13
13
  } from '@blueprintjs/core';
14
- import type { CSSObject } from '@emotion/styled';
15
14
  import styled from '@emotion/styled';
16
15
  import type { ReactNode } from 'react';
17
16
 
@@ -41,21 +40,40 @@ const ButtonTag = styled(Tag)`
41
40
  z-index: 20;
42
41
  `;
43
42
 
44
- // Setting the line-height makes sure regular sized buttons have a
45
- // height consistent with the input fields and across variants.
46
- // Using the same line height as in the blueprint docs.
47
- const buttonStyles: CSSObject = {
48
- lineHeight: 1.15,
49
- position: 'relative',
50
- };
43
+ interface InnerButtonProps {
44
+ isIconButton: boolean;
45
+ }
46
+
47
+ /*
48
+ Setting the line-height makes sure that when passing regular text in icons instead of an svg, they are vertically centered
49
+ max-width makes sure buttons with tag or hoverability indicator (both implying absolutely positioned elements) keep their intended width
50
+ When a button just has an icon, we override BP styles and remove the margin-right, because if it also has tag prop this is required to keep the layout correct.
51
+ */
52
+ const buttonStyles = ({ isIconButton }: InnerButtonProps) => `
53
+ line-height: 1em;
54
+ position: relative;
55
+ max-width: ${isIconButton ? '30px' : 'none'};
56
+
57
+ & .${Classes.ICON} {
58
+ ${isIconButton ? 'margin-right: 0px;' : ''}
59
+ }
60
+ `;
51
61
 
52
- const TooltipAnchorButton = styled(AnchorButton)<{
53
- children: ReactNode;
54
- }>(buttonStyles);
62
+ function shouldForwardButtonProp(propName: string) {
63
+ return propName !== 'isIconButton';
64
+ }
55
65
 
56
- const TooltipButton = styled(BlueprintButton)<{ children: ReactNode }>(
57
- buttonStyles,
58
- );
66
+ const TooltipAnchorButton = styled(AnchorButton, {
67
+ shouldForwardProp: shouldForwardButtonProp,
68
+ })<InnerButtonProps>`
69
+ ${(props) => buttonStyles(props)}
70
+ `;
71
+
72
+ const TooltipButton = styled(BlueprintButton, {
73
+ shouldForwardProp: shouldForwardButtonProp,
74
+ })<InnerButtonProps>`
75
+ ${(props) => buttonStyles(props)}
76
+ `;
59
77
 
60
78
  export function Button(props: ButtonProps) {
61
79
  const { tooltipProps = {}, children, tag, tagProps, ...buttonProps } = props;
@@ -80,34 +98,13 @@ export function Button(props: ButtonProps) {
80
98
  <InnerButton
81
99
  {...targetProps}
82
100
  {...buttonProps}
83
- icon={
84
- /*
85
- icon and children will be children of the same node.
86
- Blueprintjs' stylesheet treats the presence of multiple child elements
87
- as there being icon and text, styling the icon with a right margin
88
- so that the text is not right next to it.
89
- In blueprint alone, this only happens when the button has children.
90
- Here, we need to handle the case when the button has a tag, which
91
- adds a sibling but should not affect the margin on its own.
92
- */
93
- tag ? (
94
- <>
95
- {children ? (
96
- <Icon icon={buttonProps.icon} />
97
- ) : (
98
- <div style={{ display: 'contents' }}>
99
- <Icon icon={buttonProps.icon} />
100
- </div>
101
- )}
102
- <ButtonTag round intent="success" {...tagProps}>
103
- {tag}
104
- </ButtonTag>
105
- </>
106
- ) : (
107
- buttonProps.icon
108
- )
109
- }
101
+ isIconButton={!children && !buttonProps.text}
110
102
  >
103
+ {tag && (
104
+ <ButtonTag round intent="success" {...tagProps}>
105
+ {tag}
106
+ </ButtonTag>
107
+ )}
111
108
  {children}
112
109
  </InnerButton>
113
110
  )}
@@ -1,5 +1,5 @@
1
- import type { PopoverProps } from '@blueprintjs/core';
2
- import { Popover } from '@blueprintjs/core';
1
+ import type { PopoverNextProps } from '@blueprintjs/core';
2
+ import { PopoverNext } from '@blueprintjs/core';
3
3
  import styled from '@emotion/styled';
4
4
 
5
5
  import FixedColorPreview from '../preview/FixedColorPreview.js';
@@ -16,7 +16,7 @@ export interface ColorPickerDropdownProps extends Pick<
16
16
  | 'onChangeComplete'
17
17
  | 'onBlur'
18
18
  > {
19
- popoverProps?: Omit<PopoverProps, 'content'>;
19
+ popoverProps?: Omit<PopoverNextProps, 'content'>;
20
20
 
21
21
  /**
22
22
  * To link with label
@@ -45,10 +45,12 @@ export function ColorPickerDropdown(props: ColorPickerDropdownProps) {
45
45
  const { hex } = colorHelper.toState(color || 'white');
46
46
 
47
47
  return (
48
- <Popover
48
+ <PopoverNext
49
49
  targetProps={{ style: { width: '100%' } }}
50
50
  content={<ColorPicker color={color} {...otherProps} />}
51
- minimal
51
+ shouldReturnFocusOnClose={false}
52
+ animation="minimal"
53
+ arrow={false}
52
54
  {...popoverProps}
53
55
  >
54
56
  <ColorPickerRoot type="button" id={id}>
@@ -56,6 +58,6 @@ export function ColorPickerDropdown(props: ColorPickerDropdownProps) {
56
58
  <FixedColorPreview color={hex} />
57
59
  </ColorPickerPreview>
58
60
  </ColorPickerRoot>
59
- </Popover>
61
+ </PopoverNext>
60
62
  );
61
63
  }
@@ -26,7 +26,7 @@ const GradientSelectChevron = styled(FaChevronDown)`
26
26
  right: 0.5rem;
27
27
  `;
28
28
 
29
- const GradientSelectOption = styled.li`
29
+ const GradientSelectOption = styled.div`
30
30
  display: flex;
31
31
  flex-direction: column;
32
32
  padding-top: 5px;
@@ -6,6 +6,7 @@ import { defaultColorPalette } from '../palette.js';
6
6
 
7
7
  import { Alpha, CheckBoard, Hue, Saturation } from './common/index.js';
8
8
  import * as colorHelper from './helpers/color.js';
9
+ import type { SketchFieldsProps } from './sketch/SketchFields.js';
9
10
  import SketchFields from './sketch/SketchFields.js';
10
11
  import SketchPresetColors from './sketch/SketchPresetColors.js';
11
12
 
@@ -168,11 +169,14 @@ export function ColorPicker(props: ColorPickerProps) {
168
169
  setState(colorHelper.toState(color, 0));
169
170
  }
170
171
 
171
- const handleChange = useCallback(
172
- (data: any, event: any) => {
172
+ const handleChange = useCallback<SketchFieldsProps['onChange']>(
173
+ (data, event) => {
173
174
  const isValidColor = colorHelper.simpleCheckForValidColor(data);
174
175
  if (isValidColor) {
175
- const colors = colorHelper.toState(data, data.h || state.oldHue);
176
+ const colors = colorHelper.toState(
177
+ data,
178
+ ('h' in data && data.h) || state.oldHue,
179
+ );
176
180
  setState(colors);
177
181
  if (onChangeComplete) {
178
182
  debounceRef.current(onChangeComplete, colors, event);
@@ -245,7 +249,7 @@ export function ColorPicker(props: ColorPickerProps) {
245
249
  />
246
250
  <SketchPresetColors
247
251
  colors={presetColors}
248
- onClick={(data, e) => handleChange?.(data as ChangeCallbackProps, e)}
252
+ onClick={(data, e) => handleChange(data, e)}
249
253
  onSwatchHover={handleSwatchHover}
250
254
  />
251
255
  </div>
@@ -5,7 +5,7 @@ import type { HSL, RGB } from '../ColorPicker.js';
5
5
  import { EditableInput } from '../common/index.js';
6
6
  import * as color from '../helpers/color.js';
7
7
 
8
- interface SketchFieldsProps {
8
+ export interface SketchFieldsProps {
9
9
  onChange: (
10
10
  data: (RGB | HSL | { hex: string }) & { source: string },
11
11
  e: Event,
@@ -1,6 +1,6 @@
1
1
  import type { RadioGroupProps as BPRadioGroupProps } from '@blueprintjs/core';
2
2
  import { RadioGroup as BPRadioGroup } from '@blueprintjs/core';
3
- import type { FormEvent } from 'react';
3
+ import type { ChangeEvent } from 'react';
4
4
 
5
5
  import { useFieldContext } from '../../context/use_ts_form.ts';
6
6
  import { useFormContext } from '../input_groups/form_context.ts';
@@ -41,7 +41,7 @@ export function RadioGroup(props: RadioGroupProps) {
41
41
  .errors.map((e) => e.message)
42
42
  .at(0);
43
43
 
44
- function onChange(event: FormEvent<HTMLInputElement>) {
44
+ function onChange(event: ChangeEvent<HTMLInputElement>) {
45
45
  return field.handleChange(event.currentTarget.value);
46
46
  }
47
47
 
@@ -1,4 +1,4 @@
1
- import type { MutableRefObject, ReactNode } from 'react';
1
+ import type { ReactNode, RefObject } from 'react';
2
2
  import { useMemo } from 'react';
3
3
  import { useFullScreenHandle } from 'react-full-screen';
4
4
 
@@ -9,7 +9,7 @@ export interface FullscreenProviderProps {
9
9
  * Callback providing the ref which should be passed to the element that can be displayed fullscreen.
10
10
  * @param ref
11
11
  */
12
- children: (ref: MutableRefObject<HTMLDivElement | null>) => ReactNode;
12
+ children: (ref: RefObject<HTMLDivElement | null>) => ReactNode;
13
13
  /**
14
14
  * Callback which will be called in case toggling results in an error.
15
15
  * @param error - The error that happened. Value is not necessarily an instance of `Error` and may even be `undefined`.
@@ -277,19 +277,20 @@ function valueSearch(
277
277
  search: string,
278
278
  lowerCase = true,
279
279
  ): boolean {
280
+ let stringValue = match(value)
281
+ .with(P.boolean, String)
282
+ .with(P.number, String)
283
+ .with(P.string, (value) => {
284
+ return value === 'true' ? 'yes' : value === 'false' ? 'no' : value;
285
+ })
286
+ .with({}, (value) => JSON.stringify(value))
287
+ .otherwise(() => null);
288
+ if (stringValue === null) {
289
+ return true;
290
+ }
280
291
  if (lowerCase) {
281
- value = String(value as unknown).toLowerCase();
292
+ stringValue = stringValue.toLowerCase();
282
293
  search = search.toLowerCase();
283
294
  }
284
- return match(value)
285
- .with(P.boolean, (value) => String(value).includes(search))
286
- .with(P.number, (value) => String(value).includes(search))
287
- .with(P.string, (value) => {
288
- const newValue =
289
- value === 'true' ? 'yes' : value === 'false' ? 'no' : value;
290
-
291
- return newValue.includes(search);
292
- })
293
- .with({}, (value) => JSON.stringify(value).includes(search))
294
- .otherwise(() => true);
295
+ return stringValue.includes(search);
295
296
  }
@@ -1,6 +1,7 @@
1
1
  import type { RadioGroupProps, RadioProps } from '@blueprintjs/core';
2
2
  import { RadioGroup } from '@blueprintjs/core';
3
3
  import styled from '@emotion/styled';
4
+ import type { ReactElement } from 'react';
4
5
  import { Children, cloneElement } from 'react';
5
6
 
6
7
  import { RadioButton } from './RadioButton.js';
@@ -68,13 +69,17 @@ export function RadioButtonGroup(props: RadioButtonGroupProps) {
68
69
  return child;
69
70
  }
70
71
  if (child.type === RadioButton) {
71
- return cloneElement(child, {
72
- ...child.props,
72
+ const radioChild = child as ReactElement<
73
+ RadioProps,
74
+ typeof RadioButton
75
+ >;
76
+ return cloneElement(radioChild, {
77
+ ...radioChild.props,
73
78
  size,
74
79
  name,
75
80
  onChange,
76
- checked: child.props.value === selectedValue,
77
- disabled: groupDisabled || child.props.disabled,
81
+ checked: radioChild.props.value === selectedValue,
82
+ disabled: groupDisabled || radioChild.props.disabled,
78
83
  });
79
84
  }
80
85
  return child;
@@ -1,5 +1,5 @@
1
1
  import { BlueprintProvider, FocusStyleManager } from '@blueprintjs/core';
2
- import type { CSSProperties, MutableRefObject, ReactNode } from 'react';
2
+ import type { CSSProperties, ReactNode } from 'react';
3
3
  import { useCallback, useState } from 'react';
4
4
 
5
5
  import { AccordionProvider } from '../accordion/index.js';
@@ -43,9 +43,7 @@ export function RootLayout(props: RootLayoutProps) {
43
43
  id="root-layout"
44
44
  ref={(node) => {
45
45
  if (node) {
46
- const mutableRef =
47
- fullscreenRef as MutableRefObject<HTMLDivElement>;
48
- mutableRef.current = node;
46
+ fullscreenRef.current = node;
49
47
  refCallback(node);
50
48
  }
51
49
  }}
@@ -223,7 +223,7 @@ interface SplitterProps {
223
223
  direction: SplitPaneDirection;
224
224
  isOpen: boolean;
225
225
  isResizing: boolean;
226
- splitterRef: RefObject<HTMLDivElement>;
226
+ splitterRef: RefObject<HTMLDivElement | null>;
227
227
  }
228
228
 
229
229
  function Splitter(props: SplitterProps) {
@@ -12,7 +12,7 @@ import { serializeSize } from './split_pane_helpers.js';
12
12
  interface UseSplitPaneSizeOptions {
13
13
  controlledSide: SplitPaneSide;
14
14
  direction: SplitPaneDirection;
15
- splitterRef: RefObject<HTMLDivElement>;
15
+ splitterRef: RefObject<HTMLDivElement | null>;
16
16
  sizeType: SplitPaneType;
17
17
  onSizeChange: (newSize: ParsedSplitPaneSize) => void;
18
18
  onResize?: (newSize: SplitPaneSize) => void;
@@ -6,7 +6,7 @@ import { useFlashedRowContext } from './flashed_row_context.js';
6
6
 
7
7
  export function useFlashRowEffect(
8
8
  id: string,
9
- tableRowRef: RefObject<HTMLTableRowElement>,
9
+ tableRowRef: RefObject<HTMLTableRowElement | null>,
10
10
  ) {
11
11
  const [flashedItemId, setFlashedItemId] = useFlashedRowContext();
12
12
  useEffect(() => {
@@ -5,7 +5,7 @@ import type { DraggableItemState } from './item_data.js';
5
5
 
6
6
  export interface DraggableRowContext {
7
7
  state: DraggableItemState;
8
- dragHandleRef: RefObject<HTMLButtonElement>;
8
+ dragHandleRef: RefObject<HTMLButtonElement | null>;
9
9
  }
10
10
 
11
11
  export const draggableRowContext = createContext<DraggableRowContext | null>(
@@ -73,7 +73,7 @@ export function TableDraggableRowTr<TData extends RowData>(
73
73
  );
74
74
  }
75
75
 
76
- const data = getItemData(row as Row<unknown>, instanceId);
76
+ const data = getItemData(row, instanceId);
77
77
 
78
78
  return combine(
79
79
  draggable({
@@ -11,7 +11,10 @@ export interface ItemData {
11
11
  [key: symbol]: unknown;
12
12
  }
13
13
 
14
- export function getItemData(row: Row<unknown>, instanceId: symbol): ItemData {
14
+ export function getItemData<RowType>(
15
+ row: Row<RowType>,
16
+ instanceId: symbol,
17
+ ): ItemData {
15
18
  return {
16
19
  [itemKey]: true,
17
20
  id: row.id,
@@ -43,14 +43,16 @@ export function ItemOrderProvider<T = unknown>(
43
43
  [items, onOrderChanged],
44
44
  );
45
45
 
46
- const value = useMemo(
47
- () => ({
46
+ const value = useMemo(() => {
47
+ // This assertion is necessary because the provider cannot contain the
48
+ // T type instantiated by this component.
49
+ const contextItems = items as Array<Row<unknown>>;
50
+ return {
48
51
  reorderItem,
49
- items: items as Array<Row<unknown>>,
52
+ items: contextItems,
50
53
  instanceId,
51
- }),
52
- [reorderItem, items, instanceId],
53
- );
54
+ };
55
+ }, [reorderItem, items, instanceId]);
54
56
 
55
57
  return (
56
58
  <itemOrderContext.Provider value={value}>
@@ -21,7 +21,7 @@ import { useItemOrder } from './item_order_context.js';
21
21
  * @param enabled Enable or disable the monitoring.
22
22
  */
23
23
  export function useDropMonitor(
24
- scrollElementRef: RefObject<Element>,
24
+ scrollElementRef: RefObject<Element | null>,
25
25
  enabled: boolean,
26
26
  ) {
27
27
  const { reorderItem, items } = useItemOrder();
@@ -215,7 +215,7 @@ interface RegularTableProps<
215
215
  * By default, the table itself is used as the scrollable element, but
216
216
  * you must style it to make it scrollable.
217
217
  */
218
- scrollableElementRef?: RefObject<Element>;
218
+ scrollableElementRef?: RefObject<Element | null>;
219
219
  }
220
220
 
221
221
  interface VirtualizedTableProps<
@@ -4,12 +4,12 @@ import { useRef } from 'react';
4
4
 
5
5
  import { useFlashRowEffect } from './flash_row/use_flash_row_effect.js';
6
6
 
7
- export interface TableRowTrProps {
8
- row: Row<unknown>;
7
+ export interface TableRowTrProps<RowType> {
8
+ row: Row<RowType>;
9
9
  trProps: JSX.IntrinsicElements['tr'];
10
10
  }
11
11
 
12
- export function TableRowTr(props: TableRowTrProps) {
12
+ export function TableRowTr<RowType>(props: TableRowTrProps<RowType>) {
13
13
  const { row, trProps } = props;
14
14
  const tableRowRef = useRef<HTMLTableRowElement>(null);
15
15
  useFlashRowEffect(row.id, tableRowRef);
@@ -28,7 +28,7 @@ interface ScrollContainerProps {
28
28
  /**
29
29
  * A ref to the effective scroll container.
30
30
  */
31
- scrollRef: RefObject<Element>;
31
+ scrollRef: RefObject<Element | null>;
32
32
  /**
33
33
  * The user provided ref to attach the scroll callbacks to.
34
34
  * It is set by the ScrollContainer component if the table is virtualized.
@@ -74,7 +74,7 @@ export function ScrollContainer(props: ScrollContainerProps) {
74
74
  }
75
75
 
76
76
  interface ContainerWithReorderingProps {
77
- scrollElementRef: RefObject<Element>;
77
+ scrollElementRef: RefObject<Element | null>;
78
78
  isReorderingEnabled: boolean;
79
79
  children: ReactNode;
80
80
  }
@@ -91,7 +91,7 @@ function ContainerVirtual(props: ContainerWithReorderingProps) {
91
91
  }
92
92
 
93
93
  interface NoContainerProps {
94
- scrollElementRef: RefObject<Element>;
94
+ scrollElementRef: RefObject<Element | null>;
95
95
  enabled: boolean;
96
96
  children: ReactNode;
97
97
  }
@@ -19,7 +19,7 @@ export function useTableScroll<TData extends RowData>(options: {
19
19
  /**
20
20
  * A ref to the effective scroll container.
21
21
  */
22
- scrollRef: RefObject<Element>;
22
+ scrollRef: RefObject<Element | null>;
23
23
  /*
24
24
  Tanstack table instance.
25
25
  */