Skip to content

Commit

Permalink
Update readme
Browse files Browse the repository at this point in the history
  • Loading branch information
danielsaidi committed Apr 24, 2024
1 parent 06a2f32 commit c646764
Show file tree
Hide file tree
Showing 2 changed files with 111 additions and 5 deletions.
58 changes: 53 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,21 +39,69 @@ https://github.com/danielsaidi/SystemNotification.git

## Getting started

After adding SystemNotification to your project, you can add a system notification to a view hierarchy just as you add a `sheet`, `alert` and `fullScreenModal`:
You can add a system notification to any view just as you add a `sheet`, `alert` and `fullScreenModal`, by using a `.systemNotification` view modifier with a state binding or a `SystemNotificationContext` instance.

State-based notifications take a boolean state binding and a view builder:

```swift
import SystemNotification

struct MyView: View {

@State
var isActive = false

var body: some View {
Text("Hello, world")
.systemNotification(...)
VStack {
Button("Show notification") {
isActive = true
}
}
.systemNotification(isActive: $isActive) {
Text("You can use any custom content view")
.padding()
}
}
}
```

You can use both state- and context and message-based notifications and style your notifications to great extent.
Context-based notifications just take a `SystemNotificationContext` instance and can then show many different notifications with a single modifier:

```swift
import SystemNotification

struct MyView: View {

@StateObject
var notification = SystemNotificationContext()

var body: some View {
VStack {
Button("Show text") {
notification.present {
Text("Context-based notifications are more flexible.")
.padding()
.multilineTextAlignment(.center)
}
}
Button("Show message") {
notification.present {
SystemNotificationMessage(
icon: Text("👍"),
title: "Great job!",
text: "You presented a native-looking message!"
)
}
}
}
.systemNotification(notification)
}
}
```

The `SystemNotificationMessage` view lets you easily mimic a native notification view, with an icon, title and text.

You can use the `.systemNotificationConfiguration` and `.systemNotificationStyle` view modifiers to apply custom configurations and styles, and the `.systemNotificationMessageStyle` to style the message.

For more information, please see the [getting started guide][Getting-Started].

Expand All @@ -67,7 +115,7 @@ The [online documentation][Documentation] has more information, articles, code e

## Demo Application

The demo app lets you explore the library with iOS, macOS, and visionOS. To try it out, just open and run the `Demo` project.
The demo app lets you explore the library. To try it out, just open and run the `Demo` project.



Expand Down
58 changes: 58 additions & 0 deletions Sources/SystemNotification/SystemNotification.swift
Original file line number Diff line number Diff line change
Expand Up @@ -62,6 +62,7 @@ public struct SystemNotification<Content: View>: View {
content(isActive)
.background(style.backgroundColor)
.background(style.backgroundMaterial)
.compositingGroup()
.cornerRadius(style.cornerRadius ?? 1_000)
.shadow(
color: style.shadowColor,
Expand Down Expand Up @@ -215,3 +216,60 @@ private extension SystemNotification {

return Preview()
}

#Preview("README #1") {

struct MyView: View {

@State
var isActive = false

var body: some View {
VStack {
Button("Show notification") {
isActive = true
}
}
.systemNotification(isActive: $isActive) {
Text("You can use any custom content view")
.padding()
}
}
}

return MyView()
}


#Preview("README #2") {

struct MyView: View {

@StateObject
var notification = SystemNotificationContext()

var body: some View {
VStack {
Button("Show text") {
notification.present {
Text("Context-based notifications are more flexible.")
.padding()
.multilineTextAlignment(.center)
}
}
Button("Show message") {
notification.present {
SystemNotificationMessage(
icon: Text("👍"),
title: "Great job!",
text: "You presented a native-looking message!"
)
}
}
}
.systemNotification(notification)
}
}

return MyView()
}

0 comments on commit c646764

Please sign in to comment.