chore(config): add shared tailwind.config.css outer shell

Introduces `packages/config/tailwind.config.css` as the CSS-first
orchestration layer shared by every app. It collects three things that
were previously duplicated across every app's main CSS entry:

- `@import` of `packages/ui/build/css/source/global.css` — the design
  system's CSS variable definitions.
- `@import` of `dark.css`, `light.css`, and `classic-dark.css` — per-mode
  overrides for those variables.
- `@import` of `packages/config/tailwind-utilities/hit-area.css` — the
  v4-native `hit-area-*` utility port.

And one new thing:

- `@custom-variant dark` matching v3's
  `darkMode: ['class', '[data-theme*='dark']']` — active on `.dark` or
  `[data-theme*='dark']`, on the element itself or any ancestor, with
  zero-specificity via `:where()`.

Every app's main CSS entry now reads:

  @import 'tailwindcss';
  @import '.../packages/config/tailwind.config.css';
  @import './tailwind.config.css';
  @config '.../packages/config/tailwind.config.js';

The four duplicated imports (global + three themes + hit-area) disappear
from each app's entry file. The `@config` bridge stays for now; the
declarative theme still lives in the JS config. The next commit will
merge `tailwind.config.js` and `ui.config.js` into a single JS plugin
loaded by this CSS file, at which point the `@config` line goes away.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
Ivan VasilovandClaude Opus 4.7 committed 2026-05-04 14:35:20 +02:00
1 parent c64f18d790
commit 9b985e3876
8 files changed
+33 -37

No files matched your search

+1 -5
View File
@@ -1,11 +1,7 @@
@import 'tailwindcss';
@import './../../../packages/config/tailwind.config.css';
@import './tailwind.config.css';
@import './../../../packages/ui/build/css/source/global.css';
@import './../../../packages/ui/build/css/themes/dark.css';
@import './../../../packages/ui/build/css/themes/classic-dark.css';
@import './../../../packages/ui/build/css/themes/light.css';
@config '../../../packages/config/tailwind.config.js';
@import 'config/typography.css';
+1 -5
View File
@@ -1,10 +1,6 @@
@import 'tailwindcss';
@import './../../../packages/config/tailwind.config.css';
@import './tailwind.config.css';
@import './../../../packages/config/tailwind-utilities/hit-area.css';
@import './../../../packages/ui/build/css/source/global.css';
@import './../../../packages/ui/build/css/themes/dark.css';
@import './../../../packages/ui/build/css/themes/light.css';
@config '../../../packages/config/tailwind.config.js';
+1 -5
View File
@@ -1,11 +1,7 @@
@import 'tailwindcss';
@import './../../../packages/config/tailwind.config.css';
@import './tailwind.config.css';
@import './../../../packages/ui/build/css/source/global.css';
@import './../../../packages/ui/build/css/themes/dark.css';
@import './../../../packages/ui/build/css/themes/classic-dark.css';
@import './../../../packages/ui/build/css/themes/light.css';
@config '../../../packages/config/tailwind.config.js';
@layer base {
+1 -5
View File
@@ -1,10 +1,6 @@
@import 'tailwindcss';
@import './../../../packages/config/tailwind.config.css';
@import './tailwind.config.css';
@import './../../../packages/config/tailwind-utilities/hit-area.css';
@import './../../../packages/ui/build/css/source/global.css';
@import './../../../packages/ui/build/css/themes/dark.css';
@import './../../../packages/ui/build/css/themes/light.css';
@config '../../../packages/config/tailwind.config.js';
+1 -6
View File
@@ -1,11 +1,6 @@
@import 'tailwindcss';
@import './../../../packages/config/tailwind.config.css';
@import './tailwind.config.css';
@import './../../../packages/config/tailwind-utilities/hit-area.css';
@import './../../../packages/ui/build/css/source/global.css';
@import './../../../packages/ui/build/css/themes/dark.css';
@import './../../../packages/ui/build/css/themes/light.css';
@import './../../../packages/ui/build/css/themes/classic-dark.css';
@import 'config/typography.css';
+1 -6
View File
@@ -1,11 +1,6 @@
@import 'tailwindcss';
@import './../../../packages/config/tailwind.config.css';
@import './tailwind.config.css';
@import './../../../packages/config/tailwind-utilities/hit-area.css';
@import './../../../packages/ui/build/css/source/global.css';
@import './../../../packages/ui/build/css/themes/dark.css';
@import './../../../packages/ui/build/css/themes/classic-dark.css';
@import './../../../packages/ui/build/css/themes/light.css';
@config '../../../packages/config/tailwind.config.js';
+1 -5
View File
@@ -1,10 +1,6 @@
@import 'tailwindcss';
@import './../../../packages/config/tailwind.config.css';
@import './tailwind.config.css';
@import './../../../packages/config/tailwind-utilities/hit-area.css';
@import './../../../packages/ui/build/css/source/global.css';
@import './../../../packages/ui/build/css/themes/dark.css';
@import './../../../packages/ui/build/css/themes/light.css';
@config '../../../packages/config/tailwind.config.js';
+26
View File
@@ -0,0 +1,26 @@
/*
* Shared Tailwind v4 config for all Supabase apps.
*
* This file is the CSS-first orchestration layer. The imperative theme
* configuration (colors, typography, keyframes, custom plugins, etc.) still
* lives in the sibling `tailwind.config.js` and is loaded via the `@config`
* directive from each app's main CSS entry. That will migrate here in a
* follow-up commit.
*/
/* Core CSS variable definitions for the Supabase design system. Defines
* --foreground-*, --background-*, --border-*, etc. */
@import '../ui/build/css/source/global.css';
/* Per-mode overrides for the CSS variables above. */
@import '../ui/build/css/themes/dark.css';
@import '../ui/build/css/themes/light.css';
@import '../ui/build/css/themes/classic-dark.css';
/* v4-native port of the custom `hit-area-*` utilities (from bazza.dev). */
@import './tailwind-utilities/hit-area.css';
/* Dark mode: matches v3's `darkMode: ['class', '[data-theme*="dark"]']` —
* activates on `.dark` or `[data-theme*='dark']`, on the element itself
* or any ancestor. `:where()` keeps specificity at 0. */
@custom-variant dark (&:where(.dark, .dark *, [data-theme*='dark'], [data-theme*='dark'] *));