diff --git a/.github/workflows/studio-e2e-test.yml b/.github/workflows/studio-e2e-test.yml
index cf3ecc38199..be170f07d38 100644
--- a/.github/workflows/studio-e2e-test.yml
+++ b/.github/workflows/studio-e2e-test.yml
@@ -83,18 +83,30 @@ jobs:
if: steps.filter.outputs.studio == 'true'
run: rm -rf supabase && pnpm exec supabase init && mkdir supabase/functions
+ - name: Pre-start diagnostics
+ run: |
+ docker ps -a
+ sudo ss -tlnp | grep 5432 || echo "5432 free"
+
- name: Start supabase
if: steps.filter.outputs.studio == 'true'
run: SKIP_ASSET_UPLOAD=1 pnpm run e2e:setup:cli
+ - name: Failure diagnostics
+ if: failure()
+ run: |
+ docker ps -a
+ sudo ss -tlnp | grep 5432
+ docker logs $(docker ps -aq) 2>&1 || true
+
- name: Build studio
if: steps.filter.outputs.studio == 'true'
run: SKIP_ASSET_UPLOAD=1 NODE_ENV=test NODE_OPTIONS="--max-old-space-size=4096" pnpm run build:studio
- - name: 🚀 Run Playwright tests against Vercel Preview
+ - name: 🚀 Run Playwright tests against local studio build
if: steps.filter.outputs.studio == 'true'
id: playwright
- run: pnpm e2e --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
+ run: PWTEST_SHARD_WEIGHTS=62:38 pnpm e2e --shard=${{ matrix.shardIndex }}/${{ matrix.shardTotal }}
- name: Upload blob report to GitHub Actions Artifacts
if: always() && steps.filter.outputs.studio == 'true'
diff --git a/.prettierignore b/.prettierignore
index 5f74f6bc0d8..e1ba10c8806 100644
--- a/.prettierignore
+++ b/.prettierignore
@@ -8,6 +8,9 @@ apps/**/out
**/supabase/migrations/*.sql
apps/www/schema.sql
apps/www/public/images/*
+# Generated by apps/www/scripts/generateStaticContent.mjs (GitHub discussion bodies)
+apps/www/public/changelog.md
+apps/www/public/changelog/*.md
apps/www/.generated/*
apps/docs/**/generated/*
apps/docs/examples/*
diff --git a/apps/design-system/__registry__/default/block/chart-composed-metrics.tsx b/apps/design-system/__registry__/default/block/chart-composed-metrics.tsx
index 361c35a9a45..deab28e4ee2 100644
--- a/apps/design-system/__registry__/default/block/chart-composed-metrics.tsx
+++ b/apps/design-system/__registry__/default/block/chart-composed-metrics.tsx
@@ -71,7 +71,7 @@ export default function ChartComposedMetrics() {
}
+ loadingState={}
>
@@ -89,7 +89,7 @@ export default function ChartComposedMetrics() {
}
+ loadingState={}
>
diff --git a/apps/design-system/__registry__/index.tsx b/apps/design-system/__registry__/index.tsx
index 61ccda9e6b0..b442e4c0ecc 100644
--- a/apps/design-system/__registry__/index.tsx
+++ b/apps/design-system/__registry__/index.tsx
@@ -126,6 +126,17 @@ export const Index: Record = {
subcategory: "undefined",
chunks: []
},
+ "admonition-description-only": {
+ name: "admonition-description-only",
+ type: "components:example",
+ registryDependencies: ["admonition"],
+ component: React.lazy(() => import("@/registry/default/example/admonition-description-only")),
+ source: "",
+ files: ["registry/default/example/admonition-description-only.tsx"],
+ category: "undefined",
+ subcategory: "undefined",
+ chunks: []
+ },
"admonition-warning": {
name: "admonition-warning",
type: "components:example",
@@ -137,6 +148,17 @@ export const Index: Record = {
subcategory: "undefined",
chunks: []
},
+ "admonition-success": {
+ name: "admonition-success",
+ type: "components:example",
+ registryDependencies: ["admonition"],
+ component: React.lazy(() => import("@/registry/default/example/admonition-success")),
+ source: "",
+ files: ["registry/default/example/admonition-success.tsx"],
+ category: "undefined",
+ subcategory: "undefined",
+ chunks: []
+ },
"admonition-destructive": {
name: "admonition-destructive",
type: "components:example",
@@ -2568,6 +2590,17 @@ export const Index: Record = {
subcategory: "undefined",
chunks: []
},
+ "multi-select-in-dialog": {
+ name: "multi-select-in-dialog",
+ type: "components:example",
+ registryDependencies: undefined,
+ component: React.lazy(() => import("@/registry/default/example/multi-select-in-dialog")),
+ source: "",
+ files: ["registry/default/example/multi-select-in-dialog.tsx"],
+ category: "undefined",
+ subcategory: "undefined",
+ chunks: []
+ },
"tree-view-demo": {
name: "tree-view-demo",
type: "components:example",
diff --git a/apps/design-system/app/Providers.tsx b/apps/design-system/app/Providers.tsx
index a7fe031c76b..46dce708544 100644
--- a/apps/design-system/app/Providers.tsx
+++ b/apps/design-system/app/Providers.tsx
@@ -1,20 +1,19 @@
'use client'
+import { ThemeProvider } from 'common'
import { Provider as JotaiProvider } from 'jotai'
-import { ThemeProvider as NextThemesProvider } from 'next-themes'
-import { ThemeProviderProps } from 'next-themes/dist/types'
import { TooltipProvider } from 'ui'
import { MobileSidebarProvider } from '@/context/mobile-sidebar-context'
-export function ThemeProvider({ children, ...props }: ThemeProviderProps) {
+export function Providers({ children }: { children: React.ReactNode }) {
return (
-
+
{children}
-
+
)
}
diff --git a/apps/design-system/app/globals.css b/apps/design-system/app/globals.css
deleted file mode 100644
index f7f07cd6431..00000000000
--- a/apps/design-system/app/globals.css
+++ /dev/null
@@ -1,29 +0,0 @@
-@tailwind base;
-@tailwind components;
-@tailwind utilities;
-
-/* :root {
- --foreground-rgb: 0, 0, 0;
- --background-start-rgb: 214, 219, 220;
- --background-end-rgb: 255, 255, 255;
-}
-
-@media (prefers-color-scheme: dark) {
- :root {
- --foreground-rgb: 255, 255, 255;
- --background-start-rgb: 0, 0, 0;
- --background-end-rgb: 0, 0, 0;
- }
-} */
-
-body {
- /* color: rgb(var(--foreground-rgb));
- background: linear-gradient(to bottom, transparent, rgb(var(--background-end-rgb)))
- rgb(var(--background-start-rgb)); */
-}
-/*
-@layer utilities {
- .text-balance {
- text-wrap: balance;
- }
-} */
diff --git a/apps/design-system/app/layout.tsx b/apps/design-system/app/layout.tsx
index a7d6c82e2dd..69176828eb9 100644
--- a/apps/design-system/app/layout.tsx
+++ b/apps/design-system/app/layout.tsx
@@ -1,10 +1,10 @@
+import 'react-data-grid/lib/styles.css'
import '@/styles/globals.css'
-import '../../studio/styles/typography.css'
import type { Metadata, Viewport } from 'next'
import { customFont, sourceCodePro } from './fonts'
-import { ThemeProvider } from './Providers'
+import { Providers } from './Providers'
import { Toaster } from './toaster'
const className = `${customFont.variable} ${sourceCodePro.variable}`
@@ -131,16 +131,12 @@ export default async function Layout({ children }: RootLayoutProps) {
/>
-
+
-
+