Sha256: c72bbf6718c1bc23984fa7cdc9dcda436a4dd71a49b94da75e599e1dfb6c7b94

Contents?: true

Size: 1.79 KB

Versions: 51

Compression:

Stored size: 1.79 KB

Contents

# frozen_string_literal: true

module Primer
  module Beta
    class BorderBox
      # `BorderBox::Header` is used inside `BorderBox` to render its header slot.
      #
      # @accessibility When using `header.with_title`, set `tag` to one of `h1`, `h2`, `h3`, etc. based on what is appropriate for the page context. <%= link_to_heading_practices %>
      class Header < Primer::Component
        status :beta

        TITLE_TAG_FALLBACK = :h2
        TITLE_TAG_OPTIONS = [:h1, TITLE_TAG_FALLBACK, :h3, :h4, :h5, :h6].freeze

        # Optional Title.
        #
        # @param tag [Symbol] <%= one_of(Primer::Beta::BorderBox::Header::TITLE_TAG_OPTIONS) %>
        # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
        renders_one :title, lambda { |tag:, **system_arguments|
          system_arguments[:tag] = fetch_or_fallback(TITLE_TAG_OPTIONS, tag, TITLE_TAG_FALLBACK)
          system_arguments[:classes] = class_names(
            "Box-title",
            system_arguments[:classes]
          )

          Primer::BaseComponent.new(**system_arguments)
        }

        # @example Default
        #
        #   <%= render(Primer::Beta::BorderBox::Header.new) do %>
        #     Header
        #   <% end %>
        #
        # @example with title
        #   <%= render(Primer::Beta::BorderBox::Header.new) do |h| %>
        #     <% h.with_title(tag: :h3) do %>I am a title<% end %>
        #   <% end %>
        #
        # @param system_arguments [Hash] <%= link_to_system_arguments_docs %>
        def initialize(**system_arguments)
          @system_arguments = system_arguments
          @system_arguments[:tag] = :div
          @system_arguments[:classes] = class_names(
            "Box-header",
            system_arguments[:classes]
          )
        end
      end
    end
  end
end

Version data entries

51 entries across 51 versions & 2 rubygems

Version Path
openproject-primer_view_components-0.6.3 app/components/primer/beta/border_box/header.rb
primer_view_components-0.6.0 app/components/primer/beta/border_box/header.rb
primer_view_components-0.5.1 app/components/primer/beta/border_box/header.rb
primer_view_components-0.5.0 app/components/primer/beta/border_box/header.rb
primer_view_components-0.4.0 app/components/primer/beta/border_box/header.rb
primer_view_components-0.3.1 app/components/primer/beta/border_box/header.rb
primer_view_components-0.3.0 app/components/primer/beta/border_box/header.rb
primer_view_components-0.2.0 app/components/primer/beta/border_box/header.rb
primer_view_components-0.1.9 app/components/primer/beta/border_box/header.rb
primer_view_components-0.1.8 app/components/primer/beta/border_box/header.rb
primer_view_components-0.1.7 app/components/primer/beta/border_box/header.rb
primer_view_components-0.1.6 app/components/primer/beta/border_box/header.rb
primer_view_components-0.1.5 app/components/primer/beta/border_box/header.rb
primer_view_components-0.1.4 app/components/primer/beta/border_box/header.rb
primer_view_components-0.1.3 app/components/primer/beta/border_box/header.rb
primer_view_components-0.1.2 app/components/primer/beta/border_box/header.rb
primer_view_components-0.1.1 app/components/primer/beta/border_box/header.rb
primer_view_components-0.1.0 app/components/primer/beta/border_box/header.rb
primer_view_components-0.0.123 app/components/primer/beta/border_box/header.rb
primer_view_components-0.0.122 app/components/primer/beta/border_box/header.rb