prjct-cli 0.18.2 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +82 -0
- package/CLAUDE.md +74 -211
- package/core/agentic/prompt-builder.ts +3 -7
- package/core/command-registry/optional-commands.ts +0 -20
- package/core/infrastructure/command-installer/command-installer.ts +8 -1
- package/core/infrastructure/command-installer/global-config.ts +31 -1
- package/core/infrastructure/command-installer/index.ts +1 -1
- package/core/infrastructure/setup.ts +3 -0
- package/package.json +3 -17
- package/templates/agentic/agents/uxui.md +210 -0
- package/templates/commands/bug.md +219 -41
- package/templates/commands/done.md +57 -258
- package/templates/commands/feature.md +368 -80
- package/templates/commands/now.md +72 -277
- package/templates/commands/ship.md +167 -246
- package/templates/commands/sync.md +62 -3
- package/templates/commands/test.md +160 -20
- package/templates/global/CLAUDE.md +40 -205
- package/templates/global/docs/agents.md +88 -0
- package/templates/global/docs/architecture.md +103 -0
- package/templates/global/docs/commands.md +98 -0
- package/templates/global/docs/validation.md +95 -0
- package/bin/dev.js +0 -216
- package/bin/serve.js +0 -361
- package/packages/web/README.md +0 -36
- package/packages/web/app/api/claude/sessions/route.ts +0 -44
- package/packages/web/app/api/claude/status/route.ts +0 -34
- package/packages/web/app/api/projects/[id]/icon/route.ts +0 -33
- package/packages/web/app/api/projects/[id]/momentum/route.ts +0 -257
- package/packages/web/app/api/projects/[id]/route.ts +0 -29
- package/packages/web/app/api/projects/[id]/stats/route.ts +0 -41
- package/packages/web/app/api/projects/[id]/status/route.ts +0 -21
- package/packages/web/app/api/projects/route.ts +0 -16
- package/packages/web/app/api/sessions/current/route.ts +0 -132
- package/packages/web/app/api/sessions/history/route.ts +0 -204
- package/packages/web/app/error.tsx +0 -34
- package/packages/web/app/favicon.ico +0 -0
- package/packages/web/app/globals.css +0 -198
- package/packages/web/app/layout.tsx +0 -53
- package/packages/web/app/loading.tsx +0 -7
- package/packages/web/app/not-found.tsx +0 -25
- package/packages/web/app/page.tsx +0 -12
- package/packages/web/app/project/[id]/code/layout.tsx +0 -18
- package/packages/web/app/project/[id]/code/page.tsx +0 -408
- package/packages/web/app/project/[id]/error.tsx +0 -41
- package/packages/web/app/project/[id]/loading.tsx +0 -9
- package/packages/web/app/project/[id]/not-found.tsx +0 -27
- package/packages/web/app/project/[id]/page.tsx +0 -384
- package/packages/web/app/project/[id]/reports/page.tsx +0 -59
- package/packages/web/app/project/[id]/reports/print/page.tsx +0 -58
- package/packages/web/app/sessions/page.tsx +0 -165
- package/packages/web/app/settings/page.tsx +0 -151
- package/packages/web/components/ActivityTimeline/ActivityTimeline.constants.ts +0 -2
- package/packages/web/components/ActivityTimeline/ActivityTimeline.tsx +0 -49
- package/packages/web/components/ActivityTimeline/ActivityTimeline.types.ts +0 -8
- package/packages/web/components/ActivityTimeline/hooks/index.ts +0 -2
- package/packages/web/components/ActivityTimeline/hooks/useExpandable.ts +0 -9
- package/packages/web/components/ActivityTimeline/hooks/useGroupedEvents.ts +0 -23
- package/packages/web/components/ActivityTimeline/index.ts +0 -2
- package/packages/web/components/AgentsCard/AgentsCard.tsx +0 -93
- package/packages/web/components/AgentsCard/AgentsCard.types.ts +0 -14
- package/packages/web/components/AgentsCard/index.ts +0 -2
- package/packages/web/components/AppSidebar/AppSidebar.tsx +0 -316
- package/packages/web/components/AppSidebar/index.ts +0 -1
- package/packages/web/components/BackLink/BackLink.tsx +0 -18
- package/packages/web/components/BackLink/BackLink.types.ts +0 -5
- package/packages/web/components/BackLink/index.ts +0 -2
- package/packages/web/components/BentoCard/BentoCard.constants.ts +0 -16
- package/packages/web/components/BentoCard/BentoCard.tsx +0 -48
- package/packages/web/components/BentoCard/BentoCard.types.ts +0 -15
- package/packages/web/components/BentoCard/index.ts +0 -2
- package/packages/web/components/BentoCardSkeleton/BentoCardSkeleton.constants.ts +0 -9
- package/packages/web/components/BentoCardSkeleton/BentoCardSkeleton.tsx +0 -18
- package/packages/web/components/BentoCardSkeleton/BentoCardSkeleton.types.ts +0 -5
- package/packages/web/components/BentoCardSkeleton/index.ts +0 -2
- package/packages/web/components/BentoGrid/BentoGrid.tsx +0 -18
- package/packages/web/components/BentoGrid/BentoGrid.types.ts +0 -4
- package/packages/web/components/BentoGrid/index.ts +0 -2
- package/packages/web/components/BlockersCard/BlockersCard.tsx +0 -75
- package/packages/web/components/BlockersCard/BlockersCard.types.ts +0 -12
- package/packages/web/components/BlockersCard/index.ts +0 -2
- package/packages/web/components/CommandBar/CommandBar.tsx +0 -67
- package/packages/web/components/CommandBar/index.ts +0 -1
- package/packages/web/components/CommandButton/CommandButton.tsx +0 -46
- package/packages/web/components/CommandButton/index.ts +0 -1
- package/packages/web/components/ConnectionStatus/ConnectionStatus.tsx +0 -29
- package/packages/web/components/ConnectionStatus/index.ts +0 -1
- package/packages/web/components/DashboardContent/DashboardContent.tsx +0 -284
- package/packages/web/components/DashboardContent/index.ts +0 -1
- package/packages/web/components/DateGroup/DateGroup.tsx +0 -18
- package/packages/web/components/DateGroup/DateGroup.types.ts +0 -6
- package/packages/web/components/DateGroup/DateGroup.utils.ts +0 -11
- package/packages/web/components/DateGroup/index.ts +0 -2
- package/packages/web/components/EmptyState/EmptyState.tsx +0 -76
- package/packages/web/components/EmptyState/EmptyState.types.ts +0 -11
- package/packages/web/components/EmptyState/index.ts +0 -2
- package/packages/web/components/EventRow/EventRow.constants.ts +0 -10
- package/packages/web/components/EventRow/EventRow.tsx +0 -49
- package/packages/web/components/EventRow/EventRow.types.ts +0 -7
- package/packages/web/components/EventRow/EventRow.utils.ts +0 -49
- package/packages/web/components/EventRow/index.ts +0 -2
- package/packages/web/components/ExpandButton/ExpandButton.tsx +0 -18
- package/packages/web/components/ExpandButton/ExpandButton.types.ts +0 -6
- package/packages/web/components/ExpandButton/index.ts +0 -2
- package/packages/web/components/HealthGradientBackground/HealthGradientBackground.tsx +0 -14
- package/packages/web/components/HealthGradientBackground/HealthGradientBackground.types.ts +0 -5
- package/packages/web/components/HealthGradientBackground/HealthGradientBackground.utils.ts +0 -13
- package/packages/web/components/HealthGradientBackground/index.ts +0 -2
- package/packages/web/components/HeroSection/HeroSection.tsx +0 -92
- package/packages/web/components/HeroSection/HeroSection.types.ts +0 -14
- package/packages/web/components/HeroSection/HeroSection.utils.ts +0 -11
- package/packages/web/components/HeroSection/hooks/index.ts +0 -2
- package/packages/web/components/HeroSection/hooks/useCountUp.ts +0 -45
- package/packages/web/components/HeroSection/hooks/useWeeklyActivity.ts +0 -18
- package/packages/web/components/HeroSection/index.ts +0 -2
- package/packages/web/components/IdeasCard/IdeasCard.tsx +0 -115
- package/packages/web/components/IdeasCard/IdeasCard.types.ts +0 -10
- package/packages/web/components/IdeasCard/index.ts +0 -2
- package/packages/web/components/InsightMessage/InsightMessage.tsx +0 -9
- package/packages/web/components/InsightMessage/InsightMessage.types.ts +0 -3
- package/packages/web/components/InsightMessage/index.ts +0 -2
- package/packages/web/components/Logo/Logo.tsx +0 -65
- package/packages/web/components/Logo/index.ts +0 -1
- package/packages/web/components/MarkdownContent/MarkdownContent.tsx +0 -123
- package/packages/web/components/MarkdownContent/index.ts +0 -1
- package/packages/web/components/MasonryGrid/MasonryGrid.tsx +0 -18
- package/packages/web/components/MasonryGrid/index.ts +0 -1
- package/packages/web/components/MomentumWidget/MomentumWidget.tsx +0 -119
- package/packages/web/components/MomentumWidget/MomentumWidget.types.ts +0 -16
- package/packages/web/components/MomentumWidget/index.ts +0 -2
- package/packages/web/components/NowCard/NowCard.tsx +0 -118
- package/packages/web/components/NowCard/NowCard.types.ts +0 -16
- package/packages/web/components/NowCard/index.ts +0 -2
- package/packages/web/components/PageHeader/PageHeader.tsx +0 -24
- package/packages/web/components/PageHeader/index.ts +0 -1
- package/packages/web/components/ProgressRing/ProgressRing.constants.ts +0 -20
- package/packages/web/components/ProgressRing/ProgressRing.tsx +0 -51
- package/packages/web/components/ProgressRing/ProgressRing.types.ts +0 -11
- package/packages/web/components/ProgressRing/index.ts +0 -2
- package/packages/web/components/ProjectAvatar/ProjectAvatar.tsx +0 -54
- package/packages/web/components/ProjectAvatar/index.ts +0 -1
- package/packages/web/components/ProjectColorDot/ProjectColorDot.tsx +0 -37
- package/packages/web/components/ProjectColorDot/index.ts +0 -1
- package/packages/web/components/ProjectSelectorModal/ProjectSelectorModal.tsx +0 -104
- package/packages/web/components/ProjectSelectorModal/index.ts +0 -1
- package/packages/web/components/Providers/Providers.tsx +0 -48
- package/packages/web/components/Providers/index.ts +0 -1
- package/packages/web/components/QueueCard/QueueCard.tsx +0 -125
- package/packages/web/components/QueueCard/QueueCard.types.ts +0 -12
- package/packages/web/components/QueueCard/QueueCard.utils.ts +0 -12
- package/packages/web/components/QueueCard/index.ts +0 -2
- package/packages/web/components/RecoverCard/RecoverCard.tsx +0 -72
- package/packages/web/components/RecoverCard/RecoverCard.types.ts +0 -16
- package/packages/web/components/RecoverCard/index.ts +0 -2
- package/packages/web/components/RoadmapCard/RoadmapCard.tsx +0 -145
- package/packages/web/components/RoadmapCard/RoadmapCard.types.ts +0 -16
- package/packages/web/components/RoadmapCard/index.ts +0 -2
- package/packages/web/components/ShipsCard/ShipsCard.tsx +0 -95
- package/packages/web/components/ShipsCard/ShipsCard.types.ts +0 -14
- package/packages/web/components/ShipsCard/ShipsCard.utils.ts +0 -4
- package/packages/web/components/ShipsCard/index.ts +0 -2
- package/packages/web/components/SparklineChart/SparklineChart.tsx +0 -40
- package/packages/web/components/SparklineChart/SparklineChart.types.ts +0 -6
- package/packages/web/components/SparklineChart/index.ts +0 -2
- package/packages/web/components/StatsMasonry/StatsMasonry.tsx +0 -95
- package/packages/web/components/StatsMasonry/index.ts +0 -1
- package/packages/web/components/StreakCard/StreakCard.constants.ts +0 -2
- package/packages/web/components/StreakCard/StreakCard.tsx +0 -55
- package/packages/web/components/StreakCard/StreakCard.types.ts +0 -4
- package/packages/web/components/StreakCard/index.ts +0 -2
- package/packages/web/components/TasksCounter/TasksCounter.tsx +0 -14
- package/packages/web/components/TasksCounter/TasksCounter.types.ts +0 -3
- package/packages/web/components/TasksCounter/index.ts +0 -2
- package/packages/web/components/TechStackBadges/TechStackBadges.tsx +0 -28
- package/packages/web/components/TechStackBadges/index.ts +0 -1
- package/packages/web/components/TerminalDock/DockToggleTab.tsx +0 -29
- package/packages/web/components/TerminalDock/TerminalDock.tsx +0 -386
- package/packages/web/components/TerminalDock/TerminalDockTab.tsx +0 -130
- package/packages/web/components/TerminalDock/TerminalTabBar.tsx +0 -142
- package/packages/web/components/TerminalDock/index.ts +0 -2
- package/packages/web/components/TerminalTabs/TerminalTab.tsx +0 -95
- package/packages/web/components/TerminalTabs/TerminalTabs.tsx +0 -211
- package/packages/web/components/TerminalTabs/index.ts +0 -1
- package/packages/web/components/VelocityBadge/VelocityBadge.tsx +0 -32
- package/packages/web/components/VelocityBadge/VelocityBadge.types.ts +0 -3
- package/packages/web/components/VelocityBadge/index.ts +0 -2
- package/packages/web/components/VelocityCard/VelocityCard.tsx +0 -73
- package/packages/web/components/VelocityCard/VelocityCard.types.ts +0 -7
- package/packages/web/components/VelocityCard/index.ts +0 -2
- package/packages/web/components/WeeklyReports/PrintableReport.tsx +0 -259
- package/packages/web/components/WeeklyReports/ReportPreviewCard.tsx +0 -187
- package/packages/web/components/WeeklyReports/WeekCalendar.tsx +0 -288
- package/packages/web/components/WeeklyReports/WeeklyReports.tsx +0 -149
- package/packages/web/components/WeeklyReports/index.ts +0 -4
- package/packages/web/components/WeeklySparkline/WeeklySparkline.tsx +0 -25
- package/packages/web/components/WeeklySparkline/WeeklySparkline.types.ts +0 -4
- package/packages/web/components/WeeklySparkline/index.ts +0 -2
- package/packages/web/components/charts/SessionsChart.tsx +0 -175
- package/packages/web/components/ui/alert-dialog.tsx +0 -157
- package/packages/web/components/ui/badge.tsx +0 -46
- package/packages/web/components/ui/button.tsx +0 -60
- package/packages/web/components/ui/card.tsx +0 -92
- package/packages/web/components/ui/chart.tsx +0 -385
- package/packages/web/components/ui/dialog.tsx +0 -143
- package/packages/web/components/ui/drawer.tsx +0 -135
- package/packages/web/components/ui/dropdown-menu.tsx +0 -257
- package/packages/web/components/ui/input.tsx +0 -21
- package/packages/web/components/ui/scroll-area.tsx +0 -58
- package/packages/web/components/ui/select.tsx +0 -187
- package/packages/web/components/ui/sheet.tsx +0 -139
- package/packages/web/components/ui/tabs.tsx +0 -66
- package/packages/web/components/ui/tooltip.tsx +0 -61
- package/packages/web/components.json +0 -22
- package/packages/web/context/GlobalTerminalContext.tsx +0 -538
- package/packages/web/context/TerminalContext.tsx +0 -45
- package/packages/web/context/TerminalTabsContext.tsx +0 -181
- package/packages/web/eslint.config.mjs +0 -18
- package/packages/web/hooks/useClaudeTerminal.ts +0 -425
- package/packages/web/hooks/useProjectStats.ts +0 -93
- package/packages/web/hooks/useProjects.ts +0 -73
- package/packages/web/lib/actions/projects.ts +0 -15
- package/packages/web/lib/commands.ts +0 -81
- package/packages/web/lib/format.ts +0 -23
- package/packages/web/lib/generate-week-report.ts +0 -285
- package/packages/web/lib/parse-prjct-files.ts +0 -1123
- package/packages/web/lib/project-colors.ts +0 -58
- package/packages/web/lib/projects.ts +0 -506
- package/packages/web/lib/pty.ts +0 -101
- package/packages/web/lib/query-config.ts +0 -44
- package/packages/web/lib/services/index.ts +0 -9
- package/packages/web/lib/services/projects.server.ts +0 -66
- package/packages/web/lib/services/stats.server.ts +0 -562
- package/packages/web/lib/unified-loader.ts +0 -396
- package/packages/web/lib/utils.ts +0 -6
- package/packages/web/next-env.d.ts +0 -6
- package/packages/web/next.config.ts +0 -7
- package/packages/web/package.json +0 -57
- package/packages/web/postcss.config.mjs +0 -7
- package/packages/web/public/file.svg +0 -1
- package/packages/web/public/globe.svg +0 -1
- package/packages/web/public/next.svg +0 -1
- package/packages/web/public/vercel.svg +0 -1
- package/packages/web/public/window.svg +0 -1
- package/packages/web/server.ts +0 -312
- package/packages/web/tsconfig.json +0 -34
- package/templates/commands/serve.md +0 -121
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
'use client'
|
|
2
|
-
|
|
3
|
-
import { useEffect } from 'react'
|
|
4
|
-
import { Button } from '@/components/ui/button'
|
|
5
|
-
import { AlertTriangle } from 'lucide-react'
|
|
6
|
-
|
|
7
|
-
export default function Error({
|
|
8
|
-
error,
|
|
9
|
-
reset,
|
|
10
|
-
}: {
|
|
11
|
-
error: Error & { digest?: string }
|
|
12
|
-
reset: () => void
|
|
13
|
-
}) {
|
|
14
|
-
useEffect(() => {
|
|
15
|
-
console.error(error)
|
|
16
|
-
}, [error])
|
|
17
|
-
|
|
18
|
-
return (
|
|
19
|
-
<div className="flex items-center justify-center h-full">
|
|
20
|
-
<div className="text-center space-y-4">
|
|
21
|
-
<div className="w-16 h-16 rounded-full bg-destructive/10 flex items-center justify-center mx-auto">
|
|
22
|
-
<AlertTriangle className="w-8 h-8 text-destructive" />
|
|
23
|
-
</div>
|
|
24
|
-
<div>
|
|
25
|
-
<h2 className="text-lg font-medium">Something went wrong</h2>
|
|
26
|
-
<p className="text-sm text-muted-foreground mt-1">{error.message}</p>
|
|
27
|
-
</div>
|
|
28
|
-
<Button onClick={reset} variant="outline">
|
|
29
|
-
Try again
|
|
30
|
-
</Button>
|
|
31
|
-
</div>
|
|
32
|
-
</div>
|
|
33
|
-
)
|
|
34
|
-
}
|
|
Binary file
|
|
@@ -1,198 +0,0 @@
|
|
|
1
|
-
@import "tailwindcss";
|
|
2
|
-
@import "tw-animate-css";
|
|
3
|
-
@import "@xterm/xterm/css/xterm.css";
|
|
4
|
-
|
|
5
|
-
@custom-variant dark (&:is(.dark *));
|
|
6
|
-
|
|
7
|
-
@theme inline {
|
|
8
|
-
--color-background: var(--background);
|
|
9
|
-
--color-foreground: var(--foreground);
|
|
10
|
-
--font-sans: var(--font-geist-sans);
|
|
11
|
-
--font-mono: var(--font-geist-mono);
|
|
12
|
-
--color-sidebar-ring: var(--sidebar-ring);
|
|
13
|
-
--color-sidebar-border: var(--sidebar-border);
|
|
14
|
-
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
|
|
15
|
-
--color-sidebar-accent: var(--sidebar-accent);
|
|
16
|
-
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
|
|
17
|
-
--color-sidebar-primary: var(--sidebar-primary);
|
|
18
|
-
--color-sidebar-foreground: var(--sidebar-foreground);
|
|
19
|
-
--color-sidebar: var(--sidebar);
|
|
20
|
-
--color-chart-5: var(--chart-5);
|
|
21
|
-
--color-chart-4: var(--chart-4);
|
|
22
|
-
--color-chart-3: var(--chart-3);
|
|
23
|
-
--color-chart-2: var(--chart-2);
|
|
24
|
-
--color-chart-1: var(--chart-1);
|
|
25
|
-
--color-ring: var(--ring);
|
|
26
|
-
--color-input: var(--input);
|
|
27
|
-
--color-border: var(--border);
|
|
28
|
-
--color-destructive: var(--destructive);
|
|
29
|
-
--color-accent-foreground: var(--accent-foreground);
|
|
30
|
-
--color-accent: var(--accent);
|
|
31
|
-
--color-muted-foreground: var(--muted-foreground);
|
|
32
|
-
--color-muted: var(--muted);
|
|
33
|
-
--color-secondary-foreground: var(--secondary-foreground);
|
|
34
|
-
--color-secondary: var(--secondary);
|
|
35
|
-
--color-primary-foreground: var(--primary-foreground);
|
|
36
|
-
--color-primary: var(--primary);
|
|
37
|
-
--color-popover-foreground: var(--popover-foreground);
|
|
38
|
-
--color-popover: var(--popover);
|
|
39
|
-
--color-card-foreground: var(--card-foreground);
|
|
40
|
-
--color-card: var(--card);
|
|
41
|
-
--radius-sm: calc(var(--radius) - 4px);
|
|
42
|
-
--radius-md: calc(var(--radius) - 2px);
|
|
43
|
-
--radius-lg: var(--radius);
|
|
44
|
-
--radius-xl: calc(var(--radius) + 4px);
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
:root {
|
|
48
|
-
--radius: 0.625rem;
|
|
49
|
-
--background: oklch(1 0 0);
|
|
50
|
-
--foreground: oklch(0.145 0 0);
|
|
51
|
-
--card: oklch(1 0 0);
|
|
52
|
-
--card-foreground: oklch(0.145 0 0);
|
|
53
|
-
--popover: oklch(1 0 0);
|
|
54
|
-
--popover-foreground: oklch(0.145 0 0);
|
|
55
|
-
--primary: oklch(0.205 0 0);
|
|
56
|
-
--primary-foreground: oklch(0.985 0 0);
|
|
57
|
-
--secondary: oklch(0.97 0 0);
|
|
58
|
-
--secondary-foreground: oklch(0.205 0 0);
|
|
59
|
-
--muted: oklch(0.97 0 0);
|
|
60
|
-
--muted-foreground: oklch(0.556 0 0);
|
|
61
|
-
--accent: oklch(0.97 0 0);
|
|
62
|
-
--accent-foreground: oklch(0.205 0 0);
|
|
63
|
-
--destructive: oklch(0.577 0.245 27.325);
|
|
64
|
-
--border: oklch(0.922 0 0);
|
|
65
|
-
--input: oklch(0.922 0 0);
|
|
66
|
-
--ring: oklch(0.708 0 0);
|
|
67
|
-
--chart-1: oklch(0.646 0.222 41.116);
|
|
68
|
-
--chart-2: oklch(0.6 0.118 184.704);
|
|
69
|
-
--chart-3: oklch(0.398 0.07 227.392);
|
|
70
|
-
--chart-4: oklch(0.828 0.189 84.429);
|
|
71
|
-
--chart-5: oklch(0.769 0.188 70.08);
|
|
72
|
-
--sidebar: oklch(0.985 0 0);
|
|
73
|
-
--sidebar-foreground: oklch(0.145 0 0);
|
|
74
|
-
--sidebar-primary: oklch(0.205 0 0);
|
|
75
|
-
--sidebar-primary-foreground: oklch(0.985 0 0);
|
|
76
|
-
--sidebar-accent: oklch(0.97 0 0);
|
|
77
|
-
--sidebar-accent-foreground: oklch(0.205 0 0);
|
|
78
|
-
--sidebar-border: oklch(0.922 0 0);
|
|
79
|
-
--sidebar-ring: oklch(0.708 0 0);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
.dark {
|
|
83
|
-
--background: oklch(0.145 0 0);
|
|
84
|
-
--foreground: oklch(0.985 0 0);
|
|
85
|
-
--card: oklch(0.205 0 0);
|
|
86
|
-
--card-foreground: oklch(0.985 0 0);
|
|
87
|
-
--popover: oklch(0.205 0 0);
|
|
88
|
-
--popover-foreground: oklch(0.985 0 0);
|
|
89
|
-
--primary: oklch(0.922 0 0);
|
|
90
|
-
--primary-foreground: oklch(0.205 0 0);
|
|
91
|
-
--secondary: oklch(0.269 0 0);
|
|
92
|
-
--secondary-foreground: oklch(0.985 0 0);
|
|
93
|
-
--muted: oklch(0.269 0 0);
|
|
94
|
-
--muted-foreground: oklch(0.708 0 0);
|
|
95
|
-
--accent: oklch(0.269 0 0);
|
|
96
|
-
--accent-foreground: oklch(0.985 0 0);
|
|
97
|
-
--destructive: oklch(0.704 0.191 22.216);
|
|
98
|
-
--border: oklch(1 0 0 / 10%);
|
|
99
|
-
--input: oklch(1 0 0 / 15%);
|
|
100
|
-
--ring: oklch(0.556 0 0);
|
|
101
|
-
--chart-1: oklch(0.488 0.243 264.376);
|
|
102
|
-
--chart-2: oklch(0.696 0.17 162.48);
|
|
103
|
-
--chart-3: oklch(0.769 0.188 70.08);
|
|
104
|
-
--chart-4: oklch(0.627 0.265 303.9);
|
|
105
|
-
--chart-5: oklch(0.645 0.246 16.439);
|
|
106
|
-
--sidebar: oklch(0.205 0 0);
|
|
107
|
-
--sidebar-foreground: oklch(0.985 0 0);
|
|
108
|
-
--sidebar-primary: oklch(0.488 0.243 264.376);
|
|
109
|
-
--sidebar-primary-foreground: oklch(0.985 0 0);
|
|
110
|
-
--sidebar-accent: oklch(0.269 0 0);
|
|
111
|
-
--sidebar-accent-foreground: oklch(0.985 0 0);
|
|
112
|
-
--sidebar-border: oklch(1 0 0 / 10%);
|
|
113
|
-
--sidebar-ring: oklch(0.556 0 0);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
@layer base {
|
|
117
|
-
* {
|
|
118
|
-
@apply border-border outline-ring/50;
|
|
119
|
-
}
|
|
120
|
-
html,
|
|
121
|
-
body {
|
|
122
|
-
overflow-x: hidden;
|
|
123
|
-
max-width: 100vw;
|
|
124
|
-
}
|
|
125
|
-
body {
|
|
126
|
-
@apply bg-background text-foreground;
|
|
127
|
-
/* Prevent pull-to-refresh on mobile */
|
|
128
|
-
overscroll-behavior: none;
|
|
129
|
-
/* Prevent text selection on touch devices for UI elements */
|
|
130
|
-
-webkit-tap-highlight-color: transparent;
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/* Safe areas for notched devices (iPhone X+, etc) */
|
|
134
|
-
html {
|
|
135
|
-
padding-top: env(safe-area-inset-top);
|
|
136
|
-
padding-bottom: env(safe-area-inset-bottom);
|
|
137
|
-
padding-left: env(safe-area-inset-left);
|
|
138
|
-
padding-right: env(safe-area-inset-right);
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
/* Smooth scrolling with momentum on iOS */
|
|
142
|
-
.overflow-auto,
|
|
143
|
-
.overflow-y-auto,
|
|
144
|
-
.overflow-x-auto {
|
|
145
|
-
-webkit-overflow-scrolling: touch;
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
/* Hide scrollbars while preserving functionality */
|
|
149
|
-
.scrollbar-hide {
|
|
150
|
-
-ms-overflow-style: none;
|
|
151
|
-
scrollbar-width: none;
|
|
152
|
-
}
|
|
153
|
-
.scrollbar-hide::-webkit-scrollbar {
|
|
154
|
-
display: none;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/* Better touch targets for small buttons */
|
|
158
|
-
.touch-target-sm {
|
|
159
|
-
min-height: 36px;
|
|
160
|
-
min-width: 36px;
|
|
161
|
-
}
|
|
162
|
-
.touch-target-md {
|
|
163
|
-
min-height: 44px;
|
|
164
|
-
min-width: 44px;
|
|
165
|
-
}
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/* Terminal styles */
|
|
169
|
-
.xterm {
|
|
170
|
-
padding: 8px 4px;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
.xterm-viewport {
|
|
174
|
-
overflow-y: auto !important;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/* Logo - Fancy border animation */
|
|
178
|
-
@keyframes borderAnimation {
|
|
179
|
-
0% { background-position: 0% 50%; }
|
|
180
|
-
50% { background-position: 100% 50%; }
|
|
181
|
-
100% { background-position: 0% 50%; }
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
.fancy-border {
|
|
185
|
-
position: absolute;
|
|
186
|
-
inset: -3px;
|
|
187
|
-
border-radius: 12px;
|
|
188
|
-
background: linear-gradient(45deg, #ff3d00, #00c6ff, #7a00ff, #09ff00, #ff3d00);
|
|
189
|
-
background-size: 400% 400%;
|
|
190
|
-
z-index: 0;
|
|
191
|
-
animation: borderAnimation 8s ease infinite;
|
|
192
|
-
filter: blur(4px);
|
|
193
|
-
opacity: 0.8;
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
.fancy-border.rounded-full {
|
|
197
|
-
border-radius: 9999px;
|
|
198
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import type { Metadata, Viewport } from 'next'
|
|
2
|
-
import { Geist, Geist_Mono } from 'next/font/google'
|
|
3
|
-
import './globals.css'
|
|
4
|
-
import { Providers } from '@/components/Providers'
|
|
5
|
-
import { AppSidebar } from '@/components/AppSidebar'
|
|
6
|
-
import { TerminalDock } from '@/components/TerminalDock'
|
|
7
|
-
|
|
8
|
-
const geistSans = Geist({
|
|
9
|
-
variable: '--font-geist-sans',
|
|
10
|
-
subsets: ['latin'],
|
|
11
|
-
})
|
|
12
|
-
|
|
13
|
-
const geistMono = Geist_Mono({
|
|
14
|
-
variable: '--font-geist-mono',
|
|
15
|
-
subsets: ['latin'],
|
|
16
|
-
})
|
|
17
|
-
|
|
18
|
-
export const metadata: Metadata = {
|
|
19
|
-
title: 'prjct - Developer Momentum',
|
|
20
|
-
description: 'Ship fast, track progress, stay focused.',
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export const viewport: Viewport = {
|
|
24
|
-
width: 'device-width',
|
|
25
|
-
initialScale: 1,
|
|
26
|
-
maximumScale: 1,
|
|
27
|
-
userScalable: false,
|
|
28
|
-
viewportFit: 'cover',
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
export default function RootLayout({
|
|
32
|
-
children,
|
|
33
|
-
}: Readonly<{
|
|
34
|
-
children: React.ReactNode
|
|
35
|
-
}>) {
|
|
36
|
-
return (
|
|
37
|
-
<html lang="en" suppressHydrationWarning>
|
|
38
|
-
<body
|
|
39
|
-
className={`${geistSans.variable} ${geistMono.variable} antialiased`}
|
|
40
|
-
>
|
|
41
|
-
<Providers>
|
|
42
|
-
<div className="flex h-screen bg-background">
|
|
43
|
-
<AppSidebar />
|
|
44
|
-
<main className="flex-1 overflow-hidden">
|
|
45
|
-
{children}
|
|
46
|
-
</main>
|
|
47
|
-
</div>
|
|
48
|
-
<TerminalDock />
|
|
49
|
-
</Providers>
|
|
50
|
-
</body>
|
|
51
|
-
</html>
|
|
52
|
-
)
|
|
53
|
-
}
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
import Link from 'next/link'
|
|
2
|
-
import { Button } from '@/components/ui/button'
|
|
3
|
-
import { Home } from 'lucide-react'
|
|
4
|
-
|
|
5
|
-
export default function NotFound() {
|
|
6
|
-
return (
|
|
7
|
-
<div className="flex items-center justify-center h-full">
|
|
8
|
-
<div className="text-center space-y-4">
|
|
9
|
-
<h1 className="text-6xl font-bold text-muted-foreground">404</h1>
|
|
10
|
-
<div>
|
|
11
|
-
<h2 className="text-lg font-medium">Page not found</h2>
|
|
12
|
-
<p className="text-sm text-muted-foreground mt-1">
|
|
13
|
-
The page you're looking for doesn't exist.
|
|
14
|
-
</p>
|
|
15
|
-
</div>
|
|
16
|
-
<Button asChild variant="outline">
|
|
17
|
-
<Link href="/">
|
|
18
|
-
<Home className="w-4 h-4 mr-2" />
|
|
19
|
-
Back to Dashboard
|
|
20
|
-
</Link>
|
|
21
|
-
</Button>
|
|
22
|
-
</div>
|
|
23
|
-
</div>
|
|
24
|
-
)
|
|
25
|
-
}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { getProjects } from '@/lib/services/projects.server'
|
|
2
|
-
import { getGlobalStats } from '@/lib/services/stats.server'
|
|
3
|
-
import { DashboardContent } from '@/components/DashboardContent'
|
|
4
|
-
|
|
5
|
-
export default async function Dashboard() {
|
|
6
|
-
const [projects, stats] = await Promise.all([
|
|
7
|
-
getProjects(),
|
|
8
|
-
getGlobalStats()
|
|
9
|
-
])
|
|
10
|
-
|
|
11
|
-
return <DashboardContent projects={projects} stats={stats} />
|
|
12
|
-
}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { Metadata } from 'next'
|
|
2
|
-
import { getProject } from '@/lib/services/projects.server'
|
|
3
|
-
import { getProjectEmoji } from '@/lib/project-colors'
|
|
4
|
-
|
|
5
|
-
export async function generateMetadata({ params }: { params: Promise<{ id: string }> }): Promise<Metadata> {
|
|
6
|
-
const { id: projectId } = await params
|
|
7
|
-
const project = await getProject(projectId)
|
|
8
|
-
const projectName = project?.name ?? projectId
|
|
9
|
-
const emoji = getProjectEmoji(projectId)
|
|
10
|
-
|
|
11
|
-
return {
|
|
12
|
-
title: `${emoji} ${projectName} / Code / p.`,
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export default function CodeLayout({ children }: { children: React.ReactNode }) {
|
|
17
|
-
return children
|
|
18
|
-
}
|