@@ -151,7 +151,54 @@ suspend fun getData(): Result<Data> = withContext(Dispatchers.IO) {
151151}
152152```
153153
154- ### Rules
154+ ### Sheet Navigation Flows
155+
156+ Each flow has a ROOT route with ` metadata = SheetSceneStrategy.sheet() ` . Sub-routes navigate WITHIN the same sheet (no sheet metadata).
157+
158+ ** Pattern:**
159+
160+ - Root route: Has ` metadata = SheetSceneStrategy.sheet() `
161+ - Sub-routes: No metadata, navigate within the parent sheet
162+
163+ ** Flows:**
164+
165+ 1 . ** Pin Flow** (root: ` Pin.Prompt ` )
166+
167+ - Pin.Prompt → Pin.Choose → Pin.Confirm → Pin.Biometrics → Pin.Result
168+
169+ 2 . ** Backup Flow** (root: ` Backup.Intro ` )
170+
171+ - Backup.Intro → ShowMnemonic → ShowPassphrase → ConfirmMnemonic → ConfirmPassphrase → Warning → Success → MultipleDevices → Metadata
172+
173+ 3 . ** Send Flow** (root: ` Send.Recipient ` )
174+
175+ - Send.Recipient → Address → Amount → QrScanner → CoinSelection → FeeRate → FeeCustom → Confirm → Success/Error
176+ - Also: WithdrawConfirm, WithdrawError, Support, AddTag, PinCheck, QuickPay
177+
178+ 4 . ** Receive Flow** (root: ` Receive.Qr ` )
179+
180+ - Receive.Qr → EditInvoice → AddTag
181+ - Receive.Qr → Amount → Confirm → Liquidity
182+ - Receive.Qr → GeoBlock
183+ - Also: ConfirmInbound, LiquidityAdditional
184+
185+ 5 . ** Gift Flow** (root: ` Gift.Loading ` )
186+
187+ - Gift.Loading → Used/UsedUp/Error/Success
188+
189+ ** Standalone Sheets** (single-screen, each has sheet metadata):
190+
191+ - Activity.DateRangeSelectorSheet
192+ - Activity.TagSelectorSheet
193+ - Sheet.LnurlAuth
194+ - Sheet.ForceTransfer
195+ - Sheet.Update
196+ - Sheet.Backup
197+ - Sheet.Notifications
198+ - Sheet.QuickPay
199+ - Sheet.HighBalance
200+
201+ ## Rules
155202
156203- USE coding rules from ` .cursor/default.rules.mdc `
157204- ALWAYS run ` ./gradlew compileDevDebugKotlin ` after code changes to verify code compiles
0 commit comments