<% # optons: class = overide css class # label = overide label # icon_type = choose one of the given icons. # icon_svg = costum svg icon # 1. Standard-Design festlegen (Fallback) css = local_assigns[:class] || "" # 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 = '' # 3. Logik-Weiche für Farben, Standard-Icons und Standard-Labels case type.to_s when "storage" css, computed_icon, computed_label = "bg-amber-50 text-amber-800 border-amber-200", icon_storage, "Hauptlager" when "user" css, computed_icon, computed_label = "bg-green-50 text-green-800 border-green-200", icon_user, "" when "room" css, computed_icon, computed_label = "bg-blue-50 text-blue-800 border-blue-200", icon_room, "" when "in_use" css, computed_icon, computed_label = "bg-gray-100 text-gray-600 border-gray-200", icon_in_use, "In Benutzung" when "new_item" css, computed_icon, computed_label = "bg-green-50 text-green-700 border-green-200", icon_new, Item.human_attribute_name("conditions.new_item") when "as_new" css, computed_icon, computed_label = "bg-emerald-50 text-emerald-700 border-emerald-200", icon_as_new, Item.human_attribute_name("conditions.as_new") when "used" css, computed_icon, computed_label = "bg-yellow-50 text-yellow-700 border-yellow-200", icon_used, Item.human_attribute_name("conditions.used") when "heavily_used" css, computed_icon, computed_label = "bg-orange-50 text-orange-700 border-orange-200", icon_heavy, Item.human_attribute_name("conditions.heavily_used") when "defective" css, computed_icon, computed_label = "bg-red-50 text-red-700 border-red-200", icon_defective, Item.human_attribute_name("conditions.defective") css += " animate-pulse font-bold" when "unknown" css, computed_icon, computed_label = "bg-gray-50 text-gray-400 border-gray-100", icon_unknown, Item.human_attribute_name("conditions.unknown") end # 4. Optionale Variablen-Überlagerung von außen (Falls manuell übergeben) final_label = local_assigns[:label].presence || computed_label final_icon = local_assigns[:icon_type].present? ? local_assigns[:icon_type] : computed_icon.to_s.html_safe final_icon = lcoal_assigns[:icon_svg].present? ? local_assigns[:icon_svg] : computed_icon.to_s.html_safe %> <%= final_icon if final_icon.present? %> <%= final_label %>