Sha256: 2fdd422ccbcbaf0a23e9efeced7cde4228f03f4d597a32dfdf727678645759bb

Contents?: true

Size: 1.62 KB

Versions: 6

Compression:

Stored size: 1.62 KB

Contents

# frozen_string_literal: true

module Plutonium
  module UI
    module Layout
      # A sidebar navigation component that provides a responsive layout with light/dark mode toggle
      # @example Basic usage with navigation content
      #   render Sidebar.new do
      #     ...
      #   end
      class Sidebar < Base
        # Renders the sidebar navigation template
        # @yield [void] The block containing sidebar content
        # @return [void]
        def view_template(&)
          render_sidebar_container do
            render_content(&) if block_given?
            render_color_mode_controls
          end
        end

        private

        # @private
        def render_sidebar_container(&)
          aside(
            data: {controller: "sidebar"},
            id: "sidebar-navigation",
            aria: {label: "Sidebar Navigation"},
            class: "fixed top-0 left-0 z-40 w-64 h-screen pt-14 transition-transform -translate-x-full lg:translate-x-0",
            &
          )
        end

        # @private
        def render_content(&)
          div(
            id: "sidebar-navigation-content",
            data: {turbo_permanent: true},
            class: "overflow-y-auto py-5 px-3 h-full bg-white border-r border-gray-200 dark:bg-gray-800 dark:border-gray-700",
            &
          )
        end

        # @private
        def render_color_mode_controls
          div(class: "absolute bottom-0 left-0 justify-center p-4 space-x-4 w-full flex bg-white dark:bg-gray-800 z-20 border-r border-gray-200 dark:border-gray-700") do
            render ColorModeSelector.new
          end
        end
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
plutonium-0.20.4 lib/plutonium/ui/layout/sidebar.rb
plutonium-0.20.3 lib/plutonium/ui/layout/sidebar.rb
plutonium-0.20.1 lib/plutonium/ui/layout/sidebar.rb
plutonium-0.20.0 lib/plutonium/ui/layout/sidebar.rb
plutonium-0.19.13 lib/plutonium/ui/layout/sidebar.rb
plutonium-0.19.12 lib/plutonium/ui/layout/sidebar.rb