diff --git a/packages/web/app/src/components/admin/AdminStats.tsx b/packages/web/app/src/components/admin/AdminStats.tsx
index 0d8e67373..72f0ba1ce 100644
--- a/packages/web/app/src/components/admin/AdminStats.tsx
+++ b/packages/web/app/src/components/admin/AdminStats.tsx
@@ -11,7 +11,6 @@ import ReactECharts from 'echarts-for-react';
import AutoSizer from 'react-virtualized-auto-sizer';
import { useQuery } from 'urql';
import {
- Button,
DataWrapper,
Sortable,
Stat,
@@ -38,6 +37,7 @@ import {
SortingState,
useTableInstance,
} from '@tanstack/react-table';
+import { Button } from '../ui/button';
interface Organization {
name: ReactElement;
diff --git a/packages/web/app/src/components/organization/billing/BillingPaymentMethod.tsx b/packages/web/app/src/components/organization/billing/BillingPaymentMethod.tsx
index 2967a0fad..f2fa05fd4 100644
--- a/packages/web/app/src/components/organization/billing/BillingPaymentMethod.tsx
+++ b/packages/web/app/src/components/organization/billing/BillingPaymentMethod.tsx
@@ -2,7 +2,8 @@ import { ReactElement } from 'react';
import clsx from 'clsx';
import { useMutation } from 'urql';
import { Section } from '@/components/common';
-import { Button, Heading, Link } from '@/components/v2';
+import { Button } from '@/components/ui/button';
+import { Heading, Link } from '@/components/v2';
import { FragmentType, graphql, useFragment } from '@/gql';
import { BillingPlanType } from '@/gql/graphql';
import { ExternalLinkIcon } from '@radix-ui/react-icons';
diff --git a/packages/web/app/src/components/project/alerts/create-alert.tsx b/packages/web/app/src/components/project/alerts/create-alert.tsx
index 825b8879e..3a0010a56 100644
--- a/packages/web/app/src/components/project/alerts/create-alert.tsx
+++ b/packages/web/app/src/components/project/alerts/create-alert.tsx
@@ -2,7 +2,8 @@ import { ReactElement } from 'react';
import { useFormik } from 'formik';
import { useMutation } from 'urql';
import * as Yup from 'yup';
-import { Button, Heading, Modal, Select } from '@/components/v2';
+import { Button } from '@/components/ui/button';
+import { Heading, Modal, Select } from '@/components/v2';
import { FragmentType, graphql, useFragment } from '@/gql';
import { AlertType } from '@/gql/graphql';
@@ -157,10 +158,21 @@ export const CreateAlertModal = (props: {
{mutation.error &&
{mutation.error.message}
}
-
diff --git a/packages/web/app/src/components/project/alerts/create-channel.tsx b/packages/web/app/src/components/project/alerts/create-channel.tsx
index 4ab7df17e..4cf7303c0 100644
--- a/packages/web/app/src/components/project/alerts/create-channel.tsx
+++ b/packages/web/app/src/components/project/alerts/create-channel.tsx
@@ -2,7 +2,8 @@ import { ReactElement } from 'react';
import { useFormik } from 'formik';
import { useMutation } from 'urql';
import * as Yup from 'yup';
-import { Button, Heading, Input, Modal, Select, Tag } from '@/components/v2';
+import { Button } from '@/components/ui/button';
+import { Heading, Input, Modal, Select, Tag } from '@/components/v2';
import { graphql } from '@/gql';
import { AlertChannelType } from '@/gql/graphql';
@@ -192,10 +193,21 @@ export const CreateChannelModal = ({
)}
-
+
Cancel
-
+
Create Channel
diff --git a/packages/web/app/src/components/project/migration-toast.tsx b/packages/web/app/src/components/project/migration-toast.tsx
index 01261d328..5204a24cf 100644
--- a/packages/web/app/src/components/project/migration-toast.tsx
+++ b/packages/web/app/src/components/project/migration-toast.tsx
@@ -1,6 +1,13 @@
-import { Button } from '@/components/v2';
+import { useRouter } from '@tanstack/react-router';
+import { Button } from '../ui/button';
export function ProjectMigrationToast({ projectId, orgId }: { projectId: string; orgId: string }) {
+ const router = useRouter();
+ const handleOnClick = () => {
+ void router.navigate({
+ to: `/${orgId}/${projectId}/view/settings`,
+ });
+ };
return (
@@ -15,10 +22,9 @@ export function ProjectMigrationToast({ projectId, orgId }: { projectId: string;
Migrate
diff --git a/packages/web/app/src/components/project/settings/model-migration.tsx b/packages/web/app/src/components/project/settings/model-migration.tsx
index 1fff1613c..cf786f1b7 100644
--- a/packages/web/app/src/components/project/settings/model-migration.tsx
+++ b/packages/web/app/src/components/project/settings/model-migration.tsx
@@ -1,6 +1,7 @@
import { ReactElement, ReactNode, useCallback } from 'react';
import { useMutation } from 'urql';
-import { Button, Card, Heading, Tooltip } from '@/components/v2';
+import { Button } from '@/components/ui/button';
+import { Card, Heading, Tooltip } from '@/components/v2';
import { FragmentType, graphql, useFragment } from '@/gql';
import { RegistryModel } from '@/gql/graphql';
import { useNotifications } from '@/lib/hooks';
@@ -185,12 +186,12 @@ export function ModelMigrationSettings(props: {
-
+
Upgrade my project
{
void router.navigate({
to: '/$organizationId/view/support',
diff --git a/packages/web/app/src/components/target/history/MarkAsValid.tsx b/packages/web/app/src/components/target/history/MarkAsValid.tsx
index 95d6690e8..e2aa1e0fa 100644
--- a/packages/web/app/src/components/target/history/MarkAsValid.tsx
+++ b/packages/web/app/src/components/target/history/MarkAsValid.tsx
@@ -1,6 +1,7 @@
import { ReactElement, useCallback } from 'react';
import { useMutation } from 'urql';
-import { Button, Tooltip } from '@/components/v2';
+import { Button } from '@/components/ui/button';
+import { Tooltip } from '@/components/v2';
import { FragmentType, graphql, useFragment } from '@/gql';
const UpdateSchemaVersionStatusMutation = graphql(`
diff --git a/packages/web/app/src/components/target/insights/Fallback.tsx b/packages/web/app/src/components/target/insights/Fallback.tsx
index 281818373..51b8dce8b 100644
--- a/packages/web/app/src/components/target/insights/Fallback.tsx
+++ b/packages/web/app/src/components/target/insights/Fallback.tsx
@@ -1,7 +1,7 @@
import { ReactElement, ReactNode } from 'react';
import { AlertCircleIcon } from 'lucide-react';
import { Alert, AlertDescription, AlertTitle } from '@/components/ui/alert';
-import { Button } from '@/components/v2';
+import { Button } from '@/components/ui/button';
import { cn } from '@/lib/utils';
export function OperationsFallback({
@@ -36,7 +36,7 @@ export function OperationsFallback({
) : null}
{state === 'error' ? (
-
+
Failed to load data. Click to retry.
diff --git a/packages/web/app/src/components/target/insights/Filters.tsx b/packages/web/app/src/components/target/insights/Filters.tsx
index 1f45dc660..148b4c4a1 100644
--- a/packages/web/app/src/components/target/insights/Filters.tsx
+++ b/packages/web/app/src/components/target/insights/Filters.tsx
@@ -6,7 +6,7 @@ import { useQuery } from 'urql';
import { useDebouncedCallback } from 'use-debounce';
import { Button } from '@/components/ui/button';
import { Sheet, SheetContent, SheetHeader, SheetTitle } from '@/components/ui/sheet';
-import { Checkbox, Input, Button as LegacyButton, Spinner } from '@/components/v2';
+import { Checkbox, Input, Spinner } from '@/components/v2';
import { FragmentType, graphql, useFragment } from '@/gql';
import { DateRangeInput } from '@/gql/graphql';
import { useFormattedNumber, useToggle } from '@/lib/hooks';
@@ -133,16 +133,16 @@ function OperationsFilter({
}}
/>
-
+
All
-
-
+
+
None
-
-
+
+
Reset
-
-
+ {
@@ -151,7 +151,7 @@ function OperationsFilter({
}}
>
Save
-
+
@@ -480,16 +480,16 @@ function ClientsFilter({
}}
/>
-
+
All
-
-
+
+
None
-
-
+
+
Reset
-
-
+ {
@@ -498,7 +498,7 @@ function ClientsFilter({
}}
>
Save
-
+
diff --git a/packages/web/app/src/components/target/laboratory/create-collection-modal.tsx b/packages/web/app/src/components/target/laboratory/create-collection-modal.tsx
index d22a570fa..7e06e64f6 100644
--- a/packages/web/app/src/components/target/laboratory/create-collection-modal.tsx
+++ b/packages/web/app/src/components/target/laboratory/create-collection-modal.tsx
@@ -2,7 +2,8 @@ import { ReactElement, useEffect } from 'react';
import { useFormik } from 'formik';
import { useMutation, useQuery } from 'urql';
import * as Yup from 'yup';
-import { Button, Heading, Input, Modal } from '@/components/v2';
+import { Button } from '@/components/ui/button';
+import { Heading, Input, Modal } from '@/components/v2';
import { graphql } from '@/gql';
const CollectionQuery = graphql(`
@@ -237,13 +238,18 @@ export function CreateCollectionModal(props: {
{error && {error.message}
}
-
+
Cancel
{
resetForm();
close();
@@ -177,8 +178,8 @@ export function CreateOperationModal(props: {
-
+
Cancel
{
await mutate({
id: collectionId,
diff --git a/packages/web/app/src/components/target/laboratory/delete-operation-modal.tsx b/packages/web/app/src/components/target/laboratory/delete-operation-modal.tsx
index 5b241e2c3..f9efcd673 100644
--- a/packages/web/app/src/components/target/laboratory/delete-operation-modal.tsx
+++ b/packages/web/app/src/components/target/laboratory/delete-operation-modal.tsx
@@ -1,6 +1,7 @@
import { ReactElement } from 'react';
import { useMutation } from 'urql';
-import { Button, Heading, Modal } from '@/components/v2';
+import { Button } from '@/components/ui/button';
+import { Heading, Modal } from '@/components/v2';
import { graphql } from '@/gql';
import { useNotifications } from '@/lib/hooks';
import { TrashIcon } from '@radix-ui/react-icons';
@@ -58,13 +59,13 @@ export function DeleteOperationModal(props: {
Are you sure you wish to delete this operation? This action is irreversible!
-
+
Cancel
{
const { error } = await mutate({
id: operationId,
diff --git a/packages/web/app/src/components/target/laboratory/edit-operation-modal.tsx b/packages/web/app/src/components/target/laboratory/edit-operation-modal.tsx
index fafcff23b..e91e76018 100644
--- a/packages/web/app/src/components/target/laboratory/edit-operation-modal.tsx
+++ b/packages/web/app/src/components/target/laboratory/edit-operation-modal.tsx
@@ -2,7 +2,8 @@ import { ReactElement, useMemo } from 'react';
import { useFormik } from 'formik';
import { useMutation } from 'urql';
import * as Yup from 'yup';
-import { Button, Heading, Input, Modal } from '@/components/v2';
+import { Button } from '@/components/ui/button';
+import { Heading, Input, Modal } from '@/components/v2';
import { graphql } from '@/gql';
import { useCollections } from '../../../pages/target-laboratory';
@@ -115,8 +116,8 @@ export const EditOperationModal = (props: {
{
close();
}}
@@ -125,8 +126,8 @@ export const EditOperationModal = (props: {
{mutation.data.updateMe.error.message}
)}
-
+
Save Changes
diff --git a/packages/web/app/src/components/v2/button.tsx b/packages/web/app/src/components/v2/button.tsx
deleted file mode 100644
index b6809f620..000000000
--- a/packages/web/app/src/components/v2/button.tsx
+++ /dev/null
@@ -1,73 +0,0 @@
-import { ComponentProps, forwardRef } from 'react';
-import clsx from 'clsx';
-import * as Toolbar from '@radix-ui/react-toolbar';
-
-type ButtonProps = Omit, 'size'> & {
- danger?: boolean;
- variant?: 'primary' | 'secondary' | 'default' | 'link';
- size?: 'large' | 'medium' | 'small';
- block?: boolean;
- as?: 'a';
- href?: string;
-};
-
-export const Button = forwardRef(
- (
- {
- children,
- danger = false,
- variant = 'default',
- size = 'medium',
- block = false,
- className,
- as,
- ...props
- },
- forwardedRef,
- ) => {
- const TagToUse = as || Toolbar.Button;
-
- return (
-
-
- // @ts-ignore
- ref={forwardedRef} // required by DropdownMenu.Trigger with asChild prop
- className={clsx(
- `
- transition
- focus-within:ring
- disabled:cursor-not-allowed
- disabled:bg-gray-800
- disabled:text-[#c4c4c4]
- disabled:brightness-100
- `,
- block && 'w-full justify-center',
- variant !== 'link' &&
- {
- small: 'rounded-sm p-1',
- medium: 'rounded-sm p-2',
- large: 'rounded-md p-3',
- }[size],
- danger
- ? 'bg-red-500 text-white hover:brightness-110 active:bg-red-600'
- : {
- primary: 'bg-orange-600 text-white hover:brightness-110 active:bg-orange-700',
- secondary:
- 'bg-gray-800 text-gray-500 hover:text-orange-600 hover:brightness-110 active:bg-gray-900',
- default:
- 'bg-transparent text-gray-500 hover:border-gray-800 hover:text-orange-600',
- link: 'text-orange-600 hover:underline',
- }[variant],
- variant !== 'link' &&
- 'inline-flex items-center border border-transparent text-sm font-bold',
- className,
- )}
- {...props}
- >
- {children}
-
-
- );
- },
-);
diff --git a/packages/web/app/src/components/v2/copy-value.tsx b/packages/web/app/src/components/v2/copy-value.tsx
index c6eceb102..37262f876 100644
--- a/packages/web/app/src/components/v2/copy-value.tsx
+++ b/packages/web/app/src/components/v2/copy-value.tsx
@@ -1,7 +1,8 @@
import { ReactElement, useCallback, useEffect, useState } from 'react';
-import { Button, Input } from '@/components/v2';
+import { Input } from '@/components/v2';
import { CheckIcon, CopyIcon } from '@/components/v2/icon';
import { useClipboard } from '@/lib/hooks';
+import { Button } from '../ui/button';
export const CopyValue = ({
value,
@@ -36,6 +37,8 @@ export const CopyValue = ({
readOnly
suffix={
-
+
diff --git a/packages/web/app/src/components/v2/modals/change-permissions.tsx b/packages/web/app/src/components/v2/modals/change-permissions.tsx
index ad88851a3..4bf895415 100644
--- a/packages/web/app/src/components/v2/modals/change-permissions.tsx
+++ b/packages/web/app/src/components/v2/modals/change-permissions.tsx
@@ -1,7 +1,8 @@
import { ReactElement } from 'react';
import { PermissionsSpace, usePermissionsManager } from '@/components/organization/Permissions';
+import { Button } from '@/components/ui/button';
import { Tabs, TabsList, TabsTrigger } from '@/components/ui/tabs';
-import { Button, Heading, Modal } from '@/components/v2';
+import { Heading, Modal } from '@/components/v2';
import { FragmentType, graphql, useFragment } from '@/gql';
import { scopes } from '@/lib/access/common';
@@ -79,10 +80,15 @@ export function ChangePermissionsModal({
/>
-
+
Cancel
-
+
Save permissions
diff --git a/packages/web/app/src/components/v2/modals/connect-schema.tsx b/packages/web/app/src/components/v2/modals/connect-schema.tsx
index fc07007f5..9d758c450 100644
--- a/packages/web/app/src/components/v2/modals/connect-schema.tsx
+++ b/packages/web/app/src/components/v2/modals/connect-schema.tsx
@@ -1,15 +1,7 @@
import { ReactElement, useMemo, useState } from 'react';
import { useQuery } from 'urql';
-import {
- Button,
- CopyValue,
- DocsLink,
- Heading,
- Link,
- Modal,
- RadixSelect,
- Tag,
-} from '@/components/v2';
+import { Button } from '@/components/ui/button';
+import { CopyValue, DocsLink, Heading, Link, Modal, RadixSelect, Tag } from '@/components/v2';
import { graphql } from '@/gql';
import { ProjectType } from '@/gql/graphql';
import { getDocsUrl } from '@/lib/docs-url';
@@ -209,7 +201,7 @@ export const ConnectSchemaModal = (props: {
diff --git a/packages/web/app/src/components/v2/modals/create-access-token.tsx b/packages/web/app/src/components/v2/modals/create-access-token.tsx
index 7e52d15ea..3ad97fec6 100644
--- a/packages/web/app/src/components/v2/modals/create-access-token.tsx
+++ b/packages/web/app/src/components/v2/modals/create-access-token.tsx
@@ -3,7 +3,8 @@ import { useFormik } from 'formik';
import { useMutation, useQuery } from 'urql';
import * as Yup from 'yup';
import { PermissionScopeItem, usePermissionsManager } from '@/components/organization/Permissions';
-import { Accordion, Button, CopyValue, Heading, Input, Modal, Tag } from '@/components/v2';
+import { Button } from '@/components/ui/button';
+import { Accordion, CopyValue, Heading, Input, Modal, Tag } from '@/components/v2';
import { FragmentType, graphql, useFragment } from '@/gql';
import { TargetAccessScope } from '@/gql/graphql';
import { RegistryAccessScope } from '@/lib/access/common';
@@ -159,12 +160,7 @@ function ModalContent(props: {
need to create a new one.
-
+
Ok, got it!
@@ -228,13 +224,18 @@ function ModalContent(props: {
{mutation.error && {mutation.error.message}
}
-
+
Cancel
diff --git a/packages/web/app/src/components/v2/modals/create-target.tsx b/packages/web/app/src/components/v2/modals/create-target.tsx
index 4f49df78a..2d2194d1b 100644
--- a/packages/web/app/src/components/v2/modals/create-target.tsx
+++ b/packages/web/app/src/components/v2/modals/create-target.tsx
@@ -2,7 +2,8 @@ import { ReactElement } from 'react';
import { useFormik } from 'formik';
import { useMutation } from 'urql';
import * as Yup from 'yup';
-import { Button, Heading, Input, Modal } from '@/components/v2';
+import { Button } from '@/components/ui/button';
+import { Heading, Input, Modal } from '@/components/v2';
import { graphql } from '@/gql';
import { useRouter } from '@tanstack/react-router';
@@ -97,10 +98,21 @@ export const CreateTargetModal = (props: {
)}
-
+
Cancel
-
+
Create Target
diff --git a/packages/web/app/src/components/v2/modals/delete-organization.tsx b/packages/web/app/src/components/v2/modals/delete-organization.tsx
index 37bf60e60..5138e0c64 100644
--- a/packages/web/app/src/components/v2/modals/delete-organization.tsx
+++ b/packages/web/app/src/components/v2/modals/delete-organization.tsx
@@ -1,6 +1,7 @@
import { ReactElement } from 'react';
import { useMutation } from 'urql';
-import { Button, Heading, Modal } from '@/components/v2';
+import { Button } from '@/components/ui/button';
+import { Heading, Modal } from '@/components/v2';
import { FragmentType, graphql } from '@/gql';
import { TrashIcon } from '@radix-ui/react-icons';
import { useRouter } from '@tanstack/react-router';
@@ -49,13 +50,13 @@ export const DeleteOrganizationModal = (props: {
-
+
Cancel
{
await mutate({
selector: {
diff --git a/packages/web/app/src/components/v2/modals/delete-project.tsx b/packages/web/app/src/components/v2/modals/delete-project.tsx
index 517a830b3..2fed89e7c 100644
--- a/packages/web/app/src/components/v2/modals/delete-project.tsx
+++ b/packages/web/app/src/components/v2/modals/delete-project.tsx
@@ -1,6 +1,7 @@
import { ReactElement } from 'react';
import { useMutation } from 'urql';
-import { Button, Heading, Modal } from '@/components/v2';
+import { Button } from '@/components/ui/button';
+import { Heading, Modal } from '@/components/v2';
import { graphql } from '@/gql';
import { TrashIcon } from '@radix-ui/react-icons';
import { useRouter } from '@tanstack/react-router';
@@ -42,13 +43,13 @@ export const DeleteProjectModal = (props: {
Are you sure you wish to delete this project? This action is irreversible!
-
+
Cancel
{
await mutate({
selector: {
diff --git a/packages/web/app/src/components/v2/modals/delete-target.tsx b/packages/web/app/src/components/v2/modals/delete-target.tsx
index 9a3562b40..858da6ecb 100644
--- a/packages/web/app/src/components/v2/modals/delete-target.tsx
+++ b/packages/web/app/src/components/v2/modals/delete-target.tsx
@@ -1,6 +1,7 @@
import { ReactElement } from 'react';
import { useMutation } from 'urql';
-import { Button, Heading, Modal } from '@/components/v2';
+import { Button } from '@/components/ui/button';
+import { Heading, Modal } from '@/components/v2';
import { graphql } from '@/gql';
import { TrashIcon } from '@radix-ui/react-icons';
import { useRouter } from '@tanstack/react-router';
@@ -49,13 +50,13 @@ export const DeleteTargetModal = ({
Are you sure you wish to delete this target? This action is irreversible!
-
+
Cancel
{
await mutate({
selector: {
diff --git a/packages/web/app/src/components/v2/modals/transfer-organization-ownership.tsx b/packages/web/app/src/components/v2/modals/transfer-organization-ownership.tsx
index 5da5dc957..1919e6095 100644
--- a/packages/web/app/src/components/v2/modals/transfer-organization-ownership.tsx
+++ b/packages/web/app/src/components/v2/modals/transfer-organization-ownership.tsx
@@ -3,7 +3,8 @@ import clsx from 'clsx';
import { useFormik } from 'formik';
import { useMutation, useQuery } from 'urql';
import * as Yup from 'yup';
-import { Button, Heading, Input, Modal } from '@/components/v2';
+import { Button } from '@/components/ui/button';
+import { Heading, Input, Modal } from '@/components/v2';
import { ArrowDownIcon, CheckIcon } from '@/components/v2/icon';
import { FragmentType, graphql, useFragment } from '@/gql';
import { useNotifications } from '@/lib/hooks';
@@ -295,13 +296,13 @@ export const TransferOrganizationOwnershipModal = ({
-
+
Cancel
handleSubmit()}
>
diff --git a/packages/web/app/src/pages/organization-transfer.tsx b/packages/web/app/src/pages/organization-transfer.tsx
index d8bc0411c..6675901d8 100644
--- a/packages/web/app/src/pages/organization-transfer.tsx
+++ b/packages/web/app/src/pages/organization-transfer.tsx
@@ -1,7 +1,7 @@
import { useCallback } from 'react';
import { useMutation, useQuery } from 'urql';
+import { Button } from '@/components/ui/button';
import { Meta } from '@/components/ui/meta';
-import { Button } from '@/components/v2/button';
import { DataWrapper } from '@/components/v2/data-wrapper';
import { graphql } from '@/gql';
import { useNotifications } from '@/lib/hooks/use-notifications';
@@ -115,7 +115,7 @@ export function OrganizationTransferPage(props: { organizationId: string; code:
Not found
-
+
Back to Hive
@@ -131,14 +131,19 @@ export function OrganizationTransferPage(props: { organizationId: string; code:
Accept
-
+
Reject
diff --git a/packages/web/app/src/pages/target-checks.tsx b/packages/web/app/src/pages/target-checks.tsx
index 2953c04ed..74495b67a 100644
--- a/packages/web/app/src/pages/target-checks.tsx
+++ b/packages/web/app/src/pages/target-checks.tsx
@@ -1,6 +1,7 @@
import { useState } from 'react';
import { useQuery } from 'urql';
import { Page, TargetLayout } from '@/components/layouts/target';
+import { Button } from '@/components/ui/button';
import { DocsLink } from '@/components/ui/docs-note';
import { EmptyList } from '@/components/ui/empty-list';
import { Label } from '@/components/ui/label';
@@ -10,7 +11,6 @@ import { QueryError } from '@/components/ui/query-error';
import { Switch } from '@/components/ui/switch';
import { TimeAgo } from '@/components/ui/time-ago';
import { Badge } from '@/components/v2/badge';
-import { Button as LegacyButton } from '@/components/v2/button';
import { graphql } from '@/gql';
import { cn } from '@/lib/utils';
import { ExternalLinkIcon } from '@radix-ui/react-icons';
@@ -149,14 +149,14 @@ const Navigation = (props: {
))}
{props.isLastPage && query.data.target.schemaChecks.pageInfo.hasNextPage && (
- {
props.onLoadMore(query.data?.target?.schemaChecks.pageInfo.endCursor ?? '');
}}
>
Load more
-
+
)}
>
)}
diff --git a/packages/web/app/src/pages/target-history.tsx b/packages/web/app/src/pages/target-history.tsx
index bf0cc62bf..70528064b 100644
--- a/packages/web/app/src/pages/target-history.tsx
+++ b/packages/web/app/src/pages/target-history.tsx
@@ -1,13 +1,13 @@
import { ReactElement, useEffect, useState } from 'react';
import { useQuery } from 'urql';
import { Page, TargetLayout } from '@/components/layouts/target';
+import { Button } from '@/components/ui/button';
import { noSchemaVersion } from '@/components/ui/empty-list';
import { Meta } from '@/components/ui/meta';
import { Subtitle, Title } from '@/components/ui/page';
import { QueryError } from '@/components/ui/query-error';
import { TimeAgo } from '@/components/ui/time-ago';
import { Badge } from '@/components/v2/badge';
-import { Button } from '@/components/v2/button';
import { graphql } from '@/gql';
import { cn } from '@/lib/utils';
import { ExternalLinkIcon } from '@radix-ui/react-icons';
diff --git a/packages/web/app/src/stories/button.stories.tsx b/packages/web/app/src/stories/button.stories.tsx
new file mode 100644
index 000000000..aeb4d5373
--- /dev/null
+++ b/packages/web/app/src/stories/button.stories.tsx
@@ -0,0 +1,149 @@
+import { ArrowBigDown, ArrowDown } from 'lucide-react';
+import { Button, ButtonProps, buttonVariants } from '@/components/ui/button';
+import type { Meta, StoryObj } from '@storybook/react';
+
+const meta: Meta = {
+ title: 'Components/Button',
+ component: Button,
+ argTypes: {
+ variant: {
+ control: { type: 'select' },
+ options: Object.keys(
+ buttonVariants({
+ variant: 'default',
+ size: 'default',
+ className: 'className',
+ }),
+ ),
+ },
+ size: {
+ control: { type: 'select' },
+ options: Object.keys(
+ buttonVariants({
+ variant: 'default',
+ size: 'default',
+ className: 'className',
+ }),
+ ),
+ },
+ asChild: {
+ control: { type: 'boolean' },
+ },
+ },
+};
+
+export default meta;
+
+type Story = StoryObj;
+
+const Template = (args: ButtonProps) => ;
+
+export const Default: Story = {
+ name: 'Default',
+ render: Template,
+ args: {
+ variant: 'default',
+ size: 'default',
+ children: 'Default Button',
+ },
+};
+
+export const Destructive: Story = {
+ name: 'Destructive',
+ render: Template,
+ args: {
+ variant: 'destructive',
+ size: 'default',
+ children: 'Destructive Button',
+ },
+};
+
+export const Outline: Story = {
+ name: 'Outline',
+ render: Template,
+ args: {
+ variant: 'outline',
+ size: 'default',
+ children: 'Outline Button',
+ },
+};
+
+export const Secondary: Story = {
+ name: 'Secondary',
+ render: Template,
+ args: {
+ variant: 'secondary',
+ size: 'default',
+ children: 'Secondary Button',
+ },
+};
+
+export const Ghost: Story = {
+ name: 'Ghost',
+ render: Template,
+ args: {
+ variant: 'ghost',
+ size: 'default',
+ children: 'Ghost Button',
+ },
+};
+
+export const Link: Story = {
+ name: 'Link',
+ render: Template,
+ args: {
+ variant: 'link',
+ size: 'default',
+ children: 'Link Button',
+ },
+};
+
+export const OrangeLink: Story = {
+ name: 'OrangeLink',
+ render: Template,
+ args: {
+ variant: 'orangeLink',
+ size: 'default',
+ children: 'Orange Link Button',
+ },
+};
+
+export const Small: Story = {
+ name: 'Small',
+ render: Template,
+ args: {
+ variant: 'default',
+ size: 'sm',
+ children: 'Small Button',
+ },
+};
+
+export const Large: Story = {
+ name: 'Large',
+ render: Template,
+ args: {
+ variant: 'default',
+ size: 'lg',
+ children: 'Large Button',
+ },
+};
+
+export const Icon: Story = {
+ name: 'Icon',
+ render: Template,
+ args: {
+ variant: 'default',
+ size: 'icon',
+ children: ,
+ },
+};
+
+export const IconSmall: Story = {
+ name: 'IconSmall',
+ render: Template,
+ args: {
+ variant: 'default',
+ size: 'icon-sm',
+ children: ,
+ },
+};
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 7f28d318e..b63256a31 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -4027,6 +4027,7 @@ packages:
'@fastify/vite@6.0.6':
resolution: {integrity: sha512-FsWJC92murm5tjeTezTTvMLyZido/ZWy0wYWpVkh/bDe1gAUAabYLB7Vp8hokXGsRE/mOpqYVsRDAKENY2qPUQ==}
+ bundledDependencies: []
'@floating-ui/core@1.2.6':
resolution: {integrity: sha512-EvYTiXet5XqweYGClEmpu3BoxmsQ4hkj3QaYA6qEnigCWffTP3vNRwBReTdrwDwo7OoJ3wM8Uoe9Uk4n+d4hfg==}
@@ -17019,10 +17020,10 @@ snapshots:
dependencies:
'@aws-crypto/sha256-browser': 3.0.0
'@aws-crypto/sha256-js': 3.0.0
- '@aws-sdk/client-sso-oidc': 3.582.0(@aws-sdk/client-sts@3.582.0)
- '@aws-sdk/client-sts': 3.582.0
+ '@aws-sdk/client-sso-oidc': 3.582.0
+ '@aws-sdk/client-sts': 3.582.0(@aws-sdk/client-sso-oidc@3.582.0)
'@aws-sdk/core': 3.582.0
- '@aws-sdk/credential-provider-node': 3.582.0(@aws-sdk/client-sso-oidc@3.582.0(@aws-sdk/client-sts@3.582.0))(@aws-sdk/client-sts@3.582.0)
+ '@aws-sdk/credential-provider-node': 3.582.0(@aws-sdk/client-sso-oidc@3.582.0)(@aws-sdk/client-sts@3.582.0(@aws-sdk/client-sso-oidc@3.582.0))
'@aws-sdk/middleware-host-header': 3.577.0
'@aws-sdk/middleware-logger': 3.577.0
'@aws-sdk/middleware-recursion-detection': 3.577.0
@@ -17127,13 +17128,13 @@ snapshots:
transitivePeerDependencies:
- aws-crt
- '@aws-sdk/client-sso-oidc@3.582.0(@aws-sdk/client-sts@3.582.0)':
+ '@aws-sdk/client-sso-oidc@3.582.0':
dependencies:
'@aws-crypto/sha256-browser': 3.0.0
'@aws-crypto/sha256-js': 3.0.0
- '@aws-sdk/client-sts': 3.582.0
+ '@aws-sdk/client-sts': 3.582.0(@aws-sdk/client-sso-oidc@3.582.0)
'@aws-sdk/core': 3.582.0
- '@aws-sdk/credential-provider-node': 3.582.0(@aws-sdk/client-sso-oidc@3.582.0(@aws-sdk/client-sts@3.582.0))(@aws-sdk/client-sts@3.582.0)
+ '@aws-sdk/credential-provider-node': 3.582.0(@aws-sdk/client-sso-oidc@3.582.0)(@aws-sdk/client-sts@3.582.0(@aws-sdk/client-sso-oidc@3.582.0))
'@aws-sdk/middleware-host-header': 3.577.0
'@aws-sdk/middleware-logger': 3.577.0
'@aws-sdk/middleware-recursion-detection': 3.577.0
@@ -17170,7 +17171,6 @@ snapshots:
'@smithy/util-utf8': 3.0.0
tslib: 2.6.2
transitivePeerDependencies:
- - '@aws-sdk/client-sts'
- aws-crt
'@aws-sdk/client-sso-oidc@3.588.0':
@@ -17304,13 +17304,13 @@ snapshots:
transitivePeerDependencies:
- aws-crt
- '@aws-sdk/client-sts@3.582.0':
+ '@aws-sdk/client-sts@3.582.0(@aws-sdk/client-sso-oidc@3.582.0)':
dependencies:
'@aws-crypto/sha256-browser': 3.0.0
'@aws-crypto/sha256-js': 3.0.0
- '@aws-sdk/client-sso-oidc': 3.582.0(@aws-sdk/client-sts@3.582.0)
+ '@aws-sdk/client-sso-oidc': 3.582.0
'@aws-sdk/core': 3.582.0
- '@aws-sdk/credential-provider-node': 3.582.0(@aws-sdk/client-sso-oidc@3.582.0(@aws-sdk/client-sts@3.582.0))(@aws-sdk/client-sts@3.582.0)
+ '@aws-sdk/credential-provider-node': 3.582.0(@aws-sdk/client-sso-oidc@3.582.0)(@aws-sdk/client-sts@3.582.0(@aws-sdk/client-sso-oidc@3.582.0))
'@aws-sdk/middleware-host-header': 3.577.0
'@aws-sdk/middleware-logger': 3.577.0
'@aws-sdk/middleware-recursion-detection': 3.577.0
@@ -17347,6 +17347,7 @@ snapshots:
'@smithy/util-utf8': 3.0.0
tslib: 2.6.2
transitivePeerDependencies:
+ - '@aws-sdk/client-sso-oidc'
- aws-crt
'@aws-sdk/client-sts@3.588.0(@aws-sdk/client-sso-oidc@3.588.0)':
@@ -17453,13 +17454,13 @@ snapshots:
'@smithy/util-stream': 3.0.1
tslib: 2.6.2
- '@aws-sdk/credential-provider-ini@3.582.0(@aws-sdk/client-sso-oidc@3.582.0(@aws-sdk/client-sts@3.582.0))(@aws-sdk/client-sts@3.582.0)':
+ '@aws-sdk/credential-provider-ini@3.582.0(@aws-sdk/client-sso-oidc@3.582.0)(@aws-sdk/client-sts@3.582.0(@aws-sdk/client-sso-oidc@3.582.0))':
dependencies:
- '@aws-sdk/client-sts': 3.582.0
+ '@aws-sdk/client-sts': 3.582.0(@aws-sdk/client-sso-oidc@3.582.0)
'@aws-sdk/credential-provider-env': 3.577.0
'@aws-sdk/credential-provider-process': 3.577.0
- '@aws-sdk/credential-provider-sso': 3.582.0(@aws-sdk/client-sso-oidc@3.582.0(@aws-sdk/client-sts@3.582.0))
- '@aws-sdk/credential-provider-web-identity': 3.577.0(@aws-sdk/client-sts@3.582.0)
+ '@aws-sdk/credential-provider-sso': 3.582.0(@aws-sdk/client-sso-oidc@3.582.0)
+ '@aws-sdk/credential-provider-web-identity': 3.577.0(@aws-sdk/client-sts@3.582.0(@aws-sdk/client-sso-oidc@3.582.0))
'@aws-sdk/types': 3.577.0
'@smithy/credential-provider-imds': 3.0.0
'@smithy/property-provider': 3.0.0
@@ -17488,14 +17489,14 @@ snapshots:
- '@aws-sdk/client-sso-oidc'
- aws-crt
- '@aws-sdk/credential-provider-node@3.582.0(@aws-sdk/client-sso-oidc@3.582.0(@aws-sdk/client-sts@3.582.0))(@aws-sdk/client-sts@3.582.0)':
+ '@aws-sdk/credential-provider-node@3.582.0(@aws-sdk/client-sso-oidc@3.582.0)(@aws-sdk/client-sts@3.582.0(@aws-sdk/client-sso-oidc@3.582.0))':
dependencies:
'@aws-sdk/credential-provider-env': 3.577.0
'@aws-sdk/credential-provider-http': 3.582.0
- '@aws-sdk/credential-provider-ini': 3.582.0(@aws-sdk/client-sso-oidc@3.582.0(@aws-sdk/client-sts@3.582.0))(@aws-sdk/client-sts@3.582.0)
+ '@aws-sdk/credential-provider-ini': 3.582.0(@aws-sdk/client-sso-oidc@3.582.0)(@aws-sdk/client-sts@3.582.0(@aws-sdk/client-sso-oidc@3.582.0))
'@aws-sdk/credential-provider-process': 3.577.0
- '@aws-sdk/credential-provider-sso': 3.582.0(@aws-sdk/client-sso-oidc@3.582.0(@aws-sdk/client-sts@3.582.0))
- '@aws-sdk/credential-provider-web-identity': 3.577.0(@aws-sdk/client-sts@3.582.0)
+ '@aws-sdk/credential-provider-sso': 3.582.0(@aws-sdk/client-sso-oidc@3.582.0)
+ '@aws-sdk/credential-provider-web-identity': 3.577.0(@aws-sdk/client-sts@3.582.0(@aws-sdk/client-sso-oidc@3.582.0))
'@aws-sdk/types': 3.577.0
'@smithy/credential-provider-imds': 3.0.0
'@smithy/property-provider': 3.0.0
@@ -17542,10 +17543,10 @@ snapshots:
'@smithy/types': 3.0.0
tslib: 2.6.2
- '@aws-sdk/credential-provider-sso@3.582.0(@aws-sdk/client-sso-oidc@3.582.0(@aws-sdk/client-sts@3.582.0))':
+ '@aws-sdk/credential-provider-sso@3.582.0(@aws-sdk/client-sso-oidc@3.582.0)':
dependencies:
'@aws-sdk/client-sso': 3.582.0
- '@aws-sdk/token-providers': 3.577.0(@aws-sdk/client-sso-oidc@3.582.0(@aws-sdk/client-sts@3.582.0))
+ '@aws-sdk/token-providers': 3.577.0(@aws-sdk/client-sso-oidc@3.582.0)
'@aws-sdk/types': 3.577.0
'@smithy/property-provider': 3.0.0
'@smithy/shared-ini-file-loader': 3.0.0
@@ -17568,9 +17569,9 @@ snapshots:
- '@aws-sdk/client-sso-oidc'
- aws-crt
- '@aws-sdk/credential-provider-web-identity@3.577.0(@aws-sdk/client-sts@3.582.0)':
+ '@aws-sdk/credential-provider-web-identity@3.577.0(@aws-sdk/client-sts@3.582.0(@aws-sdk/client-sso-oidc@3.582.0))':
dependencies:
- '@aws-sdk/client-sts': 3.582.0
+ '@aws-sdk/client-sts': 3.582.0(@aws-sdk/client-sso-oidc@3.582.0)
'@aws-sdk/types': 3.577.0
'@smithy/property-provider': 3.0.0
'@smithy/types': 3.0.0
@@ -17720,9 +17721,9 @@ snapshots:
'@smithy/types': 3.0.0
tslib: 2.6.2
- '@aws-sdk/token-providers@3.577.0(@aws-sdk/client-sso-oidc@3.582.0(@aws-sdk/client-sts@3.582.0))':
+ '@aws-sdk/token-providers@3.577.0(@aws-sdk/client-sso-oidc@3.582.0)':
dependencies:
- '@aws-sdk/client-sso-oidc': 3.582.0(@aws-sdk/client-sts@3.582.0)
+ '@aws-sdk/client-sso-oidc': 3.582.0
'@aws-sdk/types': 3.577.0
'@smithy/property-provider': 3.0.0
'@smithy/shared-ini-file-loader': 3.0.0