diff --git a/package.json b/package.json index 7d3528fa..4e927d13 100644 --- a/package.json +++ b/package.json @@ -82,7 +82,7 @@ "@react-spring/web": "^10.0.1", "@svgr/cli": "^8.1.0", "@tanstack/react-query": "^5.85.5", - "@umami/react-zen": "^0.179.0", + "@umami/react-zen": "^0.180.0", "@umami/redis-client": "^0.29.0", "bcryptjs": "^3.0.2", "chalk": "^5.6.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a587f004..1c4b2a3c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -45,8 +45,8 @@ importers: specifier: ^5.85.5 version: 5.85.5(react@19.1.1) '@umami/react-zen': - specifier: ^0.179.0 - version: 0.179.0(@babel/core@7.28.3)(@types/react@19.1.12)(babel-plugin-react-compiler@19.1.0-rc.2)(immer@10.1.1)(use-sync-external-store@1.5.0(react@19.1.1)) + specifier: ^0.180.0 + version: 0.180.0(@babel/core@7.28.3)(@types/react@19.1.12)(babel-plugin-react-compiler@19.1.0-rc.2)(immer@10.1.1)(use-sync-external-store@1.5.0(react@19.1.1)) '@umami/redis-client': specifier: ^0.29.0 version: 0.29.0 @@ -2735,8 +2735,8 @@ packages: '@prisma/client': ^6.1.0 '@prisma/extension-read-replicas': ^0.4.1 - '@umami/react-zen@0.179.0': - resolution: {integrity: sha512-OS6Xa1tMO2PfXYXEB98XyOBctvnw/gE2eO3gK5mkJF5P3Ati6Z9KpTpj28Fxi7PgJiWYqcQ5enFzQqHXjYy/3A==} + '@umami/react-zen@0.180.0': + resolution: {integrity: sha512-/kkSeJ/D3WeW577Jb4W0/P6eBjWfGn6E4GHYS0W3K1RgNScz46bEcZe2HJc/l/ssiNoQcSE0vt63t0dUzUaqMQ==} '@umami/redis-client@0.29.0': resolution: {integrity: sha512-Jaqh++jskqDB7ny75pfC02OvKp1JTS4asGDsFrRL3qy8sxL3PAl9+/mybCJe4/6vWrXDJKqpgkSfUDJq2bFjyw==} @@ -10333,7 +10333,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@umami/react-zen@0.179.0(@babel/core@7.28.3)(@types/react@19.1.12)(babel-plugin-react-compiler@19.1.0-rc.2)(immer@10.1.1)(use-sync-external-store@1.5.0(react@19.1.1))': + '@umami/react-zen@0.180.0(@babel/core@7.28.3)(@types/react@19.1.12)(babel-plugin-react-compiler@19.1.0-rc.2)(immer@10.1.1)(use-sync-external-store@1.5.0(react@19.1.1))': dependencies: '@fontsource/jetbrains-mono': 5.2.6 '@internationalized/date': 3.9.0 diff --git a/src/app/(main)/settings/teams/TeamsSettingsPage.tsx b/src/app/(main)/settings/teams/TeamsSettingsPage.tsx index 9d5c8acd..b7cbe37e 100644 --- a/src/app/(main)/settings/teams/TeamsSettingsPage.tsx +++ b/src/app/(main)/settings/teams/TeamsSettingsPage.tsx @@ -9,7 +9,7 @@ export function TeamsSettingsPage() { - + ); diff --git a/src/app/(main)/teams/TeamsDataTable.tsx b/src/app/(main)/teams/TeamsDataTable.tsx index b023f77e..6475c456 100644 --- a/src/app/(main)/teams/TeamsDataTable.tsx +++ b/src/app/(main)/teams/TeamsDataTable.tsx @@ -2,7 +2,7 @@ import { ReactNode } from 'react'; import Link from 'next/link'; import { DataGrid } from '@/components/common/DataGrid'; import { TeamsTable } from './TeamsTable'; -import { useLoginQuery, useUserTeamsQuery } from '@/components/hooks'; +import { useLoginQuery, useNavigation, useUserTeamsQuery } from '@/components/hooks'; export function TeamsDataTable({ showActions, @@ -13,10 +13,12 @@ export function TeamsDataTable({ }) { const { user } = useLoginQuery(); const query = useUserTeamsQuery(user.id); + const { pathname } = useNavigation(); + const isSettings = pathname.includes('/settings'); const renderLink = (row: any) => { return ( - + {row.name} ); diff --git a/src/app/api/links/route.ts b/src/app/api/links/route.ts index 4f10a8fd..c6bc6ed2 100644 --- a/src/app/api/links/route.ts +++ b/src/app/api/links/route.ts @@ -31,7 +31,7 @@ export async function POST(request: Request) { url: z.string().max(500), slug: z.string().max(100), teamId: z.string().nullable().optional(), - id: z.string().uuid().nullable().optional(), + id: z.uuid().nullable().optional(), }); const { auth, body, error } = await parseRequest(request, schema); diff --git a/src/app/api/pixels/route.ts b/src/app/api/pixels/route.ts index 038d3660..06a25edd 100644 --- a/src/app/api/pixels/route.ts +++ b/src/app/api/pixels/route.ts @@ -30,7 +30,7 @@ export async function POST(request: Request) { name: z.string().max(100), slug: z.string().max(100), teamId: z.string().nullable().optional(), - id: z.string().uuid().nullable().optional(), + id: z.uuid().nullable().optional(), }); const { auth, body, error } = await parseRequest(request, schema); diff --git a/src/app/api/reports/route.ts b/src/app/api/reports/route.ts index 8777f645..fde1822c 100644 --- a/src/app/api/reports/route.ts +++ b/src/app/api/reports/route.ts @@ -8,7 +8,7 @@ import { getReports, createReport } from '@/queries'; export async function GET(request: Request) { const schema = z.object({ - websiteId: z.string().uuid().optional(), + websiteId: z.uuid().optional(), type: z.string().optional(), ...pagingParams, }); diff --git a/src/app/api/send/route.ts b/src/app/api/send/route.ts index 31ced9c2..fe8afa07 100644 --- a/src/app/api/send/route.ts +++ b/src/app/api/send/route.ts @@ -27,9 +27,9 @@ const schema = z.object({ type: z.enum(['event', 'identify']), payload: z .object({ - website: z.string().uuid().optional(), - link: z.string().uuid().optional(), - pixel: z.string().uuid().optional(), + website: z.uuid().optional(), + link: z.uuid().optional(), + pixel: z.uuid().optional(), data: anyObjectParam.optional(), hostname: z.string().max(100).optional(), language: z.string().max(35).optional(), diff --git a/src/app/api/teams/[teamId]/users/route.ts b/src/app/api/teams/[teamId]/users/route.ts index 2bd40e35..295d1d7f 100644 --- a/src/app/api/teams/[teamId]/users/route.ts +++ b/src/app/api/teams/[teamId]/users/route.ts @@ -50,7 +50,7 @@ export async function GET(request: Request, { params }: { params: Promise<{ team export async function POST(request: Request, { params }: { params: Promise<{ teamId: string }> }) { const schema = z.object({ - userId: z.string().uuid(), + userId: z.uuid(), role: teamRoleParam, }); diff --git a/src/app/api/users/route.ts b/src/app/api/users/route.ts index 3ebaeac1..cf6667a7 100644 --- a/src/app/api/users/route.ts +++ b/src/app/api/users/route.ts @@ -9,7 +9,7 @@ import { createUser, getUserByUsername } from '@/queries'; export async function POST(request: Request) { const schema = z.object({ - id: z.string().uuid().optional(), + id: z.uuid().optional(), username: z.string().max(255), password: z.string(), role: z.string().regex(/admin|user|view-only/i), diff --git a/src/app/api/websites/[websiteId]/transfer/route.ts b/src/app/api/websites/[websiteId]/transfer/route.ts index 1bb0a0f5..ae35f158 100644 --- a/src/app/api/websites/[websiteId]/transfer/route.ts +++ b/src/app/api/websites/[websiteId]/transfer/route.ts @@ -9,8 +9,8 @@ export async function POST( { params }: { params: Promise<{ websiteId: string }> }, ) { const schema = z.object({ - userId: z.string().uuid().optional(), - teamId: z.string().uuid().optional(), + userId: z.uuid().optional(), + teamId: z.uuid().optional(), }); const { auth, body, error } = await parseRequest(request, schema); diff --git a/src/app/api/websites/route.ts b/src/app/api/websites/route.ts index f9b18be8..8f0870f1 100644 --- a/src/app/api/websites/route.ts +++ b/src/app/api/websites/route.ts @@ -13,7 +13,7 @@ export async function POST(request: Request) { domain: z.string().max(500), shareId: z.string().max(50).nullable().optional(), teamId: z.string().nullable().optional(), - id: z.string().uuid().nullable().optional(), + id: z.uuid().nullable().optional(), }); const { auth, body, error } = await parseRequest(request, schema); diff --git a/src/components/common/DataGrid.tsx b/src/components/common/DataGrid.tsx index f4c94340..d95ee515 100644 --- a/src/components/common/DataGrid.tsx +++ b/src/components/common/DataGrid.tsx @@ -34,6 +34,7 @@ export function DataGrid({ const { data, error, isLoading, isFetching } = query; const { router, updateParams, query: queryParams } = useNavigation(); const [search, setSearch] = useState(queryParams?.search || data?.search || ''); + const showPager = allowPaging && data && data.count > data.pageSize; const handleSearch = (value: string) => { if (value !== search) { @@ -73,7 +74,7 @@ export function DataGrid({ {data && ( <> {typeof children === 'function' ? children(data) : children} - {allowPaging && data && ( + {showPager && (