* feat(cloud): add team management page with WorkOS org members Custom team page using WorkOS API for listing members, inviting, removing, and changing roles. Admin-gated write operations with server-side role checks. Uses Effect API layer pattern with typed endpoints and effect-atom for client-side state. Also fixes Sonner toaster to use system theme detection instead of next-themes, removes next-themes dependency. * style: format * chore: remove unused widget token endpoint and getWidgetToken * fix: remove any types from team handler tests * style: format * fix: add @types/node to storage-postgres for tsgo compat * fix: resolve merge conflict in test file * style: format * fix: resolve tsgo typecheck errors in billing and test files * fix: add explicit Plan types for tsgo compatibility * style: format * fix: cast empty array for tsgo type inference
Showing the changes to packages (3 of 19 files). Show all
Unified · Split
| @@ -25,6 +25,7 @@ · 24 unmodified lines | |||
| 25 | "devDependencies": { | 25 | "devDependencies": { |
| 26 | "@effect/vitest": "catalog:", | 26 | "@effect/vitest": "catalog:", |
| 27 | "@electric-sql/pglite": "^0.4.3", | 27 | "@electric-sql/pglite": "^0.4.3", |
| 28 | "@types/node": "^25.6.0", | ||
| 28 | "@types/pg": "^8.15.4", | 29 | "@types/pg": "^8.15.4", |
| 29 | "drizzle-kit": "^0.31.0", | 30 | "drizzle-kit": "^0.31.0", |
| 30 | "typescript": "catalog:", | 31 | "typescript": "catalog:", |
| @@ -34,7 +34,6 @@ · 33 unmodified lines | |||
| 34 | "embla-carousel-react": "^8.6.0", | 34 | "embla-carousel-react": "^8.6.0", |
| 35 | "input-otp": "^1.4.2", | 35 | "input-otp": "^1.4.2", |
| 36 | "lucide-react": "^1.7.0", | 36 | "lucide-react": "^1.7.0", |
| 37 | "next-themes": "^0.4.6", | ||
| 38 | "radix-ui": "^1.4.3", | 37 | "radix-ui": "^1.4.3", |
| 39 | "react": "catalog:", | 38 | "react": "catalog:", |
| 40 | "react-day-picker": "^9.14.0", | 39 | "react-day-picker": "^9.14.0", |
| @@ -7,15 +7,12 @@ import { · 6 unmodified lines | |||
| 7 | OctagonXIcon, | 7 | OctagonXIcon, |
| 8 | TriangleAlertIcon, | 8 | TriangleAlertIcon, |
| 9 | } from "lucide-react"; | 9 | } from "lucide-react"; |
| 10 | import { useTheme } from "next-themes"; | ||
| 11 | import { Toaster as Sonner, type ToasterProps } from "sonner"; | 10 | import { Toaster as Sonner, type ToasterProps } from "sonner"; |
| 12 | 11 | ||
| 13 | const Toaster = ({ ...props }: ToasterProps) => { | 12 | const Toaster = ({ ...props }: ToasterProps) => { |
| 14 | const { theme = "system" } = useTheme(); | ||
| 15 | |||
| 16 | return ( | 13 | return ( |
| 17 | <Sonner | 14 | <Sonner |
| 18 | theme={theme as ToasterProps["theme"]} | 15 | theme="system" |
| 19 | className="toaster group" | 16 | className="toaster group" |
| 20 | icons={{ | 17 | icons={{ |
| 21 | success: <CircleCheckIcon className="size-4" />, | 18 | success: <CircleCheckIcon className="size-4" />, |