diff --git a/src/components/application/app-navigation/base-components/nav-item.tsx b/src/components/application/app-navigation/base-components/nav-item.tsx index ad62a38..7677ad6 100644 --- a/src/components/application/app-navigation/base-components/nav-item.tsx +++ b/src/components/application/app-navigation/base-components/nav-item.tsx @@ -1,4 +1,4 @@ -import type { FC, HTMLAttributes, MouseEventHandler, ReactNode } from "react"; +import type { FC, MouseEventHandler, ReactNode } from "react"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faChevronDown, faArrowUpRightFromSquare } from "@fortawesome/pro-duotone-svg-icons"; import { Link as AriaLink } from "react-aria-components"; @@ -20,7 +20,7 @@ interface NavItemBaseProps { /** Type of the nav item. */ type: "link" | "collapsible" | "collapsible-child"; /** Icon component to display. */ - icon?: FC>; + icon?: FC>; /** Badge to display. */ badge?: ReactNode; /** Whether the nav item is currently active. */ diff --git a/src/components/application/app-navigation/config.ts b/src/components/application/app-navigation/config.ts index 4f3b1ac..6364953 100644 --- a/src/components/application/app-navigation/config.ts +++ b/src/components/application/app-navigation/config.ts @@ -6,11 +6,11 @@ export type NavItemType = { /** URL to navigate to when the nav item is clicked. */ href?: string; /** Icon component to display. */ - icon?: FC<{ className?: string }>; + icon?: FC>; /** Badge to display. */ badge?: ReactNode; /** List of sub-items to display. */ - items?: { label: string; href: string; icon?: FC<{ className?: string }>; badge?: ReactNode }[]; + items?: { label: string; href: string; icon?: FC>; badge?: ReactNode }[]; /** Whether this nav item is a divider. */ divider?: boolean; }; diff --git a/src/components/call-desk/appointment-form.tsx b/src/components/call-desk/appointment-form.tsx index 7d320c0..f312cdc 100644 --- a/src/components/call-desk/appointment-form.tsx +++ b/src/components/call-desk/appointment-form.tsx @@ -1,10 +1,9 @@ import { useState, useEffect } from 'react'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faCalendarPlus, faXmark } from '@fortawesome/pro-duotone-svg-icons'; -import type { FC, HTMLAttributes } from 'react'; +import { faIcon } from '@/lib/icon-wrapper'; -const CalendarPlus02: FC> = ({ className }) => ; -const XClose: FC<{ className?: string }> = ({ className }) => ; +const CalendarPlus02 = faIcon(faCalendarPlus); +const XClose = faIcon(faXmark); import { Input } from '@/components/base/input/input'; import { Select } from '@/components/base/select/select'; import { TextArea } from '@/components/base/textarea/textarea'; diff --git a/src/components/call-desk/call-widget.tsx b/src/components/call-desk/call-widget.tsx index e5ce7c9..944864c 100644 --- a/src/components/call-desk/call-widget.tsx +++ b/src/components/call-desk/call-widget.tsx @@ -1,5 +1,4 @@ import { useState, useEffect, useRef } from 'react'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faPhone, faPhoneArrowDown, @@ -13,19 +12,19 @@ import { faFloppyDisk, faCalendarPlus, } from '@fortawesome/pro-duotone-svg-icons'; -import type { FC, HTMLAttributes } from 'react'; +import { faIcon } from '@/lib/icon-wrapper'; -const Phone01: FC> = ({ className }) => ; -const PhoneIncoming01: FC> = ({ className }) => ; -const PhoneOutgoing01: FC> = ({ className }) => ; -const PhoneHangUp: FC> = ({ className }) => ; -const PhoneX: FC> = ({ className }) => ; -const MicrophoneOff01: FC> = ({ className }) => ; -const Microphone01: FC> = ({ className }) => ; -const PauseCircle: FC> = ({ className }) => ; -const CheckCircle: FC> = ({ className }) => ; -const Save01: FC> = ({ className }) => ; -const CalendarPlus02: FC> = ({ className }) => ; +const Phone01 = faIcon(faPhone); +const PhoneIncoming01 = faIcon(faPhoneArrowDown); +const PhoneOutgoing01 = faIcon(faPhoneArrowUp); +const PhoneHangUp = faIcon(faPhoneHangup); +const PhoneX = faIcon(faPhoneXmark); +const MicrophoneOff01 = faIcon(faMicrophoneSlash); +const Microphone01 = faIcon(faMicrophone); +const PauseCircle = faIcon(faPause); +const CheckCircle = faIcon(faCircleCheck); +const Save01 = faIcon(faFloppyDisk); +const CalendarPlus02 = faIcon(faCalendarPlus); import { Button } from '@/components/base/buttons/button'; import { TextArea } from '@/components/base/textarea/textarea'; import { AppointmentForm } from '@/components/call-desk/appointment-form'; diff --git a/src/components/call-desk/worklist-panel.tsx b/src/components/call-desk/worklist-panel.tsx index 6c1199d..903a649 100644 --- a/src/components/call-desk/worklist-panel.tsx +++ b/src/components/call-desk/worklist-panel.tsx @@ -1,10 +1,9 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react'; -import type { FC, HTMLAttributes } from 'react'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faPhoneArrowDown, faPhoneArrowUp, faMagnifyingGlass } from '@fortawesome/pro-duotone-svg-icons'; +import { faIcon } from '@/lib/icon-wrapper'; import { Table } from '@/components/application/table/table'; -const SearchLg: FC<{ className?: string }> = ({ className }) => ; +const SearchLg = faIcon(faMagnifyingGlass); import { Badge } from '@/components/base/badges/badges'; import { Input } from '@/components/base/input/input'; import { Tabs, TabList, Tab } from '@/components/application/tabs/tabs'; @@ -129,12 +128,8 @@ const formatSource = (source: string): string => { return map[source] ?? source.replace(/_/g, ' '); }; -const IconInbound: FC> = ({ className }) => ( - -); -const IconOutbound: FC> = ({ className }) => ( - -); +const IconInbound = faIcon(faPhoneArrowDown); +const IconOutbound = faIcon(faPhoneArrowUp); const buildRows = (missedCalls: MissedCall[], followUps: WorklistFollowUp[], leads: WorklistLead[]): WorklistRow[] => { const rows: WorklistRow[] = []; diff --git a/src/components/campaigns/campaign-edit-slideout.tsx b/src/components/campaigns/campaign-edit-slideout.tsx index 9bd9f69..00be675 100644 --- a/src/components/campaigns/campaign-edit-slideout.tsx +++ b/src/components/campaigns/campaign-edit-slideout.tsx @@ -1,7 +1,6 @@ import { useState } from 'react'; -import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faPenToSquare } from '@fortawesome/pro-duotone-svg-icons'; -import type { FC, HTMLAttributes } from 'react'; +import { faIcon } from '@/lib/icon-wrapper'; import { SlideoutMenu } from '@/components/application/slideout-menus/slideout-menu'; import { Input } from '@/components/base/input/input'; import { Select } from '@/components/base/select/select'; @@ -10,9 +9,7 @@ import { apiClient } from '@/lib/api-client'; import { notify } from '@/lib/toast'; import type { Campaign, CampaignStatus } from '@/types/entities'; -const PenIcon: FC> = ({ className }) => ( - -); +const PenIcon = faIcon(faPenToSquare); type CampaignEditSlideoutProps = { isOpen: boolean; diff --git a/src/components/integrations/integration-edit-slideout.tsx b/src/components/integrations/integration-edit-slideout.tsx index 6262e6f..2d53931 100644 --- a/src/components/integrations/integration-edit-slideout.tsx +++ b/src/components/integrations/integration-edit-slideout.tsx @@ -1,15 +1,13 @@ import { useState } from 'react'; import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; import { faGear, faCopy, faLink } from '@fortawesome/pro-duotone-svg-icons'; -import type { FC, HTMLAttributes } from 'react'; +import { faIcon } from '@/lib/icon-wrapper'; import { SlideoutMenu } from '@/components/application/slideout-menus/slideout-menu'; import { Input } from '@/components/base/input/input'; import { Button } from '@/components/base/buttons/button'; import { notify } from '@/lib/toast'; -const GearIcon: FC> = ({ className }) => ( - -); +const GearIcon = faIcon(faGear); type IntegrationType = 'ozonetel' | 'whatsapp' | 'facebook' | 'google' | 'instagram' | 'website' | 'email'; @@ -166,9 +164,7 @@ export const IntegrationEditSlideout = ({ isOpen, onOpenChange, integration }: I