Styles and Assets
Table of Contents
CSS Files
Global CSS can live under src/frontend/styles/** and be imported by pages, layouts, or generated entries.
Use global CSS for reset, base typography, and design tokens. Prefer components or CSS Modules for local component styles.
CSS Modules
CSS Modules are enabled for .module.css.
Vext JSCSS
JSCSS is Vext's default dynamic style facade. It is designed for component-level dynamic styles and build-time extraction.
The extractor writes CSS into the build output. You do not need Emotion or styled-components as default runtime dependencies.
CSS Variables
Use CSS variables when values need to be changed by theme, tenant, or runtime state.
Keep variables semantic, such as color.surface, color.text, space.md, or radius.sm.
Imported Assets
Imported assets go through esbuild and the Vext manifest.
Production builds content-hash imported assets and include them in manifest.json and deploy-manifest.json.
Public Assets
Files under public/** keep URL-style access.
Use them as:
public/** files are copied into frontend output and included in deploy planning.
CDN URLs
Set frontend.deploy.assetBaseUrl when production assets are served from a CDN.
assetBaseUrl affects generated asset URLs. Upload is controlled separately by frontend.deploy.upload, vext build --upload-assets, or vext deploy assets.