Files
VoiceStudio/frontend
Palash Debnath ea2d7155bc feat(nav): let the workspace switcher live in the title bar (#1412)
Settings → Appearance → Navigation style picks between the icon rail down the
window edge (default, unchanged) and browser-style tabs across the title bar.
Both skins render one shared workspace list, so a new workspace appears in
both from a single edit, and the choice persists like scale and theme.

Two layout traps this had to solve:

* The footer and audio dock are placed at `grid-column: 2 / -1` so they sit
  beside the rail. Tabs mode has one fewer column, so that placement makes
  Grid invent an implicit column and take its width off the content — the app
  rendering in 65% of the window with the footer stranded in a black band.
  A stylesheet guard now fails on any child left past column 1 without a
  `.nav-tabs` counterpart.

* Nine tabs plus the status cluster do not always fit. Rather than every label
  shrinking to a stub, the strip measures what it needs with all labels shown
  and, when short, keeps the label only on the tab you are in. Measured rather
  than thresholded because the answer depends on locale, UI scale, font and
  whether the live-metrics cluster is on.

Adds the nav-style strings to all 21 locales and a TitleTabs visual spec.
2026-08-07 22:49:20 +05:30
..
2026-07-27 15:56:37 -07:00

React + 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:

React Compiler

The React Compiler is not enabled on this template because of its impact on dev & build performances. To add it, see this documentation.

Expanding the ESLint configuration

If you are developing a production application, we recommend using TypeScript with type-aware lint rules enabled. Check out the TS template for information on how to integrate TypeScript and typescript-eslint in your project.