diff options
| author | Adam <[email protected]> | 2025-12-09 20:50:21 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-12-09 21:39:12 -0600 |
| commit | e2ebe560ead35d84eb7d1a6272bca3538e0b6928 (patch) | |
| tree | bf1e0808e8380339c16f6dced01e90bcab46b651 /packages/ui/src/components/provider-icon.tsx | |
| parent | 6db822fd923f3561fe4cefffc95f4179b23ee87c (diff) | |
| download | opencode-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.tsx | 24 |
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> + ) +} |
