diff --git a/src/app/(main)/MenuBar.tsx b/src/app/(main)/MenuBar.tsx index d79172ae..7b951865 100644 --- a/src/app/(main)/MenuBar.tsx +++ b/src/app/(main)/MenuBar.tsx @@ -2,10 +2,9 @@ import { ThemeButton, Row, Button, Icon } from '@umami/react-zen'; import { LanguageButton } from '@/components/input/LanguageButton'; import { ProfileButton } from '@/components/input/ProfileButton'; import { TeamsButton } from '@/components/input/TeamsButton'; -import useGlobalState from '@/components/hooks/useGlobalState'; -import { Lucide } from '@/components/icons'; import { WebsiteSelect } from '@/components/input/WebsiteSelect'; -import { useNavigation } from '@/components/hooks'; +import { PanelLeft, Slash } from '@/components/icons'; +import { useNavigation, useGlobalState } from '@/components/hooks'; export function MenuBar() { const [isCollapsed, setCollapsed] = useGlobalState('sidenav-collapsed'); @@ -26,7 +25,7 @@ export function MenuBar() { @@ -34,7 +33,7 @@ export function MenuBar() { {websiteId && ( <> - + diff --git a/src/app/(main)/SideNav.tsx b/src/app/(main)/SideNav.tsx index 0aa27250..ceb02beb 100644 --- a/src/app/(main)/SideNav.tsx +++ b/src/app/(main)/SideNav.tsx @@ -1,6 +1,14 @@ import Link from 'next/link'; import { Sidebar, SidebarHeader, SidebarSection, SidebarItem } from '@umami/react-zen'; -import { Lucide, Icons } from '@/components/icons'; +import { + Copy, + Globe, + LayoutDashboard, + Link as LinkIcon, + Logo, + Grid2X2, + Settings, +} from '@/components/icons'; import { useMessages, useNavigation } from '@/components/hooks'; import useGlobalState from '@/components/hooks/useGlobalState'; @@ -13,39 +21,39 @@ export function SideNav(props: any) { { label: formatMessage(labels.dashboard), href: renderTeamUrl('/dashboard'), - icon: , + icon: , }, { label: formatMessage(labels.websites), href: renderTeamUrl('/websites'), - icon: , + icon: , }, { label: formatMessage(labels.boards), href: renderTeamUrl('/boards'), - icon: , + icon: , }, { label: formatMessage(labels.links), href: renderTeamUrl('/links'), - icon: , + icon: , }, { label: formatMessage(labels.pixels), href: renderTeamUrl('/pixels'), - icon: , + icon: , }, { label: formatMessage(labels.settings), href: renderTeamUrl('/settings'), - icon: , + icon: , }, ].filter(n => n); return ( - } /> + } /> {links.map(({ href, label, icon }) => { diff --git a/src/app/(main)/boards/BoardAddButton.tsx b/src/app/(main)/boards/BoardAddButton.tsx index 570a4f15..40172060 100644 --- a/src/app/(main)/boards/BoardAddButton.tsx +++ b/src/app/(main)/boards/BoardAddButton.tsx @@ -1,14 +1,6 @@ import { useMessages, useModified, useNavigation } from '@/components/hooks'; -import { - Button, - Icon, - Icons, - Modal, - Dialog, - DialogTrigger, - Text, - useToast, -} from '@umami/react-zen'; +import { Button, Icon, Modal, Dialog, DialogTrigger, Text, useToast } from '@umami/react-zen'; +import { Plus } from '@/components/icons'; import { BoardAddForm } from './BoardAddForm'; export function BoardAddButton() { @@ -26,7 +18,7 @@ export function BoardAddButton() { diff --git a/src/app/(main)/dashboard/DashboardPage.tsx b/src/app/(main)/dashboard/DashboardPage.tsx index 4e3fd9fd..c7306087 100644 --- a/src/app/(main)/dashboard/DashboardPage.tsx +++ b/src/app/(main)/dashboard/DashboardPage.tsx @@ -1,5 +1,5 @@ 'use client'; -import { Icon, Icons, Loading, Text } from '@umami/react-zen'; +import { Icon, Loading, Text } from '@umami/react-zen'; import { SectionHeader } from '@/components/common/SectionHeader'; import { Pager } from '@/components/common/Pager'; import { WebsiteChartList } from '../websites/[websiteId]/WebsiteChartList'; @@ -7,6 +7,7 @@ import { DashboardSettingsButton } from '@/app/(main)/dashboard/DashboardSetting import { DashboardEdit } from '@/app/(main)/dashboard/DashboardEdit'; import { EmptyPlaceholder } from '@/components/common/EmptyPlaceholder'; import { useMessages, useNavigation, useWebsites } from '@/components/hooks'; +import { Arrow } from '@/components/icons'; import { useDashboard } from '@/store/dashboard'; import { LinkButton } from '@/components/common/LinkButton'; @@ -37,7 +38,7 @@ export function DashboardPage() { - + {formatMessage(messages.goToSettings)} diff --git a/src/app/(main)/dashboard/DashboardSettingsButton.tsx b/src/app/(main)/dashboard/DashboardSettingsButton.tsx index 82585fe9..12b7e913 100644 --- a/src/app/(main)/dashboard/DashboardSettingsButton.tsx +++ b/src/app/(main)/dashboard/DashboardSettingsButton.tsx @@ -1,5 +1,5 @@ import { Row, TooltipTrigger, Tooltip, Icon, Text, Button } from '@umami/react-zen'; -import { Icons } from '@/components/icons'; +import { BarChart, Edit } from '@/components/icons'; import { saveDashboard } from '@/store/dashboard'; import { useMessages } from '@/components/hooks'; @@ -19,14 +19,14 @@ export function DashboardSettingsButton() { {formatMessage(labels.toggleCharts)} diff --git a/src/app/(main)/reports/ReportDeleteButton.tsx b/src/app/(main)/reports/ReportDeleteButton.tsx index 5a6c7597..e57ea0bb 100644 --- a/src/app/(main)/reports/ReportDeleteButton.tsx +++ b/src/app/(main)/reports/ReportDeleteButton.tsx @@ -1,5 +1,6 @@ -import { Button, Icon, Icons, Modal, DialogTrigger, Dialog, Text } from '@umami/react-zen'; +import { Button, Icon, Modal, DialogTrigger, Dialog, Text } from '@umami/react-zen'; import { useApi, useMessages, useModified } from '@/components/hooks'; +import { Trash } from '@/components/icons'; import { ConfirmationForm } from '@/components/common/ConfirmationForm'; export function ReportDeleteButton({ @@ -32,7 +33,7 @@ export function ReportDeleteButton({ diff --git a/src/app/(main)/reports/ReportsHeader.tsx b/src/app/(main)/reports/ReportsHeader.tsx index f90ff4d5..b477f386 100644 --- a/src/app/(main)/reports/ReportsHeader.tsx +++ b/src/app/(main)/reports/ReportsHeader.tsx @@ -1,6 +1,7 @@ import { SectionHeader } from '@/components/common/SectionHeader'; -import { Icon, Icons, Text } from '@umami/react-zen'; +import { Icon, Text } from '@umami/react-zen'; import { useLoginQuery, useMessages, useNavigation } from '@/components/hooks'; +import { Plus } from '@/components/icons'; import { LinkButton } from '@/components/common/LinkButton'; import { ROLES } from '@/lib/constants'; @@ -15,7 +16,7 @@ export function ReportsHeader() { {canEdit && ( - + {formatMessage(labels.createReport)} diff --git a/src/app/(main)/reports/ReportsTable.tsx b/src/app/(main)/reports/ReportsTable.tsx index 4760a759..7e288384 100644 --- a/src/app/(main)/reports/ReportsTable.tsx +++ b/src/app/(main)/reports/ReportsTable.tsx @@ -1,7 +1,8 @@ -import { Icon, Icons, Text, DataTable, DataColumn, Row } from '@umami/react-zen'; +import { Icon, Text, DataTable, DataColumn, Row } from '@umami/react-zen'; import { LinkButton } from '@/components/common/LinkButton'; import { useMessages, useLoginQuery, useNavigation } from '@/components/hooks'; import { REPORT_TYPES } from '@/lib/constants'; +import { Arrow } from '@/components/icons'; import { ReportDeleteButton } from './ReportDeleteButton'; export function ReportsTable({ data = [] }: { data: any[]; showDomain?: boolean }) { @@ -30,7 +31,7 @@ export function ReportsTable({ data = [] }: { data: any[]; showDomain?: boolean )} - + {formatMessage(labels.view)} diff --git a/src/app/(main)/reports/[reportId]/FieldFilterEditForm.tsx b/src/app/(main)/reports/[reportId]/FieldFilterEditForm.tsx index 752629d5..4e5e5847 100644 --- a/src/app/(main)/reports/[reportId]/FieldFilterEditForm.tsx +++ b/src/app/(main)/reports/[reportId]/FieldFilterEditForm.tsx @@ -8,7 +8,6 @@ import { Row, Select, Icon, - Icons, Loading, Menu, MenuItem, @@ -18,6 +17,7 @@ import { TextField, Label, } from '@umami/react-zen'; +import { Close } from '@/components/icons'; import styles from './FieldFilterEditForm.module.css'; export interface FieldFilterFormProps { @@ -152,7 +152,7 @@ export function FieldFilterEditForm({
{formatValue(selected, name)} - +
)} diff --git a/src/app/(main)/reports/[reportId]/FieldParameters.tsx b/src/app/(main)/reports/[reportId]/FieldParameters.tsx index 53ef5a93..7bf62ece 100644 --- a/src/app/(main)/reports/[reportId]/FieldParameters.tsx +++ b/src/app/(main)/reports/[reportId]/FieldParameters.tsx @@ -1,5 +1,5 @@ import { useFields, useMessages, useReport } from '@/components/hooks'; -import { Icons } from '@/components/icons'; +import { Plus } from '@/components/icons'; import { Button, Row, Label, Icon, Popover, MenuTrigger, Column } from '@umami/react-zen'; import { FieldSelectForm } from '../[reportId]/FieldSelectForm'; import { ParameterList } from '../[reportId]/ParameterList'; @@ -29,7 +29,7 @@ export function FieldParameters() { diff --git a/src/app/(main)/reports/[reportId]/FilterParameters.tsx b/src/app/(main)/reports/[reportId]/FilterParameters.tsx index 0d2caa74..9d157411 100644 --- a/src/app/(main)/reports/[reportId]/FilterParameters.tsx +++ b/src/app/(main)/reports/[reportId]/FilterParameters.tsx @@ -1,5 +1,5 @@ import { useMessages, useFormat, useFilters, useFields, useReport } from '@/components/hooks'; -import { Icons } from '@/components/icons'; +import { Plus } from '@/components/icons'; import { Button, Row, @@ -55,7 +55,7 @@ export function FilterParameters() { diff --git a/src/app/(main)/reports/[reportId]/ParameterList.tsx b/src/app/(main)/reports/[reportId]/ParameterList.tsx index 8c279d9f..663c12ea 100644 --- a/src/app/(main)/reports/[reportId]/ParameterList.tsx +++ b/src/app/(main)/reports/[reportId]/ParameterList.tsx @@ -1,6 +1,6 @@ import { ReactNode } from 'react'; import { Icon, Row, Text, Button, Column } from '@umami/react-zen'; -import { Icons } from '@/components/icons'; +import { Close } from '@/components/icons'; import { Empty } from '@/components/common/Empty'; import { useMessages } from '@/components/hooks'; @@ -46,7 +46,7 @@ const Item = ({ {children}
diff --git a/src/app/(main)/reports/[reportId]/ReportMenu.tsx b/src/app/(main)/reports/[reportId]/ReportMenu.tsx index 3bdb1131..23175fc2 100644 --- a/src/app/(main)/reports/[reportId]/ReportMenu.tsx +++ b/src/app/(main)/reports/[reportId]/ReportMenu.tsx @@ -1,6 +1,6 @@ import { useState } from 'react'; import { Button, Column, Icon, Row } from '@umami/react-zen'; -import { Icons } from '@/components/icons'; +import { PanelLeft } from '@/components/icons'; import { useReport } from '@/components/hooks'; export function ReportMenu({ children }) { @@ -16,7 +16,7 @@ export function ReportMenu({ children }) { diff --git a/src/app/(main)/reports/attribution/AttributionParameters.tsx b/src/app/(main)/reports/attribution/AttributionParameters.tsx index 168621ff..15d737c9 100644 --- a/src/app/(main)/reports/attribution/AttributionParameters.tsx +++ b/src/app/(main)/reports/attribution/AttributionParameters.tsx @@ -1,5 +1,5 @@ import { useMessages } from '@/components/hooks'; -import { Icons } from '@/components/icons'; +import { Eye, Bolt, Plus } from '@/components/icons'; import { useContext, useState } from 'react'; import { Button, @@ -82,7 +82,7 @@ export function AttributionParameters() { @@ -122,7 +122,7 @@ export function AttributionParameters() { return ( : } + icon={step.type === 'url' ? : } onRemove={() => handleRemoveStep(index)} >
{step.value}
diff --git a/src/app/(main)/reports/attribution/AttributionReport.tsx b/src/app/(main)/reports/attribution/AttributionReport.tsx index 2508b089..e7981592 100644 --- a/src/app/(main)/reports/attribution/AttributionReport.tsx +++ b/src/app/(main)/reports/attribution/AttributionReport.tsx @@ -1,4 +1,4 @@ -import { Icons } from '@/components/icons'; +import { Network } from '@/components/icons'; import { REPORT_TYPES } from '@/lib/constants'; import { Report } from '../[reportId]/Report'; import { ReportBody } from '../[reportId]/ReportBody'; @@ -15,7 +15,7 @@ const defaultParameters = { export default function AttributionReport({ reportId }: { reportId?: string }) { return ( - } /> + } /> diff --git a/src/app/(main)/reports/create/ReportTemplates.tsx b/src/app/(main)/reports/create/ReportTemplates.tsx index de22b8d9..68ea0213 100644 --- a/src/app/(main)/reports/create/ReportTemplates.tsx +++ b/src/app/(main)/reports/create/ReportTemplates.tsx @@ -1,6 +1,16 @@ import { Icon, Text, Row, Column, Grid } from '@umami/react-zen'; import { useMessages, useNavigation } from '@/components/hooks'; -import { Icons } from '@/components/icons'; +import { + Lightbulb, + Funnel, + Magnet, + Tag, + Target, + Path, + Money, + Network, + Plus, +} from '@/components/icons'; import { SectionHeader } from '@/components/common/SectionHeader'; import { LinkButton } from '@/components/common/LinkButton'; @@ -13,49 +23,49 @@ export function ReportTemplates({ showHeader = true }: { showHeader?: boolean }) title: formatMessage(labels.insights), description: formatMessage(labels.insightsDescription), url: renderTeamUrl('/reports/insights'), - icon: , + icon: , }, { title: formatMessage(labels.funnel), description: formatMessage(labels.funnelDescription), url: renderTeamUrl('/reports/funnel'), - icon: , + icon: , }, { title: formatMessage(labels.retention), description: formatMessage(labels.retentionDescription), url: renderTeamUrl('/reports/retention'), - icon: , + icon: , }, { title: formatMessage(labels.utm), description: formatMessage(labels.utmDescription), url: renderTeamUrl('/reports/utm'), - icon: , + icon: , }, { title: formatMessage(labels.goals), description: formatMessage(labels.goalsDescription), url: renderTeamUrl('/reports/goals'), - icon: , + icon: , }, { title: formatMessage(labels.journey), description: formatMessage(labels.journeyDescription), url: renderTeamUrl('/reports/journey'), - icon: , + icon: , }, { title: formatMessage(labels.revenue), description: formatMessage(labels.revenueDescription), url: renderTeamUrl('/reports/revenue'), - icon: , + icon: , }, { title: formatMessage(labels.attribution), description: formatMessage(labels.attributionDescription), url: renderTeamUrl('/reports/attribution'), - icon: , + icon: , }, ]; @@ -87,8 +97,8 @@ function ReportItem({ title, description, url, icon }) { {description} - - + + {formatMessage(labels.create)} diff --git a/src/app/(main)/reports/event-data/EventDataParameters.tsx b/src/app/(main)/reports/event-data/EventDataParameters.tsx index 776ed1d5..e93b5d23 100644 --- a/src/app/(main)/reports/event-data/EventDataParameters.tsx +++ b/src/app/(main)/reports/event-data/EventDataParameters.tsx @@ -8,7 +8,7 @@ import { Popover, } from '@umami/react-zen'; import { Empty } from '@/components/common/Empty'; -import { Icons } from '@/components/icons'; +import { Plus } from '@/components/icons'; import { useApi, useMessages, useReport } from '@/components/hooks'; import { DATA_TYPES, REPORT_PARAMETERS } from '@/lib/constants'; import { FieldAddForm } from '../[reportId]/FieldAddForm'; @@ -75,7 +75,7 @@ export function EventDataParameters() { return ( - + {({ close }: any) => { diff --git a/src/app/(main)/reports/event-data/EventDataReport.tsx b/src/app/(main)/reports/event-data/EventDataReport.tsx index 75b35f51..6c6afef1 100644 --- a/src/app/(main)/reports/event-data/EventDataReport.tsx +++ b/src/app/(main)/reports/event-data/EventDataReport.tsx @@ -4,7 +4,7 @@ import { ReportMenu } from '../[reportId]/ReportMenu'; import { ReportBody } from '../[reportId]/ReportBody'; import { EventDataParameters } from './EventDataParameters'; import { EventDataTable } from './EventDataTable'; -import { Icons } from '@/components/icons'; +import { Nodes } from '@/components/icons'; const defaultParameters = { type: 'event-data', @@ -14,7 +14,7 @@ const defaultParameters = { export function EventDataReport({ reportId }: { reportId?: string }) { return ( - } /> + } /> diff --git a/src/app/(main)/reports/funnel/FunnelParameters.tsx b/src/app/(main)/reports/funnel/FunnelParameters.tsx index f8acc8d1..30eed76f 100644 --- a/src/app/(main)/reports/funnel/FunnelParameters.tsx +++ b/src/app/(main)/reports/funnel/FunnelParameters.tsx @@ -10,7 +10,7 @@ import { TextField, Button, } from '@umami/react-zen'; -import { Icons } from '@/components/icons'; +import { Eye, Bolt, Plus } from '@/components/icons'; import { FunnelStepAddForm } from './FunnelStepAddForm'; import { BaseParameters } from '../[reportId]/BaseParameters'; import { ParameterList } from '../[reportId]/ParameterList'; @@ -59,7 +59,7 @@ export function FunnelParameters() { @@ -85,7 +85,7 @@ export function FunnelParameters() { return ( : } + icon={step.type === 'url' ? : } onRemove={() => handleRemoveStep(index)} >
diff --git a/src/app/(main)/reports/funnel/FunnelReport.tsx b/src/app/(main)/reports/funnel/FunnelReport.tsx index e533df92..88481513 100644 --- a/src/app/(main)/reports/funnel/FunnelReport.tsx +++ b/src/app/(main)/reports/funnel/FunnelReport.tsx @@ -4,7 +4,7 @@ import { Report } from '../[reportId]/Report'; import { ReportHeader } from '../[reportId]/ReportHeader'; import { ReportMenu } from '../[reportId]/ReportMenu'; import { ReportBody } from '../[reportId]/ReportBody'; -import { Icons } from '@/components/icons'; +import { Funnel } from '@/components/icons'; import { REPORT_TYPES } from '@/lib/constants'; const defaultParameters = { @@ -15,7 +15,7 @@ const defaultParameters = { export function FunnelReport({ reportId }: { reportId?: string }) { return ( - } /> + } /> diff --git a/src/app/(main)/reports/goals/GoalsParameters.tsx b/src/app/(main)/reports/goals/GoalsParameters.tsx index b3e632fe..2e7dfacc 100644 --- a/src/app/(main)/reports/goals/GoalsParameters.tsx +++ b/src/app/(main)/reports/goals/GoalsParameters.tsx @@ -1,5 +1,5 @@ import { useMessages, useReport } from '@/components/hooks'; -import { Icons } from '@/components/icons'; +import { Plus, Eye, Bolt } from '@/components/icons'; import { formatNumber } from '@/lib/format'; import { Button, @@ -60,7 +60,7 @@ export function GoalsParameters() { @@ -90,7 +90,7 @@ export function GoalsParameters() { return ( : } + icon={goal.type === 'url' ? : } onRemove={() => handleRemoveGoals(index)} > diff --git a/src/app/(main)/reports/goals/GoalsReport.tsx b/src/app/(main)/reports/goals/GoalsReport.tsx index 44c413fe..e23e4ad1 100644 --- a/src/app/(main)/reports/goals/GoalsReport.tsx +++ b/src/app/(main)/reports/goals/GoalsReport.tsx @@ -4,7 +4,7 @@ import { Report } from '../[reportId]/Report'; import { ReportHeader } from '../[reportId]/ReportHeader'; import { ReportMenu } from '../[reportId]/ReportMenu'; import { ReportBody } from '../[reportId]/ReportBody'; -import { Icons } from '@/components/icons'; +import { Target } from '@/components/icons'; import { REPORT_TYPES } from '@/lib/constants'; const defaultParameters = { @@ -15,7 +15,7 @@ const defaultParameters = { export function GoalsReport({ reportId }: { reportId?: string }) { return ( - } /> + } /> diff --git a/src/app/(main)/reports/insights/InsightsReport.tsx b/src/app/(main)/reports/insights/InsightsReport.tsx index 9adc3cb3..6f0f6a71 100644 --- a/src/app/(main)/reports/insights/InsightsReport.tsx +++ b/src/app/(main)/reports/insights/InsightsReport.tsx @@ -4,7 +4,7 @@ import { ReportMenu } from '../[reportId]/ReportMenu'; import { ReportBody } from '../[reportId]/ReportBody'; import { InsightsParameters } from './InsightsParameters'; import { InsightsTable } from './InsightsTable'; -import { Icons } from '@/components/icons'; +import { Lightbulb } from '@/components/icons'; import { REPORT_TYPES } from '@/lib/constants'; const defaultParameters = { @@ -15,7 +15,7 @@ const defaultParameters = { export function InsightsReport({ reportId }: { reportId?: string }) { return ( - } /> + } /> diff --git a/src/app/(main)/reports/journey/JourneyReport.tsx b/src/app/(main)/reports/journey/JourneyReport.tsx index 163b1784..a75de880 100644 --- a/src/app/(main)/reports/journey/JourneyReport.tsx +++ b/src/app/(main)/reports/journey/JourneyReport.tsx @@ -5,7 +5,7 @@ import { ReportMenu } from '../[reportId]/ReportMenu'; import { ReportBody } from '../[reportId]/ReportBody'; import { JourneyParameters } from './JourneyParameters'; import { JourneyView } from './JourneyView'; -import { Icons } from '@/components/icons'; +import { Path } from '@/components/icons'; import { REPORT_TYPES } from '@/lib/constants'; const defaultParameters = { @@ -16,7 +16,7 @@ const defaultParameters = { export function JourneyReport({ reportId }: { reportId?: string }) { return ( - } /> + } /> diff --git a/src/app/(main)/settings/profile/PasswordChangeButton.tsx b/src/app/(main)/settings/profile/PasswordChangeButton.tsx index 3429ca3f..fb4c3f85 100644 --- a/src/app/(main)/settings/profile/PasswordChangeButton.tsx +++ b/src/app/(main)/settings/profile/PasswordChangeButton.tsx @@ -1,6 +1,6 @@ import { Button, Icon, Text, useToast, DialogTrigger, Dialog, Modal } from '@umami/react-zen'; import { PasswordEditForm } from './PasswordEditForm'; -import { Lucide } from '@/components/icons'; +import { LockKeyhole } from '@/components/icons'; import { useMessages } from '@/components/hooks'; export function PasswordChangeButton() { @@ -14,8 +14,8 @@ export function PasswordChangeButton() { return ( diff --git a/src/app/(main)/settings/profile/ThemeSetting.tsx b/src/app/(main)/settings/profile/ThemeSetting.tsx index c5b6a365..bc9b90b6 100644 --- a/src/app/(main)/settings/profile/ThemeSetting.tsx +++ b/src/app/(main)/settings/profile/ThemeSetting.tsx @@ -1,5 +1,5 @@ import { Row, Button, Icon, useTheme } from '@umami/react-zen'; -import { Lucide } from '@/components/icons'; +import { Sun, Moon } from '@/components/icons'; export function ThemeSetting() { const { theme, setTheme } = useTheme(); @@ -11,12 +11,12 @@ export function ThemeSetting() { onPress={() => setTheme('light')} > - + diff --git a/src/app/(main)/settings/teams/TeamLeaveButton.tsx b/src/app/(main)/settings/teams/TeamLeaveButton.tsx index 040be5a2..61837246 100644 --- a/src/app/(main)/settings/teams/TeamLeaveButton.tsx +++ b/src/app/(main)/settings/teams/TeamLeaveButton.tsx @@ -1,6 +1,7 @@ import { useLoginQuery, useMessages, useModified } from '@/components/hooks'; import { useRouter } from 'next/navigation'; -import { Button, Icon, Icons, Modal, DialogTrigger, Dialog, Text } from '@umami/react-zen'; +import { Button, Icon, Modal, DialogTrigger, Dialog, Text } from '@umami/react-zen'; +import { LogOut } from '@/components/icons'; import { TeamLeaveForm } from './TeamLeaveForm'; export function TeamLeaveButton({ teamId, teamName }: { teamId: string; teamName: string }) { @@ -18,7 +19,7 @@ export function TeamLeaveButton({ teamId, teamName }: { teamId: string; teamName diff --git a/src/app/(main)/settings/teams/TeamsAddButton.tsx b/src/app/(main)/settings/teams/TeamsAddButton.tsx index d0adb52c..3e728221 100644 --- a/src/app/(main)/settings/teams/TeamsAddButton.tsx +++ b/src/app/(main)/settings/teams/TeamsAddButton.tsx @@ -1,5 +1,5 @@ import { Button, Icon, Modal, DialogTrigger, Dialog, Text, useToast } from '@umami/react-zen'; -import { Icons } from '@/components/icons'; +import { Plus } from '@/components/icons'; import { useMessages, useModified } from '@/components/hooks'; import { TeamAddForm } from './TeamAddForm'; import { messages } from '@/components/messages'; @@ -19,7 +19,7 @@ export function TeamsAddButton({ onSave }: { onSave?: () => void }) { diff --git a/src/app/(main)/settings/teams/TeamsJoinButton.tsx b/src/app/(main)/settings/teams/TeamsJoinButton.tsx index 1050410e..fcba91a2 100644 --- a/src/app/(main)/settings/teams/TeamsJoinButton.tsx +++ b/src/app/(main)/settings/teams/TeamsJoinButton.tsx @@ -1,5 +1,5 @@ import { Button, Icon, Modal, DialogTrigger, Dialog, Text, useToast } from '@umami/react-zen'; -import { Icons } from '@/components/icons'; +import { AddUser } from '@/components/icons'; import { useMessages, useModified } from '@/components/hooks'; import { TeamJoinForm } from './TeamJoinForm'; @@ -16,8 +16,8 @@ export function TeamsJoinButton() { return ( diff --git a/src/app/(main)/settings/teams/TeamsTable.tsx b/src/app/(main)/settings/teams/TeamsTable.tsx index d358e6f2..39870ec8 100644 --- a/src/app/(main)/settings/teams/TeamsTable.tsx +++ b/src/app/(main)/settings/teams/TeamsTable.tsx @@ -1,6 +1,6 @@ import { DataColumn, DataTable, Icon, MenuItem, Text, Row } from '@umami/react-zen'; import { useMessages } from '@/components/hooks'; -import { Icons } from '@/components/icons'; +import { Arrow, Edit } from '@/components/icons'; import { ROLES } from '@/lib/constants'; import { MenuButton } from '@/components/input/MenuButton'; @@ -36,7 +36,7 @@ export function TeamsTable({ - + {formatMessage(labels.view)} @@ -44,7 +44,7 @@ export function TeamsTable({ - + {formatMessage(labels.edit)} diff --git a/src/app/(main)/settings/teams/WebsiteTags.tsx b/src/app/(main)/settings/teams/WebsiteTags.tsx index c55c8afe..784b50c1 100644 --- a/src/app/(main)/settings/teams/WebsiteTags.tsx +++ b/src/app/(main)/settings/teams/WebsiteTags.tsx @@ -1,4 +1,5 @@ -import { Button, Icon, Icons, Text } from '@umami/react-zen'; +import { Button, Icon, Text } from '@umami/react-zen'; +import { Close } from '@/components/icons'; import styles from './WebsiteTags.module.css'; export function WebsiteTags({ @@ -26,7 +27,7 @@ export function WebsiteTags({ {`${website.name}`} - +
diff --git a/src/app/(main)/settings/users/UserAddButton.tsx b/src/app/(main)/settings/users/UserAddButton.tsx index ed9649b3..283e1f80 100644 --- a/src/app/(main)/settings/users/UserAddButton.tsx +++ b/src/app/(main)/settings/users/UserAddButton.tsx @@ -1,15 +1,7 @@ -import { - Button, - Icon, - Text, - Modal, - Icons, - DialogTrigger, - Dialog, - useToast, -} from '@umami/react-zen'; +import { Button, Icon, Text, Modal, DialogTrigger, Dialog, useToast } from '@umami/react-zen'; import { UserAddForm } from './UserAddForm'; import { useMessages, useModified } from '@/components/hooks'; +import { Plus } from '@/components/icons'; export function UserAddButton({ onSave }: { onSave?: () => void }) { const { formatMessage, labels, messages } = useMessages(); @@ -26,7 +18,7 @@ export function UserAddButton({ onSave }: { onSave?: () => void }) { diff --git a/src/app/(main)/settings/users/UserDeleteButton.tsx b/src/app/(main)/settings/users/UserDeleteButton.tsx index 92f0031f..d6d470c1 100644 --- a/src/app/(main)/settings/users/UserDeleteButton.tsx +++ b/src/app/(main)/settings/users/UserDeleteButton.tsx @@ -1,5 +1,6 @@ -import { Button, Icon, Icons, Modal, DialogTrigger, Dialog, Text } from '@umami/react-zen'; +import { Button, Icon, Modal, DialogTrigger, Dialog, Text } from '@umami/react-zen'; import { useMessages, useLoginQuery } from '@/components/hooks'; +import { Trash } from '@/components/icons'; import { UserDeleteForm } from './UserDeleteForm'; export function UserDeleteButton({ @@ -18,7 +19,7 @@ export function UserDeleteButton({ diff --git a/src/app/(main)/settings/users/UsersTable.tsx b/src/app/(main)/settings/users/UsersTable.tsx index a4aeac6e..24b8afc9 100644 --- a/src/app/(main)/settings/users/UsersTable.tsx +++ b/src/app/(main)/settings/users/UsersTable.tsx @@ -1,8 +1,8 @@ +import { useState } from 'react'; import { Row, Text, Icon, - Icons, DataTable, DataColumn, MenuItem, @@ -10,12 +10,13 @@ import { Modal, Dialog, } from '@umami/react-zen'; +import Link from 'next/link'; import { formatDistance } from 'date-fns'; import { ROLES } from '@/lib/constants'; +import { Trash } from '@/components/icons'; import { useMessages, useLocale } from '@/components/hooks'; +import { Edit } from '@/components/icons'; import { MenuButton } from '@/components/input/MenuButton'; -import Link from 'next/link'; -import { useState } from 'react'; import { UserDeleteForm } from '@/app/(main)/settings/users/UserDeleteForm'; export function UsersTable({ @@ -64,7 +65,7 @@ export function UsersTable({ - + {formatMessage(labels.edit)} @@ -77,7 +78,7 @@ export function UsersTable({ > - + {formatMessage(labels.delete)} diff --git a/src/app/(main)/settings/users/[userId]/UserSettings.tsx b/src/app/(main)/settings/users/[userId]/UserSettings.tsx index a321cc4a..8a775f0b 100644 --- a/src/app/(main)/settings/users/[userId]/UserSettings.tsx +++ b/src/app/(main)/settings/users/[userId]/UserSettings.tsx @@ -1,6 +1,6 @@ import { useContext } from 'react'; import { Tabs, Tab, TabList, TabPanel } from '@umami/react-zen'; -import { Icons } from '@/components/icons'; +import { User } from '@/components/icons'; import { UserEditForm } from './UserEditForm'; import { SectionHeader } from '@/components/common/SectionHeader'; import { useMessages } from '@/components/hooks'; @@ -13,7 +13,7 @@ export function UserSettings({ userId }: { userId: string }) { return ( <> - } /> + } /> {formatMessage(labels.details)} diff --git a/src/app/(main)/settings/websites/WebsiteAddButton.tsx b/src/app/(main)/settings/websites/WebsiteAddButton.tsx index bd2a8146..8996c5b9 100644 --- a/src/app/(main)/settings/websites/WebsiteAddButton.tsx +++ b/src/app/(main)/settings/websites/WebsiteAddButton.tsx @@ -1,14 +1,6 @@ import { useMessages, useModified } from '@/components/hooks'; -import { - Button, - Icon, - Icons, - Modal, - Dialog, - DialogTrigger, - Text, - useToast, -} from '@umami/react-zen'; +import { Button, Icon, Modal, Dialog, DialogTrigger, Text, useToast } from '@umami/react-zen'; +import { Plus } from '@/components/icons'; import { WebsiteAddForm } from './WebsiteAddForm'; export function WebsiteAddButton({ teamId, onSave }: { teamId: string; onSave?: () => void }) { @@ -26,7 +18,7 @@ export function WebsiteAddButton({ teamId, onSave }: { teamId: string; onSave?: diff --git a/src/app/(main)/settings/websites/WebsitesTable.tsx b/src/app/(main)/settings/websites/WebsitesTable.tsx index d039822b..914b51ec 100644 --- a/src/app/(main)/settings/websites/WebsitesTable.tsx +++ b/src/app/(main)/settings/websites/WebsitesTable.tsx @@ -2,7 +2,7 @@ import { ReactNode } from 'react'; import { Row, Text, Icon, DataTable, DataColumn, MenuItem } from '@umami/react-zen'; import { useMessages, useNavigation } from '@/components/hooks'; import { MenuButton } from '@/components/input/MenuButton'; -import { Lucide } from '@/components/icons'; +import { Eye, SquarePen } from '@/components/icons'; import Link from 'next/link'; export interface WebsitesTableProps { @@ -45,7 +45,7 @@ export function WebsitesTable({ - + {formatMessage(labels.view)} @@ -55,7 +55,7 @@ export function WebsitesTable({ - + {formatMessage(labels.edit)} diff --git a/src/app/(main)/settings/websites/[websiteId]/WebsiteSettings.tsx b/src/app/(main)/settings/websites/[websiteId]/WebsiteSettings.tsx index b2b10469..8762070d 100644 --- a/src/app/(main)/settings/websites/[websiteId]/WebsiteSettings.tsx +++ b/src/app/(main)/settings/websites/[websiteId]/WebsiteSettings.tsx @@ -2,7 +2,7 @@ import { useContext } from 'react'; import { Icon, Tabs, TabList, Tab, TabPanel, Text } from '@umami/react-zen'; import { WebsiteContext } from '@/app/(main)/websites/[websiteId]/WebsiteProvider'; import { useMessages } from '@/components/hooks'; -import { Icons } from '@/components/icons'; +import { Globe, Arrow } from '@/components/icons'; import { SectionHeader } from '@/components/common/SectionHeader'; import { ShareUrl } from './ShareUrl'; import { TrackingCode } from './TrackingCode'; @@ -22,14 +22,14 @@ export function WebsiteSettings({ return ( <> - }> + }> - + {formatMessage(labels.view)} diff --git a/src/app/(main)/teams/[teamId]/settings/members/TeamMemberEditButton.tsx b/src/app/(main)/teams/[teamId]/settings/members/TeamMemberEditButton.tsx index a6844da6..62279bdd 100644 --- a/src/app/(main)/teams/[teamId]/settings/members/TeamMemberEditButton.tsx +++ b/src/app/(main)/teams/[teamId]/settings/members/TeamMemberEditButton.tsx @@ -3,7 +3,6 @@ import { Row, Pressable, Icon, - Icons, Modal, DialogTrigger, Dialog, @@ -11,6 +10,7 @@ import { useToast, } from '@umami/react-zen'; import { TeamMemberEditForm } from './TeamMemberEditForm'; +import { Edit } from '@/components/icons'; export function TeamMemberEditButton({ teamId, @@ -38,7 +38,7 @@ export function TeamMemberEditButton({ - + {formatMessage(labels.edit)} diff --git a/src/app/(main)/teams/[teamId]/settings/members/TeamMemberRemoveButton.tsx b/src/app/(main)/teams/[teamId]/settings/members/TeamMemberRemoveButton.tsx index dec9cdfe..508ddc6e 100644 --- a/src/app/(main)/teams/[teamId]/settings/members/TeamMemberRemoveButton.tsx +++ b/src/app/(main)/teams/[teamId]/settings/members/TeamMemberRemoveButton.tsx @@ -1,7 +1,8 @@ import { ConfirmationForm } from '@/components/common/ConfirmationForm'; import { useApi, useMessages, useModified } from '@/components/hooks'; import { messages } from '@/components/messages'; -import { Button, Icon, Icons, Modal, DialogTrigger, Dialog, Text } from '@umami/react-zen'; +import { Close } from '@/components/icons'; +import { Button, Icon, Modal, DialogTrigger, Dialog, Text } from '@umami/react-zen'; export function TeamMemberRemoveButton({ teamId, @@ -36,7 +37,7 @@ export function TeamMemberRemoveButton({ diff --git a/src/app/(main)/teams/[teamId]/settings/websites/TeamWebsiteRemoveButton.tsx b/src/app/(main)/teams/[teamId]/settings/websites/TeamWebsiteRemoveButton.tsx index 3e112405..38f0252b 100644 --- a/src/app/(main)/teams/[teamId]/settings/websites/TeamWebsiteRemoveButton.tsx +++ b/src/app/(main)/teams/[teamId]/settings/websites/TeamWebsiteRemoveButton.tsx @@ -1,5 +1,6 @@ import { useApi, useMessages } from '@/components/hooks'; -import { Icon, Icons, LoadingButton, Text } from '@umami/react-zen'; +import { Icon, LoadingButton, Text } from '@umami/react-zen'; +import { Close } from '@/components/icons'; export function TeamWebsiteRemoveButton({ teamId, websiteId, onSave }) { const { formatMessage, labels } = useMessages(); @@ -19,7 +20,7 @@ export function TeamWebsiteRemoveButton({ teamId, websiteId, onSave }) { return ( handleRemoveTeamMember()} isLoading={isPending}> - + {formatMessage(labels.remove)} diff --git a/src/app/(main)/teams/[teamId]/settings/websites/TeamWebsitesTable.tsx b/src/app/(main)/teams/[teamId]/settings/websites/TeamWebsitesTable.tsx index 1d25ff7b..59926335 100644 --- a/src/app/(main)/teams/[teamId]/settings/websites/TeamWebsitesTable.tsx +++ b/src/app/(main)/teams/[teamId]/settings/websites/TeamWebsitesTable.tsx @@ -1,6 +1,6 @@ import { DataColumn, DataTable, Icon, MenuItem, Text, Row } from '@umami/react-zen'; import { useLoginQuery, useMessages } from '@/components/hooks'; -import { Icons } from '@/components/icons'; +import { Arrow, Edit } from '@/components/icons'; import { MenuButton } from '@/components/input/MenuButton'; export function TeamWebsitesTable({ @@ -31,7 +31,7 @@ export function TeamWebsitesTable({ - + {formatMessage(labels.view)} @@ -40,7 +40,7 @@ export function TeamWebsitesTable({ - + {formatMessage(labels.edit)} diff --git a/src/app/(main)/websites/[websiteId]/WebsiteChartList.tsx b/src/app/(main)/websites/[websiteId]/WebsiteChartList.tsx index 5d802300..4a211151 100644 --- a/src/app/(main)/websites/[websiteId]/WebsiteChartList.tsx +++ b/src/app/(main)/websites/[websiteId]/WebsiteChartList.tsx @@ -1,4 +1,4 @@ -import { Text, Icon, Icons } from '@umami/react-zen'; +import { Text, Icon } from '@umami/react-zen'; import { useMemo } from 'react'; import { firstBy } from 'thenby'; import { WebsiteChart } from './WebsiteChart'; @@ -7,6 +7,7 @@ import { WebsiteControls } from './WebsiteControls'; import { WebsiteMetricsBar } from './WebsiteMetricsBar'; import { useMessages, useNavigation } from '@/components/hooks'; import { LinkButton } from '@/components/common/LinkButton'; +import { Arrow } from '@/components/icons'; export function WebsiteChartList({ websites, @@ -30,7 +31,7 @@ export function WebsiteChartList({ return (
- {ordered.map(({ id }, index) => { + {ordered.map(({ id }: { id: string }, index) => { return index < limit ? (
@@ -38,7 +39,7 @@ export function WebsiteChartList({ {formatMessage(labels.viewDetails)} - + diff --git a/src/app/(main)/websites/[websiteId]/WebsiteExpandedView.tsx b/src/app/(main)/websites/[websiteId]/WebsiteExpandedView.tsx index 194154c0..f38f206a 100644 --- a/src/app/(main)/websites/[websiteId]/WebsiteExpandedView.tsx +++ b/src/app/(main)/websites/[websiteId]/WebsiteExpandedView.tsx @@ -1,4 +1,4 @@ -import { Icon, Icons, Text, Grid, Column } from '@umami/react-zen'; +import { Icon, Text, Grid, Column } from '@umami/react-zen'; import { LinkButton } from '@/components/common/LinkButton'; import { useMessages, useNavigation } from '@/components/hooks'; import { SideMenu } from '@/components/common/SideMenu'; @@ -18,6 +18,7 @@ import { ScreenTable } from '@/components/metrics/ScreenTable'; import { TagsTable } from '@/components/metrics/TagsTable'; import { ChannelsTable } from '@/components/metrics/ChannelsTable'; import { Panel } from '@/components/common/Panel'; +import { Arrow } from '@/components/icons'; const views = { url: PagesTable, @@ -140,7 +141,7 @@ export function WebsiteExpandedView({ - + {formatMessage(labels.back)} diff --git a/src/app/(main)/websites/[websiteId]/WebsiteFilterButton.tsx b/src/app/(main)/websites/[websiteId]/WebsiteFilterButton.tsx index 10dfab7f..572112c5 100644 --- a/src/app/(main)/websites/[websiteId]/WebsiteFilterButton.tsx +++ b/src/app/(main)/websites/[websiteId]/WebsiteFilterButton.tsx @@ -1,5 +1,5 @@ import { Button, Icon, DialogTrigger, Dialog, Modal, Text } from '@umami/react-zen'; -import { Lucide } from '@/components/icons'; +import { ListFilter } from '@/components/icons'; import { FilterEditForm } from '@/components/common/FilterEditForm'; import { useMessages, useNavigation, useFilters } from '@/components/hooks'; @@ -34,7 +34,7 @@ export function WebsiteFilterButton({ diff --git a/src/app/(main)/websites/[websiteId]/WebsiteHeader.tsx b/src/app/(main)/websites/[websiteId]/WebsiteHeader.tsx index 9528d1dc..afc787e7 100644 --- a/src/app/(main)/websites/[websiteId]/WebsiteHeader.tsx +++ b/src/app/(main)/websites/[websiteId]/WebsiteHeader.tsx @@ -1,7 +1,7 @@ import { Button, Icon, Text, Row } from '@umami/react-zen'; import { PageHeader } from '@/components/common/PageHeader'; import { useWebsite } from '@/components/hooks/useWebsite'; -import { Lucide } from '@/components/icons'; +import { Share, Edit } from '@/components/icons'; import { Favicon } from '@/components/common/Favicon'; import { ActiveUsers } from '@/components/metrics/ActiveUsers'; @@ -14,13 +14,13 @@ export function WebsiteHeader() { diff --git a/src/app/(main)/websites/[websiteId]/WebsiteMenu.tsx b/src/app/(main)/websites/[websiteId]/WebsiteMenu.tsx index a08493f8..46a3f2fc 100644 --- a/src/app/(main)/websites/[websiteId]/WebsiteMenu.tsx +++ b/src/app/(main)/websites/[websiteId]/WebsiteMenu.tsx @@ -1,7 +1,6 @@ import { Button, Icon, - Icons, Menu, MenuItem, MenuSeparator, @@ -10,7 +9,7 @@ import { Text, } from '@umami/react-zen'; import { Fragment } from 'react'; -import { Lucide } from '@/components/icons'; +import { More, Share, Edit } from '@/components/icons'; import { useMessages, useNavigation } from '@/components/hooks'; import { InputItem } from '@/lib/types'; @@ -19,8 +18,8 @@ export function WebsiteMenu({ websiteId }: { websiteId: string }) { const { router, renderUrl, renderTeamUrl } = useNavigation(); const menuItems: InputItem[] = [ - { id: 'share', label: formatMessage(labels.share), icon: }, - { id: 'edit', label: formatMessage(labels.edit), icon: , seperator: true }, + { id: 'share', label: formatMessage(labels.share), icon: }, + { id: 'edit', label: formatMessage(labels.edit), icon: , seperator: true }, ]; const handleAction = (id: any) => { @@ -35,7 +34,7 @@ export function WebsiteMenu({ websiteId }: { websiteId: string }) { diff --git a/src/app/(main)/websites/[websiteId]/WebsiteNav.tsx b/src/app/(main)/websites/[websiteId]/WebsiteNav.tsx index aff7ea79..5fe4fbb4 100644 --- a/src/app/(main)/websites/[websiteId]/WebsiteNav.tsx +++ b/src/app/(main)/websites/[websiteId]/WebsiteNav.tsx @@ -1,5 +1,18 @@ import { Icon, Text, Row, NavMenu, NavMenuItem } from '@umami/react-zen'; -import { Icons } from '@/components/icons'; +import { + Overview, + Lightning, + User, + Clock, + Lightbulb, + Target, + Funnel, + Path, + Magnet, + Tag, + Money, + Network, +} from '@/components/icons'; import { useMessages, useNavigation } from '@/components/hooks'; import Link from 'next/link'; @@ -11,73 +24,73 @@ export function WebsiteNav({ websiteId }: { websiteId: string }) { { id: 'overview', label: formatMessage(labels.overview), - icon: , + icon: , path: '', }, { id: 'events', label: formatMessage(labels.events), - icon: , + icon: , path: '/events', }, { id: 'sessions', label: formatMessage(labels.sessions), - icon: , + icon: , path: '/sessions', }, { id: 'realtime', label: formatMessage(labels.realtime), - icon: , + icon: , path: '/realtime', }, { id: 'insights', label: formatMessage(labels.insights), - icon: , + icon: , path: '/insights', }, { id: 'goals', label: formatMessage(labels.goals), - icon: , + icon: , path: '/goals', }, { id: 'funnel', label: formatMessage(labels.funnel), - icon: , + icon: , path: '/funnels', }, { id: 'journeys', label: formatMessage(labels.journey), - icon: , + icon: , path: '/goals', }, { id: 'retention', label: formatMessage(labels.retention), - icon: , + icon: , path: '/retention', }, { id: 'utm', label: formatMessage(labels.utm), - icon: , + icon: , path: '/utm', }, { id: 'revenue', label: formatMessage(labels.revenue), - icon: , + icon: , path: '/revenue', }, { id: 'attribution', label: formatMessage(labels.attribution), - icon: , + icon: , path: '/attribution', }, ]; diff --git a/src/app/(main)/websites/[websiteId]/events/EventsTable.tsx b/src/app/(main)/websites/[websiteId]/events/EventsTable.tsx index bfefc4c3..16771736 100644 --- a/src/app/(main)/websites/[websiteId]/events/EventsTable.tsx +++ b/src/app/(main)/websites/[websiteId]/events/EventsTable.tsx @@ -3,7 +3,7 @@ import { useMessages, useNavigation, useTimezone } from '@/components/hooks'; import { Empty } from '@/components/common/Empty'; import { Avatar } from '@/components/common/Avatar'; import Link from 'next/link'; -import { Icons } from '@/components/icons'; +import { Bolt, Eye } from '@/components/icons'; export function EventsTable({ data = [] }) { const { formatTimezoneDate } = useTimezone(); @@ -27,7 +27,7 @@ export function EventsTable({ data = [] }) { {(row: any) => { return ( - {row.eventName ? : } + {row.eventName ? : } {formatMessage(row.eventName ? labels.triggeredEvent : labels.viewedPage)} {row.eventName || row.urlPath} diff --git a/src/app/(main)/websites/[websiteId]/goals/GoalAddButton.tsx b/src/app/(main)/websites/[websiteId]/goals/GoalAddButton.tsx index b1b672ff..82592b78 100644 --- a/src/app/(main)/websites/[websiteId]/goals/GoalAddButton.tsx +++ b/src/app/(main)/websites/[websiteId]/goals/GoalAddButton.tsx @@ -1,7 +1,7 @@ import { Button, MenuTrigger, Dialog, Icon, Text, Modal } from '@umami/react-zen'; import { useMessages } from '@/components/hooks'; import { GoalAddForm } from './GoalAddForm'; -import { Icons } from '@/components/icons'; +import { Plus } from '@/components/icons'; export function GoalAddButton({ websiteId }: { websiteId: string }) { const { formatMessage, labels } = useMessages(); @@ -10,7 +10,7 @@ export function GoalAddButton({ websiteId }: { websiteId: string }) { diff --git a/src/app/(main)/websites/[websiteId]/goals/GoalAddForm.tsx b/src/app/(main)/websites/[websiteId]/goals/GoalAddForm.tsx index 54d1b942..c7119516 100644 --- a/src/app/(main)/websites/[websiteId]/goals/GoalAddForm.tsx +++ b/src/app/(main)/websites/[websiteId]/goals/GoalAddForm.tsx @@ -9,7 +9,15 @@ import { } from '@umami/react-zen'; import { useApi, useMessages } from '@/components/hooks'; -export function GoalAddForm({ onSave, onClose }: { onSave?: () => void; onClose?: () => void }) { +export function GoalAddForm({ + websiteId, + onSave, + onClose, +}: { + websiteId: string; + onSave?: () => void; + onClose?: () => void; +}) { const { formatMessage, labels } = useMessages(); const { post, useMutation } = useApi(); const { mutate, error, isPending } = useMutation({ @@ -32,6 +40,7 @@ export function GoalAddForm({ onSave, onClose }: { onSave?: () => void; onClose? return (
+ {websiteId} , - [TYPE_SESSION]: , - [TYPE_EVENT]: , + [TYPE_PAGEVIEW]: , + [TYPE_SESSION]: , + [TYPE_EVENT]: , }; export function RealtimeLog({ data }: { data: RealtimeData }) { diff --git a/src/app/(main)/websites/[websiteId]/retention/RetentionTable.tsx b/src/app/(main)/websites/[websiteId]/retention/RetentionTable.tsx index a8e35662..aeecc26a 100644 --- a/src/app/(main)/websites/[websiteId]/retention/RetentionTable.tsx +++ b/src/app/(main)/websites/[websiteId]/retention/RetentionTable.tsx @@ -1,7 +1,7 @@ import { ReactNode } from 'react'; import { Grid, Row, Column, Text, Loading, Icon } from '@umami/react-zen'; import { EmptyPlaceholder } from '@/components/common/EmptyPlaceholder'; -import { Lucide } from '@/components/icons'; +import { Users } from '@/components/icons'; import { useMessages, useLocale, useRetentionQuery } from '@/components/hooks'; import { formatDate } from '@/lib/date'; import { formatLongNumber } from '@/lib/format'; @@ -68,7 +68,7 @@ export function RetentionTable({ websiteId, days = DAYS }: { websiteId: string; {formatDate(date, 'PP', locale)} - + {formatLongNumber(visitors)} diff --git a/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionActivity.tsx b/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionActivity.tsx index f1a71be0..00495cb1 100644 --- a/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionActivity.tsx +++ b/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionActivity.tsx @@ -1,6 +1,6 @@ import { isSameDay } from 'date-fns'; import { Loading, Icon, StatusLight } from '@umami/react-zen'; -import { Icons } from '@/components/icons'; +import { Bolt, Eye } from '@/components/icons'; import { useSessionActivityQuery, useTimezone } from '@/components/hooks'; import styles from './SessionActivity.module.css'; import { Fragment } from 'react'; @@ -42,7 +42,7 @@ export function SessionActivity({ {formatTimezoneDate(createdAt, 'pp')}
- {eventName ? : } + {eventName ? : }
{eventName || urlPath}
diff --git a/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionInfo.tsx b/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionInfo.tsx index c1c5d45a..2009bb35 100644 --- a/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionInfo.tsx +++ b/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionInfo.tsx @@ -1,7 +1,7 @@ import { Icon, TextField, Column, Row, Label, Box, Text } from '@umami/react-zen'; import { useFormat, useLocale, useMessages, useRegionNames, useTimezone } from '@/components/hooks'; import { TypeIcon } from '@/components/common/TypeIcon'; -import { Icons } from '@/components/icons'; +import { Location } from '@/components/icons'; export function SessionInfo({ data }) { const { locale } = useLocale(); @@ -44,7 +44,7 @@ export function SessionInfo({ data }) { - + {getRegionName(data?.region)} @@ -54,7 +54,7 @@ export function SessionInfo({ data }) { - + {data?.city} diff --git a/src/app/login/LoginForm.tsx b/src/app/login/LoginForm.tsx index 78088f1a..795f855a 100644 --- a/src/app/login/LoginForm.tsx +++ b/src/app/login/LoginForm.tsx @@ -13,7 +13,7 @@ import { useRouter } from 'next/navigation'; import { useApi, useMessages } from '@/components/hooks'; import { setUser } from '@/store/app'; import { setClientAuthToken } from '@/lib/client'; -import { Icons } from '@/components/icons'; +import { Logo } from '@/components/icons'; export function LoginForm() { const { formatMessage, labels, getMessage } = useMessages(); @@ -37,7 +37,7 @@ export function LoginForm() { return ( - + umami diff --git a/src/app/share/[...shareId]/Header.tsx b/src/app/share/[...shareId]/Header.tsx index 2c0d90f6..eece42bb 100644 --- a/src/app/share/[...shareId]/Header.tsx +++ b/src/app/share/[...shareId]/Header.tsx @@ -2,7 +2,7 @@ import { Row, Icon, Text, ThemeButton } from '@umami/react-zen'; import Link from 'next/link'; import { LanguageButton } from '@/components/input/LanguageButton'; import { SettingsButton } from '@/components/input/SettingsButton'; -import { Icons } from '@/components/icons'; +import { Logo } from '@/components/icons'; export function Header() { return ( @@ -10,7 +10,7 @@ export function Header() { - + umami diff --git a/src/assets/calendar.svg b/src/assets/calendar.svg deleted file mode 100644 index 230c4e66..00000000 --- a/src/assets/calendar.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/eye.svg b/src/assets/eye.svg deleted file mode 100644 index 09c93453..00000000 --- a/src/assets/eye.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/globe.svg b/src/assets/globe.svg deleted file mode 100644 index 509eaba6..00000000 --- a/src/assets/globe.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/link.svg b/src/assets/link.svg deleted file mode 100644 index c53d1ada..00000000 --- a/src/assets/link.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/moon.svg b/src/assets/moon.svg deleted file mode 100644 index 638286fd..00000000 --- a/src/assets/moon.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/sun.svg b/src/assets/sun.svg deleted file mode 100644 index c9654776..00000000 --- a/src/assets/sun.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/assets/users.svg b/src/assets/users.svg deleted file mode 100644 index 7036a22c..00000000 --- a/src/assets/users.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/components/common/Breadcrumb.tsx b/src/components/common/Breadcrumb.tsx index bc9931b4..163d33d9 100644 --- a/src/components/common/Breadcrumb.tsx +++ b/src/components/common/Breadcrumb.tsx @@ -1,7 +1,8 @@ -import Link from 'next/link'; -import { Flexbox, Icon, Icons, Text } from '@umami/react-zen'; -import styles from './Breadcrumb.module.css'; import { Fragment } from 'react'; +import Link from 'next/link'; +import { Row, Icon, Text } from '@umami/react-zen'; +import { Chevron } from '@/components/icons'; +import styles from './Breadcrumb.module.css'; export interface BreadcrumbProps { data: { @@ -12,7 +13,7 @@ export interface BreadcrumbProps { export function Breadcrumb({ data }: BreadcrumbProps) { return ( - + {data.map((a, i) => { return ( @@ -25,12 +26,12 @@ export function Breadcrumb({ data }: BreadcrumbProps) { )} {i !== data.length - 1 ? ( - + ) : null} ); })} - + ); } diff --git a/src/components/common/DateDisplay.tsx b/src/components/common/DateDisplay.tsx index 197adc94..ea94d727 100644 --- a/src/components/common/DateDisplay.tsx +++ b/src/components/common/DateDisplay.tsx @@ -1,7 +1,7 @@ import { Icon, Row, Text } from '@umami/react-zen'; import { differenceInDays, isSameDay } from 'date-fns'; import { useLocale } from '@/components/hooks'; -import { Lucide } from '@/components/icons'; +import { Calendar } from '@/components/icons'; import { formatDate } from '@/lib/date'; export function DateDisplay({ startDate, endDate }) { @@ -11,7 +11,7 @@ export function DateDisplay({ startDate, endDate }) { return ( - + {isSingleDate ? ( diff --git a/src/components/common/EmptyPlaceholder.tsx b/src/components/common/EmptyPlaceholder.tsx index 27efbab3..6e646f20 100644 --- a/src/components/common/EmptyPlaceholder.tsx +++ b/src/components/common/EmptyPlaceholder.tsx @@ -1,6 +1,6 @@ import { ReactNode } from 'react'; import { Icon, Text, Column } from '@umami/react-zen'; -import { Icons } from '@/components/icons'; +import { Logo } from '@/components/icons'; export interface EmptyPlaceholderProps { message?: string; @@ -11,7 +11,7 @@ export function EmptyPlaceholder({ message, children }: EmptyPlaceholderProps) { return ( - + {message}
{children}
diff --git a/src/components/common/ErrorMessage.tsx b/src/components/common/ErrorMessage.tsx index c8956c24..08a08331 100644 --- a/src/components/common/ErrorMessage.tsx +++ b/src/components/common/ErrorMessage.tsx @@ -1,6 +1,7 @@ -import { Icon, Icons, Text } from '@umami/react-zen'; +import { Icon, Text } from '@umami/react-zen'; import styles from './ErrorMessage.module.css'; import { useMessages } from '@/components/hooks'; +import { Alert } from '@/components/icons'; export function ErrorMessage() { const { formatMessage, messages } = useMessages(); @@ -8,7 +9,7 @@ export function ErrorMessage() { return (
- + {formatMessage(messages.error)}
diff --git a/src/components/common/FilterLink.tsx b/src/components/common/FilterLink.tsx index 9f58025e..37be4aed 100644 --- a/src/components/common/FilterLink.tsx +++ b/src/components/common/FilterLink.tsx @@ -1,8 +1,9 @@ import { ReactNode } from 'react'; import classNames from 'classnames'; import Link from 'next/link'; -import { Icon, Icons } from '@umami/react-zen'; +import { Icon } from '@umami/react-zen'; import { useMessages, useNavigation } from '@/components/hooks'; +import { ExternalLink } from '@/components/icons'; import styles from './FilterLink.module.css'; export interface FilterLinkProps { @@ -44,7 +45,7 @@ export function FilterLink({ {externalUrl && ( - + )} diff --git a/src/components/common/FilterRecord.tsx b/src/components/common/FilterRecord.tsx index a985e876..43f18c39 100644 --- a/src/components/common/FilterRecord.tsx +++ b/src/components/common/FilterRecord.tsx @@ -7,10 +7,10 @@ import { ListItem, Select, Icon, - Icons, Button, } from '@umami/react-zen'; import { useFilters } from '@/components/hooks'; +import { Close } from '@/components/icons'; export interface FilterRecordProps { name: string; @@ -55,7 +55,7 @@ export function FilterRecord({ diff --git a/src/components/common/HamburgerButton.tsx b/src/components/common/HamburgerButton.tsx index 7d146586..b381c1f5 100644 --- a/src/components/common/HamburgerButton.tsx +++ b/src/components/common/HamburgerButton.tsx @@ -1,5 +1,6 @@ -import { Button, Icon, Icons } from '@umami/react-zen'; +import { Button, Icon } from '@umami/react-zen'; import { useState } from 'react'; +import { Close, Menu } from '@/components/icons'; import { MobileMenu } from './MobileMenu'; export function HamburgerButton({ menuItems }: { menuItems: any[] }) { @@ -11,7 +12,7 @@ export function HamburgerButton({ menuItems }: { menuItems: any[] }) { return ( <> {active && } diff --git a/src/components/common/Pager.tsx b/src/components/common/Pager.tsx index 2706c107..3f1802dd 100644 --- a/src/components/common/Pager.tsx +++ b/src/components/common/Pager.tsx @@ -1,5 +1,6 @@ -import { Button, Icon, Icons, Row, Text } from '@umami/react-zen'; +import { Button, Icon, Row, Text } from '@umami/react-zen'; import { useMessages } from '@/components/hooks'; +import { Chevron } from '@/components/icons'; export interface PagerProps { page: string | number; @@ -38,12 +39,12 @@ export function Pager({ page, pageSize, count, onPageChange }: PagerProps) { {formatMessage(labels.pageOf, { current: page, total: maxPage })}
diff --git a/src/components/hooks/index.ts b/src/components/hooks/index.ts index f4df36a2..89fbdc4b 100644 --- a/src/components/hooks/index.ts +++ b/src/components/hooks/index.ts @@ -40,6 +40,7 @@ export * from './useFields'; export * from './useFilters'; export * from './useForceUpdate'; export * from './useFormat'; +export * from './useGlobalState'; export * from './useLanguageNames'; export * from './useLocale'; export * from './useMessages'; diff --git a/src/components/hooks/useGlobalState.ts b/src/components/hooks/useGlobalState.ts index 477cfe58..6f21226b 100644 --- a/src/components/hooks/useGlobalState.ts +++ b/src/components/hooks/useGlobalState.ts @@ -10,4 +10,4 @@ const useGlobalState = (key: string, value?: any) => { return [store(state => state[key]), (value: any) => store.setState({ [key]: value })]; }; -export default useGlobalState; +export { useGlobalState }; diff --git a/src/components/icons.ts b/src/components/icons.ts index 782abf5a..ca8da939 100644 --- a/src/components/icons.ts +++ b/src/components/icons.ts @@ -1,12 +1,33 @@ -import { Icons as ZenIcons } from '@umami/react-zen'; -import * as lucide from 'lucide-react'; -import * as LocalIcons from '@/components/svg'; - -const icons = { - ...ZenIcons, - ...LocalIcons, -}; - -export const Lucide = lucide; - -export const Icons = icons; +export { + AlertTriangle as Alert, + ArrowRight as Arrow, + Calendar, + ChevronRight as Chevron, + X as Close, + Copy, + Edit, + Ellipsis, + Eye, + ExternalLink, + Globe, + Grid2X2, + LayoutDashboard, + Link, + ListFilter, + LockKeyhole, + LogOut, + Menu, + Moon, + MoreHorizontal as More, + PanelLeft, + Plus, + RefreshCw as Refresh, + Settings, + Share, + Slash, + SquarePen, + Sun, + Trash, + Users, +} from 'lucide-react'; +export * from '@/components/svg'; diff --git a/src/components/input/FilterBar.tsx b/src/components/input/FilterBar.tsx index 578f8d36..66805a98 100644 --- a/src/components/input/FilterBar.tsx +++ b/src/components/input/FilterBar.tsx @@ -1,6 +1,7 @@ import { MouseEvent } from 'react'; -import { Button, Icon, Icons, Text, Row, TooltipTrigger, Tooltip } from '@umami/react-zen'; +import { Button, Icon, Text, Row, TooltipTrigger, Tooltip } from '@umami/react-zen'; import { useNavigation, useMessages, useFormat, useFilters } from '@/components/hooks'; +import { Close } from '@/components/icons'; import { isSearchOperator } from '@/lib/params'; export function FilterBar() { @@ -51,8 +52,8 @@ export function FilterBar() { {paramValue}
- handleCloseFilter(name, e)} size="xs" color> - + handleCloseFilter(name, e)} size="xs"> +
@@ -62,7 +63,7 @@ export function FilterBar() { diff --git a/src/components/input/MenuButton.tsx b/src/components/input/MenuButton.tsx index 4b99c979..3b769e16 100644 --- a/src/components/input/MenuButton.tsx +++ b/src/components/input/MenuButton.tsx @@ -1,6 +1,6 @@ import { ReactNode, Key } from 'react'; import { DialogTrigger, Button, Menu, Popover, Icon } from '@umami/react-zen'; -import { Lucide } from '@/components/icons'; +import { Ellipsis } from '@/components/icons'; export function MenuButton({ children, @@ -17,7 +17,7 @@ export function MenuButton({ diff --git a/src/components/input/MonthSelect.tsx b/src/components/input/MonthSelect.tsx index 68830e5b..65a009aa 100644 --- a/src/components/input/MonthSelect.tsx +++ b/src/components/input/MonthSelect.tsx @@ -1,6 +1,6 @@ import { Row, Text, Icon, Button, MenuTrigger, Popover, Menu, MenuItem } from '@umami/react-zen'; import { startOfMonth, endOfMonth, startOfYear, addMonths, subYears } from 'date-fns'; -import { Icons } from '@/components/icons'; +import { Chevron } from '@/components/icons'; import { useLocale } from '@/components/hooks'; import { formatDate } from '@/lib/date'; @@ -9,7 +9,7 @@ export function MonthSelect({ date = new Date(), onChange }) { const month = formatDate(date, 'MMMM', locale); const year = date.getFullYear(); - // eslint-disable-next-line @typescript-eslint/no-unused-vars + // eslint-disable-next-line const handleChange = (close: () => void, date: Date) => { onChange(`range:${startOfMonth(date).getTime()}:${endOfMonth(date).getTime()}`); close(); @@ -31,7 +31,7 @@ export function MonthSelect({ date = new Date(), onChange }) { @@ -50,13 +50,17 @@ export function MonthSelect({ date = new Date(), onChange }) { {years.map(year => { - return {year}; + return ( + + {year} + + ); })} diff --git a/src/components/input/RefreshButton.tsx b/src/components/input/RefreshButton.tsx index e880e2e9..77096dc0 100644 --- a/src/components/input/RefreshButton.tsx +++ b/src/components/input/RefreshButton.tsx @@ -1,7 +1,7 @@ import { LoadingButton, Icon, Tooltip, TooltipTrigger } from '@umami/react-zen'; import { setWebsiteDateRange } from '@/store/websites'; import { useDateRange } from '@/components/hooks'; -import { Icons } from '@/components/icons'; +import { Refresh } from '@/components/icons'; import { useMessages } from '@/components/hooks'; export function RefreshButton({ @@ -24,7 +24,7 @@ export function RefreshButton({ - + {formatMessage(labels.refresh)} diff --git a/src/components/input/SettingsButton.tsx b/src/components/input/SettingsButton.tsx index f05dcca2..39c1f057 100644 --- a/src/components/input/SettingsButton.tsx +++ b/src/components/input/SettingsButton.tsx @@ -1,7 +1,7 @@ import { Button, Icon, DialogTrigger, Popover, Column, Label } from '@umami/react-zen'; import { TimezoneSetting } from '@/app/(main)/settings/profile/TimezoneSetting'; import { DateRangeSetting } from '@/app/(main)/settings/profile/DateRangeSetting'; -import { Icons } from '@/components/icons'; +import { Gear } from '@/components/icons'; import { useMessages } from '@/components/hooks'; export function SettingsButton() { @@ -11,7 +11,7 @@ export function SettingsButton() { diff --git a/src/components/input/TeamsButton.tsx b/src/components/input/TeamsButton.tsx index b018839e..5cd324eb 100644 --- a/src/components/input/TeamsButton.tsx +++ b/src/components/input/TeamsButton.tsx @@ -12,10 +12,10 @@ import { Popover, Row, Box, - Icons, } from '@umami/react-zen'; import { User, Users } from 'lucide-react'; import { useLoginQuery, useMessages, useTeamsQuery, useNavigation } from '@/components/hooks'; +import { Chevron } from '@/components/icons'; export function TeamsButton({ className, @@ -46,8 +46,8 @@ export function TeamsButton({ {teamId ? : } {showText && {teamId ? team?.name : user.username}} - - + + diff --git a/src/components/input/WebsiteDateFilter.tsx b/src/components/input/WebsiteDateFilter.tsx index 071e2c28..cba483f5 100644 --- a/src/components/input/WebsiteDateFilter.tsx +++ b/src/components/input/WebsiteDateFilter.tsx @@ -9,7 +9,7 @@ import { Tooltip, } from '@umami/react-zen'; import { isAfter } from 'date-fns'; -import { Icons } from '@/components/icons'; +import { Chevron, Close, Compare } from '@/components/icons'; import { useDateRange, useMessages, useNavigation } from '@/components/hooks'; import { getOffsetDateRange } from '@/lib/date'; import { DateRange } from '@/lib/types'; @@ -65,12 +65,12 @@ export function WebsiteDateFilter({ @@ -95,7 +95,7 @@ export function WebsiteDateFilter({ {!isAllTime && allowCompare && ( {formatMessage(compare ? labels.cancel : labels.compareDates)} diff --git a/src/components/metrics/ChangeLabel.tsx b/src/components/metrics/ChangeLabel.tsx index 8f822b56..3a849cf6 100644 --- a/src/components/metrics/ChangeLabel.tsx +++ b/src/components/metrics/ChangeLabel.tsx @@ -1,6 +1,7 @@ import classNames from 'classnames'; -import { Icon, Icons, Text } from '@umami/react-zen'; +import { Icon, Text } from '@umami/react-zen'; import { ReactNode } from 'react'; +import { Arrow } from '@/components/icons'; import styles from './ChangeLabel.module.css'; export function ChangeLabel({ @@ -35,7 +36,7 @@ export function ChangeLabel({ > {!neutral && ( - + )} {children || value} diff --git a/src/components/metrics/MetricsTable.tsx b/src/components/metrics/MetricsTable.tsx index 1947be64..2a7e141b 100644 --- a/src/components/metrics/MetricsTable.tsx +++ b/src/components/metrics/MetricsTable.tsx @@ -5,7 +5,7 @@ import { LinkButton } from '@/components/common/LinkButton'; import { DEFAULT_ANIMATION_DURATION } from '@/lib/constants'; import { percentFilter } from '@/lib/filters'; import { useNavigation, useWebsiteMetricsQuery, useMessages, useFormat } from '@/components/hooks'; -import { Icons } from '@/components/icons'; +import { Arrow } from '@/components/icons'; import { ListTable, ListTableProps } from './ListTable'; export interface MetricsTableProps extends ListTableProps { @@ -98,7 +98,7 @@ export function MetricsTable({ {formatMessage(labels.more)} - + )} diff --git a/src/components/svg/Eye.tsx b/src/components/svg/Eye.tsx deleted file mode 100644 index ccd9963a..00000000 --- a/src/components/svg/Eye.tsx +++ /dev/null @@ -1,8 +0,0 @@ -import * as React from 'react'; -import type { SVGProps } from 'react'; -const SvgEye = (props: SVGProps) => ( - - - -); -export default SvgEye; diff --git a/src/components/svg/index.ts b/src/components/svg/index.ts index 77c1dc29..004d8638 100644 --- a/src/components/svg/index.ts +++ b/src/components/svg/index.ts @@ -3,27 +3,22 @@ export { default as BarChart } from './BarChart'; export { default as Bars } from './Bars'; export { default as Bolt } from './Bolt'; export { default as Bookmark } from './Bookmark'; -export { default as Calendar } from './Calendar'; export { default as Change } from './Change'; export { default as Clock } from './Clock'; export { default as Compare } from './Compare'; export { default as Dashboard } from './Dashboard'; export { default as Expand } from './Expand'; -export { default as Eye } from './Eye'; export { default as Flag } from './Flag'; export { default as Funnel } from './Funnel'; export { default as Gear } from './Gear'; -export { default as Globe } from './Globe'; export { default as Lightbulb } from './Lightbulb'; export { default as Lightning } from './Lightning'; -export { default as Link } from './Link'; export { default as Location } from './Location'; export { default as Lock } from './Lock'; export { default as LogoWhite } from './LogoWhite'; export { default as Logo } from './Logo'; export { default as Magnet } from './Magnet'; export { default as Money } from './Money'; -export { default as Moon } from './Moon'; export { default as Network } from './Network'; export { default as Nodes } from './Nodes'; export { default as Overview } from './Overview'; @@ -34,10 +29,8 @@ export { default as Redo } from './Redo'; export { default as Reports } from './Reports'; export { default as Security } from './Security'; export { default as Speaker } from './Speaker'; -export { default as Sun } from './Sun'; export { default as Tag } from './Tag'; export { default as Target } from './Target'; export { default as User } from './User'; -export { default as Users } from './Users'; export { default as Visitor } from './Visitor'; export { default as Website } from './Website';