Stop styling basic buttons. Our library includes 50+ pre-built, copy-paste ready Glassmorphism components natively bridging to .ultraThinMaterial for the ultimate premium feel.
π‘οΈ PART OF THE 2026 UNIFIED CORE This repository is a verified component of 'The Endless March' initiative. Purified for Swift 6, zero-dependency, and engineered for maximum hardware saturation.
Flagship Engines: SwiftNetwork | SwiftAI | LiquidGlassKit
A comprehensive library of 98 production-ready SwiftUI components
Build beautiful iOS & macOS apps faster with pre-built, customizable UI components
- π― 98 Real Components - No placeholders, every component is fully functional
- π Dark Mode Support - All components adapt to light/dark mode automatically
- βΏοΈ Accessibility Ready - VoiceOver and Dynamic Type support built-in
- π± iOS & macOS - Works on all Apple platforms
- π¨ Highly Customizable - Every component supports extensive customization
- π SwiftUI Previews - Live previews for every component
- π§ͺ Well Tested - Comprehensive test coverage
| Category | Components | Description |
|---|---|---|
| Buttons | 17 | Primary, Secondary, Ghost, Icon, Social, Animated, Toggle, Split, Neumorphic, and more |
| Cards | 15 | Profile, Product, Stat, Pricing, Feature, Testimonial, Media, Notification, Event, Dashboard |
| Forms | 8 | FormField, SelectField, CheckboxGroup, RadioGroup, SliderField, DateTimeField, FileUpload, OTPField |
| Charts | 7 | Area, Line, Bar, Pie, Donut, Gauge, MultiRing Progress |
| Navigation | 7 | NavigationBar, TabBar, Steps, Breadcrumb, Menu, Sidebar, Pagination |
| Loading | 7 | Skeleton, Shimmer, Pulse, Dot, Progress Ring, Content Loader, State View |
| Misc | 9 | Avatar, Badge, Chip, Timer, Countdown, Carousel, Accordion, Quote, Tag |
| Lists | 6 | Grouped, Selectable, Collapsible, Swipeable, Horizontal, Snap |
| Text | 6 | Gradient, Animated Counter, Typewriter, Highlighted, Marquee, Expandable |
| Inputs | 6 | Search, Rating, Tag, Phone, Credit Card, PIN |
| Overlays | 5 | Bottom Sheet, Modal, Tooltip, Alert Dialog, Popover |
| Toast | 4 | Toast, Snackbar, Banner, Notification |
| Empty States | 1 | Comprehensive empty state with multiple styles |
Add SwiftUI Components to your project through Xcode:
- File β Add Packages...
- Enter the repository URL:
https://github.com/muhittincamdali/SwiftUI-Components.git
- Select "Up to Next Major Version" with "1.0.0"
Or add it to your Package.swift:
dependencies: [
.package(url: "https://github.com/muhittincamdali/SwiftUI-Components.git", from: "1.0.0")
]import SwiftUIComponents// Primary button with loading state
PrimaryButton("Submit", isLoading: $isLoading) {
await submitForm()
}
// Social login buttons
SocialButton(.apple) { await signInWithApple() }
SocialButton(.google) { await signInWithGoogle() }
// Animated buttons
AnimatedButton("Save", icon: "checkmark", animation: .bounce) {
save()
}
// Toggle button
ToggleButton(
isOn: $isFollowing,
onLabel: "Following",
offLabel: "Follow"
)// Profile card with stats
ProfileCard(
name: "John Doe",
subtitle: "iOS Developer",
stats: [
.init(value: "1.2K", label: "Posts"),
.init(value: "45K", label: "Followers")
],
style: .expanded
)
// Product card
ProductCard(
title: "MacBook Pro",
price: "$2,499",
originalPrice: "$2,799",
rating: 4.9,
badge: "SALE",
onAddToCart: { }
)
// Stat cards for dashboards
StatCard(
title: "Revenue",
value: "$124,500",
icon: "dollarsign.circle",
trend: .init(value: 12.5, isPositive: true)
)// Form field with validation
FormField(label: "Email", isRequired: true, errorMessage: emailError) {
TextInputField(text: $email, placeholder: "Enter email", icon: "envelope")
}
// OTP input
OTPField(code: $otpCode, length: 6, style: .boxes) { code in
verifyCode(code)
}
// Multi-select
MultiSelectField(
selections: $selectedTags,
options: [("swift", "Swift"), ("swiftui", "SwiftUI"), ("ios", "iOS")],
placeholder: "Select tags"
)// Area chart
AreaChart(
data: [10, 25, 15, 40, 30, 55],
labels: ["Jan", "Feb", "Mar", "Apr", "May", "Jun"],
color: .blue
)
// Pie/Donut chart
DonutChart(
slices: [
.init(value: 60, label: "Complete", color: .green),
.init(value: 25, label: "In Progress", color: .blue),
.init(value: 15, label: "Pending", color: .orange)
],
centerValue: "85%",
centerLabel: "Done"
)
// Gauge
GaugeChart(value: 72, maxValue: 100, label: "Speed")// No results
EmptyStateView.noResults(action: .init("Clear Search") { clearSearch() })
// No connection
EmptyStateView.noConnection(action: .init("Retry") { retry() })
// Custom empty state
EmptyStateView(
title: "No Messages",
message: "Start a conversation",
illustration: .messages,
action: .init("New Message", icon: "plus") { }
)// Content loader
ContentLoader(style: .card)
ContentLoader(style: .list)
ContentLoader(style: .profile)
// Loading overlay
ZStack {
YourContent()
LoadingOverlay(isLoading: $isLoading, message: "Saving...")
}All components support extensive customization through initializer parameters:
// Custom colors
PrimaryButton("Submit", color: .purple) { }
// Custom styles
Tag("Swift", style: .outlined, color: .orange)
// Custom sizes
CircleButton(icon: "plus", size: .large, style: .filled(.blue)) { }- iOS 17.0+
- macOS 14.0+
- Xcode 15.0+
- Swift 6.0+
Contributions are welcome! Please read our Contributing Guide for details.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
Made with β€οΈ by Muhittin Camdali