diff --git a/.legacy/editor-packages/editor-canvas-renderer-bitmap/package.json b/.legacy/editor-packages/editor-canvas-renderer-bitmap/package.json index 3fe23d8e96..9b262d60d9 100644 --- a/.legacy/editor-packages/editor-canvas-renderer-bitmap/package.json +++ b/.legacy/editor-packages/editor-canvas-renderer-bitmap/package.json @@ -1,6 +1,12 @@ { "name": "@code-editor/canvas-renderer-bitmap", "version": "0.0.0", + "dependencies": { + "@code-editor/canvas": "workspace:^", + "@code-editor/canvas-renderer-core": "workspace:^", + "@design-sdk/figma-node": "^0.0.53", + "@mui/material": "^5.15.10" + }, "devDependencies": { "@types/react": "18.2.58", "react": "^18.2.0" @@ -8,11 +14,5 @@ "peerDependencies": { "@types/react": "18.2.58", "react": "^18.2.0" - }, - "dependencies": { - "@code-editor/canvas": "workspace:^", - "@code-editor/canvas-renderer-core": "workspace:^", - "@design-sdk/figma-node": "^0.0.53", - "@mui/material": "^5.15.10" } -} \ No newline at end of file +} diff --git a/.legacy/editor-packages/editor-canvas/package.json b/.legacy/editor-packages/editor-canvas/package.json index 0c7783af33..e7359e5a18 100644 --- a/.legacy/editor-packages/editor-canvas/package.json +++ b/.legacy/editor-packages/editor-canvas/package.json @@ -8,16 +8,6 @@ "dependencies": { "react-in-viewport": "^1.0.0-alpha.20" }, - "peerDependencies": { - "@editor-ui/hooks": "workspace:*", - "@design-sdk/figma-node": "^0.0.53", - "@design-sdk/query": "^0.0.53", - "@editor-ui/context-menu": "workspace:^", - "@emotion/styled": "^11.11.0", - "@use-gesture/react": "*", - "react": "^18", - "react-hot-toast": "^2.4.0" - }, "devDependencies": { "@design-sdk/figma-node": "^0.0.53", "@design-sdk/query": "^0.0.53", @@ -29,5 +19,15 @@ "react-hot-toast": "^2.4.0", "ts-jest": "^29.0.3", "typescript": "^4.8.4" + }, + "peerDependencies": { + "@design-sdk/figma-node": "^0.0.53", + "@design-sdk/query": "^0.0.53", + "@editor-ui/context-menu": "workspace:^", + "@editor-ui/hooks": "workspace:*", + "@emotion/styled": "^11.11.0", + "@use-gesture/react": "*", + "react": "^18", + "react-hot-toast": "^2.4.0" } } diff --git a/.legacy/editor-packages/editor-dashboard/package.json b/.legacy/editor-packages/editor-dashboard/package.json index e0a425ef22..1268c4cbe9 100644 --- a/.legacy/editor-packages/editor-dashboard/package.json +++ b/.legacy/editor-packages/editor-dashboard/package.json @@ -4,23 +4,6 @@ "scripts": { "test": "jest" }, - "devDependencies": { - "@emotion/styled": "^11.11.0", - "@types/node": "^20.11.20", - "@types/react": "18.2.58", - "@types/react-highlight-words": "^0.16.4", - "jest": "^29.3.1", - "next": "^14.1.0", - "react": "^18.2.0", - "react-dnd": "^16.0.1", - "ts-jest": "^29.0.3" - }, - "peerDependencies": { - "@emotion/styled": "^11.11.0", - "@types/react": "18.2.58", - "react": "^18.2.0", - "react-dnd": "16.0.1" - }, "dependencies": { "@code-editor/canvas-renderer-bitmap": "workspace:^", "@code-editor/external-links": "workspace:^", @@ -45,5 +28,22 @@ "react-hot-toast": "^2.4.0", "react-in-viewport": "^1.0.0-alpha.20", "react-selecto": "^1.20.2" + }, + "devDependencies": { + "@emotion/styled": "^11.11.0", + "@types/node": "^20.11.20", + "@types/react": "18.2.58", + "@types/react-highlight-words": "^0.16.4", + "jest": "^29.3.1", + "next": "^14.1.0", + "react": "^18.2.0", + "react-dnd": "^16.0.1", + "ts-jest": "^29.0.3" + }, + "peerDependencies": { + "@emotion/styled": "^11.11.0", + "@types/react": "18.2.58", + "react": "^18.2.0", + "react-dnd": "16.0.1" } } diff --git a/.legacy/editor-packages/editor-devtools/package.json b/.legacy/editor-packages/editor-devtools/package.json index 2786b149ee..f4a4e4a016 100644 --- a/.legacy/editor-packages/editor-devtools/package.json +++ b/.legacy/editor-packages/editor-devtools/package.json @@ -13,22 +13,22 @@ "react-base16-styling": "^0.9.1", "react-json-tree": "^0.15.0" }, - "peerDependencies": { - "@code-editor/ui": "workspace:*", + "devDependencies": { "@design-sdk/figma": "^0.0.53", "@design-sdk/figma-node": "^0.0.53", "@emotion/styled": "^11.11.0", "@reflect-ui/core": "^0.0.9", - "@web-builder/core": "workspace:*", + "@types/node": "^20.11.20", + "@types/react": "18.2.58", "react": "^18" }, - "devDependencies": { + "peerDependencies": { + "@code-editor/ui": "workspace:*", "@design-sdk/figma": "^0.0.53", "@design-sdk/figma-node": "^0.0.53", "@emotion/styled": "^11.11.0", "@reflect-ui/core": "^0.0.9", - "@types/node": "^20.11.20", - "@types/react": "18.2.58", + "@web-builder/core": "workspace:*", "react": "^18" } } diff --git a/.legacy/editor-packages/editor-icons-module/package.json b/.legacy/editor-packages/editor-icons-module/package.json index b263bb5614..5d7f905ded 100644 --- a/.legacy/editor-packages/editor-icons-module/package.json +++ b/.legacy/editor-packages/editor-icons-module/package.json @@ -9,4 +9,4 @@ "@types/react": "18.2.58", "react": "^18.2.0" } -} \ No newline at end of file +} diff --git a/.legacy/editor-packages/editor-icons-node/package.json b/.legacy/editor-packages/editor-icons-node/package.json index 72f15798c9..feb6927d03 100644 --- a/.legacy/editor-packages/editor-icons-node/package.json +++ b/.legacy/editor-packages/editor-icons-node/package.json @@ -1,6 +1,9 @@ { "name": "@code-editor/node-icons", "version": "0.0.0", + "dependencies": { + "@radix-ui/react-icons": "^1.0.3" + }, "devDependencies": { "@design-sdk/figma-node": "^0.0.53", "@types/react": "18.2.58", @@ -10,8 +13,5 @@ "@design-sdk/figma-node": "^0.0.53", "@types/react": "18.2.58", "react": "^18.2.0" - }, - "dependencies": { - "@radix-ui/react-icons": "^1.0.3" } -} \ No newline at end of file +} diff --git a/.legacy/editor-packages/editor-isolated-inspection/package.json b/.legacy/editor-packages/editor-isolated-inspection/package.json index b0b1bf7216..90504c8e6a 100644 --- a/.legacy/editor-packages/editor-isolated-inspection/package.json +++ b/.legacy/editor-packages/editor-isolated-inspection/package.json @@ -1,6 +1,13 @@ { "name": "@code-editor/isolated-inspection", "version": "0.0.0", + "dependencies": { + "@code-editor/canvas": "workspace:^", + "@code-editor/ui": "workspace:^", + "@radix-ui/react-icons": "^1.0.3", + "editor": "workspace:^", + "react-use-measure": "^2.1.1" + }, "devDependencies": { "@emotion/styled": "^11.11.0", "@types/node": "^20.11.20", @@ -12,12 +19,5 @@ "@types/node": "^20.11.20", "@types/react": "18.2.58", "react": "^18.2.0" - }, - "dependencies": { - "@code-editor/canvas": "workspace:^", - "@code-editor/ui": "workspace:^", - "@radix-ui/react-icons": "^1.0.3", - "editor": "workspace:^", - "react-use-measure": "^2.1.1" } } diff --git a/.legacy/editor-packages/editor-live-session/package.json b/.legacy/editor-packages/editor-live-session/package.json index d8227e6a43..b366321c6c 100644 --- a/.legacy/editor-packages/editor-live-session/package.json +++ b/.legacy/editor-packages/editor-live-session/package.json @@ -1,9 +1,9 @@ { - "name": "@editor-app/live-session", - "version": "0.0.0", - "private": false, - "main": "index.ts", - "dependencies": { - "pusher-js": "^7.0.3" - } -} \ No newline at end of file + "name": "@editor-app/live-session", + "version": "0.0.0", + "private": false, + "main": "index.ts", + "dependencies": { + "pusher-js": "^7.0.3" + } +} diff --git a/.legacy/editor-packages/editor-preview-flutter-daemon-view/package.json b/.legacy/editor-packages/editor-preview-flutter-daemon-view/package.json index 29f8ad3663..ffbe378fe7 100644 --- a/.legacy/editor-packages/editor-preview-flutter-daemon-view/package.json +++ b/.legacy/editor-packages/editor-preview-flutter-daemon-view/package.json @@ -5,4 +5,4 @@ "dependencies": { "@flutter-daemon/client": "^0.0.2" } -} \ No newline at end of file +} diff --git a/.legacy/editor-packages/editor-preview-pip/package.json b/.legacy/editor-packages/editor-preview-pip/package.json index d8d1187816..0b86efb213 100644 --- a/.legacy/editor-packages/editor-preview-pip/package.json +++ b/.legacy/editor-packages/editor-preview-pip/package.json @@ -4,13 +4,14 @@ "private": false, "description": "A Resizable Picture-in-Picture component.", "keywords": [ - "Picture-in-Picture", + "Draggable", "PIP", "PIP Window", - "Resizable PIP", + "Picture-in-Picture", "Resizable", - "Draggable" + "Resizable PIP" ], + "license": "MIT", "author": "Itiel Maimon", "contributors": [ { @@ -24,19 +25,39 @@ "url": "https://softmarshmallow.com" } ], - "license": "MIT", - "main": "dist/index.js", - "module": "dist/index.js", + "repository": "https://github.com/gridaco/designto-code", "files": [ "dist", "README.md" ], - "repository": "https://github.com/gridaco/designto-code", + "main": "dist/index.js", + "module": "dist/index.js", + "publishConfig": { + "access": "public" + }, + "scripts": { + "clean": "rimraf dist", + "prepack": "yarn clean && tsc", + "start": "react-scripts start" + }, "dependencies": { "@radix-ui/react-context-menu": "^0.1.1", "react-draggable": "^4.4.4", "react-resizable": "^3.0.4" }, + "devDependencies": { + "@babel/cli": "^7.14.5", + "@babel/core": "^7.14.6", + "@babel/preset-env": "^7.14.7", + "@modulz/design-system": "^1.0.0", + "@testing-library/jest-dom": "^5.14.1", + "@testing-library/react": "^11.2.7", + "@testing-library/user-event": "^12.8.3", + "@types/react": "18.2.58", + "react": "^18.2.0", + "typescript": "^4.4.4", + "web-vitals": "^1.1.2" + }, "peerDependencies": { "@emotion/styled": "^11.3.0", "@modulz/design-system": "^1.0.0", @@ -44,11 +65,6 @@ "react": "^18.2.0", "react-dom": "^18.2.0" }, - "scripts": { - "clean": "rimraf dist", - "prepack": "yarn clean && tsc", - "start": "react-scripts start" - }, "browserslist": { "production": [ ">0.2%", @@ -60,21 +76,5 @@ "last 1 firefox version", "last 1 safari version" ] - }, - "devDependencies": { - "@babel/cli": "^7.14.5", - "@babel/core": "^7.14.6", - "@babel/preset-env": "^7.14.7", - "@modulz/design-system": "^1.0.0", - "@testing-library/jest-dom": "^5.14.1", - "@testing-library/react": "^11.2.7", - "@testing-library/user-event": "^12.8.3", - "@types/react": "18.2.58", - "react": "^18.2.0", - "typescript": "^4.4.4", - "web-vitals": "^1.1.2" - }, - "publishConfig": { - "access": "public" } } diff --git a/.legacy/editor-packages/editor-preview-vanilla/package.json b/.legacy/editor-packages/editor-preview-vanilla/package.json index 4a86209609..d6197408e7 100644 --- a/.legacy/editor-packages/editor-preview-vanilla/package.json +++ b/.legacy/editor-packages/editor-preview-vanilla/package.json @@ -2,23 +2,25 @@ "name": "@code-editor/vanilla-preview", "version": "0.0.2", "private": false, - "main": "dist/index.js", "repository": "https://github.com/gridaco/designto-code", - "scripts": { - "clean": "rimraf dist", - "prepack": "yarn clean && tsc", - "storybook": "start-storybook -p 6006", - "build-storybook": "build-storybook" - }, "files": [ "dist", "LICENSE", "README.md" ], - "peerDependencies": { - "@emotion/styled": "^11.3.0", - "@types/react": "18.2.58", - "react": "^18.2.0" + "main": "dist/index.js", + "publishConfig": { + "access": "public" + }, + "scripts": { + "build-storybook": "build-storybook", + "clean": "rimraf dist", + "prepack": "yarn clean && tsc", + "storybook": "start-storybook -p 6006" + }, + "dependencies": { + "re-resizable": "^6.9.1", + "react-use-size": "^2.0.4" }, "devDependencies": { "@babel/core": "^7.16.7", @@ -32,11 +34,9 @@ "react": "^18.2.0", "typescript": "^4.4.4" }, - "dependencies": { - "re-resizable": "^6.9.1", - "react-use-size": "^2.0.4" - }, - "publishConfig": { - "access": "public" + "peerDependencies": { + "@emotion/styled": "^11.3.0", + "@types/react": "18.2.58", + "react": "^18.2.0" } -} \ No newline at end of file +} diff --git a/.legacy/editor-packages/editor-property/package.json b/.legacy/editor-packages/editor-property/package.json index cb30b348fa..d8bc031d67 100644 --- a/.legacy/editor-packages/editor-property/package.json +++ b/.legacy/editor-packages/editor-property/package.json @@ -1,26 +1,26 @@ { "name": "@code-editor/property", "version": "0.0.0", - "peerDependencies": { + "devDependencies": { "@design-sdk/figma-types": "^0.0.53", "@emotion/styled": "^11.11.0", "@radix-ui/colors": "^3.0.0", "@radix-ui/react-hover-card": "^1.0.7", "@reflect-ui/core": "^0.0.9", "@stitches/react": "^1.2.8", - "@web-builder/styles": "workspace:*", - "react": "^18.2.0" + "@types/node": "^18.11.9", + "@types/react": "^18.0.24", + "@types/react-dom": "^18.0.8", + "typescript": "^4.8.4" }, - "devDependencies": { + "peerDependencies": { "@design-sdk/figma-types": "^0.0.53", "@emotion/styled": "^11.11.0", "@radix-ui/colors": "^3.0.0", "@radix-ui/react-hover-card": "^1.0.7", "@reflect-ui/core": "^0.0.9", "@stitches/react": "^1.2.8", - "@types/node": "^18.11.9", - "@types/react": "^18.0.24", - "@types/react-dom": "^18.0.8", - "typescript": "^4.8.4" + "@web-builder/styles": "workspace:*", + "react": "^18.2.0" } } diff --git a/.legacy/editor-packages/editor-services-dart/package.json b/.legacy/editor-packages/editor-services-dart/package.json index f1d7a29f9c..c7a1b5bf65 100644 --- a/.legacy/editor-packages/editor-services-dart/package.json +++ b/.legacy/editor-packages/editor-services-dart/package.json @@ -1,6 +1,6 @@ { "name": "@code-editor/dart-services", - "description": "dart build services for flutter framework", "version": "0.0.0", - "private": false -} \ No newline at end of file + "private": false, + "description": "dart build services for flutter framework" +} diff --git a/.legacy/editor-packages/editor-services-esbuild/package.json b/.legacy/editor-packages/editor-services-esbuild/package.json index 9788ceaf6e..3f879ae882 100644 --- a/.legacy/editor-packages/editor-services-esbuild/package.json +++ b/.legacy/editor-packages/editor-services-esbuild/package.json @@ -12,4 +12,4 @@ "axios": "^0.26.1 || ^0.21.0", "nanoid": "^3.3.2" } -} \ No newline at end of file +} diff --git a/.legacy/editor-packages/editor-services-estypes-resolver/package.json b/.legacy/editor-packages/editor-services-estypes-resolver/package.json index 0062767cb5..79c522dd11 100644 --- a/.legacy/editor-packages/editor-services-estypes-resolver/package.json +++ b/.legacy/editor-packages/editor-services-estypes-resolver/package.json @@ -8,4 +8,4 @@ "peerDependencies": { "@monaco-editor/react": "^4.6.0" } -} \ No newline at end of file +} diff --git a/.legacy/editor-packages/editor-services-jsx-syntax-highlight/package.json b/.legacy/editor-packages/editor-services-jsx-syntax-highlight/package.json index 679e2e8024..602e42cfc5 100644 --- a/.legacy/editor-packages/editor-services-jsx-syntax-highlight/package.json +++ b/.legacy/editor-packages/editor-services-jsx-syntax-highlight/package.json @@ -5,11 +5,11 @@ "dependencies": { "@code-editor/webworker-services-core": "workspace:^" }, - "peerDependencies": { - "@monaco-editor/react": "^4.4.1", + "devDependencies": { "monaco-editor": "^0.46.0" }, - "devDependencies": { + "peerDependencies": { + "@monaco-editor/react": "^4.4.1", "monaco-editor": "^0.46.0" } -} \ No newline at end of file +} diff --git a/.legacy/editor-packages/editor-services-prettier/package.json b/.legacy/editor-packages/editor-services-prettier/package.json index fdbf03dddd..19f41283fb 100644 --- a/.legacy/editor-packages/editor-services-prettier/package.json +++ b/.legacy/editor-packages/editor-services-prettier/package.json @@ -2,18 +2,18 @@ "name": "@code-editor/prettier-services", "version": "0.0.0", "private": false, - "peerDependencies": { + "dependencies": { + "prettier": "^3.2.5" + }, + "devDependencies": { "@code-editor/webworker-services-core": "workspace:^", - "@monaco-editor/react": "^4.4.1", "dart-style": "1.3.2-dev", "monaco-editor": "^0.46.0" }, - "devDependencies": { + "peerDependencies": { "@code-editor/webworker-services-core": "workspace:^", + "@monaco-editor/react": "^4.4.1", "dart-style": "1.3.2-dev", "monaco-editor": "^0.46.0" - }, - "dependencies": { - "prettier": "^3.2.5" } } diff --git a/.legacy/editor-packages/editor-services-webworker-core/package.json b/.legacy/editor-packages/editor-services-webworker-core/package.json index c38f1014b1..50566856c9 100644 --- a/.legacy/editor-packages/editor-services-webworker-core/package.json +++ b/.legacy/editor-packages/editor-services-webworker-core/package.json @@ -5,4 +5,4 @@ "dependencies": { "p-queue": "^7.2.0" } -} \ No newline at end of file +} diff --git a/.legacy/editor-packages/editor-shortcuts/package.json b/.legacy/editor-packages/editor-shortcuts/package.json index ecfbd5ee23..eb2bc7fc9b 100644 --- a/.legacy/editor-packages/editor-shortcuts/package.json +++ b/.legacy/editor-packages/editor-shortcuts/package.json @@ -1,4 +1,4 @@ { "name": "@code-editor/shortcuts", "version": "0.0.0" -} \ No newline at end of file +} diff --git a/.legacy/editor-packages/editor-ui/package.json b/.legacy/editor-packages/editor-ui/package.json index aa68d1ebc0..ae221b9c00 100644 --- a/.legacy/editor-packages/editor-ui/package.json +++ b/.legacy/editor-packages/editor-ui/package.json @@ -13,4 +13,4 @@ "@types/react": "18.2.58", "react": "^18.2.0" } -} \ No newline at end of file +} diff --git a/.legacy/editor-packages/editor-use-sys-theme/package.json b/.legacy/editor-packages/editor-use-sys-theme/package.json index 9f0cf83a62..3eda18460d 100644 --- a/.legacy/editor-packages/editor-use-sys-theme/package.json +++ b/.legacy/editor-packages/editor-use-sys-theme/package.json @@ -9,4 +9,4 @@ "@types/react": "18.2.58", "react": "^18.2.0" } -} \ No newline at end of file +} diff --git a/.legacy/editor/package.json b/.legacy/editor/package.json index db276c0dd5..ec3398fbc5 100644 --- a/.legacy/editor/package.json +++ b/.legacy/editor/package.json @@ -3,12 +3,12 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev -p 6626", "build": "next build", + "dev": "next dev -p 6626", "lint": "next lint", - "start": "next start -p 6626", + "postbuild": "npm run sitemap", "sitemap": "next-sitemap && node ./.scripts/post-sitemap-mod.js", - "postbuild": "npm run sitemap" + "start": "next start -p 6626" }, "dependencies": { "@base-sdk-fp/auth-components-react": "^0.1.4", diff --git a/.legacy/posts/package.json b/.legacy/posts/package.json index 6d9b872dcd..3750d5fc4e 100644 --- a/.legacy/posts/package.json +++ b/.legacy/posts/package.json @@ -3,8 +3,8 @@ "version": "0.0.0", "private": false, "scripts": { - "dev": "next dev -p 3315", "build": "next build", + "dev": "next dev -p 3315", "start": "next start -p 3315" }, "dependencies": { diff --git a/.oxfmtrc.jsonc b/.oxfmtrc.jsonc index eb6dd73e02..7544734c88 100644 --- a/.oxfmtrc.jsonc +++ b/.oxfmtrc.jsonc @@ -5,4 +5,7 @@ // we're migrating from prettier to oxfmt, below will be removed once complete. "printWidth": 80, "trailingComma": "es5", + "experimentalSortPackageJson": { + "sortScripts": true, + }, } diff --git a/AGENTS.md b/AGENTS.md index 77f822381c..63af4aa451 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -63,6 +63,11 @@ Grida heavily relies on Supabase (PostgreSQL). - electron with electron-forge - vite +**Tooling** + +- Turborepo - monorepo build orchestration +- oxfmt (oxc) - code formatter + ## Documentation Documentation files are located in the `./docs` directory. diff --git a/apps/backgrounds/package.json b/apps/backgrounds/package.json index c935da75c5..5dcef1b936 100644 --- a/apps/backgrounds/package.json +++ b/apps/backgrounds/package.json @@ -4,10 +4,10 @@ "private": true, "homepage": "https://bg.grida.co", "scripts": { - "dev": "next dev", "build": "next build", - "start": "next start", + "dev": "next dev", "lint": "eslint", + "start": "next start", "typecheck": "tsc --noEmit" }, "dependencies": { diff --git a/apps/blog/package.json b/apps/blog/package.json index 3fa3983506..fc8a2b7a44 100644 --- a/apps/blog/package.json +++ b/apps/blog/package.json @@ -3,17 +3,17 @@ "version": "0.0.0", "private": true, "scripts": { - "docusaurus": "docusaurus", - "start": "docusaurus start", - "dev": "docusaurus start", "build": "docusaurus build", - "swizzle": "docusaurus swizzle", - "deploy": "docusaurus deploy", "clear": "docusaurus clear", + "deploy": "docusaurus deploy", + "dev": "docusaurus start", + "docusaurus": "docusaurus", "serve": "docusaurus serve", - "write-translations": "docusaurus write-translations", + "start": "docusaurus start", + "swizzle": "docusaurus swizzle", + "typecheck": "tsc --noEmit", "write-heading-ids": "docusaurus write-heading-ids", - "typecheck": "tsc --noEmit" + "write-translations": "docusaurus write-translations" }, "dependencies": { "@docusaurus/core": "3.7.0", diff --git a/apps/docs/package.json b/apps/docs/package.json index 215ecbd11d..b59fedf3b8 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -3,19 +3,19 @@ "version": "0.0.0", "private": true, "scripts": { - "content:watch": "node ./scripts/watch-docs.js", + "build": "pnpm content:setup && docusaurus build", + "clear": "docusaurus clear", "content:setup": "node ./scripts/postinstall.js", - "postinstall": "pnpm content:setup", + "content:watch": "node ./scripts/watch-docs.js", + "deploy": "docusaurus deploy", + "dev": "content:watch & pnpm start", "docusaurus": "docusaurus", + "postinstall": "pnpm content:setup", + "serve": "docusaurus serve --port 3001", "start": "docusaurus start --port 3001", - "dev": "content:watch & pnpm start", - "build": "pnpm content:setup && docusaurus build", "swizzle": "docusaurus swizzle", - "deploy": "docusaurus deploy", - "clear": "docusaurus clear", - "serve": "docusaurus serve --port 3001", - "write-translations": "docusaurus write-translations", - "write-heading-ids": "docusaurus write-heading-ids" + "write-heading-ids": "docusaurus write-heading-ids", + "write-translations": "docusaurus write-translations" }, "dependencies": { "@docusaurus/core": "3.7.0", @@ -27,10 +27,10 @@ "clsx": "^2.1.1", "katex": "^0.16.11", "prism-react-renderer": "^2.4.1", - "rehype-katex": "^7.0.0", - "remark-math": "^6.0.0", "react": "19.2.1", - "react-dom": "19.2.1" + "react-dom": "19.2.1", + "rehype-katex": "^7.0.0", + "remark-math": "^6.0.0" }, "devDependencies": { "@docusaurus/module-type-aliases": "3.7.0", diff --git a/apps/viewer/package.json b/apps/viewer/package.json index 11373b5a68..3f1ed02d7a 100644 --- a/apps/viewer/package.json +++ b/apps/viewer/package.json @@ -3,10 +3,10 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev", "build": "next build", - "start": "next start", + "dev": "next dev", "lint": "eslint", + "start": "next start", "typecheck": "tsc --noEmit" }, "dependencies": { diff --git a/crates/grida-canvas-wasm/package.json b/crates/grida-canvas-wasm/package.json index 87174ea72f..2f4139ae31 100644 --- a/crates/grida-canvas-wasm/package.json +++ b/crates/grida-canvas-wasm/package.json @@ -22,10 +22,10 @@ "scripts": { "build": "tsup", "dev": "tsup --watch", - "serve": "serve -p 4020", - "test": "vitest run", "prepack": "just build", "prepublishOnly": "[ $(du -sk lib 2>/dev/null | cut -f1) -lt 15360 ]", + "serve": "serve -p 4020", + "test": "vitest run", "typecheck": "tsc --noEmit" }, "devDependencies": { diff --git a/crates/grida-canvas/package.json b/crates/grida-canvas/package.json index 02b2b3f242..a3d97ea174 100644 --- a/crates/grida-canvas/package.json +++ b/crates/grida-canvas/package.json @@ -1,7 +1,7 @@ { "name": "@crates/grida-canvas", - "description": "turbo ci rust wrapper", "private": true, + "description": "turbo ci rust wrapper", "scripts": { "build": "cargo build --release", "test": "cargo test" diff --git a/crates/math2/package.json b/crates/math2/package.json index 0f1fba40b0..c0b3ab6d83 100644 --- a/crates/math2/package.json +++ b/crates/math2/package.json @@ -1,7 +1,7 @@ { "name": "@crates/math2", - "description": "turbo ci rust wrapper", "private": true, + "description": "turbo ci rust wrapper", "scripts": { "build": "cargo build --release" } diff --git a/desktop/package.json b/desktop/package.json index 3191e99c07..d4ed2c2d5d 100644 --- a/desktop/package.json +++ b/desktop/package.json @@ -1,25 +1,24 @@ { "name": "desktop", "version": "0.0.1", + "private": true, "description": "Grida Desktop App", - "homepage": "https://grida.co", - "repository": "https://github.com/gridaco/grida", "keywords": [], + "homepage": "https://grida.co", + "license": "MIT", "author": { "name": "Grida", "email": "hello@grida.co" }, - "private": true, + "repository": "https://github.com/gridaco/grida", "main": ".vite/build/main.js", - "packageManager": "pnpm@10.10.0", "scripts": { "dev": "electron-forge start", - "package": "electron-forge package", + "lint": "eslint --ext .ts,.tsx .", "make": "electron-forge make", - "publish:prerelease": "electron-forge publish", - "lint": "eslint --ext .ts,.tsx ." + "package": "electron-forge package", + "publish:prerelease": "electron-forge publish" }, - "license": "MIT", "dependencies": { "clsx": "^2.1.1", "electron-squirrel-startup": "^1.0.1", @@ -59,5 +58,6 @@ "ts-node": "^10.0.0", "typescript": "^5", "vite": "^6.3.5" - } + }, + "packageManager": "pnpm@10.10.0" } diff --git a/editor/app/(api)/private/west/campaigns/[campaign_id]/route.ts b/editor/app/(api)/private/west/campaigns/[campaign_id]/route.ts new file mode 100644 index 0000000000..d51fd8a4ee --- /dev/null +++ b/editor/app/(api)/private/west/campaigns/[campaign_id]/route.ts @@ -0,0 +1,69 @@ +import { + createWestReferralClient, + service_role, +} from "@/lib/supabase/server"; +import { headers } from "next/headers"; +import { NextRequest, NextResponse } from "next/server"; + +type Context = { + params: Promise<{ campaign_id: string }>; +}; + +export async function DELETE(req: NextRequest, context: Context) { + const { campaign_id } = await context.params; + const headerList = await headers(); + + const project_id = Number( + headerList.get("x-grida-editor-user-current-project-id") + ); + + if (!project_id || Number.isNaN(project_id)) { + return NextResponse.json( + { error: "Missing or invalid project id" }, + { status: 400 } + ); + } + + // Verify the campaign exists and belongs to the project. + // This client uses the caller's session (cookie-based, publishable key), + // so RLS is enforced — only org members can see the campaign row. + const client = await createWestReferralClient(); + + const { data: campaign, error: fetchErr } = await client + .from("campaign") + .select("id, project_id") + .eq("id", campaign_id) + .eq("project_id", project_id) + .single(); + + if (fetchErr || !campaign) { + return NextResponse.json( + { error: "Campaign not found" }, + { status: 404 } + ); + } + + // Delete the parent document — this cascades to the campaign row + // and all related tables. The campaign table has a trigger + // (trg_prevent_orphan_document_subtype) that blocks direct deletion + // of the subtype; the document row must be deleted instead. + // + // We use service_role because the document table lives in the public + // schema and the caller's session may lack direct DELETE grant. + // The RLS-protected SELECT above is the authorization gate. + const { error: docErr } = await service_role.workspace + .from("document") + .delete() + .eq("id", campaign_id) + .eq("project_id", project_id); + + if (docErr) { + console.error("Failed to delete campaign", docErr); + return NextResponse.json( + { error: "Failed to delete campaign" }, + { status: 500 } + ); + } + + return NextResponse.json({ data: { id: campaign_id } }, { status: 200 }); +} diff --git a/editor/app/(workbench)/[org]/[proj]/(console)/(campaign)/campaigns/[campaign]/_components/overview.tsx b/editor/app/(workbench)/[org]/[proj]/(console)/(campaign)/campaigns/[campaign]/_components/overview.tsx index d4e7831ad2..624cbe2a4d 100644 --- a/editor/app/(workbench)/[org]/[proj]/(console)/(campaign)/campaigns/[campaign]/_components/overview.tsx +++ b/editor/app/(workbench)/[org]/[proj]/(console)/(campaign)/campaigns/[campaign]/_components/overview.tsx @@ -27,7 +27,14 @@ import { import { Analytics } from "@/lib/analytics"; import useSWR from "swr"; import { useCampaign } from "../store"; -import { ActivityIcon, Loader2 } from "lucide-react"; +import { + Empty, + EmptyDescription, + EmptyHeader, + EmptyMedia, + EmptyTitle, +} from "@/components/ui/empty"; +import { Activity, Loader2 } from "lucide-react"; interface DateRange { from: Date; @@ -92,16 +99,18 @@ function getEventTotals(data: AnalyzedData): EventTotal[] { function EmptyState() { return ( -
- Your campaign is ready to go! Once participants start engaging with your - campaign, you'll see activity data here. -
-+ Irreversible actions for this campaign. +
++ Permanently delete this campaign and all associated + data, including participants, rewards, challenges, and + events. This action cannot be undone. +
+