Ios Sheet Presentation
Present a .sheet or .fullScreenCover for a self-contained, discrete task; use .presentationDetents([.medium, .…
$ aoe install @community/pattern-ios-sheet-presentation Projection
Always in _index.xml · the agent never has to ask for this.
IosSheetPresentation [pattern] v1.0.0
Present a .sheet or .fullScreenCover for a self-contained, discrete task; use .presentationDetents([.medium, .large]) for resizable partial-height sheets; always provide a cancel (cancellationAction) and confirm (confirmationAction) toolbar button.
Loaded when retrieval picks the atom as adjacent / supporting.
IosSheetPresentation [pattern] v1.0.0
Present a .sheet or .fullScreenCover for a self-contained, discrete task; use .presentationDetents([.medium, .large]) for resizable partial-height sheets; always provide a cancel (cancellationAction) and confirm (confirmationAction) toolbar button.
Label
iOS Sheet Presentation for Scoped Tasks
Meta
- License: MIT AND Apache-2.0
- License Provenance: legacy-backfill
Problem
Full navigation pushes for short, bounded tasks (compose, filter, detail settings) feel heavy and break the sense of the user's current context.
Solution
Attach .sheet(isPresented:) to the triggering view. Inside the sheet, embed a NavigationStack with a toolbar containing Cancel (dismisses) and Done/Send (confirms). For half-sheet content, add .presentationDetents([.medium, .large]) to allow user resize. Never disable swipe-to-dismiss unless unsaved changes exist — and even then, present a .confirmationDialog.
Loaded when retrieval picks the atom as a focal / direct hit.
IosSheetPresentation [pattern] v1.0.0
Present a .sheet or .fullScreenCover for a self-contained, discrete task; use .presentationDetents([.medium, .large]) for resizable partial-height sheets; always provide a cancel (cancellationAction) and confirm (confirmationAction) toolbar button.
Label
iOS Sheet Presentation for Scoped Tasks
Meta
- License: MIT AND Apache-2.0
- License Provenance: legacy-backfill
Problem
Full navigation pushes for short, bounded tasks (compose, filter, detail settings) feel heavy and break the sense of the user's current context.
Solution
Attach .sheet(isPresented:) to the triggering view. Inside the sheet, embed a NavigationStack with a toolbar containing Cancel (dismisses) and Done/Send (confirms). For half-sheet content, add .presentationDetents([.medium, .large]) to allow user resize. Never disable swipe-to-dismiss unless unsaved changes exist — and even then, present a .confirmationDialog.
Relations
related: [@community/anti-pattern-ios-non-dismissable-modal, @community/anti-pattern-ios-stacked-modals, @community/pattern-ios-navigation-stack, @community/constraint-mobile-touch-target-44px, @community/check-touch-target-min, @community/check-mobile-first, @community/check-focus-visible]
Label
iOS Sheet Presentation for Scoped Tasks
Meta
- License: MIT AND Apache-2.0
- License Provenance: legacy-backfill
Problem
Full navigation pushes for short, bounded tasks (compose, filter, detail settings) feel heavy and break the sense of the user's current context.
Solution
Attach .sheet(isPresented:) to the triggering view. Inside the sheet, embed a NavigationStack with a toolbar containing Cancel (dismisses) and Done/Send (confirms). For half-sheet content, add .presentationDetents([.medium, .large]) to allow user resize. Never disable swipe-to-dismiss unless unsaved changes exist — and even then, present a .confirmationDialog.
Source
aoe-engine/examples/frontend-design/primes/compiled/@community/pattern-ios-sheet-presentation/atom.yaml