Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion apps/dashboard/app/(dby)/dby/expired/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { ClockIcon } from "@databuddy/ui/icons";
import { Button } from "@databuddy/ui";

export const metadata: Metadata = {
title: "Link Expired - Databuddy",
title: "Link expired - Databuddy",
description: "This link has expired and is no longer available.",
};

Expand Down
2 changes: 1 addition & 1 deletion apps/dashboard/app/(dby)/dby/l/[slug]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@ export async function generateMetadata({

if (!link) {
return {
title: "Link Not Found",
title: "Link not found",
robots: { index: false, follow: false },
};
}
Expand Down
2 changes: 1 addition & 1 deletion apps/dashboard/app/(dby)/dby/not-found/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { LinkBreakIcon } from "@databuddy/ui/icons";
import { Button } from "@databuddy/ui";

export const metadata: Metadata = {
title: "Link Not Found - Databuddy",
title: "Link not found - Databuddy",
description: "This link could not be found.",
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import { usePathname } from "next/navigation";
import { TopBar } from "@/components/layout/top-bar";

const PAGE_TITLES: Record<string, string> = {
"/billing": "Billing Overview",
"/billing": "Billing overview",
"/billing/plans": "Plans",
"/billing/history": "Invoices",
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ export function CancelSubscriptionDialog({
{step === "feedback" ? (
<>
<Dialog.Header>
<Dialog.Title>Before you go...</Dialog.Title>
<Dialog.Title>Before you go…</Dialog.Title>
<Dialog.Description>
We'd love to know why you're canceling so we can improve
</Dialog.Description>
Expand Down Expand Up @@ -161,7 +161,7 @@ export function CancelSubscriptionDialog({
<Textarea
className="mt-2 resize-none"
onChange={(event) => setFeedbackDetails(event.target.value)}
placeholder="Tell us more (optional)..."
placeholder="Tell us more (optional)…"
rows={3}
value={feedbackDetails}
/>
Expand All @@ -174,7 +174,7 @@ export function CancelSubscriptionDialog({
onClick={resetAndClose}
variant="secondary"
>
Keep subscription
Keep plan
</Button>
<Button
className="w-full sm:w-auto"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -159,11 +159,11 @@ export function ConsumptionChart({
return (
<Card>
<Card.Header>
<Card.Title>Consumption Breakdown</Card.Title>
<Card.Title>Consumption breakdown</Card.Title>
<Card.Description>Daily event volume by type</Card.Description>
</Card.Header>
<Card.Content className="py-8">
<EmptyState icon={<CalendarIcon />} title="No data available" />
<EmptyState icon={<CalendarIcon />} title="No usage data" />
</Card.Content>
</Card>
);
Expand All @@ -182,7 +182,7 @@ export function ConsumptionChart({
<Card>
<Card.Header className="flex-row flex-wrap items-start justify-between gap-4">
<div>
<Card.Title>Consumption Breakdown</Card.Title>
<Card.Title>Consumption breakdown</Card.Title>
<Card.Description>Daily event volume by type</Card.Description>
</div>
<div className="flex flex-wrap items-center gap-2">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,10 @@ export function PlanStatusBadge({
isScheduled,
}: PlanStatusBadgeProps) {
if (isCanceled) {
return <Badge variant="destructive">Cancellation scheduled</Badge>;
return <Badge variant="warning">Cancellation scheduled</Badge>;
}
if (isScheduled) {
return <Badge variant="default">Scheduled</Badge>;
return <Badge variant="muted">Scheduled</Badge>;
}
return <Badge variant="success">Active</Badge>;
}
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ import { Badge, Card, EmptyState, Skeleton, Text } from "@databuddy/ui";

const EVENT_TYPE_CONFIG = {
event: {
name: "Page Views & Events",
description: "Standard analytics events and page views",
name: "Pageviews and events",
description: "Standard analytics events and pageviews",
icon: ChartBarIcon,
},
error: {
name: "Error Events",
name: "Error events",
description: "JavaScript errors and exceptions",
icon: BugIcon,
},
Expand All @@ -30,17 +30,17 @@ const EVENT_TYPE_CONFIG = {
icon: LightningIcon,
},
custom_event: {
name: "Custom Events",
name: "Custom events",
description: "Custom tracking events",
icon: TagIcon,
},
outgoing_link: {
name: "Outgoing Links",
name: "Outgoing links",
description: "External link click tracking",
icon: LinkIcon,
},
mcp: {
name: "MCP Tool Calls",
name: "MCP tool calls",
description: "Tool calls recorded by your MCP servers",
icon: PlugIcon,
},
Expand Down Expand Up @@ -89,11 +89,11 @@ export function UsageBreakdownTable({
return (
<Card>
<Card.Header>
<Card.Title>Usage by Event Type</Card.Title>
<Card.Title>Usage by event type</Card.Title>
<Card.Description>Breakdown of events by category</Card.Description>
</Card.Header>
<Card.Content className="py-8">
<EmptyState icon={<TableIcon />} title="No data available" />
<EmptyState icon={<TableIcon />} title="No usage data" />
</Card.Content>
</Card>
);
Expand All @@ -108,7 +108,7 @@ export function UsageBreakdownTable({
return (
<Card>
<Card.Header>
<Card.Title>Usage by Event Type</Card.Title>
<Card.Title>Usage by event type</Card.Title>
<Card.Description>Breakdown of events by category</Card.Description>
</Card.Header>
<Card.Content className="p-0">
Expand Down
7 changes: 4 additions & 3 deletions apps/dashboard/app/(main)/billing/history/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@ export default function HistoryPage() {
</div>
<Button onClick={onManageBilling} size="sm" variant="secondary">
<ArrowSquareOutIcon size={14} />
Billing Portal
Billing portal
</Button>
</Card.Header>
<Card.Content className="p-0">
Expand Down Expand Up @@ -130,7 +130,7 @@ export default function HistoryPage() {
{subscriptionHistory.length > 0 && (
<Card>
<Card.Header>
<Card.Title>Subscription History</Card.Title>
<Card.Title>Subscription history</Card.Title>
<Card.Description>
{subscriptionHistory.length} subscription
{subscriptionHistory.length === 1 ? "" : "s"}
Expand Down Expand Up @@ -355,7 +355,8 @@ function getInvoiceStatus(status: string) {
};
default:
return {
label: status,
label:
status.charAt(0).toUpperCase() + status.slice(1).replaceAll("_", " "),
icon: FileTextIcon,
variant: "default" as const,
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -51,17 +51,17 @@ const CATEGORY_CONFIG: Record<
{ color: string; icon: typeof BugIcon; label: string }
> = {
bug_report: {
label: "Bug Report",
label: "Bug report",
icon: BugIcon,
color: "bg-destructive/10 text-destructive",
},
feature_request: {
label: "Feature Request",
label: "Feature request",
icon: LightbulbIcon,
color: "bg-warning/10 text-warning",
},
ux_improvement: {
label: "UX Improvement",
label: "UX improvement",
icon: WrenchIcon,
color: "bg-sky-500/10 text-sky-500",
},
Expand Down Expand Up @@ -262,7 +262,7 @@ export function FeedbackList() {
<Card.Title>Feedback queue</Card.Title>
<Card.Description>
{isLoading
? "Loading submissions"
? "Loading submissions…"
: `${statusCounts.all.toLocaleString()} submissions / ${statusCounts.pending.toLocaleString()} pending`}
</Card.Description>
</div>
Expand Down
4 changes: 2 additions & 2 deletions apps/dashboard/app/(main)/home/_components/summary-stats.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ export function SummaryStats({
</div>
<div className="min-w-0 flex-1">
<p className="truncate font-medium text-foreground text-sm">
Active Now
Active now
</p>
<p className="truncate text-muted-foreground text-xs">
across {websiteCount} site{websiteCount === 1 ? "" : "s"}
Expand Down Expand Up @@ -122,7 +122,7 @@ export function SummaryStats({
</div>
<div className="min-w-0 flex-1">
<p className="truncate font-medium text-foreground text-sm">
Total Views
Total views
</p>
<p className="truncate text-muted-foreground text-xs">
last 7 days
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ export function ClicksChart({
<EmptyState
description="Click data will appear here as visitors interact with your link"
icon={<ChartLineIcon className="size-6" />}
title="No click data available"
title="No clicks yet"
/>
</div>
</Chart.Plot>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ export function LinkStatsContent() {
return (
<ResourceUnavailableState
backHref="/links"
backLabel="Back to Links"
backLabel="Back to links"
className="h-full p-6"
/>
);
Expand All @@ -159,7 +159,7 @@ export function LinkStatsContent() {
id="clicks-chart"
isLoading={isLoading}
showChart={true}
title="Total Clicks"
title="Total clicks"
value={formatNumber(stats?.totalClicks ?? 0)}
/>
<StatCard
Expand Down Expand Up @@ -202,15 +202,15 @@ export function LinkStatsContent() {
isLoading={isLoading}
minHeight={350}
tabs={sourceTabs}
title="Traffic Sources"
title="Traffic sources"
/>
<DataTable
description="Geographic distribution"
initialPageSize={8}
isLoading={isLoading}
minHeight={350}
tabs={geoTabs}
title="Geographic Distribution"
title="Geographic distribution"
/>
</div>
</div>
Expand Down
2 changes: 1 addition & 1 deletion apps/dashboard/app/(main)/links/[id]/layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -240,7 +240,7 @@ export default function LinkStatsLayout({ children }: LinkStatsLayoutProps) {
) : (
<PageNavigation
breadcrumb={{ label: "Links", href: "/links" }}
currentPage={link?.name ?? "Link Stats"}
currentPage={link?.name ?? "Link stats"}
variant="breadcrumb"
/>
)}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -350,7 +350,7 @@ export function ExpirationPicker({
type="button"
>
<CalendarIcon aria-hidden="true" className="size-4" />
<span>Custom date & time</span>
<span>Custom date and time</span>
{activePreset === "custom" && (
<CheckIcon aria-hidden="true" className="ml-auto size-3.5" />
)}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ function getSelectedLabel(
}
return (
folders.find((folder) => folder.id === value)?.name ??
(isLoading ? "Loading folder..." : "Unknown folder")
(isLoading ? "Loading folder…" : "Unknown folder")
);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ export function LinkFolderSheet({
<Sheet onOpenChange={onOpenChange} open={open}>
<Sheet.Content className="w-full sm:max-w-md" side="right">
<Sheet.Header>
<Sheet.Title>Create Folder</Sheet.Title>
<Sheet.Title>Create folder</Sheet.Title>
<Sheet.Description>
Name the folder for this organization.
</Sheet.Description>
Expand All @@ -48,7 +48,7 @@ export function LinkFolderSheet({
>
<Sheet.Body>
<Field>
<Field.Label>Folder Name</Field.Label>
<Field.Label>Folder name</Field.Label>
<Input
aria-invalid={error ? true : undefined}
autoFocus
Expand All @@ -69,7 +69,7 @@ export function LinkFolderSheet({
Cancel
</Button>
<Button loading={isCreating} type="submit">
Create Folder
Create folder
</Button>
</Sheet.Footer>
</form>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ export const linkFormSchema = z.object({
return false;
}
},
{ message: "Please enter a valid URL" }
{ message: "Enter a valid URL" }
),
slug: z
.string()
Expand Down
6 changes: 3 additions & 3 deletions apps/dashboard/app/(main)/links/_components/link-item.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ export function LinkRow({
</span>
{link.deepLinkApp && (
<span className="flex shrink-0 items-center gap-1 rounded bg-primary/10 px-1.5 py-0.5 text-primary text-xs">
{getDeepLinkApp(link.deepLinkApp)?.name ?? "Deep Link"}
{getDeepLinkApp(link.deepLinkApp)?.name ?? "Deep link"}
</span>
)}
<ExpiryBadge link={link} />
Expand Down Expand Up @@ -166,7 +166,7 @@ export function LinkRow({
</DropdownMenu.Item>
<DropdownMenu.Item className="gap-2" onClick={() => onShowQr(link)}>
<QrCodeIcon className="size-4" />
QR Code
QR code
</DropdownMenu.Item>
<DropdownMenu.Separator />
<DropdownMenu.Item className="gap-2" onClick={() => onEdit(link)}>
Expand Down Expand Up @@ -216,7 +216,7 @@ export function LinksList({
<div className="px-5 py-12">
<EmptyState
action={{
label: "Create Your First Link",
label: "Create link",
onClick: onCreateLink,
}}
description="Create short links to track clicks and measure engagement across your marketing campaigns."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ const SORT_LABELS: Record<LinkSortOption, string> = {

const TYPE_LABELS: Record<LinkTypeFilter, string> = {
all: "All",
short: "Short Links",
deep: "Deep Links",
short: "Short links",
deep: "Deep links",
};

const UNFILED_VALUE = "__unfiled__";
Expand Down Expand Up @@ -162,10 +162,10 @@ export function LinksSearchBar({
>
<DropdownMenu.RadioItem value="all">All</DropdownMenu.RadioItem>
<DropdownMenu.RadioItem value="short">
Short Links
Short links
</DropdownMenu.RadioItem>
<DropdownMenu.RadioItem value="deep">
Deep Links
Deep links
</DropdownMenu.RadioItem>
</DropdownMenu.RadioGroup>
</DropdownMenu.Content>
Expand Down
Loading
Loading