From b738d88ec4c49efdf37ecf09058e70f1c3574b6b Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Thu, 5 Feb 2026 13:55:49 -0600 Subject: feat(app): open in button (#12322) --- packages/ui/src/components/app-icon.css | 9 ++ packages/ui/src/components/app-icon.tsx | 52 +++++++++++ packages/ui/src/components/app-icons/sprite.svg | 114 ++++++++++++++++++++++++ packages/ui/src/components/app-icons/types.ts | 18 ++++ 4 files changed, 193 insertions(+) create mode 100644 packages/ui/src/components/app-icon.css create mode 100644 packages/ui/src/components/app-icon.tsx create mode 100644 packages/ui/src/components/app-icons/sprite.svg create mode 100644 packages/ui/src/components/app-icons/types.ts (limited to 'packages/ui/src/components') diff --git a/packages/ui/src/components/app-icon.css b/packages/ui/src/components/app-icon.css new file mode 100644 index 000000000..edcdbcceb --- /dev/null +++ b/packages/ui/src/components/app-icon.css @@ -0,0 +1,9 @@ +img[data-component="app-icon"] { + display: block; + box-sizing: border-box; + padding: 2px; + border-radius: 0.125rem; + background: var(--smoke-light-2); + border: 1px solid var(--smoke-light-alpha-4); + object-fit: contain; +} diff --git a/packages/ui/src/components/app-icon.tsx b/packages/ui/src/components/app-icon.tsx new file mode 100644 index 000000000..f58b5d38c --- /dev/null +++ b/packages/ui/src/components/app-icon.tsx @@ -0,0 +1,52 @@ +import type { Component, ComponentProps } from "solid-js" +import { splitProps } from "solid-js" +import type { IconName } from "./app-icons/types" + +import androidStudio from "../assets/icons/app/android-studio.svg" +import antigravity from "../assets/icons/app/antigravity.svg" +import cursor from "../assets/icons/app/cursor.svg" +import finder from "../assets/icons/app/finder.png" +import ghostty from "../assets/icons/app/ghostty.svg" +import iterm2 from "../assets/icons/app/iterm2.svg" +import powershell from "../assets/icons/app/powershell.svg" +import terminal from "../assets/icons/app/terminal.png" +import textmate from "../assets/icons/app/textmate.png" +import vscode from "../assets/icons/app/vscode.svg" +import xcode from "../assets/icons/app/xcode.png" +import zed from "../assets/icons/app/zed.svg" + +const icons = { + vscode, + cursor, + zed, + finder, + terminal, + iterm2, + ghostty, + xcode, + "android-studio": androidStudio, + antigravity, + textmate, + powershell, +} satisfies Record + +export type AppIconProps = Omit, "src"> & { + id: IconName +} + +export const AppIcon: Component = (props) => { + const [local, rest] = splitProps(props, ["id", "class", "classList", "alt", "draggable"]) + return ( + {local.alt + ) +} diff --git a/packages/ui/src/components/app-icons/sprite.svg b/packages/ui/src/components/app-icons/sprite.svg new file mode 100644 index 000000000..68361f413 --- /dev/null +++ b/packages/ui/src/components/app-icons/sprite.svg @@ -0,0 +1,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/ui/src/components/app-icons/types.ts b/packages/ui/src/components/app-icons/types.ts new file mode 100644 index 000000000..81964b8da --- /dev/null +++ b/packages/ui/src/components/app-icons/types.ts @@ -0,0 +1,18 @@ +// This file is generated by icon spritesheet generator + +export const iconNames = [ + "vscode", + "cursor", + "zed", + "finder", + "terminal", + "iterm2", + "ghostty", + "xcode", + "android-studio", + "antigravity", + "textmate", + "powershell", +] as const + +export type IconName = (typeof iconNames)[number] -- cgit v1.2.3