diff options
| author | David Hill <[email protected]> | 2025-10-30 11:37:00 +0000 |
|---|---|---|
| committer | David Hill <[email protected]> | 2025-10-30 11:37:00 +0000 |
| commit | bf0cbf2bfa65c3430d1c5ff5a60a0044e29ee022 (patch) | |
| tree | e874599b37eaa14d9242cfd3b6f196756e2b47a1 /packages/console/app/src/component/header.tsx | |
| parent | e265efec0999222526ca3bc7ab4c19a3d032f405 (diff) | |
| download | opencode-bf0cbf2bfa65c3430d1c5ff5a60a0044e29ee022.tar.gz opencode-bf0cbf2bfa65c3430d1c5ff5a60a0044e29ee022.zip | |
Adding polish
Diffstat (limited to 'packages/console/app/src/component/header.tsx')
| -rw-r--r-- | packages/console/app/src/component/header.tsx | 107 |
1 files changed, 96 insertions, 11 deletions
diff --git a/packages/console/app/src/component/header.tsx b/packages/console/app/src/component/header.tsx index 943ee6834..8f686e389 100644 --- a/packages/console/app/src/component/header.tsx +++ b/packages/console/app/src/component/header.tsx @@ -1,5 +1,11 @@ import logoLight from "../asset/logo-ornate-light.svg" import logoDark from "../asset/logo-ornate-dark.svg" +import copyLogoLight from "../asset/lander/logo-light.svg" +import copyLogoDark from "../asset/lander/logo-dark.svg" +import copyWordmarkLight from "../asset/lander/wordmark-light.svg" +import copyWordmarkDark from "../asset/lander/wordmark-dark.svg" +import copyBrandAssetsLight from "../asset/lander/brand-assets-light.svg" +import copyBrandAssetsDark from "../asset/lander/brand-assets-dark.svg" import { A, createAsync } from "@solidjs/router" import { createMemo, Match, Show, Switch } from "solid-js" import { createStore } from "solid-js/store" @@ -50,6 +56,53 @@ export function Header(props: { zen?: boolean }) { setStore("contextMenuOpen", true) } + const copyWordmarkToClipboard = async () => { + try { + const wordmarkSvg = `<svg width="234" height="42" viewBox="0 0 234 42" fill="none" xmlns="http://www.w3.org/2000/svg"> +<g clip-path="url(#clip0_1306_86249)"> +<path d="M18 30H6V18H18V30Z" fill="#CFCECD"/> +<path d="M18 12H6V30H18V12ZM24 36H0V6H24V36Z" fill="#656363"/> +<path d="M48 30H36V18H48V30Z" fill="#CFCECD"/> +<path d="M36 30H48V12H36V30ZM54 36H36V42H30V6H54V36Z" fill="#656363"/> +<path d="M84 24V30H66V24H84Z" fill="#CFCECD"/> +<path d="M84 24H66V30H84V36H60V6H84V24ZM66 18H78V12H66V18Z" fill="#656363"/> +<path d="M108 36H96V18H108V36Z" fill="#CFCECD"/> +<path d="M108 12H96V36H90V6H108V12ZM114 36H108V12H114V36Z" fill="#656363"/> +<path d="M144 30H126V18H144V30Z" fill="#CFCECD"/> +<path d="M144 12H126V30H144V36H120V6H144V12Z" fill="#211E1E"/> +<path d="M168 30H156V18H168V30Z" fill="#CFCECD"/> +<path d="M168 12H156V30H168V12ZM174 36H150V6H174V36Z" fill="#211E1E"/> +<path d="M198 30H186V18H198V30Z" fill="#CFCECD"/> +<path d="M198 12H186V30H198V12ZM204 36H180V6H198V0H204V36Z" fill="#211E1E"/> +<path d="M234 24V30H216V24H234Z" fill="#CFCECD"/> +<path d="M216 12V18H228V12H216ZM234 24H216V30H234V36H210V6H234V24Z" fill="#211E1E"/> +</g> +<defs> +<clipPath id="clip0_1306_86249"> +<rect width="234" height="42" fill="white"/> +</clipPath> +</defs> +</svg> +` + await navigator.clipboard.writeText(wordmarkSvg) + } catch (err) { + console.error("Failed to copy wordmark to clipboard:", err) + } + } + + const copyLogoToClipboard = async () => { + try { + const logoSvg = `<svg width="80" height="100" viewBox="0 0 80 100" fill="none" xmlns="http://www.w3.org/2000/svg"> +<path d="M60 80H20V40H60V80Z" fill="#BCBBBB"/> +<path d="M60 20H20V80H60V20ZM80 100H0V0H80V100Z" fill="#211E1E"/> +</svg> +` + await navigator.clipboard.writeText(logoSvg) + } catch (err) { + console.error("Failed to copy logo to clipboard:", err) + } + } + return ( <section data-component="top"> <div onContextMenu={handleLogoContextMenu}> @@ -64,20 +117,26 @@ export function Header(props: { zen?: boolean }) { class="context-menu" style={`left: ${store.contextMenuPosition.x}px; top: ${store.contextMenuPosition.y}px;`} > - <button - className="context-menu-item" - onClick={() => window.open("https://github.com/sst/opencode", "_blank")} - > + <button class="context-menu-item" onClick={copyLogoToClipboard}> + <img data-slot="copy light" src={copyLogoLight} + alt="Logo"/> + <img data-slot="copy dark" src={copyLogoDark} + alt="Logo"/> Copy logo as SVG </button> - <button - className="context-menu-item" - onClick={() => window.open("https://github.com/sst/opencode", "_blank")} - > + <button class="context-menu-item" onClick={copyWordmarkToClipboard}> + <img data-slot="copy light" src={copyWordmarkLight} + alt="Wordmark"/> + <img data-slot="copy dark" src={copyWordmarkDark} + alt="Wordmark"/> Copy wordmark as SVG </button> - <button className="context-menu-item" + <button class="context-menu-item" onClick={() => (window.location.href = "/brand")}> + <img data-slot="copy light" src={copyBrandAssetsLight} + alt="Brand Assets"/> + <img data-slot="copy dark" src={copyBrandAssetsDark} + alt="Brand Assets"/> Brand assets </button> </div> @@ -90,7 +149,20 @@ export function Header(props: { zen?: boolean }) { </a> </li> <li> - <a href="/brand">Brand assets</a> + <a href="/docs">Docs</a> + </li> + <li> + <A href="/enterprise">Enterprise</A> + </li> + <li> + <Switch> + <Match when={props.zen}> + <a href="/auth">Login</a> + </Match> + <Match when={!props.zen}> + <A href="/zen">Zen</A> + </Match> + </Switch> </li> </ul> </nav> @@ -151,7 +223,20 @@ export function Header(props: { zen?: boolean }) { </a> </li> <li> - <a href="/brand">Brand assets</a> + <a href="/docs">Docs</a> + </li> + <li> + <A href="/enterprise">Enterprise</A> + </li> + <li> + <Switch> + <Match when={props.zen}> + <a href="/auth">Login</a> + </Match> + <Match when={!props.zen}> + <A href="/zen">Zen</A> + </Match> + </Switch> </li> </ul> </nav> |
