Restructure/frontend editor (#6404)

## Move editor under `frontend/editor/`

Pure restructure: `frontend/` becomes the workspace, `frontend/editor/`
holds
  the PDF editor. 1775 file renames + 40 wiring edits. No logic changes.

  ### Why

`frontend/` is currently the editor — its `src/`, `public/`,
`src-tauri/`,
  config files all sit at the root. Promoting `frontend/` to a
workspace and putting the editor in a sibling folder leaves room for
future
apps to drop in alongside it, sharing one `package.json` /
`node_modules` /
  lint config / Storybook.

  ### What moves

  frontend/
  ├── editor/                ← NEW: everything editor-specific
  │   ├── src/               ← was frontend/src/
  │   ├── public/            ← was frontend/public/
  │   ├── src-tauri/         ← was frontend/src-tauri/
│ ├── index.html, vite.config.ts, vitest.config.ts, playwright.config.ts
  │   ├── tsconfig*.json, tailwind.config.js, postcss.config.js
  │   ├── scripts/
  │   ├── .env, .env.desktop, .env.saas
  │   └── DeveloperGuide.md
├── package.json, package-lock.json, node_modules/ ← workspace install
  ├── eslint.config.mjs, .prettierrc, .prettierignore ← shared tooling
  ├── .gitignore
  └── README.md

  ### Wiring edits (40 files)

  - `.taskfiles/frontend.yml`, `desktop.yml`, `e2e.yml`
  - `build.gradle`, `app/core/build.gradle`
- `eslint.config.mjs`, `frontend/package.json`, `.gitignore`,
`.prettierignore`
  - `docker/frontend/Dockerfile`
  - 8 `.github/workflows/*.yml`, plus `.github/dependabot.yml`,
    `.github/config/.files.yaml`, `.github/labeler-config-srvaroa.yml`
  - `scripts/translations/**`
- Docs: `AGENTS.md`, `CLAUDE.md`, `ADDING_TOOLS.md`,
`DeveloperGuide.md`,
`WINDOWS_SIGNING.md`, `devGuide/HowToAddNewLanguage.md`,
`frontend/README.md`,
    `frontend/editor/DeveloperGuide.md`

Plus 3 renamed + edited: `editor/vite.config.ts` (env path +
node_modules
  walk-up), `editor/scripts/setup-env.mts` (renamed from `.ts` for
`import.meta.url`), `editor/scripts/build-provisioner.mjs` (resolve
src-tauri
  relative to script).

  ### Verification

  | Check | Result |
  |---|---|
  | `task frontend:typecheck:all` (6 variants) | exit 0 |
  | `task frontend:lint` (eslint + dpdm) | exit 0 |
  | `task frontend:format:check` | exit 0 |
  | `task frontend:test` | 657 tests pass, 50 files |
| `task frontend:build:{core,proprietary,saas,desktop,prototypes}` | all
green |
| `task desktop:build` | full Tauri pipeline →
`Stirling-PDF_2.11.0_x64_en-US.msi` |
  | `playwright test --list --project=stubbed` | 172 tests discovered |

`task desktop:build` exercises the heaviest path — Rust + WiX + MSI
bundle
against the moved `editor/src-tauri/`. If anything in the restructure
was
  wrong it wouldn't have built.

  ### Test plan

  - [ ] `frontend-validation.yml` green
  - [ ] `e2e-stubbed.yml` green
  - [ ] `tauri-build.yml` green on at least one platform
  - [ ] `check_toml.yml` runs on a translation-touching PR

---------

Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
This commit is contained in:
Reece Browne
2026-05-22 13:40:34 +01:00
committed by GitHub
co-authored by Claude Opus 4.7
parent 48027ee9d6
commit 0a50e765b7
1820 changed files with 300 additions and 226 deletions
@@ -0,0 +1,150 @@
/* SaaS-specific CSS variables — imported alongside core theme.css */
:root {
/* Orange scale (used for warning toasts) */
--color-orange-50: #fff4ed;
--color-orange-100: #ffe1cc;
--color-orange-200: #ffb089;
--color-orange-300: #ff7a45;
--color-orange-400: #d84a1b;
/* Amber scale (trial/warning emphasis) */
--color-amber-50: #fffbeb;
--color-amber-100: #fef3c7;
--color-amber-200: #fde68a;
--color-amber-300: #fcd34d;
--color-amber-400: #fbbf24;
--color-amber-500: #f59e0b;
--color-amber-600: #d97706;
--color-amber-700: #b45309;
--color-amber-800: #92400e;
--color-amber-900: #78350f;
/* Subcategory / divider vars (light) */
--tool-subcategory-text-color-light: #9ca3af;
--tool-subcategory-rule-color-light: #e5e7eb;
--text-divider-rule-color: var(--color-gray-200);
--text-divider-label-color: var(--color-gray-400);
--text-divider-rule-color-light: var(--color-gray-200);
--text-divider-label-color-light: var(--color-gray-400);
/* Auth color vars */
--auth-input-bg: #f9fafb;
--auth-input-border: #e5e7eb;
--auth-input-text: #1f2937;
--auth-label-text: #2b3230;
--auth-button-bg: #af3434;
--auth-button-text: #ffffff;
--auth-magic-button-bg: #8b5cf6;
--auth-magic-button-text: #ffffff;
/* Light-only auth colors (no dark mode equivalents) used for login/signup */
--auth-input-bg-light-only: #f9fafb;
--auth-input-border-light-only: #e5e7eb;
--auth-input-text-light-only: #1f2937;
--auth-label-text-light-only: #2b3230;
--auth-button-bg-light-only: #af3434;
--auth-button-text-light-only: #ffffff;
--auth-magic-button-bg-light-only: #8b5cf6;
--auth-magic-button-text-light-only: #ffffff;
--auth-bg-color-light-only: #ffffff;
--auth-card-bg-light-only: #ffffff;
--auth-text-primary-light-only: #2b3230;
--auth-text-secondary-light-only: #1f2937;
--auth-border-color-light-only: #e5e7eb;
--auth-border-focus-light-only: #cbd5e1;
--auth-focus-ring-light-only: rgba(59, 130, 246, 0.15);
/* App Config Modal colors (light mode) */
--modal-nav-bg: #f5f6f8;
--modal-nav-section-title: #6b7280;
--modal-nav-item: #374151;
--modal-nav-item-active: #0a8bff;
--modal-nav-item-active-bg: rgba(10, 139, 255, 0.08);
--modal-content-bg: #ffffff;
--modal-header-border: rgba(0, 0, 0, 0.06);
/* API usage progress bar colors (light mode) */
--usage-weekly-active: #3b82f6;
--usage-bought-active: #14b8a6;
--usage-total-used: #3b82f6;
--usage-inactive: #e5e7eb;
/* API Keys section colors (light mode) */
--api-keys-card-bg: #ffffff;
--api-keys-card-border: #e0e0e0;
--api-keys-card-shadow: rgba(0, 0, 0, 0.06);
--api-keys-input-bg: #f8f8f8;
--api-keys-input-border: #e0e0e0;
--api-keys-button-bg: #f5f5f5;
--api-keys-button-color: #333333;
}
[data-mantine-color-scheme="dark"] {
/* Compare highlight colors (dark mode) */
--spdf-compare-removed-bg: rgba(255, 107, 107, 0.45);
--spdf-compare-added-bg: rgba(81, 207, 102, 0.35);
--spdf-compare-removed-badge-bg: rgba(255, 59, 48, 0.15);
--spdf-compare-removed-badge-fg: var(--color-red-500);
--spdf-compare-added-badge-bg: rgba(52, 199, 89, 0.18);
--spdf-compare-added-badge-fg: var(--color-green-500);
--spdf-compare-inline-removed-bg: rgba(255, 59, 48, 0.25);
--spdf-compare-inline-added-bg: rgba(52, 199, 89, 0.25);
--compare-page-label-bg: #2a2f36;
--compare-page-label-fg: #d0d6dc;
/* Orange scale (dark mode mirrors light values to match UI) */
--color-orange-50: #fff4ed;
--color-orange-100: #ffe1cc;
--color-orange-200: #ffb089;
--color-orange-300: #ff7a45;
--color-orange-400: #d84a1b;
/* Auth page colors (light mode only - auth pages force light mode) */
--auth-bg-color-light-only: #f3f4f6;
--auth-card-bg: #ffffff;
--auth-card-bg-light-only: #ffffff;
--auth-label-text-light-only: #374151;
--auth-input-border-light-only: #d1d5db;
--auth-input-bg-light-only: #ffffff;
--auth-input-text-light-only: #111827;
--auth-border-focus-light-only: #3b82f6;
--auth-focus-ring-light-only: rgba(59, 130, 246, 0.1);
--auth-button-bg-light-only: #af3434;
--auth-button-text-light-only: #ffffff;
--auth-magic-button-bg-light-only: #e5e7eb;
--auth-magic-button-text-light-only: #374151;
--auth-text-primary-light-only: #111827;
--auth-text-secondary-light-only: #6b7280;
--text-divider-rule-rgb-light: 229, 231, 235;
--text-divider-label-rgb-light: 156, 163, 175;
--tool-subcategory-rule-color-light: #e5e7eb;
--tool-subcategory-text-color-light: #9ca3af;
/* API usage progress bar colors (dark mode) */
--usage-weekly-active: #60a5fa;
--usage-bought-active: #34d399;
--usage-total-used: #ffffff;
--usage-inactive: #43464b;
/* API Keys section colors (dark mode) */
--api-keys-card-bg: #2a2f36;
--api-keys-card-border: #3a4047;
--api-keys-card-shadow: none;
--api-keys-input-bg: #1f2329;
--api-keys-input-border: #3a4047;
--api-keys-button-bg: #3a4047;
--api-keys-button-color: #d0d6dc;
--text-divider-rule-color: var(--tool-subcategory-rule-color);
--text-divider-label-color: var(--text-muted);
/* App Config Modal colors (dark mode) */
--modal-nav-bg: #1f2329;
--modal-nav-section-title: #9ca3af;
--modal-nav-item: #d0d6dc;
--modal-nav-item-active: #0a8bff;
--modal-nav-item-active-bg: rgba(10, 139, 255, 0.15);
--modal-content-bg: #2a2f36;
--modal-header-border: rgba(255, 255, 255, 0.08);
}
@@ -0,0 +1,9 @@
// Centralized z-index constants for new usages added in this branch.
// Keep values identical to their original inline usages.
// Re-export all core z-index constants
export * from "@core/styles/zIndex";
// SaaS-specific z-index constants
export const Z_ANALYTICS_MODAL = 1301;
export const Z_INDEX_OVER_SETTINGS_MODAL = 1400;