diff --git a/package.components.json b/package.components.json index d231f5b9b..927e06604 100644 --- a/package.components.json +++ b/package.components.json @@ -1,6 +1,6 @@ { "name": "@umami/components", - "version": "0.128.0", + "version": "0.127.0", "description": "Umami React components.", "author": "Mike Cao ", "license": "MIT", diff --git a/src/app/(main)/settings/preferences/DateRangeSetting.tsx b/src/app/(main)/settings/preferences/DateRangeSetting.tsx index c0e8221e8..e47ce0b69 100644 --- a/src/app/(main)/settings/preferences/DateRangeSetting.tsx +++ b/src/app/(main)/settings/preferences/DateRangeSetting.tsx @@ -14,10 +14,7 @@ export function DateRangeSetting() { setDate(value); }; - const handleReset = () => { - setItem(DATE_RANGE_CONFIG, DEFAULT_DATE_RANGE_VALUE); - setDate(DEFAULT_DATE_RANGE_VALUE); - }; + const handleReset = () => setItem(DATE_RANGE_CONFIG, DEFAULT_DATE_RANGE_VALUE); return ( diff --git a/src/app/(main)/settings/websites/[websiteId]/WebsiteSettingsPage.tsx b/src/app/(main)/settings/websites/[websiteId]/WebsiteSettingsPage.tsx index 0dc7bcc14..d5c129eec 100644 --- a/src/app/(main)/settings/websites/[websiteId]/WebsiteSettingsPage.tsx +++ b/src/app/(main)/settings/websites/[websiteId]/WebsiteSettingsPage.tsx @@ -2,15 +2,12 @@ import { WebsiteProvider } from '@/app/(main)/websites/WebsiteProvider'; import { WebsiteSettings } from '@/app/(main)/websites/[websiteId]/settings/WebsiteSettings'; import { WebsiteSettingsHeader } from '@/app/(main)/websites/[websiteId]/settings/WebsiteSettingsHeader'; -import { Column } from '@umami/react-zen'; export function WebsiteSettingsPage({ websiteId }: { websiteId: string }) { return ( - - - - + + ); } diff --git a/src/app/(main)/websites/[websiteId]/WebsiteHeader.tsx b/src/app/(main)/websites/[websiteId]/WebsiteHeader.tsx index 0f9f81236..4a2ffdf0a 100644 --- a/src/app/(main)/websites/[websiteId]/WebsiteHeader.tsx +++ b/src/app/(main)/websites/[websiteId]/WebsiteHeader.tsx @@ -7,7 +7,7 @@ import { WebsiteShareForm } from '@/app/(main)/websites/[websiteId]/settings/Web import { useMessages, useNavigation, useWebsite } from '@/components/hooks'; import { LinkButton } from '@/components/common/LinkButton'; -export function WebsiteHeader({ showActions }: { showActions?: boolean }) { +export function WebsiteHeader() { const website = useWebsite(); const { renderUrl, pathname } = useNavigation(); const isSettings = pathname.endsWith('/settings'); @@ -20,18 +20,15 @@ export function WebsiteHeader({ showActions }: { showActions?: boolean }) { } marginBottom="3"> - - {showActions && ( - - - - - - - Edit - - - )} + + + + + + + Edit + + ); diff --git a/src/app/(main)/websites/[websiteId]/WebsiteLayout.tsx b/src/app/(main)/websites/[websiteId]/WebsiteLayout.tsx index 617669212..e25541e9a 100644 --- a/src/app/(main)/websites/[websiteId]/WebsiteLayout.tsx +++ b/src/app/(main)/websites/[websiteId]/WebsiteLayout.tsx @@ -21,7 +21,7 @@ export function WebsiteLayout({ websiteId, children }: { websiteId: string; chil )} - + {children} diff --git a/src/app/(main)/websites/[websiteId]/WebsiteNav.tsx b/src/app/(main)/websites/[websiteId]/WebsiteNav.tsx index df476e79b..3696b7861 100644 --- a/src/app/(main)/websites/[websiteId]/WebsiteNav.tsx +++ b/src/app/(main)/websites/[websiteId]/WebsiteNav.tsx @@ -1,5 +1,14 @@ import { Text } from '@umami/react-zen'; -import { Eye, User, Clock, Ungroup, Tag, ChartPie, UserPlus, GitCompare } from '@/components/icons'; +import { + Eye, + User, + Clock, + Sheet, + Tag, + ChartPie, + UserPlus, + GitCompareArrows, +} from '@/components/icons'; import { Lightning, Path, Money, Target, Funnel, Magnet, Network } from '@/components/svg'; import { useMessages, useNavigation } from '@/components/hooks'; import { SideMenu } from '@/components/common/SideMenu'; @@ -47,13 +56,13 @@ export function WebsiteNav({ websiteId }: { websiteId: string }) { { id: 'compare', label: formatMessage(labels.compare), - icon: , + icon: , path: renderPath('/compare'), }, { id: 'breakdown', label: formatMessage(labels.breakdown), - icon: , + icon: , path: renderPath('/breakdown'), }, ], diff --git a/src/app/(main)/websites/[websiteId]/sessions/SessionProperties.tsx b/src/app/(main)/websites/[websiteId]/sessions/SessionProperties.tsx index e66302ad6..ea4b5f037 100644 --- a/src/app/(main)/websites/[websiteId]/sessions/SessionProperties.tsx +++ b/src/app/(main)/websites/[websiteId]/sessions/SessionProperties.tsx @@ -1,5 +1,5 @@ import { useMemo, useState } from 'react'; -import { Select, ListItem, Grid, Column } from '@umami/react-zen'; +import { Select, ListItem, Grid } from '@umami/react-zen'; import { useMessages, useSessionDataPropertiesQuery, @@ -24,26 +24,25 @@ export function SessionProperties({ websiteId }: { websiteId: string }) { data={data} error={error} minHeight="300px" + gap="6" > - - {data && ( - - - - )} - {propertyName && } - + {data && ( + + + + )} + {propertyName && } ); } @@ -85,6 +84,7 @@ const SessionValues = ({ websiteId, propertyName }) => { data={data} error={error} minHeight="300px" + gap="6" > {data && ( diff --git a/src/app/(main)/websites/[websiteId]/sessions/SessionsPage.tsx b/src/app/(main)/websites/[websiteId]/sessions/SessionsPage.tsx index ae0d41043..68eef29c6 100644 --- a/src/app/(main)/websites/[websiteId]/sessions/SessionsPage.tsx +++ b/src/app/(main)/websites/[websiteId]/sessions/SessionsPage.tsx @@ -1,35 +1,18 @@ 'use client'; import { Key, useState } from 'react'; -import { TabList, Tab, Tabs, TabPanel, Column, Modal, Dialog } from '@umami/react-zen'; +import { TabList, Tab, Tabs, TabPanel, Column } from '@umami/react-zen'; import { SessionsDataTable } from './SessionsDataTable'; import { SessionProperties } from './SessionProperties'; -import { useMessages, useNavigation } from '@/components/hooks'; +import { useMessages } from '@/components/hooks'; import { Panel } from '@/components/common/Panel'; import { WebsiteControls } from '@/app/(main)/websites/[websiteId]/WebsiteControls'; import { getItem, setItem } from '@/lib/storage'; -import { SessionProfile } from '@/app/(main)/websites/[websiteId]/sessions/SessionProfile'; const KEY_NAME = 'umami.sessions.tab'; export function SessionsPage({ websiteId }) { const [tab, setTab] = useState(getItem(KEY_NAME) || 'activity'); const { formatMessage, labels } = useMessages(); - const { - router, - query: { session }, - updateParams, - } = useNavigation(); - - const handleClose = (close: () => void) => { - router.push(updateParams({ session: undefined })); - close(); - }; - - const handleOpenChange = (isOpen: boolean) => { - if (!isOpen) { - router.push(updateParams({ session: undefined })); - } - }; const handleSelect = (value: Key) => { setItem(KEY_NAME, value); @@ -53,26 +36,6 @@ export function SessionsPage({ websiteId }) { - - - {({ close }) => { - return ( - handleClose(close)} - /> - ); - }} - - ); } diff --git a/src/app/(main)/websites/[websiteId]/sessions/SessionsTable.tsx b/src/app/(main)/websites/[websiteId]/sessions/SessionsTable.tsx index 391c57f43..fa3be6c7b 100644 --- a/src/app/(main)/websites/[websiteId]/sessions/SessionsTable.tsx +++ b/src/app/(main)/websites/[websiteId]/sessions/SessionsTable.tsx @@ -1,6 +1,6 @@ import Link from 'next/link'; import { DataColumn, DataTable } from '@umami/react-zen'; -import { useFormat, useMessages, useNavigation } from '@/components/hooks'; +import { useFormat, useMessages } from '@/components/hooks'; import { Avatar } from '@/components/common/Avatar'; import { TypeIcon } from '@/components/common/TypeIcon'; import { DateDistance } from '@/components/common/DateDistance'; @@ -8,13 +8,12 @@ import { DateDistance } from '@/components/common/DateDistance'; export function SessionsTable({ data = [] }: { data: any[]; showDomain?: boolean }) { const { formatMessage, labels } = useMessages(); const { formatValue } = useFormat(); - const { updateParams } = useNavigation(); return ( {(row: any) => ( - + )} diff --git a/src/app/(main)/websites/[websiteId]/sessions/SessionActivity.tsx b/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionActivity.tsx similarity index 97% rename from src/app/(main)/websites/[websiteId]/sessions/SessionActivity.tsx rename to src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionActivity.tsx index 4dcf08b42..4ed55427a 100644 --- a/src/app/(main)/websites/[websiteId]/sessions/SessionActivity.tsx +++ b/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionActivity.tsx @@ -47,7 +47,7 @@ export function SessionActivity({ return ( - {showHeader && {formatTimezoneDate(createdAt, 'PPPP')}} + {showHeader && {formatTimezoneDate(createdAt, 'PPPP')}} {formatTimezoneDate(createdAt, 'pp')} diff --git a/src/app/(main)/websites/[websiteId]/sessions/SessionData.tsx b/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionData.tsx similarity index 100% rename from src/app/(main)/websites/[websiteId]/sessions/SessionData.tsx rename to src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionData.tsx diff --git a/src/app/(main)/websites/[websiteId]/sessions/SessionProfile.tsx b/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionDetailsPage.tsx similarity index 58% rename from src/app/(main)/websites/[websiteId]/sessions/SessionProfile.tsx rename to src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionDetailsPage.tsx index bdbfbc580..86e3cdbf2 100644 --- a/src/app/(main)/websites/[websiteId]/sessions/SessionProfile.tsx +++ b/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionDetailsPage.tsx @@ -1,52 +1,37 @@ -import { Grid, Row, Column, Tabs, TabList, Tab, TabPanel, Icon, Button } from '@umami/react-zen'; +'use client'; +import { Grid, Row, Column, Tabs, TabList, Tab, TabPanel } from '@umami/react-zen'; import { Avatar } from '@/components/common/Avatar'; import { LoadingPanel } from '@/components/common/LoadingPanel'; -import { X } from '@/components/icons'; import { useMessages, useWebsiteSessionQuery } from '@/components/hooks'; import { SessionActivity } from './SessionActivity'; import { SessionData } from './SessionData'; import { SessionInfo } from './SessionInfo'; import { SessionStats } from './SessionStats'; +import { Panel } from '@/components/common/Panel'; -export function SessionProfile({ +export function SessionDetailsPage({ websiteId, sessionId, - onClose, }: { websiteId: string; sessionId: string; - onClose?: () => void; }) { const { data, isLoading, error } = useWebsiteSessionQuery(websiteId, sessionId); const { formatMessage, labels } = useMessages(); return ( - + {data && ( - - - - - - - - - - - - - - + + + + + + + + + + {formatMessage(labels.activity)} @@ -64,9 +49,9 @@ export function SessionProfile({ - - - + + + )} ); diff --git a/src/app/(main)/websites/[websiteId]/sessions/SessionInfo.tsx b/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionInfo.tsx similarity index 93% rename from src/app/(main)/websites/[websiteId]/sessions/SessionInfo.tsx rename to src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionInfo.tsx index c2127cf57..4ebb462c3 100644 --- a/src/app/(main)/websites/[websiteId]/sessions/SessionInfo.tsx +++ b/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionInfo.tsx @@ -1,5 +1,5 @@ import { ReactNode } from 'react'; -import { Icon, TextField, Column, Row, Label } from '@umami/react-zen'; +import { Icon, TextField, Column, Row, Label, Text } from '@umami/react-zen'; import { useFormat, useLocale, useMessages, useRegionNames } from '@/components/hooks'; import { TypeIcon } from '@/components/common/TypeIcon'; import { KeyRound, Calendar } from '@/components/icons'; @@ -15,7 +15,7 @@ export function SessionInfo({ data }) { return ( - + }> @@ -83,7 +83,7 @@ const Info = ({ {icon && {icon}} - {children || '—'} + {children || '—'} ); diff --git a/src/app/(main)/websites/[websiteId]/sessions/SessionStats.tsx b/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionStats.tsx similarity index 100% rename from src/app/(main)/websites/[websiteId]/sessions/SessionStats.tsx rename to src/app/(main)/websites/[websiteId]/sessions/[sessionId]/SessionStats.tsx diff --git a/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/page.tsx b/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/page.tsx new file mode 100644 index 000000000..8d85a7c73 --- /dev/null +++ b/src/app/(main)/websites/[websiteId]/sessions/[sessionId]/page.tsx @@ -0,0 +1,16 @@ +import { SessionDetailsPage } from './SessionDetailsPage'; +import { Metadata } from 'next'; + +export default async function WebsitePage({ + params, +}: { + params: Promise<{ websiteId: string; sessionId: string }>; +}) { + const { websiteId, sessionId } = await params; + + return ; +} + +export const metadata: Metadata = { + title: 'Websites', +}; diff --git a/src/app/share/[...shareId]/SharePage.tsx b/src/app/share/[...shareId]/SharePage.tsx index f33798a1c..0fa3c0bfe 100644 --- a/src/app/share/[...shareId]/SharePage.tsx +++ b/src/app/share/[...shareId]/SharePage.tsx @@ -6,7 +6,6 @@ import { useShareTokenQuery } from '@/components/hooks'; import { PageBody } from '@/components/common/PageBody'; import { Header } from './Header'; import { Footer } from './Footer'; -import { WebsiteHeader } from '@/app/(main)/websites/[websiteId]/WebsiteHeader'; export function SharePage({ shareId }) { const { shareToken, isLoading } = useShareTokenQuery(shareId); @@ -20,7 +19,6 @@ export function SharePage({ shareId }) {
-