Awesome
<!-- This source file is part of the Stanford Spezi open-source project. SPDX-FileCopyrightText: 2022 Stanford University and the project authors (see CONTRIBUTORS.md) SPDX-License-Identifier: MIT -->Spezi Onboarding
Provides UI components for onboarding and consent.
Overview
The Spezi Onboarding module provides user interface components to onboard a user to an application, including the possibility of retrieving consent for study participation.
OnboardingView | SequentialOnboardingView | OnboardingConsentView |
Setup
Add Spezi Onboarding as a Dependency
You need to add the Spezi Onboarding Swift package to your app in Xcode or Swift package.
Examples
Onboarding View
The OnboardingView
allows you to separate information into areas on a screen, each with a title, description, and icon.
import SpeziOnboarding
import SwiftUI
struct OnboardingViewExample: View {
var body: some View {
OnboardingView(
title: "Welcome",
subtitle: "This is an example onboarding view",
areas: [
.init(
icon: Image(systemName: "tortoise.fill"),
title: "Tortoise",
description: "A Tortoise!"
),
.init(
icon: {
Image(systemName: "lizard.fill")
.foregroundColor(.green)
},
title: "Lizard",
description: "A Lizard!"
),
.init(
icon: {
Circle().fill(.orange)
},
title: "Circle",
description: "A Circle!"
)
],
actionText: "Learn More",
action: {
// Action to perform when the user taps the action button.
}
)
}
}
Sequential Onboarding View
The SequentialOnboardingView
allows you to display information step-by-step with each additional area appearing when the user taps the Continue
button.
import SpeziOnboarding
import SwiftUI
struct SequentialOnboardingViewExample: View {
var body: some View {
SequentialOnboardingView(
title: "Things to know",
subtitle: "And you should pay close attention ...",
content: [
.init(
title: "A thing to know",
description: "This is a first thing that you should know; read carefully!"
),
.init(
title: "Second thing to know",
description: "This is a second thing that you should know; read carefully!"
),
.init(
title: "Third thing to know",
description: "This is a third thing that you should know; read carefully!"
)
],
actionText: "Continue"
) {
// Action to perform when the user has viewed all the steps
}
}
}
Onboarding Consent View
The OnboardingConsentView
can be used to allow your users to read and agree to a document, e.g., a consent document for a research study or a terms and conditions document for an app. The document can be signed using a family and given name and a hand-drawn signature. The signed consent form can then be exported and shared as a PDF file.
The following example demonstrates how the OnboardingConsentView
shown above is constructed by providing markdown content encoded as a UTF8 Data
instance (which may be provided asynchronously), an action that should be performed once the consent has been given, as well as a configuration defining the properties of the exported consent form.
import SpeziOnboarding
import SwiftUI
struct ConsentViewExample: View {
var body: some View {
OnboardingConsentView(
markdown: {
Data("This is a *markdown* **example**".utf8)
},
action: {
// Action to perform once the user has given their consent
},
exportConfiguration: .init(paperSize: .usLetter) // Configure the properties of the exported consent form
)
}
}
For more information, please refer to the API documentation.
The Spezi Template Application
The Spezi Template Application provides a great starting point and example using the SpeziOnboarding
module.
Contributing
Contributions to this project are welcome. Please make sure to read the contribution guidelines and the contributor covenant code of conduct first.
License
This project is licensed under the MIT License. See Licenses for more information.