%
# options: class = override css class
# label = override label
# icon_type = choose one of the given icons.
# icon_svg = custom svg icon
# 1. Standard-Design festlegen (Fallback)
css = local_assigns[:class] || ""
type = local_assigns[:type] || ""
# 2. Icons als Strings definieren
icon_user = ''
icon_room = ''
icon_storage = ''
icon_in_use = ''
icon_new = ''
icon_as_new = ''
icon_used = ''
icon_heavy = ''
icon_defective = ''
icon_unknown = ''
icon_category = ''
# 3. Logik-Weiche für Farben, Standard-Icons und Standard-Labels
case type.to_s
when "storage"
css = "bg-amber-50 text-amber-800 border-amber-200" if css.blank?
computed_icon, computed_label = icon_storage, "Hauptlager"
when "user"
css = "bg-green-50 text-green-800 border-green-200" if css.blank?
computed_icon, computed_label = icon_user, ""
when "room"
css = "bg-blue-50 text-blue-800 border-blue-200" if css.blank?
computed_icon, computed_label = icon_room, ""
when "in_use"
css = "bg-gray-100 text-gray-600 border-gray-200" if css.blank?
computed_icon, computed_label = icon_in_use, "In Benutzung"
when "new_item"
css = "bg-green-50 text-green-700 border-green-200" if css.blank?
computed_icon, computed_label = icon_new, Item.human_attribute_name("conditions.new_item")
when "as_new"
css = "bg-emerald-50 text-emerald-700 border-emerald-200" if css.blank?
computed_icon, computed_label = icon_as_new, Item.human_attribute_name("conditions.as_new")
when "used"
css = "bg-yellow-50 text-yellow-700 border-yellow-200" if css.blank?
computed_icon, computed_label = icon_used, Item.human_attribute_name("conditions.used")
when "heavily_used"
css = "bg-orange-50 text-orange-700 border-orange-200" if css.blank?
computed_icon, computed_label = icon_heavy, Item.human_attribute_name("conditions.heavily_used")
when "defective"
css = "bg-red-50 text-red-700 border-red-200 animate-pulse font-bold" if css.blank?
computed_icon, computed_label = icon_defective, Item.human_attribute_name("conditions.defective")
when "unknown"
css = "bg-gray-50 text-gray-400 border-gray-100" if css.blank?
computed_icon, computed_label = icon_unknown, Item.human_attribute_name("conditions.unknown")
when "category"
css = "bg-blue-50 text-blue-800 border-blue-200" if css.blank?
computed_icon, computed_label = icon_category, ""
when "sticker"
# Wenn von außen kein custom CSS kommt, brennen wir den sportlichen Sticker-Look direkt hier ein
css = "bg-blue-600 text-white border-blue-600 font-mono font-black tracking-wider uppercase py-0.5 px-1.5" if css.blank?
computed_icon, computed_label = "", ""
end
# 4. Optionale Variablen-Überlagerung von außen (Falls manuell übergeben)
final_label = local_assigns[:label].presence || computed_label
final_icon = if local_assigns[:icon_svg].present?
local_assigns[:icon_svg]
elsif local_assigns[:icon_type].present?
local_assigns[:icon_type]
else
computed_icon.to_s.html_safe
end
%>
<%= final_icon if final_icon.present? %>
<%= final_label %>