Files
workouts/Workouts/Views/Splits/DraggableSplitItem.swift
2025-07-25 17:42:25 -04:00

62 lines
2.1 KiB
Swift
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// DraggableSplitItem.swift
// Workouts
//
// Created by rzen on 7/18/25 at 2:45PM.
//
// Copyright 2025 Rouslan Zenetl. All Rights Reserved.
//
import SwiftUI
struct DraggableSplitItem: View {
var name: String
var color: Color
var systemImageName: String
var exerciseCount: Int
var body: some View {
VStack {
ZStack(alignment: .bottom) {
// Golden ratio rectangle (1:1.618)
RoundedRectangle(cornerRadius: 12)
.fill(
LinearGradient(
gradient: Gradient(colors: [color, color.darker(by: 0.2)]),
startPoint: .topLeading,
endPoint: .bottomTrailing
)
)
.aspectRatio(1.618, contentMode: .fit)
.shadow(radius: 2)
GeometryReader { geometry in
VStack(spacing: 4) {
Spacer()
// Icon in the center - now using dynamic sizing
Image(systemName: systemImageName)
.font(.system(size: min(geometry.size.width * 0.3, 40), weight: .bold))
.scaledToFit()
.frame(maxWidth: geometry.size.width * 0.6, maxHeight: geometry.size.height * 0.4)
.padding(.bottom, 4)
// Name at the bottom inside the rectangle
Text(name)
.font(.headline)
.lineLimit(1)
.padding(.horizontal, 8)
Text("\(exerciseCount) exercises")
.font(.caption)
.padding(.bottom, 8)
}
.foregroundColor(.white)
.frame(width: geometry.size.width, height: geometry.size.height)
}
}
}
}
}