From 47d9e017657c4d265dea53bd86d727097a7ba282 Mon Sep 17 00:00:00 2001 From: Adam <2363879+adamdotdevin@users.noreply.github.com> Date: Thu, 16 Oct 2025 14:53:44 -0500 Subject: wip: css/ui and desktop work --- packages/ui/src/components/fonts.tsx | 44 ++++++++++++++++++++++++++++++++++ packages/ui/src/components/index.ts | 2 ++ packages/ui/src/components/tooltip.tsx | 44 ++++++++++++++++++++++++++++++++++ 3 files changed, 90 insertions(+) create mode 100644 packages/ui/src/components/fonts.tsx create mode 100644 packages/ui/src/components/tooltip.tsx (limited to 'packages/ui/src/components') diff --git a/packages/ui/src/components/fonts.tsx b/packages/ui/src/components/fonts.tsx new file mode 100644 index 000000000..447c486e4 --- /dev/null +++ b/packages/ui/src/components/fonts.tsx @@ -0,0 +1,44 @@ +import { Style, Link } from "@solidjs/meta" +import geist from "@opencode-ai/css/fonts/geist.woff2" +import geistMono from "@opencode-ai/css/fonts/geist-mono.woff2" + +export const Fonts = () => { + return ( + <> + + + + + ) +} diff --git a/packages/ui/src/components/index.ts b/packages/ui/src/components/index.ts index be12d6a67..2048ec639 100644 --- a/packages/ui/src/components/index.ts +++ b/packages/ui/src/components/index.ts @@ -1,4 +1,6 @@ export * from "./button" export * from "./icon" +export * from "./fonts" export * from "./select" export * from "./tabs" +export * from "./tooltip" diff --git a/packages/ui/src/components/tooltip.tsx b/packages/ui/src/components/tooltip.tsx new file mode 100644 index 000000000..7cb22b290 --- /dev/null +++ b/packages/ui/src/components/tooltip.tsx @@ -0,0 +1,44 @@ +import { Tooltip as KobalteTooltip } from "@kobalte/core/tooltip" +import { children, createEffect, createSignal, splitProps } from "solid-js" +import type { ComponentProps } from "solid-js" + +export interface TooltipProps extends ComponentProps { + value: string | (() => string) + class?: string +} + +export function Tooltip(props: TooltipProps) { + const [open, setOpen] = createSignal(false) + const [local, others] = splitProps(props, ["children", "class"]) + + const c = children(() => local.children) + + createEffect(() => { + const childElements = c() + if (childElements instanceof HTMLElement) { + childElements.addEventListener("focus", () => setOpen(true)) + childElements.addEventListener("blur", () => setOpen(false)) + } else if (Array.isArray(childElements)) { + for (const child of childElements) { + if (child instanceof HTMLElement) { + child.addEventListener("focus", () => setOpen(true)) + child.addEventListener("blur", () => setOpen(false)) + } + } + } + }) + + return ( + + + {c()} + + + + {typeof others.value === "function" ? others.value() : others.value} + + + + + ) +} -- cgit v1.2.3