mirror of
https://github.com/supabase/supabase.git
synced 2026-10-06 01:45:10 +03:00
## What kind of change does this PR introduce? Mechanical cleanup on top of the Button default-variant change (#50160). ## What is the current behavior? Many callsites still pass `variant="default"` even though that is now the component default. ## What is the new behavior? Removes redundant static `variant="default"` from legacy `Button` and `ButtonTooltip` callsites. Keeps explicit defaults where they document the API: - `button-default.tsx` and `button-sizes.tsx` demos - `DocsButton`, which pins neutral styling at the wrapper boundary ## To test Studio: - [Auth → Rate Limits](https://studio-staging-2s957kwc4-supabase.vercel.app/dashboard/project/_/auth/rate-limits): dirty the form so Cancel appears; Cancel stays neutral, Save stays green - [Project Settings → API Keys](https://studio-staging-2s957kwc4-supabase.vercel.app/dashboard/project/_/settings/api-keys): `DocsButton` in the header actions stays neutral Design system: - [Design system → Button](https://design-system-git-dnywh-dc924ac1-supabase.vercel.app/design-system/docs/components/button): `button-default` / `button-sizes` still show explicit default styling; Primary (green) is restricted to the Primary section (and `asChild`) WWW: - [www → Brand assets](https://zone-www-dot-com-git-dnywh-dc924ac1-supabase.vercel.app/brand-assets): Download logo kit / Download button kit stay neutral
88 lines
2.9 KiB
TypeScript
88 lines
2.9 KiB
TypeScript
import { ArrowDownNarrowWide, ArrowDownWideNarrow } from 'lucide-react'
|
|
import {
|
|
Button,
|
|
DropdownMenu,
|
|
DropdownMenuContent,
|
|
DropdownMenuRadioGroup,
|
|
DropdownMenuRadioItem,
|
|
DropdownMenuSub,
|
|
DropdownMenuSubContent,
|
|
DropdownMenuSubTrigger,
|
|
DropdownMenuTrigger,
|
|
} from 'ui'
|
|
|
|
export const EDGE_FUNCTIONS_SORT_VALUES = [
|
|
'name:asc',
|
|
'name:desc',
|
|
'created_at:asc',
|
|
'created_at:desc',
|
|
'updated_at:asc',
|
|
'updated_at:desc',
|
|
] as const
|
|
|
|
export type EdgeFunctionsSort = (typeof EDGE_FUNCTIONS_SORT_VALUES)[number]
|
|
export type EdgeFunctionsSortColumn = EdgeFunctionsSort extends `${infer Column}:${string}`
|
|
? Column
|
|
: unknown
|
|
export type EdgeFunctionsSortOrder = EdgeFunctionsSort extends `${string}:${infer Order}`
|
|
? Order
|
|
: unknown
|
|
|
|
interface EdgeFunctionsSortDropdownProps {
|
|
value: EdgeFunctionsSort
|
|
onChange: (value: EdgeFunctionsSort) => void
|
|
}
|
|
|
|
function getSortLabel(value: EdgeFunctionsSort) {
|
|
const [sortCol] = value.split(':')
|
|
return sortCol.replace('_', ' ')
|
|
}
|
|
|
|
export const EdgeFunctionsSortDropdown = ({ value, onChange }: EdgeFunctionsSortDropdownProps) => {
|
|
return (
|
|
<DropdownMenu>
|
|
<DropdownMenuTrigger asChild>
|
|
<Button
|
|
icon={
|
|
value.includes('desc') ? (
|
|
<ArrowDownWideNarrow size={14} />
|
|
) : (
|
|
<ArrowDownNarrowWide size={14} />
|
|
)
|
|
}
|
|
>
|
|
Sorted by {getSortLabel(value)}
|
|
</Button>
|
|
</DropdownMenuTrigger>
|
|
<DropdownMenuContent align="start" className="w-48">
|
|
<DropdownMenuRadioGroup
|
|
value={value}
|
|
onValueChange={(val) => onChange(val as EdgeFunctionsSort)}
|
|
>
|
|
<DropdownMenuSub>
|
|
<DropdownMenuSubTrigger>Sort by name</DropdownMenuSubTrigger>
|
|
<DropdownMenuSubContent>
|
|
<DropdownMenuRadioItem value="name:asc">Ascending</DropdownMenuRadioItem>
|
|
<DropdownMenuRadioItem value="name:desc">Descending</DropdownMenuRadioItem>
|
|
</DropdownMenuSubContent>
|
|
</DropdownMenuSub>
|
|
<DropdownMenuSub>
|
|
<DropdownMenuSubTrigger>Sort by created at</DropdownMenuSubTrigger>
|
|
<DropdownMenuSubContent>
|
|
<DropdownMenuRadioItem value="created_at:asc">Ascending</DropdownMenuRadioItem>
|
|
<DropdownMenuRadioItem value="created_at:desc">Descending</DropdownMenuRadioItem>
|
|
</DropdownMenuSubContent>
|
|
</DropdownMenuSub>
|
|
<DropdownMenuSub>
|
|
<DropdownMenuSubTrigger>Sort by updated at</DropdownMenuSubTrigger>
|
|
<DropdownMenuSubContent>
|
|
<DropdownMenuRadioItem value="updated_at:asc">Ascending</DropdownMenuRadioItem>
|
|
<DropdownMenuRadioItem value="updated_at:desc">Descending</DropdownMenuRadioItem>
|
|
</DropdownMenuSubContent>
|
|
</DropdownMenuSub>
|
|
</DropdownMenuRadioGroup>
|
|
</DropdownMenuContent>
|
|
</DropdownMenu>
|
|
)
|
|
}
|