summaryrefslogtreecommitdiffhomepage
path: root/packages/ui/src/components/provider-icon.tsx
diff options
context:
space:
mode:
authorAdam <[email protected]>2025-12-09 20:50:21 -0600
committerAdam <[email protected]>2025-12-09 21:39:12 -0600
commite2ebe560ead35d84eb7d1a6272bca3538e0b6928 (patch)
treebf1e0808e8380339c16f6dced01e90bcab46b651 /packages/ui/src/components/provider-icon.tsx
parent6db822fd923f3561fe4cefffc95f4179b23ee87c (diff)
downloadopencode-e2ebe560ead35d84eb7d1a6272bca3538e0b6928.tar.gz
opencode-e2ebe560ead35d84eb7d1a6272bca3538e0b6928.zip
feat: provider icon component
Diffstat (limited to 'packages/ui/src/components/provider-icon.tsx')
-rw-r--r--packages/ui/src/components/provider-icon.tsx24
1 files changed, 24 insertions, 0 deletions
diff --git a/packages/ui/src/components/provider-icon.tsx b/packages/ui/src/components/provider-icon.tsx
new file mode 100644
index 000000000..924dcd25c
--- /dev/null
+++ b/packages/ui/src/components/provider-icon.tsx
@@ -0,0 +1,24 @@
+import type { Component, JSX } from "solid-js"
+import { splitProps } from "solid-js"
+import sprite from "./provider-icons/sprite.svg"
+import type { IconName } from "./provider-icons/types"
+
+export type ProviderIconProps = JSX.SVGElementTags["svg"] & {
+ name: IconName
+}
+
+export const ProviderIcon: Component<ProviderIconProps> = (props) => {
+ const [local, rest] = splitProps(props, ["name", "class", "classList"])
+ return (
+ <svg
+ data-component="provider-icon"
+ {...rest}
+ classList={{
+ ...(local.classList ?? {}),
+ [local.class ?? ""]: !!local.class,
+ }}
+ >
+ <use href={`${sprite}#${local.name}`} />
+ </svg>
+ )
+}