Files
supabase/apps/studio/components/ui/DocsButton.tsx
T
Joshen Lim 09a1f431bc Mass update for all lucide icon imports to use the component with Icon suffix (#51659)
## Context

This is largely just a mechanical change here:
Opting to use lucide icons with the `Icon` suffix across all icon
imports within `studio`
- so that it’s clearer which components are icons + reduces the
possibility of name collision with our own components
- e.g <User /> vs <UserIcon />

Also added a eslint rule for this:
<img width="1069" height="167" alt="image"
src="https://github.com/user-attachments/assets/7f36f443-5ca2-4bf6-8d22-86e774513bfc"
/>

And updated `AGENTS.md` as such:
```
Icons come from `lucide-react`, always imported with the `Icon` suffix (`import { CheckIcon, Trash2Icon } from 'lucide-react'`) — never the bare names (`Check`) or `Check as CheckIcon` aliases (lint-enforced).
```
2026-10-14 12:56:55 +02:00

33 lines
811 B
TypeScript

import { BookOpenIcon } from 'lucide-react'
import { Button } from 'ui'
interface DocsButtonProps {
href: string
abbrev?: boolean
className?: string
topic?: string
/** Custom button text, e.g. to distinguish multiple docs buttons side by side. */
label?: string
}
export const DocsButton = ({ href, abbrev = true, className, topic, label }: DocsButtonProps) => {
return (
<Button
asChild
variant="default"
className={className}
icon={<BookOpenIcon />}
onClick={(e) => e.stopPropagation()}
>
<a
target="_blank"
rel="noopener noreferrer"
href={href}
aria-label={topic ? `${topic} documentation (opens in new tab)` : undefined}
>
{label ?? (abbrev ? 'Docs' : 'Documentation')}
</a>
</Button>
)
}