Module: Admin::UiHelper
- Defined in:
- lib/generators/ruby_cms/templates/helpers/admin/ui_helper.rb
Overview
Shared visual helpers for admin views.
- admin_crumbs("Audit log") => ["Admin", url: "/admin", "Audit log"]
- admin_crumbs("Settings", "Permissions")
- badge_classes(:success) => "bg-green-50 text-green-700 border-green-100"
- badge_dot_classes(:danger) => "bg-red-500"
Constant Summary collapse
- BADGE_PALETTE =
{ neutral: { bg: "bg-[#faf8f3]", text: "text-[#57534e]", border: "border-[#e9e4d4]", dot: "bg-[#a8a29e]" }, blue: { bg: "bg-blue-50", text: "text-blue-700", border: "border-blue-100", dot: "bg-blue-500" }, green: { bg: "bg-green-50", text: "text-green-700", border: "border-green-100", dot: "bg-green-600" }, amber: { bg: "bg-amber-50", text: "text-amber-700", border: "border-amber-100", dot: "bg-amber-500" }, red: { bg: "bg-red-50", text: "text-red-700", border: "border-red-100", dot: "bg-red-500" }, purple: { bg: "bg-purple-50", text: "text-purple-700", border: "border-purple-100", dot: "bg-purple-500" }, success: { bg: "bg-green-50", text: "text-green-700", border: "border-green-100", dot: "bg-green-600" }, danger: { bg: "bg-red-50", text: "text-red-700", border: "border-red-100", dot: "bg-red-500" }, warn: { bg: "bg-amber-50", text: "text-amber-700", border: "border-amber-100", dot: "bg-amber-500" } }.freeze
Instance Method Summary collapse
- #admin_crumbs(*labels) ⇒ Object
-
#badge_classes(tone = :neutral) ⇒ Object
Returns "bg-X-50 text-X-700 border-X-100" classes for a Tailwind pill.
-
#badge_dot_classes(tone = :neutral) ⇒ Object
Returns just the dot bg class (for inline status dots inside pills).
-
#status_pill(tone, label, dot: true) ⇒ Object
Convenience: render a small dot+label pill.
Instance Method Details
#admin_crumbs(*labels) ⇒ Object
23 24 25 26 |
# File 'lib/generators/ruby_cms/templates/helpers/admin/ui_helper.rb', line 23 def admin_crumbs(*labels) root_label = t("ruby_cms.admin.breadcrumb.admin", default: "Admin") [ { label: root_label, url: admin_root_path } ] + labels.compact.map { |l| { label: l } } end |
#badge_classes(tone = :neutral) ⇒ Object
Returns "bg-X-50 text-X-700 border-X-100" classes for a Tailwind pill.
29 30 31 32 |
# File 'lib/generators/ruby_cms/templates/helpers/admin/ui_helper.rb', line 29 def badge_classes(tone = :neutral) palette = BADGE_PALETTE[tone.to_sym] || BADGE_PALETTE[:neutral] "#{palette[:bg]} #{palette[:text]} #{palette[:border]}" end |
#badge_dot_classes(tone = :neutral) ⇒ Object
Returns just the dot bg class (for inline status dots inside pills).
35 36 37 |
# File 'lib/generators/ruby_cms/templates/helpers/admin/ui_helper.rb', line 35 def badge_dot_classes(tone = :neutral) (BADGE_PALETTE[tone.to_sym] || BADGE_PALETTE[:neutral])[:dot] end |
#status_pill(tone, label, dot: true) ⇒ Object
Convenience: render a small dot+label pill.
40 41 42 43 44 45 46 |
# File 'lib/generators/ruby_cms/templates/helpers/admin/ui_helper.rb', line 40 def status_pill(tone, label, dot: true) classes = "inline-flex items-center gap-1.5 px-2 py-0.5 rounded-full text-[11px] font-medium border whitespace-nowrap #{badge_classes(tone)}" content_tag(:span, class: classes) do concat content_tag(:span, "", class: "w-1.5 h-1.5 rounded-full #{badge_dot_classes(tone)}") if dot concat label end end |