Skip to content

Commit d7a9b8d

Browse files
authored
Merge pull request evidence-dev#3041 from evidence-dev/feat/upgrade-tailwind-4
Feat: Upgrade to tailwind 4
2 parents 86f84ff + 1cd3741 commit d7a9b8d

102 files changed

Lines changed: 1601 additions & 1742 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.changeset/chilly-yaks-listen.md

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
---
2+
'@evidence-dev/tailwind': patch
3+
---
4+
5+
[!] BREAKING CHANGE:
6+
Custom theme colors are converted implicitly to kebab-case by tailwindcss
7+
8+
This means that some color defined in `evidence.config.yaml` as `myCustomColor`
9+
should be used as (for example) `text-my-custom-color`. (`text-myCustomColor` will not work)
10+
11+
When referencing custom theme colors in Javascript the original case should still be used
12+
(for example) `myCustomColor` would still be `<BarChart ... fillColor=myCustomColor />`
13+
_NOT_ `<BarChart ... fillColor="my-custom-color" />`

.changeset/kind-fishes-mate.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
'@evidence-dev/core-components': patch
3+
'@evidence-dev/tailwind': patch
4+
'@evidence-dev/evidence': patch
5+
---
6+
7+
Use theme class instead of data-
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
'@evidence-dev/evidence': patch
3+
---
4+
5+
Add theme.css export for svelte component <style/> tags that need to access tailwind theme

e2e/base-path/tests/tests.spec.js

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -191,6 +191,24 @@ test.describe('Page', () => {
191191
});
192192
});
193193

