Skip to content

Commit 59f7513

Browse files
committed
Revert "chore(deps): tailwind v4, remove forwardRef, fix api route path"
This reverts commit 979ac2c.
1 parent 979ac2c commit 59f7513

37 files changed

+1934
-1955
lines changed

apps/web/package.json

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,22 @@
1515
"@monaco-editor/react": "^4.6.0",
1616
"@next/bundle-analyzer": "^15.1.3",
1717
"@novnc/novnc": "^1.5.0",
18-
"@radix-ui/react-accordion": "^1.2.3",
19-
"@radix-ui/react-alert-dialog": "^1.1.6",
20-
"@radix-ui/react-aspect-ratio": "^1.1.2",
21-
"@radix-ui/react-avatar": "^1.1.3",
22-
"@radix-ui/react-checkbox": "^1.1.4",
23-
"@radix-ui/react-dialog": "^1.1.6",
24-
"@radix-ui/react-dropdown-menu": "^2.1.6",
25-
"@radix-ui/react-label": "^2.1.2",
26-
"@radix-ui/react-navigation-menu": "^1.2.5",
27-
"@radix-ui/react-popover": "^1.1.6",
28-
"@radix-ui/react-select": "^2.1.6",
29-
"@radix-ui/react-separator": "^1.1.2",
30-
"@radix-ui/react-slider": "^1.2.3",
31-
"@radix-ui/react-slot": "^1.1.2",
32-
"@radix-ui/react-switch": "^1.1.3",
33-
"@radix-ui/react-tooltip": "^1.1.8",
18+
"@radix-ui/react-accordion": "^1.2.2",
19+
"@radix-ui/react-alert-dialog": "^1.1.4",
20+
"@radix-ui/react-aspect-ratio": "^1.1.1",
21+
"@radix-ui/react-avatar": "^1.1.2",
22+
"@radix-ui/react-checkbox": "^1.1.3",
23+
"@radix-ui/react-dialog": "^1.1.4",
24+
"@radix-ui/react-dropdown-menu": "^2.1.4",
25+
"@radix-ui/react-label": "^2.1.1",
26+
"@radix-ui/react-navigation-menu": "^1.2.3",
27+
"@radix-ui/react-popover": "^1.1.5",
28+
"@radix-ui/react-select": "^2.1.4",
29+
"@radix-ui/react-separator": "^1.1.1",
30+
"@radix-ui/react-slider": "^1.2.2",
31+
"@radix-ui/react-slot": "^1.1.1",
32+
"@radix-ui/react-switch": "^1.1.2",
33+
"@radix-ui/react-tooltip": "^1.1.6",
3434
"@scalar/nextjs-api-reference": "^0.5.4",
3535
"@stardust/common": "workspace:*",
3636
"@stardust/config": "workspace:*",
@@ -41,26 +41,26 @@
4141
"autoprefixer": "^10.4.20",
4242
"class-variance-authority": "^0.7.0",
4343
"clsx": "^2.1.1",
44-
"lucide-react": "^0.475.0",
45-
"next": "15.2.0-canary.46",
44+
"geist": "^1.3.1",
45+
"lucide-react": "^0.460.0",
46+
"next": "15.1.6",
4647
"next-themes": "^0.4.4",
4748
"postcss": "^8.4.49",
48-
"react": "19.0.0",
49-
"react-dom": "19.0.0",
49+
"react": "19.0.0-rc-66855b96-20241106",
50+
"react-dom": "19.0.0-rc-66855b96-20241106",
5051
"sonner": "^1.7.1",
5152
"swr": "^2.3.0",
52-
"tailwind-merge": "^3.0.1",
53-
"tailwindcss": "^4.0.0",
53+
"tailwind-merge": "^2.5.4",
54+
"tailwindcss": "^3.4.17",
5455
"tailwindcss-animate": "^1.0.7",
5556
"use-local-storage": "^3.0.0"
5657
},
5758
"devDependencies": {
58-
"@tailwindcss/postcss": "^4.0.4",
5959
"@types/node": "^20",
6060
"@types/novnc__novnc": "^1.5.0",
6161
"@types/react": "18.3.1",
6262
"@types/react-dom": "18.3.0",
63-
"babel-plugin-react-compiler": "19.0.0-beta-714736e-20250131",
63+
"babel-plugin-react-compiler": "19.0.0-beta-55955c9-20241229",
6464
"node-loader": "^2.1.0",
6565
"shadcn": "2.1.9-canary.0",
6666
"typescript": "5.5.4"

apps/web/postcss.config.cjs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
module.exports = {
2+
plugins: {
3+
tailwindcss: {},
4+
autoprefixer: {},
5+
},
6+
};

apps/web/postcss.config.mjs

Lines changed: 0 additions & 8 deletions
This file was deleted.

apps/web/src/app/(main)/admin/sidebar.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export function AdminSidebar() {
2424
];
2525
return (
2626
<nav className="grid gap-x-4 text-sm text-muted-foreground justify-between h-full w-64">
27-
<section className="p-0 items-start flex flex-col gap-2 grow w-64">
27+
<section className="p-0 items-start flex flex-col gap-2 flex-grow w-64">
2828
{links.map(({ href, label, Icon }) => (
2929
<Button
3030
asChild

apps/web/src/app/(main)/admin/workspaces/components.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ export function UpdateDialog({ workspace, open, setOpen }: Props) {
6464
}
6565
export function NodeDialog({ workspace, open, setOpen }: Props) {
6666
const { data: nodeWorkspaces } = useSWR<Awaited<ReturnType<typeof getNodeWorkspaces>>>(
67-
"/api/workspaces/node-workspaces",
67+
"/api/admin/workspaces/node-workspaces",
6868
fetcher,
6969
{ refreshInterval: 1000 },
7070
);

apps/web/src/app/(main)/page.tsx

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@ export default async function Dashboard() {
1919
workspaces.map((workspace) => (
2020
<Dialog key={workspace.dockerImage}>
2121
<DialogTrigger>
22-
<div className="relative w-64 aspect-5/3 rounded-lg overflow-hidden shadow-lg bg-accent/40 group">
22+
<div className="relative w-64 aspect-[5/3] rounded-lg overflow-hidden shadow-lg bg-accent/40 group">
2323
<Image
2424
src={workspace.icon}
2525
alt={workspace.friendlyName}
2626
fill
2727
className="object-scale-down group-hover:scale-105 duration-200"
2828
/>
29-
<div className="absolute inset-0 bg-linear-to-t from-accent/90 to-transparent" />
29+
<div className="absolute inset-0 bg-gradient-to-t from-accent/90 to-transparent" />
3030
<div className="absolute bottom-2 left-3 text-foreground flex flex-col">
3131
<h3 className="text-lg font-bold">{workspace.friendlyName}</h3>
3232
<p className="text-left text-sm text-muted-foreground">{workspace.category}</p>
@@ -36,9 +36,8 @@ export default async function Dashboard() {
3636
<CreateForm
3737
workspace={workspace}
3838
nodeIds={nodeMetadata
39-
.filter((data) => data?.workspaces.map((w) => w.image).includes(workspace.dockerImage))
40-
.map((w) => w?.id)
41-
.filter((id) => typeof id !== "undefined")}
39+
.filter(({ workspaces }) => workspaces.map((w) => w.image).includes(workspace.dockerImage))
40+
.map((w) => w.id)}
4241
/>
4342
</Dialog>
4443
))

apps/web/src/app/(main)/sessions/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,7 @@ export default async function Dashboard() {
116116
sizes="6.5rem 13rem"
117117
alt=""
118118
fill
119-
className="object-fill outline-hidden rounded-none md:h-[6.5rem] md:w-[13rem] h-[3.25rem] w-[6.5rem]"
119+
className="object-fill outline-none rounded-none md:h-[6.5rem] md:w-[13rem] h-[3.25rem] w-[6.5rem]"
120120
/>
121121
) : (
122122
<div className="flex items-center justify-center rounded-sm bg-muted h-36 w-full">

apps/web/src/app/api/workspaces/route.ts renamed to apps/web/src/app/api/admin/workspaces/node-workspaces/route.ts

File renamed without changes.

apps/web/src/app/auth/signin/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ export default async function Login(props: {
130130
}}
131131
>
132132
<SubmitButton variant={config.auth.credentials ? "secondary" : "default"} size="lg" className="w-32">
133-
<IdCard className="size-4 mr-2 shrink-0" />
133+
<IdCard className="size-4 mr-2 flex-shrink-0" />
134134
{provider.charAt(0).toLocaleUpperCase() + provider.slice(1)}
135135
</SubmitButton>
136136
</form>

apps/web/src/app/globals.css

Lines changed: 67 additions & 149 deletions
Original file line numberDiff line numberDiff line change
@@ -1,156 +1,74 @@
1-
@import "tailwindcss";
2-
@plugin "tailwindcss-animate";
1+
@tailwind base;
2+
@tailwind components;
3+
@tailwind utilities;
34

4-
@custom-variant dark (&:is(.dark *));
5-
:root {
6-
--background: hsl(220 23.077% 94.902%);
7-
--foreground: hsl(233.793 16.022% 35.49%);
8-
--muted: hsl(222.857 15.909% 82.745%);
9-
--muted-foreground: hsl(233.333 12.796% 41.373%);
10-
--popover: hsl(220 23.077% 94.902%);
11-
--popover-foreground: hsl(233.793 16.022% 35.49%);
12-
--card: hsl(220 23.077% 94.902%);
13-
--card-foreground: hsl(233.793 16.022% 35.49%);
14-
--border: hsl(225 13.559% 76.863%);
15-
--input: hsl(225 13.559% 76.863%);
16-
--primary: hsl(266.044 85.047% 58.039%);
17-
--primary-foreground: hsl(220 23.077% 94.902%);
18-
--secondary: hsl(222.857 15.909% 82.745%);
19-
--secondary-foreground: hsl(233.793 16.022% 35.49%);
20-
--accent: hsl(222.857 15.909% 82.745%);
21-
--accent-foreground: hsl(233.793 16.022% 35.49%);
22-
--destructive: hsl(347.077 86.667% 44.118%);
23-
--destructive-foreground: hsl(220 21.951% 91.961%);
24-
--ring: hsl(233.793 16.022% 35.49%);
25-
26-
--radius: 1.5rem;
27-
}
28-
29-
.dark {
30-
--background: hsl(240 21.053% 14.902%);
31-
--foreground: hsl(226.154 63.934% 88.039%);
32-
--muted: hsl(236.842 16.239% 22.941%);
33-
--muted-foreground: hsl(226.667 35.294% 80%);
34-
--popover: hsl(240 21.053% 14.902%);
35-
--popover-foreground: hsl(226.154 63.934% 88.039%);
36-
--card: hsl(240 21.053% 14.902%);
37-
--card-foreground: hsl(226.154 63.934% 88.039%);
38-
--border: hsl(234.286 13.208% 31.176%);
39-
--input: hsl(234.286 13.208% 31.176%);
40-
--primary: hsl(267.407 83.505% 80.98%);
41-
--primary-foreground: hsl(240 21.053% 14.902%);
42-
--secondary: hsl(236.842 16.239% 22.941%);
43-
--secondary-foreground: hsl(226.154 63.934% 88.039%);
44-
--accent: hsl(236.842 16.239% 22.941%);
45-
--accent-foreground: hsl(226.154 63.934% 88.039%);
46-
--destructive: hsl(343.269 81.25% 74.902%);
47-
--destructive-foreground: hsl(240 21.311% 11.961%);
48-
--ring: hsl(226.154 63.934% 88.039%);
49-
}
50-
51-
.zinc {
52-
--background: hsl(240 10% 3.9%);
53-
--foreground: hsl(0 0% 98%);
54-
--card: hsl(240 10% 3.9%);
55-
--card-foreground: hsl(0 0% 98%);
56-
--popover: hsl(240 10% 3.9%);
57-
--popover-foreground: hsl(0 0% 98%);
58-
--primary: hsl(0 0% 98%);
59-
--primary-foreground: hsl(240 5.9% 10%);
60-
--secondary: hsl(240 3.7% 15.9%);
61-
--secondary-foreground: hsl(0 0% 98%);
62-
--muted: hsl(240 3.7% 15.9%);
63-
--muted-foreground: hsl(240 5% 64.9%);
64-
--accent: hsl(240 3.7% 15.9%);
65-
--accent-foreground: hsl(0 0% 98%);
66-
--destructive: hsl(0 62.8% 30.6%);
67-
--destructive-foreground: hsl(0 0% 98%);
68-
--border: hsl(240 3.7% 15.9%);
69-
--input: hsl(240 3.7% 15.9%);
70-
--ring: hsl(240 4.9% 83.9%);
71-
}
72-
@theme inline {
73-
--color-border: var(--border);
74-
--color-input: var(--input);
75-
--color-ring: var(--ring);
76-
--color-background: var(--background);
77-
--color-foreground: var(--foreground);
78-
79-
--color-primary: var(--primary);
80-
--color-primary-foreground: var(--primary-foreground);
81-
82-
--color-secondary: var(--secondary);
83-
--color-secondary-foreground: var(--secondary-foreground);
84-
85-
--color-destructive: var(--destructive);
86-
--color-destructive-foreground: var(--destructive-foreground);
87-
88-
--color-muted: var(--muted);
89-
--color-muted-foreground: var(--muted-foreground);
90-
91-
--color-accent: var(--accent);
92-
--color-accent-foreground: var(--accent-foreground);
93-
94-
--color-popover: var(--popover);
95-
--color-popover-foreground: var(--popover-foreground);
96-
97-
--color-card: var(--card);
98-
--color-card-foreground: var(--card-foreground);
99-
100-
--color-chart-1: var(--chart-1);
101-
--color-chart-2: var(--chart-2);
102-
--color-chart-3: var(--chart-3);
103-
--color-chart-4: var(--chart-4);
104-
--color-chart-5: var(--chart-5);
105-
106-
--radius-lg: var(--radius);
107-
--radius-md: calc(var(--radius) - 2px);
108-
--radius-sm: calc(var(--radius) - 4px);
109-
110-
--animate-accordion-down: accordion-down 0.2s ease-out;
111-
--animate-accordion-up: accordion-up 0.2s ease-out;
112-
--animate-caret-blink: caret-blink 1.25s ease-out infinite;
113-
114-
/* --font-mono: var(--mono);
115-
--font-sans: var(--sans); */
116-
117-
@keyframes accordion-down {
118-
from {
119-
height: 0;
120-
}
121-
to {
122-
height: var(--radix-accordion-content-height);
123-
}
124-
}
125-
@keyframes accordion-up {
126-
from {
127-
height: var(--radix-accordion-content-height);
128-
}
129-
to {
130-
height: 0;
131-
}
132-
}
133-
@keyframes caret-blink {
134-
0%,
135-
70%,
136-
100% {
137-
opacity: 1;
138-
}
139-
20%,
140-
50% {
141-
opacity: 0;
142-
}
5+
@layer base {
6+
:root {
7+
--background: 220 23.077% 94.902%;
8+
--foreground: 233.793 16.022% 35.49%;
9+
--muted: 222.857 15.909% 82.745%;
10+
--muted-foreground: 233.333 12.796% 41.373%;
11+
--popover: 220 23.077% 94.902%;
12+
--popover-foreground: 233.793 16.022% 35.49%;
13+
--card: 220 23.077% 94.902%;
14+
--card-foreground: 233.793 16.022% 35.49%;
15+
--border: 225 13.559% 76.863%;
16+
--input: 225 13.559% 76.863%;
17+
--primary: 266.044 85.047% 58.039%;
18+
--primary-foreground: 220 23.077% 94.902%;
19+
--secondary: 222.857 15.909% 82.745%;
20+
--secondary-foreground: 233.793 16.022% 35.49%;
21+
--accent: 222.857 15.909% 82.745%;
22+
--accent-foreground: 233.793 16.022% 35.49%;
23+
--destructive: 347.077 86.667% 44.118%;
24+
--destructive-foreground: 220 21.951% 91.961%;
25+
--ring: 233.793 16.022% 35.49%;
26+
27+
--radius: 1.5rem;
14328
}
144-
}
14529

146-
@utility container {
147-
margin-inline: auto;
148-
padding-inline: 2rem;
149-
@media (width >= --theme(--breakpoint-sm)) {
150-
max-width: none;
30+
.dark {
31+
--background: 240 21.053% 14.902%;
32+
--foreground: 226.154 63.934% 88.039%;
33+
--muted: 236.842 16.239% 22.941%;
34+
--muted-foreground: 226.667 35.294% 80%;
35+
--popover: 240 21.053% 14.902%;
36+
--popover-foreground: 226.154 63.934% 88.039%;
37+
--card: 240 21.053% 14.902%;
38+
--card-foreground: 226.154 63.934% 88.039%;
39+
--border: 234.286 13.208% 31.176%;
40+
--input: 234.286 13.208% 31.176%;
41+
--primary: 267.407 83.505% 80.98%;
42+
--primary-foreground: 240 21.053% 14.902%;
43+
--secondary: 236.842 16.239% 22.941%;
44+
--secondary-foreground: 226.154 63.934% 88.039%;
45+
--accent: 236.842 16.239% 22.941%;
46+
--accent-foreground: 226.154 63.934% 88.039%;
47+
--destructive: 343.269 81.25% 74.902%;
48+
--destructive-foreground: 240 21.311% 11.961%;
49+
--ring: 226.154 63.934% 88.039%;
15150
}
152-
@media (width >= 1400px) {
153-
max-width: 1400px;
51+
52+
.zinc {
53+
--background: 240 10% 3.9%;
54+
--foreground: 0 0% 98%;
55+
--card: 240 10% 3.9%;
56+
--card-foreground: 0 0% 98%;
57+
--popover: 240 10% 3.9%;
58+
--popover-foreground: 0 0% 98%;
59+
--primary: 0 0% 98%;
60+
--primary-foreground: 240 5.9% 10%;
61+
--secondary: 240 3.7% 15.9%;
62+
--secondary-foreground: 0 0% 98%;
63+
--muted: 240 3.7% 15.9%;
64+
--muted-foreground: 240 5% 64.9%;
65+
--accent: 240 3.7% 15.9%;
66+
--accent-foreground: 0 0% 98%;
67+
--destructive: 0 62.8% 30.6%;
68+
--destructive-foreground: 0 0% 98%;
69+
--border: 240 3.7% 15.9%;
70+
--input: 240 3.7% 15.9%;
71+
--ring: 240 4.9% 83.9%;
15472
}
15573
}
15674

0 commit comments

Comments
 (0)