@workbench-kit/react 0.0.2-prototype.0.1.4 → 0.0.2-prototype.0.2.4

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 (534) hide show
  1. package/package.json +31 -23
  2. package/src/brand/TilepaperAppIcon.tsx +181 -0
  3. package/src/brand/index.ts +2 -0
  4. package/src/brand/tilepaper-app-icon-geometry.ts +201 -0
  5. package/src/icons/WorkbenchIcon.tsx +57 -0
  6. package/src/icons/WorkbenchIconContext.tsx +25 -0
  7. package/src/icons/file-icon.ts +154 -0
  8. package/src/icons/index.ts +17 -0
  9. package/src/icons/resolveWorkbenchIcon.ts +48 -0
  10. package/src/icons/types.ts +28 -0
  11. package/src/index.ts +261 -71
  12. package/src/jdw/JdwPreview.tsx +165 -8
  13. package/src/jdw/JdwPreviewViewport.tsx +190 -0
  14. package/src/jdw/JsonCodeEditorPane.tsx +165 -15
  15. package/src/jdw/builtins/renderBuiltinWidgetLeaf.tsx +101 -0
  16. package/src/jdw/createBuiltinJdwRegistry.ts +330 -5
  17. package/src/jdw/cssRenderBackend.tsx +96 -7
  18. package/src/jdw/document.ts +0 -3
  19. package/src/jdw/fixtures/jdw-sample-screens.ts +10 -8
  20. package/src/jdw/index.ts +9 -4
  21. package/src/jdw/jdw-preview-viewport.css +41 -0
  22. package/src/jdw/renderJdw.tsx +49 -8
  23. package/src/json-config/JsonConfigWorkbench.tsx +11 -14
  24. package/src/layout/ViewEmptyState.tsx +14 -0
  25. package/src/layout/WorkbenchCanvas.tsx +113 -6
  26. package/src/layout/WorkbenchLayout.tsx +3 -0
  27. package/src/layout/WorkbenchLayoutBase.tsx +43 -2
  28. package/src/layout/WorkbenchMediaPreviewViewport.tsx +122 -0
  29. package/src/layout/WorkbenchPropertyOverrideLabel.tsx +90 -0
  30. package/src/layout/WorkbenchPropertyPanel.tsx +153 -17
  31. package/src/layout/WorkbenchPropertySearch.tsx +51 -0
  32. package/src/layout/WorkbenchTree.tsx +9 -10
  33. package/src/layout/canvas/canvas-drag-ghost.css +21 -0
  34. package/src/layout/canvas/canvas-drag-preview-frame.css +15 -0
  35. package/src/layout/canvas/canvas-drop-indicator.css +16 -0
  36. package/src/layout/canvas/canvas-frame-handle.css +37 -0
  37. package/src/layout/canvas/canvas-frame-surface.css +24 -0
  38. package/src/layout/canvas/canvas-guide-block.css +17 -0
  39. package/src/layout/canvas/canvas-guide-layer.css +6 -0
  40. package/src/layout/canvas/canvas-guide-line.css +22 -0
  41. package/src/layout/canvas/canvas-item-badge.css +23 -0
  42. package/src/layout/canvas/canvas-item-frame.css +54 -0
  43. package/src/layout/canvas/canvas-pane-surface.css +9 -0
  44. package/src/layout/canvas/canvas-placeholder.css +21 -0
  45. package/src/layout/canvas/canvas-resize-frame.css +9 -0
  46. package/src/layout/canvas/canvas-resize-handle.css +74 -0
  47. package/src/layout/canvas/canvas-resize-preview.css +11 -0
  48. package/src/layout/canvas/canvas-selection-marquee.css +14 -0
  49. package/src/layout/canvas/canvas-viewport.css +18 -0
  50. package/src/layout/canvas/index.css +19 -0
  51. package/src/layout/canvas/preview-canvas.css +144 -0
  52. package/src/layout/editor/editor-body.css +9 -0
  53. package/src/layout/editor/editor-bottom-panel.css +44 -0
  54. package/src/layout/editor/editor-frame.css +14 -0
  55. package/src/layout/editor/editor-viewport.css +7 -0
  56. package/src/layout/editor/floating-menu.css +91 -0
  57. package/src/layout/editor/index.css +10 -0
  58. package/src/layout/editor/parse-error.css +9 -0
  59. package/src/layout/editor/problem-item.css +52 -0
  60. package/src/layout/editor/problem-list.css +7 -0
  61. package/src/layout/editor/render-surface.css +13 -0
  62. package/src/layout/fillScrollContract.ts +49 -0
  63. package/src/layout/fullscreen/fullscreen-backdrop.css +31 -0
  64. package/src/layout/fullscreen/fullscreen-button.css +44 -0
  65. package/src/layout/fullscreen/fullscreen-carousel.css +20 -0
  66. package/src/layout/fullscreen/fullscreen-content.css +8 -0
  67. package/src/layout/fullscreen/fullscreen-empty.css +16 -0
  68. package/src/layout/fullscreen/fullscreen-header.css +77 -0
  69. package/src/layout/fullscreen/fullscreen-hero.css +41 -0
  70. package/src/layout/fullscreen/fullscreen-nav-button.css +29 -0
  71. package/src/layout/fullscreen/fullscreen-option.css +83 -0
  72. package/src/layout/fullscreen/fullscreen-pill-row.css +6 -0
  73. package/src/layout/fullscreen/fullscreen-pill.css +10 -0
  74. package/src/layout/fullscreen/fullscreen-root.css +11 -0
  75. package/src/layout/fullscreen/index.css +13 -0
  76. package/src/layout/index.ts +156 -0
  77. package/src/layout/layout-base/banner.css +32 -0
  78. package/src/layout/layout-base/center.css +7 -0
  79. package/src/layout/layout-base/column.css +7 -0
  80. package/src/layout/layout-base/divider.css +5 -0
  81. package/src/layout/layout-base/empty.css +12 -0
  82. package/src/layout/layout-base/fill-scroll.css +36 -0
  83. package/src/layout/layout-base/fill.css +18 -0
  84. package/src/layout/layout-base/index.css +13 -0
  85. package/src/layout/layout-base/pane.css +6 -0
  86. package/src/layout/layout-base/panel-scroll.css +5 -0
  87. package/src/layout/layout-base/panel-surface.css +14 -0
  88. package/src/layout/layout-base/root.css +9 -0
  89. package/src/layout/layout-base/section-title.css +8 -0
  90. package/src/layout/layout.css +10 -0
  91. package/src/layout/layoutHelpers.ts +4 -2
  92. package/src/layout/media/index.css +2 -0
  93. package/src/layout/media/media-preview-viewport.css +69 -0
  94. package/src/layout/{Panel.tsx → panel/Panel.tsx} +29 -40
  95. package/src/layout/panel/TemplateGallery.tsx +90 -0
  96. package/src/layout/panel/WorkbenchAuthoringShell.tsx +57 -0
  97. package/src/layout/panel/WorkbenchLabeledPane.tsx +81 -0
  98. package/src/layout/panel/WorkbenchSidebarStack.tsx +15 -0
  99. package/src/layout/panel/filter-bar.css +59 -0
  100. package/src/layout/panel/index.css +7 -0
  101. package/src/layout/panel/index.ts +70 -0
  102. package/src/layout/panel/preview-pane.css +63 -0
  103. package/src/layout/panel/template-gallery.css +131 -0
  104. package/src/layout/panel/workbench-authoring-shell.css +48 -0
  105. package/src/layout/panel/workbench-labeled-pane.css +69 -0
  106. package/src/layout/panel/workbench-sidebar-stack.css +18 -0
  107. package/src/layout/property/color-input.css +8 -0
  108. package/src/layout/property/color-row.css +6 -0
  109. package/src/layout/property/index.css +15 -0
  110. package/src/layout/property/property-card.css +8 -0
  111. package/src/layout/property/property-grid.css +24 -0
  112. package/src/layout/property/property-hint.css +4 -0
  113. package/src/layout/property/property-inline.css +10 -0
  114. package/src/layout/property/property-key-value.css +29 -0
  115. package/src/layout/property/property-override-label.css +34 -0
  116. package/src/layout/property/property-panel.css +20 -0
  117. package/src/layout/property/property-row.css +17 -0
  118. package/src/layout/property/property-search.css +43 -0
  119. package/src/layout/property/property-section.css +97 -0
  120. package/src/layout/property/property-stack.css +11 -0
  121. package/src/layout/property/property-toggle.css +14 -0
  122. package/src/layout/propertyFieldFilter.ts +84 -0
  123. package/src/layout/sidebar/SideBarViewFrame.tsx +235 -0
  124. package/src/layout/sidebar/SideBarViewTabStrip.tsx +60 -0
  125. package/src/layout/sidebar/SideBarViewTitleMenu.tsx +75 -0
  126. package/src/layout/sidebar/SidebarActionIconBar.tsx +242 -0
  127. package/src/layout/sidebar/SidebarSectionNestingContext.tsx +21 -0
  128. package/src/layout/sidebar/SidebarSlotChrome.tsx +32 -0
  129. package/src/layout/sidebar/SidebarToolbar.tsx +10 -0
  130. package/src/layout/sidebar/WorkbenchActionSidebar.tsx +73 -0
  131. package/src/layout/{WorkbenchSidebarActions.tsx → sidebar/WorkbenchSidebarActions.tsx} +105 -51
  132. package/src/layout/sidebar/WorkbenchSidebarSectionStack.tsx +165 -0
  133. package/src/layout/sidebar/index.css +5 -0
  134. package/src/layout/sidebar/index.ts +55 -0
  135. package/src/layout/sidebar/sidebar-chrome.css +95 -0
  136. package/src/layout/sidebar/sidebar-section-stack.css +25 -0
  137. package/src/layout/sidebar/sidebar-section.css +124 -0
  138. package/src/layout/sidebar/sidebar-view.css +290 -0
  139. package/src/layout/tree/drag-preview.css +25 -0
  140. package/src/layout/tree/index.css +10 -0
  141. package/src/layout/tree/template-glyph.css +96 -0
  142. package/src/layout/tree/tree-action.css +20 -0
  143. package/src/layout/tree/tree-drag-overlay.css +13 -0
  144. package/src/layout/tree/tree-drop-line.css +17 -0
  145. package/src/layout/tree/tree-drop-zone.css +13 -0
  146. package/src/layout/tree/tree-expander.css +23 -0
  147. package/src/layout/tree/tree-item.css +93 -0
  148. package/src/layout/tree/tree.css +49 -0
  149. package/src/layout/usePreviewViewport.ts +428 -0
  150. package/src/modal/ConfirmDialog.tsx +1 -1
  151. package/src/modal/Modal.tsx +148 -305
  152. package/src/modal/ModalResizeHandles.tsx +40 -0
  153. package/src/modal/ModalTitlebar.tsx +86 -0
  154. package/src/modal/modal.css +291 -0
  155. package/src/modal/modalContainer.ts +36 -0
  156. package/src/modal/modalPosition.ts +36 -0
  157. package/src/modal/modalSize.ts +84 -0
  158. package/src/modal/modalTypes.ts +13 -0
  159. package/src/modal/useModalContainerViewport.ts +41 -0
  160. package/src/modal/useModalDrag.ts +118 -0
  161. package/src/modal/useModalResize.ts +122 -0
  162. package/src/modal/useModalWindowFrame.ts +122 -0
  163. package/src/overlay/ContextMenu.tsx +28 -50
  164. package/src/overlay/clampFixedOverlayPosition.ts +22 -0
  165. package/src/overlay/context-menu.css +127 -0
  166. package/src/overlay/index.ts +31 -0
  167. package/src/overlay/measureAnchoredOverlayPanel.ts +107 -0
  168. package/src/overlay/overlay.css +2 -0
  169. package/src/overlay/pointerPassthroughRegion.ts +83 -0
  170. package/src/overlay/useAnchoredOverlayPanel.ts +222 -0
  171. package/src/overlay/useClampedFixedOverlayPosition.ts +27 -0
  172. package/src/overlay/useContextMenuState.ts +59 -0
  173. package/src/overlay/useFixedOverlayDismiss.ts +49 -0
  174. package/src/overlay/usePointerPassthroughRegion.ts +87 -0
  175. package/src/primitives/{AbsoluteBox.tsx → absolute-box/AbsoluteBox.tsx} +1 -1
  176. package/src/primitives/absolute-box/index.ts +1 -0
  177. package/src/primitives/{Badge.tsx → badge/Badge.tsx} +4 -2
  178. package/src/primitives/badge/badge.css +20 -0
  179. package/src/primitives/badge/index.ts +1 -0
  180. package/src/primitives/{Button.tsx → button/Button.tsx} +3 -2
  181. package/src/primitives/button/button.css +76 -0
  182. package/src/primitives/button/index.ts +1 -0
  183. package/src/primitives/catalog-browse-card/CatalogBrowseCard.tsx +121 -0
  184. package/src/primitives/catalog-browse-card/catalog-browse-card.css +175 -0
  185. package/src/primitives/catalog-browse-card/index.ts +1 -0
  186. package/src/primitives/catalog-browse-pane/CatalogBrowseFacetChips.tsx +59 -0
  187. package/src/primitives/catalog-browse-pane/CatalogBrowsePane.tsx +360 -0
  188. package/src/primitives/catalog-browse-pane/catalog-browse-facet-chips.css +8 -0
  189. package/src/primitives/catalog-browse-pane/catalog-browse-pane.css +84 -0
  190. package/src/primitives/catalog-browse-pane/filterCatalogBrowseItems.ts +27 -0
  191. package/src/primitives/catalog-browse-pane/index.ts +3 -0
  192. package/src/primitives/catalog-filter-overlay/CatalogFilterOverlay.tsx +73 -0
  193. package/src/primitives/catalog-filter-overlay/catalog-filter-overlay.css +65 -0
  194. package/src/primitives/catalog-filter-overlay/index.ts +1 -0
  195. package/src/primitives/checkbox/Checkbox.tsx +40 -0
  196. package/src/primitives/checkbox/checkbox.css +81 -0
  197. package/src/primitives/checkbox/index.ts +1 -0
  198. package/src/primitives/chip/Chip.tsx +43 -0
  199. package/src/primitives/chip/chip.css +110 -0
  200. package/src/primitives/chip/index.ts +2 -0
  201. package/src/primitives/clearable-text-input/ClearableTextInput.tsx +78 -0
  202. package/src/primitives/clearable-text-input/clearable-text-input.css +15 -0
  203. package/src/primitives/clearable-text-input/index.ts +1 -0
  204. package/src/primitives/codicon/Codicon.tsx +20 -0
  205. package/src/primitives/codicon/index.ts +1 -0
  206. package/src/primitives/{EmptyState.tsx → empty-state/EmptyState.tsx} +9 -3
  207. package/src/primitives/empty-state/empty-state.css +20 -0
  208. package/src/primitives/empty-state/index.ts +1 -0
  209. package/src/primitives/external-link-button/ExternalLinkButton.tsx +56 -0
  210. package/src/primitives/external-link-button/index.ts +1 -0
  211. package/src/primitives/{Field.tsx → field/Field.tsx} +2 -1
  212. package/src/primitives/field/field.css +51 -0
  213. package/src/primitives/field/index.ts +1 -0
  214. package/src/primitives/file-icon/FileIcon.tsx +21 -0
  215. package/src/primitives/file-icon/index.ts +1 -0
  216. package/src/primitives/{IconButton.tsx → icon-button/IconButton.tsx} +6 -4
  217. package/src/primitives/icon-button/icon-button.css +46 -0
  218. package/src/primitives/icon-button/index.ts +1 -0
  219. package/src/primitives/index.ts +210 -50
  220. package/src/primitives/library-detail-layout/LibraryDetailLayout.tsx +135 -0
  221. package/src/primitives/library-detail-layout/index.ts +1 -0
  222. package/src/primitives/library-detail-layout/library-detail-layout.css +169 -0
  223. package/src/primitives/library-facet-filter-panel/LibraryFacetFilterPanel.tsx +454 -0
  224. package/src/primitives/library-facet-filter-panel/index.ts +1 -0
  225. package/src/primitives/library-facet-filter-panel/library-facet-filter-panel.css +205 -0
  226. package/src/primitives/library-facet-filter-strip/LibraryFacetFilterStrip.tsx +527 -0
  227. package/src/primitives/library-facet-filter-strip/index.ts +1 -0
  228. package/src/primitives/library-facet-filter-strip/library-facet-filter-strip.css +31 -0
  229. package/src/primitives/{List.tsx → list/List.tsx} +15 -6
  230. package/src/primitives/list/index.ts +1 -0
  231. package/src/primitives/list/list-empty-state.css +10 -0
  232. package/src/primitives/list/list-item.css +93 -0
  233. package/src/primitives/list/list.css +6 -0
  234. package/src/primitives/number-input/NumberInput.tsx +235 -0
  235. package/src/primitives/number-input/index.ts +1 -0
  236. package/src/primitives/number-input/number-input.css +105 -0
  237. package/src/primitives/panel-loading/PanelLoading.tsx +29 -0
  238. package/src/primitives/panel-loading/index.ts +1 -0
  239. package/src/primitives/panel-loading/panel-loading.css +16 -0
  240. package/src/primitives/panel-surface/panel-surface.css +77 -0
  241. package/src/primitives/primitives.css +36 -0
  242. package/src/primitives/record-media-hero/RecordMediaHero.tsx +81 -0
  243. package/src/primitives/record-media-hero/index.ts +1 -0
  244. package/src/primitives/record-media-hero/record-media-hero.css +84 -0
  245. package/src/primitives/scroll-area/ScrollArea.tsx +200 -0
  246. package/src/primitives/scroll-area/index.ts +1 -0
  247. package/src/primitives/scroll-area/scroll-area-overlay.css +69 -0
  248. package/src/primitives/scroll-area-infinite-load/ScrollAreaInfiniteSentinel.tsx +22 -0
  249. package/src/primitives/scroll-area-infinite-load/index.ts +2 -0
  250. package/src/primitives/scroll-area-infinite-load/scroll-area-infinite-sentinel.css +6 -0
  251. package/src/primitives/scroll-area-infinite-load/useScrollAreaInfiniteLoad.ts +84 -0
  252. package/src/primitives/searchable-multi-select/SearchableMultiSelect.tsx +378 -0
  253. package/src/primitives/searchable-multi-select/index.ts +9 -0
  254. package/src/primitives/searchable-multi-select/overlay.ts +125 -0
  255. package/src/primitives/searchable-multi-select/searchable-multi-select.css +129 -0
  256. package/src/primitives/select/Select.tsx +21 -3
  257. package/src/primitives/select/overlay.ts +23 -4
  258. package/src/primitives/select/select.app.css +5 -2
  259. package/src/primitives/select/select.css +49 -12
  260. package/src/primitives/styles.css +3 -952
  261. package/src/primitives/tabbed-panels/TabbedPanels.tsx +68 -0
  262. package/src/primitives/tabbed-panels/index.ts +2 -0
  263. package/src/primitives/tabbed-panels/tabbed-panels.css +58 -0
  264. package/src/primitives/{TextArea.tsx → text-area/TextArea.tsx} +2 -1
  265. package/src/primitives/text-area/index.ts +1 -0
  266. package/src/primitives/{TextInput.tsx → text-input/TextInput.tsx} +2 -1
  267. package/src/primitives/text-input/index.ts +1 -0
  268. package/src/primitives/text-input/input.css +54 -0
  269. package/src/primitives/{Toolbar.tsx → toolbar/Toolbar.tsx} +1 -1
  270. package/src/primitives/toolbar/index.ts +1 -0
  271. package/src/primitives/visually-hidden/visually-hidden.css +11 -0
  272. package/src/primitives/{WorkbenchEditor.tsx → workbench-editor/WorkbenchEditor.tsx} +81 -43
  273. package/src/primitives/workbench-editor/button-group.css +10 -0
  274. package/src/primitives/workbench-editor/editor-tabs.css +201 -0
  275. package/src/primitives/workbench-editor/index.ts +1 -0
  276. package/src/primitives/workbench-editor/resizable-panels.css +53 -0
  277. package/src/primitives/workbench-editor/segmented-control.css +98 -0
  278. package/src/primitives/workbench-media-slot/WorkbenchMediaPlaceholder.tsx +25 -0
  279. package/src/primitives/workbench-media-slot/WorkbenchMediaSlot.tsx +60 -0
  280. package/src/primitives/workbench-media-slot/index.ts +2 -0
  281. package/src/primitives/workbench-media-slot/media-slot.css +72 -0
  282. package/src/primitives/workbench-thumbnail/WorkbenchThumbnail.tsx +38 -0
  283. package/src/primitives/workbench-thumbnail/index.ts +1 -0
  284. package/src/primitives/workbench-thumbnail/thumbnail.css +69 -0
  285. package/src/scrollbars.css +77 -2
  286. package/src/styles.css +14 -7735
  287. package/src/test-utils/workbenchMonacoMock.tsx +37 -0
  288. package/src/utils/dragMime.ts +89 -0
  289. package/src/utils/useWorkbenchMediaImage.ts +37 -0
  290. package/src/widget-asset/WidgetAssetEditor.tsx +9 -7
  291. package/src/widget-asset/WidgetAssetModeControls.tsx +1 -1
  292. package/src/widget-asset/WidgetAssetWorkbench.tsx +5 -6
  293. package/src/widget-studio/create-widget-studio-workspace-editor.tsx +1 -2
  294. package/src/widget-studio/index.ts +4 -1
  295. package/src/widget-studio/resolve-widget-studio-asset-catalog.ts +27 -10
  296. package/src/widget-tree/WidgetAssetPalette.tsx +35 -7
  297. package/src/widget-tree/WidgetInspectorPanel.tsx +53 -3
  298. package/src/widget-tree/WidgetSourceEditor.tsx +90 -3
  299. package/src/widget-tree/WidgetTreeCanvasPreview.tsx +875 -0
  300. package/src/widget-tree/WidgetTreeLab.tsx +411 -83
  301. package/src/widget-tree/WidgetTreeModeControls.tsx +30 -1
  302. package/src/widget-tree/WidgetTreeSidePanel.tsx +24 -34
  303. package/src/widget-tree/WidgetTreeView.tsx +711 -11
  304. package/src/widget-tree/WidgetTreeWorkbench.tsx +59 -15
  305. package/src/widget-tree/WidgetTreeWorkspaceShell.tsx +26 -8
  306. package/src/widget-tree/index.ts +22 -4
  307. package/src/widget-tree/widget-placement-asset-dnd.ts +35 -0
  308. package/src/widget-tree/widget-tree-document.ts +3 -9
  309. package/src/widget-tree/widget-tree-editor-state.ts +40 -0
  310. package/src/widget-tree/widget-tree-layout.ts +48 -3
  311. package/src/widget-tree/widget-tree-play-helpers.ts +69 -58
  312. package/src/workbench/ActivityBar.tsx +128 -21
  313. package/src/workbench/ArtifactShell.tsx +8 -8
  314. package/src/workbench/CommandGroupShell.tsx +131 -0
  315. package/src/workbench/CommandList.tsx +167 -0
  316. package/src/workbench/CommandPalette.tsx +194 -596
  317. package/src/workbench/ConfirmationFlow.tsx +3 -5
  318. package/src/workbench/MarkdownPreview.tsx +8 -12
  319. package/src/workbench/ShortcutCommandBridge.tsx +1 -4
  320. package/src/workbench/SplitView.tsx +385 -36
  321. package/src/workbench/StatusBar.tsx +4 -2
  322. package/src/workbench/StructuredArtifactEditor.tsx +3 -3
  323. package/src/workbench/Timeline.tsx +2 -7
  324. package/src/workbench/WorkbenchCanvasShell.defaults.ts +106 -0
  325. package/src/workbench/WorkbenchCanvasShell.model.ts +46 -0
  326. package/src/workbench/WorkbenchCanvasShell.tsx +32 -146
  327. package/src/workbench/WorkbenchDesktopTitleBar.tsx +126 -0
  328. package/src/workbench/WorkbenchEditorTabs.tsx +52 -0
  329. package/src/workbench/WorkbenchModalPortal.tsx +52 -0
  330. package/src/workbench/WorkbenchPlatformContext.tsx +31 -0
  331. package/src/workbench/WorkbenchShell.tsx +144 -26
  332. package/src/workbench/WorkbenchShellTitleBarLayoutControls.tsx +80 -0
  333. package/src/workbench/WorkbenchStandaloneShell.tsx +327 -41
  334. package/src/workbench/WorkbenchThemeProvider.tsx +142 -0
  335. package/src/workbench/WorkbenchViewEditor.tsx +75 -0
  336. package/src/workbench/WorkbenchViewSidebar.tsx +85 -0
  337. package/src/workbench/WorkbenchWindowChromeControls.tsx +290 -0
  338. package/src/workbench/activityBarOrder.ts +98 -0
  339. package/src/workbench/appearanceLabels.ts +28 -0
  340. package/src/workbench/auth/WorkbenchLoginView.tsx +4 -6
  341. package/src/workbench/auth/auth-flows.css +440 -0
  342. package/src/workbench/auth/auth.css +3 -0
  343. package/src/workbench/auth/profile-modals.css +115 -0
  344. package/src/workbench/bootstrap/WorkbenchBootstrapGate.tsx +45 -0
  345. package/src/workbench/bootstrap/WorkbenchBootstrapView.tsx +100 -0
  346. package/src/workbench/bootstrap/index.ts +12 -0
  347. package/src/workbench/bootstrap/useWorkbenchBootstrap.ts +130 -0
  348. package/src/workbench/chat/ChatCommandProposalCard.tsx +115 -0
  349. package/src/workbench/chat/ChatComposer.tsx +32 -34
  350. package/src/workbench/chat/ChatConversationBar.tsx +134 -0
  351. package/src/workbench/chat/ChatHistoryMenu.tsx +171 -0
  352. package/src/workbench/chat/ChatHistoryMenuRow.tsx +74 -0
  353. package/src/workbench/chat/ChatMessageCollapsible.tsx +115 -0
  354. package/src/workbench/chat/ChatMessageItem.tsx +293 -19
  355. package/src/workbench/chat/ChatMessageList.tsx +109 -24
  356. package/src/workbench/chat/ChatPanel.tsx +132 -19
  357. package/src/workbench/chat/ChatPhasedRunProgress.tsx +202 -0
  358. package/src/workbench/chat/ChatRenameDialog.tsx +77 -0
  359. package/src/workbench/chat/chat-conversation.css +273 -0
  360. package/src/workbench/chat/chat-ui.css +1124 -0
  361. package/src/workbench/chat/chat.css +3 -0
  362. package/src/workbench/chat/chatConversation.ts +46 -0
  363. package/src/workbench/chat/chatHistoryRowMenuItems.ts +29 -0
  364. package/src/workbench/chat/chatMessageMeta.tsx +252 -0
  365. package/src/workbench/chat/chatScroll.ts +22 -0
  366. package/src/workbench/chat/index.ts +47 -1
  367. package/src/workbench/chat/slashCommand.ts +5 -7
  368. package/src/workbench/chat/types.ts +35 -0
  369. package/src/workbench/chat/useCancelRuntimeOnUnmount.ts +60 -0
  370. package/src/workbench/chat/useChatPrependPagination.ts +233 -0
  371. package/src/workbench/chat/useChatRuntimeState.ts +3 -15
  372. package/src/workbench/chat/useSlashCommandSuggest.ts +76 -23
  373. package/src/workbench/chrome/index.css +6 -0
  374. package/src/workbench/chrome/workbench-desktop-titlebar.css +60 -0
  375. package/src/workbench/chrome/workbench-host.css +85 -0
  376. package/src/workbench/chrome/workbench-layout-regions.css +42 -0
  377. package/src/workbench/chrome/workbench-platform-chrome.css +142 -0
  378. package/src/workbench/chrome/workbench-shell-titlebar.css +124 -0
  379. package/src/workbench/command-execution-policy.ts +61 -0
  380. package/src/workbench/command-model.ts +275 -0
  381. package/src/workbench/command-palette/command-palette.css +156 -0
  382. package/src/workbench/commands.ts +62 -6
  383. package/src/workbench/editor-tabs/index.ts +22 -0
  384. package/src/workbench/editor-tabs-dnd.ts +162 -0
  385. package/src/workbench/editorTabContextMenu.ts +111 -0
  386. package/src/workbench/hardReset.ts +64 -0
  387. package/src/workbench/index.ts +234 -2
  388. package/src/workbench/jdw/jdw-editors.css +4 -0
  389. package/src/workbench/jdw/jdw.css +2 -0
  390. package/src/workbench/management/AccountManagementPanel.tsx +82 -0
  391. package/src/workbench/management/CommandInspectorPanel.tsx +127 -0
  392. package/src/workbench/management/CommandManagementPanel.tsx +129 -0
  393. package/src/workbench/management/CommandManagementSidebar.tsx +318 -0
  394. package/src/workbench/management/ExtensionManagementPanel.tsx +498 -0
  395. package/src/workbench/management/ExtensionManagementSidebar.tsx +492 -0
  396. package/src/workbench/management/IntegrationCommandActions.tsx +78 -0
  397. package/src/workbench/management/IntegrationSettingsSurface.tsx +290 -0
  398. package/src/workbench/management/IntegrationsShell.tsx +53 -0
  399. package/src/workbench/management/KeybindingCaptureField.tsx +142 -0
  400. package/src/workbench/management/KeybindingManagementPanel.tsx +120 -0
  401. package/src/workbench/management/LibraryCatalogPickerDialog.tsx +208 -0
  402. package/src/workbench/management/LibraryFacetFilterDialog.tsx +62 -0
  403. package/src/workbench/management/ManagementCard.tsx +89 -0
  404. package/src/workbench/management/ManagementFilterChips.tsx +41 -0
  405. package/src/workbench/management/ManagementGroup.tsx +56 -0
  406. package/src/workbench/management/ManagementPanelControls.tsx +43 -0
  407. package/src/workbench/management/ManagementPanelFrame.tsx +109 -0
  408. package/src/workbench/management/WorkbenchDialogFrame.tsx +148 -0
  409. package/src/workbench/management/WorkbenchNotice.tsx +211 -0
  410. package/src/workbench/management/build-command-management-groups.ts +157 -0
  411. package/src/workbench/management/command-inspector-uri.ts +26 -0
  412. package/src/workbench/management/extension-category-display.ts +42 -0
  413. package/src/workbench/management/format-command-run-state.ts +19 -0
  414. package/src/workbench/management/index.ts +130 -0
  415. package/src/workbench/management/integration-command-action.ts +25 -0
  416. package/src/workbench/management/library-catalog-picker-dialog.css +56 -0
  417. package/src/workbench/management/library-facet-filter-dialog.css +8 -0
  418. package/src/workbench/management/management-panel.css +444 -0
  419. package/src/workbench/management/management.css +4 -0
  420. package/src/workbench/management/types.ts +126 -0
  421. package/src/workbench/markdownRemarkPlugins.ts +4 -0
  422. package/src/workbench/schema/index.ts +0 -1
  423. package/src/workbench/settings/NavigationPanel.tsx +41 -2
  424. package/src/workbench/settings/SchemaForm.tsx +20 -7
  425. package/src/workbench/settings/SectionTabPanel.tsx +172 -0
  426. package/src/workbench/settings/SectionedPanel.tsx +40 -286
  427. package/src/workbench/settings/StructuredDataForm.tsx +106 -26
  428. package/src/workbench/settings/StructuredDataSchemaPanel.tsx +345 -93
  429. package/src/workbench/settings/StructuredDataTableView.tsx +2 -2
  430. package/src/workbench/settings/WorkbenchPanelRegion.tsx +1 -1
  431. package/src/workbench/settings/WorkbenchSettingsModal.tsx +116 -62
  432. package/src/workbench/settings/WorkbenchSettingsNav.tsx +3 -3
  433. package/src/workbench/settings/extensionSettingsForm.ts +34 -0
  434. package/src/workbench/settings/index.ts +36 -1
  435. package/src/workbench/settings/navigation-panel.css +59 -0
  436. package/src/workbench/settings/panel-region.css +3 -2
  437. package/src/workbench/settings/schema-form.css +36 -0
  438. package/src/workbench/settings/schemaFormSettingSpec.ts +177 -0
  439. package/src/workbench/settings/schemaFormSettingsCategory.tsx +21 -0
  440. package/src/workbench/settings/section-tab-panel.css +157 -0
  441. package/src/workbench/settings/sectionScrollSpyDom.ts +139 -0
  442. package/src/workbench/settings/sectioned-panel.css +162 -0
  443. package/src/workbench/settings/sectionedPanelScrollSpy.ts +158 -28
  444. package/src/workbench/settings/settings-responsive.css +58 -0
  445. package/src/workbench/settings/settings.css +11 -0
  446. package/src/workbench/settings/settingsCommit.tsx +55 -0
  447. package/src/workbench/settings/structured-data-form.css +114 -0
  448. package/src/workbench/settings/structured-data-schema-panel.css +33 -19
  449. package/src/workbench/settings/structuredDataFormModel.ts +140 -0
  450. package/src/workbench/settings/structuredDataSchema.ts +111 -658
  451. package/src/workbench/settings/structuredDataSchemaDate.ts +197 -0
  452. package/src/workbench/settings/structuredDataSchemaField.ts +105 -0
  453. package/src/workbench/settings/structuredDataSchemaSection.ts +74 -0
  454. package/src/workbench/settings/structuredDataSchemaTable.ts +120 -0
  455. package/src/workbench/settings/structuredDataSchemaTypes.ts +308 -0
  456. package/src/workbench/settings/structuredDataSchemaValidation.ts +166 -0
  457. package/src/workbench/settings/useSectionScrollSpy.ts +420 -0
  458. package/src/workbench/settings/workbench-settings-modal.css +273 -0
  459. package/src/workbench/shell/activity-bar.css +245 -0
  460. package/src/workbench/shell/confirmation-flow.css +87 -0
  461. package/src/workbench/shell/index.css +5 -0
  462. package/src/workbench/shell/split-view.css +188 -0
  463. package/src/workbench/shell/status-bar.css +141 -0
  464. package/src/workbench/shell.ts +133 -2
  465. package/src/workbench/shellPresets.ts +36 -0
  466. package/src/workbench/shellState.ts +16 -23
  467. package/src/workbench/shellViewModel.ts +160 -0
  468. package/src/workbench/sidebarViewPlacementDnd.ts +61 -0
  469. package/src/workbench/standalone.ts +9 -9
  470. package/src/workbench/status.ts +10 -6
  471. package/src/workbench/theme.ts +8 -2
  472. package/src/workbench/themePresets.ts +191 -0
  473. package/src/workbench/useDeferredWorkbenchMount.ts +71 -0
  474. package/src/workbench/useEditorTabsStripDnd.ts +262 -0
  475. package/src/workbench/useWorkbenchAppearanceDocumentSync.tsx +17 -0
  476. package/src/workbench/useWorkbenchEditorTabContextMenu.tsx +66 -0
  477. package/src/workbench/useWorkbenchSidebarActionBarDnd.ts +227 -0
  478. package/src/workbench/useWorkbenchSidebarLayout.tsx +232 -0
  479. package/src/workbench/useWorkbenchSidebarViewPlacementDropZone.ts +194 -0
  480. package/src/workbench/useWorkbenchStandaloneShellStateSync.tsx +112 -0
  481. package/src/workbench/views/action-list.css +144 -0
  482. package/src/workbench/views/artifact-preview.css +184 -0
  483. package/src/workbench/views/command-inspector.css +98 -0
  484. package/src/workbench/views/command-list.css +356 -0
  485. package/src/workbench/views/commands-sidebar.css +51 -0
  486. package/src/workbench/views/extensions-sidebar.css +175 -0
  487. package/src/workbench/views/multi-provider-explorer.css +182 -0
  488. package/src/workbench/views/search.css +10 -0
  489. package/src/workbench/views/timeline.css +239 -0
  490. package/src/workbench/views/view-hosts.css +37 -0
  491. package/src/workbench/views/view-sidebar.css +21 -0
  492. package/src/workbench/views/views.css +12 -0
  493. package/src/workbench/widgets/widget-tree.css +598 -0
  494. package/src/workbench/widgets/widgets.css +2 -0
  495. package/src/workbench/workbench-chrome.css +4 -0
  496. package/src/workbench/workbenchContextMenu.ts +18 -0
  497. package/src/workbench/workbenchModalViewState.ts +52 -0
  498. package/src/workbench/workbenchOverlaysContext.tsx +21 -0
  499. package/src/workbench/workbenchPlatformChrome.ts +40 -0
  500. package/src/workbench/workbenchSidebarLayoutContext.ts +46 -0
  501. package/src/workbench/workbenchStandaloneShellReactContext.tsx +80 -0
  502. package/src/workbench/workbenchViewRouteState.ts +151 -0
  503. package/src/workbench/workspace/WorkspaceDraftsContext.tsx +59 -71
  504. package/src/workbench/workspace/WorkspaceEditor.tsx +27 -123
  505. package/src/workbench/workspace/WorkspaceEditorPanel.tsx +67 -8
  506. package/src/workbench/workspace/WorkspaceExplorer.tsx +149 -51
  507. package/src/workbench/workspace/WorkspaceExplorerPanel.tsx +73 -0
  508. package/src/workbench/workspace/WorkspaceFileIcon.tsx +4 -160
  509. package/src/workbench/workspace/WorkspacePathLabel.tsx +42 -0
  510. package/src/workbench/workspace/WorkspaceSearchPanel.tsx +18 -15
  511. package/src/workbench/workspace/WorkspaceSearchResults.tsx +6 -2
  512. package/src/workbench/workspace/build-workspace-explorer-nodes.ts +44 -0
  513. package/src/workbench/workspace/createVirtualWorkspaceExplorerPort.ts +141 -0
  514. package/src/workbench/workspace/explorer-tree-style.ts +18 -0
  515. package/src/workbench/workspace/index.ts +45 -32
  516. package/src/workbench/workspace/json-config-workbench.css +57 -0
  517. package/src/workbench/workspace/monaco-panel.css +71 -0
  518. package/src/workbench/workspace/path.ts +2 -0
  519. package/src/workbench/workspace/useWorkspaceExplorerController.ts +490 -0
  520. package/src/workbench/workspace/workspace-editor.css +235 -0
  521. package/src/workbench/workspace/workspace-explorer-panel.css +33 -0
  522. package/src/workbench/workspace/workspace.css +5 -0
  523. package/src/workbench/workspace/workspaceExplorerController.ts +193 -0
  524. package/src/workbench/workspace/workspaceJsonDiagnostics.ts +2 -2
  525. package/src/workbench-menu-surfaces.css +57 -0
  526. package/src/jdw/builtins/renderBuiltinWidgetNode.tsx +0 -126
  527. package/src/layout/SideBarViewFrame.tsx +0 -367
  528. package/src/primitives/Checkbox.tsx +0 -21
  529. package/src/primitives/NumberInput.tsx +0 -38
  530. package/src/primitives/ScrollArea.tsx +0 -42
  531. package/src/primitives/Select.tsx +0 -1
  532. package/src/primitives/StatusBar.tsx +0 -46
  533. package/src/primitives/WorkbenchChrome.tsx +0 -424
  534. package/src/workbench/workspace/MultiProviderExplorer.tsx +0 -625
