@workbench-kit/react 0.0.1-prototype.0 → 0.0.2-prototype.0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (155) hide show
  1. package/package.json +33 -9
  2. package/src/index.ts +545 -43
  3. package/src/jdw/JdwPreview.tsx +38 -0
  4. package/src/jdw/JsonCodeEditorPane.tsx +274 -0
  5. package/src/jdw/builtins/renderBuiltinWidgetLeaf.tsx +29 -0
  6. package/src/jdw/builtins/renderBuiltinWidgetNode.tsx +126 -0
  7. package/src/jdw/createBuiltinJdwRegistry.ts +111 -0
  8. package/src/jdw/cssRenderBackend.tsx +134 -0
  9. package/src/jdw/document.ts +38 -0
  10. package/src/jdw/fixtures/jdw-fixtures.ts +52 -0
  11. package/src/jdw/fixtures/jdw-sample-screens.ts +522 -0
  12. package/src/jdw/index.ts +45 -0
  13. package/src/jdw/parse.ts +1 -0
  14. package/src/jdw/renderJdw.tsx +32 -0
  15. package/src/json-config/JsonConfigWorkbench.tsx +316 -0
  16. package/src/json-config/index.ts +6 -0
  17. package/src/json-config/json-config-editor-state.ts +42 -0
  18. package/src/layout/Panel.tsx +146 -1
  19. package/src/layout/SideBarViewFrame.tsx +367 -328
  20. package/src/layout/WorkbenchCanvas.tsx +849 -0
  21. package/src/layout/WorkbenchFullscreen.tsx +368 -0
  22. package/src/layout/WorkbenchLayout.tsx +5 -0
  23. package/src/layout/WorkbenchLayoutBase.tsx +294 -0
  24. package/src/layout/WorkbenchPropertyPanel.tsx +497 -0
  25. package/src/layout/WorkbenchSidebarActions.tsx +274 -0
  26. package/src/layout/WorkbenchTree.tsx +351 -0
  27. package/src/layout/layoutHelpers.ts +25 -0
  28. package/src/modal/ConfirmDialog.tsx +61 -53
  29. package/src/modal/Modal.tsx +295 -35
  30. package/src/overlay/ContextMenu.tsx +146 -145
  31. package/src/primitives/AbsoluteBox.tsx +46 -0
  32. package/src/primitives/Badge.tsx +12 -12
  33. package/src/primitives/Button.tsx +44 -14
  34. package/src/primitives/Checkbox.tsx +11 -5
  35. package/src/primitives/EmptyState.tsx +27 -26
  36. package/src/primitives/Field.tsx +38 -38
  37. package/src/primitives/IconButton.tsx +5 -2
  38. package/src/primitives/List.tsx +111 -0
  39. package/src/primitives/NumberInput.tsx +38 -0
  40. package/src/primitives/ScrollArea.tsx +42 -0
  41. package/src/primitives/Select.tsx +1 -12
  42. package/src/primitives/StatusBar.tsx +46 -0
  43. package/src/primitives/TextArea.tsx +36 -0
  44. package/src/primitives/TextInput.tsx +11 -2
  45. package/src/primitives/WorkbenchChrome.tsx +424 -0
  46. package/src/primitives/WorkbenchEditor.tsx +394 -0
  47. package/src/primitives/index.ts +105 -0
  48. package/src/primitives/select/Select.tsx +266 -0
  49. package/src/primitives/select/index.ts +2 -0
  50. package/src/primitives/select/options.ts +38 -0
  51. package/src/primitives/select/overlay.ts +63 -0
  52. package/src/primitives/select/select.app.css +9 -0
  53. package/src/primitives/select/select.css +140 -0
  54. package/src/primitives/select/types.ts +18 -0
  55. package/src/primitives/styles.css +955 -0
  56. package/src/scrollbars.css +69 -0
  57. package/src/styles.css +7738 -1762
  58. package/src/utils/codicon.ts +17 -0
  59. package/src/widget-asset/WidgetAssetEditor.tsx +140 -0
  60. package/src/widget-asset/WidgetAssetMetadataForm.tsx +82 -0
  61. package/src/widget-asset/WidgetAssetModeControls.tsx +42 -0
  62. package/src/widget-asset/WidgetAssetSourceEditor.tsx +50 -0
  63. package/src/widget-asset/WidgetAssetWorkbench.tsx +112 -0
  64. package/src/widget-asset/index.ts +17 -0
  65. package/src/widget-asset/widget-asset-document.ts +37 -0
  66. package/src/widget-asset/widget-asset-mode.ts +3 -0
  67. package/src/widget-studio/builtin-widget-asset-catalog.ts +12 -0
  68. package/src/widget-studio/create-widget-studio-workspace-editor.tsx +79 -0
  69. package/src/widget-studio/index.ts +7 -0
  70. package/src/widget-studio/resolve-widget-studio-asset-catalog.ts +26 -0
  71. package/src/widget-tree/WidgetAssetPalette.tsx +77 -0
  72. package/src/widget-tree/WidgetInspectorPanel.tsx +266 -0
  73. package/src/widget-tree/WidgetSourceEditor.tsx +56 -0
  74. package/src/widget-tree/WidgetTreeLab.tsx +272 -0
  75. package/src/widget-tree/WidgetTreeModeControls.tsx +44 -0
  76. package/src/widget-tree/WidgetTreeSidePanel.tsx +49 -0
  77. package/src/widget-tree/WidgetTreeView.tsx +97 -0
  78. package/src/widget-tree/WidgetTreeWorkbench.tsx +111 -0
  79. package/src/widget-tree/WidgetTreeWorkspaceShell.tsx +154 -0
  80. package/src/widget-tree/demo-registry.ts +32 -0
  81. package/src/widget-tree/demo-widget-assets.ts +4 -0
  82. package/src/widget-tree/index.ts +27 -0
  83. package/src/widget-tree/widget-tree-document.ts +20 -0
  84. package/src/widget-tree/widget-tree-layout.ts +31 -0
  85. package/src/widget-tree/widget-tree-mode.ts +7 -0
  86. package/src/widget-tree/widget-tree-play-helpers.ts +74 -0
  87. package/src/workbench/ActivityBar.tsx +52 -52
  88. package/src/workbench/ArtifactShell.tsx +397 -0
  89. package/src/workbench/CommandPalette.tsx +819 -0
  90. package/src/workbench/ConfirmationFlow.tsx +245 -0
  91. package/src/workbench/MarkdownPreview.tsx +151 -0
  92. package/src/workbench/ShortcutCommandBridge.tsx +368 -0
  93. package/src/workbench/SplitView.tsx +136 -136
  94. package/src/workbench/StatusBar.tsx +178 -123
  95. package/src/workbench/StructuredArtifactEditor.tsx +205 -0
  96. package/src/workbench/Timeline.tsx +302 -0
  97. package/src/workbench/WorkbenchCanvasShell.tsx +941 -0
  98. package/src/workbench/WorkbenchShell.tsx +74 -70
  99. package/src/workbench/WorkbenchStandaloneShell.tsx +318 -291
  100. package/src/workbench/auth/WorkbenchAuthGate.tsx +61 -0
  101. package/src/workbench/auth/WorkbenchLoginView.tsx +635 -0
  102. package/src/workbench/auth/index.ts +19 -0
  103. package/src/workbench/chat/ChatComposer.tsx +165 -148
  104. package/src/workbench/chat/ChatMessageItem.tsx +10 -1
  105. package/src/workbench/chat/index.ts +9 -0
  106. package/src/workbench/chat/slashCommand.ts +28 -0
  107. package/src/workbench/chat/useChatRuntimeState.ts +76 -0
  108. package/src/workbench/chat/useSlashCommandSuggest.ts +101 -0
  109. package/src/workbench/commands.ts +520 -490
  110. package/src/workbench/index.ts +443 -98
  111. package/src/workbench/keyboard.ts +53 -0
  112. package/src/workbench/schema/index.ts +48 -0
  113. package/src/workbench/schema/workbenchDocument.ts +31 -0
  114. package/src/workbench/schema/workbenchDocumentActions.ts +6 -0
  115. package/src/workbench/schema/workbenchDocumentAdapter.ts +9 -0
  116. package/src/workbench/schema/workbenchDocumentPatch.ts +13 -0
  117. package/src/workbench/schema/workbenchDocumentRenderer.tsx +702 -0
  118. package/src/workbench/settings/NavigationPanel.tsx +47 -0
  119. package/src/workbench/settings/SchemaForm.tsx +420 -0
  120. package/src/workbench/settings/SectionedPanel.tsx +415 -0
  121. package/src/workbench/settings/StructuredDataForm.tsx +539 -0
  122. package/src/workbench/settings/StructuredDataSchemaPanel.tsx +559 -0
  123. package/src/workbench/settings/StructuredDataSchemaPanelEmbed.tsx +21 -0
  124. package/src/workbench/settings/StructuredDataSchemaPanelFrame.tsx +76 -0
  125. package/src/workbench/settings/StructuredDataTableView.tsx +127 -0
  126. package/src/workbench/settings/WorkbenchPanelRegion.tsx +46 -0
  127. package/src/workbench/settings/WorkbenchSettingsModal.tsx +21 -12
  128. package/src/workbench/settings/WorkbenchSettingsNav.tsx +38 -22
  129. package/src/workbench/settings/index.ts +135 -0
  130. package/src/workbench/settings/panel-region.css +21 -0
  131. package/src/workbench/settings/sectionedPanelScrollSpy.ts +143 -0
  132. package/src/workbench/settings/structured-data-schema-panel.css +330 -0
  133. package/src/workbench/settings/structured-data-table-view.css +85 -0
  134. package/src/workbench/settings/structuredDataSchema.ts +886 -0
  135. package/src/workbench/shell.ts +15 -0
  136. package/src/workbench/shellState.ts +203 -203
  137. package/src/workbench/standalone.ts +101 -94
  138. package/src/workbench/status.ts +129 -0
  139. package/src/workbench/theme.ts +44 -0
  140. package/src/workbench/workspace/MultiProviderExplorer.tsx +625 -0
  141. package/src/workbench/workspace/WorkspaceDraftsContext.tsx +111 -0
  142. package/src/workbench/workspace/WorkspaceEditor.tsx +47 -12
  143. package/src/workbench/workspace/WorkspaceEditorPanel.tsx +334 -353
  144. package/src/workbench/workspace/WorkspaceExplorer.tsx +532 -524
  145. package/src/workbench/workspace/WorkspaceFileIcon.tsx +32 -2
  146. package/src/workbench/workspace/WorkspaceSearchPanel.tsx +113 -113
  147. package/src/workbench/workspace/WorkspaceSearchResults.tsx +47 -47
  148. package/src/workbench/workspace/index.ts +156 -98
  149. package/src/workbench/workspace/mimeType.ts +45 -0
  150. package/src/workbench/workspace/path.ts +10 -10
  151. package/src/workbench/workspace/search.ts +6 -6
  152. package/src/workbench/workspace/tree.ts +1 -1
  153. package/src/workbench/workspace/types.ts +10 -10
  154. package/src/workbench/workspace/useVirtualWorkspace.ts +111 -98
  155. package/src/workbench/workspace/workspaceJsonDiagnostics.ts +83 -0
