From 5e454f5f693b63e7fec8ac596a200d5c48f150be Mon Sep 17 00:00:00 2001 From: Darwin Ding Date: Tue, 17 Dec 2024 14:37:34 -0500 Subject: [PATCH] Removing fern-dashboard (#1905) Co-authored-by: fern --- .../workflows/deploy-fern-dashboard-dev.yml | 55 ---- .../deploy-fern-dashboard-preview.yml | 56 ---- .../workflows/deploy-fern-dashboard-prod.yml | 36 --- .../src/pages/api/fern-docs/proxy/file.ts | 4 +- packages/ui/fern-dashboard/.eslintrc.cjs | 11 - packages/ui/fern-dashboard/.gitignore | 27 -- packages/ui/fern-dashboard/.prettierrc.cjs | 1 - packages/ui/fern-dashboard/README.md | 30 -- packages/ui/fern-dashboard/components.json | 17 -- packages/ui/fern-dashboard/index.html | 13 - packages/ui/fern-dashboard/package.json | 69 ----- packages/ui/fern-dashboard/postcss.config.cjs | 10 - .../ui/fern-dashboard/public/fern-logo.svg | 10 - .../ui/fern-dashboard/scripts/git-version.sh | 15 - packages/ui/fern-dashboard/src/base.css | 109 ------- .../fern-dashboard/src/components/Loading.tsx | 18 -- .../src/components/errors/ErrorRenderer.tsx | 7 - .../src/components/sdks/ActivityLog.tsx | 129 --------- .../src/components/sdks/BreadcrumbHeader.tsx | 173 ----------- .../src/components/sdks/SdkActivityStack.tsx | 43 --- .../src/components/sdks/SdkContextCard.tsx | 212 -------------- .../src/components/sdks/ZeroState.tsx | 18 -- .../src/components/sdks/mock-data/Api.tsx | 20 -- .../src/components/sdks/mock-data/Sdk.tsx | 115 -------- .../src/components/sdks/mock-data/Users.tsx | 31 -- .../src/components/ui/avatar.tsx | 38 --- .../src/components/ui/breadcrumb.tsx | 90 ------ .../src/components/ui/button.tsx | 47 --- .../src/components/ui/dialog.tsx | 95 ------- .../src/components/ui/dropdown-menu.tsx | 179 ------------ .../fern-dashboard/src/components/ui/form.tsx | 136 --------- .../src/components/ui/input.tsx | 22 -- .../src/components/ui/label.tsx | 17 -- .../src/components/ui/popover.tsx | 29 -- .../src/components/ui/scroll-area.tsx | 40 --- .../src/components/ui/separator.tsx | 24 -- packages/ui/fern-dashboard/src/index.scss | 52 ---- packages/ui/fern-dashboard/src/lib/utils.ts | 6 - packages/ui/fern-dashboard/src/main.tsx | 48 ---- .../ui/fern-dashboard/src/routeTree.gen.ts | 138 --------- .../ui/fern-dashboard/src/routes/__root.tsx | 18 -- .../ui/fern-dashboard/src/routes/_auth.tsx | 42 --- .../fern-dashboard/src/routes/_auth/login.tsx | 75 ----- .../src/routes/_authenticated.tsx | 37 --- .../src/routes/_authenticated/team.$orgId.tsx | 269 ------------------ .../ui/fern-dashboard/src/routes/index.tsx | 59 ---- .../ui/fern-dashboard/src/services/fern.tsx | 11 - .../ui/fern-dashboard/src/services/venus.tsx | 85 ------ packages/ui/fern-dashboard/src/utils.ts | 6 - packages/ui/fern-dashboard/src/vite-env.d.ts | 1 - .../ui/fern-dashboard/tailwind.config.cjs | 57 ---- packages/ui/fern-dashboard/tsconfig.json | 36 --- packages/ui/fern-dashboard/turbo.json | 10 - packages/ui/fern-dashboard/vercel.json | 12 - packages/ui/fern-dashboard/vite.config.ts | 17 -- 55 files changed, 2 insertions(+), 2923 deletions(-) delete mode 100644 .github/workflows/deploy-fern-dashboard-dev.yml delete mode 100644 .github/workflows/deploy-fern-dashboard-preview.yml delete mode 100644 .github/workflows/deploy-fern-dashboard-prod.yml delete mode 100644 packages/ui/fern-dashboard/.eslintrc.cjs delete mode 100644 packages/ui/fern-dashboard/.gitignore delete mode 100644 packages/ui/fern-dashboard/.prettierrc.cjs delete mode 100644 packages/ui/fern-dashboard/README.md delete mode 100644 packages/ui/fern-dashboard/components.json delete mode 100644 packages/ui/fern-dashboard/index.html delete mode 100644 packages/ui/fern-dashboard/package.json delete mode 100644 packages/ui/fern-dashboard/postcss.config.cjs delete mode 100644 packages/ui/fern-dashboard/public/fern-logo.svg delete mode 100755 packages/ui/fern-dashboard/scripts/git-version.sh delete mode 100644 packages/ui/fern-dashboard/src/base.css delete mode 100644 packages/ui/fern-dashboard/src/components/Loading.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/errors/ErrorRenderer.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/sdks/ActivityLog.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/sdks/BreadcrumbHeader.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/sdks/SdkActivityStack.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/sdks/SdkContextCard.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/sdks/ZeroState.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/sdks/mock-data/Api.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/sdks/mock-data/Sdk.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/sdks/mock-data/Users.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/ui/avatar.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/ui/breadcrumb.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/ui/button.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/ui/dialog.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/ui/dropdown-menu.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/ui/form.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/ui/input.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/ui/label.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/ui/popover.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/ui/scroll-area.tsx delete mode 100644 packages/ui/fern-dashboard/src/components/ui/separator.tsx delete mode 100644 packages/ui/fern-dashboard/src/index.scss delete mode 100644 packages/ui/fern-dashboard/src/lib/utils.ts delete mode 100644 packages/ui/fern-dashboard/src/main.tsx delete mode 100644 packages/ui/fern-dashboard/src/routeTree.gen.ts delete mode 100644 packages/ui/fern-dashboard/src/routes/__root.tsx delete mode 100644 packages/ui/fern-dashboard/src/routes/_auth.tsx delete mode 100644 packages/ui/fern-dashboard/src/routes/_auth/login.tsx delete mode 100644 packages/ui/fern-dashboard/src/routes/_authenticated.tsx delete mode 100644 packages/ui/fern-dashboard/src/routes/_authenticated/team.$orgId.tsx delete mode 100644 packages/ui/fern-dashboard/src/routes/index.tsx delete mode 100644 packages/ui/fern-dashboard/src/services/fern.tsx delete mode 100644 packages/ui/fern-dashboard/src/services/venus.tsx delete mode 100644 packages/ui/fern-dashboard/src/utils.ts delete mode 100644 packages/ui/fern-dashboard/src/vite-env.d.ts delete mode 100644 packages/ui/fern-dashboard/tailwind.config.cjs delete mode 100644 packages/ui/fern-dashboard/tsconfig.json delete mode 100644 packages/ui/fern-dashboard/turbo.json delete mode 100644 packages/ui/fern-dashboard/vercel.json delete mode 100644 packages/ui/fern-dashboard/vite.config.ts diff --git a/.github/workflows/deploy-fern-dashboard-dev.yml b/.github/workflows/deploy-fern-dashboard-dev.yml deleted file mode 100644 index 4b5ccd4ff3..0000000000 --- a/.github/workflows/deploy-fern-dashboard-dev.yml +++ /dev/null @@ -1,55 +0,0 @@ -name: Deploy @fern-ui/dashboard (dev) -env: - # TODO: move to env vars in vercel - AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }} - AUTH0_CLIENT_ID: ${{ secrets.AUTH0_CLIENT_ID }} - VENUS_ORIGIN: ${{ secrets.VENUS_ORIGIN }} - VENUS_AUDIENCE: ${{ secrets.VENUS_AUDIENCE }} - -on: - push: - branches: - - main - -# Cancel previous workflows on previous push so we don't have deploys overwriting eachother here -concurrency: - group: dashboard-dev.buildwithfern.com - cancel-in-progress: true - -jobs: - ignore: - runs-on: ubuntu-latest - outputs: - continue: ${{ steps.ignore.outputs.continue }} - steps: - - uses: actions/checkout@v4 - - name: Ignore unchanged files - id: ignore - uses: ./.github/actions/turbo-ignore - with: - token: ${{ secrets.VERCEL_TOKEN }} - project: "dashboard-dev.buildwithfern.com" - package: "@fern-ui/dashboard" - environment: "production" - branch: main - - deploy: - needs: ignore - if: needs.ignore.outputs.continue == 1 - runs-on: ubuntu-latest - environment: - name: Production - dashboard-dev.buildwithfern.com - url: ${{ steps.deploy.outputs.deployment_url }} - steps: - # set the ref to a specific branch so that the deployment is scoped to that branch (instead of a headless ref) - - uses: actions/checkout@v4 - with: - ref: main - - - uses: ./.github/actions/install - - - name: Build & Deploy to Vercel - id: deploy - run: | - pnpm vercel-scripts deploy dashboard-dev.buildwithfern.com --token=${{ secrets.VERCEL_TOKEN }} --environment=production - echo "deployment_url=$(cat deployment-url.txt)" >> $GITHUB_OUTPUT diff --git a/.github/workflows/deploy-fern-dashboard-preview.yml b/.github/workflows/deploy-fern-dashboard-preview.yml deleted file mode 100644 index a795072491..0000000000 --- a/.github/workflows/deploy-fern-dashboard-preview.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: Preview @fern-ui/dashboard (dev) -env: - # TODO: move to env vars in vercel - AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }} - AUTH0_CLIENT_ID: ${{ secrets.AUTH0_CLIENT_ID }} - VENUS_ORIGIN: ${{ secrets.VENUS_ORIGIN }} - VENUS_AUDIENCE: ${{ secrets.VENUS_AUDIENCE }} - -on: - pull_request: - push: - branches: - - main - workflow_dispatch: - -concurrency: - group: ${{ github.workflow }}-${{ github.event_name }}-${{ github.event.pull_request.head.ref || github.ref_name || github.ref }} - cancel-in-progress: true - -jobs: - ignore: - runs-on: ubuntu-latest - outputs: - continue: ${{ steps.ignore.outputs.continue }} - steps: - - uses: actions/checkout@v4 - - name: Ignore unchanged files - id: ignore - uses: ./.github/actions/turbo-ignore - with: - token: ${{ secrets.VERCEL_TOKEN }} - project: "dashboard-dev.buildwithfern.com" - package: "@fern-ui/dashboard" - environment: "preview" - branch: ${{ github.event.pull_request.head.ref || github.ref_name || github.ref }} - - deploy: - needs: ignore - if: needs.ignore.outputs.continue == 1 - runs-on: ubuntu-latest - environment: - name: Preview - dashboard-dev.buildwithfern.com - url: ${{ steps.deploy.outputs.deployment_url }} - steps: - # set the ref to a specific branch so that the deployment is scoped to that branch (instead of a headless ref) - - uses: actions/checkout@v4 - with: - ref: ${{ github.event.pull_request.head.ref || github.ref_name || github.ref }} - - - uses: ./.github/actions/install - - - name: Build & Deploy to Vercel - id: deploy - run: | - pnpm vercel-scripts deploy dashboard-dev.buildwithfern.com --token=${{ secrets.VERCEL_TOKEN }} - echo "deployment_url=$(cat deployment-url.txt)" >> $GITHUB_OUTPUT diff --git a/.github/workflows/deploy-fern-dashboard-prod.yml b/.github/workflows/deploy-fern-dashboard-prod.yml deleted file mode 100644 index 8d048a26cf..0000000000 --- a/.github/workflows/deploy-fern-dashboard-prod.yml +++ /dev/null @@ -1,36 +0,0 @@ -name: Deploy @fern-ui/dashboard -env: - # TODO: move to env vars in vercel - AUTH0_DOMAIN: ${{ secrets.AUTH0_DOMAIN }} - AUTH0_CLIENT_ID: ${{ secrets.AUTH0_CLIENT_ID }} - VENUS_ORIGIN: ${{ secrets.VENUS_ORIGIN }} - VENUS_AUDIENCE: ${{ secrets.VENUS_AUDIENCE }} - -on: - push: - tags: - - dashboard@* - -# Cancel previous workflows on previous push so we don't have deploys overwriting eachother here -concurrency: - group: dashboard.buildwithfern.com - cancel-in-progress: true - -jobs: - deploy: - runs-on: ubuntu-latest - if: github.ref_type == 'tag' && github.event_name == 'push' - environment: - name: Production - dashboard.buildwithfern.com - url: ${{ steps.deploy.outputs.deployment_url }} - steps: - # set the ref to a specific branch so that the deployment is scoped to that branch (instead of a headless ref) - - uses: actions/checkout@v4 - - - uses: ./.github/actions/install - - - name: Build & Deploy to Vercel - id: deploy - run: | - pnpm vercel-scripts deploy dashboard.buildwithfern.com --token=${{ secrets.VERCEL_TOKEN }} --environment=production - echo "deployment_url=$(cat deployment-url.txt)" >> $GITHUB_OUTPUT diff --git a/packages/ui/docs-bundle/src/pages/api/fern-docs/proxy/file.ts b/packages/ui/docs-bundle/src/pages/api/fern-docs/proxy/file.ts index fa938cac36..2b05058607 100644 --- a/packages/ui/docs-bundle/src/pages/api/fern-docs/proxy/file.ts +++ b/packages/ui/docs-bundle/src/pages/api/fern-docs/proxy/file.ts @@ -21,7 +21,7 @@ export default async function handler(req: Request): Promise { const headers = new Headers({ "Access-Control-Allow-Origin": origin, "Access-Control-Allow-Methods": "POST", - "Access-Control-Allow-Headers": "Content-Type" + "Access-Control-Allow-Headers": "Content-Type", }); if (req.method === "OPTIONS") { @@ -58,7 +58,7 @@ export default async function handler(req: Request): Promise { return new Response(response.body, { status: response.status, - headers + headers, }); } catch (err) { // eslint-disable-next-line no-console diff --git a/packages/ui/fern-dashboard/.eslintrc.cjs b/packages/ui/fern-dashboard/.eslintrc.cjs deleted file mode 100644 index 2d4b9f6ba8..0000000000 --- a/packages/ui/fern-dashboard/.eslintrc.cjs +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - root: true, - env: { browser: true, es2020: true }, - extends: ["eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:react-hooks/recommended"], - ignorePatterns: ["dist", ".eslintrc.cjs"], - parser: "@typescript-eslint/parser", - plugins: ["react-refresh"], - rules: { - "react-refresh/only-export-components": ["warn", { allowConstantExport: true }] - } -}; diff --git a/packages/ui/fern-dashboard/.gitignore b/packages/ui/fern-dashboard/.gitignore deleted file mode 100644 index 343a37e7ea..0000000000 --- a/packages/ui/fern-dashboard/.gitignore +++ /dev/null @@ -1,27 +0,0 @@ -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -pnpm-debug.log* -lerna-debug.log* - -node_modules -dist -dist-ssr -*.local - -# Editor directories and files -.vscode/* -!.vscode/extensions.json -.idea -.DS_Store -*.suo -*.ntvs* -*.njsproj -*.sln -*.sw? -.vercel - -!src/lib/** \ No newline at end of file diff --git a/packages/ui/fern-dashboard/.prettierrc.cjs b/packages/ui/fern-dashboard/.prettierrc.cjs deleted file mode 100644 index 39cf0d0b8c..0000000000 --- a/packages/ui/fern-dashboard/.prettierrc.cjs +++ /dev/null @@ -1 +0,0 @@ -module.exports = require("../../../.prettierrc.json"); diff --git a/packages/ui/fern-dashboard/README.md b/packages/ui/fern-dashboard/README.md deleted file mode 100644 index bb15685029..0000000000 --- a/packages/ui/fern-dashboard/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# React + TypeScript + Vite - -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. - -Currently, two official plugins are available: - -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh - -## Expanding the ESLint configuration - -If you are developing a production application, we recommend updating the configuration to enable type aware lint rules: - -- Configure the top-level `parserOptions` property like this: - -```js -export default { - // other rules... - parserOptions: { - ecmaVersion: "latest", - sourceType: "module", - project: ["./tsconfig.json", "./tsconfig.node.json"], - tsconfigRootDir: __dirname, - }, -}; -``` - -- Replace `plugin:@typescript-eslint/recommended` to `plugin:@typescript-eslint/recommended-type-checked` or `plugin:@typescript-eslint/strict-type-checked` -- Optionally add `plugin:@typescript-eslint/stylistic-type-checked` -- Install [eslint-plugin-react](https://github.com/jsx-eslint/eslint-plugin-react) and add `plugin:react/recommended` & `plugin:react/jsx-runtime` to the `extends` list diff --git a/packages/ui/fern-dashboard/components.json b/packages/ui/fern-dashboard/components.json deleted file mode 100644 index 045c2f887c..0000000000 --- a/packages/ui/fern-dashboard/components.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "$schema": "https://ui.shadcn.com/schema.json", - "style": "default", - "rsc": false, - "tsx": true, - "tailwind": { - "config": "tailwind.config.cjs", - "css": "src/index.scss", - "baseColor": "slate", - "cssVariables": true, - "prefix": "" - }, - "aliases": { - "components": "@/components", - "utils": "@/lib/utils" - } -} diff --git a/packages/ui/fern-dashboard/index.html b/packages/ui/fern-dashboard/index.html deleted file mode 100644 index fb8277f3fe..0000000000 --- a/packages/ui/fern-dashboard/index.html +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - Fern - Dashboard - - -
- - - diff --git a/packages/ui/fern-dashboard/package.json b/packages/ui/fern-dashboard/package.json deleted file mode 100644 index 8fd001c8e0..0000000000 --- a/packages/ui/fern-dashboard/package.json +++ /dev/null @@ -1,69 +0,0 @@ -{ - "name": "@fern-ui/dashboard", - "private": true, - "version": "0.0.0", - "type": "module", - "scripts": { - "install-dashboard": "pnpm --filter=@fern-ui/dashboard install", - "format": "prettier --write --ignore-unknown --ignore-path ../../../shared/.prettierignore \"**\"", - "format:check": "prettier --check --ignore-unknown --ignore-path ../../../shared/.prettierignore \"**\"", - "dev": "vite", - "build": "vite build", - "lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", - "organize-imports": "organize-imports-cli tsconfig.json", - "preview": "vite preview" - }, - "dependencies": { - "@auth0/auth0-react": "^2.2.4", - "@devbookhq/splitter": "^1.4.2", - "@fern-api/venus-api-sdk": "0.10.1-5-ged06d22", - "@fern-ui/components": "workspace:*", - "@fern-ui/react-commons": "workspace:*", - "@hookform/resolvers": "^3.6.0", - "@radix-ui/colors": "^3.0.0", - "@radix-ui/react-avatar": "^1.1.1", - "@radix-ui/react-dialog": "^1.1.2", - "@radix-ui/react-dropdown-menu": "^2.1.2", - "@radix-ui/react-icons": "^1.3.2", - "@radix-ui/react-label": "^2.1.0", - "@radix-ui/react-navigation-menu": "^1.2.1", - "@radix-ui/react-popover": "^1.1.2", - "@radix-ui/react-scroll-area": "^1.2.1", - "@radix-ui/react-separator": "^1.1.0", - "@radix-ui/react-slot": "^1.1.0", - "@tanstack/react-query": "^5.59.17", - "@tanstack/react-router": "^1.78.2", - "class-variance-authority": "^0.7.1", - "clsx": "^2.1.1", - "date-fns": "^4.1.0", - "lucide-react": "^0.460.0", - "pluralize": "^8.0.0", - "react": "^18", - "react-dom": "^18", - "react-hook-form": "^7.51.5", - "react-use": "^17.5.0", - "sass": "^1.74.1", - "tailwind-merge": "^2.3.0", - "tailwindcss-animate": "^1.0.7", - "zod": "^3.23.8" - }, - "devDependencies": { - "@tanstack/router-devtools": "^1.78.2", - "@tanstack/router-vite-plugin": "^1.78.2", - "@types/node": "^20.12.12", - "@types/pluralize": "^0.0.33", - "@types/react": "^18", - "@types/react-dom": "^18", - "@typescript-eslint/eslint-plugin": "^7.2.0", - "@typescript-eslint/parser": "^7.2.0", - "@vitejs/plugin-react-swc": "^3.5.0", - "autoprefixer": "^10.4.16", - "eslint": "^8.57.0", - "eslint-plugin-react-hooks": "^4.6.0", - "eslint-plugin-react-refresh": "^0.4.6", - "postcss": "^8.4.33", - "tailwindcss": "^3.4.3", - "typescript": "^5.2.2", - "vite": "^5.4.10" - } -} diff --git a/packages/ui/fern-dashboard/postcss.config.cjs b/packages/ui/fern-dashboard/postcss.config.cjs deleted file mode 100644 index ac4aa01a50..0000000000 --- a/packages/ui/fern-dashboard/postcss.config.cjs +++ /dev/null @@ -1,10 +0,0 @@ -module.exports = { - // This is duplicated, make sure to keep it in sync with others - plugins: { - "postcss-import": {}, - "tailwindcss/nesting": {}, - tailwindcss: {}, - autoprefixer: {}, - ...(process.env.NODE_ENV === "production" ? { cssnano: {} } : {}) - } -}; diff --git a/packages/ui/fern-dashboard/public/fern-logo.svg b/packages/ui/fern-dashboard/public/fern-logo.svg deleted file mode 100644 index cb9095ee4f..0000000000 --- a/packages/ui/fern-dashboard/public/fern-logo.svg +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - - - - - diff --git a/packages/ui/fern-dashboard/scripts/git-version.sh b/packages/ui/fern-dashboard/scripts/git-version.sh deleted file mode 100755 index 1ecf15e925..0000000000 --- a/packages/ui/fern-dashboard/scripts/git-version.sh +++ /dev/null @@ -1,15 +0,0 @@ -#!/usr/bin/env bash - -if [[ -n "$CIRCLE_TAG" ]]; then - echo "$CIRCLE_TAG" - exit 0 -fi - -# if we're not on a tag in Circle but the current commit is tagged, then -# should then ignore the tag -tag="$(git describe --exact-match --tags HEAD 2> /dev/null || :)" -version="$(git describe --tags --always --first-parent)" - -result="$(echo "$version" | sed 's/^fdr@//;s/^ui@//;s/^dashboard@//')" - -echo "$result" \ No newline at end of file diff --git a/packages/ui/fern-dashboard/src/base.css b/packages/ui/fern-dashboard/src/base.css deleted file mode 100644 index 6068621600..0000000000 --- a/packages/ui/fern-dashboard/src/base.css +++ /dev/null @@ -1,109 +0,0 @@ -@layer base { - #root { - margin: 0 auto; - height: 100%; - width: 100%; - } - - :root { - --typography-code-font-family: ui-monospace, sfmono-regular, menlo, monaco, consolas, liberation mono, - courier new, monospace; - --typography-body-font-family: "InterVariable", "Inter", sans-serif; - --background: 0 0% 100%; - --foreground: 222.2 84% 4.9%; - --card: 0 0% 100%; - --card-foreground: 222.2 84% 4.9%; - --popover: 0 0% 100%; - --popover-foreground: 222.2 84% 4.9%; - --primary: 222.2 47.4% 11.2%; - --primary-foreground: 210 40% 98%; - --secondary: 210 40% 96.1%; - --secondary-foreground: 222.2 47.4% 11.2%; - --muted: 210 40% 96.1%; - --muted-foreground: 215.4 16.3% 46.9%; - --accent: 210 40% 96.1%; - --accent-foreground: 222.2 47.4% 11.2%; - --destructive: 0 84.2% 60.2%; - --destructive-foreground: 210 40% 98%; - --border: 214.3 31.8% 91.4%; - --input: 214.3 31.8% 91.4%; - --ring: 222.2 84% 4.9%; - --radius: 0.5rem; - } - - .dark { - --background: 222.2 84% 4.9%; - --foreground: 210 40% 98%; - --card: 222.2 84% 4.9%; - --card-foreground: 210 40% 98%; - --popover: 222.2 84% 4.9%; - --popover-foreground: 210 40% 98%; - --primary: 210 40% 98%; - --primary-foreground: 222.2 47.4% 11.2%; - --secondary: 217.2 32.6% 17.5%; - --secondary-foreground: 210 40% 98%; - --muted: 217.2 32.6% 17.5%; - --muted-foreground: 215 20.2% 65.1%; - --accent: 217.2 32.6% 17.5%; - --accent-foreground: 210 40% 98%; - --destructive: 0 62.8% 30.6%; - --destructive-foreground: 210 40% 98%; - --border: 217.2 32.6% 17.5%; - --input: 217.2 32.6% 17.5%; - --ring: 212.7 26.8% 83.9%; - } - - * { - @apply border-border; - @apply text-foreground; - } - - html, - body { - @apply t-default; - - height: 100%; - width: 100%; - margin: 0; - padding: 0; - font-family: var(--typography-body-font-family, var(--body-font-fallback)) !important; - font-size: 16px !important; - } - - body { - @apply bg-background text-foreground; - - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - } - - code, - pre, - .font-mono { - font-family: var(--typography-code-font-family, var(--code-font-fallback)) !important; - } - - h1 { - @apply text-[2.25rem] font-extrabold leading-tight; - } - - h2 { - @apply text-[1.5rem] font-bold leading-tight; - } - - h3 { - @apply text-[1.25rem] font-semibold leading-tight; - } - - h4 { - @apply text-[1.125rem] font-semibold leading-tight; - } - - h5 { - @apply text-[1rem] font-semibold; - } - - h6 { - @apply text-[0.875rem] font-semibold; - } -} diff --git a/packages/ui/fern-dashboard/src/components/Loading.tsx b/packages/ui/fern-dashboard/src/components/Loading.tsx deleted file mode 100644 index 12c4bf81b9..0000000000 --- a/packages/ui/fern-dashboard/src/components/Loading.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { cn } from "@/lib/utils"; -import { RemoteFontAwesomeIcon } from "@fern-ui/components"; - -interface LoadingProps { - fullPage?: boolean; -} - -export const Loading: React.FC = ({ fullPage = false }: LoadingProps) => { - return ( -
- -
- ); -}; diff --git a/packages/ui/fern-dashboard/src/components/errors/ErrorRenderer.tsx b/packages/ui/fern-dashboard/src/components/errors/ErrorRenderer.tsx deleted file mode 100644 index cce531906d..0000000000 --- a/packages/ui/fern-dashboard/src/components/errors/ErrorRenderer.tsx +++ /dev/null @@ -1,7 +0,0 @@ -import { toast } from "@fern-ui/components"; -import { ErrorComponentProps, Navigate } from "@tanstack/react-router"; - -export const ErrorRenderer: React.FC = (props) => { - toast.error(props.error.message); - return ; -}; diff --git a/packages/ui/fern-dashboard/src/components/sdks/ActivityLog.tsx b/packages/ui/fern-dashboard/src/components/sdks/ActivityLog.tsx deleted file mode 100644 index a2c2a510bd..0000000000 --- a/packages/ui/fern-dashboard/src/components/sdks/ActivityLog.tsx +++ /dev/null @@ -1,129 +0,0 @@ -import { format, isToday } from "date-fns"; -import { SdkActivityStack } from "./SdkActivityStack"; -import { ZeroState } from "./ZeroState"; -import { SdkLanguage } from "./mock-data/Sdk"; - -interface ActivityLogDataEntry { - id: string; - timestamp: number; - title: string; - author: string; - impactedSdks: SdkLanguage[]; -} - -interface ActivityLogData { - entries: ActivityLogDataEntry[]; - totalEntries: number; - pageNumber: number; -} - -export interface ActivityLogProps { - groupId: string; - repoURL: string; - activityFilter?: string; -} - -const ActivityLogEntry = (props: ActivityLogDataEntry) => { - return ( -
-
-
-
-
-
-
-
{props.title}
-
by {props.author}
-
-
- -
- ); -}; - -const GroupedActivitiyLog = (props: { activity: Record }) => { - return ( -
- {Object.keys(props.activity).map((key) => { - let value = props.activity[key]; - - return ( - value && ( -
- {key} - {value.map((entry) => ( - - ))} -
- ) - ); - })} -
- ); -}; - -const DummyActivityLog: ActivityLogData = { - totalEntries: 5, - pageNumber: 0, - entries: [ - { - id: "1", - timestamp: Date.now(), - title: "Introduce a new feature to the API spec, maybe it's pagination related or something else that's really cool.", - author: "armandobelardo", - impactedSdks: [SdkLanguage.RUBY], - }, - { - id: "2", - timestamp: Date.now() - 1 * 24 * 60 * 60 * 1000, - title: "Bump generator X", - author: "dsingvi", - impactedSdks: [SdkLanguage.PYTHON, SdkLanguage.JAVA, SdkLanguage.TYPESCRIPT], - }, - { - id: "3", - timestamp: Date.now() - 1 * 24 * 60 * 60 * 1000, - title: "Bump Fern CLI", - author: "armandobelardo", - impactedSdks: [], - }, - { - id: "4", - timestamp: Date.now() - 2 * 24 * 60 * 60 * 1000, - title: "Add OAuth configuration", - author: "dsingvi", - impactedSdks: [], - }, - { - id: "5", - timestamp: Date.now() - 5 * 24 * 60 * 60 * 1000, - title: "Initialize Fern", - author: "dsingvi", - impactedSdks: [SdkLanguage.SWIFT], - }, - ], -}; - -export const ActivityLog: React.FC = () => { - // TODO: get this activity log from Github + our backend, given we need to understand the impacted SDKs - const transformedActivity: Record = DummyActivityLog.entries.reduce( - (group, activity) => { - const { timestamp } = activity; - const stringifiedTimestamp = isToday(timestamp) ? "Today" : format(timestamp, "PPPP"); - group[stringifiedTimestamp] = group[stringifiedTimestamp] ?? []; - group[stringifiedTimestamp]?.push(activity); - return group; - }, - {} as Record, - ); - - return Object.keys(transformedActivity).length > 0 ? ( - - ) : ( - - ); -}; diff --git a/packages/ui/fern-dashboard/src/components/sdks/BreadcrumbHeader.tsx b/packages/ui/fern-dashboard/src/components/sdks/BreadcrumbHeader.tsx deleted file mode 100644 index 81dfa60622..0000000000 --- a/packages/ui/fern-dashboard/src/components/sdks/BreadcrumbHeader.tsx +++ /dev/null @@ -1,173 +0,0 @@ -import { - Breadcrumb, - BreadcrumbItem, - BreadcrumbLink, - BreadcrumbList, - BreadcrumbSeparator, -} from "@/components/ui/breadcrumb"; -import { useAuth0 } from "@auth0/auth0-react"; -import { FernButton, FernButtonGroup, FernLogo, FernLogoFill, RemoteFontAwesomeIcon } from "@fern-ui/components"; -import { DividerVerticalIcon } from "@radix-ui/react-icons"; -import { Link } from "@tanstack/react-router"; -import { LogOutIcon } from "lucide-react"; -import { - DropdownMenu, - DropdownMenuContent, - DropdownMenuGroup, - DropdownMenuItem, - DropdownMenuLabel, - DropdownMenuSeparator, - DropdownMenuTrigger, -} from "../ui/dropdown-menu"; - -interface BreadcrumbDropdownProps { - name: string; - options: BreadcrumbLinkProps[]; - action?: (val: string) => void; -} - -// Note these are meant to be internal links to navigate to, at least to start -interface BreadcrumbLinkProps { - path: string; - name: string; -} - -export interface BreadcrumbHeaderProps { - entries: (BreadcrumbLinkProps | BreadcrumbDropdownProps)[]; -} - -const FernBreadcrumbSeparator = () => { - return ( - - - - ); -}; - -export const BreadcrumbHeader: React.FC = ({ entries }) => { - const { logout } = useAuth0(); - - return ( - - ); -}; diff --git a/packages/ui/fern-dashboard/src/components/sdks/SdkActivityStack.tsx b/packages/ui/fern-dashboard/src/components/sdks/SdkActivityStack.tsx deleted file mode 100644 index c4196296e0..0000000000 --- a/packages/ui/fern-dashboard/src/components/sdks/SdkActivityStack.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { cn } from "@/lib/utils"; -import { RemoteFontAwesomeIcon } from "@fern-ui/components"; -import { getIconForSdk } from "./SdkContextCard"; -import { SdkLanguage } from "./mock-data/Sdk"; - -interface SdkActivityStackProps { - sdks: SdkLanguage[]; -} - -const SdkStackIcon: React.FC<{ sdk: SdkLanguage; idx: number; total: number }> = ({ sdk, idx, total }) => { - return ( -
= 3, - "z-20 group-hover:-translate-x-8 -left-2.5": - (idx === 1 && total >= 3) || (idx === 0 && total === 2), - }, - )} - > - -
- ); -}; - -export const SdkActivityStack: React.FC = (props) => { - const numberSdks = props.sdks.length; - return ( -
- {props.sdks.slice(0, 2).map((sdk, idx) => ( - - ))} - {numberSdks > 2 && ( -
- + {numberSdks - 2} -
- )} -
- ); -}; diff --git a/packages/ui/fern-dashboard/src/components/sdks/SdkContextCard.tsx b/packages/ui/fern-dashboard/src/components/sdks/SdkContextCard.tsx deleted file mode 100644 index 4efad57120..0000000000 --- a/packages/ui/fern-dashboard/src/components/sdks/SdkContextCard.tsx +++ /dev/null @@ -1,212 +0,0 @@ -import { cn } from "@/lib/utils"; -import { FernButton, RemoteFontAwesomeIcon } from "@fern-ui/components"; -import pluralize from "pluralize"; -import { Separator } from "../ui/separator"; -import { DummyGroupContext, DummySdkContext, SdkChecksStatus, SdkLanguage, SdkPublishStatus } from "./mock-data/Sdk"; - -export function getIconForSdk(language: SdkLanguage) { - switch (language) { - case SdkLanguage.PYTHON: - return "fa-brands fa-python"; - case SdkLanguage.TYPESCRIPT: - return "fa-brands fa-js"; - case SdkLanguage.GO: - return "fa-brands fa-golang"; - case SdkLanguage.RUBY: - return "fa-solid fa-gem"; - case SdkLanguage.JAVA: - return "fa-brands fa-java"; - case SdkLanguage.CSHARP: - return "fa-brands fa-microsoft"; // TODO: change to csharp icon - case SdkLanguage.SWIFT: - return "fa-brands fa-swift"; - default: - return "fa-solid fa-code"; - } -} - -// TODO(armandobelardo): This should effectively come from Github -interface CheckStatusContent { - icon: string; - color: string; - text: string; -} -function getCheckStatusContent(status: SdkChecksStatus): CheckStatusContent { - switch (status) { - case SdkChecksStatus.SUCCESSFUL: - return { - icon: "circle-check", - color: "text-green", - text: "Checks passing", - }; - case SdkChecksStatus.RUNNING: - return { - icon: "retweet", - color: "text-muted", - text: "Checks running", - }; - case SdkChecksStatus.FAILED: - return { - icon: "circle-exclamation", - color: "text-red", - text: "Checks failed", - }; - } -} - -// TODO(armandobelardo): This should effectively come from Fern -interface PublishStatusContent { - icon: string; - color: string; - text: string; - buttonStatus?: "PRIMARY" | "DISABLED"; -} -function getPublishStatusContent(status: SdkPublishStatus): PublishStatusContent { - switch (status) { - case SdkPublishStatus.UP_TO_DATE: - return { - icon: "circle-check", - color: "text-green", - text: "Up to Date", - buttonStatus: "DISABLED", - }; - case SdkPublishStatus.OUT_OF_DATE: - return { - icon: "circle-up", - color: "text-primary", - text: "Publish New Release", - buttonStatus: "PRIMARY", - }; - case SdkPublishStatus.PUBLISHING: - return { - icon: "fa-duotone fa-loader", - color: "text-amber", - text: "Publishing...", - }; - } -} - -export const SdkGroupGroup: React.FC<{ groups: DummyGroupContext[] }> = ({ groups }) => { - return ( -
- {groups.map((group) => ( - - ))} - - New Group - -
- ); -}; - -export const SdkGroupContextCard: React.FC<{ group: DummyGroupContext }> = ({ group }) => { - return ( -
-
-

{group.name}

- - Release All SDKs - -
- -
- ); -}; - -export const SdkCardGroup: React.FC<{ sdks: DummySdkContext[] }> = ({ sdks }) => { - return ( -
-
- {sdks.map((sdk) => ( - - ))} -
- - New SDK - -
- ); -}; - -export interface DummySdkContextCardProps { - sdk: DummySdkContext; -} - -export const SdkContextCard: React.FC = (props) => { - const icon = ; - - // TODO(armandobelardo): Check status should come from Github - const checkValues = [SdkChecksStatus.FAILED, SdkChecksStatus.SUCCESSFUL, SdkChecksStatus.RUNNING]; - const randomCheck = checkValues[Math.floor(Math.random() * checkValues.length)]; - const checkContent = getCheckStatusContent(randomCheck); - - // TODO(armandobelardo): Issues should come from Github - const issuesIconColor = props.sdk.issues.length > 0 ? "text-red" : "text-green"; - const issuesText = props.sdk.issues.length > 0 ? pluralize("issues", props.sdk.issues.length, true) : "No issues"; - - // TODO(armandobelardo): Publish status should come from fern maybe - const publishStatusValues = [ - SdkPublishStatus.OUT_OF_DATE, - SdkPublishStatus.PUBLISHING, - SdkPublishStatus.UP_TO_DATE, - ]; - const randomStatus = publishStatusValues[Math.floor(Math.random() * publishStatusValues.length)]; - const publishStatusContent = getPublishStatusContent(randomStatus); - - return ( -
-
-
- {icon} -
-
- {props.sdk.name} - {props.sdk.packageVersion} -
- {"out of date"} -
-
- {/*
*/} - - {publishStatusContent.text} - - {/*
*/} -
-
-
-
- Generator version - {props.sdk.generatorVersion} -
- -
- - {checkContent.text} -
- -
- - {issuesText} -
-
- } - onClick={() => { - return () => { - window.open(props.sdk.githubUrl, "_blank", "noopener"); - }; - }} - disabled - /> -
-
- ); -}; diff --git a/packages/ui/fern-dashboard/src/components/sdks/ZeroState.tsx b/packages/ui/fern-dashboard/src/components/sdks/ZeroState.tsx deleted file mode 100644 index 1673603638..0000000000 --- a/packages/ui/fern-dashboard/src/components/sdks/ZeroState.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { RemoteFontAwesomeIcon } from "@fern-ui/components"; -import { ReactNode } from "react"; - -export interface ZeroStateProps { - icon?: string | ReactNode; - title: string; - description: string; -} - -export const ZeroState: React.FC = (props) => { - return ( -
- {typeof props.icon === "string" ? : props.icon} -
{props.title}
-
{props.description}
-
- ); -}; diff --git a/packages/ui/fern-dashboard/src/components/sdks/mock-data/Api.tsx b/packages/ui/fern-dashboard/src/components/sdks/mock-data/Api.tsx deleted file mode 100644 index 0063a5b570..0000000000 --- a/packages/ui/fern-dashboard/src/components/sdks/mock-data/Api.tsx +++ /dev/null @@ -1,20 +0,0 @@ -export interface Api { - id: string; - name: string; -} - -// [Data] TODO: fetch APIs and redirect to the first one -export const DummyApis: Api[] = [ - { - id: "TODO", - name: "Fern API", - }, - { - id: "TwoDo", - name: "Merge API", - }, - { - id: "3", - name: "Cohere", - }, -]; diff --git a/packages/ui/fern-dashboard/src/components/sdks/mock-data/Sdk.tsx b/packages/ui/fern-dashboard/src/components/sdks/mock-data/Sdk.tsx deleted file mode 100644 index 90043a0864..0000000000 --- a/packages/ui/fern-dashboard/src/components/sdks/mock-data/Sdk.tsx +++ /dev/null @@ -1,115 +0,0 @@ -export enum SdkPublishStatus { - OUT_OF_DATE, - PUBLISHING, - UP_TO_DATE, -} - -export enum SdkChecksStatus { - SUCCESSFUL, - RUNNING, - FAILED, -} - -export enum SdkLanguage { - JAVA = "Java", - SWIFT = "Swift", - TYPESCRIPT = "TypeScript", - PYTHON = "Python", - RUBY = "Ruby", - GO = "Go", - CSHARP = "C#", -} - -export interface DummyGroupContext { - id: string; - name: string; - sdks: DummySdkContext[]; -} - -export interface DummySdkContext { - id: string; - name: string; - packageVersion: string; - generatorVersion: string; - issues: string[]; - githubUrl?: string; - language: SdkLanguage; -} - -export const DummyGroups = [ - { - id: "group-1", - name: "External SDKs", - sdks: [ - { - id: "merge-python", - name: "merge", - packageVersion: "0.2.0", - generatorVersion: "2.2.0", - issues: ["Issue 1", "Issue 2"], - githubUrl: "https://github.com/merge-api/merge-python-client", - language: SdkLanguage.PYTHON, - }, - { - id: "merge-java", - name: "com.merge:merge-client", - packageVersion: "0.1.0", - generatorVersion: "0.2.3", - issues: [], - githubUrl: "https://github.com/merge-api/merge-java-client", - language: SdkLanguage.JAVA, - }, - { - id: "merge-ruby", - name: "merge", - packageVersion: "0.2.0", - generatorVersion: "2.2.0", - issues: ["Issue 1"], - githubUrl: "https://github.com/merge-api/merge-ruby-client", - language: SdkLanguage.RUBY, - }, - ], - }, - { - id: "group-2", - name: "Internal", - sdks: [ - { - id: "merge-java", - name: "com.merge:merge-client", - packageVersion: "0.1.0", - generatorVersion: "0.2.3", - issues: [], - githubUrl: "https://github.com/merge-api/merge-java-client", - language: SdkLanguage.JAVA, - }, - { - id: "merge-ruby", - name: "merge", - packageVersion: "0.2.0", - generatorVersion: "2.2.0", - issues: ["Issue 1"], - githubUrl: "https://github.com/merge-api/merge-ruby-client", - language: SdkLanguage.RUBY, - }, - { - id: "merge-java", - name: "com.merge:merge-client", - packageVersion: "0.1.0", - generatorVersion: "0.2.3", - issues: [], - githubUrl: "https://github.com/merge-api/merge-java-client", - language: SdkLanguage.JAVA, - }, - { - id: "merge-ruby", - name: "merge", - packageVersion: "0.2.0", - generatorVersion: "2.2.0", - issues: ["Issue 1"], - githubUrl: "https://github.com/merge-api/merge-ruby-client", - language: SdkLanguage.RUBY, - }, - ], - }, -]; diff --git a/packages/ui/fern-dashboard/src/components/sdks/mock-data/Users.tsx b/packages/ui/fern-dashboard/src/components/sdks/mock-data/Users.tsx deleted file mode 100644 index beb716657b..0000000000 --- a/packages/ui/fern-dashboard/src/components/sdks/mock-data/Users.tsx +++ /dev/null @@ -1,31 +0,0 @@ -export interface PartialOrganziation { - id: string; - name: string; -} - -export interface PartialUser { - id: string; - name: string; - email: string; - imageUrl?: string; -} - -export const DummyUsers: PartialUser[] = [ - { - id: "user-1", - name: "John Doe", - email: "john@doe.com", - }, - { - id: "user-2", - name: "Jane Doe", - email: "jane@doe.com", - imageUrl: - "data:image/jpeg;base64,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", - }, - { - id: "user-3", - name: "Sam Doe", - email: "sam@doe.com", - }, -]; diff --git a/packages/ui/fern-dashboard/src/components/ui/avatar.tsx b/packages/ui/fern-dashboard/src/components/ui/avatar.tsx deleted file mode 100644 index 71f1320eb7..0000000000 --- a/packages/ui/fern-dashboard/src/components/ui/avatar.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import * as React from "react"; -import * as AvatarPrimitive from "@radix-ui/react-avatar"; - -import { cn } from "@/lib/utils"; - -const Avatar = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -Avatar.displayName = AvatarPrimitive.Root.displayName; - -const AvatarImage = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -AvatarImage.displayName = AvatarPrimitive.Image.displayName; - -const AvatarFallback = React.forwardRef< - React.ElementRef, - React.ComponentPropsWithoutRef ->(({ className, ...props }, ref) => ( - -)); -AvatarFallback.displayName = AvatarPrimitive.Fallback.displayName; - -export { Avatar, AvatarImage, AvatarFallback }; diff --git a/packages/ui/fern-dashboard/src/components/ui/breadcrumb.tsx b/packages/ui/fern-dashboard/src/components/ui/breadcrumb.tsx deleted file mode 100644 index f412eefa55..0000000000 --- a/packages/ui/fern-dashboard/src/components/ui/breadcrumb.tsx +++ /dev/null @@ -1,90 +0,0 @@ -import { Slot } from "@radix-ui/react-slot"; -import { ChevronRight, MoreHorizontal } from "lucide-react"; -import * as React from "react"; - -import { cn } from "@/lib/utils"; - -const Breadcrumb = React.forwardRef< - HTMLElement, - React.ComponentPropsWithoutRef<"nav"> & { - separator?: React.ReactNode; - } ->(({ ...props }, ref) =>