prjct-cli 0.18.2 → 0.19.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.
Files changed (243) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/CLAUDE.md +74 -211
  3. package/core/agentic/prompt-builder.ts +3 -7
  4. package/core/command-registry/optional-commands.ts +0 -20
  5. package/core/infrastructure/command-installer/command-installer.ts +8 -1
  6. package/core/infrastructure/command-installer/global-config.ts +31 -1
  7. package/core/infrastructure/command-installer/index.ts +1 -1
  8. package/core/infrastructure/setup.ts +3 -0
  9. package/package.json +3 -17
  10. package/templates/commands/done.md +57 -258
  11. package/templates/commands/now.md +72 -277
  12. package/templates/commands/ship.md +55 -261
  13. package/templates/commands/test.md +328 -21
  14. package/templates/global/CLAUDE.md +40 -205
  15. package/templates/global/docs/agents.md +88 -0
  16. package/templates/global/docs/architecture.md +103 -0
  17. package/templates/global/docs/commands.md +98 -0
  18. package/templates/global/docs/validation.md +95 -0
  19. package/templates/mcp-config.json +36 -0
  20. package/bin/dev.js +0 -216
  21. package/bin/serve.js +0 -361
  22. package/packages/web/README.md +0 -36
  23. package/packages/web/app/api/claude/sessions/route.ts +0 -44
  24. package/packages/web/app/api/claude/status/route.ts +0 -34
  25. package/packages/web/app/api/projects/[id]/icon/route.ts +0 -33
  26. package/packages/web/app/api/projects/[id]/momentum/route.ts +0 -257
  27. package/packages/web/app/api/projects/[id]/route.ts +0 -29
  28. package/packages/web/app/api/projects/[id]/stats/route.ts +0 -41
  29. package/packages/web/app/api/projects/[id]/status/route.ts +0 -21
  30. package/packages/web/app/api/projects/route.ts +0 -16
  31. package/packages/web/app/api/sessions/current/route.ts +0 -132
  32. package/packages/web/app/api/sessions/history/route.ts +0 -204
  33. package/packages/web/app/error.tsx +0 -34
  34. package/packages/web/app/favicon.ico +0 -0
  35. package/packages/web/app/globals.css +0 -198
  36. package/packages/web/app/layout.tsx +0 -53
  37. package/packages/web/app/loading.tsx +0 -7
  38. package/packages/web/app/not-found.tsx +0 -25
  39. package/packages/web/app/page.tsx +0 -12
  40. package/packages/web/app/project/[id]/code/layout.tsx +0 -18
  41. package/packages/web/app/project/[id]/code/page.tsx +0 -408
  42. package/packages/web/app/project/[id]/error.tsx +0 -41
  43. package/packages/web/app/project/[id]/loading.tsx +0 -9
  44. package/packages/web/app/project/[id]/not-found.tsx +0 -27
  45. package/packages/web/app/project/[id]/page.tsx +0 -384
  46. package/packages/web/app/project/[id]/reports/page.tsx +0 -59
  47. package/packages/web/app/project/[id]/reports/print/page.tsx +0 -58
  48. package/packages/web/app/sessions/page.tsx +0 -165
  49. package/packages/web/app/settings/page.tsx +0 -151
  50. package/packages/web/components/ActivityTimeline/ActivityTimeline.constants.ts +0 -2
  51. package/packages/web/components/ActivityTimeline/ActivityTimeline.tsx +0 -49
  52. package/packages/web/components/ActivityTimeline/ActivityTimeline.types.ts +0 -8
  53. package/packages/web/components/ActivityTimeline/hooks/index.ts +0 -2
  54. package/packages/web/components/ActivityTimeline/hooks/useExpandable.ts +0 -9
  55. package/packages/web/components/ActivityTimeline/hooks/useGroupedEvents.ts +0 -23
  56. package/packages/web/components/ActivityTimeline/index.ts +0 -2
  57. package/packages/web/components/AgentsCard/AgentsCard.tsx +0 -93
  58. package/packages/web/components/AgentsCard/AgentsCard.types.ts +0 -14
  59. package/packages/web/components/AgentsCard/index.ts +0 -2
  60. package/packages/web/components/AppSidebar/AppSidebar.tsx +0 -316
  61. package/packages/web/components/AppSidebar/index.ts +0 -1
  62. package/packages/web/components/BackLink/BackLink.tsx +0 -18
  63. package/packages/web/components/BackLink/BackLink.types.ts +0 -5
  64. package/packages/web/components/BackLink/index.ts +0 -2
  65. package/packages/web/components/BentoCard/BentoCard.constants.ts +0 -16
  66. package/packages/web/components/BentoCard/BentoCard.tsx +0 -48
  67. package/packages/web/components/BentoCard/BentoCard.types.ts +0 -15
  68. package/packages/web/components/BentoCard/index.ts +0 -2
  69. package/packages/web/components/BentoCardSkeleton/BentoCardSkeleton.constants.ts +0 -9
  70. package/packages/web/components/BentoCardSkeleton/BentoCardSkeleton.tsx +0 -18
  71. package/packages/web/components/BentoCardSkeleton/BentoCardSkeleton.types.ts +0 -5
  72. package/packages/web/components/BentoCardSkeleton/index.ts +0 -2
  73. package/packages/web/components/BentoGrid/BentoGrid.tsx +0 -18
  74. package/packages/web/components/BentoGrid/BentoGrid.types.ts +0 -4
  75. package/packages/web/components/BentoGrid/index.ts +0 -2
  76. package/packages/web/components/BlockersCard/BlockersCard.tsx +0 -75
  77. package/packages/web/components/BlockersCard/BlockersCard.types.ts +0 -12
  78. package/packages/web/components/BlockersCard/index.ts +0 -2
  79. package/packages/web/components/CommandBar/CommandBar.tsx +0 -67
  80. package/packages/web/components/CommandBar/index.ts +0 -1
  81. package/packages/web/components/CommandButton/CommandButton.tsx +0 -46
  82. package/packages/web/components/CommandButton/index.ts +0 -1
  83. package/packages/web/components/ConnectionStatus/ConnectionStatus.tsx +0 -29
  84. package/packages/web/components/ConnectionStatus/index.ts +0 -1
  85. package/packages/web/components/DashboardContent/DashboardContent.tsx +0 -284
  86. package/packages/web/components/DashboardContent/index.ts +0 -1
  87. package/packages/web/components/DateGroup/DateGroup.tsx +0 -18
  88. package/packages/web/components/DateGroup/DateGroup.types.ts +0 -6
  89. package/packages/web/components/DateGroup/DateGroup.utils.ts +0 -11
  90. package/packages/web/components/DateGroup/index.ts +0 -2
  91. package/packages/web/components/EmptyState/EmptyState.tsx +0 -76
  92. package/packages/web/components/EmptyState/EmptyState.types.ts +0 -11
  93. package/packages/web/components/EmptyState/index.ts +0 -2
  94. package/packages/web/components/EventRow/EventRow.constants.ts +0 -10
  95. package/packages/web/components/EventRow/EventRow.tsx +0 -49
  96. package/packages/web/components/EventRow/EventRow.types.ts +0 -7
  97. package/packages/web/components/EventRow/EventRow.utils.ts +0 -49
  98. package/packages/web/components/EventRow/index.ts +0 -2
  99. package/packages/web/components/ExpandButton/ExpandButton.tsx +0 -18
  100. package/packages/web/components/ExpandButton/ExpandButton.types.ts +0 -6
  101. package/packages/web/components/ExpandButton/index.ts +0 -2
  102. package/packages/web/components/HealthGradientBackground/HealthGradientBackground.tsx +0 -14
  103. package/packages/web/components/HealthGradientBackground/HealthGradientBackground.types.ts +0 -5
  104. package/packages/web/components/HealthGradientBackground/HealthGradientBackground.utils.ts +0 -13
  105. package/packages/web/components/HealthGradientBackground/index.ts +0 -2
  106. package/packages/web/components/HeroSection/HeroSection.tsx +0 -92
  107. package/packages/web/components/HeroSection/HeroSection.types.ts +0 -14
  108. package/packages/web/components/HeroSection/HeroSection.utils.ts +0 -11
  109. package/packages/web/components/HeroSection/hooks/index.ts +0 -2
  110. package/packages/web/components/HeroSection/hooks/useCountUp.ts +0 -45
  111. package/packages/web/components/HeroSection/hooks/useWeeklyActivity.ts +0 -18
  112. package/packages/web/components/HeroSection/index.ts +0 -2
  113. package/packages/web/components/IdeasCard/IdeasCard.tsx +0 -115
  114. package/packages/web/components/IdeasCard/IdeasCard.types.ts +0 -10
  115. package/packages/web/components/IdeasCard/index.ts +0 -2
  116. package/packages/web/components/InsightMessage/InsightMessage.tsx +0 -9
  117. package/packages/web/components/InsightMessage/InsightMessage.types.ts +0 -3
  118. package/packages/web/components/InsightMessage/index.ts +0 -2
  119. package/packages/web/components/Logo/Logo.tsx +0 -65
  120. package/packages/web/components/Logo/index.ts +0 -1
  121. package/packages/web/components/MarkdownContent/MarkdownContent.tsx +0 -123
  122. package/packages/web/components/MarkdownContent/index.ts +0 -1
  123. package/packages/web/components/MasonryGrid/MasonryGrid.tsx +0 -18
  124. package/packages/web/components/MasonryGrid/index.ts +0 -1
  125. package/packages/web/components/MomentumWidget/MomentumWidget.tsx +0 -119
  126. package/packages/web/components/MomentumWidget/MomentumWidget.types.ts +0 -16
  127. package/packages/web/components/MomentumWidget/index.ts +0 -2
  128. package/packages/web/components/NowCard/NowCard.tsx +0 -118
  129. package/packages/web/components/NowCard/NowCard.types.ts +0 -16
  130. package/packages/web/components/NowCard/index.ts +0 -2
  131. package/packages/web/components/PageHeader/PageHeader.tsx +0 -24
  132. package/packages/web/components/PageHeader/index.ts +0 -1
  133. package/packages/web/components/ProgressRing/ProgressRing.constants.ts +0 -20
  134. package/packages/web/components/ProgressRing/ProgressRing.tsx +0 -51
  135. package/packages/web/components/ProgressRing/ProgressRing.types.ts +0 -11
  136. package/packages/web/components/ProgressRing/index.ts +0 -2
  137. package/packages/web/components/ProjectAvatar/ProjectAvatar.tsx +0 -54
  138. package/packages/web/components/ProjectAvatar/index.ts +0 -1
  139. package/packages/web/components/ProjectColorDot/ProjectColorDot.tsx +0 -37
  140. package/packages/web/components/ProjectColorDot/index.ts +0 -1
  141. package/packages/web/components/ProjectSelectorModal/ProjectSelectorModal.tsx +0 -104
  142. package/packages/web/components/ProjectSelectorModal/index.ts +0 -1
  143. package/packages/web/components/Providers/Providers.tsx +0 -48
  144. package/packages/web/components/Providers/index.ts +0 -1
  145. package/packages/web/components/QueueCard/QueueCard.tsx +0 -125
  146. package/packages/web/components/QueueCard/QueueCard.types.ts +0 -12
  147. package/packages/web/components/QueueCard/QueueCard.utils.ts +0 -12
  148. package/packages/web/components/QueueCard/index.ts +0 -2
  149. package/packages/web/components/RecoverCard/RecoverCard.tsx +0 -72
  150. package/packages/web/components/RecoverCard/RecoverCard.types.ts +0 -16
  151. package/packages/web/components/RecoverCard/index.ts +0 -2
  152. package/packages/web/components/RoadmapCard/RoadmapCard.tsx +0 -145
  153. package/packages/web/components/RoadmapCard/RoadmapCard.types.ts +0 -16
  154. package/packages/web/components/RoadmapCard/index.ts +0 -2
  155. package/packages/web/components/ShipsCard/ShipsCard.tsx +0 -95
  156. package/packages/web/components/ShipsCard/ShipsCard.types.ts +0 -14
  157. package/packages/web/components/ShipsCard/ShipsCard.utils.ts +0 -4
  158. package/packages/web/components/ShipsCard/index.ts +0 -2
  159. package/packages/web/components/SparklineChart/SparklineChart.tsx +0 -40
  160. package/packages/web/components/SparklineChart/SparklineChart.types.ts +0 -6
  161. package/packages/web/components/SparklineChart/index.ts +0 -2
  162. package/packages/web/components/StatsMasonry/StatsMasonry.tsx +0 -95
  163. package/packages/web/components/StatsMasonry/index.ts +0 -1
  164. package/packages/web/components/StreakCard/StreakCard.constants.ts +0 -2
  165. package/packages/web/components/StreakCard/StreakCard.tsx +0 -55
  166. package/packages/web/components/StreakCard/StreakCard.types.ts +0 -4
  167. package/packages/web/components/StreakCard/index.ts +0 -2
  168. package/packages/web/components/TasksCounter/TasksCounter.tsx +0 -14
  169. package/packages/web/components/TasksCounter/TasksCounter.types.ts +0 -3
  170. package/packages/web/components/TasksCounter/index.ts +0 -2
  171. package/packages/web/components/TechStackBadges/TechStackBadges.tsx +0 -28
  172. package/packages/web/components/TechStackBadges/index.ts +0 -1
  173. package/packages/web/components/TerminalDock/DockToggleTab.tsx +0 -29
  174. package/packages/web/components/TerminalDock/TerminalDock.tsx +0 -386
  175. package/packages/web/components/TerminalDock/TerminalDockTab.tsx +0 -130
  176. package/packages/web/components/TerminalDock/TerminalTabBar.tsx +0 -142
  177. package/packages/web/components/TerminalDock/index.ts +0 -2
  178. package/packages/web/components/TerminalTabs/TerminalTab.tsx +0 -95
  179. package/packages/web/components/TerminalTabs/TerminalTabs.tsx +0 -211
  180. package/packages/web/components/TerminalTabs/index.ts +0 -1
  181. package/packages/web/components/VelocityBadge/VelocityBadge.tsx +0 -32
  182. package/packages/web/components/VelocityBadge/VelocityBadge.types.ts +0 -3
  183. package/packages/web/components/VelocityBadge/index.ts +0 -2
  184. package/packages/web/components/VelocityCard/VelocityCard.tsx +0 -73
  185. package/packages/web/components/VelocityCard/VelocityCard.types.ts +0 -7
  186. package/packages/web/components/VelocityCard/index.ts +0 -2
  187. package/packages/web/components/WeeklyReports/PrintableReport.tsx +0 -259
  188. package/packages/web/components/WeeklyReports/ReportPreviewCard.tsx +0 -187
  189. package/packages/web/components/WeeklyReports/WeekCalendar.tsx +0 -288
  190. package/packages/web/components/WeeklyReports/WeeklyReports.tsx +0 -149
  191. package/packages/web/components/WeeklyReports/index.ts +0 -4
  192. package/packages/web/components/WeeklySparkline/WeeklySparkline.tsx +0 -25
  193. package/packages/web/components/WeeklySparkline/WeeklySparkline.types.ts +0 -4
  194. package/packages/web/components/WeeklySparkline/index.ts +0 -2
  195. package/packages/web/components/charts/SessionsChart.tsx +0 -175
  196. package/packages/web/components/ui/alert-dialog.tsx +0 -157
  197. package/packages/web/components/ui/badge.tsx +0 -46
  198. package/packages/web/components/ui/button.tsx +0 -60
  199. package/packages/web/components/ui/card.tsx +0 -92
  200. package/packages/web/components/ui/chart.tsx +0 -385
  201. package/packages/web/components/ui/dialog.tsx +0 -143
  202. package/packages/web/components/ui/drawer.tsx +0 -135
  203. package/packages/web/components/ui/dropdown-menu.tsx +0 -257
  204. package/packages/web/components/ui/input.tsx +0 -21
  205. package/packages/web/components/ui/scroll-area.tsx +0 -58
  206. package/packages/web/components/ui/select.tsx +0 -187
  207. package/packages/web/components/ui/sheet.tsx +0 -139
  208. package/packages/web/components/ui/tabs.tsx +0 -66
  209. package/packages/web/components/ui/tooltip.tsx +0 -61
  210. package/packages/web/components.json +0 -22
  211. package/packages/web/context/GlobalTerminalContext.tsx +0 -538
  212. package/packages/web/context/TerminalContext.tsx +0 -45
  213. package/packages/web/context/TerminalTabsContext.tsx +0 -181
  214. package/packages/web/eslint.config.mjs +0 -18
  215. package/packages/web/hooks/useClaudeTerminal.ts +0 -425
  216. package/packages/web/hooks/useProjectStats.ts +0 -93
  217. package/packages/web/hooks/useProjects.ts +0 -73
  218. package/packages/web/lib/actions/projects.ts +0 -15
  219. package/packages/web/lib/commands.ts +0 -81
  220. package/packages/web/lib/format.ts +0 -23
  221. package/packages/web/lib/generate-week-report.ts +0 -285
  222. package/packages/web/lib/parse-prjct-files.ts +0 -1123
  223. package/packages/web/lib/project-colors.ts +0 -58
  224. package/packages/web/lib/projects.ts +0 -506
  225. package/packages/web/lib/pty.ts +0 -101
  226. package/packages/web/lib/query-config.ts +0 -44
  227. package/packages/web/lib/services/index.ts +0 -9
  228. package/packages/web/lib/services/projects.server.ts +0 -66
  229. package/packages/web/lib/services/stats.server.ts +0 -562
  230. package/packages/web/lib/unified-loader.ts +0 -396
  231. package/packages/web/lib/utils.ts +0 -6
  232. package/packages/web/next-env.d.ts +0 -6
  233. package/packages/web/next.config.ts +0 -7
  234. package/packages/web/package.json +0 -57
  235. package/packages/web/postcss.config.mjs +0 -7
  236. package/packages/web/public/file.svg +0 -1
  237. package/packages/web/public/globe.svg +0 -1
  238. package/packages/web/public/next.svg +0 -1
  239. package/packages/web/public/vercel.svg +0 -1
  240. package/packages/web/public/window.svg +0 -1
  241. package/packages/web/server.ts +0 -312
  242. package/packages/web/tsconfig.json +0 -34
  243. 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,7 +0,0 @@
1
- export default function Loading() {
2
- return (
3
- <div className="flex items-center justify-center h-full">
4
- <div className="animate-spin rounded-full h-8 w-8 border-b-2 border-primary" />
5
- </div>
6
- )
7
- }
@@ -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
- }