From 1ad422b9ddfb5e04531bc43bb11b8c8e6fcc8c84 Mon Sep 17 00:00:00 2001 From: desiprisg Date: Thu, 13 Feb 2025 17:18:50 +0200 Subject: [PATCH] chore(dashboard): Fix imports --- .../components/auth/questionnaire-form.tsx | 23 ++++----- .../create-environment-button.tsx | 7 +-- .../environments/edit-environment-sheet.tsx | 7 +-- .../edit-bridge-url-button.tsx | 14 ++++-- .../dashboard/src/components/inbox-button.tsx | 10 ++-- .../components/integration-configuration.tsx | 13 +++-- .../subscribers/subscriber-tabs.tsx | 7 +-- .../subscribers/subscribers-filters.tsx | 10 ++-- .../workflow-template-modal.tsx | 47 ++++++++++--------- .../channel-preferences-form.tsx | 28 +++++------ .../configure-workflow-form.tsx | 44 ++++++++++------- .../workflow-editor/create-workflow-form.tsx | 7 +-- .../steps/configure-step-form.tsx | 16 +++++-- .../steps/configure-step-template-form.tsx | 6 +-- .../test-workflow/test-workflow-tabs.tsx | 18 +++---- apps/dashboard/src/pages/workflows.tsx | 32 ++++++------- 16 files changed, 159 insertions(+), 130 deletions(-) diff --git a/apps/dashboard/src/components/auth/questionnaire-form.tsx b/apps/dashboard/src/components/auth/questionnaire-form.tsx index afe27cf6126..098a16d6c7d 100644 --- a/apps/dashboard/src/components/auth/questionnaire-form.tsx +++ b/apps/dashboard/src/components/auth/questionnaire-form.tsx @@ -1,6 +1,16 @@ +import { updateClerkOrgMetadata } from '@/api/organization'; +import { identifyUser } from '@/api/telemetry'; +import { StepIndicator } from '@/components/auth/shared'; import { Button } from '@/components/primitives/button'; import { CardDescription, CardTitle } from '@/components/primitives/card'; +import { FormRoot } from '@/components/primitives/form/form'; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from '@/components/primitives/select'; +import { useEnvironment, useFetchEnvironments } from '@/context/environment/hooks'; +import { useSegment } from '@/context/segment/hooks'; +import { useTelemetry } from '@/hooks/use-telemetry'; +import { hubspotCookie } from '@/utils/cookies'; +import { ROUTES } from '@/utils/routes'; +import { TelemetryEvent } from '@/utils/telemetry'; import { useOrganization, useUser } from '@clerk/clerk-react'; import { CompanySizeEnum, JobTitleEnum, jobTitleToLabelMapper, OrganizationTypeEnum } from '@novu/shared'; import { useMutation } from '@tanstack/react-query'; @@ -8,15 +18,6 @@ import { AnimatePresence, motion } from 'motion/react'; import React from 'react'; import { Controller, useForm } from 'react-hook-form'; import { useNavigate } from 'react-router-dom'; -import { updateClerkOrgMetadata } from '../../api/organization'; -import { identifyUser } from '../../api/telemetry'; -import { useEnvironment, useFetchEnvironments } from '../../context/environment/hooks'; -import { useSegment } from '../../context/segment'; -import { useTelemetry } from '../../hooks/use-telemetry'; -import { hubspotCookie } from '../../utils/cookies'; -import { ROUTES } from '../../utils/routes'; -import { TelemetryEvent } from '../../utils/telemetry'; -import { StepIndicator } from './shared'; interface QuestionnaireFormData { jobTitle: JobTitleEnum; @@ -94,7 +95,7 @@ export function QuestionnaireForm() { -
+
@@ -216,7 +217,7 @@ export function QuestionnaireForm() { )} - +
diff --git a/apps/dashboard/src/components/environments/create-environment-button.tsx b/apps/dashboard/src/components/environments/create-environment-button.tsx index 958364b2a66..c11e1e1d334 100644 --- a/apps/dashboard/src/components/environments/create-environment-button.tsx +++ b/apps/dashboard/src/components/environments/create-environment-button.tsx @@ -7,6 +7,7 @@ import { FormItem, FormLabel, FormMessage, + FormRoot, } from '@/components/primitives/form/form'; import { Separator } from '@/components/primitives/separator'; import { @@ -58,7 +59,7 @@ function getRandomColor(existingEnvironments: IEnvironment[] = []) { const createEnvironmentSchema = z.object({ name: z.string().min(1, 'Name is required'), - color: z.string().regex(/^\#[0-9a-fA-F]{6}$/, 'Enter a valid hex color, like #123456.'), + color: z.string().regex(/^#[0-9a-fA-F]{6}$/, 'Enter a valid hex color, like #123456.'), }); type CreateEnvironmentFormData = z.infer; @@ -126,7 +127,7 @@ export const CreateEnvironmentButton = (props: CreateEnvironmentButtonProps) =>
- )} /> -
+
diff --git a/apps/dashboard/src/components/environments/edit-environment-sheet.tsx b/apps/dashboard/src/components/environments/edit-environment-sheet.tsx index 9ca935cf517..e63b4b4cdd4 100644 --- a/apps/dashboard/src/components/environments/edit-environment-sheet.tsx +++ b/apps/dashboard/src/components/environments/edit-environment-sheet.tsx @@ -7,6 +7,7 @@ import { FormItem, FormLabel, FormMessage, + FormRoot, } from '@/components/primitives/form/form'; import { Separator } from '@/components/primitives/separator'; import { @@ -32,7 +33,7 @@ import { showErrorToast, showSuccessToast } from '../primitives/sonner-helpers'; // TODO: Merge with CreateEnvironmentButton const editEnvironmentSchema = z.object({ name: z.string().min(1, 'Name is required'), - color: z.string().regex(/^\#[0-9a-fA-F]{6}$/, 'Enter a valid hex color, like #123456.'), + color: z.string().regex(/^#[0-9a-fA-F]{6}$/, 'Enter a valid hex color, like #123456.'), }); type EditEnvironmentFormData = z.infer; @@ -96,7 +97,7 @@ export const EditEnvironmentSheet = ({ environment, isOpen, onOpenChange }: Edit
- )} /> -
+
diff --git a/apps/dashboard/src/components/header-navigation/edit-bridge-url-button.tsx b/apps/dashboard/src/components/header-navigation/edit-bridge-url-button.tsx index 2e4991b5a54..aa9c91e59d3 100644 --- a/apps/dashboard/src/components/header-navigation/edit-bridge-url-button.tsx +++ b/apps/dashboard/src/components/header-navigation/edit-bridge-url-button.tsx @@ -4,7 +4,15 @@ import { useForm } from 'react-hook-form'; import { RiLinkM, RiPencilFill } from 'react-icons/ri'; import * as z from 'zod'; -import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/components/primitives/form/form'; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, + FormRoot, +} from '@/components/primitives/form/form'; import { useEnvironment } from '@/context/environment/hooks'; import { useFetchBridgeHealthCheck } from '@/hooks/use-fetch-bridge-health-check'; import { useUpdateBridgeUrl } from '@/hooks/use-update-bridge-url'; @@ -77,7 +85,7 @@ export const EditBridgeUrlButton = () => {
- +
{ Update endpoint
- +
diff --git a/apps/dashboard/src/components/inbox-button.tsx b/apps/dashboard/src/components/inbox-button.tsx index b84e6b8a2a1..8bd15c23efa 100644 --- a/apps/dashboard/src/components/inbox-button.tsx +++ b/apps/dashboard/src/components/inbox-button.tsx @@ -1,12 +1,12 @@ -import { Popover, PopoverContent, PopoverTrigger, PopoverPortal } from '@/components/primitives/popover'; +import { Popover, PopoverContent, PopoverPortal, PopoverTrigger } from '@/components/primitives/popover'; import { API_HOSTNAME, APP_ID, WEBSOCKET_HOSTNAME } from '@/config'; +import { useEnvironment } from '@/context/environment/hooks'; +import { useTestPage } from '@/hooks/use-test-page'; import { useUser } from '@clerk/clerk-react'; import { Bell, Inbox, InboxContent, useNovu } from '@novu/react'; -import { InboxBellFilled } from './icons/inbox-bell-filled'; +import { useEffect, useState } from 'react'; import { HeaderButton } from './header-navigation/header-button'; -import { useState, useEffect } from 'react'; -import { useEnvironment } from '../context/environment/hooks'; -import { useTestPage } from '@/hooks/use-test-page'; +import { InboxBellFilled } from './icons/inbox-bell-filled'; const InboxInner = () => { const [open, setOpen] = useState(false); diff --git a/apps/dashboard/src/components/integrations/components/integration-configuration.tsx b/apps/dashboard/src/components/integrations/components/integration-configuration.tsx index e07123abfef..d43aee7ae85 100644 --- a/apps/dashboard/src/components/integrations/components/integration-configuration.tsx +++ b/apps/dashboard/src/components/integrations/components/integration-configuration.tsx @@ -1,21 +1,20 @@ -import { ChannelTypeEnum, IProviderConfig } from '@novu/shared'; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/primitives/accordion'; -import { Form } from '@/components/primitives/form/form'; +import { Form, FormRoot } from '@/components/primitives/form/form'; import { Label } from '@/components/primitives/label'; import { Separator } from '@/components/primitives/separator'; import { useEnvironment } from '@/context/environment/hooks'; -import { IIntegration } from '@novu/shared'; +import { ROUTES } from '@/utils/routes'; +import { ChannelTypeEnum, IIntegration, IProviderConfig } from '@novu/shared'; import { useEffect } from 'react'; import { useForm, useWatch } from 'react-hook-form'; import { RiInputField } from 'react-icons/ri'; +import { useNavigate } from 'react-router-dom'; import { InlineToast } from '../../../components/primitives/inline-toast'; import { cn } from '../../../utils/ui'; import { EnvironmentDropdown } from '../../side-navigation/environment-dropdown'; import { CredentialsSection } from './integration-credentials'; import { GeneralSettings } from './integration-general-settings'; import { isDemoIntegration } from './utils/helpers'; -import { useNavigate } from 'react-router-dom'; -import { ROUTES } from '@/utils/routes'; type IntegrationFormData = { name: string; @@ -94,7 +93,7 @@ export function IntegrationConfiguration({ return (
- +
)} - +
); } diff --git a/apps/dashboard/src/components/subscribers/subscriber-tabs.tsx b/apps/dashboard/src/components/subscribers/subscriber-tabs.tsx index f3c0abe03a0..0e79498ae2a 100644 --- a/apps/dashboard/src/components/subscribers/subscriber-tabs.tsx +++ b/apps/dashboard/src/components/subscribers/subscriber-tabs.tsx @@ -1,6 +1,9 @@ +import { Separator } from '@/components/primitives/separator'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/primitives/tabs'; import { Preferences } from '@/components/subscribers/preferences/preferences'; import { PreferencesSkeleton } from '@/components/subscribers/preferences/preferences-skeleton'; import { SubscriberActivity } from '@/components/subscribers/subscriber-activity'; +import { SubscriberOverviewForm } from '@/components/subscribers/subscriber-overview-form'; import { SubscriberOverviewSkeleton } from '@/components/subscribers/subscriber-overview-skeleton'; import TruncatedText from '@/components/truncated-text'; import { useFetchSubscriber } from '@/hooks/use-fetch-subscriber'; @@ -8,9 +11,6 @@ import useFetchSubscriberPreferences from '@/hooks/use-fetch-subscriber-preferen import { useFormProtection } from '@/hooks/use-form-protection'; import { useState } from 'react'; import { RiGroup2Line } from 'react-icons/ri'; -import { Separator } from '../primitives/separator'; -import { Tabs, TabsContent, TabsList, TabsTrigger } from '../primitives/tabs'; -import { SubscriberOverviewForm } from './subscriber-overview-form'; type SubscriberOverviewProps = { subscriberId: string; @@ -100,6 +100,7 @@ export function SubscriberTabs(props: SubscriberTabsProps) { + ); diff --git a/apps/dashboard/src/components/subscribers/subscribers-filters.tsx b/apps/dashboard/src/components/subscribers/subscribers-filters.tsx index da4f794a616..721bee78c00 100644 --- a/apps/dashboard/src/components/subscribers/subscribers-filters.tsx +++ b/apps/dashboard/src/components/subscribers/subscribers-filters.tsx @@ -1,10 +1,10 @@ +import { Button } from '@/components/primitives/button'; +import { FacetedFormFilter } from '@/components/primitives/form/faceted-filter/facated-form-filter'; +import { Form, FormField, FormItem, FormRoot } from '@/components/primitives/form/form'; import { defaultSubscribersFilter, SubscribersFilter } from '@/hooks/use-subscribers-url-state'; import { cn } from '@/utils/ui'; import { HTMLAttributes, useEffect, useMemo } from 'react'; import { useForm } from 'react-hook-form'; -import { Button } from '../primitives/button'; -import { FacetedFormFilter } from '../primitives/form/faceted-filter/facated-form-filter'; -import { Form, FormField, FormItem } from '../primitives/form/form'; export type SubscribersFiltersProps = HTMLAttributes & { onFiltersChange: (filter: SubscribersFilter) => void; @@ -44,7 +44,7 @@ export function SubscribersFilters(props: SubscribersFiltersProps) { return (
- + )} - +
); } diff --git a/apps/dashboard/src/components/template-store/workflow-template-modal.tsx b/apps/dashboard/src/components/template-store/workflow-template-modal.tsx index 79d621a6171..f455c3e5b2c 100644 --- a/apps/dashboard/src/components/template-store/workflow-template-modal.tsx +++ b/apps/dashboard/src/components/template-store/workflow-template-modal.tsx @@ -1,32 +1,33 @@ +import { RouteFill } from '@/components/icons/route-fill'; +import { + Breadcrumb, + BreadcrumbItem, + BreadcrumbList, + BreadcrumbPage, + BreadcrumbSeparator, +} from '@/components/primitives/breadcrumb'; +import { Button } from '@/components/primitives/button'; +import { CompactButton } from '@/components/primitives/button-compact'; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTrigger } from '@/components/primitives/dialog'; +import { Form, FormRoot } from '@/components/primitives/form/form'; +import { WorkflowResults } from '@/components/template-store/components/workflow-results'; +import { getTemplates } from '@/components/template-store/templates'; +import { IWorkflowSuggestion } from '@/components/template-store/templates/types'; +import { WorkflowMode } from '@/components/template-store/types'; +import { WorkflowSidebar } from '@/components/template-store/workflow-sidebar'; +import TruncatedText from '@/components/truncated-text'; +import { CreateWorkflowForm } from '@/components/workflow-editor/create-workflow-form'; +import { workflowSchema } from '@/components/workflow-editor/schema'; +import { WorkflowCanvas } from '@/components/workflow-editor/workflow-canvas'; +import { useCreateWorkflow } from '@/hooks/use-create-workflow'; import { useTelemetry } from '@/hooks/use-telemetry'; +import { buildRoute, ROUTES } from '@/utils/routes'; import { TelemetryEvent } from '@/utils/telemetry'; import { ComponentProps, useEffect, useState } from 'react'; import { useForm } from 'react-hook-form'; import { RiArrowLeftSLine } from 'react-icons/ri'; import { useNavigate, useParams, useSearchParams } from 'react-router-dom'; import { z } from 'zod'; -import { useCreateWorkflow } from '../../hooks/use-create-workflow'; -import { buildRoute, ROUTES } from '../../utils/routes'; -import { RouteFill } from '../icons'; -import { - Breadcrumb, - BreadcrumbItem, - BreadcrumbList, - BreadcrumbPage, - BreadcrumbSeparator, -} from '../primitives/breadcrumb'; -import { Button } from '../primitives/button'; -import { CompactButton } from '../primitives/button-compact'; -import { Form } from '../primitives/form/form'; -import TruncatedText from '../truncated-text'; -import { CreateWorkflowForm } from '../workflow-editor/create-workflow-form'; -import { workflowSchema } from '../workflow-editor/schema'; -import { WorkflowCanvas } from '../workflow-editor/workflow-canvas'; -import { WorkflowResults } from './components/workflow-results'; -import { getTemplates, IWorkflowSuggestion } from './templates'; -import { WorkflowMode } from './types'; -import { WorkflowSidebar } from './workflow-sidebar'; const WORKFLOW_TEMPLATES = getTemplates(); @@ -159,13 +160,13 @@ export function WorkflowTemplateModal(props: WorkflowTemplateModalProps) { {!selectedTemplate ? (
- +

{getHeaderText()}

- +
) : ( diff --git a/apps/dashboard/src/components/workflow-editor/channel-preferences-form.tsx b/apps/dashboard/src/components/workflow-editor/channel-preferences-form.tsx index 8a3b3785b41..71101d76408 100644 --- a/apps/dashboard/src/components/workflow-editor/channel-preferences-form.tsx +++ b/apps/dashboard/src/components/workflow-editor/channel-preferences-form.tsx @@ -7,6 +7,16 @@ import { RiArrowLeftSLine, RiCloseFill, RiInformationFill } from 'react-icons/ri import { Link } from 'react-router-dom'; import { z } from 'zod'; +import { STEP_TYPE_TO_ICON } from '@/components/icons/utils'; +import { PageMeta } from '@/components/page-meta'; +import { CompactButton } from '@/components/primitives/button-compact'; +import { Card, CardContent } from '@/components/primitives/card'; +import { Checkbox } from '@/components/primitives/checkbox'; +import { Form, FormControl, FormField, FormItem, FormLabel, FormRoot } from '@/components/primitives/form/form'; +import { Separator } from '@/components/primitives/separator'; +import { Step } from '@/components/primitives/step'; +import { Switch } from '@/components/primitives/switch'; +import { Tooltip, TooltipContent, TooltipTrigger } from '@/components/primitives/tooltip'; import { SidebarContent, SidebarHeader } from '@/components/side-navigation/sidebar'; import { UserPreferencesFormSchema } from '@/components/workflow-editor/schema'; import { UpdateWorkflowFn } from '@/components/workflow-editor/workflow-provider'; @@ -16,16 +26,6 @@ import { StepTypeEnum, WorkflowOriginEnum } from '@/utils/enums'; import { capitalize } from '@/utils/string'; import { TelemetryEvent } from '@/utils/telemetry'; import { cn } from '@/utils/ui'; -import { STEP_TYPE_TO_ICON } from '../icons/utils'; -import { PageMeta } from '../page-meta'; -import { CompactButton } from '../primitives/button-compact'; -import { Card, CardContent } from '../primitives/card'; -import { Checkbox } from '../primitives/checkbox'; -import { Form, FormControl, FormField, FormItem, FormLabel } from '../primitives/form/form'; -import { Separator } from '../primitives/separator'; -import { Step } from '../primitives/step'; -import { Switch } from '../primitives/switch'; -import { Tooltip, TooltipContent, TooltipTrigger } from '../primitives/tooltip'; type ConfigureWorkflowFormProps = { workflow: WorkflowResponseDto; @@ -198,7 +198,7 @@ export const ChannelPreferencesForm = (props: ConfigureWorkflowFormProps) => { {/* This doesn't needs to be a form, but using it as a form allows to re-use the formItem designs without duplicating the same styles */}
- + { )} /> - +
)}
- + { })} - +
{!isDashboardWorkflow && override && ( diff --git a/apps/dashboard/src/components/workflow-editor/configure-workflow-form.tsx b/apps/dashboard/src/components/workflow-editor/configure-workflow-form.tsx index d42f284d82f..03822f793cc 100644 --- a/apps/dashboard/src/components/workflow-editor/configure-workflow-form.tsx +++ b/apps/dashboard/src/components/workflow-editor/configure-workflow-form.tsx @@ -5,7 +5,14 @@ import { useNavigate } from 'react-router-dom'; import type { ExternalToast } from 'sonner'; import { z } from 'zod'; +import { ConfirmationModal } from '@/components/confirmation-modal'; +import { DeleteWorkflowDialog } from '@/components/delete-workflow-dialog'; +import { RouteFill } from '@/components/icons/route-fill'; +import { PageMeta } from '@/components/page-meta'; import { PAUSE_MODAL_TITLE, PauseModalDescription } from '@/components/pause-workflow-dialog'; +import { Button } from '@/components/primitives/button'; +import { CompactButton } from '@/components/primitives/button-compact'; +import { CopyButton } from '@/components/primitives/copy-button'; import { DropdownMenu, DropdownMenuContent, @@ -18,8 +25,24 @@ import { DropdownMenuSubTrigger, DropdownMenuTrigger, } from '@/components/primitives/dropdown-menu'; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, + FormRoot, +} from '@/components/primitives/form/form'; +import { Input } from '@/components/primitives/input'; +import { Separator } from '@/components/primitives/separator'; import { ToastIcon } from '@/components/primitives/sonner'; import { showToast } from '@/components/primitives/sonner-helpers'; +import { Switch } from '@/components/primitives/switch'; +import { TagInput } from '@/components/primitives/tag-input'; +import { Textarea } from '@/components/primitives/textarea'; +import { Tooltip, TooltipContent, TooltipPortal, TooltipTrigger } from '@/components/primitives/tooltip'; +import { usePromotionalBanner } from '@/components/promotional/coming-soon-banner'; import { SidebarContent, SidebarHeader } from '@/components/side-navigation/sidebar'; import { MAX_DESCRIPTION_LENGTH, workflowSchema } from '@/components/workflow-editor/schema'; import { UpdateWorkflowFn } from '@/components/workflow-editor/workflow-provider'; @@ -30,6 +53,7 @@ import { useFormAutosave } from '@/hooks/use-form-autosave'; import { useSyncWorkflow } from '@/hooks/use-sync-workflow'; import { useTags } from '@/hooks/use-tags'; import { ROUTES } from '@/utils/routes'; +import { TelemetryEvent } from '@/utils/telemetry'; import { cn } from '@/utils/ui'; import { zodResolver } from '@hookform/resolvers/zod'; import { WorkflowOriginEnum, WorkflowResponseDto } from '@novu/shared'; @@ -42,22 +66,6 @@ import { RiSettingsLine, } from 'react-icons/ri'; import { Link } from 'react-router-dom'; -import { TelemetryEvent } from '../../utils/telemetry'; -import { ConfirmationModal } from '../confirmation-modal'; -import { DeleteWorkflowDialog } from '../delete-workflow-dialog'; -import { RouteFill } from '../icons'; -import { PageMeta } from '../page-meta'; -import { Button } from '../primitives/button'; -import { CompactButton } from '../primitives/button-compact'; -import { CopyButton } from '../primitives/copy-button'; -import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '../primitives/form/form'; -import { Input } from '../primitives/input'; -import { Separator } from '../primitives/separator'; -import { Switch } from '../primitives/switch'; -import { TagInput } from '../primitives/tag-input'; -import { Textarea } from '../primitives/textarea'; -import { Tooltip, TooltipContent, TooltipPortal, TooltipTrigger } from '../primitives/tooltip'; -import { usePromotionalBanner } from '../promotional/coming-soon-banner'; type ConfigureWorkflowFormProps = { workflow: WorkflowResponseDto; @@ -264,7 +272,7 @@ export const ConfigureWorkflowForm = (props: ConfigureWorkflowFormProps) => {
- + { )} /> - +
diff --git a/apps/dashboard/src/components/workflow-editor/create-workflow-form.tsx b/apps/dashboard/src/components/workflow-editor/create-workflow-form.tsx index 61d88aff92d..48e7a84b7d4 100644 --- a/apps/dashboard/src/components/workflow-editor/create-workflow-form.tsx +++ b/apps/dashboard/src/components/workflow-editor/create-workflow-form.tsx @@ -6,16 +6,17 @@ import { FormItem, FormLabel, FormMessage, + FormRoot, } from '@/components/primitives/form/form'; import { Separator } from '@/components/primitives/separator'; import { TagInput } from '@/components/primitives/tag-input'; import { Textarea } from '@/components/primitives/textarea'; +import { MAX_DESCRIPTION_LENGTH, MAX_TAG_ELEMENTS, workflowSchema } from '@/components/workflow-editor/schema'; import { useTags } from '@/hooks/use-tags'; import { zodResolver } from '@hookform/resolvers/zod'; import { type CreateWorkflowDto, slugify } from '@novu/shared'; import { useForm } from 'react-hook-form'; import { z } from 'zod'; -import { MAX_DESCRIPTION_LENGTH, MAX_TAG_ELEMENTS, workflowSchema } from './schema'; interface CreateWorkflowFormProps { onSubmit: (values: z.infer) => void; @@ -38,7 +39,7 @@ export function CreateWorkflowForm({ onSubmit, template }: CreateWorkflowFormPro return (
- )} /> -
+ ); } diff --git a/apps/dashboard/src/components/workflow-editor/steps/configure-step-form.tsx b/apps/dashboard/src/components/workflow-editor/steps/configure-step-form.tsx index 537ca0a8aa6..cdd744344c0 100644 --- a/apps/dashboard/src/components/workflow-editor/steps/configure-step-form.tsx +++ b/apps/dashboard/src/components/workflow-editor/steps/configure-step-form.tsx @@ -17,8 +17,17 @@ import { z } from 'zod'; import { ConfirmationModal } from '@/components/confirmation-modal'; import { PageMeta } from '@/components/page-meta'; import { Button } from '@/components/primitives/button'; +import { CompactButton } from '@/components/primitives/button-compact'; import { CopyButton } from '@/components/primitives/copy-button'; -import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from '@/components/primitives/form/form'; +import { + Form, + FormControl, + FormField, + FormItem, + FormLabel, + FormMessage, + FormRoot, +} from '@/components/primitives/form/form'; import { Input } from '@/components/primitives/input'; import { Separator } from '@/components/primitives/separator'; import { SidebarContent, SidebarFooter, SidebarHeader } from '@/components/side-navigation/sidebar'; @@ -44,7 +53,6 @@ import { UpdateWorkflowFn } from '@/components/workflow-editor/workflow-provider import { useFormAutosave } from '@/hooks/use-form-autosave'; import { INLINE_CONFIGURABLE_STEP_TYPES, STEP_TYPE_LABELS, TEMPLATE_CONFIGURABLE_STEP_TYPES } from '@/utils/constants'; import { buildRoute, ROUTES } from '@/utils/routes'; -import { CompactButton } from '../../primitives/button-compact'; const STEP_TYPE_TO_INLINE_CONTROL_VALUES: Record React.JSX.Element | null> = { [StepTypeEnum.DELAY]: DelayControlValues, @@ -233,7 +241,7 @@ export const ConfigureStepForm = (props: ConfigureStepFormProps) => {
- + { {isInlineConfigurableStep && !hasCustomControls && } - +
{(isTemplateConfigurableStep || isInlineConfigurableStepWithCustomControls) && ( diff --git a/apps/dashboard/src/components/workflow-editor/steps/configure-step-template-form.tsx b/apps/dashboard/src/components/workflow-editor/steps/configure-step-template-form.tsx index bfc606723ae..b54ce727cb6 100644 --- a/apps/dashboard/src/components/workflow-editor/steps/configure-step-template-form.tsx +++ b/apps/dashboard/src/components/workflow-editor/steps/configure-step-template-form.tsx @@ -2,7 +2,7 @@ import { type StepResponseDto, StepTypeEnum, StepUpdateDto, type WorkflowRespons import { useCallback, useEffect, useMemo } from 'react'; import { useForm } from 'react-hook-form'; -import { Form } from '@/components/primitives/form/form'; +import { Form, FormRoot } from '@/components/primitives/form/form'; import { getStepDefaultValues } from '@/components/workflow-editor/step-default-values'; import { flattenIssues, updateStepInWorkflow } from '@/components/workflow-editor/step-utils'; import { ChatTabs } from '@/components/workflow-editor/steps/chat/chat-tabs'; @@ -94,11 +94,11 @@ export const ConfigureStepTemplateForm = (props: ConfigureStepTemplateFormProps) return (
- + - +
); }; diff --git a/apps/dashboard/src/components/workflow-editor/test-workflow/test-workflow-tabs.tsx b/apps/dashboard/src/components/workflow-editor/test-workflow/test-workflow-tabs.tsx index 8227e0c7ab5..e890a2f467d 100644 --- a/apps/dashboard/src/components/workflow-editor/test-workflow/test-workflow-tabs.tsx +++ b/apps/dashboard/src/components/workflow-editor/test-workflow/test-workflow-tabs.tsx @@ -1,5 +1,12 @@ +import { Button } from '@/components/primitives/button'; +import { Form, FormRoot } from '@/components/primitives/form/form'; import { ResizableHandle, ResizablePanel, ResizablePanelGroup } from '@/components/primitives/resizable'; import { ToastClose, ToastIcon } from '@/components/primitives/sonner'; +import { showToast } from '@/components/primitives/sonner-helpers'; +import { Tabs, TabsContent, TabsList, TabsTrigger } from '@/components/primitives/tabs'; +import { buildDynamicFormSchema, TestWorkflowFormType } from '@/components/workflow-editor/schema'; +import { TestWorkflowForm } from '@/components/workflow-editor/test-workflow/test-workflow-form'; +import { TestWorkflowLogsSidebar } from '@/components/workflow-editor/test-workflow/test-workflow-logs-sidebar'; import { useFetchWorkflow } from '@/hooks/use-fetch-workflow'; import { useTriggerWorkflow } from '@/hooks/use-trigger-workflow'; import { buildRoute, ROUTES } from '@/utils/routes'; @@ -10,13 +17,6 @@ import { useForm } from 'react-hook-form'; import { RiPlayCircleLine } from 'react-icons/ri'; import { Link, useParams } from 'react-router-dom'; import { toast } from 'sonner'; -import { Button } from '../../primitives/button'; -import { Form } from '../../primitives/form/form'; -import { showToast } from '../../primitives/sonner-helpers'; -import { Tabs, TabsContent, TabsList, TabsTrigger } from '../../primitives/tabs'; -import { buildDynamicFormSchema, TestWorkflowFormType } from '../schema'; -import { TestWorkflowForm } from './test-workflow-form'; -import { TestWorkflowLogsSidebar } from './test-workflow-logs-sidebar'; export const TestWorkflowTabs = ({ testData }: { testData?: WorkflowTestDataResponseDto }) => { const { environmentSlug = '', workflowSlug = '' } = useParams<{ environmentSlug: string; workflowSlug: string }>(); @@ -73,7 +73,7 @@ export const TestWorkflowTabs = ({ testData }: { testData?: WorkflowTestDataResp return (
- + @@ -125,7 +125,7 @@ export const TestWorkflowTabs = ({ testData }: { testData?: WorkflowTestDataResp - +
); diff --git a/apps/dashboard/src/pages/workflows.tsx b/apps/dashboard/src/pages/workflows.tsx index 79858a7a42c..334c0784f22 100644 --- a/apps/dashboard/src/pages/workflows.tsx +++ b/apps/dashboard/src/pages/workflows.tsx @@ -2,11 +2,25 @@ import { DashboardLayout } from '@/components/dashboard-layout'; import { OptInModal } from '@/components/opt-in-modal'; import { PageMeta } from '@/components/page-meta'; import { Button } from '@/components/primitives/button'; +import { ButtonGroupItem, ButtonGroupRoot } from '@/components/primitives/button-group'; +import { LinkButton } from '@/components/primitives/button-link'; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuItem, + DropdownMenuTrigger, +} from '@/components/primitives/dropdown-menu'; +import { Form, FormField, FormItem, FormRoot } from '@/components/primitives/form/form'; import { Input } from '@/components/primitives/input'; import { ScrollArea, ScrollBar } from '@/components/primitives/scroll-area'; +import { getTemplates, WorkflowTemplate } from '@/components/template-store/templates'; +import { WorkflowCard } from '@/components/template-store/workflow-card'; +import { WorkflowTemplateModal } from '@/components/template-store/workflow-template-modal'; +import { SortableColumn, WorkflowList } from '@/components/workflow-list'; import { useDebounce } from '@/hooks/use-debounce'; import { useFetchWorkflows } from '@/hooks/use-fetch-workflows'; import { useTelemetry } from '@/hooks/use-telemetry'; +import { buildRoute, ROUTES } from '@/utils/routes'; import { TelemetryEvent } from '@/utils/telemetry'; import { DirectionEnum, StepTypeEnum } from '@novu/shared'; import { useEffect } from 'react'; @@ -20,20 +34,6 @@ import { RiSearchLine, } from 'react-icons/ri'; import { Outlet, useNavigate, useParams, useSearchParams } from 'react-router-dom'; -import { ButtonGroupItem, ButtonGroupRoot } from '../components/primitives/button-group'; -import { LinkButton } from '../components/primitives/button-link'; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuItem, - DropdownMenuTrigger, -} from '../components/primitives/dropdown-menu'; -import { Form, FormField, FormItem } from '../components/primitives/form/form'; -import { getTemplates, WorkflowTemplate } from '../components/template-store/templates'; -import { WorkflowCard } from '../components/template-store/workflow-card'; -import { WorkflowTemplateModal } from '../components/template-store/workflow-template-modal'; -import { SortableColumn, WorkflowList } from '../components/workflow-list'; -import { buildRoute, ROUTES } from '../utils/routes'; interface WorkflowFilters { query: string; @@ -124,7 +124,7 @@ export const WorkflowsPage = () => {
- + { )} /> - +