1659 lines
64 KiB
Text
1659 lines
64 KiB
Text
|
||
> my-v0-project@0.1.0 build
|
||
> next build
|
||
|
||
Γû▓ Next.js 15.5.12
|
||
- Environments: .env.local
|
||
|
||
Creating an optimized production build ...
|
||
node.exe : Failed to
|
||
compile.
|
||
At line:1 char:1
|
||
+ & "C:\Program Files\
|
||
nodejs/node.exe" "C:\U
|
||
sers\Administrator\App
|
||
Data\ ...
|
||
+ ~~~~~~~~~~~~~~~~~~~~
|
||
~~~~~~~~~~~~~~~~~~~~~~
|
||
~~~~~~~~~~~~~~~~~~~~~~
|
||
~~~~~
|
||
+ CategoryInfo
|
||
: NotSpeci
|
||
fied: (Failed to
|
||
compile.:String)
|
||
[], RemoteExcepti
|
||
on
|
||
+ FullyQualifiedE
|
||
rrorId : NativeCo
|
||
mmandError
|
||
|
||
|
||
./src/app/dashboard/ba
|
||
ckoffice/page.tsx
|
||
Error: [31mx[0m
|
||
Return statement is
|
||
not allowed here
|
||
,-[[36;1;4mC:\de
|
||
v\gohorsejobs\frontend
|
||
\src\app\dashboard\bac
|
||
koffice\page.tsx[0m:2
|
||
57:1]
|
||
[2m254[0m |
|
||
}
|
||
[2m255[0m |
|
||
[2m256[0m |
|
||
if (loading) {
|
||
[2m257[0m | [35;1m
|
||
,[0m[35;1m-[0m[35;
|
||
1m>[0m
|
||
return (
|
||
[2m258[0m |
|
||
[35;1m|[0m
|
||
<div
|
||
className="flex
|
||
items-center
|
||
justify-center
|
||
h-full">
|
||
[2m259[0m |
|
||
[35;1m|[0m
|
||
<div classNam
|
||
e="animate-spin
|
||
rounded-full h-8 w-8
|
||
border-b-2
|
||
border-primary"></div>
|
||
[2m260[0m |
|
||
[35;1m|[0m
|
||
</div>
|
||
[2m261[0m | [35;1m
|
||
`[0m[35;1m-[0m[35;
|
||
1m>[0m )
|
||
[2m262[0m |
|
||
}
|
||
[2m263[0m |
|
||
[2m263[0m |
|
||
return (
|
||
`----
|
||
[31mx[0m Return
|
||
statement is not
|
||
allowed here
|
||
,-[[36;1;4mC:\de
|
||
v\gohorsejobs\frontend
|
||
\src\app\dashboard\bac
|
||
koffice\page.tsx[0m:2
|
||
64:1]
|
||
[2m261[0m |
|
||
)
|
||
[2m262[0m |
|
||
}
|
||
[2m263[0m |
|
||
[2m264[0m | [35;1m
|
||
,[0m[35;1m-[0m[35;
|
||
1m>[0m return (
|
||
[2m265[0m |
|
||
[35;1m|[0m
|
||
<div
|
||
className="space-y-6">
|
||
[2m266[0m |
|
||
[35;1m|[0m
|
||
<div
|
||
className="flex
|
||
items-center
|
||
justify-between">
|
||
[2m267[0m |
|
||
[35;1m|[0m
|
||
<div>
|
||
[2m268[0m |
|
||
[35;1m|[0m
|
||
<h1
|
||
className="text-3xl
|
||
font-bold text-foregro
|
||
und">Backoffice</h1>
|
||
[2m269[0m |
|
||
[35;1m|[0m
|
||
<p classN
|
||
ame="text-muted-foregr
|
||
ound mt-1">SaaS
|
||
Administration &
|
||
Operations</p>
|
||
[2m270[0m |
|
||
[35;1m|[0m
|
||
</div>
|
||
[2m271[0m |
|
||
[35;1m|[0m
|
||
<div
|
||
className="flex
|
||
gap-2">
|
||
[2m272[0m |
|
||
[35;1m|[0m
|
||
<Button
|
||
variant="outline"
|
||
onClick={() => loadBac
|
||
koffice(false)}
|
||
className="gap-2">
|
||
[2m273[0m |
|
||
[35;1m|[0m
|
||
|
||
<RefreshCw
|
||
className="h-4 w-4" />
|
||
[2m274[0m |
|
||
[35;1m|[0m
|
||
|
||
Refresh
|
||
[2m275[0m |
|
||
[35;1m|[0m
|
||
</Button>
|
||
[2m276[0m |
|
||
[35;1m|[0m
|
||
</div>
|
||
[2m277[0m |
|
||
[35;1m|[0m
|
||
</div>
|
||
[2m278[0m |
|
||
[35;1m|[0m
|
||
[2m279[0m |
|
||
[35;1m|[0m
|
||
<Tabs defaultValu
|
||
e="dashboard"
|
||
className="space-y-4">
|
||
[2m280[0m |
|
||
[35;1m|[0m
|
||
<TabsList>
|
||
[2m281[0m |
|
||
[35;1m|[0m
|
||
|
||
<TabsTrigger value="da
|
||
shboard">Dashboard</Ta
|
||
bsTrigger>
|
||
[2m282[0m |
|
||
[35;1m|[0m
|
||
|
||
<TabsTrigger value="pl
|
||
ans">Plans</TabsTrigge
|
||
r>
|
||
[2m283[0m |
|
||
[35;1m|[0m
|
||
|
||
<TabsTrigger value="st
|
||
ripe">Stripe</TabsTrig
|
||
ger>
|
||
[2m284[0m |
|
||
[35;1m|[0m
|
||
|
||
<TabsTrigger value="sy
|
||
stem">System</TabsTrig
|
||
ger>
|
||
[2m285[0m |
|
||
[35;1m|[0m
|
||
</TabsList>
|
||
[2m286[0m |
|
||
[35;1m|[0m
|
||
[2m287[0m |
|
||
[35;1m|[0m
|
||
<TabsContent
|
||
value="dashboard"
|
||
className="space-y-4">
|
||
[2m288[0m |
|
||
[35;1m|[0m
|
||
{/*
|
||
Stats Overview */}
|
||
[2m289[0m |
|
||
[35;1m|[0m
|
||
{stats
|
||
&& (
|
||
[2m290[0m |
|
||
[35;1m|[0m
|
||
<div
|
||
className="grid gap-4
|
||
md:grid-cols-2
|
||
lg:grid-cols-4">
|
||
[2m291[0m |
|
||
[35;1m|[0m
|
||
|
||
<Card>
|
||
[2m292[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardHeader
|
||
className="flex
|
||
flex-row items-center
|
||
justify-between
|
||
space-y-0 pb-2">
|
||
[2m293[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardTitle
|
||
className="text-sm
|
||
font-medium">Total
|
||
Revenue</CardTitle>
|
||
[2m294[0m |
|
||
[35;1m|[0m
|
||
|
||
<span
|
||
className="text-xs tex
|
||
t-muted-foreground">$<
|
||
/span>
|
||
[2m295[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardHeader>
|
||
[2m296[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardContent>
|
||
[2m297[0m |
|
||
[35;1m|[0m
|
||
|
||
<div
|
||
className="text-2xl fo
|
||
nt-bold">${stats.month
|
||
lyRevenue?.toLocaleStr
|
||
ing() || '0'}</div>
|
||
[2m298[0m |
|
||
[35;1m|[0m
|
||
|
||
<p
|
||
className="text-xs tex
|
||
t-muted-foreground">{s
|
||
tats.revenueGrowth ? `
|
||
+${stats.revenueGrowth
|
||
}% from last month` :
|
||
'This month'}</p>
|
||
[2m299[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardContent>
|
||
[2m300[0m |
|
||
[35;1m|[0m
|
||
|
||
</Card>
|
||
[2m301[0m |
|
||
[35;1m|[0m
|
||
|
||
<Card>
|
||
[2m302[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardHeader
|
||
className="flex
|
||
flex-row items-center
|
||
justify-between
|
||
space-y-0 pb-2">
|
||
[2m303[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardTitle
|
||
className="text-sm
|
||
font-medium">Active Su
|
||
bscriptions</CardTitle
|
||
>
|
||
[2m304[0m |
|
||
[35;1m|[0m
|
||
|
||
<CheckCircle
|
||
className="h-4 w-4 tex
|
||
t-muted-foreground" />
|
||
[2m305[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardHeader>
|
||
[2m306[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardContent>
|
||
[2m307[0m |
|
||
[35;1m|[0m
|
||
|
||
<div
|
||
className="text-2xl fo
|
||
nt-bold">{stats.active
|
||
Subscriptions ||
|
||
0}</div>
|
||
[2m308[0m |
|
||
[35;1m|[0m
|
||
|
||
<p
|
||
className="text-xs tex
|
||
t-muted-foreground">{s
|
||
tats.subscriptionGrowt
|
||
h ? `+${stats.subscrip
|
||
tionGrowth} this
|
||
week` : 'Current
|
||
active'}</p>
|
||
[2m309[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardContent>
|
||
[2m310[0m |
|
||
[35;1m|[0m
|
||
|
||
</Card>
|
||
[2m311[0m |
|
||
[35;1m|[0m
|
||
|
||
<Card>
|
||
[2m312[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardHeader
|
||
className="flex
|
||
flex-row items-center
|
||
justify-between
|
||
space-y-0 pb-2">
|
||
[2m313[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardTitle
|
||
className="text-sm fon
|
||
t-medium">Companies</C
|
||
ardTitle>
|
||
[2m314[0m |
|
||
[35;1m|[0m
|
||
|
||
<div
|
||
className="h-4 w-4 tex
|
||
t-muted-foreground" />
|
||
[2m315[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardHeader>
|
||
[2m316[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardContent>
|
||
[2m317[0m |
|
||
[35;1m|[0m
|
||
|
||
<div
|
||
className="text-2xl fo
|
||
nt-bold">{stats.totalC
|
||
ompanies || 0}</div>
|
||
[2m318[0m |
|
||
[35;1m|[0m
|
||
|
||
<p
|
||
className="text-xs tex
|
||
t-muted-foreground">Pl
|
||
atform total</p>
|
||
[2m319[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardContent>
|
||
[2m320[0m |
|
||
[35;1m|[0m
|
||
|
||
</Card>
|
||
[2m321[0m |
|
||
[35;1m|[0m
|
||
|
||
<Card>
|
||
[2m322[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardHeader
|
||
className="flex
|
||
flex-row items-center
|
||
justify-between
|
||
space-y-0 pb-2">
|
||
[2m323[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardTitle
|
||
className="text-sm
|
||
font-medium">New
|
||
(Month)</CardTitle>
|
||
[2m324[0m |
|
||
[35;1m|[0m
|
||
|
||
<Plus
|
||
className="h-4 w-4 tex
|
||
t-muted-foreground" />
|
||
[2m325[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardHeader>
|
||
[2m326[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardContent>
|
||
[2m327[0m |
|
||
[35;1m|[0m
|
||
|
||
<div
|
||
className="text-2xl fo
|
||
nt-bold">+{stats.newCo
|
||
mpaniesThisMonth ||
|
||
0}</div>
|
||
[2m328[0m |
|
||
[35;1m|[0m
|
||
|
||
<p
|
||
className="text-xs tex
|
||
t-muted-foreground">Si
|
||
nce start of month</p>
|
||
[2m329[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardContent>
|
||
[2m330[0m |
|
||
[35;1m|[0m
|
||
|
||
</Card>
|
||
[2m331[0m |
|
||
[35;1m|[0m
|
||
|
||
</div>
|
||
[2m332[0m |
|
||
[35;1m|[0m
|
||
)}
|
||
[2m333[0m |
|
||
[35;1m|[0m
|
||
[2m334[0m |
|
||
[35;1m|[0m
|
||
<div
|
||
className="grid gap-4
|
||
md:grid-cols-2
|
||
lg:grid-cols-7">
|
||
[2m335[0m |
|
||
[35;1m|[0m
|
||
|
||
<Card className="col-s
|
||
pan-4">
|
||
[2m336[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardHeader>
|
||
[2m337[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<CardTitle>Empresas
|
||
pendentes</CardTitle>
|
||
[2m338[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardDescription>Ap
|
||
rovação e
|
||
verificação de empre
|
||
sas.</CardDescription>
|
||
[2m339[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardHeader>
|
||
[2m340[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardContent>
|
||
[2m341[0m |
|
||
[35;1m|[0m
|
||
|
||
<Table>
|
||
[2m342[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableHeader>
|
||
[2m343[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableRow>
|
||
[2m344[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableH
|
||
ead>Empresa</TableHead
|
||
>
|
||
[2m345[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableH
|
||
ead>Status</TableHead>
|
||
[2m346[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<TableHead className="
|
||
text-right">Ações</T
|
||
ableHead>
|
||
[2m347[0m |
|
||
[35;1m|[0m
|
||
|
||
</TableRow>
|
||
[2m348[0m |
|
||
[35;1m|[0m
|
||
|
||
</TableHeader>
|
||
[2m349[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableBody>
|
||
[2m350[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
{companies.slice(0,
|
||
5).map((company) => (
|
||
[2m351[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<TableRow
|
||
key={company.id}>
|
||
[2m352[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<TableCell className="
|
||
font-medium">{company.
|
||
name}</TableCell>
|
||
[2m353[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<TableCell>
|
||
[2m354[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
{company.verified ?
|
||
<Badge className="bg-g
|
||
reen-500">Verificada</
|
||
Badge> : <Badge varian
|
||
t="secondary">Pendente
|
||
</Badge>}
|
||
[2m355[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
</TableCell>
|
||
[2m356[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<TableCell className="
|
||
text-right">
|
||
[2m357[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<Button size="sm"
|
||
variant="ghost"
|
||
onClick={() => handleA
|
||
pproveCompany(company.
|
||
id)}>
|
||
[2m358[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<CheckCircle
|
||
className="h-4 w-4" />
|
||
[2m359[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
</Button>
|
||
[2m360[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
</TableCell>
|
||
[2m361[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
</TableRow>
|
||
[2m362[0m |
|
||
[35;1m|[0m
|
||
|
||
))}
|
||
[2m363[0m |
|
||
[35;1m|[0m
|
||
|
||
</TableBody>
|
||
[2m364[0m |
|
||
[35;1m|[0m
|
||
|
||
</Table>
|
||
[2m365[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardContent>
|
||
[2m366[0m |
|
||
[35;1m|[0m
|
||
|
||
</Card>
|
||
[2m367[0m |
|
||
[35;1m|[0m
|
||
|
||
<Card className="col-s
|
||
pan-3">
|
||
[2m368[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardHeader>
|
||
[2m369[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<CardTitle>Auditoria
|
||
Recente</CardTitle>
|
||
[2m370[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardDescription>Ú
|
||
ltimos acessos.</CardD
|
||
escription>
|
||
[2m371[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardHeader>
|
||
[2m372[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardContent>
|
||
[2m373[0m |
|
||
[35;1m|[0m
|
||
|
||
<div
|
||
className="space-y-8">
|
||
[2m374[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
{audits.slice(0,
|
||
5).map((audit) => (
|
||
[2m375[0m |
|
||
[35;1m|[0m
|
||
|
||
<div
|
||
key={audit.id}
|
||
className="flex
|
||
items-center">
|
||
[2m376[0m |
|
||
[35;1m|[0m
|
||
|
||
<div
|
||
className="ml-4
|
||
space-y-1">
|
||
[2m377[0m |
|
||
[35;1m|[0m
|
||
|
||
<p
|
||
className="text-sm
|
||
font-medium leading-no
|
||
ne">{audit.identifier}
|
||
</p>
|
||
[2m378[0m |
|
||
[35;1m|[0m
|
||
|
||
<p
|
||
className="text-xs tex
|
||
t-muted-foreground">{a
|
||
uditDateFormatter.form
|
||
at(new Date(audit.crea
|
||
tedAt))}</p>
|
||
[2m379[0m |
|
||
[35;1m|[0m
|
||
|
||
</div>
|
||
[2m380[0m |
|
||
[35;1m|[0m
|
||
|
||
<div
|
||
className="ml-auto
|
||
font-medium text-xs te
|
||
xt-muted-foreground">{
|
||
audit.roles}</div>
|
||
[2m381[0m |
|
||
[35;1m|[0m
|
||
|
||
</div>
|
||
[2m382[0m |
|
||
[35;1m|[0m
|
||
|
||
))}
|
||
[2m383[0m |
|
||
[35;1m|[0m
|
||
|
||
</div>
|
||
[2m384[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardContent>
|
||
[2m385[0m |
|
||
[35;1m|[0m
|
||
|
||
</Card>
|
||
[2m386[0m |
|
||
[35;1m|[0m
|
||
</div>
|
||
[2m387[0m |
|
||
[35;1m|[0m
|
||
|
||
</TabsContent>
|
||
[2m388[0m |
|
||
[35;1m|[0m
|
||
[2m389[0m |
|
||
[35;1m|[0m
|
||
<TabsContent
|
||
value="plans"
|
||
className="space-y-4">
|
||
[2m390[0m |
|
||
[35;1m|[0m
|
||
<div
|
||
className="flex
|
||
justify-end">
|
||
[2m391[0m |
|
||
[35;1m|[0m
|
||
|
||
<Button onClick={()
|
||
=> { setEditingPlanId(
|
||
null); setPlanForm({
|
||
name: "",
|
||
description: "",
|
||
monthlyPrice: 0,
|
||
yearlyPrice: 0,
|
||
features: [] }); setIs
|
||
PlanDialogOpen(true)
|
||
}}>
|
||
[2m392[0m |
|
||
[35;1m|[0m
|
||
|
||
<Plus className="mr-2
|
||
h-4 w-4" /> Create
|
||
Plan
|
||
[2m393[0m |
|
||
[35;1m|[0m
|
||
|
||
</Button>
|
||
[2m394[0m |
|
||
[35;1m|[0m
|
||
</div>
|
||
[2m395[0m |
|
||
[35;1m|[0m
|
||
<Card>
|
||
[2m396[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardHeader>
|
||
[2m397[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardTitle>Plans
|
||
Management</CardTitle>
|
||
[2m398[0m |
|
||
[35;1m|[0m
|
||
<
|
||
CardDescription>Config
|
||
ure subscription plans
|
||
.</CardDescription>
|
||
[2m399[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardHeader>
|
||
[2m400[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardContent>
|
||
[2m401[0m |
|
||
[35;1m|[0m
|
||
|
||
<Table>
|
||
[2m402[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableHeader>
|
||
[2m403[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableRow>
|
||
[2m404[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableHead>
|
||
Name</TableHead>
|
||
[2m405[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableHead>
|
||
Monthly</TableHead>
|
||
[2m406[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableHead>
|
||
Yearly</TableHead>
|
||
[2m407[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableHead
|
||
className="text-right"
|
||
>Actions</TableHead>
|
||
[2m408[0m |
|
||
[35;1m|[0m
|
||
|
||
</TableRow>
|
||
[2m409[0m |
|
||
[35;1m|[0m
|
||
|
||
</TableHeader>
|
||
[2m410[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableBody>
|
||
[2m411[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
{plans.map((plan) => (
|
||
[2m412[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableRow
|
||
key={plan.id}>
|
||
[2m413[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<TableCell className="
|
||
font-medium">{plan.nam
|
||
e}</TableCell>
|
||
[2m414[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableC
|
||
ell>${plan.monthlyPric
|
||
e}</TableCell>
|
||
[2m415[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableC
|
||
ell>${plan.yearlyPrice
|
||
}</TableCell>
|
||
[2m416[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<TableCell
|
||
className="text-right
|
||
space-x-2">
|
||
[2m417[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<Button size="sm"
|
||
variant="outline"
|
||
onClick={() => { setEd
|
||
itingPlanId(plan.id);
|
||
setPlanForm({ ...plan
|
||
}); setIsPlanDialogOpe
|
||
n(true)
|
||
}}>Edit</Button>
|
||
[2m418[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<Button size="sm"
|
||
variant="destructive"
|
||
onClick={() => handleD
|
||
eletePlan(plan.id)}>De
|
||
lete</Button>
|
||
[2m419[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
</TableCell>
|
||
[2m420[0m |
|
||
[35;1m|[0m
|
||
|
||
</TableRow>
|
||
[2m421[0m |
|
||
[35;1m|[0m
|
||
|
||
))}
|
||
[2m422[0m |
|
||
[35;1m|[0m
|
||
|
||
</TableBody>
|
||
[2m423[0m |
|
||
[35;1m|[0m
|
||
|
||
</Table>
|
||
[2m424[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardContent>
|
||
[2m425[0m |
|
||
[35;1m|[0m
|
||
</Card>
|
||
[2m426[0m |
|
||
[35;1m|[0m
|
||
[2m427[0m |
|
||
[35;1m|[0m
|
||
<Dialog o
|
||
pen={isPlanDialogOpen}
|
||
onOpenChange={setIsPl
|
||
anDialogOpen}>
|
||
[2m428[0m |
|
||
[35;1m|[0m
|
||
|
||
<DialogContent>
|
||
[2m429[0m |
|
||
[35;1m|[0m
|
||
|
||
<DialogHeader>
|
||
[2m430[0m |
|
||
[35;1m|[0m
|
||
|
||
<DialogTitle>{editi
|
||
ngPlanId ? 'Edit
|
||
Plan' : 'Create
|
||
Plan'}</DialogTitle>
|
||
[2m431[0m |
|
||
[35;1m|[0m
|
||
|
||
</DialogHeader>
|
||
[2m432[0m |
|
||
[35;1m|[0m
|
||
|
||
<div className="grid
|
||
gap-4 py-4">
|
||
[2m433[0m |
|
||
[35;1m|[0m
|
||
|
||
<div
|
||
className="grid
|
||
gap-2">
|
||
[2m434[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<Label>Name</Label>
|
||
[2m435[0m |
|
||
[35;1m|[0m
|
||
|
||
<Input
|
||
value={planForm.name}
|
||
onChange={(e) =>
|
||
setPlanForm({
|
||
...planForm, name:
|
||
e.target.value })} />
|
||
[2m436[0m |
|
||
[35;1m|[0m
|
||
|
||
</div>
|
||
[2m437[0m |
|
||
[35;1m|[0m
|
||
|
||
<div
|
||
className="grid
|
||
gap-2">
|
||
[2m438[0m |
|
||
[35;1m|[0m
|
||
|
||
<Label>Descript
|
||
ion</Label>
|
||
[2m439[0m |
|
||
[35;1m|[0m
|
||
|
||
<Input value={p
|
||
lanForm.description}
|
||
onChange={(e) =>
|
||
setPlanForm({
|
||
...planForm,
|
||
description:
|
||
e.target.value })} />
|
||
[2m440[0m |
|
||
[35;1m|[0m
|
||
|
||
</div>
|
||
[2m441[0m |
|
||
[35;1m|[0m
|
||
|
||
<div
|
||
className="grid
|
||
grid-cols-2 gap-4">
|
||
[2m442[0m |
|
||
[35;1m|[0m
|
||
|
||
<div
|
||
className="grid
|
||
gap-2">
|
||
[2m443[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<Label>Monthly
|
||
Price</Label>
|
||
[2m444[0m |
|
||
[35;1m|[0m
|
||
|
||
<Input
|
||
type="number" value={p
|
||
lanForm.monthlyPrice}
|
||
onChange={(e) =>
|
||
setPlanForm({
|
||
...planForm,
|
||
monthlyPrice:
|
||
e.target.value })} />
|
||
[2m445[0m |
|
||
[35;1m|[0m
|
||
|
||
</div>
|
||
[2m446[0m |
|
||
[35;1m|[0m
|
||
|
||
<div
|
||
className="grid
|
||
gap-2">
|
||
[2m447[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<Label>Yearly
|
||
Price</Label>
|
||
[2m448[0m |
|
||
[35;1m|[0m
|
||
|
||
<Input
|
||
type="number" value={p
|
||
lanForm.yearlyPrice}
|
||
onChange={(e) =>
|
||
setPlanForm({
|
||
...planForm,
|
||
yearlyPrice:
|
||
e.target.value })} />
|
||
[2m449[0m |
|
||
[35;1m|[0m
|
||
|
||
</div>
|
||
[2m450[0m |
|
||
[35;1m|[0m
|
||
|
||
</div>
|
||
[2m451[0m |
|
||
[35;1m|[0m
|
||
|
||
<div
|
||
className="grid
|
||
gap-2">
|
||
[2m452[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<Label>Features
|
||
(comma
|
||
separated)</Label>
|
||
[2m453[0m |
|
||
[35;1m|[0m
|
||
|
||
<Textarea value
|
||
={Array.isArray(planFo
|
||
rm.features) ? planFor
|
||
m.features.join(', ')
|
||
: planForm.features}
|
||
onChange={(e) =>
|
||
setPlanForm({
|
||
...planForm,
|
||
features:
|
||
e.target.value })} />
|
||
[2m454[0m |
|
||
[35;1m|[0m
|
||
|
||
</div>
|
||
[2m455[0m |
|
||
[35;1m|[0m
|
||
|
||
</div>
|
||
[2m456[0m |
|
||
[35;1m|[0m
|
||
|
||
<DialogFooter>
|
||
[2m457[0m |
|
||
[35;1m|[0m
|
||
|
||
<Button
|
||
variant="outline"
|
||
onClick={() => setIsPl
|
||
anDialogOpen(false)}>C
|
||
ancel</Button>
|
||
[2m458[0m |
|
||
[35;1m|[0m
|
||
|
||
<Button onClick={ha
|
||
ndleSavePlan}>Save</Bu
|
||
tton>
|
||
[2m459[0m |
|
||
[35;1m|[0m
|
||
|
||
</DialogFooter>
|
||
[2m460[0m |
|
||
[35;1m|[0m
|
||
|
||
</DialogContent>
|
||
[2m461[0m |
|
||
[35;1m|[0m
|
||
</Dialog>
|
||
[2m462[0m |
|
||
[35;1m|[0m
|
||
|
||
</TabsContent>
|
||
[2m463[0m |
|
||
[35;1m|[0m
|
||
[2m464[0m |
|
||
[35;1m|[0m
|
||
<TabsContent
|
||
value="stripe"
|
||
className="space-y-4">
|
||
[2m465[0m |
|
||
[35;1m|[0m
|
||
<Card>
|
||
[2m466[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardHeader>
|
||
[2m467[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardTitle>Stripe Inte
|
||
gration</CardTitle>
|
||
[2m468[0m |
|
||
[35;1m|[0m
|
||
<
|
||
CardDescription>Manage
|
||
subscriptions and
|
||
payments directly in
|
||
Stripe Dashboard.</Car
|
||
dDescription>
|
||
[2m469[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardHeader>
|
||
[2m470[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardContent
|
||
className="space-y-4">
|
||
[2m471[0m |
|
||
[35;1m|[0m
|
||
|
||
<div className="p-4
|
||
border rounded
|
||
bg-muted/20">
|
||
[2m472[0m |
|
||
[35;1m|[0m
|
||
|
||
<p
|
||
className="text-sm">
|
||
[2m473[0m |
|
||
[35;1m|[0m
|
||
|
||
For security
|
||
and advanced
|
||
management (refunds,
|
||
disputes, tax
|
||
settings), please use
|
||
the official Stripe
|
||
Dashboard.
|
||
[2m474[0m |
|
||
[35;1m|[0m
|
||
|
||
</p>
|
||
[2m475[0m |
|
||
[35;1m|[0m
|
||
|
||
<div
|
||
className="mt-4">
|
||
[2m476[0m |
|
||
[35;1m|[0m
|
||
|
||
<a href="https:
|
||
//dashboard.stripe.com
|
||
" target="_blank"
|
||
rel="noreferrer">
|
||
[2m477[0m |
|
||
[35;1m|[0m
|
||
|
||
<Button
|
||
variant="outline">
|
||
[2m478[0m |
|
||
[35;1m|[0m
|
||
|
||
Open
|
||
Stripe Dashboard
|
||
<ExternalLink
|
||
className="ml-2 h-4
|
||
w-4" />
|
||
[2m479[0m |
|
||
[35;1m|[0m
|
||
|
||
</Button>
|
||
[2m480[0m |
|
||
[35;1m|[0m
|
||
|
||
</a>
|
||
[2m481[0m |
|
||
[35;1m|[0m
|
||
|
||
</div>
|
||
[2m482[0m |
|
||
[35;1m|[0m
|
||
|
||
</div>
|
||
[2m483[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardContent>
|
||
[2m484[0m |
|
||
[35;1m|[0m
|
||
</Card>
|
||
[2m485[0m |
|
||
[35;1m|[0m
|
||
|
||
</TabsContent>
|
||
[2m486[0m |
|
||
[35;1m|[0m
|
||
[2m487[0m |
|
||
[35;1m|[0m
|
||
<TabsContent
|
||
value="system"
|
||
className="space-y-4">
|
||
[2m488[0m |
|
||
[35;1m|[0m
|
||
<Card>
|
||
[2m489[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardHeader>
|
||
[2m490[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardTitle>System &
|
||
Caching</CardTitle>
|
||
[2m491[0m |
|
||
[35;1m|[0m
|
||
<
|
||
CardDescription>Mainte
|
||
nance tasks.</CardDesc
|
||
ription>
|
||
[2m492[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardHeader>
|
||
[2m493[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardContent>
|
||
[2m494[0m |
|
||
[35;1m|[0m
|
||
|
||
<div className="flex
|
||
items-center
|
||
justify-between p-4
|
||
border rounded">
|
||
[2m495[0m |
|
||
[35;1m|[0m
|
||
|
||
<div>
|
||
[2m496[0m |
|
||
[35;1m|[0m
|
||
|
||
<p className="f
|
||
ont-medium">Cloudflare
|
||
Cache</p>
|
||
[2m497[0m |
|
||
[35;1m|[0m
|
||
|
||
<p
|
||
className="text-sm tex
|
||
t-muted-foreground">Pu
|
||
rge all cached files
|
||
from the edge.</p>
|
||
[2m498[0m |
|
||
[35;1m|[0m
|
||
|
||
</div>
|
||
[2m499[0m |
|
||
[35;1m|[0m
|
||
|
||
<Button
|
||
variant="outline" onCl
|
||
ick={handlePurgeCache}
|
||
>Purge Cache</Button>
|
||
[2m500[0m |
|
||
[35;1m|[0m
|
||
|
||
</div>
|
||
[2m501[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardContent>
|
||
[2m502[0m |
|
||
[35;1m|[0m
|
||
</Card>
|
||
[2m503[0m |
|
||
[35;1m|[0m
|
||
[2m504[0m |
|
||
[35;1m|[0m
|
||
<Card>
|
||
[2m505[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardHeader>
|
||
[2m506[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardTitle>Tags
|
||
Management</CardTitle>
|
||
[2m507[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardHeader>
|
||
[2m508[0m |
|
||
[35;1m|[0m
|
||
|
||
<CardContent>
|
||
[2m509[0m |
|
||
[35;1m|[0m
|
||
|
||
{/* Reusing existing
|
||
Tags Table logic here
|
||
if desired, or keep
|
||
it in a sub-section
|
||
*/}
|
||
[2m510[0m |
|
||
[35;1m|[0m
|
||
|
||
<div className="flex
|
||
flex-col md:flex-row
|
||
gap-4 mb-4">
|
||
[2m511[0m |
|
||
[35;1m|[0m
|
||
|
||
<Input
|
||
placeholder="New Tag"
|
||
value={tagForm.name}
|
||
onChange={(e) =>
|
||
setTagForm({
|
||
...tagForm, name:
|
||
e.target.value })} />
|
||
[2m512[0m |
|
||
[35;1m|[0m
|
||
|
||
<Select value={tagF
|
||
orm.category}
|
||
onValueChange={(val:
|
||
any) => setTagForm({
|
||
...tagForm, category:
|
||
val })}>
|
||
[2m513[0m |
|
||
[35;1m|[0m
|
||
|
||
<SelectTrigger
|
||
className="w-40"><Sele
|
||
ctValue placeholder="C
|
||
ategory"
|
||
/></SelectTrigger>
|
||
[2m514[0m |
|
||
[35;1m|[0m
|
||
|
||
<SelectContent>
|
||
[2m515[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<SelectItem value="are
|
||
a">Area</SelectItem>
|
||
[2m516[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<SelectItem value="lev
|
||
el">Level</SelectItem>
|
||
[2m517[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<SelectItem value="sta
|
||
ck">Stack</SelectItem>
|
||
[2m518[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
</SelectContent>
|
||
[2m519[0m |
|
||
[35;1m|[0m
|
||
|
||
</Select>
|
||
[2m520[0m |
|
||
[35;1m|[0m
|
||
|
||
<Button onClick={ha
|
||
ndleCreateTag} disable
|
||
d={creatingTag}><Plus
|
||
className="mr-2 h-4
|
||
w-4" /> Add</Button>
|
||
[2m521[0m |
|
||
[35;1m|[0m
|
||
|
||
</div>
|
||
[2m522[0m |
|
||
[35;1m|[0m
|
||
|
||
<Table>
|
||
[2m523[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableHeader>
|
||
[2m524[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableRow>
|
||
[2m525[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableHead>
|
||
Tag</TableHead>
|
||
[2m526[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableHead>
|
||
Category</TableHead>
|
||
[2m527[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableHead>
|
||
Status</TableHead>
|
||
[2m528[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableHead
|
||
className="text-right"
|
||
>Action</TableHead>
|
||
[2m529[0m |
|
||
[35;1m|[0m
|
||
|
||
</TableRow>
|
||
[2m530[0m |
|
||
[35;1m|[0m
|
||
|
||
</TableHeader>
|
||
[2m531[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableBody>
|
||
[2m532[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
{tags.map((tag) => (
|
||
[2m533[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableRow
|
||
key={tag.id}>
|
||
[2m534[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableC
|
||
ell>{tag.name}</TableC
|
||
ell>
|
||
[2m535[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableC
|
||
ell>{tag.category}</Ta
|
||
bleCell>
|
||
[2m536[0m |
|
||
[35;1m|[0m
|
||
|
||
<TableC
|
||
ell>{tag.active ?
|
||
<Badge className="bg-g
|
||
reen-500">Active</Badg
|
||
e> : <Badge variant="o
|
||
utline">Inactive</Badg
|
||
e>}</TableCell>
|
||
[2m537[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<TableCell className="
|
||
text-right">
|
||
[2m538[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
<Button size="sm"
|
||
variant="ghost"
|
||
onClick={() => handleT
|
||
oggleTag(tag)}>Toggle<
|
||
/Button>
|
||
[2m539[0m |
|
||
[35;1m|[0m
|
||
|
||
|
||
</TableCell>
|
||
[2m540[0m |
|
||
[35;1m|[0m
|
||
|
||
</TableRow>
|
||
[2m541[0m |
|
||
[35;1m|[0m
|
||
|
||
))}
|
||
[2m542[0m |
|
||
[35;1m|[0m
|
||
|
||
</TableBody>
|
||
[2m543[0m |
|
||
[35;1m|[0m
|
||
|
||
</Table>
|
||
[2m544[0m |
|
||
[35;1m|[0m
|
||
|
||
</CardContent>
|
||
[2m545[0m |
|
||
[35;1m|[0m
|
||
</Card>
|
||
[2m546[0m |
|
||
[35;1m|[0m
|
||
|
||
</TabsContent>
|
||
[2m547[0m |
|
||
[35;1m|[0m
|
||
</Tabs>
|
||
[2m548[0m |
|
||
[35;1m|[0m
|
||
<ConfirmModal
|
||
[2m549[0m |
|
||
[35;1m|[0m
|
||
isOpen={!!del
|
||
etePlanId}
|
||
[2m550[0m |
|
||
[35;1m|[0m
|
||
onClose={()
|
||
=>
|
||
setDeletePlanId(null)}
|
||
[2m551[0m |
|
||
[35;1m|[0m
|
||
onConfirm={co
|
||
nfirmDeletePlan}
|
||
[2m552[0m |
|
||
[35;1m|[0m
|
||
title="Are
|
||
you sure you want to
|
||
delete this plan?"
|
||
[2m553[0m |
|
||
[35;1m|[0m
|
||
|
||
description="This
|
||
action cannot be
|
||
undone."
|
||
[2m554[0m |
|
||
[35;1m|[0m
|
||
/>
|
||
[2m555[0m |
|
||
[35;1m|[0m
|
||
<ConfirmModal
|
||
[2m556[0m |
|
||
[35;1m|[0m
|
||
isOpen={!!del
|
||
etePlanId}
|
||
[2m557[0m |
|
||
[35;1m|[0m
|
||
onClose={()
|
||
=>
|
||
setDeletePlanId(null)}
|
||
[2m558[0m |
|
||
[35;1m|[0m
|
||
onConfirm={co
|
||
nfirmDeletePlan}
|
||
[2m559[0m |
|
||
[35;1m|[0m
|
||
title="Are
|
||
you sure you want to
|
||
delete this plan?"
|
||
[2m560[0m |
|
||
[35;1m|[0m
|
||
|
||
description="This
|
||
action cannot be
|
||
undone."
|
||
[2m561[0m |
|
||
[35;1m|[0m
|
||
/>
|
||
[2m562[0m |
|
||
[35;1m|[0m
|
||
</div>
|
||
[2m563[0m | [35;1m
|
||
`[0m[35;1m-[0m[35;
|
||
1m>[0m )
|
||
[2m564[0m | }
|
||
`----
|
||
[31mx[0m
|
||
Expression expected
|
||
,-[[36;1;4mC:\de
|
||
v\gohorsejobs\frontend
|
||
\src\app\dashboard\bac
|
||
koffice\page.tsx[0m:5
|
||
64:1]
|
||
[2m561[0m |
|
||
/>
|
||
[2m562[0m |
|
||
</div>
|
||
[2m563[0m | )
|
||
[2m564[0m | }
|
||
: [35;1m^[0m
|
||
`----
|
||
|
||
Caused by:
|
||
Syntax Error
|
||
|
||
Import trace for
|
||
requested module:
|
||
./src/app/dashboard/ba
|
||
ckoffice/page.tsx
|
||
|
||
|
||
> Build failed
|
||
because of webpack
|
||
errors
|