mirror of
https://github.com/vector-im/element-web.git
synced 2026-05-15 17:36:19 +02:00
* Layer Compound and shared component CSS * Layer app theme CSS * Remove !important flags from ActionBarView * Remove unnecessary !important statements from shared components * Avoid dead code errors for *.pcss just because layer is specified after @import url * Remove unnecessary !important styling * Override Banner defaults in RoomStatusBarView * Updated snaps * Updated snaps * Fix styling of media body in app/web * Fix styling for Compound anchors * Fix styling issues in app/web * More styling fixes * Fix a problem extracting css for HTMLExport * Revert changes * Fix for theme styling * Add test to improve coverage * Prettier * Fix styling issues * Add data-kind attribute to avoid global styling override * Update screenshot that now is correct * Revert data-kind attribute * Handle LinkPreview styling in .pcss * Fix flaky test: Avoid racing the lazy-loaded ManageEventIndexDialog * Take care of review comments * Updated snaps * Updated snaps again after merge * Remove !important from RoomStatusBar
86 lines
2.9 KiB
TypeScript
86 lines
2.9 KiB
TypeScript
/*
|
|
* Copyright 2025 New Vector Ltd.
|
|
*
|
|
* SPDX-License-Identifier: AGPL-3.0-only OR GPL-3.0-only OR LicenseRef-Element-Commercial
|
|
* Please see LICENSE files in the repository root for full details.
|
|
*
|
|
*/
|
|
|
|
import { readFileSync, writeFileSync } from "node:fs";
|
|
import { dirname, resolve } from "node:path";
|
|
import { fileURLToPath } from "node:url";
|
|
import { defineConfig, esmExternalRequirePlugin, type Plugin } from "vite";
|
|
import dts from "unplugin-dts/vite";
|
|
|
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
const cssLayerOrder = "@layer compound-tokens, compound-web, shared-components, app-web;";
|
|
const sharedComponentsLayer = "shared-components";
|
|
|
|
function layerCssAssets(): Plugin {
|
|
return {
|
|
name: "element-web-shared-components-css-layer",
|
|
writeBundle(_options, bundle): void {
|
|
for (const asset of Object.values(bundle)) {
|
|
if (asset.type !== "asset" || asset.fileName !== "element-web-shared-components.css") {
|
|
continue;
|
|
}
|
|
|
|
const cssPath = resolve(__dirname, "dist", asset.fileName);
|
|
const source = readFileSync(cssPath, "utf-8");
|
|
if (source.startsWith(cssLayerOrder)) {
|
|
continue;
|
|
}
|
|
|
|
writeFileSync(cssPath, `${cssLayerOrder}\n@layer ${sharedComponentsLayer} {\n${source}\n}\n`);
|
|
}
|
|
},
|
|
};
|
|
}
|
|
|
|
export default defineConfig({
|
|
build: {
|
|
lib: {
|
|
entry: resolve(__dirname, "src/index.ts"),
|
|
name: "Element Web Shared Components",
|
|
// the proper extensions will be added
|
|
fileName: "element-web-shared-components",
|
|
},
|
|
outDir: "dist",
|
|
rolldownOptions: {
|
|
// make sure to externalize deps that shouldn't be bundled
|
|
// into your library
|
|
external: [
|
|
"@vector-im/compound-design-tokens",
|
|
"@vector-im/compound-web",
|
|
"react-virtuoso",
|
|
"react-resizable-panels",
|
|
],
|
|
plugins: [
|
|
esmExternalRequirePlugin({
|
|
external: ["react", "react-dom"],
|
|
}),
|
|
],
|
|
output: {
|
|
// Provide global variables to use in the UMD build
|
|
// for externalized deps
|
|
globals: {
|
|
"react": "react",
|
|
"@vector-im/compound-design-tokens": "compoundDesignTokens",
|
|
"@vector-im/compound-web": "compoundWeb",
|
|
"react-virtuoso": "reactVirtuoso",
|
|
"react-resizable-panels": "reactResizablePanels",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
plugins: [
|
|
layerCssAssets(),
|
|
dts({
|
|
bundleTypes: true,
|
|
include: ["src/**/*.{ts,tsx}"],
|
|
exclude: ["src/**/*.test.{ts,tsx}", "src/**/*.stories.{ts,tsx}"],
|
|
copyDtsFiles: false,
|
|
}),
|
|
],
|
|
});
|