21 lines
969 B
Text
21 lines
969 B
Text
-# Renders a single pose option in the pose picker grid
|
|
-# @param pose [String] The pose name (e.g., "HAPPY_MASC")
|
|
-# @param pet_state [PetState, nil] The pet state for this pose, or nil if unavailable
|
|
-# @param selected [Boolean] Whether this pose is currently selected
|
|
|
|
- is_available = pet_state.present?
|
|
- pose_label = pose.split('_').map(&:capitalize).join(' ')
|
|
|
|
%label.pose-option{class: [is_available ? 'available' : 'unavailable', selected ? 'selected' : nil]}
|
|
= radio_button_tag :pose, pose, selected,
|
|
disabled: !is_available,
|
|
"aria-label": pose_label + (is_available ? "" : " (not available)")
|
|
|
|
.pose-thumbnail
|
|
- if is_available
|
|
-# Create a minimal outfit with just this pet state for the thumbnail
|
|
- thumbnail_outfit = Outfit.new(pet_state: pet_state, worn_items: [])
|
|
= outfit_viewer thumbnail_outfit, class: "pose-thumbnail-viewer"
|
|
- else
|
|
.pose-unavailable
|
|
%span.question-mark{title: "Not available"} ❓
|