package/src/index.ts CHANGED
@@ -1,5 +1,25 @@
1
1
  export { Modal } from './modal/Modal';
2
- export type { ModalProps } from './modal/Modal';
2
+ export type { ModalBodyLayout, ModalBodyPadding, ModalProps } from './modal/Modal';
3
+ export { TilepaperAppIcon } from './brand/TilepaperAppIcon';
4
+ export type { TilepaperAppIconProps } from './brand/TilepaperAppIcon';
5
+ export {
6
+ WorkbenchIcon,
7
+ WorkbenchIconProvider,
8
+ isWorkbenchIconDescriptor,
9
+ normalizeWorkbenchIconDescriptor,
10
+ useWorkbenchIconResolver,
11
+ workbenchIconDescriptorToCodiconName,
12
+ } from './icons';
13
+ export type {
14
+ WorkbenchCodiconDescriptor,
15
+ WorkbenchIconDescriptor,
16
+ WorkbenchIconInput,
17
+ WorkbenchIconNodeDescriptor,
18
+ WorkbenchIconProps,
19
+ WorkbenchIconProviderProps,
20
+ WorkbenchIconRenderProps,
21
+ WorkbenchIconResolver,
22
+ } from './icons';
3
23
  export { commandMenuItemsToContextMenuItems } from './workbench/commands';
