class ViewComponentContrib::Preview::Base

def component_class_name

- Button::Preview => Button::Component | ButtonComponent | Button
- Namespace::ButtonPreview => Namespace::Button::Component | Namespace::ButtonComponent | Namespace::Button
Infer component class name from preview class name:
def component_class_name
  @component_class_name ||= begin
    component_name = name.sub(/(::Preview|Preview)$/, "")
    [
      "#{component_name}::Component",
      "#{component_name}Component",
      component_name
    ].find do
      _1.safe_constantize
    end
  end
end