Product Card Basic Rectangle
Modern e-commerce product card with image thumbnail, price tag, and buy button.
SwiftUI Implementation
Pure Vanilla Swift • No DependenciesproductCardBasicRect.swift
import Foundation
import SwiftUI
struct ProductCardBasicRect: View {
let productImage: Image
let productName: String
let productCategory: String
let productPrice: Double
@Binding var isFavorite: Bool
var body: some View {
VStack(alignment: .leading, spacing: 4) {
image
VStack(alignment: .leading, spacing: 2) {
name
category
}
price
}
}
private var image: some View {
productImage
.resizable()
.aspectRatio(contentMode: .fill)
.frame(width: 160, height: 140)
.clipped()
.clipShape(.rect(cornerRadius: 15, style: .continuous))
.overlay(alignment: .topTrailing) {
favoriteButton
.offset(x: -10, y: 10)
}
}
private var favoriteButton: some View {
Button(action: {
isFavorite.toggle()
}) {
/// You can download custom symbols used in this component:
/// custom.heart.fill: https://drive.google.com/file/d/1FrubVKYkTqG61-iAA0LVv5MnjQKx1WUI/view?usp=sharing
/// custom.heart: https://drive.google.com/file/d/1FbTd5rpydjMYCSktub2k9N7YeKVSDMVN/view?usp=sharing
Image(isFavorite ? "custom.heart.fill" : "custom.heart")
.font(.system(size: 20))
.fontWeight(.regular)
.symbolRenderingMode(.multicolor)
}
.buttonStyle(PlainButtonStyle())
}
private var name: some View {
Text(productName)
.font(.system(size: 15))
.fontWeight(.medium)
.lineLimit(2)
.padding(.top, 8)
.foregroundStyle(.primary)
}
private var category: some View {
Text(productCategory)
.font(.system(size: 15))
.fontWeight(.light)
.lineLimit(1)
.foregroundStyle(.secondary)
}
private var price: some View {
HStack {
Text(productPrice, format: .currency(code: "USD"))
.fontWeight(.medium)
Text("night")
.fontWeight(.light)
.foregroundStyle(.secondary)
}
.font(.system(size: 14))
.padding(.bottom, 8)
.foregroundStyle(.primary)
}
}
struct UseProductCardBasicRect: View {
@State private var isFavorite: Bool = false
var body: some View {
ProductCardBasicRect(productImage: Image("bellavista"), productName: "Bella Vista Hotel", productCategory: "Romantic", productPrice: 199.99, isFavorite: $isFavorite)
.padding()
}
}
#Preview {
UseProductCardBasicRect()
}Ready to copy and paste directly into any Xcode project running iOS 16.0+.
Recommended Use Cases
- First-run onboarding flows and feature introductions
- Paywalls, upgrade prompts, and subscription tiers
- Dashboard overviews, stats tracking, and metric highlights
Component Details
- Category
- Cards & Content Displays
- iOS Compatibility
- iOS 16.0+
- Xcode Version
- Xcode 15+
- Platform
- iOS
- License Tier
- Free
- Themes & Contexts
- dashboardonboardingpaywall
- Keywords
- productcardbasicrectanglee-commerce
C
Compot for iOS
Native SwiftUI playground app
Preview all 130+ components interactively on your device and copy code straight to Xcode with 1 tap.
Get Compot on the App StoreRelated SwiftUI Components
More components in Cards & Content Displays and related app architectures.
ButtonsiOS 16.0+
Primary Button Basic
High-emphasis prominent action button with standard SwiftUI prominence styling and haptic feedback.
View Component & Code
ButtonsiOS 16.0+
CTA Button Large Basic
Full-width, high-impact call-to-action button designed for onboarding screens, welcome flows, and paywalls.
View Component & Code
ButtonsiOS 16.0+
Secondary Button Basic
Medium-emphasis secondary action button styled for alternative user workflows and dismissal actions.
View Component & Code