Feedback Components
Components for user feedback, loading states, notifications, and progress indicators. Use these to communicate system status, guide users through processes, and provide clear feedback for actions.
18 components available
DSToast
Non-intrusive notification that appears at the top of the screen. Available as both a standalone component and a .dsToast() view modifier.
DSAlert
Inline alert banner with an icon, title, optional message, and a dismiss button. Non-modal.
DSModal
Centered overlay dialog with a header, scrollable content area, and footer actions. Blocks background interaction.
DSBottomSheet
iOS-native bottom sheet using presentationDetents, with a drag handle and configurable snap points.
DSProgressBar
Linear progress indicator with an optional label and percentage display. Supports indeterminate (loading) mode.
DSSpinner
Circular indeterminate loading indicator with 3 sizes and a colour token.
DSSkeleton
Pulsing placeholder shapes that mimic the layout of content while it loads.
DSTooltip
Small informational popover that appears on long-press (iOS) or hover (macOS). Disappears automatically after a timeout.
DSProgressRing
NewGeneric circular progress ring with gradient support and customizable center content. Foundation for app-specific progress indicators.
DSCircularProgress
NewCircular ring with animated fill showing progress percentage.
DSStarRating
NewDisplay-only star rating showing a value from 0 to 5 stars.
DSStarRatingControl
NewInteractive star rating control allowing users to input ratings from 0 to 5.
DSStepIndicator
NewHorizontal progress bar showing current step in a multi-step process.
DSNoticeBar
NewBanner notice with icon, title, optional message, link, and dismiss button.
DSPageLoader
NewFull-screen loading overlay with centered spinner and optional message.
DSTidbit
NewInline callout card with icon, title, body text, optional button, and dismiss.
DSFullPageInterruption
NewFull-screen modal overlay for critical interruptions like session expiry.
DSSkeletonCard
NewCard-shaped skeleton placeholder with pulsing animation for loading states.
Quick Import Reference
// Package.swift
.package(url: "https://github.com/luizmellodev/SwiftDS-package", from: "2.0.0")
// In any SwiftUI file
import SwiftDS
struct MyView: View {
var body: some View {
VStack(spacing: DSSpacing.md) {
// Use any feedback component here
}
}
}