UNPKG

morphbox

Version:

Docker-based AI sandbox for development with Claude integration

22 lines (19 loc) 9.31 kB
import { c as create_ssr_component, d as add_attribute, e as escape } from './ssr-Bi8A3Ffq.js'; import './client-BuRfMCoZ.js'; import './exports-DKuYoYKl.js'; const css = { code: ".login-container.svelte-164kqi9{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--background);padding:1rem}.login-box.svelte-164kqi9{background:var(--surface);padding:2rem;border-radius:8px;box-shadow:0 4px 6px rgba(0, 0, 0, 0.3);width:100%;max-width:400px;border:1px solid var(--border)}h1.svelte-164kqi9{margin:0 0 1.5rem;font-size:1.5rem;text-align:center;color:var(--text)}.logo.svelte-164kqi9{text-align:center;font-size:2rem;margin-bottom:0.5rem}.warning.svelte-164kqi9{background:var(--error);color:white;padding:0.75rem;border-radius:4px;margin-bottom:1.5rem;font-size:0.875rem}form.svelte-164kqi9{display:flex;flex-direction:column;gap:1rem}label.svelte-164kqi9{display:flex;flex-direction:column;gap:0.25rem;color:var(--text)}input.svelte-164kqi9{padding:0.5rem;border:1px solid var(--border);border-radius:4px;background:var(--background);color:var(--text);font-size:1rem}input.svelte-164kqi9:focus{outline:none;border-color:var(--primary)}button.svelte-164kqi9{padding:0.75rem;border:none;border-radius:4px;background:var(--primary);color:white;font-size:1rem;cursor:pointer;transition:background 0.2s}button.svelte-164kqi9:hover:not(:disabled){background:var(--primary-hover)}button.svelte-164kqi9:disabled{opacity:0.6;cursor:not-allowed}.error-message.svelte-164kqi9{color:var(--error);font-size:0.875rem;margin-top:0.5rem;text-align:center}.info.svelte-164kqi9{color:var(--text-secondary);font-size:0.75rem;text-align:center;margin-top:1rem}", map: `{"version":3,"file":"+page.svelte","sources":["+page.svelte"],"sourcesContent":["<script lang=\\"ts\\">import { goto } from \\"$app/navigation\\";\\nimport { browser } from \\"$app/environment\\";\\nlet username = \\"\\";\\nlet password = \\"\\";\\nlet error = \\"\\";\\nlet isLoading = false;\\nasync function handleLogin(e) {\\n e.preventDefault();\\n error = \\"\\";\\n isLoading = true;\\n try {\\n const formData = new FormData();\\n formData.append(\\"username\\", username);\\n formData.append(\\"password\\", password);\\n const response = await fetch(\\"/api/auth/login\\", {\\n method: \\"POST\\",\\n body: formData\\n });\\n const result = await response.json();\\n if (result.success) {\\n goto(\\"/\\");\\n } else {\\n error = result.message || \\"Login failed\\";\\n }\\n } catch (err) {\\n error = \\"An error occurred during login\\";\\n console.error(\\"Login error:\\", err);\\n } finally {\\n isLoading = false;\\n }\\n}\\nimport { onMount } from \\"svelte\\";\\nlet usernameInput;\\nonMount(() => {\\n if (usernameInput) {\\n usernameInput.focus();\\n }\\n});\\n<\/script>\\n\\n<style>\\n .login-container {\\n min-height: 100vh;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n background: var(--background);\\n padding: 1rem;\\n }\\n \\n .login-box {\\n background: var(--surface);\\n padding: 2rem;\\n border-radius: 8px;\\n box-shadow: 0 4px 6px rgba(0, 0, 0, 0.3);\\n width: 100%;\\n max-width: 400px;\\n border: 1px solid var(--border);\\n }\\n \\n h1 {\\n margin: 0 0 1.5rem;\\n font-size: 1.5rem;\\n text-align: center;\\n color: var(--text);\\n }\\n \\n .logo {\\n text-align: center;\\n font-size: 2rem;\\n margin-bottom: 0.5rem;\\n }\\n \\n .warning {\\n background: var(--error);\\n color: white;\\n padding: 0.75rem;\\n border-radius: 4px;\\n margin-bottom: 1.5rem;\\n font-size: 0.875rem;\\n }\\n \\n form {\\n display: flex;\\n flex-direction: column;\\n gap: 1rem;\\n }\\n \\n label {\\n display: flex;\\n flex-direction: column;\\n gap: 0.25rem;\\n color: var(--text);\\n }\\n \\n input {\\n padding: 0.5rem;\\n border: 1px solid var(--border);\\n border-radius: 4px;\\n background: var(--background);\\n color: var(--text);\\n font-size: 1rem;\\n }\\n \\n input:focus {\\n outline: none;\\n border-color: var(--primary);\\n }\\n \\n button {\\n padding: 0.75rem;\\n border: none;\\n border-radius: 4px;\\n background: var(--primary);\\n color: white;\\n font-size: 1rem;\\n cursor: pointer;\\n transition: background 0.2s;\\n }\\n \\n button:hover:not(:disabled) {\\n background: var(--primary-hover);\\n }\\n \\n button:disabled {\\n opacity: 0.6;\\n cursor: not-allowed;\\n }\\n \\n .error-message {\\n color: var(--error);\\n font-size: 0.875rem;\\n margin-top: 0.5rem;\\n text-align: center;\\n }\\n \\n .info {\\n color: var(--text-secondary);\\n font-size: 0.75rem;\\n text-align: center;\\n margin-top: 1rem;\\n }\\n</style>\\n\\n<div class=\\"login-container\\">\\n <div class=\\"login-box\\">\\n <div class=\\"logo\\">🔐</div>\\n <h1>Morphbox Authentication</h1>\\n \\n <div class=\\"warning\\">\\n ⚠️ <strong>Security Notice:</strong> You are accessing Morphbox in external mode. \\n Authentication is required to protect your system.\\n </div>\\n \\n <form on:submit={handleLogin}>\\n <label>\\n Username:\\n <input \\n bind:this={usernameInput}\\n type=\\"text\\" \\n bind:value={username}\\n required \\n disabled={isLoading}\\n autocomplete=\\"username\\"\\n />\\n </label>\\n \\n <label>\\n Password:\\n <input \\n type=\\"password\\" \\n bind:value={password}\\n required \\n disabled={isLoading}\\n autocomplete=\\"current-password\\"\\n />\\n </label>\\n \\n <button type=\\"submit\\" disabled={isLoading}>\\n {isLoading ? 'Logging in...' : 'Login'}\\n </button>\\n </form>\\n \\n {#if error}\\n <div class=\\"error-message\\">{error}</div>\\n {/if}\\n \\n <div class=\\"info\\">\\n Credentials were displayed when Morphbox started\\n </div>\\n </div>\\n</div>"],"names":[],"mappings":"AAyCE,+BAAiB,CACf,UAAU,CAAE,KAAK,CACjB,OAAO,CAAE,IAAI,CACb,WAAW,CAAE,MAAM,CACnB,eAAe,CAAE,MAAM,CACvB,UAAU,CAAE,IAAI,YAAY,CAAC,CAC7B,OAAO,CAAE,IACX,CAEA,yBAAW,CACT,UAAU,CAAE,IAAI,SAAS,CAAC,CAC1B,OAAO,CAAE,IAAI,CACb,aAAa,CAAE,GAAG,CAClB,UAAU,CAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CACxC,KAAK,CAAE,IAAI,CACX,SAAS,CAAE,KAAK,CAChB,MAAM,CAAE,GAAG,CAAC,KAAK,CAAC,IAAI,QAAQ,CAChC,CAEA,iBAAG,CACD,MAAM,CAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAClB,SAAS,CAAE,MAAM,CACjB,UAAU,CAAE,MAAM,CAClB,KAAK,CAAE,IAAI,MAAM,CACnB,CAEA,oBAAM,CACJ,UAAU,CAAE,MAAM,CAClB,SAAS,CAAE,IAAI,CACf,aAAa,CAAE,MACjB,CAEA,uBAAS,CACP,UAAU,CAAE,IAAI,OAAO,CAAC,CACxB,KAAK,CAAE,KAAK,CACZ,OAAO,CAAE,OAAO,CAChB,aAAa,CAAE,GAAG,CAClB,aAAa,CAAE,MAAM,CACrB,SAAS,CAAE,QACb,CAEA,mBAAK,CACH,OAAO,CAAE,IAAI,CACb,cAAc,CAAE,MAAM,CACtB,GAAG,CAAE,IACP,CAEA,oBAAM,CACJ,OAAO,CAAE,IAAI,CACb,cAAc,CAAE,MAAM,CACtB,GAAG,CAAE,OAAO,CACZ,KAAK,CAAE,IAAI,MAAM,CACnB,CAEA,oBAAM,CACJ,OAAO,CAAE,MAAM,CACf,MAAM,CAAE,GAAG,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,CAC/B,aAAa,CAAE,GAAG,CAClB,UAAU,CAAE,IAAI,YAAY,CAAC,CAC7B,KAAK,CAAE,IAAI,MAAM,CAAC,CAClB,SAAS,CAAE,IACb,CAEA,oBAAK,MAAO,CACV,OAAO,CAAE,IAAI,CACb,YAAY,CAAE,IAAI,SAAS,CAC7B,CAEA,qBAAO,CACL,OAAO,CAAE,OAAO,CAChB,MAAM,CAAE,IAAI,CACZ,aAAa,CAAE,GAAG,CAClB,UAAU,CAAE,IAAI,SAAS,CAAC,CAC1B,KAAK,CAAE,KAAK,CACZ,SAAS,CAAE,IAAI,CACf,MAAM,CAAE,OAAO,CACf,UAAU,CAAE,UAAU,CAAC,IACzB,CAEA,qBAAM,MAAM,KAAK,SAAS,CAAE,CAC1B,UAAU,CAAE,IAAI,eAAe,CACjC,CAEA,qBAAM,SAAU,CACd,OAAO,CAAE,GAAG,CACZ,MAAM,CAAE,WACV,CAEA,6BAAe,CACb,KAAK,CAAE,IAAI,OAAO,CAAC,CACnB,SAAS,CAAE,QAAQ,CACnB,UAAU,CAAE,MAAM,CAClB,UAAU,CAAE,MACd,CAEA,oBAAM,CACJ,KAAK,CAAE,IAAI,gBAAgB,CAAC,CAC5B,SAAS,CAAE,OAAO,CAClB,UAAU,CAAE,MAAM,CAClB,UAAU,CAAE,IACd"}` }; const Page = create_ssr_component(($$result, $$props, $$bindings, slots) => { let username = ""; let password = ""; let usernameInput; $$result.css.add(css); return `<div class="login-container svelte-164kqi9"><div class="login-box svelte-164kqi9"><div class="logo svelte-164kqi9" data-svelte-h="svelte-4mpxul">🔐</div> <h1 class="svelte-164kqi9" data-svelte-h="svelte-1ns51dd">Morphbox Authentication</h1> <div class="warning svelte-164kqi9" data-svelte-h="svelte-5s3dtr">⚠️ <strong>Security Notice:</strong> You are accessing Morphbox in external mode. Authentication is required to protect your system.</div> <form class="svelte-164kqi9"><label class="svelte-164kqi9">Username: <input type="text" required ${""} autocomplete="username" class="svelte-164kqi9"${add_attribute("this", usernameInput, 0)}${add_attribute("value", username, 0)}></label> <label class="svelte-164kqi9">Password: <input type="password" required ${""} autocomplete="current-password" class="svelte-164kqi9"${add_attribute("value", password, 0)}></label> <button type="submit" ${""} class="svelte-164kqi9">${escape("Login")}</button></form> ${``} <div class="info svelte-164kqi9" data-svelte-h="svelte-1xcvt0p">Credentials were displayed when Morphbox started</div></div></div>`; }); export { Page as default }; //# sourceMappingURL=_page.svelte-B-oOgpjG.js.map