Plan step 36 (navigation group, second batch): <x-navigation-rail>'s, <x-navigation-rail-item>'s and <x-navigation-rail-section>'s class lists move into navigation-rail.css, navigation-rail-item.css and navigation-rail-section.css, keyed on data-md-navigation-rail (the mode, data-md-width, data-md-align, data-md-hide-when-collapsed, data-md-divider, data-md-fill, data-md-open), data-md-navigation-rail- item (data-md-active) and data-md-navigation-rail-section. Every Tailwind wrapper class in the view — the menu row's centring padding, the FAB row, the two swapped menu glyphs, the brand's visibility — becomes a hook the stylesheet draws instead; the menu button itself renders the shared md-state-layer/md-focus-ring/md-touch-target classes (N-01's pattern) since it draws its own layer on itself, not a child. `<x-icon>` and `<x-badge>` take size and floating props instead of size/position classes; a small data-md-navigation-icon hook (the shared navigation-item.css) replaces the ad hoc "relative inline-flex" wrapper a floating badge anchors to. `rail-collapsed` (a Tailwind @custom-variant, forbidden in Phase F) is reproduced as plain selectors, branch for branch: the three width- independent conditions (a fixed collapsed mode; a collapsible rail the visitor collapsed and not open; a modal rail not open) merge into one :where() group, provably the same match set as three separate rules since :where(A, B, C) on an element is true exactly when :where(A) or :where(B) or :where(C) is; the four width-gated conditions stay separate media blocks, since CSS cannot merge different `@media` queries. Every rem length becomes px, since these are dp-based M3 tokens, not a text measure (unlike <x-pane>'s rem widths). The FAB overrides for a rail's header — elevation 0 (N-03), morphing into an extended FAB instead of swapping two by display (N-23) — move from unlayered into this file's own material.components, like toolbar.css's FAB override: fab.css's `[data-md-fab]` is one attribute, so a doubled selector here always outranks it without needing to sit outside the layer. navigation.js: the arriving-indicator stylesheet and every code comment follow the new hooks; resources/css/components/navigation.css is deleted (nothing imports it any more) and its line in tailwind.css with it. Behaviour is unchanged except one thing Tailwind's `rail-collapsed:` variant could do that plain CSS in this shape cannot: it is gone for consuming applications too, since the definition lived only in the file this commit removes. The development skill's guidance for it is rewritten to point at navigation-rail.css's own selectors instead of teaching a Tailwind variant that no longer exists. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Qwx5USif3wFFmxtHg5U1g9
81 lines
2.9 KiB
CSS
81 lines
2.9 KiB
CSS
/*
|
|
* The component stylesheets already written without Tailwind (plan step 36), while the rest are
|
|
* still in tailwind.css. Each lives in `material.components`, so it can be imported anywhere in
|
|
* the entry: the layer statement, not the import order, decides where its rules rank. Step 37
|
|
* replaces this file with all.css. One block per stream, so parallel rewrites merge cleanly.
|
|
*/
|
|
|
|
@layer material.reset, material.tokens, material.base, material.layout, material.components, material.text, material.visibility;
|
|
|
|
/* Foundation components */
|
|
@import './components/icon.css';
|
|
@import './components/shape.css';
|
|
|
|
/* Actions and communication */
|
|
@import './components/loading.css';
|
|
@import './components/tooltip.css';
|
|
@import './components/badge.css';
|
|
@import './components/button.css';
|
|
@import './components/group.css';
|
|
@import './components/button-group.css';
|
|
@import './components/split-button.css';
|
|
@import './components/fab.css';
|
|
@import './components/menu-separator.css';
|
|
@import './components/menu-group.css';
|
|
@import './components/menu-item.css';
|
|
@import './components/menu.css';
|
|
@import './components/fab-menu-item.css';
|
|
@import './components/fab-menu.css';
|
|
@import './components/rich-tooltip.css';
|
|
@import './components/toast.css';
|
|
@import './components/progress.css';
|
|
@import './components/alert.css';
|
|
@import './components/stat.css';
|
|
@import './components/empty-state.css';
|
|
|
|
/* Inputs, selection and data */
|
|
@import './components/form.css';
|
|
@import './components/field.css';
|
|
@import './components/input.css';
|
|
@import './components/password.css';
|
|
@import './components/textarea.css';
|
|
@import './components/select.css';
|
|
@import './components/file.css';
|
|
@import './components/checkbox.css';
|
|
@import './components/radio.css';
|
|
@import './components/toggle.css';
|
|
@import './components/chip.css';
|
|
@import './components/chip-set.css';
|
|
@import './components/choices.css';
|
|
@import './components/slider.css';
|
|
@import './components/search.css';
|
|
@import './components/table.css';
|
|
@import './components/sort-header.css';
|
|
@import './components/pagination.css';
|
|
@import './components/datepicker.css';
|
|
@import './components/timepicker.css';
|
|
|
|
/* Containment */
|
|
@import './components/divider.css';
|
|
@import './components/collapse.css';
|
|
@import './components/card.css';
|
|
@import './components/list-item.css';
|
|
@import './components/list.css';
|
|
@import './components/modal.css';
|
|
@import './components/drawer.css';
|
|
@import './components/bottom-sheet.css';
|
|
@import './components/carousel-item.css';
|
|
@import './components/carousel.css';
|
|
@import './components/error-page.css';
|
|
|
|
/* Navigation */
|
|
@import './components/app-bar.css';
|
|
@import './components/toolbar.css';
|
|
@import './components/tabs.css';
|
|
@import './components/navigation-item.css';
|
|
@import './components/navigation-bar.css';
|
|
@import './components/navigation-bar-item.css';
|
|
@import './components/navigation-rail.css';
|
|
@import './components/navigation-rail-item.css';
|
|
@import './components/navigation-rail-section.css';
|