mirror of
https://github.com/supabase/supabase.git
synced 2026-10-16 22:59:11 +03:00
## 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). ```
33 lines
811 B
TypeScript
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>
|
|
)
|
|
}
|