diff --git a/package.json b/package.json index ada91dd38..9504d21bf 100644 --- a/package.json +++ b/package.json @@ -29,6 +29,7 @@ "@popperjs/core": "^2.11.8", "@sentry/sveltekit": "^8.38.0", "@stripe/stripe-js": "^3.5.0", + "@xterm/xterm": "^5.5.0", "ai": "^2.2.37", "analytics": "^0.8.16", "cron-parser": "^4.9.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index fdcf03169..d54b2704f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -32,6 +32,9 @@ importers: '@stripe/stripe-js': specifier: ^3.5.0 version: 3.5.0 + '@xterm/xterm': + specifier: ^5.5.0 + version: 5.5.0 ai: specifier: ^2.2.37 version: 2.2.37(react@18.3.1)(solid-js@1.9.5)(svelte@5.25.3)(vue@3.5.13(typescript@5.8.2)) @@ -1424,6 +1427,9 @@ packages: '@vue/shared@3.5.13': resolution: {integrity: sha512-/hnE/qP5ZoGpol0a5mDi45bOd7t3tjYJBjsgCsivow7D48cJeV5l05RD82lPqi7gRiphZM37rnhW1l6ZoCNNnQ==} + '@xterm/xterm@5.5.0': + resolution: {integrity: sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==} + acorn-import-attributes@1.9.5: resolution: {integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==} peerDependencies: @@ -4816,6 +4822,8 @@ snapshots: '@vue/shared@3.5.13': {} + '@xterm/xterm@5.5.0': {} + acorn-import-attributes@1.9.5(acorn@8.14.1): dependencies: acorn: 8.14.1 diff --git a/src/lib/components/index.ts b/src/lib/components/index.ts index c49202c02..d6016680c 100644 --- a/src/lib/components/index.ts +++ b/src/lib/components/index.ts @@ -82,3 +82,4 @@ export { default as BottomSheet } from './bottom-sheet/index'; export { default as Confirm } from './confirm.svelte'; export { default as UsageCard } from './usageCard.svelte'; export { default as Chat } from './chat.svelte'; +export { default as Terminal } from './studio/terminal.svelte'; diff --git a/src/lib/components/studio/terminal.svelte b/src/lib/components/studio/terminal.svelte new file mode 100644 index 000000000..e5fca9d8b --- /dev/null +++ b/src/lib/components/studio/terminal.svelte @@ -0,0 +1,28 @@ + + +
+ +
+ + diff --git a/src/lib/layout/shellStudio.svelte b/src/lib/layout/shellStudio.svelte index 131575ffd..31586e16c 100644 --- a/src/lib/layout/shellStudio.svelte +++ b/src/lib/layout/shellStudio.svelte @@ -39,6 +39,7 @@ window.addEventListener('mousemove', resize); window.addEventListener('mouseup', stopResize); document.body.style.userSelect = 'none'; + document.getElementById('preview-iframe').style.pointerEvents = 'none'; } function resize(event) { @@ -55,6 +56,7 @@ window.removeEventListener('mousemove', resize); window.removeEventListener('mouseup', stopResize); document.body.style.userSelect = ''; + document.getElementById('preview-iframe').style.pointerEvents = ''; } diff --git a/src/routes/(console)/project-[project]/builder/+page.svelte b/src/routes/(console)/project-[project]/builder/+page.svelte index 9214bdda7..1648d4571 100644 --- a/src/routes/(console)/project-[project]/builder/+page.svelte +++ b/src/routes/(console)/project-[project]/builder/+page.svelte @@ -1,5 +1,140 @@ -Iframe + + + + {#each tabs as tab} + + {tab.title} + + {/each} + + + + + + + + +
+
+
+ +
+
+ {#if terminalOpen}
+ {/if} + +
+ +