<% # 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 %>