@@ -1,70 +1,74 @@
1
- import type { CSSProperties, ReactNode } from 'react';
2
- import { ActivityBar, type ActivityBarProps, type ActivityBarItem } from './ActivityBar';
3
- import { SplitView } from './SplitView';
4
- import { StatusBar, type StatusBarItemModel, type StatusBarSectionModel } from './StatusBar';
5
-
6
- export interface WorkbenchShellProps {
7
- activityBar: Omit<ActivityBarProps, 'items'> & {
8
- items: ActivityBarItem[];
9
- };
10
- compactStatus?: boolean;
11
- onStatusItemActivate?: (item: StatusBarItemModel) => void;
12
- primarySidebar?: {
13
- isVisible: boolean;
14
- node: ReactNode;
15
- onSizePercentChange?: (sizePercent: number) => void;
16
- primarySizePercent?: number;
17
- minPrimarySizePercent?: number;
18
- maxPrimarySizePercent?: number;
19
- className?: string;
20
- style?: CSSProperties;
21
- };
22
- rootClassName?: string;
23
- rootStyle?: CSSProperties;
24
- secondaryArea: ReactNode;
25
- statusSections: StatusBarSectionModel[];
26
- overlays?: ReactNode;
27
- theme?: string;
28
- }
29
-
30
- export function WorkbenchShell({
31
- activityBar,
32
- compactStatus = true,
33
- onStatusItemActivate,
34
- overlays,
35
- primarySidebar,
36
- rootClassName,
37
- rootStyle,
38
- secondaryArea,
39
- statusSections,
40
- theme,
41
- }: WorkbenchShellProps) {
42
- const body = primarySidebar?.isVisible ? (
43
- <SplitView
44
- className={primarySidebar?.className}
45
- minPrimarySizePercent={primarySidebar?.minPrimarySizePercent}
46
- maxPrimarySizePercent={primarySidebar?.maxPrimarySizePercent}
47
- onPrimarySizePercentChange={primarySidebar?.onSizePercentChange}
48
- primary={primarySidebar.node}
49
- primarySizePercent={primarySidebar.primarySizePercent}
50
- secondary={secondaryArea}
51
- />
52
- ) : (
53
- secondaryArea
54
- );
55
-
56
- return (
57
- <div className={rootClassName} data-theme={theme} style={rootStyle}>
58
- <div className="ide-body">
59
- <ActivityBar {...activityBar} />
60
- {body}
61
- </div>
62
- <StatusBar
63
- compact={compactStatus}
64
- sections={statusSections}
65
- onItemActivate={onStatusItemActivate}
66
- />
67
- {overlays}
68
- </div>
69
- );
70
- }
1
+ import type { CSSProperties, ReactNode } from 'react';
2
+ import { ActivityBar, type ActivityBarProps, type ActivityBarItem } from './ActivityBar';
3
+ import { SplitView } from './SplitView';
4
+ import { StatusBar, type StatusBarItemModel, type StatusBarSectionModel } from './StatusBar';
5
+ import { DEFAULT_PRIMARY_SIDEBAR_SIZE_PERCENT } from './shellState';
6
+
7
+ export interface WorkbenchShellProps {
8
+ activityBar: Omit<ActivityBarProps, 'items'> & {
9
+ items: ActivityBarItem[];
10
+ };
11
+ compactStatus?: boolean;
12
+ onStatusItemActivate?: (item: StatusBarItemModel) => void;
13
+ primarySidebar?: {
14
+ isVisible: boolean;
15
+ node: ReactNode;
16
+ onSizePercentChange?: (sizePercent: number) => void;
17
+ primarySizePercent?: number;
18
+ minPrimarySizePercent?: number;
19
+ maxPrimarySizePercent?: number;
20
+ className?: string;
21
+ style?: CSSProperties;
22
+ };
23
+ rootClassName?: string;
24
+ rootStyle?: CSSProperties;
25
+ secondaryArea: ReactNode;
26
+ statusSections: StatusBarSectionModel[];
27
+ titleBar?: ReactNode;
28
+ overlays?: ReactNode;
29
+ theme?: string;
30
+ }
31
+
32
+ export function WorkbenchShell({
33
+ activityBar,
34
+ compactStatus = true,
35
+ onStatusItemActivate,
36
+ overlays,
37
+ primarySidebar,
38
+ rootClassName,
39
+ rootStyle,
40
+ secondaryArea,
41
+ statusSections,
42
+ titleBar,
43
+ theme,
44
+ }: WorkbenchShellProps) {
45
+ const body = primarySidebar?.isVisible ? (
46
+ <SplitView
47
+ className={primarySidebar?.className}
48
+ minPrimarySizePercent={primarySidebar?.minPrimarySizePercent}
49
+ maxPrimarySizePercent={primarySidebar?.maxPrimarySizePercent}
50
+ onPrimarySizePercentChange={primarySidebar?.onSizePercentChange}
51
+ primary={primarySidebar.node}
52
+ primarySizePercent={primarySidebar.primarySizePercent ?? DEFAULT_PRIMARY_SIDEBAR_SIZE_PERCENT}
53
+ secondary={secondaryArea}
54
+ />
55
+ ) : (
56
+ secondaryArea
57
+ );
58
+
59
+ return (
60
+ <div className={rootClassName} data-theme={theme} style={rootStyle}>
61
+ {titleBar ? <header className="ui-workbench-titlebar">{titleBar}</header> : null}
62
+ <div className="ide-body">
63
+ <ActivityBar {...activityBar} />
64
+ {body}
65
+ </div>
66
+ <StatusBar
67
+ compact={compactStatus}
68
+ sections={statusSections}
69
+ onItemActivate={onStatusItemActivate}
70
+ />
71
+ {overlays}
72
+ </div>
73
+ );
74
+ }