diff --git a/.changeset/three-mirrors-begin.md b/.changeset/three-mirrors-begin.md new file mode 100644 index 00000000..80ceb7f2 --- /dev/null +++ b/.changeset/three-mirrors-begin.md @@ -0,0 +1,5 @@ +--- +'quickmock': minor +--- + +Added create new wireframe button on VSCode status bar. diff --git a/packages/vscode-extension/src/index.ts b/packages/vscode-extension/src/index.ts index 233d9683..f3c15c85 100644 --- a/packages/vscode-extension/src/index.ts +++ b/packages/vscode-extension/src/index.ts @@ -2,6 +2,7 @@ import { registerCommands } from '#commands'; import { onAppUrlChange, syncAppUrlFile } from '#core'; import { QuickMockEditorProvider } from '#editor'; import { setupMcp } from '#mcp'; +import { registerStatusBarItems } from '#status-bar'; import * as vscode from 'vscode'; export const activate = (context: vscode.ExtensionContext) => { @@ -10,6 +11,7 @@ export const activate = (context: vscode.ExtensionContext) => { context.subscriptions.push(QuickMockEditorProvider.register(context)); setupMcp(context); registerCommands(context); + registerStatusBarItems(context); }; export const deactivate = () => {}; diff --git a/packages/vscode-extension/src/status-bar/index.ts b/packages/vscode-extension/src/status-bar/index.ts new file mode 100644 index 00000000..c4125238 --- /dev/null +++ b/packages/vscode-extension/src/status-bar/index.ts @@ -0,0 +1,2 @@ +export * from './new-wireframe'; +export * from './register'; diff --git a/packages/vscode-extension/src/status-bar/new-wireframe/index.ts b/packages/vscode-extension/src/status-bar/new-wireframe/index.ts new file mode 100644 index 00000000..e5ec3505 --- /dev/null +++ b/packages/vscode-extension/src/status-bar/new-wireframe/index.ts @@ -0,0 +1 @@ +export * from './new-wireframe.status-bar'; diff --git a/packages/vscode-extension/src/status-bar/new-wireframe/new-wireframe.status-bar.ts b/packages/vscode-extension/src/status-bar/new-wireframe/new-wireframe.status-bar.ts new file mode 100644 index 00000000..bd30313e --- /dev/null +++ b/packages/vscode-extension/src/status-bar/new-wireframe/new-wireframe.status-bar.ts @@ -0,0 +1,20 @@ +import { QUICKMOCK_NEW_WIREFRAME_COMMAND_ID } from '#commands'; +import * as vscode from 'vscode'; + +const STATUS_BAR_PRIORITY = 100; + +export const registerNewWireframeStatusBarItem = ( + context: vscode.ExtensionContext +): void => { + const item = vscode.window.createStatusBarItem( + vscode.StatusBarAlignment.Left, + STATUS_BAR_PRIORITY + ); + item.text = '$(lightbulb) Quickmock'; + item.tooltip = 'Create new Quickmock wireframe'; + item.color = '#309a8a'; + item.command = QUICKMOCK_NEW_WIREFRAME_COMMAND_ID; + item.show(); + + context.subscriptions.push(item); +}; diff --git a/packages/vscode-extension/src/status-bar/register.ts b/packages/vscode-extension/src/status-bar/register.ts new file mode 100644 index 00000000..cd2bc908 --- /dev/null +++ b/packages/vscode-extension/src/status-bar/register.ts @@ -0,0 +1,12 @@ +import * as vscode from 'vscode'; +import { registerNewWireframeStatusBarItem } from './new-wireframe'; + +/** + * Registers all VS Code status bar items exposed by the extension. + * @param context The VS Code extension context. + */ +export const registerStatusBarItems = ( + context: vscode.ExtensionContext +): void => { + registerNewWireframeStatusBarItem(context); +};