build(ui): add Tailwind v4 + daisyUI 5 pipeline

daisyUI is an npm plugin, so the standalone Tailwind CLI can't load it; this
adds a real build. Themes are configured as `light --default, dark
--prefersdark`, so dark follows the OS with no JavaScript, and an explicit
data-theme (set by the toggle) overrides it.

The built CSS is committed, so `uv run manage.py runserver` remains all a
Python dev needs; `npm run watch` is only for those touching styles.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-07-13 15:29:10 +02:00
parent ebb8bc3db1
commit 848a8578de
4 changed files with 1210 additions and 1 deletions

4
.gitignore vendored
View File

@@ -376,4 +376,6 @@ poetry.toml
# LSP config files
pyrightconfig.json
# End of https://www.toptal.com/developers/gitignore/api/python,pycharm,django%
# End of https://www.toptal.com/developers/gitignore/api/python,pycharm,django%
# Node
node_modules/

1181
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

14
package.json Normal file
View File

@@ -0,0 +1,14 @@
{
"name": "clubmanager",
"private": true,
"type": "module",
"scripts": {
"build": "tailwindcss -i ./static/src/app.css -o ./static/css/app.css --minify",
"watch": "tailwindcss -i ./static/src/app.css -o ./static/css/app.css --watch"
},
"devDependencies": {
"@tailwindcss/cli": "^4.1.0",
"daisyui": "^5.0.0",
"tailwindcss": "^4.1.0"
}
}

12
static/src/app.css Normal file
View File

@@ -0,0 +1,12 @@
@import "tailwindcss";
/* Scan Django templates for utility classes (Tailwind's auto-detection doesn't
know about our template dirs). */
@source "../../templates";
@source "../../controlpanel";
/* daisyUI: light is the default, dark applies automatically when the OS asks
for it. An explicit data-theme on <html> (set by the toggle) overrides both. */
@plugin "daisyui" {
themes: light --default, dark --prefersdark;
}