diff --git a/apps/agent/go.mod b/apps/agent/go.mod
index dddfa1c91f..0e55e76bfe 100644
--- a/apps/agent/go.mod
+++ b/apps/agent/go.mod
@@ -107,7 +107,6 @@ require (
github.com/fvbommel/sortorder v1.1.0 // indirect
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
github.com/gammazero/deque v0.2.1 // indirect
- github.com/getkin/kin-openapi v0.124.0 // indirect
github.com/go-faster/city v1.0.1 // indirect
github.com/go-faster/errors v0.7.1 // indirect
github.com/go-logr/logr v1.4.2 // indirect
@@ -152,7 +151,6 @@ require (
github.com/in-toto/in-toto-golang v0.9.0 // indirect
github.com/inconshreveable/mousetrap v1.1.0 // indirect
github.com/influxdata/tdigest v0.0.1 // indirect
- github.com/invopop/yaml v0.2.0 // indirect
github.com/jonboulle/clockwork v0.4.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
@@ -184,16 +182,13 @@ require (
github.com/moby/term v0.5.0 // indirect
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
github.com/modern-go/reflect2 v1.0.2 // indirect
- github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
github.com/morikuni/aec v1.0.0 // indirect
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
- github.com/oapi-codegen/oapi-codegen/v2 v2.3.0 // indirect
github.com/opencontainers/go-digest v1.0.0 // indirect
github.com/opencontainers/image-spec v1.1.0 // indirect
github.com/paulmach/orb v0.11.1 // indirect
github.com/pelletier/go-toml v1.9.5 // indirect
- github.com/perimeterx/marshmallow v1.1.5 // indirect
github.com/pierrec/lz4/v4 v4.1.21 // indirect
github.com/pkg/errors v0.9.1 // indirect
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect
diff --git a/apps/dashboard/app/(app)/[...not-found]/page.tsx b/apps/dashboard/app/(app)/[...not-found]/page.tsx
index d9f4dce6bd..9d6134567d 100644
--- a/apps/dashboard/app/(app)/[...not-found]/page.tsx
+++ b/apps/dashboard/app/(app)/[...not-found]/page.tsx
@@ -1,5 +1,5 @@
import { EmptyPlaceholder } from "@/components/dashboard/empty-placeholder";
-import { Button } from "@/components/ui/button";
+import { Button } from "@unkey/ui";
import Link from "next/link";
export default function NotFound() {
return (
@@ -10,9 +10,7 @@ export default function NotFound() {
-
+
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/chart.tsx b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/chart.tsx
index a3385368ed..faacf07bee 100644
--- a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/chart.tsx
+++ b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/chart.tsx
@@ -11,7 +11,6 @@ import ReactFlow, {
Controls,
} from "reactflow";
-import { Button } from "@/components/ui/button";
import { Card, CardHeader, CardTitle } from "@/components/ui/card";
import {
DropdownMenu,
@@ -21,6 +20,7 @@ import {
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
import { cn } from "@/lib/utils";
+import { Button } from "@unkey/ui";
import dagre from "dagre";
import { MoreVertical, Settings2 } from "lucide-react";
import Link from "next/link";
@@ -206,8 +206,8 @@ const KeyNode: React.FC<
-
@@ -246,8 +246,8 @@ const RoleNode: React.FC<
-
-
+
+
@@ -283,7 +283,7 @@ const PermissionNode: React.FC
-
+
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/page.tsx b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/page.tsx
index 1bbdd5ad66..46595ddd37 100644
--- a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/page.tsx
+++ b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/page.tsx
@@ -8,7 +8,6 @@ import { CreateNewRole } from "@/app/(app)/authorization/roles/create-new-role";
import { StackedColumnChart } from "@/components/dashboard/charts";
import { EmptyPlaceholder } from "@/components/dashboard/empty-placeholder";
import { Badge } from "@/components/ui/badge";
-import { Button, buttonVariants } from "@/components/ui/button";
import { Card, CardContent, CardHeader } from "@/components/ui/card";
import { Separator } from "@/components/ui/separator";
import { getTenantId } from "@/lib/auth";
@@ -16,6 +15,7 @@ import { clickhouse } from "@/lib/clickhouse";
import { and, db, eq, isNull, schema } from "@/lib/db";
import { formatNumber } from "@/lib/fmt";
import { cn } from "@/lib/utils";
+import { Button, buttonVariants } from "@unkey/ui";
import { BarChart, Minus } from "lucide-react";
import ms from "ms";
import { notFound } from "next/navigation";
@@ -241,9 +241,9 @@ export default async function APIKeyDetailPage(props: {
-
+
Key settings
@@ -339,12 +339,10 @@ export default async function APIKeyDetailPage(props: {
Create New Role}
+ trigger={Create New Role}
permissions={key.workspace.permissions}
/>
- Create New Permission}
- />
+ Create New Permission} />
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/delete-key.tsx b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/delete-key.tsx
index 531ce15e4f..31bb5f492f 100644
--- a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/delete-key.tsx
+++ b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/delete-key.tsx
@@ -1,8 +1,8 @@
"use client";
import { revalidate } from "@/app/actions";
-import { Button } from "@/components/ui/button";
import { Card, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card";
import { toast } from "@/components/ui/toaster";
+import { Button } from "@unkey/ui";
import type React from "react";
import { useState } from "react";
@@ -51,7 +51,7 @@ export const DeleteKey: React.FC = ({ apiKey, keyAuthId }) => {
- setOpen(!open)} variant="alert">
+ setOpen(!open)} variant="destructive">
Delete Key
@@ -73,12 +73,12 @@ export const DeleteKey: React.FC = ({ apiKey, keyAuthId }) => {
- setOpen(!open)} variant="secondary">
+ setOpen(!open)}>
Cancel
deleteKey.mutate({ keyIds: [apiKey.id] })}
>
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-enabled.tsx b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-enabled.tsx
index 39a8f55211..186e5ee422 100644
--- a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-enabled.tsx
+++ b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-enabled.tsx
@@ -1,6 +1,5 @@
"use client";
import { Loading } from "@/components/dashboard/loading";
-import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
@@ -14,6 +13,7 @@ import { Switch } from "@/components/ui/switch";
import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import { zodResolver } from "@hookform/resolvers/zod";
+import { Button } from "@unkey/ui";
import { useRouter } from "next/navigation";
import { useForm } from "react-hook-form";
import { z } from "zod";
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-expiration.tsx b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-expiration.tsx
index 23bb38c8ff..10191752cd 100644
--- a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-expiration.tsx
+++ b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-expiration.tsx
@@ -1,6 +1,5 @@
"use client";
import { Loading } from "@/components/dashboard/loading";
-import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
@@ -24,6 +23,7 @@ import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import { cn } from "@/lib/utils";
import { zodResolver } from "@hookform/resolvers/zod";
+import { Button } from "@unkey/ui";
import { format } from "date-fns";
import { useRouter } from "next/navigation";
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-metadata.tsx b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-metadata.tsx
index 37d06d77f0..408bdc6e33 100644
--- a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-metadata.tsx
+++ b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-metadata.tsx
@@ -1,6 +1,5 @@
"use client";
import { Loading } from "@/components/dashboard/loading";
-import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
@@ -15,6 +14,7 @@ import { Textarea } from "@/components/ui/textarea";
import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import { zodResolver } from "@hookform/resolvers/zod";
+import { Button } from "@unkey/ui";
import { useRouter } from "next/navigation";
import { useForm } from "react-hook-form";
import { z } from "zod";
@@ -97,7 +97,6 @@ export const UpdateKeyMetadata: React.FC = ({ apiKey }) => {
{
try {
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-name.tsx b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-name.tsx
index a546cd047b..5272b363c6 100644
--- a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-name.tsx
+++ b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-name.tsx
@@ -1,6 +1,5 @@
"use client";
import { Loading } from "@/components/dashboard/loading";
-import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
@@ -16,6 +15,7 @@ import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import { cn } from "@/lib/utils";
import { zodResolver } from "@hookform/resolvers/zod";
+import { Button } from "@unkey/ui";
import { useRouter } from "next/navigation";
import { useForm } from "react-hook-form";
import { z } from "zod";
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-owner-id.tsx b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-owner-id.tsx
index d635c63673..3677d96d7a 100644
--- a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-owner-id.tsx
+++ b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-owner-id.tsx
@@ -1,6 +1,5 @@
"use client";
import { Loading } from "@/components/dashboard/loading";
-import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
@@ -16,6 +15,7 @@ import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import { cn } from "@/lib/utils";
import { zodResolver } from "@hookform/resolvers/zod";
+import { Button } from "@unkey/ui";
import { useRouter } from "next/navigation";
import { useForm } from "react-hook-form";
import { z } from "zod";
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-ratelimit.tsx b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-ratelimit.tsx
index bb4aae4d2f..8a4abab7ad 100644
--- a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-ratelimit.tsx
+++ b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-ratelimit.tsx
@@ -1,6 +1,5 @@
"use client";
import { Loading } from "@/components/dashboard/loading";
-import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
@@ -25,6 +24,7 @@ import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import { cn } from "@/lib/utils";
import { zodResolver } from "@hookform/resolvers/zod";
+import { Button } from "@unkey/ui";
import { useRouter } from "next/navigation";
import { useForm } from "react-hook-form";
import { z } from "zod";
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-remaining.tsx b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-remaining.tsx
index beee505036..57b235ce45 100644
--- a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-remaining.tsx
+++ b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/[keyId]/settings/update-key-remaining.tsx
@@ -1,6 +1,5 @@
"use client";
import { Loading } from "@/components/dashboard/loading";
-import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
@@ -32,6 +31,7 @@ import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import { cn } from "@/lib/utils";
import { zodResolver } from "@hookform/resolvers/zod";
+import { Button } from "@unkey/ui";
import { useRouter } from "next/navigation";
import { useForm } from "react-hook-form";
import { z } from "zod";
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/keys.tsx b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/keys.tsx
index 0f8d79214d..5e15b3d73e 100644
--- a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/keys.tsx
+++ b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/keys.tsx
@@ -2,8 +2,8 @@ import { CreateKeyButton } from "@/components/dashboard/create-key-button";
import { EmptyPlaceholder } from "@/components/dashboard/empty-placeholder";
import BackButton from "@/components/ui/back-button";
import { Badge } from "@/components/ui/badge";
-import { Button } from "@/components/ui/button";
import { db } from "@/lib/db";
+import { Button } from "@unkey/ui";
import { ChevronRight, Scan, User, VenetianMask } from "lucide-react";
import Link from "next/link";
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/new/client.tsx b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/new/client.tsx
index 6b4eb46b2c..ebcecf9150 100644
--- a/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/new/client.tsx
+++ b/apps/dashboard/app/(app)/apis/[apiId]/keys/[keyAuthId]/new/client.tsx
@@ -5,7 +5,6 @@ import { Loading } from "@/components/dashboard/loading";
import { VisibleButton } from "@/components/dashboard/visible-button";
import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
import { Badge } from "@/components/ui/badge";
-import { Button } from "@/components/ui/button";
import { Card, CardContent } from "@/components/ui/card";
import { Code } from "@/components/ui/code";
import {
@@ -25,6 +24,7 @@ import {
SelectTrigger,
SelectValue,
} from "@/components/ui/select";
+import { Button } from "@unkey/ui";
import { Separator } from "@/components/ui/separator";
import { Switch } from "@/components/ui/switch";
@@ -198,10 +198,10 @@ export const CreateKey = ({ apiId, keyAuthId, defaultBytes, defaultPrefix }: Pro
-
Back
+
Back
-
View key details
+
View key details
{
@@ -718,7 +718,6 @@ export const CreateKey = ({ apiId, keyAuthId, defaultBytes, defaultPrefix }: Pro
{
try {
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/settings/default-bytes.tsx b/apps/dashboard/app/(app)/apis/[apiId]/settings/default-bytes.tsx
index 92a7b7f77a..d5715a1a60 100644
--- a/apps/dashboard/app/(app)/apis/[apiId]/settings/default-bytes.tsx
+++ b/apps/dashboard/app/(app)/apis/[apiId]/settings/default-bytes.tsx
@@ -1,6 +1,5 @@
"use client";
import { Loading } from "@/components/dashboard/loading";
-import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
@@ -14,6 +13,7 @@ import { Input } from "@/components/ui/input";
import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import { zodResolver } from "@hookform/resolvers/zod";
+import { Button } from "@unkey/ui";
import { useRouter } from "next/navigation";
import { useForm } from "react-hook-form";
import { z } from "zod";
@@ -93,9 +93,7 @@ export const DefaultBytes: React.FC = ({ keyAuth }) => {
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/settings/default-prefix.tsx b/apps/dashboard/app/(app)/apis/[apiId]/settings/default-prefix.tsx
index 9fc31edd6f..89af88491a 100644
--- a/apps/dashboard/app/(app)/apis/[apiId]/settings/default-prefix.tsx
+++ b/apps/dashboard/app/(app)/apis/[apiId]/settings/default-prefix.tsx
@@ -1,6 +1,4 @@
"use client";
-import { Loading } from "@/components/dashboard/loading";
-import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
@@ -14,6 +12,7 @@ import { Input } from "@/components/ui/input";
import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import { zodResolver } from "@hookform/resolvers/zod";
+import { Button } from "@unkey/ui";
import { useRouter } from "next/navigation";
import { useForm } from "react-hook-form";
import { z } from "zod";
@@ -80,13 +79,12 @@ export const DefaultPrefix: React.FC = ({ keyAuth }) => {
- {form.formState.isSubmitting ? : "Save"}
+ Save
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/settings/delete-api.tsx b/apps/dashboard/app/(app)/apis/[apiId]/settings/delete-api.tsx
index 1a210362c3..decee0cfe8 100644
--- a/apps/dashboard/app/(app)/apis/[apiId]/settings/delete-api.tsx
+++ b/apps/dashboard/app/(app)/apis/[apiId]/settings/delete-api.tsx
@@ -1,7 +1,5 @@
"use client";
-import { Loading } from "@/components/dashboard/loading";
import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
-import { Button } from "@/components/ui/button";
import { Card, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card";
import {
Dialog,
@@ -24,6 +22,7 @@ import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import { cn } from "@/lib/utils";
import { zodResolver } from "@hookform/resolvers/zod";
+import { Button } from "@unkey/ui";
import { useRouter } from "next/navigation";
import type React from "react";
import { useState } from "react";
@@ -107,7 +106,7 @@ export const DeleteApi: React.FC = ({ api, keys }) => {
type="button"
disabled={!!api.deleteProtection}
onClick={() => setOpen(!open)}
- variant="alert"
+ variant="destructive"
>
Delete API
@@ -173,20 +172,16 @@ export const DeleteApi: React.FC = ({ api, keys }) => {
/>
- setOpen(!open)}
- variant="secondary"
- >
+ setOpen(!open)}>
Cancel
- {deleteApi.isLoading ? : "Delete API"}
+ Delete API
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/settings/delete-protection.tsx b/apps/dashboard/app/(app)/apis/[apiId]/settings/delete-protection.tsx
index a7d3b8d7e6..58662392ec 100644
--- a/apps/dashboard/app/(app)/apis/[apiId]/settings/delete-protection.tsx
+++ b/apps/dashboard/app/(app)/apis/[apiId]/settings/delete-protection.tsx
@@ -1,5 +1,5 @@
"use client";
-import { Button } from "@/components/ui/button";
+import { Button } from "@unkey/ui";
import type React from "react";
import { useState } from "react";
@@ -92,7 +92,7 @@ export const DeleteProtection: React.FC = ({ api }) => {
- setOpen(!open)} variant="alert">
+ setOpen(!open)} variant="destructive">
Disable Delete Protection
@@ -135,13 +135,12 @@ export const DeleteProtection: React.FC = ({ api }) => {
form.reset();
setOpen(!open);
}}
- variant="secondary"
>
Cancel
{updateDeleteProtection.isLoading ? : "Disable"}
@@ -170,8 +169,9 @@ export const DeleteProtection: React.FC = ({ api }) => {
onClick={() => updateDeleteProtection.mutate({ apiId: api.id, enabled: true })}
variant="primary"
disabled={updateDeleteProtection.isLoading}
+ loading={updateDeleteProtection.isLoading}
>
- {updateDeleteProtection.isLoading ? : "Enable"}
+ Enable
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/settings/update-api-name.tsx b/apps/dashboard/app/(app)/apis/[apiId]/settings/update-api-name.tsx
index 1711664eea..19e3865635 100644
--- a/apps/dashboard/app/(app)/apis/[apiId]/settings/update-api-name.tsx
+++ b/apps/dashboard/app/(app)/apis/[apiId]/settings/update-api-name.tsx
@@ -1,6 +1,4 @@
"use client";
-import { Loading } from "@/components/dashboard/loading";
-import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
@@ -14,6 +12,7 @@ import { Input } from "@/components/ui/input";
import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import { zodResolver } from "@hookform/resolvers/zod";
+import { Button } from "@unkey/ui";
import { useRouter } from "next/navigation";
import { useForm } from "react-hook-form";
import { z } from "zod";
@@ -87,13 +86,12 @@ export const UpdateApiName: React.FC = ({ api }) => {
- {form.formState.isSubmitting ? : "Save"}
+ Save
diff --git a/apps/dashboard/app/(app)/apis/[apiId]/settings/update-ip-whitelist.tsx b/apps/dashboard/app/(app)/apis/[apiId]/settings/update-ip-whitelist.tsx
index df8224e196..4f429a4f16 100644
--- a/apps/dashboard/app/(app)/apis/[apiId]/settings/update-ip-whitelist.tsx
+++ b/apps/dashboard/app/(app)/apis/[apiId]/settings/update-ip-whitelist.tsx
@@ -1,7 +1,5 @@
"use client";
-import { Loading } from "@/components/dashboard/loading";
import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
-import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
@@ -17,6 +15,7 @@ import { trpc } from "@/lib/trpc/client";
import { cn } from "@/lib/utils";
import { zodResolver } from "@hookform/resolvers/zod";
import type { Workspace } from "@unkey/db";
+import { Button } from "@unkey/ui";
import Link from "next/link";
import { useRouter } from "next/navigation";
import { useForm } from "react-hook-form";
@@ -114,13 +113,12 @@ export const UpdateIpWhitelist: React.FC = ({ api, workspace }) => {
- {form.formState.isSubmitting ? : "Save"}
+ Save
diff --git a/apps/dashboard/app/(app)/audit/[bucket]/filter.tsx b/apps/dashboard/app/(app)/audit/[bucket]/filter.tsx
index 44444a2b99..f911f489b4 100644
--- a/apps/dashboard/app/(app)/audit/[bucket]/filter.tsx
+++ b/apps/dashboard/app/(app)/audit/[bucket]/filter.tsx
@@ -1,7 +1,6 @@
"use client";
import { ArrayInput } from "@/components/array-input";
import { Badge } from "@/components/ui/badge";
-import { Button } from "@/components/ui/button";
import {
Command,
CommandEmpty,
@@ -14,6 +13,7 @@ import {
import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
import { Separator } from "@/components/ui/separator";
import { cn } from "@/lib/utils";
+import { Button } from "@unkey/ui";
import { Check, ChevronDown } from "lucide-react";
import { parseAsArrayOf, parseAsString, useQueryState } from "nuqs";
import type React from "react";
@@ -36,7 +36,7 @@ export const Filter: React.FC = ({ options, title, param }) => {
return (
-
+
{title}
{selected.length > 0 && (
<>
diff --git a/apps/dashboard/app/(app)/audit/[bucket]/page.tsx b/apps/dashboard/app/(app)/audit/[bucket]/page.tsx
index e865a0c64b..9e851efc5c 100644
--- a/apps/dashboard/app/(app)/audit/[bucket]/page.tsx
+++ b/apps/dashboard/app/(app)/audit/[bucket]/page.tsx
@@ -1,7 +1,6 @@
import { EmptyPlaceholder } from "@/components/dashboard/empty-placeholder";
import { Loading } from "@/components/dashboard/loading";
import { PageHeader } from "@/components/dashboard/page-header";
-import { Button } from "@/components/ui/button";
import { Table, TableBody, TableHead, TableHeader, TableRow } from "@/components/ui/table";
import { getTenantId } from "@/lib/auth";
import { db } from "@/lib/db";
@@ -9,6 +8,7 @@ import { clerkClient } from "@clerk/nextjs";
import type { User } from "@clerk/nextjs/server";
import type { SelectAuditLog, SelectAuditLogTarget } from "@unkey/db/src/schema";
import { unkeyAuditLogEvents } from "@unkey/schema/src/auditlog";
+import { Button } from "@unkey/ui";
import { Box, X } from "lucide-react";
import Link from "next/link";
import { redirect } from "next/navigation";
@@ -152,11 +152,7 @@ export default async function AuditPage(props: Props) {
{selectedEvents.length > 0 || selectedUsers.length > 0 || selectedRootKeys.length > 0 ? (
-
+
Clear
@@ -236,7 +232,7 @@ const AuditLogTable: React.FC<{
No events matched these filters, try changing them.{" "}
- Reset Filters
+ Reset Filters
) : (
@@ -328,11 +324,7 @@ const AuditLogTable: React.FC<{
-
+
{hasMoreLogs ? "Load more" : "No more logs"}
diff --git a/apps/dashboard/app/(app)/authorization/permissions/[permissionId]/client.tsx b/apps/dashboard/app/(app)/authorization/permissions/[permissionId]/client.tsx
index c40b07a7ab..d46fa10052 100644
--- a/apps/dashboard/app/(app)/authorization/permissions/[permissionId]/client.tsx
+++ b/apps/dashboard/app/(app)/authorization/permissions/[permissionId]/client.tsx
@@ -2,9 +2,9 @@
import { revalidateTag } from "@/app/actions";
import { Loading } from "@/components/dashboard/loading";
-import { Button } from "@/components/ui/button";
import { Card, CardContent, CardFooter } from "@/components/ui/card";
import { tags } from "@/lib/cache";
+import { Button } from "@unkey/ui";
import {
Form,
diff --git a/apps/dashboard/app/(app)/authorization/permissions/[permissionId]/delete-permission.tsx b/apps/dashboard/app/(app)/authorization/permissions/[permissionId]/delete-permission.tsx
index 421309b107..1227dd061e 100644
--- a/apps/dashboard/app/(app)/authorization/permissions/[permissionId]/delete-permission.tsx
+++ b/apps/dashboard/app/(app)/authorization/permissions/[permissionId]/delete-permission.tsx
@@ -1,9 +1,7 @@
"use client";
import { revalidate } from "@/app/actions";
-import { Loading } from "@/components/dashboard/loading";
import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
-import { Button } from "@/components/ui/button";
import {
Dialog,
DialogContent,
@@ -25,6 +23,7 @@ import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import { zodResolver } from "@hookform/resolvers/zod";
import { DialogTrigger } from "@radix-ui/react-dialog";
+import { Button } from "@unkey/ui";
import { useRouter } from "next/navigation";
import { useState } from "react";
import { useForm } from "react-hook-form";
@@ -115,16 +114,16 @@ export const DeletePermission: React.FC = ({ trigger, permission }) => {
type="button"
disabled={deletePermission.isLoading}
onClick={() => setOpen(!open)}
- variant="secondary"
>
Cancel
- {deletePermission.isLoading ? : "Delete"}
+ Delete
diff --git a/apps/dashboard/app/(app)/authorization/permissions/[permissionId]/page.tsx b/apps/dashboard/app/(app)/authorization/permissions/[permissionId]/page.tsx
index c02b0dc434..374ef47b51 100644
--- a/apps/dashboard/app/(app)/authorization/permissions/[permissionId]/page.tsx
+++ b/apps/dashboard/app/(app)/authorization/permissions/[permissionId]/page.tsx
@@ -1,10 +1,10 @@
import { CopyButton } from "@/components/dashboard/copy-button";
import { PageHeader } from "@/components/dashboard/page-header";
import { Badge } from "@/components/ui/badge";
-import { Button } from "@/components/ui/button";
import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip";
import { getTenantId } from "@/lib/auth";
import { db } from "@/lib/db";
+import { Button } from "@unkey/ui";
import {
Activity,
CalendarPlus,
@@ -109,7 +109,7 @@ export default async function RolesPage(props: Props) {
,
Delete}
+ trigger={Delete}
permission={permission}
/>,
]}
diff --git a/apps/dashboard/app/(app)/authorization/permissions/create-new-permission.tsx b/apps/dashboard/app/(app)/authorization/permissions/create-new-permission.tsx
index 6d9bd30737..bb1fe8febd 100644
--- a/apps/dashboard/app/(app)/authorization/permissions/create-new-permission.tsx
+++ b/apps/dashboard/app/(app)/authorization/permissions/create-new-permission.tsx
@@ -2,7 +2,7 @@
import { Loading } from "@/components/dashboard/loading";
import { Badge } from "@/components/ui/badge";
-import { Button } from "@/components/ui/button";
+import { Button } from "@unkey/ui";
import {
Dialog,
diff --git a/apps/dashboard/app/(app)/authorization/permissions/page.tsx b/apps/dashboard/app/(app)/authorization/permissions/page.tsx
index 9865d67916..140b96b733 100644
--- a/apps/dashboard/app/(app)/authorization/permissions/page.tsx
+++ b/apps/dashboard/app/(app)/authorization/permissions/page.tsx
@@ -1,9 +1,9 @@
import { EmptyPlaceholder } from "@/components/dashboard/empty-placeholder";
import { Badge } from "@/components/ui/badge";
-import { Button } from "@/components/ui/button";
import { getTenantId } from "@/lib/auth";
import { asc, db } from "@/lib/db";
import { permissions } from "@unkey/db/src/schema";
+import { Button } from "@unkey/ui";
import { ChevronRight, Scan } from "lucide-react";
import Link from "next/link";
import { redirect } from "next/navigation";
diff --git a/apps/dashboard/app/(app)/authorization/roles/[roleId]/delete-role.tsx b/apps/dashboard/app/(app)/authorization/roles/[roleId]/delete-role.tsx
index 3d8255b197..8a7c7934ac 100644
--- a/apps/dashboard/app/(app)/authorization/roles/[roleId]/delete-role.tsx
+++ b/apps/dashboard/app/(app)/authorization/roles/[roleId]/delete-role.tsx
@@ -1,8 +1,6 @@
"use client";
-import { Loading } from "@/components/dashboard/loading";
import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
-import { Button } from "@/components/ui/button";
import {
Dialog,
DialogContent,
@@ -24,6 +22,7 @@ import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import { zodResolver } from "@hookform/resolvers/zod";
import { DialogTrigger } from "@radix-ui/react-dialog";
+import { Button } from "@unkey/ui";
import { useRouter } from "next/navigation";
import { useState } from "react";
import { useForm } from "react-hook-form";
@@ -112,20 +111,16 @@ export const DeleteRole: React.FC = ({ trigger, role }) => {
/>
- setOpen(!open)}
- variant="secondary"
- >
+ setOpen(!open)}>
Cancel
- {deleteRole.isLoading ? : "Delete Role"}
+ Delete Role
diff --git a/apps/dashboard/app/(app)/authorization/roles/[roleId]/page.tsx b/apps/dashboard/app/(app)/authorization/roles/[roleId]/page.tsx
index 383f70a3d5..222c4b8c71 100644
--- a/apps/dashboard/app/(app)/authorization/roles/[roleId]/page.tsx
+++ b/apps/dashboard/app/(app)/authorization/roles/[roleId]/page.tsx
@@ -1,6 +1,6 @@
-import { Button } from "@/components/ui/button";
import { getTenantId } from "@/lib/auth";
import { db } from "@/lib/db";
+import { Button } from "@unkey/ui";
import { notFound, redirect } from "next/navigation";
import { DeleteRole } from "./delete-role";
import { type NestedPermissions, Tree } from "./tree";
@@ -117,8 +117,8 @@ export default async function RolesPage(props: Props) {
{role.description}
- Update Role} />
- Delete Role} />
+ Update Role} />
+ Delete Role} />
diff --git a/apps/dashboard/app/(app)/authorization/roles/[roleId]/update-role.tsx b/apps/dashboard/app/(app)/authorization/roles/[roleId]/update-role.tsx
index d21db6a8e3..ca64b1b856 100644
--- a/apps/dashboard/app/(app)/authorization/roles/[roleId]/update-role.tsx
+++ b/apps/dashboard/app/(app)/authorization/roles/[roleId]/update-role.tsx
@@ -1,7 +1,6 @@
"use client";
import { revalidateTag } from "@/app/actions";
import { Loading } from "@/components/dashboard/loading";
-import { Button } from "@/components/ui/button";
import {
Dialog,
DialogContent,
@@ -27,6 +26,7 @@ import { trpc } from "@/lib/trpc/client";
import { zodResolver } from "@hookform/resolvers/zod";
import { DialogTrigger } from "@radix-ui/react-dialog";
import type { Role } from "@unkey/db";
+import { Button } from "@unkey/ui";
import { validation } from "@unkey/validation";
import { useRouter } from "next/navigation";
import { useState } from "react";
diff --git a/apps/dashboard/app/(app)/authorization/roles/create-new-role.tsx b/apps/dashboard/app/(app)/authorization/roles/create-new-role.tsx
index 159e5649d3..7213af97e4 100644
--- a/apps/dashboard/app/(app)/authorization/roles/create-new-role.tsx
+++ b/apps/dashboard/app/(app)/authorization/roles/create-new-role.tsx
@@ -2,7 +2,7 @@
import { Loading } from "@/components/dashboard/loading";
import { Badge } from "@/components/ui/badge";
-import { Button } from "@/components/ui/button";
+import { Button } from "@unkey/ui";
import {
Dialog,
diff --git a/apps/dashboard/app/(app)/authorization/roles/page.tsx b/apps/dashboard/app/(app)/authorization/roles/page.tsx
index ea93280c1f..77a5fb9739 100644
--- a/apps/dashboard/app/(app)/authorization/roles/page.tsx
+++ b/apps/dashboard/app/(app)/authorization/roles/page.tsx
@@ -1,8 +1,8 @@
import { EmptyPlaceholder } from "@/components/dashboard/empty-placeholder";
import { Badge } from "@/components/ui/badge";
-import { Button } from "@/components/ui/button";
import { getTenantId } from "@/lib/auth";
import { db } from "@/lib/db";
+import { Button } from "@unkey/ui";
import { ChevronRight, Scan } from "lucide-react";
import Link from "next/link";
import { redirect } from "next/navigation";
diff --git a/apps/dashboard/app/(app)/identities/[identityId]/page.tsx b/apps/dashboard/app/(app)/identities/[identityId]/page.tsx
index d7694e597e..7e7c15ffd9 100644
--- a/apps/dashboard/app/(app)/identities/[identityId]/page.tsx
+++ b/apps/dashboard/app/(app)/identities/[identityId]/page.tsx
@@ -3,7 +3,6 @@ import { notFound } from "next/navigation";
import { CopyButton } from "@/components/dashboard/copy-button";
import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
import { Badge } from "@/components/ui/badge";
-import { Button } from "@/components/ui/button";
import { Code } from "@/components/ui/code";
import {
Table,
@@ -16,6 +15,7 @@ import {
import { getTenantId } from "@/lib/auth";
import { clickhouse } from "@/lib/clickhouse";
import { db } from "@/lib/db";
+import { Button } from "@unkey/ui";
import { ChevronRight, Minus } from "lucide-react";
import ms from "ms";
import Link from "next/link";
@@ -146,8 +146,8 @@ export default async function Page(props: Props) {
-
-
+
+
diff --git a/apps/dashboard/app/(app)/logs/components/filters/components/custom-date-filter.tsx b/apps/dashboard/app/(app)/logs/components/filters/components/custom-date-filter.tsx
index fa917252ba..0d0bc50ee7 100644
--- a/apps/dashboard/app/(app)/logs/components/filters/components/custom-date-filter.tsx
+++ b/apps/dashboard/app/(app)/logs/components/filters/components/custom-date-filter.tsx
@@ -3,10 +3,10 @@
import { format, setHours, setMinutes, setSeconds } from "date-fns";
import type { DateRange } from "react-day-picker";
-import { Button } from "@/components/ui/button";
import { Calendar } from "@/components/ui/calendar";
import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
import { cn } from "@/lib/utils";
+import { Button } from "@unkey/ui";
import { ArrowRight, Calendar as CalendarIcon } from "lucide-react";
import { useEffect, useState } from "react";
import { useLogSearchParams } from "../../../query-state";
@@ -147,10 +147,8 @@ export function DatePickerWithRange({ className }: React.HTMLAttributes
- handleFinalDate(undefined)}>
- Clear
-
- handleFinalDate(interimDate)}>
+ handleFinalDate(undefined)}>Clear
+ handleFinalDate(interimDate)}>
Apply
diff --git a/apps/dashboard/app/(app)/logs/components/filters/components/search-combobox/badge.tsx b/apps/dashboard/app/(app)/logs/components/filters/components/search-combobox/badge.tsx
index 589e5c6aba..b450dacca9 100644
--- a/apps/dashboard/app/(app)/logs/components/filters/components/search-combobox/badge.tsx
+++ b/apps/dashboard/app/(app)/logs/components/filters/components/search-combobox/badge.tsx
@@ -1,7 +1,7 @@
import { Badge } from "@/components/ui/badge";
-import { Button } from "@/components/ui/button";
import { Input } from "@/components/ui/input";
import { cn } from "@/lib/utils";
+import { Button } from "@unkey/ui";
import { X } from "lucide-react";
import { useCallback, useEffect, useRef, useState } from "react";
import { OPTIONS } from "./constants";
@@ -115,7 +115,7 @@ const RemoveButton = ({ item, onRemove }: Pick)
{
e.stopPropagation();
diff --git a/apps/dashboard/app/(app)/logs/components/filters/components/search-combobox/search-combobox.tsx b/apps/dashboard/app/(app)/logs/components/filters/components/search-combobox/search-combobox.tsx
index 65e3461cc5..b17af52aa1 100644
--- a/apps/dashboard/app/(app)/logs/components/filters/components/search-combobox/search-combobox.tsx
+++ b/apps/dashboard/app/(app)/logs/components/filters/components/search-combobox/search-combobox.tsx
@@ -1,7 +1,7 @@
-import { Button } from "@/components/ui/button";
import { Command, CommandGroup, CommandItem, CommandList } from "@/components/ui/command";
import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover";
import { cn } from "@/lib/utils";
+import { Button } from "@unkey/ui";
import { CheckCircle, Search } from "lucide-react";
import { useCallback, useRef, useState } from "react";
@@ -89,7 +89,6 @@ export function SearchCombobox() {
{
-
+
-
+
-
+
-
+
diff --git a/apps/dashboard/app/(app)/logs/components/log-details/components/log-header.tsx b/apps/dashboard/app/(app)/logs/components/log-details/components/log-header.tsx
index 3314efba42..0af95a05e1 100644
--- a/apps/dashboard/app/(app)/logs/components/log-details/components/log-header.tsx
+++ b/apps/dashboard/app/(app)/logs/components/log-details/components/log-header.tsx
@@ -1,6 +1,6 @@
import { Badge } from "@/components/ui/badge";
-import { Button } from "@/components/ui/button";
import { cn } from "@/lib/utils";
+import { Button } from "@unkey/ui";
import { X } from "lucide-react";
import type { Log } from "../../../types";
@@ -29,7 +29,7 @@ export const LogHeader = ({ onClose, log }: Props) => {
|
-
+
diff --git a/apps/dashboard/app/(app)/logs/components/log-details/components/log-meta.tsx b/apps/dashboard/app/(app)/logs/components/log-details/components/log-meta.tsx
index bc7cfd9307..4d954cb4dc 100644
--- a/apps/dashboard/app/(app)/logs/components/log-details/components/log-meta.tsx
+++ b/apps/dashboard/app/(app)/logs/components/log-details/components/log-meta.tsx
@@ -1,6 +1,6 @@
-import { Button } from "@/components/ui/button";
import { Card, CardContent } from "@/components/ui/card";
import { toast } from "@/components/ui/toaster";
+import { Button } from "@unkey/ui";
import { Copy } from "lucide-react";
export const LogMetaSection = ({ content }: { content: string }) => {
@@ -23,8 +23,7 @@ export const LogMetaSection = ({ content }: { content: string }) => {
{content}
= (
) : null}
{
startTransition(router.refresh);
}}
diff --git a/apps/dashboard/app/(app)/ratelimits/[namespaceId]/logs/filter.tsx b/apps/dashboard/app/(app)/ratelimits/[namespaceId]/logs/filter.tsx
index b5f1f5dd12..f6f97a215e 100644
--- a/apps/dashboard/app/(app)/ratelimits/[namespaceId]/logs/filter.tsx
+++ b/apps/dashboard/app/(app)/ratelimits/[namespaceId]/logs/filter.tsx
@@ -1,7 +1,7 @@
"use client";
import { ArrayInput } from "@/components/array-input";
-import { Button } from "@/components/ui/button";
import { cn } from "@/lib/utils";
+import { Button } from "@unkey/ui";
import {
CalendarIcon,
CalendarRange,
@@ -87,7 +87,7 @@ export const Filters: React.FC = () => {
-
+
Add Filter
@@ -112,8 +112,6 @@ export const Filters: React.FC = () => {
{identifierVisible ? (
{
startTransition(() => {
@@ -132,8 +130,7 @@ export const Filters: React.FC = () => {
) : null}
{
startTransition(router.refresh);
}}
@@ -173,8 +170,7 @@ export const Filters: React.FC = () => {
{
startTransition(() => {
setSuccessVisible(false);
@@ -204,7 +200,7 @@ export const Filters: React.FC = () => {
className: "w-[100px]",
}}
>
-
+
From:
{after ? format(after, "PPp") : format(new Date(), "PPp")}
@@ -229,10 +225,7 @@ export const Filters: React.FC = () => {
className: "w-[130px]",
}}
>
-
+
Until:
{before ? format(before, "PPp") : format(new Date(), "PPp")}
@@ -244,8 +237,7 @@ export const Filters: React.FC = () => {
{
setTimeRangeVisible(false);
setAfter(null);
@@ -271,7 +263,7 @@ const FilterRow: React.FC<{
return (
diff --git a/apps/dashboard/app/(app)/ratelimits/[namespaceId]/logs/menu.tsx b/apps/dashboard/app/(app)/ratelimits/[namespaceId]/logs/menu.tsx
index 36d8d9428f..6ef955597a 100644
--- a/apps/dashboard/app/(app)/ratelimits/[namespaceId]/logs/menu.tsx
+++ b/apps/dashboard/app/(app)/ratelimits/[namespaceId]/logs/menu.tsx
@@ -1,7 +1,6 @@
"use client";
import { Copy, Filter, MoreHorizontal, UserRoundCog } from "lucide-react";
-import { Button } from "@/components/ui/button";
import {
DropdownMenu,
DropdownMenuContent,
@@ -9,6 +8,7 @@ import {
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
import { toast } from "@/components/ui/toaster";
+import { Button } from "@unkey/ui";
import Link from "next/link";
import { parseAsArrayOf, parseAsString, useQueryState } from "nuqs";
@@ -30,7 +30,7 @@ export const Menu: React.FC = ({ namespace, identifier }) => {
return (
-
+
diff --git a/apps/dashboard/app/(app)/ratelimits/[namespaceId]/overrides/[overrideId]/settings.tsx b/apps/dashboard/app/(app)/ratelimits/[namespaceId]/overrides/[overrideId]/settings.tsx
index 9336f4730b..3349d6a4f5 100644
--- a/apps/dashboard/app/(app)/ratelimits/[namespaceId]/overrides/[overrideId]/settings.tsx
+++ b/apps/dashboard/app/(app)/ratelimits/[namespaceId]/overrides/[overrideId]/settings.tsx
@@ -1,6 +1,5 @@
"use client";
import { Loading } from "@/components/dashboard/loading";
-import { Button } from "@/components/ui/button";
import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/components/ui/card";
import {
Form,
@@ -22,6 +21,7 @@ import {
import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import { zodResolver } from "@hookform/resolvers/zod";
+import { Button } from "@unkey/ui";
import { useRouter } from "next/navigation";
import type React from "react";
import { useForm } from "react-hook-form";
@@ -162,11 +162,7 @@ export const UpdateCard: React.FC = ({ overrideId, defaultValues }) => {
- deleteOverride.mutate({ id: overrideId })}
- variant="secondary"
- >
+ deleteOverride.mutate({ id: overrideId })}>
Delete
diff --git a/apps/dashboard/app/(app)/ratelimits/[namespaceId]/overrides/create-new-override.tsx b/apps/dashboard/app/(app)/ratelimits/[namespaceId]/overrides/create-new-override.tsx
index 9fabd593e6..e5f0d28b86 100644
--- a/apps/dashboard/app/(app)/ratelimits/[namespaceId]/overrides/create-new-override.tsx
+++ b/apps/dashboard/app/(app)/ratelimits/[namespaceId]/overrides/create-new-override.tsx
@@ -1,6 +1,5 @@
"use client";
import { Loading } from "@/components/dashboard/loading";
-import { Button } from "@/components/ui/button";
import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/components/ui/card";
import {
Form,
@@ -22,6 +21,7 @@ import {
import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import { zodResolver } from "@hookform/resolvers/zod";
+import { Button } from "@unkey/ui";
import { useRouter, useSearchParams } from "next/navigation";
import type React from "react";
import { useForm } from "react-hook-form";
diff --git a/apps/dashboard/app/(app)/ratelimits/[namespaceId]/overrides/table.tsx b/apps/dashboard/app/(app)/ratelimits/[namespaceId]/overrides/table.tsx
index bee67ee5f0..f0b5b8e868 100644
--- a/apps/dashboard/app/(app)/ratelimits/[namespaceId]/overrides/table.tsx
+++ b/apps/dashboard/app/(app)/ratelimits/[namespaceId]/overrides/table.tsx
@@ -1,5 +1,4 @@
import { Badge } from "@/components/ui/badge";
-import { Button } from "@/components/ui/button";
import {
Table,
TableBody,
@@ -9,6 +8,7 @@ import {
TableRow,
} from "@/components/ui/table";
import { clickhouse } from "@/lib/clickhouse";
+import { Button } from "@unkey/ui";
import { ChevronRight, Minus } from "lucide-react";
import ms from "ms";
import Link from "next/link";
diff --git a/apps/dashboard/app/(app)/ratelimits/[namespaceId]/settings/delete-namespace.tsx b/apps/dashboard/app/(app)/ratelimits/[namespaceId]/settings/delete-namespace.tsx
index e2354bfcb1..fc6140a271 100644
--- a/apps/dashboard/app/(app)/ratelimits/[namespaceId]/settings/delete-namespace.tsx
+++ b/apps/dashboard/app/(app)/ratelimits/[namespaceId]/settings/delete-namespace.tsx
@@ -1,5 +1,5 @@
"use client";
-import { Button } from "@/components/ui/button";
+import { Button } from "@unkey/ui";
import type React from "react";
import { useState } from "react";
@@ -93,7 +93,7 @@ export const DeleteNamespace: React.FC = ({ namespace }) => {
- setOpen(!open)} variant="alert">
+ setOpen(!open)} variant="destructive">
Delete namespace
@@ -158,13 +158,12 @@ export const DeleteNamespace: React.FC = ({ namespace }) => {
type="button"
disabled={deleteNamespace.isLoading}
onClick={() => setOpen(!open)}
- variant="secondary"
>
Cancel
{deleteNamespace.isLoading ? : "Delete namespace"}
diff --git a/apps/dashboard/app/(app)/ratelimits/[namespaceId]/settings/update-namespace-name.tsx b/apps/dashboard/app/(app)/ratelimits/[namespaceId]/settings/update-namespace-name.tsx
index 698426039a..5a12d79935 100644
--- a/apps/dashboard/app/(app)/ratelimits/[namespaceId]/settings/update-namespace-name.tsx
+++ b/apps/dashboard/app/(app)/ratelimits/[namespaceId]/settings/update-namespace-name.tsx
@@ -1,7 +1,6 @@
"use client";
import { revalidateTag } from "@/app/actions";
import { Loading } from "@/components/dashboard/loading";
-import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
@@ -16,6 +15,7 @@ import { toast } from "@/components/ui/toaster";
import { tags } from "@/lib/cache";
import { trpc } from "@/lib/trpc/client";
import { zodResolver } from "@hookform/resolvers/zod";
+import { Button } from "@unkey/ui";
import { validation } from "@unkey/validation";
import { useRouter } from "next/navigation";
import { useForm } from "react-hook-form";
@@ -85,9 +85,7 @@ export const UpdateNamespaceName: React.FC = ({ namespace }) => {
diff --git a/apps/dashboard/app/(app)/ratelimits/create-namespace-button.tsx b/apps/dashboard/app/(app)/ratelimits/create-namespace-button.tsx
index 0f0330d73a..c9c0ca5364 100644
--- a/apps/dashboard/app/(app)/ratelimits/create-namespace-button.tsx
+++ b/apps/dashboard/app/(app)/ratelimits/create-namespace-button.tsx
@@ -1,6 +1,5 @@
"use client";
import { Loading } from "@/components/dashboard/loading";
-import { Button } from "@/components/ui/button";
import { Dialog, DialogContent, DialogFooter, DialogTrigger } from "@/components/ui/dialog";
import {
Form,
@@ -15,6 +14,7 @@ import { Input } from "@/components/ui/input";
import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import { zodResolver } from "@hookform/resolvers/zod";
+import { Button } from "@unkey/ui";
import { Plus } from "lucide-react";
import { useRouter } from "next/navigation";
import type React from "react";
diff --git a/apps/dashboard/app/(app)/ratelimits/page.tsx b/apps/dashboard/app/(app)/ratelimits/page.tsx
index 628730b933..2e55b47e65 100644
--- a/apps/dashboard/app/(app)/ratelimits/page.tsx
+++ b/apps/dashboard/app/(app)/ratelimits/page.tsx
@@ -2,11 +2,11 @@ import { PageHeader } from "@/components/dashboard/page-header";
import { CopyButton } from "@/components/dashboard/copy-button";
import { EmptyPlaceholder } from "@/components/dashboard/empty-placeholder";
-import { Button } from "@/components/ui/button";
import { Code } from "@/components/ui/code";
import { Separator } from "@/components/ui/separator";
import { getTenantId } from "@/lib/auth";
import { db } from "@/lib/db";
+import { Button } from "@unkey/ui";
import { BookOpen, Scan } from "lucide-react";
import Link from "next/link";
import { redirect } from "next/navigation";
@@ -82,7 +82,7 @@ export default async function RatelimitOverviewPage() {
-
+
Read the docs
diff --git a/apps/dashboard/app/(app)/semantic-cache/[gatewayId]/settings/delete-gateway.tsx b/apps/dashboard/app/(app)/semantic-cache/[gatewayId]/settings/delete-gateway.tsx
index a0af5cd114..531ad5bdfa 100644
--- a/apps/dashboard/app/(app)/semantic-cache/[gatewayId]/settings/delete-gateway.tsx
+++ b/apps/dashboard/app/(app)/semantic-cache/[gatewayId]/settings/delete-gateway.tsx
@@ -1,5 +1,5 @@
"use client";
-import { Button } from "@/components/ui/button";
+import { Button } from "@unkey/ui";
import type React from "react";
import { useState } from "react";
@@ -97,7 +97,7 @@ export const DeleteGateway: React.FC = ({ gateway }) => {
- setOpen(!open)} variant="alert">
+ setOpen(!open)} variant="destructive">
Delete gateway
@@ -160,13 +160,12 @@ export const DeleteGateway: React.FC = ({ gateway }) => {
type="button"
disabled={deleteGateway.isLoading}
onClick={() => setOpen(!open)}
- variant="secondary"
>
Cancel
{deleteGateway.isLoading ? : "Delete gateway"}
diff --git a/apps/dashboard/app/(app)/settings/billing/page.tsx b/apps/dashboard/app/(app)/settings/billing/page.tsx
index a2c8f4db80..8c55c290ed 100644
--- a/apps/dashboard/app/(app)/settings/billing/page.tsx
+++ b/apps/dashboard/app/(app)/settings/billing/page.tsx
@@ -1,4 +1,3 @@
-import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
@@ -14,6 +13,7 @@ import { type Workspace, db } from "@/lib/db";
import { stripeEnv } from "@/lib/env";
import { cn } from "@/lib/utils";
import { type BillingTier, QUOTA, calculateTieredPrices } from "@unkey/billing";
+import { Button } from "@unkey/ui";
import { Check, ExternalLink } from "lucide-react";
import Link from "next/link";
import { redirect } from "next/navigation";
@@ -157,14 +157,12 @@ const Side: React.FC<{ workspace: Workspace }> = async ({ workspace }) => {
-
+
{paymentMethod ? "Update Card" : "Add Credit Card"}
-
- Change Plan
-
+ Change Plan
diff --git a/apps/dashboard/app/(app)/settings/billing/plans/button.tsx b/apps/dashboard/app/(app)/settings/billing/plans/button.tsx
index e173ed1562..b0cf72616b 100644
--- a/apps/dashboard/app/(app)/settings/billing/plans/button.tsx
+++ b/apps/dashboard/app/(app)/settings/billing/plans/button.tsx
@@ -2,7 +2,6 @@
import { Loading } from "@/components/dashboard/loading";
import { Alert, AlertDescription, AlertTitle } from "@/components/ui/alert";
-import { Button } from "@/components/ui/button";
import {
Dialog,
DialogContent,
@@ -14,6 +13,7 @@ import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import { PostHogEvent } from "@/providers/PostHogProvider";
import type { Workspace } from "@unkey/db";
+import { Button } from "@unkey/ui";
import { useRouter } from "next/navigation";
import type React from "react";
import { useState } from "react";
@@ -63,21 +63,12 @@ export const ChangePlanButton: React.FC = ({ workspace, newPlan, label })
- {workspace.planDowngradeRequest && isSamePlan
- ? "Resubscribe"
- : isSamePlan
- ? "Current Plan"
- : label}
+ {workspace.planDowngradeRequest ? "Resubscribe" : isSamePlan ? "Current Plan" : label}
@@ -99,7 +90,7 @@ export const ChangePlanButton: React.FC = ({ workspace, newPlan, label })
)}
- setOpen(false)}>
+ setOpen(false)}>
Cancel
diff --git a/apps/dashboard/app/(app)/settings/billing/plans/page.tsx b/apps/dashboard/app/(app)/settings/billing/plans/page.tsx
index 3d79c9c6b6..f9f226606d 100644
--- a/apps/dashboard/app/(app)/settings/billing/plans/page.tsx
+++ b/apps/dashboard/app/(app)/settings/billing/plans/page.tsx
@@ -1,6 +1,6 @@
-import { Button } from "@/components/ui/button";
import { getTenantId } from "@/lib/auth";
import { db } from "@/lib/db";
+import { Button } from "@unkey/ui";
import { ArrowLeft } from "lucide-react";
import Link from "next/link";
import { notFound } from "next/navigation";
@@ -149,7 +149,7 @@ export default async function Page() {
Schedule a Call
diff --git a/apps/dashboard/app/(app)/settings/general/update-workspace-name.tsx b/apps/dashboard/app/(app)/settings/general/update-workspace-name.tsx
index 50c47cb5e2..9ceabe7ec7 100644
--- a/apps/dashboard/app/(app)/settings/general/update-workspace-name.tsx
+++ b/apps/dashboard/app/(app)/settings/general/update-workspace-name.tsx
@@ -1,6 +1,5 @@
"use client";
import { Loading } from "@/components/dashboard/loading";
-import { Button } from "@/components/ui/button";
import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/components/ui/card";
import { Form, FormControl, FormField, FormItem, FormMessage } from "@/components/ui/form";
import { Input } from "@/components/ui/input";
@@ -8,6 +7,7 @@ import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import { useUser } from "@clerk/nextjs";
import { zodResolver } from "@hookform/resolvers/zod";
+import { Button } from "@unkey/ui";
import { useRouter } from "next/navigation";
import { useForm } from "react-hook-form";
import { z } from "zod";
@@ -86,11 +86,7 @@ export const UpdateWorkspaceName: React.FC = ({ workspace }) => {
-
+
{updateName.isLoading ? : "Save"}
diff --git a/apps/dashboard/app/(app)/settings/root-keys/[keyId]/page.tsx b/apps/dashboard/app/(app)/settings/root-keys/[keyId]/page.tsx
index acfe0e69c3..bb1de70698 100644
--- a/apps/dashboard/app/(app)/settings/root-keys/[keyId]/page.tsx
+++ b/apps/dashboard/app/(app)/settings/root-keys/[keyId]/page.tsx
@@ -1,10 +1,10 @@
-import { Button } from "@/components/ui/button";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
import { DialogTrigger } from "@/components/ui/dialog";
import { getTenantId } from "@/lib/auth";
import { clickhouse } from "@/lib/clickhouse";
import { type Permission, db, eq, schema } from "@/lib/db";
import { env } from "@/lib/env";
+import { Button } from "@unkey/ui";
import { notFound } from "next/navigation";
import { AccessTable } from "./history/access-table";
import { DialogAddPermissionsForAPI } from "./permissions/add-permission-for-api";
@@ -144,7 +144,7 @@ export default async function RootKeyPage(props: {
{apisWithoutActivePermissions.length > 0 && (
-
+
Add permissions for {apisWithActivePermissions.length > 0 ? "another" : "an"} API
diff --git a/apps/dashboard/app/(app)/settings/root-keys/[keyId]/permissions/legacy.tsx b/apps/dashboard/app/(app)/settings/root-keys/[keyId]/permissions/legacy.tsx
index 3198381f7d..8843ef9544 100644
--- a/apps/dashboard/app/(app)/settings/root-keys/[keyId]/permissions/legacy.tsx
+++ b/apps/dashboard/app/(app)/settings/root-keys/[keyId]/permissions/legacy.tsx
@@ -1,7 +1,6 @@
"use client";
import { Alert, AlertDescription } from "@/components/ui/alert";
-import { Button } from "@/components/ui/button";
import {
Card,
CardContent,
@@ -13,6 +12,7 @@ import {
import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import type { Permission } from "@unkey/db";
+import { Button } from "@unkey/ui";
import { Loader2 } from "lucide-react";
import { useRouter } from "next/navigation";
@@ -63,7 +63,7 @@ export const Legacy: React.FC = ({ keyId, permissions }) => {
{
if (!canSafelyDelete) {
diff --git a/apps/dashboard/app/(app)/settings/root-keys/[keyId]/permissions/permission-manager-card.tsx b/apps/dashboard/app/(app)/settings/root-keys/[keyId]/permissions/permission-manager-card.tsx
index c746a64f46..863d0a66e7 100644
--- a/apps/dashboard/app/(app)/settings/root-keys/[keyId]/permissions/permission-manager-card.tsx
+++ b/apps/dashboard/app/(app)/settings/root-keys/[keyId]/permissions/permission-manager-card.tsx
@@ -1,4 +1,3 @@
-import { Button } from "@/components/ui/button";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card";
import {
Dialog,
@@ -10,6 +9,7 @@ import {
} from "@/components/ui/dialog";
import { Label } from "@/components/ui/label";
import type { Permission } from "@unkey/db";
+import { Button } from "@unkey/ui";
import { Check } from "lucide-react";
import { PermissionToggle } from "./permission_toggle";
import type { UnkeyPermissions } from "./permissions";
@@ -47,9 +47,7 @@ export function PermissionManagerCard(props: PermissionManagerCardProps) {
{props.permissionManagerTitle}
-
+
{verificationForm.formState.isLoading ? : "Verify"}
diff --git a/apps/dashboard/app/(app)/settings/user/update-user-name.tsx b/apps/dashboard/app/(app)/settings/user/update-user-name.tsx
index e7b81d6b41..eb2df513ad 100644
--- a/apps/dashboard/app/(app)/settings/user/update-user-name.tsx
+++ b/apps/dashboard/app/(app)/settings/user/update-user-name.tsx
@@ -1,7 +1,6 @@
"use client";
import { EmptyPlaceholder } from "@/components/dashboard/empty-placeholder";
import { Loading } from "@/components/dashboard/loading";
-import { Button } from "@/components/ui/button";
import { Card, CardContent, CardFooter, CardHeader, CardTitle } from "@/components/ui/card";
import {
Form,
@@ -17,6 +16,7 @@ import { toast } from "@/components/ui/toaster";
import type { ClerkError } from "@/lib/clerk";
import { useUser } from "@clerk/nextjs";
import { zodResolver } from "@hookform/resolvers/zod";
+import { Button } from "@unkey/ui";
import type React from "react";
import { useForm } from "react-hook-form";
import { z } from "zod";
@@ -90,11 +90,7 @@ export const UpdateUserName: React.FC = () => {
/>
-
+
{form.formState.isLoading ? : "Save"}
diff --git a/apps/dashboard/app/(app)/settings/vercel/client.tsx b/apps/dashboard/app/(app)/settings/vercel/client.tsx
index 29dc4eaa66..d5834086ea 100644
--- a/apps/dashboard/app/(app)/settings/vercel/client.tsx
+++ b/apps/dashboard/app/(app)/settings/vercel/client.tsx
@@ -3,7 +3,6 @@ import { EmptyPlaceholder } from "@/components/dashboard/empty-placeholder";
import { Loading } from "@/components/dashboard/loading";
import { PageHeader } from "@/components/dashboard/page-header";
import { Avatar, AvatarImage } from "@/components/ui/avatar";
-import { Button } from "@/components/ui/button";
import {
DropdownMenu,
DropdownMenuContent,
@@ -26,6 +25,7 @@ import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip
import { trpc } from "@/lib/trpc/client";
import { cn } from "@/lib/utils";
import type { Api, Key, VercelBinding } from "@unkey/db";
+import { Button } from "@unkey/ui";
import { ExternalLink, Link2, MoreHorizontal, Plus, RefreshCw, Trash, Unlink2 } from "lucide-react";
import ms from "ms";
import Link from "next/link";
@@ -77,7 +77,7 @@ export const Client: React.FC = ({ projects, integration, apis, rootKeys
No connected projects found
Connect a Vercel project now
- Vercel Integration
+ Vercel Integration
);
@@ -100,7 +100,7 @@ export const Client: React.FC = ({ projects, integration, apis, rootKeys
href={`https://vercel.com/dashboard/integrations/${integration.id}`}
target="_blank"
>
- Configure Vercel
+ Configure Vercel
,
]}
/>
@@ -122,7 +122,7 @@ export const Client: React.FC = ({ projects, integration, apis, rootKeys
{project.name}
-
+
@@ -287,7 +287,7 @@ const ConnectedResource: React.FC<{
-
+
{isLoading ? : }
diff --git a/apps/dashboard/app/(app)/settings/vercel/page.tsx b/apps/dashboard/app/(app)/settings/vercel/page.tsx
index a392afd247..7ab4a902a4 100644
--- a/apps/dashboard/app/(app)/settings/vercel/page.tsx
+++ b/apps/dashboard/app/(app)/settings/vercel/page.tsx
@@ -1,9 +1,9 @@
import { EmptyPlaceholder } from "@/components/dashboard/empty-placeholder";
-import { Button } from "@/components/ui/button";
import { Code } from "@/components/ui/code";
import { getTenantId } from "@/lib/auth";
import { type Api, type Key, type VercelBinding, db, eq, schema } from "@/lib/db";
import { clerkClient } from "@clerk/nextjs";
+import { Button } from "@unkey/ui";
import { Vercel } from "@unkey/vercel";
import Link from "next/link";
import { notFound } from "next/navigation";
diff --git a/apps/dashboard/app/integrations/vercel/callback/client.tsx b/apps/dashboard/app/integrations/vercel/callback/client.tsx
index 0a2840b622..5b82261513 100644
--- a/apps/dashboard/app/integrations/vercel/callback/client.tsx
+++ b/apps/dashboard/app/integrations/vercel/callback/client.tsx
@@ -1,7 +1,6 @@
"use client";
import { Loading } from "@/components/dashboard/loading";
import { PageHeader } from "@/components/dashboard/page-header";
-import { Button } from "@/components/ui/button";
import { Label } from "@/components/ui/label";
import { ScrollArea } from "@/components/ui/scroll-area";
import {
@@ -14,6 +13,7 @@ import {
import { toast } from "@/components/ui/toaster";
import { trpc } from "@/lib/trpc/client";
import type { Api, VercelBinding } from "@unkey/db";
+import { Button } from "@unkey/ui";
import { X } from "lucide-react";
import { useRouter } from "next/navigation";
import { useState } from "react";
@@ -134,7 +134,7 @@ export const Client: React.FC = ({
{
setSelectedApis({
...selectedApis,
@@ -154,7 +154,6 @@ export const Client: React.FC = ({