remove subscription endpoint

This commit is contained in:
2026-01-17 16:39:48 -03:00
parent d26abc02c9
commit d0a9998bf4
19 changed files with 450 additions and 192 deletions

View File

@@ -5,18 +5,19 @@ import { useToggle } from 'ahooks'
import { EllipsisIcon, FileBadgeIcon } from 'lucide-react'
import type { ComponentProps } from 'react'
import {
DataTableColumnHeaderSelect,
DataTableColumnSelect
} from '@repo/ui/components/data-table/column-select'
import { Button } from '@repo/ui/components/ui/button'
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuSeparator,
DropdownMenuTrigger
} from '@repo/ui/components/ui/dropdown-menu'
import { Spinner } from '@repo/ui/components/ui/spinner'
import {
DataTableColumnHeaderSelect,
DataTableColumnSelect
} from '@repo/ui/components/data-table/column-select'
import {
columns as columns_,
type Enrollment
@@ -65,12 +66,13 @@ function ActionMenu({ row }: { row: any }) {
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end" className="w-46 *:cursor-pointer">
<CopyToClipboardItem text={row.id} />
<DownloadItem
id={row.id}
disabled={!cert}
onSuccess={() => setOpen(false)}
/>
<DropdownMenuSeparator />
<CopyToClipboardItem text={row.id} />
</DropdownMenuContent>
</DropdownMenu>
</div>

View File

@@ -0,0 +1,168 @@
import type { Route } from './+types/route'
import { useForm } from 'react-hook-form'
import { Link } from 'react-router'
import { Avatar, AvatarFallback } from '@repo/ui/components/ui/avatar'
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator
} from '@repo/ui/components/ui/breadcrumb'
import { Button } from '@repo/ui/components/ui/button'
import {
Card,
CardContent,
CardDescription,
CardHeader,
CardTitle
} from '@repo/ui/components/ui/card'
import { FieldSet } from '@repo/ui/components/ui/field'
import {
Form,
FormControl,
FormField,
FormItem,
FormLabel,
FormMessage
} from '@repo/ui/components/ui/form'
import { Input } from '@repo/ui/components/ui/input'
import { initials } from '@repo/ui/lib/utils'
import { request as req } from '@repo/util/request'
import { BadgeCheckIcon } from 'lucide-react'
export function meta() {
return [
{
title: 'Editar empresa'
}
]
}
export async function loader({ params, request, context }: Route.LoaderArgs) {
const r = await req({
url: `/orgs/${params.id}`,
request,
context
})
if (!r.ok) {
throw new Response(null, { status: r.status })
}
return { org: await r.json() } as { org: any }
}
export default function Route({ loaderData: { org } }: Route.ComponentProps) {
const form = useForm({ defaultValues: org })
const { handleSubmit } = form
const onSubmit = async () => {}
return (
<div className="space-y-2.5">
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink asChild>
<Link to="../orgs">Empresas</Link>
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Editar empresa</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
<div className="lg:max-w-2xl mx-auto space-y-2.5">
<div className="flex gap-2.5 items-center mb-5">
<div className="relative">
{org?.subscription ? (
<BadgeCheckIcon className="fill-blue-500 stroke-white absolute size-4 dark:size-3.5 -top-0 -right-0 z-2" />
) : null}
<Avatar className="size-12">
<AvatarFallback>{initials(org.name)}</AvatarFallback>
</Avatar>
</div>
<ul>
<li className="font-bold text-lg">{org.name}</li>
<li className="text-muted-foreground text-sm truncate max-lg:max-w-62">
{org.email}
</li>
</ul>
</div>
<Form {...form}>
<form onSubmit={handleSubmit(onSubmit)} className="space-y-8">
<Card>
<CardHeader>
<CardTitle className="font-semibold text-2xl">
Editar empresa
</CardTitle>
<CardDescription>
Configurar as informações gerais para esta empresa.
</CardDescription>
</CardHeader>
<CardContent>
<FieldSet disabled={true}>
<FormField
control={form.control}
name="name"
render={({ field }) => (
<FormItem>
<FormLabel>Nome</FormLabel>
<FormControl>
<Input {...field} />
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name="email"
render={({ field }) => (
<FormItem>
<FormLabel>Email</FormLabel>
<FormControl>
<Input {...field} />
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<FormField
control={form.control}
name="cnpj"
render={({ field }) => (
<FormItem>
<FormLabel>CNPJ</FormLabel>
<FormControl>
<Input {...field} />
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<div className="flex justify-end">
<Button type="submit">Editar</Button>
</div>
</FieldSet>
</CardContent>
</Card>
</form>
</Form>
</div>
</div>
)
}

View File

@@ -1,23 +1,27 @@
'use client'
import { type ColumnDef } from '@tanstack/react-table'
import { EllipsisIcon } from 'lucide-react'
import { EllipsisIcon, PencilIcon } from 'lucide-react'
import { NavLink } from 'react-router'
import { Button } from '@repo/ui/components/ui/button'
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuTrigger
} from '@repo/ui/components/ui/dropdown-menu'
import { Abbr } from '@repo/ui/components/abbr'
import { Avatar, AvatarFallback } from '@repo/ui/components/ui/avatar'
import { initials } from '@repo/ui/lib/utils'
import {
DataTableColumnCpfCnpj,
DataTableColumnDatetime,
DataTableColumnHeaderSelect,
DataTableColumnSelect
} from '@repo/ui/components/data-table'
import { Avatar, AvatarFallback } from '@repo/ui/components/ui/avatar'
import { Button } from '@repo/ui/components/ui/button'
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuSeparator,
DropdownMenuTrigger
} from '@repo/ui/components/ui/dropdown-menu'
import { Spinner } from '@repo/ui/components/ui/spinner'
import { initials } from '@repo/ui/lib/utils'
import type { Org } from '@repo/ui/routes/orgs/data'
import { CopyToClipboardItem } from '../_app.users._index/columns'
@@ -86,6 +90,17 @@ function ActionMenu({ row }: { row: any }) {
</Button>
</DropdownMenuTrigger>
<DropdownMenuContent align="end" className="w-36 *:cursor-pointer">
<DropdownMenuItem asChild onSelect={(e) => e.preventDefault()}>
<NavLink to={`${row.id}`}>
{({ isPending }) => (
<>
{isPending ? <Spinner /> : <PencilIcon />}
Editar
</>
)}
</NavLink>
</DropdownMenuItem>
<DropdownMenuSeparator />
<CopyToClipboardItem text={row.id} />
</DropdownMenuContent>
</DropdownMenu>