Pin every written-out copy of the rail's collapsed conditions

Plan step 36, navigation review. The Tailwind-era rail-collapsed:
variant is now plain selectors in 26 rules, each repeated in five
window bands, across navigation-rail.css, navigation-rail-item.css,
navigation-rail-section.css and layout/scaffold.css; the tests pinned
a few of them. A new test walks every rule whose :where() names the
rail and fails when a copy drifts from the seven conditions for its
band, or when a rule is drawn collapsed in some bands but not all five.
ComponentStylesheet gains rules() for it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Qwx5USif3wFFmxtHg5U1g9
This commit is contained in:
Andreas Reinhold / reini
2026-09-15 01:12:27 +02:00
co-authored by Claude Opus 5
parent cbd058f948
commit f31acf82d7
2 changed files with 78 additions and 0 deletions
+11
View File
@@ -117,6 +117,17 @@ final class ComponentStylesheet
return $declarations;
}
/**
* Every rule, nesting resolved, in source order: for a test that has to walk all of them rather
* than name one.
*
* @return list<array{selector: string, at: list<string>, declarations: array<string, string>}>
*/
public function rules(): array
{
return $this->rules;
}
public function has(string $selector, array $at = []): bool
{
try {