module Ariadne::Static::GeneratePreviews

def call

def call
  Lookbook.previews.filter_map do |preview|
    next if preview.preview_class == Ariadne::FormsPreview
    next if Ariadne::Accessibility.ignore_preview?(preview.preview_class)
    class_name, _ = Ariadne::Yard::DocsHelper.component_and_short_name(preview.preview_class)
    {
      type: preview.lookup_path.split("/")[1], # e.g. preview.lookup_path => "ariadne/ui/badge"
      name: preview.name,
      component: class_name,
      lookup_path: preview.lookup_path,
      examples: preview.scenarios.flat_map do |parent_scenario|
        scenarios = parent_scenario.type == :scenario_group ? parent_scenario.scenarios : [parent_scenario]
        scenarios.map do |scenario|
          snapshot_tag = scenario.tags.find { |tag| tag.tag_name == "snapshot" }
          snapshot = if snapshot_tag.nil?
            "false"
          elsif snapshot_tag.text.blank?
            "true"
          else
            snapshot_tag.text
          end
          {
            preview_path: scenario.lookup_path,
            name: scenario.name,
            snapshot: snapshot,
            skip_rules: Ariadne::Accessibility.axe_rules_to_skip(
              component: class_name,
              scenario_name: scenario.name,
            ),
          }
        end
      end,
    }
  end
end