revert prisma schema to latest, add global css for scroll-bar, fix css

This commit is contained in:
Francis Cao 2026-02-06 15:06:10 -08:00
parent c479a20cc0
commit 9b814aa1ca
13 changed files with 76 additions and 24 deletions

View file

@ -10,7 +10,7 @@ datasource db {
}
model User {
id String @id @unique @map("user_id") @db.Uuid
id String @id() @map("user_id") @db.Uuid
username String @unique @db.VarChar(255)
password String @db.VarChar(60)
role String @map("role") @db.VarChar(50)
@ -32,7 +32,7 @@ model User {
}
model Session {
id String @id @unique @map("session_id") @db.Uuid
id String @id() @map("session_id") @db.Uuid
websiteId String @map("website_id") @db.Uuid
browser String? @db.VarChar(20)
os String? @db.VarChar(20)
@ -64,7 +64,7 @@ model Session {
}
model Website {
id String @id @unique @map("website_id") @db.Uuid
id String @id() @map("website_id") @db.Uuid
name String @db.VarChar(100)
domain String? @db.VarChar(500)
resetAt DateTime? @map("reset_at") @db.Timestamptz(6)
@ -185,7 +185,7 @@ model SessionData {
}
model Team {
id String @id() @unique() @map("team_id") @db.Uuid
id String @id() @map("team_id") @db.Uuid
name String @db.VarChar(50)
accessCode String? @unique @map("access_code") @db.VarChar(50)
logoUrl String? @map("logo_url") @db.VarChar(2183)
@ -197,14 +197,14 @@ model Team {
members TeamUser[]
links Link[]
pixels Pixel[]
boards Board[]
boards Board[]
@@index([accessCode])
@@map("team")
}
model TeamUser {
id String @id() @unique() @map("team_user_id") @db.Uuid
id String @id() @map("team_user_id") @db.Uuid
teamId String @map("team_id") @db.Uuid
userId String @map("user_id") @db.Uuid
role String @db.VarChar(50)
@ -220,7 +220,7 @@ model TeamUser {
}
model Report {
id String @id() @unique() @map("report_id") @db.Uuid
id String @id() @map("report_id") @db.Uuid
userId String @map("user_id") @db.Uuid
websiteId String @map("website_id") @db.Uuid
type String @db.VarChar(50)
@ -241,7 +241,7 @@ model Report {
}
model Segment {
id String @id() @unique() @map("segment_id") @db.Uuid
id String @id() @map("segment_id") @db.Uuid
websiteId String @map("website_id") @db.Uuid
type String @db.VarChar(50)
name String @db.VarChar(200)
@ -256,7 +256,7 @@ model Segment {
}
model Revenue {
id String @id() @unique() @map("revenue_id") @db.Uuid
id String @id() @map("revenue_id") @db.Uuid
websiteId String @map("website_id") @db.Uuid
sessionId String @map("session_id") @db.Uuid
eventId String @map("event_id") @db.Uuid
@ -276,7 +276,7 @@ model Revenue {
}
model Link {
id String @id() @unique() @map("link_id") @db.Uuid
id String @id() @map("link_id") @db.Uuid
name String @db.VarChar(100)
url String @db.VarChar(500)
slug String @unique() @db.VarChar(100)
@ -297,7 +297,7 @@ model Link {
}
model Pixel {
id String @id() @unique() @map("pixel_id") @db.Uuid
id String @id() @map("pixel_id") @db.Uuid
name String @db.VarChar(100)
slug String @unique() @db.VarChar(100)
userId String? @map("user_id") @db.Uuid
@ -317,7 +317,7 @@ model Pixel {
}
model Board {
id String @id() @unique() @map("board_id") @db.Uuid
id String @id() @map("board_id") @db.Uuid
type String @db.VarChar(50)
name String @db.VarChar(200)
description String @db.VarChar(500)
@ -339,8 +339,9 @@ model Board {
}
model Share {
id String @id() @unique() @map("share_id") @db.Uuid
id String @id() @map("share_id") @db.Uuid
entityId String @map("entity_id") @db.Uuid
name String @db.VarChar(200)
shareType Int @map("share_type") @db.Integer
slug String @unique() @db.VarChar(100)
parameters Json
@ -349,4 +350,4 @@ model Share {
@@index([entityId])
@@map("share")
}
}

View file

@ -49,8 +49,8 @@ export function App({ children }) {
<Column display={{ base: 'none', lg: 'flex' }}>
<SideNav />
</Column>
<Column alignItems="center" overflowY="auto" overflowX="hidden" position="relative">
{children}
<Column overflowX="hidden" position="relative">
<Column alignItems="center">{children}</Column>
</Column>
<UpdateNotice user={user} config={config} />
{process.env.NODE_ENV === 'production' && !pathname.includes('/share/') && (

View file

@ -12,7 +12,7 @@ export function SettingsLayout({ children }: { children: ReactNode }) {
width="240px"
height="100%"
border="right"
backgroundColor
backgroundColor={'surface-raised'}
marginRight="2"
padding="3"
>

View file

@ -21,7 +21,12 @@ export function DateRangeSetting() {
return (
<Row gap="3">
<DateFilter value={date} onChange={handleChange} placement="bottom start" />
<DateFilter
value={date}
onChange={handleChange}
placement="bottom start"
style={{ minWidth: '250px' }}
/>
<Button onPress={handleReset}>{formatMessage(labels.reset)}</Button>
</Row>
);

View file

@ -34,6 +34,7 @@ export function LanguageSetting() {
onSearch={setSearch}
onOpenChange={handleOpen}
listProps={{ style: { maxHeight: 300 } }}
style={{ minWidth: '250px' }}
>
{items.map(item => (
<ListItem key={item} id={item}>

View file

@ -15,7 +15,7 @@ export function PreferenceSettings() {
}
return (
<Column width="400px" gap="6">
<Column gap="6">
<Column>
<Label>{formatMessage(labels.defaultDateRange)}</Label>
<DateRangeSetting />

View file

@ -30,6 +30,7 @@ export function TimezoneSetting() {
onSearch={setSearch}
onOpenChange={handleOpen}
listProps={{ style: { maxHeight: 300 } }}
style={{ minWidth: '250px' }}
>
{items.map((item: any) => (
<ListItem key={item} id={item}>

View file

@ -29,7 +29,7 @@ export function ProfileSettings() {
};
return (
<Column width="400px" gap="6">
<Column gap="6">
<Column>
<Label>{formatMessage(labels.username)}</Label>
{username}

View file

@ -61,7 +61,7 @@ export function SessionActivity({
return (
<Column key={eventId} gap>
{showHeader && <Heading size="sm">{formatTimezoneDate(createdAt, 'PPPP')}</Heading>}
{showHeader && <Heading size="lg">{formatTimezoneDate(createdAt, 'PPPP')}</Heading>}
<Row alignItems="center" gap="6" height="40px">
<StatusLight color={`#${visitId?.substring(0, 6)}`}>
<Text wrap="nowrap">{formatTimezoneDate(createdAt, 'pp')}</Text>

View file

@ -24,3 +24,41 @@ a:hover {
color: var(--text-primary);
text-decoration: none;
}
::-webkit-scrollbar {
width: 15px;
background: transparent;
}
::-webkit-scrollbar-track {
border: 7px solid rgba(0, 0, 0, 0);
background-color: var(--border-default);
background-clip: padding-box;
}
::-webkit-scrollbar-thumb {
border: 7px solid rgba(0, 0, 0, 0);
background-color: var(--text-disabled);
border-radius: var(--border-radius-full);
background-clip: padding-box;
}
::-webkit-scrollbar-thumb:hover {
border: 4px solid rgba(0, 0, 0, 0);
background-clip: padding-box;
}
/* Fix autofill background color to match dark theme */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active,
textarea:-webkit-autofill,
textarea:-webkit-autofill:hover,
textarea:-webkit-autofill:focus,
select:-webkit-autofill,
select:-webkit-autofill:hover,
select:-webkit-autofill:focus {
-webkit-box-shadow: 0 0 0 1000px var(--background-color) inset !important;
transition: color 5000s ease-in-out 0s;
}

View file

@ -4,7 +4,13 @@ import { LoginForm } from './LoginForm';
export function LoginPage() {
return (
<Column alignItems="center" height="100vh" backgroundColor="surface-raised" paddingTop="12">
<Column
alignItems="center"
justifyContent="flex-start"
height="100vh"
backgroundColor="surface-raised"
style={{ paddingTop: '15vh' }}
>
<LoginForm />
</Column>
);

View file

@ -55,7 +55,7 @@ export function NavMenu({
<Column gap overflowY="auto" justifyContent="space-between" position="sticky">
{title && (
<Row padding>
<Heading size="sm">{title}</Heading>
<Heading size="lg">{title}</Heading>
</Row>
)}
<Column gap="6" {...props}>

View file

@ -96,7 +96,7 @@ export function WeeklyTraffic({ websiteId }: { websiteId: string }) {
</Row>
</Focusable>
<Tooltip placement="right">
<Text size="sm">{`${formatMessage(labels.visitors)}: ${count}`}</Text>
<Text size="base">{`${formatMessage(labels.visitors)}: ${count}`}</Text>
</Tooltip>
</TooltipTrigger>
);