diff --git a/apps/start/src/components/ui/button.tsx b/apps/start/src/components/ui/button.tsx index 9f7f95f7..248770ed 100644 --- a/apps/start/src/components/ui/button.tsx +++ b/apps/start/src/components/ui/button.tsx @@ -1,4 +1,3 @@ -import { cn } from '@/utils/cn'; import { Slot } from '@radix-ui/react-slot'; import { Link, type LinkComponentProps } from '@tanstack/react-router'; import type { VariantProps } from 'class-variance-authority'; @@ -6,9 +5,10 @@ import { cva } from 'class-variance-authority'; import type { LucideIcon } from 'lucide-react'; import * as React from 'react'; import { Spinner, type SpinnerProps } from './spinner'; +import { cn } from '@/utils/cn'; const buttonVariants = cva( - 'inline-flex flex-shrink-0 select-none items-center justify-center whitespace-nowrap rounded-md font-medium ring-offset-background focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 hover:translate-y-[-0.5px] transition-all', + 'inline-flex flex-shrink-0 select-none items-center justify-center whitespace-nowrap rounded-md font-medium ring-offset-background transition-all hover:translate-y-[-0.5px] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50', { variants: { variant: { @@ -33,7 +33,7 @@ const buttonVariants = cva( variant: 'default', size: 'sm', }, - }, + } ); export interface ButtonProps @@ -52,7 +52,10 @@ export interface ButtonProps function fixHeight({ autoHeight, size, -}: { autoHeight?: boolean; size: ButtonProps['size'] }) { +}: { + autoHeight?: boolean; + size: ButtonProps['size']; +}) { if (autoHeight) { switch (size) { case 'lg': @@ -84,9 +87,10 @@ const Button = React.forwardRef( responsive, autoHeight, loadingAbsolute, + type = 'button', ...props }, - ref, + ref ) => { const Comp = asChild ? Slot : 'button'; const Icon = loading ? null : (icon ?? null); @@ -99,31 +103,32 @@ const Button = React.forwardRef( className={cn( buttonVariants({ variant, size, className }), fixHeight({ autoHeight, size }), - loadingAbsolute && 'relative', + loadingAbsolute && 'relative' )} - ref={ref} disabled={loading || disabled} + ref={ref} + type={type} {...props} > {loading && (
)} @@ -132,7 +137,7 @@ const Button = React.forwardRef( className={cn( 'h-4 w-4 flex-shrink-0', size !== 'icon' && responsive && 'mr-0 sm:mr-2', - size !== 'icon' && !responsive && 'mr-2', + size !== 'icon' && !responsive && 'mr-2' )} /> )} @@ -143,7 +148,7 @@ const Button = React.forwardRef( )} ); - }, + } ); Button.displayName = 'Button'; @@ -180,24 +185,24 @@ const LinkButton = ({ <> {loading && ( )} {Icon && ( )} diff --git a/apps/start/src/modals/add-notification-rule.tsx b/apps/start/src/modals/add-notification-rule.tsx index fd5542f3..5f3c351f 100644 --- a/apps/start/src/modals/add-notification-rule.tsx +++ b/apps/start/src/modals/add-notification-rule.tsx @@ -1,28 +1,7 @@ -import type { RouterOutputs } from '@/trpc/client'; - -import { SheetContent } from '@/components/ui/sheet'; -import { useQueryClient } from '@tanstack/react-query'; - -import { toast } from 'sonner'; -import { popModal } from '.'; -import { ModalHeader } from './Modal/Container'; - -import { ColorSquare } from '@/components/color-square'; -import { InputWithLabel, WithLabel } from '@/components/forms/input-with-label'; -import { PureFilterItem } from '@/components/report/sidebar/filters/FilterItem'; -import { Button } from '@/components/ui/button'; -import { Combobox } from '@/components/ui/combobox'; -import { ComboboxAdvanced } from '@/components/ui/combobox-advanced'; -import { ComboboxEvents } from '@/components/ui/combobox-events'; -import { Textarea } from '@/components/ui/textarea'; -import { useAppParams } from '@/hooks/use-app-params'; -import { useEventNames } from '@/hooks/use-event-names'; -import { useEventProperties } from '@/hooks/use-event-properties'; -import { useTRPC } from '@/integrations/trpc/react'; import { zodResolver } from '@hookform/resolvers/zod'; import { shortId } from '@openpanel/common'; import { zCreateNotificationRule } from '@openpanel/validation'; -import { useMutation, useQuery } from '@tanstack/react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { FilterIcon, PlusIcon, SaveIcon, TrashIcon } from 'lucide-react'; import { Controller, @@ -32,7 +11,24 @@ import { useForm, useWatch, } from 'react-hook-form'; +import { toast } from 'sonner'; import type { z } from 'zod'; +import { popModal } from '.'; +import { ModalHeader } from './Modal/Container'; +import { ColorSquare } from '@/components/color-square'; +import { InputWithLabel, WithLabel } from '@/components/forms/input-with-label'; +import { PureFilterItem } from '@/components/report/sidebar/filters/FilterItem'; +import { Button } from '@/components/ui/button'; +import { Combobox } from '@/components/ui/combobox'; +import { ComboboxAdvanced } from '@/components/ui/combobox-advanced'; +import { ComboboxEvents } from '@/components/ui/combobox-events'; +import { SheetContent } from '@/components/ui/sheet'; +import { Textarea } from '@/components/ui/textarea'; +import { useAppParams } from '@/hooks/use-app-params'; +import { useEventNames } from '@/hooks/use-event-names'; +import { useEventProperties } from '@/hooks/use-event-properties'; +import { useTRPC } from '@/integrations/trpc/react'; +import type { RouterOutputs } from '@/trpc/client'; interface Props { rule?: RouterOutputs['notification']['rules'][number]; @@ -71,21 +67,21 @@ export default function AddNotificationRule({ rule }: Props) { trpc.notification.createOrUpdateRule.mutationOptions({ onSuccess() { toast.success( - rule ? 'Notification rule updated' : 'Notification rule created', + rule ? 'Notification rule updated' : 'Notification rule created' ); client.refetchQueries( trpc.notification.rules.queryFilter({ projectId, - }), + }) ); popModal(); }, - }), + }) ); const integrationsQuery = useQuery( trpc.integration.list.queryOptions({ organizationId: organizationId!, - }), + }) ); const eventsArray = useFieldArray({ @@ -106,18 +102,18 @@ export default function AddNotificationRule({ rule }: Props) { return ( -
+ )} /> @@ -148,16 +144,15 @@ export default function AddNotificationRule({ rule }: Props) { {eventsArray.fields.map((field, index) => { return ( eventsArray.remove(index)} /> ); })} @@ -173,7 +169,6 @@ export default function AddNotificationRule({ rule }: Props) {

@@ -197,7 +192,7 @@ export default function AddNotificationRule({ rule }: Props) { profile property

  • -
    +
    And many more... profileId createdAt @@ -220,6 +215,7 @@ export default function AddNotificationRule({ rule }: Props) {
    } + label="Template" >