Class: Plutonium::UI::Layout::IconRail
- Inherits:
-
Component::Base
- Object
- Component::Base
- Plutonium::UI::Layout::IconRail
- Includes:
- Phlex::Slotable
- Defined in:
- lib/plutonium/ui/layout/icon_rail.rb
Overview
A fixed 56px-wide icon-only navigation rail for the app shell. Renders nav items as icon buttons with tooltips; falls back to a 2-letter abbreviation when an item has no icon.
When items have children:
-
Collapsed (default): hovering the parent shows a CSS flyout to the right
-
Pinned (body.pu-rail-pinned): rail expands to 220px, children collapse inline
Constant Summary collapse
- DEFAULT_MAX_DEPTH =
2
Instance Method Summary collapse
-
#brand ⇒ Object
Slot for the brand mark rendered at the top of the rail.
-
#initialize(menu: nil, max_depth: DEFAULT_MAX_DEPTH) ⇒ IconRail
constructor
A new instance of IconRail.
- #view_template ⇒ Object
Methods included from Component::Behaviour
Methods included from Component::Tokens
Methods included from Component::Kit
#BuildActionButton, #BuildActionsDropdown, #BuildBlock, #BuildBreadcrumbs, #BuildBulkActionsToolbar, #BuildColorModeSelector, #BuildDynaFrameContent, #BuildDynaFrameHost, #BuildEmptyCard, #BuildFrameNavigatorPanel, #BuildModalCentered, #BuildModalSlideover, #BuildPageHeader, #BuildPanel, #BuildRowActionsDropdown, #BuildSkeletonTable, #BuildTabList, #BuildTableFilterPills, #BuildTableInfo, #BuildTablePagination, #BuildTableScopesBar, #BuildTableScopesPills, #BuildTableSearchBar, #BuildTableToolbar, #BuildTableViewSwitcher, #method_missing, #respond_to_missing?
Constructor Details
#initialize(menu: nil, max_depth: DEFAULT_MAX_DEPTH) ⇒ IconRail
Returns a new instance of IconRail.
32 33 34 35 |
# File 'lib/plutonium/ui/layout/icon_rail.rb', line 32 def initialize(menu: nil, max_depth: DEFAULT_MAX_DEPTH) @menu = @max_depth = max_depth end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class Plutonium::UI::Component::Kit
Instance Method Details
#brand ⇒ Object
Slot for the brand mark rendered at the top of the rail.
26 |
# File 'lib/plutonium/ui/layout/icon_rail.rb', line 26 slot :brand |
#view_template ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/plutonium/ui/layout/icon_rail.rb', line 37 def view_template aside( id: "sidebar-navigation", data: {controller: "sidebar icon-rail"}, aria: {label: "Sidebar Navigation"}, class: "fixed top-0 left-0 z-40 h-screen " \ "bg-[var(--pu-surface)] border-r border-[var(--pu-border)] " \ "flex flex-col transition-[width] duration-200 overflow-x-hidden " \ "-translate-x-full lg:translate-x-0" ) do render_brand_section render_nav_section end end |