194+
test.describe('Parquet Files', () => {
195+
test('Manifest links should use base path', async ({ page }) => {
196+
// Firefox does not behave as expected in playwright.
197+
// This isn't a browser-specific test, so we can get away with
198+
// not running on firefox
199+
if (test.info().project.name === 'firefox') return;
200+
page.addListener('request', (req) => {
201+
console.log(req.url());
202+
});
203+
const reqPromise = page.waitForRequest(`${basePath}/data/needful_things/orders/orders.parquet`);
204+
page.goto(basePath);
205+
const req = await reqPromise;
206+
207+
const res = await req.response();
208+
expect(res?.ok()).toBe(true);
209+
});
210+
});
211+
194212
test.describe('Components', () => {
195213
test('Table row links should use base path', async ({ page }) => {
196214
await page.goto(`${basePath}/table-row-links`);

e2e/hmr/tests/tests.spec.js

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
// @ts-check
22
import { test, expect } from '@playwright/test';
3-
import { createFile, deleteFile, editFile, restoreChangedFiles } from './fs-utils';
3+
import { editFile, restoreChangedFiles } from './fs-utils';
44
import { waitForPageToLoad } from '../../test-utils';
55

66
/** @param {import("@playwright/test").Page} page */
@@ -26,34 +26,6 @@ test.describe('pages', () => {
2626

2727
await expect(page.getByText('This page has some different text on it')).toBeVisible();
2828
});
29-
30-
test('creating should add to the sidebar and allow navigation', async ({ page }) => {
31-
await page.goto('/');
32-
await waitForPageToLoad(page);
33-
34-
await expect(page.getByText('Index')).toBeVisible();
35-
36-
createFile('pages/new-page.md', 'This is a new page');
37-
// file deletions trigger full reload, so we don't waitForHMR() here
38-
39-
await expect(page.getByRole('link', { name: 'New Page' })).toBeVisible();
40-
await page.goto('/new-page');
41-
await expect(page.getByText('This is a new page')).toBeVisible();
42-
});
43-
44-
test('deleting should remove from the sidebar and prevent navigation', async ({ page }) => {
45-
await page.goto('/');
46-
await waitForPageToLoad(page);
47-
48-
await expect(page.getByText('Index')).toBeVisible();
49-
50-
deleteFile('pages/page.md');
51-
await waitForHMR(page);
52-
53-
await expect(page.getByRole('link', { name: 'Page' })).not.toBeVisible();
54-
await page.goto('/page');
55-
await expect(page.getByText('Page Not Found')).toBeVisible();
56-
});
5729
});
5830

5931
test.describe('sources', () => {

e2e/themes/pages/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
div-primary-var
77
</div>
88

9-
<div data-testid="div-myCustomColor-class" class="bg-myCustomColor">
9+
<div data-testid="div-myCustomColor-class" class="bg-my-custom-color">
1010
div-myCustomColor-class
1111
</div>
1212

package.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@
2626
"@evidence-dev/telemetry": "link:packages/lib/telemetry",
2727
"@evidence-dev/trino": "link:packages/datasources/trino",
2828
"@evidence-dev/universal-sql": "link:packages/lib/universal-sql",
29+
"@tailwindcss/vite": "^4.0.0",
30+
"tailwindcss": "^4.0.0",
2931
"@parcel/packager-ts": "2.12.0",
3032
"@parcel/transformer-typescript-types": "2.12.0",
3133
"@playwright/test": "^1.45.3",

packages/evidence/package.json

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@
2121
"bin": {
2222
"evidence": "cli.js"
2323
},
24+
"exports": {
25+
"./theme.css": "./template/src/app.css"
26+
},
2427
"scripts": {
2528
"build": "node scripts/build-template",
2629
"prepublishOnly": "npm run build"
@@ -54,12 +57,10 @@
5457
"autoprefixer": "^10.4.7",
5558
"debounce": "^1.2.1",
5659
"git-remote-origin-url": "4.0.0",
57-
"postcss": "^8.4.14",
58-
"postcss-load-config": "^4.0.1",
5960
"svelte": "4.2.19",
6061
"svelte-preprocess": "5.1.3",
6162
"svelte2tsx": "0.7.4",
62-
"tailwindcss": "^3.3.1",
63+
"tailwindcss": "^4.0.0",
6364
"typescript": "5.4.2",
6465
"unist-util-visit": "4.1.2",
6566
"vite": "5.4.14"

packages/evidence/scripts/build-template.js

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,7 @@ const templatePaths = [
2121
'src/pages/settings/',
2222
'src/pages/explore',
2323
'src/pages/api/',
24-
'src/pages/manifest.webmanifest/+server.js',
25-
'tailwind.config.cjs',
26-
'postcss.config.cjs'
24+
'src/pages/manifest.webmanifest/+server.js'
2725
];
2826
const ignorePaths = ['static/data'];
2927

@@ -54,6 +52,7 @@ fsExtra.outputFileSync(
5452
import { isDebug } from '@evidence-dev/sdk/utils';
5553
import { log } from "@evidence-dev/sdk/logger";
5654
import { evidenceThemes } from '@evidence-dev/tailwind/vite-plugin';
55+
import tailwindcss from '@tailwindcss/vite';
5756
5857
5958
process.removeAllListeners('warning');
@@ -73,7 +72,7 @@ fsExtra.outputFileSync(
7372
/** @type {import('vite').UserConfig} */
7473
const config =
7574
{
76-
plugins: [sveltekit(), configVirtual(), queryDirectoryHmr, sourceQueryHmr(), evidenceThemes()],
75+
plugins: [tailwindcss(), sveltekit(), configVirtual(), queryDirectoryHmr, sourceQueryHmr(), evidenceThemes()],
7776
optimizeDeps: {
7877
include: ['echarts-stat', 'echarts', 'blueimp-md5', 'nanoid', '@uwdata/mosaic-sql',
7978
// We need these to prevent HMR from doing a full page reload

packages/evidence/scripts/svelte.config.js

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import evidencePreprocess from '@evidence-dev/preprocess';
2-
import preprocess from 'svelte-preprocess';
2+
33
import adapter from '@sveltejs/adapter-static';
44
import { addBasePathToHrefAndSrc, injectComponents } from '@evidence-dev/sdk/build/svelte';
55
import fs from 'fs';
@@ -37,14 +37,7 @@ function errorHandler(warning) {
3737
/** @type {import('@sveltejs/kit').Config} */
3838
const config = {
3939
extensions: ['.svelte', '.md'],
40-
preprocess: [
41-
...evidencePreprocess(true),
42-
injectComponents(),
43-
preprocess({
44-
postcss: true
45-
}),
46-
addBasePathToHrefAndSrc
47-
],
40+
preprocess: [...evidencePreprocess(true), injectComponents(), addBasePathToHrefAndSrc],
4841
onwarn: errorHandler,
4942
kit: {
5043
adapter: adapter({

0 commit comments

Comments
 (0)