4
24
  export {
5
25
  WorkbenchArtifactModeControls,
@@ -119,6 +139,20 @@ export type {
119
139
  WorkbenchSignUpSubmitContext,
120
140
  WorkbenchSignUpViewProps,
121
141
  } from './workbench/auth';
142
+ export {
143
+ WorkbenchBootstrapGate,
144
+ WorkbenchBootstrapView,
145
+ useWorkbenchBootstrap,
146
+ } from './workbench/bootstrap';
147
+ export type {
148
+ WorkbenchBootstrapController,
149
+ WorkbenchBootstrapGateProps,
150
+ WorkbenchBootstrapRunStatus,
151
+ WorkbenchBootstrapTaskDefinition,
152
+ WorkbenchBootstrapTaskStatus,
153
+ WorkbenchBootstrapTaskViewModel,
154
+ WorkbenchBootstrapViewProps,
155
+ } from './workbench/bootstrap';
122
156
  export {
123
157
  WorkbenchTimeline,
124
158
  WorkbenchTimelineItem,
@@ -144,6 +178,35 @@ export { ConfirmDialog } from './modal/ConfirmDialog';
144
178
  export type { ConfirmDialogProps } from './modal/ConfirmDialog';
145
179
  export { ContextMenu } from './overlay/ContextMenu';
146
180
  export type { ContextMenuItem, ContextMenuProps } from './overlay/ContextMenu';
181
+ export { measureAnchoredOverlayPanel } from './overlay/measureAnchoredOverlayPanel';
182
+ export type {
183
+ AnchoredOverlayPanelRect,
184
+ AnchoredOverlayPlacement,
185
+ MeasureAnchoredOverlayPanelOptions,
186
+ } from './overlay/measureAnchoredOverlayPanel';
187
+ export { useAnchoredOverlayPanel } from './overlay/useAnchoredOverlayPanel';
188
+ export type {
189
+ UseAnchoredOverlayPanelOptions,
190
+ UseAnchoredOverlayPanelResult,
191
+ } from './overlay/useAnchoredOverlayPanel';
192
+ export { useContextMenuState } from './overlay/useContextMenuState';
193
+ export type {
194
+ ContextMenuPointerEvent,
195
+ ContextMenuPointerState,
196
+ UseContextMenuStateResult,
197
+ } from './overlay/useContextMenuState';
198
+ export {
199
+ createPointerPassthroughController,
200
+ isPointerOverHitRegion,
201
+ } from './overlay/pointerPassthroughRegion';
202
+ export type {
203
+ PointerOverHitRegionOptions,
204
+ PointerPassthroughController,
205
+ PointerPassthroughControllerOptions,
206
+ PointerPassthroughPort,
207
+ } from './overlay/pointerPassthroughRegion';
208
+ export { usePointerPassthroughRegion } from './overlay/usePointerPassthroughRegion';
209
+ export type { UsePointerPassthroughRegionOptions } from './overlay/usePointerPassthroughRegion';
147
210
  export {
148
211
  getWorkbenchStatusDescriptor,
149
212
  getWorkbenchStatusLabel,
@@ -175,7 +238,15 @@ export {
175
238
  PreviewPaneText,
176
239
  PreviewPaneTitle,
177
240
  PreviewPaneViewport,
178
- } from './layout/Panel';
241
+ } from './layout/panel';
242
+ export {
243
+ WorkbenchAuthoringShell,
244
+ WorkbenchLabeledPane,
245
+ WorkbenchPlainTextSource,
246
+ WorkbenchSurfaceMeta,
247
+ WorkbenchSurfaceToolbar,
248
+ WorkbenchSidebarStack,
249
+ } from './layout/panel';
179
250
  export type {
180
251
  FilterBarActiveChipsProps,
181
252
  FilterBarRowProps,
@@ -192,35 +263,54 @@ export type {
192
263
  PreviewPaneTextProps,
193
264
  PreviewPaneTitleProps,
194
265
  PreviewPaneViewportProps,
195
- } from './layout/Panel';
266
+ WorkbenchAuthoringShellProps,
267
+ WorkbenchLabeledPaneChrome,
268
+ WorkbenchLabeledPaneProps,
269
+ WorkbenchLabeledPaneTone,
270
+ WorkbenchPlainTextSourceProps,
271
+ WorkbenchSurfaceMetaProps,
272
+ WorkbenchSurfaceToolbarProps,
273
+ WorkbenchSidebarStackProps,
274
+ } from './layout/panel';
196
275
  export {
197
276
  SideBarHeaderControl,
198
277
  SideBarList,
199
278
  SideBarListItem,
200
279
  SideBarViewFrame,
201
280
  SideBarRow,
202
- SideBarScrollSpacer,
203
- } from './layout/SideBarViewFrame';
281
+ SidebarActionIconBar,
282
+ SideBarViewTabStrip,
283
+ WorkbenchActionList,
284
+ WorkbenchActionListItem,
285
+ WorkbenchActionSidebar,
286
+ WorkbenchSidebarSection,
287
+ WorkbenchSidebarSectionHeader,
288
+ WorkbenchSidebarSectionStack,
289
+ useSidebarSectionBaseDepth,
290
+ } from './layout/sidebar';
204
291
  export type {
205
292
  SideBarHeaderControlProps,
206
293
  SideBarListItemProps,
207
294
  SideBarListProps,
208
295
  SideBarViewFrameProps,
209
296
  SideBarRowProps,
210
- SideBarScrollSpacerProps,
211
- } from './layout/SideBarViewFrame';
212
- export {
213
- WorkbenchActionList,
214
- WorkbenchActionListItem,
215
- WorkbenchSidebarSection,
216
- } from './layout/WorkbenchSidebarActions';
217
- export type {
297
+ SidebarActionIconBarProps,
298
+ SidebarActionIconDescriptor,
299
+ SideBarViewTabDescriptor,
300
+ SideBarViewTabStripProps,
218
301
  WorkbenchActionItem,
219
302
  WorkbenchActionListItemProps,
220
303
  WorkbenchActionListProps,
304
+ WorkbenchActionSidebarItem,
305
+ WorkbenchActionSidebarProps,
221
306
  WorkbenchActionStatus,
307
+ WorkbenchSidebarSectionHeaderProps,
222
308
  WorkbenchSidebarSectionProps,
223
- } from './layout/WorkbenchSidebarActions';
309
+ WorkbenchSidebarSectionStackItem,
310
+ WorkbenchSidebarSectionStackProps,
311
+ } from './layout/sidebar';
312
+ export { WorkbenchMediaPreviewViewport } from './layout/WorkbenchMediaPreviewViewport';
313
+ export type { WorkbenchMediaPreviewViewportProps } from './layout/WorkbenchMediaPreviewViewport';
224
314
  export {
225
315
  WorkbenchBanner,
226
316
  WorkbenchBannerIcon,
@@ -257,6 +347,7 @@ export {
257
347
  WorkbenchEditorFrame,
258
348
  WorkbenchEditorViewport,
259
349
  WorkbenchFill,
350
+ WorkbenchFillChain,
260
351
  WorkbenchFloatingMenu,
261
352
  WorkbenchFloatingMenuItem,
262
353
  WorkbenchFullscreenBackdrop,
@@ -304,18 +395,24 @@ export {
304
395
  WorkbenchPropertyHint,
305
396
  WorkbenchPropertyInline,
306
397
  WorkbenchPropertyKeyValue,
398
+ WorkbenchMetricGrid,
307
399
  WorkbenchPropertyNumberRow,
400
+ WorkbenchPropertyOverrideLabel,
308
401
  WorkbenchPropertyPanel,
309
402
  WorkbenchPropertyRangeRow,
310
403
  WorkbenchPropertyRow,
404
+ WorkbenchPropertySearch,
311
405
  WorkbenchPropertySection,
312
406
  WorkbenchPropertySelectActionRow,
313
407
  WorkbenchPropertySelectRow,
314
408
  WorkbenchPropertyStack,
315
409
  WorkbenchPropertyTextRow,
316
410
  WorkbenchPropertyToggleButton,
411
+ filterWorkbenchPropertyFields,
412
+ isWorkbenchPropertySearchActive,
317
413
  WorkbenchRenderSurface,
318
414
  WorkbenchRoot,
415
+ WorkbenchScrollRegion,
319
416
  WorkbenchSectionTitle,
320
417
  WorkbenchTemplateGlyph,
321
418
  WorkbenchTree,
@@ -365,6 +462,7 @@ export type {
365
462
  WorkbenchEditorBottomPanelTitleProps,
366
463
  WorkbenchEditorFrameProps,
367
464
  WorkbenchEditorViewportProps,
465
+ WorkbenchFillChainProps,
368
466
  WorkbenchFillProps,
369
467
  WorkbenchFloatingMenuAlign,
370
468
  WorkbenchFloatingMenuItemProps,
@@ -417,10 +515,20 @@ export type {
417
515
  WorkbenchPropertyHintProps,
418
516
  WorkbenchPropertyInlineProps,
419
517
  WorkbenchPropertyKeyValueProps,
518
+ WorkbenchMetricGridEntry,
519
+ WorkbenchMetricGridItem,
520
+ WorkbenchMetricGridProps,
420
521
  WorkbenchPropertyNumberRowProps,
522
+ WorkbenchPropertyOverrideLabelProps,
523
+ WorkbenchPropertyOverrideResetAppearance,
524
+ WorkbenchPropertyFieldFilterInput,
525
+ WorkbenchPropertyFieldFilterResult,
526
+ WorkbenchPropertyFieldManifestEntry,
421
527
  WorkbenchPropertyPanelProps,
422
528
  WorkbenchPropertyRangeRowProps,
423
529
  WorkbenchPropertyRowProps,
530
+ WorkbenchPropertySearchProps,
531
+ WorkbenchPropertySectionLevel,
424
532
  WorkbenchPropertySectionProps,
425
533
  WorkbenchPropertySelectOption,
426
534
  WorkbenchPropertySelectActionRowProps,
@@ -430,6 +538,7 @@ export type {
430
538
  WorkbenchPropertyToggleButtonProps,
431
539
  WorkbenchRenderSurfaceProps,
432
540
  WorkbenchRootProps,
541
+ WorkbenchScrollRegionProps,
433
542
  WorkbenchSectionTitleProps,
434
543
  WorkbenchTemplateGlyphIcon,
435
544
  WorkbenchTemplateGlyphProps,
@@ -442,6 +551,18 @@ export type {
442
551
  WorkbenchTreeItemProps,
443
552
  WorkbenchTreeProps,
444
553
  } from './layout/WorkbenchLayout';
554
+ export {
555
+ WORKBENCH_FILL_SCROLL_ROLE_ATTR,
556
+ isWorkbenchFillOwner,
557
+ isWorkbenchScrollOwner,
558
+ resolveWorkbenchFillScrollRole,
559
+ workbenchFillScrollRoleProps,
560
+ } from './layout/fillScrollContract';
561
+ export type {
562
+ WorkbenchFillScrollOwnerRegistry,
563
+ WorkbenchFillScrollRole,
564
+ WorkbenchFillScrollRoleProps,
565
+ } from './layout/fillScrollContract';
445
566
  export {
446
567
  StatusBar as WorkbenchStatusBar,
447
568
  StatusBarItem as WorkbenchStatusBarItem,
@@ -455,59 +576,81 @@ export type {
455
576
  StatusBarSectionModel as WorkbenchStatusBarSectionModel,
456
577
  StatusBarSectionProps as WorkbenchStatusBarSectionProps,
457
578
  } from './workbench/StatusBar';
458
- export { AbsoluteBox } from './primitives/AbsoluteBox';
459
- export type { AbsoluteBoxProps, WorkbenchRect } from './primitives/AbsoluteBox';
460
- export { Badge } from './primitives/Badge';
461
- export type { BadgeProps } from './primitives/Badge';
462
- export { Button } from './primitives/Button';
463
- export type { ButtonProps } from './primitives/Button';
464
- export { Checkbox } from './primitives/Checkbox';
465
- export type { CheckboxProps } from './primitives/Checkbox';
466
- export { EmptyState } from './primitives/EmptyState';
467
- export type { EmptyStateProps } from './primitives/EmptyState';
468
- export { Field } from './primitives/Field';
469
- export type { FieldProps } from './primitives/Field';
470
- export { IconButton } from './primitives/IconButton';
471
- export type { IconButtonProps } from './primitives/IconButton';
472
- export { List, ListEmptyState, ListItem, ListItemActionButton } from './primitives/List';
579
+ export { AbsoluteBox } from './primitives';
580
+ export type { AbsoluteBoxProps, WorkbenchRect } from './primitives';
581
+ export { Badge } from './primitives';
582
+ export type { BadgeProps } from './primitives';
583
+ export { Button } from './primitives';
584
+ export type { ButtonProps } from './primitives';
585
+ export { Checkbox } from './primitives';
586
+ export type { CheckboxProps } from './primitives';
587
+ export { Chip } from './primitives';
588
+ export type { ChipProps } from './primitives';
589
+ export { EmptyState } from './primitives';
590
+ export type { EmptyStateProps } from './primitives';
591
+ export { PanelLoading } from './primitives';
592
+ export type { PanelLoadingProps } from './primitives';
593
+ export { Field } from './primitives';
594
+ export type { FieldProps } from './primitives';
595
+ export { IconButton } from './primitives';
596
+ export type { IconButtonProps } from './primitives';
597
+ export { List, ListEmptyState, ListItem, ListItemActionButton } from './primitives';
473
598
  export type {
474
599
  ListEmptyStateProps,
475
600
  ListItemActionButtonProps,
476
601
  ListItemProps,
477
602
  ListProps,
478
- } from './primitives/List';
479
- export { NumberInput } from './primitives/NumberInput';
480
- export type { NumberInputProps } from './primitives/NumberInput';
481
- export { StatusBar, StatusBarLabel, StatusBarSection } from './primitives/StatusBar';
482
- export type {
483
- StatusBarLabelProps,
484
- StatusBarProps,
485
- StatusBarSectionAlign,
486
- StatusBarSectionProps,
487
- StatusBarSeverity,
488
- } from './primitives/StatusBar';
603
+ } from './primitives';
604
+ export { NumberInput } from './primitives';
605
+ export type { NumberInputProps } from './primitives';
606
+ export { SearchableMultiSelect } from './primitives';
607
+ export type { SearchableMultiSelectOption, SearchableMultiSelectProps } from './primitives';
489
608
  export {
490
- ActivityBar,
491
- Collapsible,
492
- SideBar,
493
- TabbedPanels,
494
- WorkbenchShell,
495
- } from './primitives/WorkbenchChrome';
609
+ SEARCHABLE_MULTI_SELECT_LISTBOX_ATTR,
610
+ isSearchableMultiSelectPortalTarget,
611
+ } from './primitives';
612
+ export { TabbedPanels } from './primitives';
613
+ export type { TabbedPanelItem, TabbedPanelsProps } from './primitives';
614
+ export { ButtonGroup, EditorTabs, ResizablePanels, SegmentedControl } from './primitives';
615
+ export { CatalogBrowseCard } from './primitives';
616
+ export type { CatalogBrowseCardProps, CatalogBrowseCardVariant } from './primitives';
617
+ export { RecordMediaHero } from './primitives';
618
+ export type { RecordMediaHeroLayout, RecordMediaHeroProps } from './primitives';
619
+ export { CatalogBrowseFacetChips, CatalogBrowsePane } from './primitives';
496
620
  export type {
497
- ActivityBarProps,
498
- ActivityItem,
499
- CollapsibleProps,
500
- SideBarProps,
501
- TabbedPanelItem,
502
- TabbedPanelsProps,
503
- WorkbenchShellProps,
504
- } from './primitives/WorkbenchChrome';
505
- export {
506
- ButtonGroup,
507
- EditorTabs,
508
- ResizablePanels,
509
- SegmentedControl,
510
- } from './primitives/WorkbenchEditor';
621
+ CatalogBrowseFacetChipsProps,
622
+ CatalogBrowseFacetOption,
623
+ CatalogBrowseItem,
624
+ CatalogBrowseItemRenderState,
625
+ CatalogBrowsePaneProps,
626
+ CatalogBrowseViewMode,
627
+ } from './primitives';
628
+ export { filterCatalogBrowseItems, matchCatalogBrowseItem } from './primitives';
629
+ export { LibraryFacetFilterStrip } from './primitives';
630
+ export type {
631
+ LibraryFacetActiveChip,
632
+ LibraryFacetField,
633
+ LibraryFacetFieldKind,
634
+ LibraryFacetFieldOption,
635
+ LibraryFacetFieldPresentation,
636
+ LibraryFacetFilterStripProps,
637
+ } from './primitives';
638
+ export { LibraryFacetFilterPanel } from './primitives';
639
+ export type {
640
+ LibraryFacetFilterPanelLabels,
641
+ LibraryFacetFilterPanelProps,
642
+ LibraryFacetSection,
643
+ } from './primitives';
644
+ export { CatalogFilterOverlay } from './primitives';
645
+ export type { CatalogFilterOverlayProps } from './primitives';
646
+ export { LibraryDetailLayout } from './primitives';
647
+ export type { LibraryDetailLayoutMode, LibraryDetailLayoutProps } from './primitives';
648
+ export { WorkbenchMediaPlaceholder } from './primitives';
649
+ export type { WorkbenchMediaPlaceholderProps } from './primitives';
650
+ export { WorkbenchMediaSlot } from './primitives';
651
+ export type { WorkbenchMediaSlotProps } from './primitives';
652
+ export { WorkbenchThumbnail } from './primitives';
653
+ export type { WorkbenchThumbnailProps, WorkbenchThumbnailSize } from './primitives';
511
654
  export type {
512
655
  ButtonGroupProps,
513
656
  EditorTab,
@@ -516,25 +659,26 @@ export type {
516
659
  ResizablePanelsProps,
517
660
  SegmentedControlOption,
518
661
  SegmentedControlProps,
519
- } from './primitives/WorkbenchEditor';
520
- export { Select } from './primitives/Select';
521
- export type { SelectProps } from './primitives/Select';
522
- export { ScrollArea } from './primitives/ScrollArea';
662
+ } from './primitives';
663
+ export { Select } from './primitives';
664
+ export type { SelectProps } from './primitives';
665
+ export { ScrollArea } from './primitives';
523
666
  export type {
524
667
  ScrollAreaGutter,
525
668
  ScrollAreaOrientation,
526
669
  ScrollAreaProps,
527
670
  ScrollAreaScrollbarVisibility,
528
- } from './primitives/ScrollArea';
529
- export { TextInput } from './primitives/TextInput';
530
- export type { ControlWidth, TextInputProps } from './primitives/TextInput';
531
- export { TextArea } from './primitives/TextArea';
532
- export type { TextAreaProps } from './primitives/TextArea';
533
- export { Toolbar } from './primitives/Toolbar';
534
- export type { ToolbarProps } from './primitives/Toolbar';
671
+ } from './primitives';
672
+ export { TextInput } from './primitives';
673
+ export type { ControlWidth, TextInputProps } from './primitives';
674
+ export { TextArea } from './primitives';
675
+ export type { TextAreaProps } from './primitives';
676
+ export { Toolbar } from './primitives';
677
+ export type { ToolbarProps } from './primitives';
535
678
  export {
536
679
  WorkspaceDraftsContext,
537
680
  WorkspaceDraftsProvider,
681
+ useWorkspaceDraftController,
538
682
  useWorkspaceDrafts,
539
683
  } from './workbench/workspace/WorkspaceDraftsContext';
540
684
  export type {
@@ -543,3 +687,49 @@ export type {
543
687
  } from './workbench/workspace/WorkspaceDraftsContext';
544
688
  export { StructuredArtifactEditor } from './workbench/StructuredArtifactEditor';
545
689
  export type { StructuredArtifactEditorProps } from './workbench/StructuredArtifactEditor';
690
+ export { createStringDragMime, createTypedDragMime } from './utils/dragMime';
691
+ export type { TypedDragMime, TypedDragMimeOptions } from './utils/dragMime';
692
+ export {
693
+ EDITOR_TAB_DRAG_DATA_TYPE,
694
+ getEditorTabDropPosition,
695
+ isEditorTabMoveNoop,
696
+ isEditorTabsScrollerEventTarget,
697
+ normalizeEditorTabReorderIndex,
698
+ readEditorTabDragPayload,
699
+ resolveEditorTabDropTarget,
700
+ resolveEditorTabStripDropTarget,
701
+ } from './workbench/editor-tabs-dnd';
702
+ export type { EditorTabDragPayload, EditorTabDropTarget } from './workbench/editor-tabs-dnd';
703
+ export { useEditorTabsStripDnd } from './workbench/useEditorTabsStripDnd';
704
+ export type {
705
+ UseEditorTabsStripDndOptions,
706
+ UseEditorTabsStripDndResult,
707
+ } from './workbench/useEditorTabsStripDnd';
708
+ export { WorkbenchEditorTabs } from './workbench/WorkbenchEditorTabs';
709
+ export type { WorkbenchEditorTabsProps } from './workbench/WorkbenchEditorTabs';
710
+ export {
711
+ createWorkbenchStandaloneEditorTabCommandContext,
712
+ createWorkbenchStandaloneEditorTabContextMenuItems,
713
+ isWorkbenchEditorTabClosable,
714
+ } from './workbench/editorTabContextMenu';
715
+ export type {
716
+ CreateWorkbenchStandaloneEditorTabCommandContextInput,
717
+ WorkbenchStandaloneEditorTabLike,
718
+ } from './workbench/editorTabContextMenu';
719
+ export { useWorkbenchEditorTabContextMenu } from './workbench/useWorkbenchEditorTabContextMenu';
720
+ export type {
721
+ UseWorkbenchEditorTabContextMenuOptions,
722
+ UseWorkbenchEditorTabContextMenuResult,
723
+ } from './workbench/useWorkbenchEditorTabContextMenu';
724
+ export {
725
+ clampPreviewViewportZoom,
726
+ computePreviewViewportFitScale,
727
+ computeZoomPanTowardPoint,
728
+ usePreviewViewport,
729
+ } from './layout/usePreviewViewport';
730
+ export type {
731
+ PreviewViewportPoint,
732
+ PreviewViewportSize,
733
+ UsePreviewViewportOptions,
734
+ UsePreviewViewportResult,
735
+ } from './layout/usePreviewViewport';
@@ -1,8 +1,23 @@
1
+ import { useEffect, useMemo, useRef, type ReactNode } from 'react';
1
2
  import type { WidgetRegistryContract } from '@workbench-kit/contracts';
2
- import { parseJsonWidgetData, type LayoutConstraints } from '@workbench-kit/jdw';
3
+ import {
4
+ collectJsonWidgetChangedValuePaths,
5
+ collectJsonWidgetInvalidations,
6
+ expandJsonWidgetDocumentRefs,
7
+ parseJsonWidgetData,
8
+ resolveJsonWidgetValues,
9
+ validateJsonWidgetNode,
10
+ type LayoutConstraints,
11
+ type JsonWidgetValueMap,
12
+ type JsonWidgetInvalidation,
13
+ type ValidationIssue,
14
+ type WidgetPath,
15
+ } from '@workbench-kit/jdw';
3
16
 
4
17
  import { WorkbenchParseError, WorkbenchRenderSurface } from '../layout/WorkbenchLayout.js';
5
- import { useRenderJdw } from './renderJdw.js';
18
+ import { renderJdwWithLayout } from './cssRenderBackend.js';
19
+
20
+ const EMPTY_CHANGED_VALUE_PATHS: readonly string[] = [];
6
21
 
7
22
  export interface JdwPreviewProps {
8
23
  json: string;
@@ -10,6 +25,49 @@ export interface JdwPreviewProps {
10
25
  emptyLabel?: string | undefined;
11
26
  className?: string | undefined;
12
27
  layoutConstraints?: LayoutConstraints | undefined;
28
+ selectedPath?: WidgetPath | null | undefined;
29
+ strictKnownTypes?: boolean | undefined;
30
+ values?: JsonWidgetValueMap | undefined;
31
+ changedValuePaths?: readonly string[] | undefined;
32
+ onSelectPath?: ((path: WidgetPath) => void) | undefined;
33
+ /**
34
+ * When set, expand `type: "ref"` before validate/layout so composed documents
35
+ * draw without mutating the authored JSON shown in Code/Form outline.
36
+ */
37
+ documentPath?: string | null | undefined;
38
+ loadDocument?: ((path: string) => string | null) | undefined;
39
+ }
40
+
41
+ function formatValidationMessage(issue: { readonly message: string; readonly path: string }) {
42
+ return issue.path ? `${issue.path}: ${issue.message}` : issue.message;
43
+ }
44
+
45
+ export function getJdwPreviewInvalidations(
46
+ json: string,
47
+ changedValuePaths: readonly string[] = [],
48
+ ): readonly JsonWidgetInvalidation[] {
49
+ const parsed = parseJsonWidgetData(json);
50
+ if (parsed.parseError !== null || parsed.value === null) {
51
+ return [];
52
+ }
53
+
54
+ return collectJsonWidgetInvalidations(parsed.value, changedValuePaths);
55
+ }
56
+
57
+ function mergeChangedValuePaths(
58
+ first: readonly string[],
59
+ second: readonly string[],
60
+ ): readonly string[] {
61
+ return [
62
+ ...new Set([...first, ...second].map((path) => path.trim()).filter((path) => path.length > 0)),
63
+ ];
64
+ }
65
+
66
+ interface JdwPreviewState {
67
+ readonly invalidations: readonly JsonWidgetInvalidation[];
68
+ readonly issues: readonly ValidationIssue[];
69
+ readonly renderOutput: ReactNode;
70
+ readonly valid: boolean;
13
71
  }
14
72
 
15
73
  export function JdwPreview({
@@ -18,21 +76,120 @@ export function JdwPreview({
18
76
  emptyLabel = 'No render output.',
19
77
  className,
20
78
  layoutConstraints,
79
+ selectedPath = null,
80
+ strictKnownTypes = true,
81
+ values,
82
+ changedValuePaths = EMPTY_CHANGED_VALUE_PATHS,
83
+ onSelectPath,
84
+ documentPath = null,
85
+ loadDocument,
21
86
  }: JdwPreviewProps) {
22
- const parsed = parseJsonWidgetData(json);
23
- const renderOutput = useRenderJdw(json, { registry, emptyLabel, layoutConstraints });
87
+ const previousValuesRef = useRef<JsonWidgetValueMap | undefined>(values);
88
+ const onSelectPathRef = useRef(onSelectPath);
89
+ onSelectPathRef.current = onSelectPath;
90
+
91
+ const changedValuePathsFromValues = useMemo(
92
+ () => collectJsonWidgetChangedValuePaths(previousValuesRef.current, values),
93
+ [values],
94
+ );
95
+ const activeChangedValuePaths = useMemo(
96
+ () => mergeChangedValuePaths(changedValuePaths, changedValuePathsFromValues),
97
+ [changedValuePaths, changedValuePathsFromValues],
98
+ );
99
+
100
+ useEffect(() => {
101
+ previousValuesRef.current = values;
102
+ }, [values]);
103
+
104
+ const previewState = useMemo<JdwPreviewState>(() => {
105
+ const parsed = parseJsonWidgetData(json);
106
+ if (parsed.parseError !== null || parsed.value === null) {
107
+ return {
108
+ invalidations: [],
109
+ issues: [
110
+ {
111
+ path: 'root',
112
+ message: parsed.parseError ?? 'Invalid JSON widget data.',
113
+ },
114
+ ],
115
+ renderOutput: null,
116
+ valid: false,
117
+ };
118
+ }
119
+
120
+ let drawableNode = parsed.value;
121
+ if (loadDocument) {
122
+ const expanded = expandJsonWidgetDocumentRefs(parsed.value, {
123
+ documentPath,
124
+ loadDocument,
125
+ });
126
+ if (expanded.issues.length > 0 || expanded.value === null) {
127
+ return {
128
+ invalidations: [],
129
+ issues: expanded.issues.map((issue) => ({
130
+ path: issue.path,
131
+ message: issue.message,
132
+ })),
133
+ renderOutput: null,
134
+ valid: false,
135
+ };
136
+ }
137
+ drawableNode = expanded.value;
138
+ }
139
+
140
+ const resolvedNode = resolveJsonWidgetValues(drawableNode, values);
141
+ const issues: ValidationIssue[] = [];
142
+ validateJsonWidgetNode(resolvedNode, 'root', issues, {
143
+ registeredTypes: registry?.types(),
144
+ strictKnownTypes,
145
+ });
146
+
147
+ return {
148
+ invalidations: collectJsonWidgetInvalidations(drawableNode, activeChangedValuePaths),
149
+ issues,
150
+ renderOutput:
151
+ issues.length === 0
152
+ ? renderJdwWithLayout(resolvedNode, {
153
+ registry,
154
+ emptyLabel,
155
+ layoutConstraints,
156
+ selectedPath,
157
+ onSelectPath: (path) => onSelectPathRef.current?.(path),
158
+ })
159
+ : null,
160
+ valid: issues.length === 0,
161
+ };
162
+ }, [
163
+ activeChangedValuePaths,
164
+ documentPath,
165
+ emptyLabel,
166
+ json,
167
+ layoutConstraints,
168
+ loadDocument,
169
+ registry,
170
+ selectedPath,
171
+ strictKnownTypes,
172
+ values,
173
+ ]);
24
174
 
25
- if (parsed.parseError !== null) {
175
+ if (!previewState.valid) {
176
+ const firstIssue = previewState.issues[0];
26
177
  return (
27
178
  <WorkbenchParseError role="alert" data-testid="jdw-preview-error">
28
- {parsed.parseError}
179
+ {firstIssue ? formatValidationMessage(firstIssue) : 'Invalid JDW document.'}
29
180
  </WorkbenchParseError>
30
181
  );
31
182
  }
32
183
 
33
184
  return (
34
- <WorkbenchRenderSurface className={className} data-testid="jdw-preview-output">
35
- {renderOutput ?? emptyLabel}
185
+ <WorkbenchRenderSurface
186
+ className={className}
187
+ data-jdw-invalidations={
188
+ previewState.invalidations.length > 0 ? previewState.invalidations.length : undefined
189
+ }
190
+ data-testid="jdw-preview-output"
191
+ >
192
+ {previewState.renderOutput ?? emptyLabel}
36
193
  </WorkbenchRenderSurface>
37
194
  );
38
195
  }