nikolaiborisov/solidds
A lightweight SwiftUI design system providing reusable components, design tokens, and UI primitives for building consistent apps.
Features
- Reusable SwiftUI components
- Design tokens (colors, spacing, typography)
- Modular architecture
- Swift Package Manager support
- Demo catalog app
Installation
Add the package using Swift Package Manager:
.package(url: "https://github.com/NikolaiBorisov/SolidDS.git", from: "1.2.0")Or add it in Xcode:
File → Add Package Dependencies
https://github.com/NikolaiBorisov/SolidDSHighlight: SolidProgress
A highly customizable SwiftUI progress component supporting:
- Linear and circular styles
- Horizontal and vertical orientation
- Flexible value positioning (leading, trailing, top, bottom, overlay)
- Capsule and text value styles
- Customizable colors, spacing, and sizes
Usage
import SolidDS
struct ContentView: View {
var body: some View {
// Full Configuration
SolidProgress(
progress: .init(
value: 0.88,
format: .decimal(places: 2, percent: true)
),
valueConfig: .init(
position: .trailing,
style: .capsule,
color: .primary,
font: .caption.monospacedDigit()
),
orientation: .horizontal,
size: .medium,
progressStyle: .init(
type: .linear,
tint: AnyShapeStyle(Color.green),
trackColor: AnyShapeStyle(Color.gray),
trackHeight: 4,
trackShadow: .init(
color: .black.opacity(0.25),
radius: 4,
x: 0,
y: 2
),
padding: EdgeInsets(
top: 6,
leading: 8,
bottom: 6,
trailing: 8
)
),
container: .init(
background: AnyShapeStyle(.regularMaterial),
backgroundImage: Image(.progressBgImg),
cornerRadius: 16,
borderColor: .accentColor,
borderWidth: 1,
glassStyle: .ultraThin,
glassColors: [
Color.red.opacity(0.3),
Color.orange.opacity(0.1)
],
shadow: .init(
color: .black.opacity(0.25),
radius: 4,
x: 0,
y: 2
)
),
capsule: .init(
background: AnyShapeStyle(.ultraThinMaterial),
backgroundImage: Image(.progressBgImg),
border: .init(
color: AnyShapeStyle(Color.accentColor.opacity(0.3)),
width: 1
),
glassStyle: .ultraThin,
glassColors: [
Color.red.opacity(0.3),
Color.orange.opacity(0.1)
],
padding: EdgeInsets(top: 4, leading: 6, bottom: 4, trailing: 6),
shadow: .init(
color: .black.opacity(0.25),
radius: 4,
x: 0,
y: 2
)
),
customSettings: .init(
contentSpacing: 10,
progressContainerHeight: 25,
circularScale: 0,
circularContainerSize: nil
),
topDivider: .init(
color: .primary,
height: 2,
padding: EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0)
),
bottomDivider: .init(
color: .primary,
height: 2,
padding: EdgeInsets(top: 0, leading: 0, bottom: 0, trailing: 0)
),
animation: .easeInOut(duration: 0.25)
)
.padding()
}
}Components
- Progress indicators
- Reusable UI primitives
Demo Video
Here’s a quick demo of the SolidProgress view in action:
<video src="Assets/Video/Progress_demo.mp4" width="600" controls></video>
Demo Screenshots
Here’s a preview of the SolidProgress component in action:
[SolidProgress Demo 1] [SolidProgress Demo 2] [SolidProgress Demo 3] [SolidProgress Demo 4] [SolidProgress Demo 5] [SolidProgress Demo 6]
Why SolidDS?
SolidDS helps you build consistent SwiftUI apps faster by providing ready-to-use components with flexible APIs and sensible defaults.
It’s designed to scale from simple apps to full design systems.
Package Metadata
Repository: nikolaiborisov/solidds
Default branch: main
README: README.md