diff --git a/tests/Feature/StylesheetsTest.php b/tests/Feature/StylesheetsTest.php index 2d6df214..81cefd1a 100644 --- a/tests/Feature/StylesheetsTest.php +++ b/tests/Feature/StylesheetsTest.php @@ -412,9 +412,13 @@ it('draws the interaction classes as the utilities the Tailwind components still ->and(stylesheetBlock($interaction, '.md-touch-target'))->toContain('min-width: var(--md-sys-measurement-space600);'); }); -it('declares the material layers in the Workbench before Tailwind\'s', function () { +it('declares the material layers in the Workbench between Tailwind\'s preflight and its utilities', function () { $app = stylesheetWithoutComments(File::get(__DIR__.'/../../workbench/resources/css/app.css')); + // The first statement orders the layers: above preflight, whose `* { padding: 0 }` would + // otherwise beat a rewritten component's padding, and below the utilities. + expect(trim($app))->toStartWith('@layer theme, base, material, components, utilities;'); + $foundation = strpos($app, "@import '../../../resources/css/foundation.css';"); $tailwind = strpos($app, "@import 'tailwindcss'"); $components = strpos($app, "@import '../../../resources/css/tailwind.css';"); diff --git a/workbench/resources/css/app.css b/workbench/resources/css/app.css index b0d5c678..9e7d115d 100644 --- a/workbench/resources/css/app.css +++ b/workbench/resources/css/app.css @@ -1,7 +1,10 @@ /* The Workbench builds the package as an application would, with explicit sources so the plans - in docs/ are not scanned for class names. The foundation comes before Tailwind, so the - `material` layers are declared first and sit below Tailwind's; tailwind.css brings the - components still written for Tailwind, without declaring the tokens a second time. */ + in docs/ are not scanned for class names. The layer statement puts the `material` layers above + Tailwind's preflight (`base`) and below its `components` and `utilities`: a rewritten component's + padding, margin and border would otherwise lose to preflight's `* { padding: 0 }`, which the + material reset already carries, while every utility still outranks the package. tailwind.css + brings the components still written for Tailwind, without declaring the tokens a second time. */ +@layer theme, base, material, components, utilities; @import '../../../resources/css/foundation.css'; @import '../../../resources/css/layout.css'; @import '../../../resources/css/components.css';