@satinhq/kit 0.0.0-stage → 0.1.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/NOTICE +96 -0
- package/README.md +454 -2
- package/THIRD_PARTY_NOTICES.md +65 -0
- package/bin/satin.mjs +13 -0
- package/dist/acknowledgements/Acknowledgements.d.ts +4 -0
- package/dist/acknowledgements/Acknowledgements.js +42 -0
- package/dist/acknowledgements/bundledNotices.d.ts +4 -0
- package/dist/acknowledgements/bundledNotices.js +58 -0
- package/dist/acknowledgements/inventory.d.ts +17 -0
- package/dist/acknowledgements/inventory.js +10 -0
- package/dist/acknowledgements/inventory.json +39 -0
- package/dist/actions/ActionMenu.d.ts +30 -0
- package/dist/actions/ActionMenu.js +103 -0
- package/dist/actions/RowActions.d.ts +42 -0
- package/dist/actions/RowActions.js +820 -0
- package/dist/actions/contextMotion.d.ts +78 -0
- package/dist/actions/contextMotion.js +329 -0
- package/dist/actions/motion.d.ts +19 -0
- package/dist/actions/motion.js +74 -0
- package/dist/actions/nativeContextAppearance.json +86 -0
- package/dist/actions/nativeContextMotion.json +734 -0
- package/dist/actions/nativeMotion.json +388 -0
- package/dist/actions/preview.d.ts +27 -0
- package/dist/actions/preview.js +217 -0
- package/dist/actions/recognizers.d.ts +24 -0
- package/dist/actions/recognizers.js +87 -0
- package/dist/actions/rowScrub.d.ts +59 -0
- package/dist/actions/rowScrub.js +400 -0
- package/dist/actions/swipeSpring.d.ts +14 -0
- package/dist/actions/swipeSpring.js +35 -0
- package/dist/actions/types.d.ts +71 -0
- package/dist/actions/types.js +28 -0
- package/dist/app/InstallComponents.d.ts +16 -0
- package/dist/app/InstallComponents.js +104 -0
- package/dist/app/InstallationDiagnostics.d.ts +7 -0
- package/dist/app/InstallationDiagnostics.js +23 -0
- package/dist/app/OrientationGuard.d.ts +8 -0
- package/dist/app/OrientationGuard.js +9 -0
- package/dist/app/appearance.d.ts +18 -0
- package/dist/app/appearance.js +15 -0
- package/dist/app/appearanceStore.d.ts +30 -0
- package/dist/app/appearanceStore.js +228 -0
- package/dist/app/backgroundUpdate.d.ts +20 -0
- package/dist/app/backgroundUpdate.js +151 -0
- package/dist/app/buildInfo.d.ts +11 -0
- package/dist/app/buildInfo.js +12 -0
- package/dist/app/buildInfoBuild.d.ts +3 -0
- package/dist/app/buildInfoBuild.js +12 -0
- package/dist/app/checkCli.d.ts +1 -0
- package/dist/app/checkCli.js +73 -0
- package/dist/app/coldLaunchUpdate.d.ts +14 -0
- package/dist/app/coldLaunchUpdate.js +384 -0
- package/dist/app/definition.d.ts +85 -0
- package/dist/app/definition.js +347 -0
- package/dist/app/deployment.d.ts +28 -0
- package/dist/app/deployment.js +352 -0
- package/dist/app/deploymentBuild.d.ts +3 -0
- package/dist/app/deploymentBuild.js +55 -0
- package/dist/app/earlyWorker.d.ts +3 -0
- package/dist/app/earlyWorker.js +77 -0
- package/dist/app/head.d.ts +10 -0
- package/dist/app/head.js +120 -0
- package/dist/app/icons.d.ts +4 -0
- package/dist/app/icons.js +35 -0
- package/dist/app/install.d.ts +18 -0
- package/dist/app/install.js +82 -0
- package/dist/app/installCheck.d.ts +2 -0
- package/dist/app/installCheck.js +148 -0
- package/dist/app/installContext.d.ts +35 -0
- package/dist/app/installContext.js +45 -0
- package/dist/app/installCustom.d.ts +25 -0
- package/dist/app/installCustom.js +55 -0
- package/dist/app/installExperience.d.ts +22 -0
- package/dist/app/installExperience.js +389 -0
- package/dist/app/installExperienceDevice.d.ts +29 -0
- package/dist/app/installExperienceDevice.js +160 -0
- package/dist/app/installExperienceHome.d.ts +16 -0
- package/dist/app/installExperienceHome.js +304 -0
- package/dist/app/installExperienceRuntime.d.ts +37 -0
- package/dist/app/installExperienceRuntime.js +285 -0
- package/dist/app/installPolicy.d.ts +28 -0
- package/dist/app/installPolicy.js +90 -0
- package/dist/app/installQr.d.ts +10 -0
- package/dist/app/installQr.js +139 -0
- package/dist/app/installStrings.d.ts +52 -0
- package/dist/app/installStrings.js +75 -0
- package/dist/app/installTipPath.d.ts +12 -0
- package/dist/app/installTipPath.js +9 -0
- package/dist/app/installationFailure.d.ts +14 -0
- package/dist/app/installationFailure.js +38 -0
- package/dist/app/launch.d.ts +7 -0
- package/dist/app/launch.js +241 -0
- package/dist/app/launchReadiness.d.ts +9 -0
- package/dist/app/launchReadiness.js +72 -0
- package/dist/app/launchScreen.d.ts +16 -0
- package/dist/app/launchScreen.js +14 -0
- package/dist/app/launchScreenRuntime.d.ts +19 -0
- package/dist/app/launchScreenRuntime.js +313 -0
- package/dist/app/launchWatchdog.d.ts +1 -0
- package/dist/app/launchWatchdog.js +202 -0
- package/dist/app/manifests.d.ts +19 -0
- package/dist/app/manifests.js +20 -0
- package/dist/app/mdm.d.ts +3 -0
- package/dist/app/mdm.js +20 -0
- package/dist/app/mediaCheck.d.ts +9 -0
- package/dist/app/mediaCheck.js +122 -0
- package/dist/app/mediaTypes.d.ts +2 -0
- package/dist/app/mediaTypes.js +13 -0
- package/dist/app/platformPolicy.d.ts +3 -0
- package/dist/app/platformPolicy.js +10 -0
- package/dist/app/platformScripts.d.ts +6 -0
- package/dist/app/platformScripts.js +65 -0
- package/dist/app/releaseUpdates.d.ts +7 -0
- package/dist/app/releaseUpdates.js +53 -0
- package/dist/app/runtime.d.ts +9 -0
- package/dist/app/runtime.js +38 -0
- package/dist/app/startup.d.ts +30 -0
- package/dist/app/startup.js +24 -0
- package/dist/app/statusBand.d.ts +11 -0
- package/dist/app/statusBand.js +257 -0
- package/dist/app/viewport.d.ts +3 -0
- package/dist/app/viewport.js +42 -0
- package/dist/app/viewportValue.d.ts +5 -0
- package/dist/app/viewportValue.js +14 -0
- package/dist/app/vite.d.ts +27 -0
- package/dist/app/vite.js +440 -0
- package/dist/app/warmImage.d.ts +3 -0
- package/dist/app/warmImage.js +59 -0
- package/dist/content/content.d.ts +153 -0
- package/dist/content/content.js +315 -0
- package/dist/content/layout.d.ts +26 -0
- package/dist/content/layout.js +114 -0
- package/dist/content/scaledMetric.d.ts +3 -0
- package/dist/content/scaledMetric.js +68 -0
- package/dist/content/typography.d.ts +83 -0
- package/dist/content/typography.js +32 -0
- package/dist/controls/ActivityIndicatorSegments.d.ts +4 -0
- package/dist/controls/ActivityIndicatorSegments.js +5 -0
- package/dist/controls/ColorPicker.d.ts +20 -0
- package/dist/controls/ColorPicker.js +70 -0
- package/dist/controls/ControlRow.d.ts +5 -0
- package/dist/controls/ControlRow.js +10 -0
- package/dist/controls/DatePicker.d.ts +41 -0
- package/dist/controls/DatePicker.js +148 -0
- package/dist/controls/ProgressView.d.ts +17 -0
- package/dist/controls/ProgressView.js +24 -0
- package/dist/controls/civilDate.d.ts +49 -0
- package/dist/controls/civilDate.js +112 -0
- package/dist/data/database.d.ts +154 -0
- package/dist/data/database.js +710 -0
- package/dist/data/value-equal.d.ts +2 -0
- package/dist/data/value-equal.js +36 -0
- package/dist/data/write-store.d.ts +38 -0
- package/dist/data/write-store.js +192 -0
- package/dist/dev-menu/DevMenu.d.ts +1 -0
- package/dist/dev-menu/DevMenu.js +121 -0
- package/dist/dev-menu/actions.d.ts +12 -0
- package/dist/dev-menu/actions.js +99 -0
- package/dist/dev-menu/build.d.ts +5 -0
- package/dist/dev-menu/build.js +40 -0
- package/dist/dev-menu/gesture.d.ts +18 -0
- package/dist/dev-menu/gesture.js +109 -0
- package/dist/dev-menu/shake.d.ts +2 -0
- package/dist/dev-menu/shake.js +36 -0
- package/dist/dev-menu/types.d.ts +8 -0
- package/dist/dev-menu/types.js +1 -0
- package/dist/diagnostics.d.ts +3 -0
- package/dist/diagnostics.js +4 -0
- package/dist/docs/app-recipes.md +411 -0
- package/dist/docs/components/file-importer.md +54 -0
- package/dist/docs/components/paste-button.md +48 -0
- package/dist/docs/components/photos-picker.md +53 -0
- package/dist/docs/components/share-link.md +58 -0
- package/dist/docs/content.md +159 -0
- package/dist/docs/controls.md +151 -0
- package/dist/docs/data.md +332 -0
- package/dist/docs/limitations.md +40 -0
- package/dist/docs/messaging-scroll.md +234 -0
- package/dist/docs/networking.md +190 -0
- package/dist/docs/push.md +215 -0
- package/dist/docs/swiftui-reference.md +1895 -0
- package/dist/docs/symbols.md +293 -0
- package/dist/docs/tokens.md +60 -0
- package/dist/fidelity/devAssertions.d.ts +21 -0
- package/dist/fidelity/devAssertions.js +199 -0
- package/dist/focus/focusIntentMachine.d.ts +106 -0
- package/dist/focus/focusIntentMachine.js +359 -0
- package/dist/focus/navigationFocus.d.ts +42 -0
- package/dist/focus/navigationFocus.js +241 -0
- package/dist/focus/programmaticFocus.d.ts +15 -0
- package/dist/focus/programmaticFocus.js +152 -0
- package/dist/gestures/GestureView.d.ts +12 -0
- package/dist/gestures/GestureView.js +321 -0
- package/dist/gestures/arena.d.ts +138 -0
- package/dist/gestures/arena.js +417 -0
- package/dist/gestures/existingCompetitors.d.ts +79 -0
- package/dist/gestures/existingCompetitors.js +82 -0
- package/dist/gestures/gesture.d.ts +62 -0
- package/dist/gestures/gesture.js +107 -0
- package/dist/glass/ControlLens.d.ts +46 -0
- package/dist/glass/ControlLens.js +88 -0
- package/dist/glass/GlassBar.d.ts +9 -0
- package/dist/glass/GlassBar.js +22 -0
- package/dist/glass/GlassConfusionReview.d.ts +3 -0
- package/dist/glass/GlassConfusionReview.js +185 -0
- package/dist/glass/GlassEffect.d.ts +69 -0
- package/dist/glass/GlassEffect.js +550 -0
- package/dist/glass/GlassMaterialRoot.d.ts +7 -0
- package/dist/glass/GlassMaterialRoot.js +39 -0
- package/dist/glass/GlassPresentation.d.ts +28 -0
- package/dist/glass/GlassPresentation.js +1038 -0
- package/dist/glass/GlassProbeIcons.d.ts +8 -0
- package/dist/glass/GlassProbeIcons.js +12 -0
- package/dist/glass/GlassProbeOverlay.d.ts +52 -0
- package/dist/glass/GlassProbeOverlay.js +45 -0
- package/dist/glass/GlassTextField.d.ts +22 -0
- package/dist/glass/GlassTextField.js +12 -0
- package/dist/glass/MaterialEffectRoot.d.ts +9 -0
- package/dist/glass/MaterialEffectRoot.js +189 -0
- package/dist/glass/Menu.d.ts +3 -0
- package/dist/glass/Menu.js +35 -0
- package/dist/glass/MenuStack.d.ts +23 -0
- package/dist/glass/MenuStack.js +371 -0
- package/dist/glass/MenuSymbol.d.ts +7 -0
- package/dist/glass/MenuSymbol.js +16 -0
- package/dist/glass/MorphEllipsisArtwork.d.ts +2 -0
- package/dist/glass/MorphEllipsisArtwork.js +6 -0
- package/dist/glass/TabBar.d.ts +29 -0
- package/dist/glass/TabBar.js +169 -0
- package/dist/glass/capability.d.ts +25 -0
- package/dist/glass/capability.js +63 -0
- package/dist/glass/captureWindow.d.ts +60 -0
- package/dist/glass/captureWindow.js +119 -0
- package/dist/glass/confusionSession.d.ts +41 -0
- package/dist/glass/confusionSession.js +44 -0
- package/dist/glass/contactPhysics.d.ts +130 -0
- package/dist/glass/contactPhysics.js +214 -0
- package/dist/glass/context.d.ts +37 -0
- package/dist/glass/context.js +11 -0
- package/dist/glass/errorAlert.d.ts +6 -0
- package/dist/glass/errorAlert.js +57 -0
- package/dist/glass/errors.d.ts +22 -0
- package/dist/glass/errors.js +78 -0
- package/dist/glass/failurePolicy.d.ts +4 -0
- package/dist/glass/failurePolicy.js +20 -0
- package/dist/glass/fallback/material.d.ts +16 -0
- package/dist/glass/fallback/material.js +87 -0
- package/dist/glass/fallback/regions.d.ts +16 -0
- package/dist/glass/fallback/regions.js +249 -0
- package/dist/glass/fallback/runtime.d.ts +72 -0
- package/dist/glass/fallback/runtime.js +278 -0
- package/dist/glass/fallback/selection.d.ts +2 -0
- package/dist/glass/fallback/selection.js +9 -0
- package/dist/glass/fieldGeometry.d.ts +28 -0
- package/dist/glass/fieldGeometry.js +64 -0
- package/dist/glass/fieldMotion.d.ts +42 -0
- package/dist/glass/fieldMotion.js +47 -0
- package/dist/glass/glassContact.d.ts +76 -0
- package/dist/glass/glassContact.js +153 -0
- package/dist/glass/glassProbeSettings.d.ts +18 -0
- package/dist/glass/glassProbeSettings.js +133 -0
- package/dist/glass/lens/Scene.d.ts +108 -0
- package/dist/glass/lens/Scene.js +553 -0
- package/dist/glass/lens/backgrounds.json +103 -0
- package/dist/glass/lens/bitmapBackdrop.d.ts +14 -0
- package/dist/glass/lens/bitmapBackdrop.js +35 -0
- package/dist/glass/lens/controlLift.d.ts +94 -0
- package/dist/glass/lens/controlLift.js +78 -0
- package/dist/glass/lens/data.d.ts +19 -0
- package/dist/glass/lens/data.js +161 -0
- package/dist/glass/lens/drawableTop.d.ts +16 -0
- package/dist/glass/lens/drawableTop.js +15 -0
- package/dist/glass/lens/icons.d.ts +9 -0
- package/dist/glass/lens/icons.js +34 -0
- package/dist/glass/lens/interactiveContact.d.ts +33 -0
- package/dist/glass/lens/interactiveContact.js +158 -0
- package/dist/glass/lens/interactivePress.d.ts +95 -0
- package/dist/glass/lens/interactivePress.js +169 -0
- package/dist/glass/lens/ios27GlyphFit.json +126 -0
- package/dist/glass/lens/lensLightingSamples.json +1 -0
- package/dist/glass/lens/lensPress.d.ts +22 -0
- package/dist/glass/lens/lensPress.js +68 -0
- package/dist/glass/lens/lensPressSamples.json +1 -0
- package/dist/glass/lens/liquidMotion.d.ts +50 -0
- package/dist/glass/lens/liquidMotion.js +239 -0
- package/dist/glass/lens/materialGlassRecipes.json +776 -0
- package/dist/glass/lens/materialUniforms.d.ts +22 -0
- package/dist/glass/lens/materialUniforms.js +117 -0
- package/dist/glass/lens/menu-closing-close-fit.json +380 -0
- package/dist/glass/lens/menu-opening-native-fits.json +911 -0
- package/dist/glass/lens/menuContextFit.json +88 -0
- package/dist/glass/lens/menuContextOpacity.json +98 -0
- package/dist/glass/lens/menuContextPresentation.d.ts +15 -0
- package/dist/glass/lens/menuContextPresentation.js +65 -0
- package/dist/glass/lens/menuCornerFit.json +252 -0
- package/dist/glass/lens/menuCornerMotion.d.ts +9 -0
- package/dist/glass/lens/menuCornerMotion.js +5 -0
- package/dist/glass/lens/menuDropFit.json +64 -0
- package/dist/glass/lens/menuField.d.ts +178 -0
- package/dist/glass/lens/menuField.js +564 -0
- package/dist/glass/lens/menuGesturePresentation.d.ts +12 -0
- package/dist/glass/lens/menuGesturePresentation.js +42 -0
- package/dist/glass/lens/menuGlyphDropFit.json +38 -0
- package/dist/glass/lens/menuMorphFit.json +564 -0
- package/dist/glass/lens/menuMorphMotion.d.ts +70 -0
- package/dist/glass/lens/menuMorphMotion.js +219 -0
- package/dist/glass/lens/menuMorphPhoneFit.json +85 -0
- package/dist/glass/lens/menuMotion.d.ts +81 -0
- package/dist/glass/lens/menuMotion.js +323 -0
- package/dist/glass/lens/menuPlacement.d.ts +5 -0
- package/dist/glass/lens/menuPlacement.js +29 -0
- package/dist/glass/lens/menuSpring.d.ts +18 -0
- package/dist/glass/lens/menuSpring.js +29 -0
- package/dist/glass/lens/menuTouchLight.d.ts +13 -0
- package/dist/glass/lens/menuTouchLight.js +147 -0
- package/dist/glass/lens/mirrorConstants.d.ts +1 -0
- package/dist/glass/lens/mirrorConstants.js +2 -0
- package/dist/glass/lens/mirrorExtents.d.ts +52 -0
- package/dist/glass/lens/mirrorExtents.js +264 -0
- package/dist/glass/lens/mirrorInvalidation.d.ts +6 -0
- package/dist/glass/lens/mirrorInvalidation.js +10 -0
- package/dist/glass/lens/mirrorReuse.d.ts +20 -0
- package/dist/glass/lens/mirrorReuse.js +166 -0
- package/dist/glass/lens/motion.d.ts +62 -0
- package/dist/glass/lens/motion.js +93 -0
- package/dist/glass/lens/recordedMotion.d.ts +6 -0
- package/dist/glass/lens/recordedMotion.js +44 -0
- package/dist/glass/lens/referenceBackground.d.ts +9 -0
- package/dist/glass/lens/referenceBackground.js +151 -0
- package/dist/glass/lens/referenceProfiles.d.ts +21 -0
- package/dist/glass/lens/referenceProfiles.js +33 -0
- package/dist/glass/lens/referenceRegularTint.d.ts +12 -0
- package/dist/glass/lens/referenceRegularTint.js +41 -0
- package/dist/glass/lens/scopeSegments.d.ts +12 -0
- package/dist/glass/lens/scopeSegments.js +18 -0
- package/dist/glass/lens/scrollAnchoring.d.ts +15 -0
- package/dist/glass/lens/scrollAnchoring.js +17 -0
- package/dist/glass/lens/selectionParameters.json +94 -0
- package/dist/glass/lens/shapeParameters.json +198 -0
- package/dist/glass/lens/tab-motion-native-fits.json +778 -0
- package/dist/glass/lens/tabAccessoryMotion.d.ts +52 -0
- package/dist/glass/lens/tabAccessoryMotion.js +52 -0
- package/dist/glass/lens/tabChromaRimModel.d.ts +43 -0
- package/dist/glass/lens/tabChromaRimModel.js +93 -0
- package/dist/glass/lens/tabCollapseInkSamples.json +49 -0
- package/dist/glass/lens/tabCompactGesture.d.ts +15 -0
- package/dist/glass/lens/tabCompactGesture.js +50 -0
- package/dist/glass/lens/tabGeometryAttack.json +70 -0
- package/dist/glass/lens/tabGlyphColours.d.ts +17 -0
- package/dist/glass/lens/tabGlyphColours.js +37 -0
- package/dist/glass/lens/tabInterruptedDecaySamples.json +245 -0
- package/dist/glass/lens/tabInterruptedRestoreSamples.json +290 -0
- package/dist/glass/lens/tabMaterialModel.d.ts +10 -0
- package/dist/glass/lens/tabMaterialModel.js +108 -0
- package/dist/glass/lens/tabMinimizeInk.d.ts +15 -0
- package/dist/glass/lens/tabMinimizeInk.js +14 -0
- package/dist/glass/lens/tabMinimizeMotion.d.ts +36 -0
- package/dist/glass/lens/tabMinimizeMotion.js +107 -0
- package/dist/glass/lens/tabMinimizeSamples.json +411 -0
- package/dist/glass/lens/tabMotion.d.ts +91 -0
- package/dist/glass/lens/tabMotion.js +478 -0
- package/dist/glass/lens/tabMotionFit.d.ts +76 -0
- package/dist/glass/lens/tabMotionFit.js +61 -0
- package/dist/glass/lens/tabNativeSymbols.d.ts +1 -0
- package/dist/glass/lens/tabNativeSymbols.js +7 -0
- package/dist/glass/lens/tabPresentation.d.ts +21 -0
- package/dist/glass/lens/tabPresentation.js +20 -0
- package/dist/glass/lens/tabRelease.d.ts +5 -0
- package/dist/glass/lens/tabRelease.js +14 -0
- package/dist/glass/lens/tabRestoreMotion.d.ts +19 -0
- package/dist/glass/lens/tabRestoreMotion.js +65 -0
- package/dist/glass/lens/tabRestoreSamples.json +1272 -0
- package/dist/glass/lens/tabSearchMember.d.ts +38 -0
- package/dist/glass/lens/tabSearchMember.js +74 -0
- package/dist/glass/lens/tabSelectionMaterial.d.ts +20 -0
- package/dist/glass/lens/tabSelectionMaterial.js +23 -0
- package/dist/glass/lens/tabSelectionMeasurements.test-fixture.d.ts +9 -0
- package/dist/glass/lens/tabSelectionMeasurements.test-fixture.js +74 -0
- package/dist/glass/lens/tabSettingsSymbol.d.ts +1 -0
- package/dist/glass/lens/tabSettingsSymbol.js +2 -0
- package/dist/glass/lens/tabShapeResponse.d.ts +7 -0
- package/dist/glass/lens/tabShapeResponse.js +30 -0
- package/dist/glass/lens/theme.d.ts +18 -0
- package/dist/glass/lens/theme.js +40 -0
- package/dist/glass/lens/trace.d.ts +2 -0
- package/dist/glass/lens/trace.js +27 -0
- package/dist/glass/liquidContext.d.ts +31 -0
- package/dist/glass/liquidContext.js +2 -0
- package/dist/glass/menuPanelPlacement.d.ts +51 -0
- package/dist/glass/menuPanelPlacement.js +128 -0
- package/dist/glass/menuPresenter.d.ts +34 -0
- package/dist/glass/menuPresenter.js +983 -0
- package/dist/glass/menuSymbolMasks.d.ts +1 -0
- package/dist/glass/menuSymbolMasks.js +1 -0
- package/dist/glass/menuSymbolTokens.d.ts +22 -0
- package/dist/glass/menuSymbolTokens.js +12 -0
- package/dist/glass/menuTriggerGeometry.d.ts +99 -0
- package/dist/glass/menuTriggerGeometry.js +126 -0
- package/dist/glass/menuTriggerSnapshot.d.ts +77 -0
- package/dist/glass/menuTriggerSnapshot.js +69 -0
- package/dist/glass/menuTypes.d.ts +22 -0
- package/dist/glass/menuTypes.js +1 -0
- package/dist/glass/morphField.d.ts +18 -0
- package/dist/glass/morphField.js +139 -0
- package/dist/glass/presentationFrame.d.ts +43 -0
- package/dist/glass/presentationFrame.js +82 -0
- package/dist/glass/pressHighlight.d.ts +9 -0
- package/dist/glass/pressHighlight.js +158 -0
- package/dist/glass/regionRegistry.d.ts +93 -0
- package/dist/glass/regionRegistry.js +313 -0
- package/dist/glass/regions.d.ts +262 -0
- package/dist/glass/regions.js +147 -0
- package/dist/glass/regularMaterialContext.d.ts +45 -0
- package/dist/glass/regularMaterialContext.js +118 -0
- package/dist/glass/regularTriggerMaterial.d.ts +19 -0
- package/dist/glass/regularTriggerMaterial.js +111 -0
- package/dist/glass/regularTriggerRim.d.ts +163 -0
- package/dist/glass/regularTriggerRim.js +436 -0
- package/dist/glass/renderSpecs.d.ts +454 -0
- package/dist/glass/renderSpecs.js +231 -0
- package/dist/glass/rendererContract.d.ts +205 -0
- package/dist/glass/rendererContract.js +18 -0
- package/dist/glass/shapeTrack.d.ts +53 -0
- package/dist/glass/shapeTrack.js +74 -0
- package/dist/glass/shapeTrackRegistry.d.ts +40 -0
- package/dist/glass/shapeTrackRegistry.js +49 -0
- package/dist/glass/sourceDamage.d.ts +6 -0
- package/dist/glass/sourceDamage.js +8 -0
- package/dist/glass/submenuMotion.d.ts +205 -0
- package/dist/glass/submenuMotion.js +306 -0
- package/dist/glass/tabBarModel.d.ts +12 -0
- package/dist/glass/tabBarModel.js +32 -0
- package/dist/glass/testing.d.ts +14 -0
- package/dist/glass/testing.js +14 -0
- package/dist/glass/tokens.d.ts +79 -0
- package/dist/glass/tokens.js +86 -0
- package/dist/glass/toolbarMaterialContext.d.ts +28 -0
- package/dist/glass/toolbarMaterialContext.js +66 -0
- package/dist/glass/topLayer.d.ts +5 -0
- package/dist/glass/topLayer.js +10 -0
- package/dist/glass/unionOutline.d.ts +11 -0
- package/dist/glass/unionOutline.js +98 -0
- package/dist/glass/visibleDeadline.d.ts +21 -0
- package/dist/glass/visibleDeadline.js +61 -0
- package/dist/glass/webgpu/accessoryMorph.d.ts +99 -0
- package/dist/glass/webgpu/accessoryMorph.js +473 -0
- package/dist/glass/webgpu/accessoryTrack.d.ts +47 -0
- package/dist/glass/webgpu/accessoryTrack.js +59 -0
- package/dist/glass/webgpu/areaMips.d.ts +50 -0
- package/dist/glass/webgpu/areaMips.js +166 -0
- package/dist/glass/webgpu/backdrop.d.ts +86 -0
- package/dist/glass/webgpu/backdrop.js +243 -0
- package/dist/glass/webgpu/backdropLayers.d.ts +29 -0
- package/dist/glass/webgpu/backdropLayers.js +182 -0
- package/dist/glass/webgpu/backgroundLayers.d.ts +71 -0
- package/dist/glass/webgpu/backgroundLayers.js +385 -0
- package/dist/glass/webgpu/cadence.d.ts +18 -0
- package/dist/glass/webgpu/cadence.js +35 -0
- package/dist/glass/webgpu/canvasSubmission.d.ts +6 -0
- package/dist/glass/webgpu/canvasSubmission.js +22 -0
- package/dist/glass/webgpu/capture.d.ts +77 -0
- package/dist/glass/webgpu/capture.js +534 -0
- package/dist/glass/webgpu/captureBands.d.ts +39 -0
- package/dist/glass/webgpu/captureBands.js +53 -0
- package/dist/glass/webgpu/captureContext.d.ts +1 -0
- package/dist/glass/webgpu/captureContext.js +6 -0
- package/dist/glass/webgpu/captureDemand.d.ts +44 -0
- package/dist/glass/webgpu/captureDemand.js +81 -0
- package/dist/glass/webgpu/captureRelease.d.ts +18 -0
- package/dist/glass/webgpu/captureRelease.js +39 -0
- package/dist/glass/webgpu/client.d.ts +49 -0
- package/dist/glass/webgpu/client.js +336 -0
- package/dist/glass/webgpu/contextBackdrop.d.ts +6 -0
- package/dist/glass/webgpu/contextBackdrop.js +13 -0
- package/dist/glass/webgpu/contextComposite.d.ts +64 -0
- package/dist/glass/webgpu/contextComposite.js +66 -0
- package/dist/glass/webgpu/decodedImage.d.ts +1 -0
- package/dist/glass/webgpu/decodedImage.js +2 -0
- package/dist/glass/webgpu/deviceLimits.d.ts +5 -0
- package/dist/glass/webgpu/deviceLimits.js +8 -0
- package/dist/glass/webgpu/edgePass.d.ts +9 -0
- package/dist/glass/webgpu/edgePass.js +170 -0
- package/dist/glass/webgpu/entry.worker.d.ts +1 -0
- package/dist/glass/webgpu/entry.worker.js +28 -0
- package/dist/glass/webgpu/errorCode.d.ts +3 -0
- package/dist/glass/webgpu/errorCode.js +27 -0
- package/dist/glass/webgpu/errors.d.ts +8 -0
- package/dist/glass/webgpu/errors.js +55 -0
- package/dist/glass/webgpu/fieldInk.d.ts +9 -0
- package/dist/glass/webgpu/fieldInk.js +62 -0
- package/dist/glass/webgpu/foreground.d.ts +29 -0
- package/dist/glass/webgpu/foreground.js +313 -0
- package/dist/glass/webgpu/frameClock.d.ts +34 -0
- package/dist/glass/webgpu/frameClock.js +60 -0
- package/dist/glass/webgpu/frameGraph.d.ts +57 -0
- package/dist/glass/webgpu/frameGraph.js +287 -0
- package/dist/glass/webgpu/frameProbe.d.ts +58 -0
- package/dist/glass/webgpu/frameProbe.js +181 -0
- package/dist/glass/webgpu/interactionProfiles.d.ts +10 -0
- package/dist/glass/webgpu/interactionProfiles.js +25 -0
- package/dist/glass/webgpu/keptGlyphs.d.ts +68 -0
- package/dist/glass/webgpu/keptGlyphs.js +85 -0
- package/dist/glass/webgpu/keyboardBackdrop.d.ts +12 -0
- package/dist/glass/webgpu/keyboardBackdrop.js +51 -0
- package/dist/glass/webgpu/lagTrace.d.ts +31 -0
- package/dist/glass/webgpu/lagTrace.js +22 -0
- package/dist/glass/webgpu/layers.d.ts +100 -0
- package/dist/glass/webgpu/layers.js +301 -0
- package/dist/glass/webgpu/lensDebug.d.ts +4 -0
- package/dist/glass/webgpu/lensDebug.js +28 -0
- package/dist/glass/webgpu/lensDiffusion.d.ts +2 -0
- package/dist/glass/webgpu/lensDiffusion.js +20 -0
- package/dist/glass/webgpu/lensLightingFit.json +222 -0
- package/dist/glass/webgpu/menuLiftInput.d.ts +30 -0
- package/dist/glass/webgpu/menuLiftInput.js +39 -0
- package/dist/glass/webgpu/menuSurfaceGuard.d.ts +17 -0
- package/dist/glass/webgpu/menuSurfaceGuard.js +26 -0
- package/dist/glass/webgpu/minimize.d.ts +184 -0
- package/dist/glass/webgpu/minimize.js +470 -0
- package/dist/glass/webgpu/navigationAtlasCopy.d.ts +12 -0
- package/dist/glass/webgpu/navigationAtlasCopy.js +121 -0
- package/dist/glass/webgpu/navigationTracks.d.ts +3 -0
- package/dist/glass/webgpu/navigationTracks.js +84 -0
- package/dist/glass/webgpu/passes.d.ts +204 -0
- package/dist/glass/webgpu/passes.js +394 -0
- package/dist/glass/webgpu/pendingSurfaceInput.d.ts +29 -0
- package/dist/glass/webgpu/pendingSurfaceInput.js +51 -0
- package/dist/glass/webgpu/preparedSourcePixels.d.ts +21 -0
- package/dist/glass/webgpu/preparedSourcePixels.js +43 -0
- package/dist/glass/webgpu/presentationBackdrop.d.ts +3 -0
- package/dist/glass/webgpu/presentationBackdrop.js +33 -0
- package/dist/glass/webgpu/presentationDiffusion.d.ts +48 -0
- package/dist/glass/webgpu/presentationDiffusion.js +57 -0
- package/dist/glass/webgpu/presentationMaterial.d.ts +9 -0
- package/dist/glass/webgpu/presentationMaterial.js +156 -0
- package/dist/glass/webgpu/presenterViewport.d.ts +11 -0
- package/dist/glass/webgpu/presenterViewport.js +193 -0
- package/dist/glass/webgpu/production.d.ts +552 -0
- package/dist/glass/webgpu/production.js +1929 -0
- package/dist/glass/webgpu/productionInstalls.d.ts +53 -0
- package/dist/glass/webgpu/productionInstalls.js +225 -0
- package/dist/glass/webgpu/productionNavigation.d.ts +5 -0
- package/dist/glass/webgpu/productionNavigation.js +360 -0
- package/dist/glass/webgpu/productionPinnedTop.d.ts +80 -0
- package/dist/glass/webgpu/productionPinnedTop.js +77 -0
- package/dist/glass/webgpu/productionPinnedTopPrepare.d.ts +21 -0
- package/dist/glass/webgpu/productionPinnedTopPrepare.js +132 -0
- package/dist/glass/webgpu/productionPlanes.d.ts +135 -0
- package/dist/glass/webgpu/productionPlanes.js +412 -0
- package/dist/glass/webgpu/productionPrepare.d.ts +18 -0
- package/dist/glass/webgpu/productionPrepare.js +832 -0
- package/dist/glass/webgpu/productionTracks.d.ts +73 -0
- package/dist/glass/webgpu/productionTracks.js +22 -0
- package/dist/glass/webgpu/productionViewport.d.ts +20 -0
- package/dist/glass/webgpu/productionViewport.js +52 -0
- package/dist/glass/webgpu/profile.d.ts +37 -0
- package/dist/glass/webgpu/profile.js +101 -0
- package/dist/glass/webgpu/raster.d.ts +337 -0
- package/dist/glass/webgpu/raster.js +1360 -0
- package/dist/glass/webgpu/rasterMaterial.d.ts +19 -0
- package/dist/glass/webgpu/rasterMaterial.js +197 -0
- package/dist/glass/webgpu/rasterShaders.d.ts +7 -0
- package/dist/glass/webgpu/rasterShaders.js +105 -0
- package/dist/glass/webgpu/rasterUniforms.d.ts +304 -0
- package/dist/glass/webgpu/rasterUniforms.js +415 -0
- package/dist/glass/webgpu/regionBackdrop.d.ts +8 -0
- package/dist/glass/webgpu/regionBackdrop.js +12 -0
- package/dist/glass/webgpu/regionBridge.d.ts +145 -0
- package/dist/glass/webgpu/regionBridge.js +1691 -0
- package/dist/glass/webgpu/regionScene.d.ts +294 -0
- package/dist/glass/webgpu/regionScene.js +2144 -0
- package/dist/glass/webgpu/renderer.d.ts +8 -0
- package/dist/glass/webgpu/renderer.js +1478 -0
- package/dist/glass/webgpu/residentPlanes.d.ts +69 -0
- package/dist/glass/webgpu/residentPlanes.js +104 -0
- package/dist/glass/webgpu/restMaterial.d.ts +6 -0
- package/dist/glass/webgpu/restMaterial.js +65 -0
- package/dist/glass/webgpu/resumeOverlay.d.ts +44 -0
- package/dist/glass/webgpu/resumeOverlay.js +82 -0
- package/dist/glass/webgpu/sampleTrace.d.ts +11 -0
- package/dist/glass/webgpu/sampleTrace.js +50 -0
- package/dist/glass/webgpu/scrollEdgeBackdrop.d.ts +89 -0
- package/dist/glass/webgpu/scrollEdgeBackdrop.js +177 -0
- package/dist/glass/webgpu/scrollEdgePose.d.ts +4 -0
- package/dist/glass/webgpu/scrollEdgePose.js +49 -0
- package/dist/glass/webgpu/selectionThumb.d.ts +81 -0
- package/dist/glass/webgpu/selectionThumb.js +209 -0
- package/dist/glass/webgpu/shaders.d.ts +67 -0
- package/dist/glass/webgpu/shaders.js +595 -0
- package/dist/glass/webgpu/sharedLift.d.ts +7 -0
- package/dist/glass/webgpu/sharedLift.js +223 -0
- package/dist/glass/webgpu/sourcePixels.d.ts +42 -0
- package/dist/glass/webgpu/sourcePixels.js +140 -0
- package/dist/glass/webgpu/sourcePixels.worker.d.ts +1 -0
- package/dist/glass/webgpu/sourcePixels.worker.js +62 -0
- package/dist/glass/webgpu/tabGlyphInk.d.ts +14 -0
- package/dist/glass/webgpu/tabGlyphInk.js +72 -0
- package/dist/glass/webgpu/touchLight.d.ts +4 -0
- package/dist/glass/webgpu/touchLight.js +15 -0
- package/dist/glass/worker/client.d.ts +21 -0
- package/dist/glass/worker/client.js +152 -0
- package/dist/glass/worker/experiment.d.ts +13 -0
- package/dist/glass/worker/experiment.js +221 -0
- package/dist/glass/worker/fixture.d.ts +21 -0
- package/dist/glass/worker/fixture.js +152 -0
- package/dist/glass/worker/protocol.d.ts +439 -0
- package/dist/glass/worker/protocol.js +5 -0
- package/dist/graphicsProbe.d.ts +19 -0
- package/dist/graphicsProbe.js +111 -0
- package/dist/haptics/SensoryButton.d.ts +21 -0
- package/dist/haptics/SensoryButton.js +80 -0
- package/dist/image/ContentAdmission.d.ts +19 -0
- package/dist/image/ContentAdmission.js +70 -0
- package/dist/image/Image.d.ts +30 -0
- package/dist/image/Image.js +341 -0
- package/dist/image/asset.d.ts +9 -0
- package/dist/image/asset.js +1 -0
- package/dist/image/contentReadiness.d.ts +7 -0
- package/dist/image/contentReadiness.js +54 -0
- package/dist/image/imports.d.ts +4 -0
- package/dist/image/resource.d.ts +53 -0
- package/dist/image/resource.js +286 -0
- package/dist/image/vite.d.ts +3 -0
- package/dist/image/vite.js +63 -0
- package/dist/index.d.ts +87 -0
- package/dist/index.js +102 -0
- package/dist/install.d.ts +8 -0
- package/dist/install.js +8 -0
- package/dist/internal.d.ts +96 -0
- package/dist/internal.js +80 -0
- package/dist/keyboard/adapter.d.ts +82 -0
- package/dist/keyboard/adapter.js +727 -0
- package/dist/keyboard/avoidance.d.ts +24 -0
- package/dist/keyboard/avoidance.js +283 -0
- package/dist/keyboard/caretMirror.d.ts +13 -0
- package/dist/keyboard/caretMirror.js +122 -0
- package/dist/keyboard/expectedKeyboard.d.ts +10 -0
- package/dist/keyboard/expectedKeyboard.js +60 -0
- package/dist/keyboard/geometry.d.ts +10 -0
- package/dist/keyboard/geometry.js +21 -0
- package/dist/keyboard/modalTapFocus.d.ts +41 -0
- package/dist/keyboard/modalTapFocus.js +224 -0
- package/dist/keyboard/motion.d.ts +54 -0
- package/dist/keyboard/motion.js +80 -0
- package/dist/keyboard/translation.d.ts +12 -0
- package/dist/keyboard/translation.js +19 -0
- package/dist/layout/adaptiveTabsContext.d.ts +5 -0
- package/dist/layout/adaptiveTabsContext.js +2 -0
- package/dist/layout/deviceIdiom.d.ts +4 -0
- package/dist/layout/deviceIdiom.js +12 -0
- package/dist/layout/layoutClass.d.ts +44 -0
- package/dist/layout/layoutClass.js +102 -0
- package/dist/layout/navigationLayoutContext.d.ts +8 -0
- package/dist/layout/navigationLayoutContext.js +5 -0
- package/dist/list-form/ListForm.d.ts +158 -0
- package/dist/list-form/ListForm.js +427 -0
- package/dist/list-form/ListItem.d.ts +30 -0
- package/dist/list-form/ListItem.js +251 -0
- package/dist/list-form/RowLabel.d.ts +14 -0
- package/dist/list-form/RowLabel.js +11 -0
- package/dist/list-form/Slider.d.ts +18 -0
- package/dist/list-form/Slider.js +235 -0
- package/dist/list-form/StepperButton.d.ts +9 -0
- package/dist/list-form/StepperButton.js +60 -0
- package/dist/list-form/Toggle.d.ts +16 -0
- package/dist/list-form/Toggle.js +204 -0
- package/dist/list-form/editMotion.d.ts +15 -0
- package/dist/list-form/editMotion.js +25 -0
- package/dist/list-form/editing.d.ts +102 -0
- package/dist/list-form/editing.js +51 -0
- package/dist/list-form/listContext.d.ts +4 -0
- package/dist/list-form/listContext.js +5 -0
- package/dist/list-form/offsets.d.ts +26 -0
- package/dist/list-form/offsets.js +34 -0
- package/dist/list-form/reorder.d.ts +20 -0
- package/dist/list-form/reorder.js +193 -0
- package/dist/list-form/rowMotion.d.ts +11 -0
- package/dist/list-form/rowMotion.js +236 -0
- package/dist/list-form/rowMotionScope.d.ts +14 -0
- package/dist/list-form/rowMotionScope.js +61 -0
- package/dist/list-form/separatorInsets.d.ts +4 -0
- package/dist/list-form/separatorInsets.js +87 -0
- package/dist/list-form/sliderContact.d.ts +40 -0
- package/dist/list-form/sliderContact.js +98 -0
- package/dist/list-form/state.d.ts +5 -0
- package/dist/list-form/state.js +8 -0
- package/dist/list-form/toggleContact.d.ts +55 -0
- package/dist/list-form/toggleContact.js +164 -0
- package/dist/media/controller.d.ts +7 -0
- package/dist/media/controller.js +612 -0
- package/dist/media/react.d.ts +9 -0
- package/dist/media/react.js +38 -0
- package/dist/media/systemMedia.d.ts +6 -0
- package/dist/media/systemMedia.js +200 -0
- package/dist/media/types.d.ts +83 -0
- package/dist/media/types.js +1 -0
- package/dist/menu/menuContact.d.ts +20 -0
- package/dist/menu/menuContact.js +286 -0
- package/dist/menu/menuGesture.d.ts +84 -0
- package/dist/menu/menuGesture.js +502 -0
- package/dist/menu/menuInteraction.d.ts +17 -0
- package/dist/menu/menuInteraction.js +34 -0
- package/dist/menu/menuOutside.d.ts +9 -0
- package/dist/menu/menuOutside.js +58 -0
- package/dist/menu/menuPanelContact.d.ts +11 -0
- package/dist/menu/menuPanelContact.js +77 -0
- package/dist/menu/menuTriggerHold.d.ts +3 -0
- package/dist/menu/menuTriggerHold.js +52 -0
- package/dist/menu/sampledMotion.d.ts +37 -0
- package/dist/menu/sampledMotion.js +86 -0
- package/dist/modal/lifecycle.d.ts +10 -0
- package/dist/modal/lifecycle.js +189 -0
- package/dist/motion/TransitionView.d.ts +12 -0
- package/dist/motion/TransitionView.js +118 -0
- package/dist/motion/animate.d.ts +20 -0
- package/dist/motion/animate.js +79 -0
- package/dist/motion/animationValue.d.ts +25 -0
- package/dist/motion/animationValue.js +42 -0
- package/dist/motion/composerMotion.d.ts +3 -0
- package/dist/motion/composerMotion.js +15 -0
- package/dist/motion/layoutTransaction.d.ts +7 -0
- package/dist/motion/layoutTransaction.js +28 -0
- package/dist/motion/matchedGeometry.d.ts +55 -0
- package/dist/motion/matchedGeometry.js +412 -0
- package/dist/motion/springPath.d.ts +27 -0
- package/dist/motion/springPath.js +46 -0
- package/dist/motion/springTrack.d.ts +33 -0
- package/dist/motion/springTrack.js +69 -0
- package/dist/motion/transition.d.ts +48 -0
- package/dist/motion/transition.js +56 -0
- package/dist/motion/transitionImages.d.ts +7 -0
- package/dist/motion/transitionImages.js +49 -0
- package/dist/motionProbe.d.ts +227 -0
- package/dist/motionProbe.js +697 -0
- package/dist/motionProbeControls.d.ts +2 -0
- package/dist/motionProbeControls.js +118 -0
- package/dist/motionProbeDelivery.d.ts +15 -0
- package/dist/motionProbeDelivery.js +84 -0
- package/dist/navigation/DetailList.d.ts +9 -0
- package/dist/navigation/DetailList.js +7 -0
- package/dist/navigation/NavigationChrome.d.ts +18 -0
- package/dist/navigation/NavigationChrome.js +195 -0
- package/dist/navigation/NavigationSearchRow.d.ts +9 -0
- package/dist/navigation/NavigationSearchRow.js +101 -0
- package/dist/navigation/NavigationTitleSlots.d.ts +18 -0
- package/dist/navigation/NavigationTitleSlots.js +64 -0
- package/dist/navigation/NavigatorHost.d.ts +17 -0
- package/dist/navigation/NavigatorHost.js +534 -0
- package/dist/navigation/ScreenContainer.d.ts +31 -0
- package/dist/navigation/ScreenContainer.js +219 -0
- package/dist/navigation/ScrubSourceFrames.d.ts +18 -0
- package/dist/navigation/ScrubSourceFrames.js +67 -0
- package/dist/navigation/Sidebar.d.ts +16 -0
- package/dist/navigation/Sidebar.js +20 -0
- package/dist/navigation/SidebarSymbol.d.ts +4 -0
- package/dist/navigation/SidebarSymbol.js +6 -0
- package/dist/navigation/ToolbarGlass.d.ts +2 -0
- package/dist/navigation/ToolbarGlass.js +429 -0
- package/dist/navigation/TransitionEdge.d.ts +4 -0
- package/dist/navigation/TransitionEdge.js +33 -0
- package/dist/navigation/bottomToolbarGeometry.d.ts +6 -0
- package/dist/navigation/bottomToolbarGeometry.js +14 -0
- package/dist/navigation/chromeCurves.d.ts +48 -0
- package/dist/navigation/chromeCurves.js +255 -0
- package/dist/navigation/glassTransition.d.ts +32 -0
- package/dist/navigation/glassTransition.js +55 -0
- package/dist/navigation/horizontalDrag.d.ts +6 -0
- package/dist/navigation/horizontalDrag.js +15 -0
- package/dist/navigation/interactivePop.d.ts +45 -0
- package/dist/navigation/interactivePop.js +86 -0
- package/dist/navigation/interactivePopTypes.d.ts +85 -0
- package/dist/navigation/interactivePopTypes.js +36 -0
- package/dist/navigation/keyboard.d.ts +9 -0
- package/dist/navigation/keyboard.js +55 -0
- package/dist/navigation/motion.d.ts +19 -0
- package/dist/navigation/motion.js +645 -0
- package/dist/navigation/motionTokens.d.ts +43 -0
- package/dist/navigation/motionTokens.js +75 -0
- package/dist/navigation/nativeScrubExperiment.d.ts +5 -0
- package/dist/navigation/nativeScrubExperiment.js +153 -0
- package/dist/navigation/nativeScrubSource.d.ts +15 -0
- package/dist/navigation/nativeScrubSource.js +88 -0
- package/dist/navigation/navigationChromeModel.d.ts +8 -0
- package/dist/navigation/navigationChromeModel.js +30 -0
- package/dist/navigation/navigationContext.d.ts +22 -0
- package/dist/navigation/navigationContext.js +65 -0
- package/dist/navigation/navigationEdge.d.ts +4 -0
- package/dist/navigation/navigationEdge.js +101 -0
- package/dist/navigation/pointerPop.d.ts +32 -0
- package/dist/navigation/pointerPop.js +206 -0
- package/dist/navigation/probeLayers.d.ts +7 -0
- package/dist/navigation/probeLayers.js +8 -0
- package/dist/navigation/registry.d.ts +14 -0
- package/dist/navigation/registry.js +31 -0
- package/dist/navigation/releaseDecision.d.ts +21 -0
- package/dist/navigation/releaseDecision.js +94 -0
- package/dist/navigation/releaseTrajectory.d.ts +20 -0
- package/dist/navigation/releaseTrajectory.js +95 -0
- package/dist/navigation/releaseVelocity.d.ts +9 -0
- package/dist/navigation/releaseVelocity.js +38 -0
- package/dist/navigation/routeCodec.d.ts +33 -0
- package/dist/navigation/routeCodec.js +123 -0
- package/dist/navigation/scrollEdge.d.ts +18 -0
- package/dist/navigation/scrollEdge.js +66 -0
- package/dist/navigation/scrubFrameLoop.d.ts +44 -0
- package/dist/navigation/scrubFrameLoop.js +129 -0
- package/dist/navigation/sidebarSelection.d.ts +5 -0
- package/dist/navigation/sidebarSelection.js +8 -0
- package/dist/navigation/splitContext.d.ts +17 -0
- package/dist/navigation/splitContext.js +9 -0
- package/dist/navigation/splitState.d.ts +46 -0
- package/dist/navigation/splitState.js +130 -0
- package/dist/navigation/stack.d.ts +25 -0
- package/dist/navigation/stack.js +136 -0
- package/dist/navigation/store.d.ts +80 -0
- package/dist/navigation/store.js +464 -0
- package/dist/navigation/toolbarGlassMotion.d.ts +40 -0
- package/dist/navigation/toolbarGlassMotion.js +202 -0
- package/dist/navigation/toolbarMinimization.d.ts +9 -0
- package/dist/navigation/toolbarMinimization.js +76 -0
- package/dist/navigation/toolbarMotionOwner.d.ts +6 -0
- package/dist/navigation/toolbarMotionOwner.js +30 -0
- package/dist/navigation/touchArbitration.d.ts +34 -0
- package/dist/navigation/touchArbitration.js +550 -0
- package/dist/navigation/tracking.d.ts +7 -0
- package/dist/navigation/tracking.js +19 -0
- package/dist/navigation/transitionBindings.d.ts +31 -0
- package/dist/navigation/transitionBindings.js +106 -0
- package/dist/navigation/transitionChrome.d.ts +31 -0
- package/dist/navigation/transitionChrome.js +380 -0
- package/dist/navigation/transitionPose.d.ts +52 -0
- package/dist/navigation/transitionPose.js +295 -0
- package/dist/navigation/types.d.ts +133 -0
- package/dist/navigation/types.js +1 -0
- package/dist/navigation/zoomDrag.d.ts +3 -0
- package/dist/navigation/zoomDrag.js +125 -0
- package/dist/navigation/zoomGeometry.d.ts +48 -0
- package/dist/navigation/zoomGeometry.js +94 -0
- package/dist/navigation/zoomGlass.d.ts +27 -0
- package/dist/navigation/zoomGlass.js +64 -0
- package/dist/navigation/zoomMotion.d.ts +73 -0
- package/dist/navigation/zoomMotion.js +104 -0
- package/dist/navigation/zoomTransition.d.ts +82 -0
- package/dist/navigation/zoomTransition.js +975 -0
- package/dist/presentation/Presentation.d.ts +61 -0
- package/dist/presentation/Presentation.js +92 -0
- package/dist/presentation/PresentationSurface.d.ts +29 -0
- package/dist/presentation/PresentationSurface.js +586 -0
- package/dist/presentation/PresentedSheet.d.ts +2 -0
- package/dist/presentation/PresentedSheet.js +571 -0
- package/dist/presentation/activity.d.ts +3 -0
- package/dist/presentation/activity.js +24 -0
- package/dist/presentation/coldLaunch.d.ts +2 -0
- package/dist/presentation/coldLaunch.js +19 -0
- package/dist/presentation/dismiss.d.ts +26 -0
- package/dist/presentation/dismiss.js +30 -0
- package/dist/presentation/glassMotion.d.ts +39 -0
- package/dist/presentation/glassMotion.js +259 -0
- package/dist/presentation/glassReady.d.ts +11 -0
- package/dist/presentation/glassReady.js +246 -0
- package/dist/presentation/model.d.ts +108 -0
- package/dist/presentation/model.js +183 -0
- package/dist/presentation/motion.d.ts +56 -0
- package/dist/presentation/motion.js +263 -0
- package/dist/presentation/presentationMotion.d.ts +10 -0
- package/dist/presentation/presentationMotion.js +74 -0
- package/dist/presentation/presentationSource.d.ts +2 -0
- package/dist/presentation/presentationSource.js +28 -0
- package/dist/presentation/sheetChromeContext.d.ts +2 -0
- package/dist/presentation/sheetChromeContext.js +3 -0
- package/dist/presentation/sheetMaterialTransition.d.ts +14 -0
- package/dist/presentation/sheetMaterialTransition.js +33 -0
- package/dist/presentation/sheetReleaseMotion.d.ts +18 -0
- package/dist/presentation/sheetReleaseMotion.js +123 -0
- package/dist/presentation/useAlertKeyboardMotion.d.ts +8 -0
- package/dist/presentation/useAlertKeyboardMotion.js +104 -0
- package/dist/press/Pressable.d.ts +19 -0
- package/dist/press/Pressable.js +16 -0
- package/dist/press/activation.d.ts +20 -0
- package/dist/press/activation.js +28 -0
- package/dist/press/contactReceipt.d.ts +23 -0
- package/dist/press/contactReceipt.js +177 -0
- package/dist/press/gestureArbitration.d.ts +13 -0
- package/dist/press/gestureArbitration.js +38 -0
- package/dist/press/stateMachine.d.ts +29 -0
- package/dist/press/stateMachine.js +39 -0
- package/dist/press/tokens.d.ts +18 -0
- package/dist/press/tokens.js +19 -0
- package/dist/press/usePressInteraction.d.ts +30 -0
- package/dist/press/usePressInteraction.js +247 -0
- package/dist/public/Label.d.ts +16 -0
- package/dist/public/Label.js +40 -0
- package/dist/public/NativeFilePicker.d.ts +19 -0
- package/dist/public/NativeFilePicker.js +75 -0
- package/dist/public/Screen.d.ts +42 -0
- package/dist/public/Screen.js +87 -0
- package/dist/public/actions.d.ts +16 -0
- package/dist/public/actions.js +15 -0
- package/dist/public/buttonBorderShape.d.ts +7 -0
- package/dist/public/buttonBorderShape.js +9 -0
- package/dist/public/chrome.d.ts +3 -0
- package/dist/public/chrome.js +5 -0
- package/dist/public/colors.d.ts +29 -0
- package/dist/public/colors.js +28 -0
- package/dist/public/context.d.ts +19 -0
- package/dist/public/context.js +8 -0
- package/dist/public/controlStyle.d.ts +93 -0
- package/dist/public/controlStyle.js +52 -0
- package/dist/public/controls.d.ts +360 -0
- package/dist/public/controls.js +301 -0
- package/dist/public/definition.d.ts +65 -0
- package/dist/public/definition.js +58 -0
- package/dist/public/deviceActions.d.ts +23 -0
- package/dist/public/deviceActions.js +87 -0
- package/dist/public/environment.d.ts +77 -0
- package/dist/public/environment.js +171 -0
- package/dist/public/fieldContext.d.ts +2 -0
- package/dist/public/fieldContext.js +3 -0
- package/dist/public/filePickers.d.ts +25 -0
- package/dist/public/filePickers.js +11 -0
- package/dist/public/glass.d.ts +31 -0
- package/dist/public/glass.js +29 -0
- package/dist/public/glassValue.d.ts +19 -0
- package/dist/public/glassValue.js +32 -0
- package/dist/public/keyboard.d.ts +4 -0
- package/dist/public/keyboard.js +6 -0
- package/dist/public/navigationTransition.d.ts +48 -0
- package/dist/public/navigationTransition.js +49 -0
- package/dist/public/pickerNavigation.d.ts +7 -0
- package/dist/public/pickerNavigation.js +64 -0
- package/dist/public/presentation.d.ts +40 -0
- package/dist/public/presentation.js +21 -0
- package/dist/public/presentationContext.d.ts +2 -0
- package/dist/public/presentationContext.js +3 -0
- package/dist/public/routeRegistry.d.ts +3 -0
- package/dist/public/routeRegistry.js +10 -0
- package/dist/public/routes.d.ts +74 -0
- package/dist/public/routes.js +105 -0
- package/dist/public/runtime.d.ts +134 -0
- package/dist/public/runtime.js +292 -0
- package/dist/public/screenChrome.d.ts +91 -0
- package/dist/public/screenChrome.js +187 -0
- package/dist/public/scroll.d.ts +38 -0
- package/dist/public/scroll.js +7 -0
- package/dist/public/storage.d.ts +9 -0
- package/dist/public/storage.js +9 -0
- package/dist/public/structure.d.ts +65 -0
- package/dist/public/structure.js +40 -0
- package/dist/public/toolbar.d.ts +37 -0
- package/dist/public/toolbar.js +76 -0
- package/dist/push/PushPermissionExplainer.d.ts +14 -0
- package/dist/push/PushPermissionExplainer.js +30 -0
- package/dist/push/notifications.d.ts +54 -0
- package/dist/push/notifications.js +276 -0
- package/dist/push/routes.d.ts +20 -0
- package/dist/push/routes.js +63 -0
- package/dist/push/schema.d.ts +42 -0
- package/dist/push/schema.js +41 -0
- package/dist/push/urlProjection.d.ts +24 -0
- package/dist/push/urlProjection.js +207 -0
- package/dist/reachability/controller.d.ts +21 -0
- package/dist/reachability/controller.js +202 -0
- package/dist/reachability/model.d.ts +94 -0
- package/dist/reachability/model.js +131 -0
- package/dist/reachability/react.d.ts +29 -0
- package/dist/reachability/react.js +69 -0
- package/dist/restoration/navigation.d.ts +9 -0
- package/dist/restoration/navigation.js +55 -0
- package/dist/restoration/react.d.ts +6 -0
- package/dist/restoration/react.js +21 -0
- package/dist/restoration/routes.d.ts +22 -0
- package/dist/restoration/routes.js +166 -0
- package/dist/restoration/scene.d.ts +44 -0
- package/dist/restoration/scene.js +284 -0
- package/dist/root/SatinRoot.d.ts +25 -0
- package/dist/root/SatinRoot.js +512 -0
- package/dist/root/mountSatin.d.ts +12 -0
- package/dist/root/mountSatin.js +60 -0
- package/dist/root/runtimeContext.d.ts +26 -0
- package/dist/root/runtimeContext.js +30 -0
- package/dist/safe-area/Overlay.d.ts +9 -0
- package/dist/safe-area/Overlay.js +26 -0
- package/dist/safe-area/SafeAreaInset.d.ts +25 -0
- package/dist/safe-area/SafeAreaInset.js +138 -0
- package/dist/safe-area/bottomInsetGeometry.d.ts +12 -0
- package/dist/safe-area/bottomInsetGeometry.js +73 -0
- package/dist/safe-area/context.d.ts +15 -0
- package/dist/safe-area/context.js +8 -0
- package/dist/safe-area/displayCorners.d.ts +21 -0
- package/dist/safe-area/displayCorners.js +70 -0
- package/dist/safe-area/keyboardCarrier.d.ts +26 -0
- package/dist/safe-area/keyboardCarrier.js +394 -0
- package/dist/safe-area/keyboardCarrierGeometry.d.ts +37 -0
- package/dist/safe-area/keyboardCarrierGeometry.js +49 -0
- package/dist/safe-area/modifiers.d.ts +52 -0
- package/dist/safe-area/modifiers.js +86 -0
- package/dist/safe-area/useSafeAreaMetrics.d.ts +83 -0
- package/dist/safe-area/useSafeAreaMetrics.js +367 -0
- package/dist/safe-area/windowChrome.d.ts +7 -0
- package/dist/safe-area/windowChrome.js +14 -0
- package/dist/scroll/RefreshControl.d.ts +8 -0
- package/dist/scroll/RefreshControl.js +135 -0
- package/dist/scroll/ScrollSurface.d.ts +62 -0
- package/dist/scroll/ScrollSurface.js +278 -0
- package/dist/scroll/ScrollTarget.d.ts +6 -0
- package/dist/scroll/ScrollTarget.js +11 -0
- package/dist/scroll/edgePolicy.d.ts +21 -0
- package/dist/scroll/edgePolicy.js +17 -0
- package/dist/scroll/insertionMotion.d.ts +15 -0
- package/dist/scroll/insertionMotion.js +128 -0
- package/dist/scroll/nativeScroll.d.ts +14 -0
- package/dist/scroll/nativeScroll.js +71 -0
- package/dist/scroll/position.d.ts +31 -0
- package/dist/scroll/position.js +273 -0
- package/dist/scroll/pressOwnership.d.ts +4 -0
- package/dist/scroll/pressOwnership.js +65 -0
- package/dist/scroll/refreshMotion.d.ts +9 -0
- package/dist/scroll/refreshMotion.js +15 -0
- package/dist/scroll/refreshable.d.ts +6 -0
- package/dist/scroll/refreshable.js +50 -0
- package/dist/scroll/registry.d.ts +38 -0
- package/dist/scroll/registry.js +261 -0
- package/dist/scroll/screenGeometry.d.ts +8 -0
- package/dist/scroll/screenGeometry.js +50 -0
- package/dist/scroll/scrollIndicator.d.ts +7 -0
- package/dist/scroll/scrollIndicator.js +114 -0
- package/dist/scroll/scrollJump.d.ts +7 -0
- package/dist/scroll/scrollJump.js +16 -0
- package/dist/scroll/types.d.ts +12 -0
- package/dist/scroll/types.js +1 -0
- package/dist/search/SearchDrawer.d.ts +16 -0
- package/dist/search/SearchDrawer.js +421 -0
- package/dist/search/SearchScopesBar.d.ts +6 -0
- package/dist/search/SearchScopesBar.js +12 -0
- package/dist/search/SearchToolbarField.d.ts +8 -0
- package/dist/search/SearchToolbarField.js +115 -0
- package/dist/search/searchBackdrop.d.ts +12 -0
- package/dist/search/searchBackdrop.js +45 -0
- package/dist/search/searchChrome.d.ts +13 -0
- package/dist/search/searchChrome.js +31 -0
- package/dist/search/searchMotion.d.ts +30 -0
- package/dist/search/searchMotion.js +46 -0
- package/dist/search/searchPlacement.d.ts +11 -0
- package/dist/search/searchPlacement.js +15 -0
- package/dist/search/searchable.d.ts +46 -0
- package/dist/search/searchable.js +5 -0
- package/dist/search/useSearchPresentation.d.ts +15 -0
- package/dist/search/useSearchPresentation.js +61 -0
- package/dist/server.d.ts +7 -0
- package/dist/server.js +144 -0
- package/dist/settings/DisclosureIndicator.d.ts +4 -0
- package/dist/settings/DisclosureIndicator.js +6 -0
- package/dist/settings/tokens.d.ts +129 -0
- package/dist/settings/tokens.js +143 -0
- package/dist/shapes/corners.d.ts +14 -0
- package/dist/shapes/corners.js +80 -0
- package/dist/styles.css +9078 -0
- package/dist/styles.css.d.ts +3 -0
- package/dist/sw/activationState.d.ts +20 -0
- package/dist/sw/activationState.js +39 -0
- package/dist/sw/generator.d.ts +14 -0
- package/dist/sw/generator.js +26 -0
- package/dist/sw/manifest.d.ts +32 -0
- package/dist/sw/manifest.js +137 -0
- package/dist/sw/protocol.d.ts +7 -0
- package/dist/sw/protocol.js +7 -0
- package/dist/sw/pushRuntime.d.ts +2 -0
- package/dist/sw/pushRuntime.js +161 -0
- package/dist/sw/registerAppShell.d.ts +25 -0
- package/dist/sw/registerAppShell.js +259 -0
- package/dist/sw/renderServiceWorker.d.ts +10 -0
- package/dist/sw/renderServiceWorker.js +370 -0
- package/dist/sw/requestRouting.d.ts +13 -0
- package/dist/sw/requestRouting.js +26 -0
- package/dist/sw/updateCheck.d.ts +2 -0
- package/dist/sw/updateCheck.js +25 -0
- package/dist/sw/vite.d.ts +20 -0
- package/dist/sw/vite.js +71 -0
- package/dist/symbols/Symbol.d.ts +33 -0
- package/dist/symbols/Symbol.js +59 -0
- package/dist/symbols/catalogue.d.ts +4 -0
- package/dist/symbols/catalogue.js +4139 -0
- package/dist/symbols/exclusions.d.ts +2 -0
- package/dist/symbols/exclusions.js +4 -0
- package/dist/symbols/inheritedWeight.d.ts +3 -0
- package/dist/symbols/inheritedWeight.js +104 -0
- package/dist/symbols/metrics.d.ts +38 -0
- package/dist/symbols/metrics.js +53 -0
- package/dist/symbols/svg.d.ts +3 -0
- package/dist/symbols/svg.js +16 -0
- package/dist/symbols/types.d.ts +30 -0
- package/dist/symbols/types.js +1 -0
- package/dist/tabs/TabSection.d.ts +12 -0
- package/dist/tabs/TabSection.js +4 -0
- package/dist/tabs/TabSidebarSurface.d.ts +7 -0
- package/dist/tabs/TabSidebarSurface.js +29 -0
- package/dist/tabs/TabView.d.ts +28 -0
- package/dist/tabs/TabView.js +258 -0
- package/dist/tabs/accessoryContact.d.ts +2 -0
- package/dist/tabs/accessoryContact.js +42 -0
- package/dist/tabs/compactBar.d.ts +4 -0
- package/dist/tabs/compactBar.js +28 -0
- package/dist/tabs/context.d.ts +8 -0
- package/dist/tabs/context.js +6 -0
- package/dist/tabs/keyboard.d.ts +3 -0
- package/dist/tabs/keyboard.js +23 -0
- package/dist/tabs/model.d.ts +6 -0
- package/dist/tabs/model.js +16 -0
- package/dist/tabs/presentation.d.ts +7 -0
- package/dist/tabs/presentation.js +14 -0
- package/dist/tabs/sourceRevision.d.ts +3 -0
- package/dist/tabs/sourceRevision.js +36 -0
- package/dist/tabs/tabSidebarGlyph.d.ts +2 -0
- package/dist/tabs/tabSidebarGlyph.js +11 -0
- package/dist/tasks/useTask.d.ts +16 -0
- package/dist/tasks/useTask.js +67 -0
- package/dist/testing.d.ts +9 -0
- package/dist/testing.js +11 -0
- package/dist/text-input/TextEditor.d.ts +25 -0
- package/dist/text-input/TextEditor.js +74 -0
- package/dist/text-input/TextField.d.ts +32 -0
- package/dist/text-input/TextField.js +29 -0
- package/dist/text-input/editorGeometry.d.ts +2 -0
- package/dist/text-input/editorGeometry.js +6 -0
- package/dist/text-input/editorTextLayout.d.ts +2 -0
- package/dist/text-input/editorTextLayout.js +31 -0
- package/dist/text-input/focusChain.d.ts +27 -0
- package/dist/text-input/focusChain.js +62 -0
- package/dist/text-input/kinds.d.ts +8 -0
- package/dist/text-input/kinds.js +34 -0
- package/dist/text-input/measureEditor.d.ts +2 -0
- package/dist/text-input/measureEditor.js +50 -0
- package/dist/text-input/submit.d.ts +9 -0
- package/dist/text-input/submit.js +7 -0
- package/dist/unstable.d.ts +16 -0
- package/dist/unstable.js +16 -0
- package/dist/vite.d.ts +3 -0
- package/dist/vite.js +3 -0
- package/dist/web/WebView.d.ts +42 -0
- package/dist/web/WebView.js +115 -0
- package/dist/web/authentication.d.ts +75 -0
- package/dist/web/authentication.js +488 -0
- package/dist/web/openURL.d.ts +37 -0
- package/dist/web/openURL.js +89 -0
- package/dist/web/urlPolicy.d.ts +3 -0
- package/dist/web/urlPolicy.js +19 -0
- package/dist/web/useWebAuthentication.d.ts +3 -0
- package/dist/web/useWebAuthentication.js +6 -0
- package/dist/zoom/Zoomable.d.ts +10 -0
- package/dist/zoom/Zoomable.js +116 -0
- package/dist/zoom/geometry.d.ts +11 -0
- package/dist/zoom/geometry.js +16 -0
- package/package.json +115 -3
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
export const DEV_MENU_HOLD_MS = 1_000;
|
|
2
|
+
export const DEV_MENU_MOVEMENT_PX = 8;
|
|
3
|
+
const JOIN_DEADLINE_MS = 150;
|
|
4
|
+
/** Passive observer. A failed contact sequence stays rejected until every finger lifts. */
|
|
5
|
+
export function createDevMenuGesture(options) {
|
|
6
|
+
const now = options.now ?? (() => performance.now());
|
|
7
|
+
let origins = new Map();
|
|
8
|
+
let firstAt = 0;
|
|
9
|
+
let rejected = false;
|
|
10
|
+
let fired = false;
|
|
11
|
+
let timer;
|
|
12
|
+
const cancel = () => {
|
|
13
|
+
if (timer !== undefined)
|
|
14
|
+
clearTimeout(timer);
|
|
15
|
+
timer = undefined;
|
|
16
|
+
rejected = true;
|
|
17
|
+
};
|
|
18
|
+
const update = (contacts, phase) => {
|
|
19
|
+
if (contacts.length === 0) {
|
|
20
|
+
cancel();
|
|
21
|
+
origins.clear();
|
|
22
|
+
rejected = false;
|
|
23
|
+
fired = false;
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
if (phase === 'cancel' || phase === 'end' || options.blocked() || contacts.length > 2)
|
|
27
|
+
cancel();
|
|
28
|
+
if (rejected || fired)
|
|
29
|
+
return;
|
|
30
|
+
if (origins.size === 0)
|
|
31
|
+
firstAt = now();
|
|
32
|
+
for (const contact of contacts) {
|
|
33
|
+
const origin = origins.get(contact.id);
|
|
34
|
+
if (!origin) {
|
|
35
|
+
if (origins.size && now() - firstAt > JOIN_DEADLINE_MS) {
|
|
36
|
+
cancel();
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
origins.set(contact.id, contact);
|
|
40
|
+
}
|
|
41
|
+
else if (Math.hypot(contact.x - origin.x, contact.y - origin.y) > DEV_MENU_MOVEMENT_PX) {
|
|
42
|
+
cancel();
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
if (origins.size !== contacts.length) {
|
|
47
|
+
cancel();
|
|
48
|
+
return;
|
|
49
|
+
}
|
|
50
|
+
if (contacts.length === 2 && timer === undefined) {
|
|
51
|
+
timer = setTimeout(() => {
|
|
52
|
+
timer = undefined;
|
|
53
|
+
if (rejected || fired)
|
|
54
|
+
return;
|
|
55
|
+
if (options.blocked()) {
|
|
56
|
+
cancel();
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
fired = true;
|
|
60
|
+
options.open();
|
|
61
|
+
}, DEV_MENU_HOLD_MS);
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
return { update, cancel, dispose: cancel };
|
|
65
|
+
}
|
|
66
|
+
export function installDevMenuGesture(open, isOpen) {
|
|
67
|
+
const selectionBlocked = () => {
|
|
68
|
+
const selection = document.getSelection();
|
|
69
|
+
const active = document.activeElement;
|
|
70
|
+
return (isOpen() ||
|
|
71
|
+
document.visibilityState === 'hidden' ||
|
|
72
|
+
Boolean(selection && !selection.isCollapsed) ||
|
|
73
|
+
Boolean(active?.closest('input, textarea, select, [contenteditable]:not([contenteditable="false"])')));
|
|
74
|
+
};
|
|
75
|
+
const recognizer = createDevMenuGesture({ open, blocked: selectionBlocked });
|
|
76
|
+
const touch = (event) => {
|
|
77
|
+
// Exclude selectable/editable roles before native selection can begin.
|
|
78
|
+
if (event.type === 'touchstart' &&
|
|
79
|
+
event
|
|
80
|
+
.composedPath()
|
|
81
|
+
.some(target => target instanceof Element &&
|
|
82
|
+
target.matches('input, textarea, select, [contenteditable]:not([contenteditable="false"]), [data-satin-role="content"]')))
|
|
83
|
+
recognizer.cancel();
|
|
84
|
+
const phase = event.type.slice(5);
|
|
85
|
+
recognizer.update(Array.from(event.touches, contact => ({
|
|
86
|
+
id: contact.identifier,
|
|
87
|
+
x: contact.clientX,
|
|
88
|
+
y: contact.clientY,
|
|
89
|
+
})), phase);
|
|
90
|
+
};
|
|
91
|
+
const cancel = () => recognizer.cancel();
|
|
92
|
+
for (const type of ['touchstart', 'touchmove', 'touchend', 'touchcancel']) {
|
|
93
|
+
document.addEventListener(type, touch, { passive: true, capture: true });
|
|
94
|
+
}
|
|
95
|
+
document.addEventListener('selectionchange', cancel);
|
|
96
|
+
document.addEventListener('visibilitychange', cancel);
|
|
97
|
+
document.addEventListener('scroll', cancel, { passive: true, capture: true });
|
|
98
|
+
window.addEventListener('blur', cancel);
|
|
99
|
+
return () => {
|
|
100
|
+
recognizer.dispose();
|
|
101
|
+
for (const type of ['touchstart', 'touchmove', 'touchend', 'touchcancel']) {
|
|
102
|
+
document.removeEventListener(type, touch, true);
|
|
103
|
+
}
|
|
104
|
+
document.removeEventListener('selectionchange', cancel);
|
|
105
|
+
document.removeEventListener('visibilitychange', cancel);
|
|
106
|
+
document.removeEventListener('scroll', cancel, true);
|
|
107
|
+
window.removeEventListener('blur', cancel);
|
|
108
|
+
};
|
|
109
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/** Permission is requested only inside the menu's explicit button gesture. */
|
|
2
|
+
export async function enableShake(open) {
|
|
3
|
+
if (typeof DeviceMotionEvent === 'undefined')
|
|
4
|
+
throw new Error('Motion events are unavailable.');
|
|
5
|
+
const motion = DeviceMotionEvent;
|
|
6
|
+
if (motion.requestPermission && (await motion.requestPermission()) !== 'granted') {
|
|
7
|
+
throw new Error('Motion permission was denied.');
|
|
8
|
+
}
|
|
9
|
+
let lastPeak = 0;
|
|
10
|
+
let peaks = 0;
|
|
11
|
+
let lastOpen = -Infinity;
|
|
12
|
+
let aboveThreshold = false;
|
|
13
|
+
const onMotion = (event) => {
|
|
14
|
+
const acceleration = event.acceleration;
|
|
15
|
+
if (document.visibilityState === 'hidden' || !acceleration)
|
|
16
|
+
return;
|
|
17
|
+
const magnitude = Math.hypot(acceleration.x ?? 0, acceleration.y ?? 0, acceleration.z ?? 0);
|
|
18
|
+
if (magnitude < 10)
|
|
19
|
+
aboveThreshold = false;
|
|
20
|
+
if (magnitude < 18 || aboveThreshold)
|
|
21
|
+
return;
|
|
22
|
+
aboveThreshold = true;
|
|
23
|
+
const now = performance.now();
|
|
24
|
+
if (now - lastPeak < 100 || now - lastOpen < 2_000)
|
|
25
|
+
return;
|
|
26
|
+
peaks = now - lastPeak < 800 ? peaks + 1 : 1;
|
|
27
|
+
lastPeak = now;
|
|
28
|
+
if (peaks >= 3) {
|
|
29
|
+
peaks = 0;
|
|
30
|
+
lastOpen = now;
|
|
31
|
+
open();
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
window.addEventListener('devicemotion', onMotion);
|
|
35
|
+
return () => window.removeEventListener('devicemotion', onMotion);
|
|
36
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { InstallationDiagnostics, readInstallationFailure, type InstallationDiagnosticsProps, type InstallationFailure, } from './app/InstallationDiagnostics.js';
|
|
2
|
+
export { readAppearanceDiagnostics } from './app/appearance.js';
|
|
3
|
+
export type { AppearanceEvent } from './app/appearanceStore.js';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
// Optional diagnostics for installed-app fixtures and app-authored diagnostic screens.
|
|
2
|
+
// Rendering measurements and coordinate calibration remain in satin/internal.
|
|
3
|
+
export { InstallationDiagnostics, readInstallationFailure, } from './app/InstallationDiagnostics.js';
|
|
4
|
+
export { readAppearanceDiagnostics } from './app/appearance.js';
|
|
@@ -0,0 +1,411 @@
|
|
|
1
|
+
# Application recipes
|
|
2
|
+
|
|
3
|
+
These recipes are starting points for app code, built from the current `@satinhq/kit` exports. Try editing, the keyboard, file picking and layout in the installed app on your target device.
|
|
4
|
+
|
|
5
|
+
## Editing records and retaining failed saves
|
|
6
|
+
|
|
7
|
+
Use a collection for domain records and `useSceneStorage` in the owning primary screen for a recoverable draft. `useSceneStorage<string | null>('draft', null)` accepts transitions between null and strings; the runtime validates JSON serializability, not the initial value's type or nullness. The example below uses an empty string for text editing. Keep record IDs stable. Use a separate collection for drafts that must outlive navigation or belong to a modal editor. Do not rely on modal scene storage to persist them.
|
|
8
|
+
|
|
9
|
+
This complete screen creates, reads, edits and deletes notes. Place it in a registered primary route. Selecting a note copies it into the draft; a query refresh does not overwrite that draft. A failed save leaves the editor intact. A failed delete leaves the list intact and explains the failure. Delete confirmation starts closed.
|
|
10
|
+
|
|
11
|
+
```tsx
|
|
12
|
+
import { useState } from 'react'
|
|
13
|
+
import {
|
|
14
|
+
Button,
|
|
15
|
+
ConfirmationDialog,
|
|
16
|
+
Form,
|
|
17
|
+
Screen,
|
|
18
|
+
Section,
|
|
19
|
+
TextEditor,
|
|
20
|
+
collection,
|
|
21
|
+
defineDatabase,
|
|
22
|
+
newId,
|
|
23
|
+
useQuery,
|
|
24
|
+
useSceneStorage,
|
|
25
|
+
useUnsavedChanges,
|
|
26
|
+
} from '@satinhq/kit'
|
|
27
|
+
|
|
28
|
+
type Note = { id: string; text: string; updatedAt: number }
|
|
29
|
+
const notes = defineDatabase({
|
|
30
|
+
name: 'notes',
|
|
31
|
+
version: 1,
|
|
32
|
+
collections: { notes: collection<Note>({ key: 'id' }) },
|
|
33
|
+
})
|
|
34
|
+
|
|
35
|
+
export function Notes() {
|
|
36
|
+
const result = useQuery(notes.notes)
|
|
37
|
+
const [draft, setDraft] = useSceneStorage('note-draft', '')
|
|
38
|
+
const [editingId, setEditingId] = useSceneStorage('note-id', '')
|
|
39
|
+
const [error, setError] = useState('')
|
|
40
|
+
const [deleteId, setDeleteId] = useState('')
|
|
41
|
+
useUnsavedChanges(draft.length > 0)
|
|
42
|
+
|
|
43
|
+
async function save() {
|
|
44
|
+
if (!draft.trim()) return
|
|
45
|
+
setError('')
|
|
46
|
+
try {
|
|
47
|
+
await notes.notes.put({ id: editingId || newId(), text: draft, updatedAt: Date.now() })
|
|
48
|
+
setDraft('')
|
|
49
|
+
setEditingId('')
|
|
50
|
+
} catch (failure) {
|
|
51
|
+
setError(`Could not save. Your draft is still here. ${String(failure)}`)
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
async function remove(id: string) {
|
|
56
|
+
setError('')
|
|
57
|
+
try {
|
|
58
|
+
await notes.notes.delete(id)
|
|
59
|
+
if (editingId === id) {
|
|
60
|
+
setEditingId('')
|
|
61
|
+
setDraft('')
|
|
62
|
+
}
|
|
63
|
+
} catch (failure) {
|
|
64
|
+
setError(`Could not delete. Try again. ${String(failure)}`)
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
return (
|
|
69
|
+
<Screen title="Notes">
|
|
70
|
+
<Form id="notes">
|
|
71
|
+
<Section header={editingId ? 'Edit note' : 'New note'}>
|
|
72
|
+
<TextEditor label="Note" prompt="Write a note" value={draft} onChange={setDraft} />
|
|
73
|
+
<Button
|
|
74
|
+
disabled={!draft.trim()}
|
|
75
|
+
onPress={() => {
|
|
76
|
+
void save()
|
|
77
|
+
}}
|
|
78
|
+
>
|
|
79
|
+
Save
|
|
80
|
+
</Button>
|
|
81
|
+
{error && <p role="alert">{error}</p>}
|
|
82
|
+
</Section>
|
|
83
|
+
<Section header="Saved notes">
|
|
84
|
+
{result.loading && <p>Loading notes…</p>}
|
|
85
|
+
{result.error && <p role="alert">Could not load notes. {String(result.error)}</p>}
|
|
86
|
+
{!result.loading && !result.error && result.data.length === 0 && <p>No notes yet.</p>}
|
|
87
|
+
{result.data.map(note => (
|
|
88
|
+
<Button
|
|
89
|
+
key={note.id}
|
|
90
|
+
disabled={draft.length > 0}
|
|
91
|
+
onPress={() => {
|
|
92
|
+
setEditingId(note.id)
|
|
93
|
+
setDraft(note.text)
|
|
94
|
+
}}
|
|
95
|
+
swipeActions={{
|
|
96
|
+
edge: 'trailing',
|
|
97
|
+
allowsFullSwipe: false,
|
|
98
|
+
actions: [
|
|
99
|
+
{
|
|
100
|
+
id: 'delete',
|
|
101
|
+
label: 'Delete',
|
|
102
|
+
role: 'destructive',
|
|
103
|
+
onPress: () => setDeleteId(note.id),
|
|
104
|
+
},
|
|
105
|
+
],
|
|
106
|
+
}}
|
|
107
|
+
>
|
|
108
|
+
{note.text}
|
|
109
|
+
</Button>
|
|
110
|
+
))}
|
|
111
|
+
</Section>
|
|
112
|
+
<ConfirmationDialog
|
|
113
|
+
title="Delete note?"
|
|
114
|
+
isPresented={deleteId !== ''}
|
|
115
|
+
onPresentedChange={presented => {
|
|
116
|
+
if (!presented) setDeleteId('')
|
|
117
|
+
}}
|
|
118
|
+
actions={[
|
|
119
|
+
{ id: 'cancel', label: 'Cancel', role: 'cancel' },
|
|
120
|
+
{
|
|
121
|
+
id: 'delete',
|
|
122
|
+
title: 'Delete',
|
|
123
|
+
role: 'destructive',
|
|
124
|
+
onPress: () => {
|
|
125
|
+
const id = deleteId
|
|
126
|
+
setDeleteId('')
|
|
127
|
+
void remove(id)
|
|
128
|
+
},
|
|
129
|
+
},
|
|
130
|
+
]}
|
|
131
|
+
/>
|
|
132
|
+
</Form>
|
|
133
|
+
</Screen>
|
|
134
|
+
)
|
|
135
|
+
}
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
The Edit button is disabled while another draft exists. A production editor can instead offer Save, Discard or Cancel before switching records. Protect dirty drafts before Back or dismiss as well. Collections are durable subject to storage loss; keep external backups for important records.
|
|
139
|
+
|
|
140
|
+
`useQuery` observes local writes immediately, before persistence completes. Changing its configure callback updates the query selection on the next render, so an indexed search can capture the current search value directly. For small lists, subscribing to all records and computing `result.data.filter(...)` during render is also supported. There is no hook `retry` method; remount the query-owning child for a read retry and keep the draft in its parent. Keep loading, read errors and an empty successful result distinct. `useRecord` reads a cached record synchronously when its key changes; an unhydrated source starts loading without the previous record. Wait for a successful read before populating the new editor.
|
|
141
|
+
|
|
142
|
+
## Short sheets with independent navigation
|
|
143
|
+
|
|
144
|
+
Register an editor route and place its `Screen` and named `Form` inside a modal stack. Sheet owns presentation; the modal stack owns its own title, toolbar and scroll context. The primary stack remains outside it.
|
|
145
|
+
|
|
146
|
+
```tsx
|
|
147
|
+
import { useState } from 'react'
|
|
148
|
+
import {
|
|
149
|
+
Button,
|
|
150
|
+
Form,
|
|
151
|
+
NavigationStack,
|
|
152
|
+
Screen,
|
|
153
|
+
Section,
|
|
154
|
+
Sheet,
|
|
155
|
+
TextField,
|
|
156
|
+
defineNavigation,
|
|
157
|
+
defineRoutes,
|
|
158
|
+
route,
|
|
159
|
+
} from '@satinhq/kit'
|
|
160
|
+
|
|
161
|
+
function Editor() {
|
|
162
|
+
const [text, setText] = useState('')
|
|
163
|
+
return (
|
|
164
|
+
<Screen>
|
|
165
|
+
<Form id="sheet-editor">
|
|
166
|
+
<Section>
|
|
167
|
+
<TextField label="Name" prompt="Enter a name" value={text} onChange={setText} />
|
|
168
|
+
</Section>
|
|
169
|
+
</Form>
|
|
170
|
+
</Screen>
|
|
171
|
+
)
|
|
172
|
+
}
|
|
173
|
+
function Home() {
|
|
174
|
+
const [presented, setPresented] = useState(false)
|
|
175
|
+
return (
|
|
176
|
+
<Screen>
|
|
177
|
+
<Form id="home">
|
|
178
|
+
<Section>
|
|
179
|
+
<Button onPress={() => setPresented(true)}>Edit</Button>
|
|
180
|
+
</Section>
|
|
181
|
+
</Form>
|
|
182
|
+
<Sheet
|
|
183
|
+
title="Edit name"
|
|
184
|
+
isPresented={presented}
|
|
185
|
+
onPresentedChange={setPresented}
|
|
186
|
+
detents={['medium', 'large']}
|
|
187
|
+
>
|
|
188
|
+
<NavigationStack modal root="editor" />
|
|
189
|
+
</Sheet>
|
|
190
|
+
</Screen>
|
|
191
|
+
)
|
|
192
|
+
}
|
|
193
|
+
const routes = defineRoutes({
|
|
194
|
+
home: route(Home, { title: 'Home' }),
|
|
195
|
+
editor: route(Editor, { title: 'Edit name', titleDisplay: 'inline' }),
|
|
196
|
+
})
|
|
197
|
+
const navigation = defineNavigation(routes, { stack: { root: 'home' } })
|
|
198
|
+
declare module '@satinhq/kit' {
|
|
199
|
+
interface Register {
|
|
200
|
+
routes: typeof routes
|
|
201
|
+
navigation: typeof navigation
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
export function App() {
|
|
205
|
+
return <NavigationStack />
|
|
206
|
+
}
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Wire Save to an awaited collection write, then request dismissal only after success. Move the draft to a provider owned by Home or to a draft collection when it must recover; the transient editor above only demonstrates title and scroll ownership. Keep it on screen with an error after failed saves. Alert and ConfirmationDialog dismiss before their `onPress` promise settles; they are unsuitable for keeping an asynchronous editor open.
|
|
210
|
+
|
|
211
|
+
## Date, time and duration
|
|
212
|
+
|
|
213
|
+
`DatePicker` provides compact WebKit date/time editors; see [controls](controls.md) for accepted props and range behavior. Graphical calendars, wheel styles and a countdown wheel are unsupported. For explicit calendar-string entry, a labelled `TextField` with `prompt="YYYY-MM-DD"` is another framework-owned option. Validate year, month and day by round-tripping their numeric parts through a UTC date; reject impossible dates rather than letting `Date` normalize them. Store a date-only value as a calendar string, not midnight UTC. For time, use `HH:mm`, validate hours 0–23 and minutes 0–59, and retain the chosen time zone separately. Convert a scheduled local time to a UTC instant on the scheduling backend, with a stated policy for daylight-saving gaps and repeated times.
|
|
214
|
+
|
|
215
|
+
Use the framework control or explicit text validation; do not add a raw-input bridge to conceal unsupported picker styles.
|
|
216
|
+
|
|
217
|
+
```tsx
|
|
218
|
+
import { useState } from 'react'
|
|
219
|
+
import { Form, Section, Stepper } from '@satinhq/kit'
|
|
220
|
+
export function Duration() {
|
|
221
|
+
const [minutes, setMinutes] = useState(15)
|
|
222
|
+
return (
|
|
223
|
+
<Form id="duration">
|
|
224
|
+
<Section>
|
|
225
|
+
<Stepper
|
|
226
|
+
label={`Duration: ${minutes} minutes`}
|
|
227
|
+
value={minutes}
|
|
228
|
+
min={1}
|
|
229
|
+
max={240}
|
|
230
|
+
step={1}
|
|
231
|
+
onChange={setMinutes}
|
|
232
|
+
/>
|
|
233
|
+
</Section>
|
|
234
|
+
</Form>
|
|
235
|
+
)
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Store duration as an integer count of seconds or minutes with an explicit unit. A countdown should derive remaining time from a saved deadline when resumed; a suspended PWA interval is not reliable scheduling.
|
|
240
|
+
|
|
241
|
+
## Progress
|
|
242
|
+
|
|
243
|
+
Use `ProgressView` for determinate work or an indeterminate activity indicator. `null` below means the total is unknown; omit `value` for indeterminate progress. See [controls](controls.md) for style behavior.
|
|
244
|
+
|
|
245
|
+
```tsx
|
|
246
|
+
import { Form, ProgressView, Section } from '@satinhq/kit'
|
|
247
|
+
export function ImportProgress({ fraction }: { fraction: number | null }) {
|
|
248
|
+
const value = fraction === null ? undefined : Math.min(1, Math.max(0, fraction))
|
|
249
|
+
const status = value === undefined ? 'Importing records…' : `Importing records: ${Math.round(value * 100)}%`
|
|
250
|
+
return (
|
|
251
|
+
<Form id="import-progress">
|
|
252
|
+
<Section>
|
|
253
|
+
<ProgressView label={status} aria-label={status} value={value} />
|
|
254
|
+
</Section>
|
|
255
|
+
</Form>
|
|
256
|
+
)
|
|
257
|
+
}
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Reject non-finite fractions at the task boundary. Keep framework styling and motion; use the documented tint and style props. Report meaningful progress changes rather than each animation frame. Determinate progress exposes the clamped value and total through ARIA attributes.
|
|
261
|
+
|
|
262
|
+
## Adaptive lists and full-width dashboards
|
|
263
|
+
|
|
264
|
+
`NavigationStack` always renders one stack. Use `NavigationSplitView` to make the declared root a sidebar at regular width while its pushed destination occupies detail. Compact windows collapse the same path into one stack. The destination's `sidebar` value identifies the selected row. Use the record ID, not a single static value for every detail.
|
|
265
|
+
|
|
266
|
+
```tsx
|
|
267
|
+
import {
|
|
268
|
+
List,
|
|
269
|
+
NavigationLink,
|
|
270
|
+
NavigationSplitView,
|
|
271
|
+
Screen,
|
|
272
|
+
Section,
|
|
273
|
+
defineNavigation,
|
|
274
|
+
defineRoutes,
|
|
275
|
+
param,
|
|
276
|
+
route,
|
|
277
|
+
type RouteParameters,
|
|
278
|
+
} from '@satinhq/kit'
|
|
279
|
+
const detailParams = { id: param.string() }
|
|
280
|
+
const records = [
|
|
281
|
+
{ id: 'one', title: 'First record' },
|
|
282
|
+
{ id: 'two', title: 'Second record' },
|
|
283
|
+
]
|
|
284
|
+
function Home() {
|
|
285
|
+
return (
|
|
286
|
+
<Screen>
|
|
287
|
+
<List id="records">
|
|
288
|
+
<Section>
|
|
289
|
+
{records.map(record => (
|
|
290
|
+
<NavigationLink key={record.id} to="detail" params={{ id: record.id }}>
|
|
291
|
+
{record.title}
|
|
292
|
+
</NavigationLink>
|
|
293
|
+
))}
|
|
294
|
+
</Section>
|
|
295
|
+
</List>
|
|
296
|
+
</Screen>
|
|
297
|
+
)
|
|
298
|
+
}
|
|
299
|
+
function Detail({ id }: RouteParameters<typeof detailParams>) {
|
|
300
|
+
return (
|
|
301
|
+
<Screen>
|
|
302
|
+
<List id={`record-${id}`}>
|
|
303
|
+
<Section>Record {id}</Section>
|
|
304
|
+
</List>
|
|
305
|
+
</Screen>
|
|
306
|
+
)
|
|
307
|
+
}
|
|
308
|
+
const routes = defineRoutes({
|
|
309
|
+
home: route(Home, { title: 'Records' }),
|
|
310
|
+
detail: route(Detail, { params: detailParams, title: 'Record', sidebar: ({ id }) => id }),
|
|
311
|
+
})
|
|
312
|
+
const navigation = defineNavigation(routes, { stack: { root: 'home' } })
|
|
313
|
+
declare module '@satinhq/kit' {
|
|
314
|
+
interface Register {
|
|
315
|
+
routes: typeof routes
|
|
316
|
+
navigation: typeof navigation
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
export function App() {
|
|
320
|
+
return <NavigationSplitView />
|
|
321
|
+
}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
For a dashboard that must remain one full-width stack, render `<NavigationStack />` with the same declaration. No adaptive opt-out is needed. A declared tab can likewise render `NavigationStack` or `NavigationSplitView` in its `content` component. Check both compact and regular widths, selection and Back in the installed app.
|
|
325
|
+
|
|
326
|
+
## Photos
|
|
327
|
+
|
|
328
|
+
Use [PhotosPicker](components/photos-picker.md) to select one image or video File,
|
|
329
|
+
or [FileImporter](components/file-importer.md) for document Files. These open real
|
|
330
|
+
system choosers. Cancel preserves the accepted selection. Key the picker by draft
|
|
331
|
+
identity when replacing a draft whose selection has not changed.
|
|
332
|
+
|
|
333
|
+
Apps own validation, preparation, decoding, storage and object-URL lifetime after
|
|
334
|
+
selection. Browser file events have no chooser-session identifier; overlapping
|
|
335
|
+
choosers cannot be attributed exactly. File objects and object URLs are not durable
|
|
336
|
+
JSON assets. Image and AsyncImage display prepared assets; they do not acquire them.
|
|
337
|
+
|
|
338
|
+
Use [ShareLink](components/share-link.md) with prepared files for system sharing.
|
|
339
|
+
Use [PasteButton](components/paste-button.md) for user-initiated text paste; WebKit
|
|
340
|
+
may require its own Paste confirmation.
|
|
341
|
+
|
|
342
|
+
## Custom navigation title content
|
|
343
|
+
|
|
344
|
+
`ToolbarItem` accepts `largeTitle`, `largeSubtitle` and `subtitle` placement strings. A `largeTitle` item replaces the expanded title, and
|
|
345
|
+
`largeSubtitle` replaces the expanded subtitle. Their intrinsic height reserves the
|
|
346
|
+
expanded row. Both scroll away, leaving the screen's ordinary title inline. A
|
|
347
|
+
`subtitle` item replaces the inline subtitle. With `viewportFit: 'auto'` or
|
|
348
|
+
`'contain'`, its title lane grows downward when needed and reserves the excess in
|
|
349
|
+
the content inset, so the fitted viewport clips neither title nor custom content.
|
|
350
|
+
The controls keep their stock row. With `viewportFit: 'cover'`, it retains native
|
|
351
|
+
upward overflow. The fitted viewport can clip content above the safe edge. Use `Screen title` and `subtitle` for text.
|
|
352
|
+
Static destination defaults belong in route options; `Screen` can override them.
|
|
353
|
+
|
|
354
|
+
```tsx
|
|
355
|
+
<Screen title="Messages" titleDisplay="large" toolbar={
|
|
356
|
+
<ToolbarItem placement="largeTitle">
|
|
357
|
+
<ConversationIdentity />
|
|
358
|
+
</ToolbarItem>
|
|
359
|
+
}>
|
|
360
|
+
<ScrollView>{messages}</ScrollView>
|
|
361
|
+
</Screen>
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
The iOS 27 native 82 pt avatar/name fixture reserves a 136 pt bar with `largeTitle`,
|
|
365
|
+
or a 194 pt bar with `largeSubtitle` below the default large title. After collapse
|
|
366
|
+
both reserve 54 pt. These are native measurements, not fixed heights to put in app CSS.
|
|
367
|
+
`principal` content occupies the stock toolbar row; use `largeTitle` or
|
|
368
|
+
`largeSubtitle` for a tall custom header.
|
|
369
|
+
|
|
370
|
+
## Persistent conversation header
|
|
371
|
+
|
|
372
|
+
Hide stock navigation chrome and compose the complete header in a top `SafeAreaBar`.
|
|
373
|
+
The bar measures its content, reserves space, and owns its extended scrolling material.
|
|
374
|
+
Include the back action and trailing actions in that composition, not in the hidden toolbar.
|
|
375
|
+
|
|
376
|
+
```tsx
|
|
377
|
+
import { Button, HStack, SafeAreaBar, Screen, ScrollView, Spacer, VStack, useNavigation } from '@satinhq/kit'
|
|
378
|
+
|
|
379
|
+
function ConversationScreen() {
|
|
380
|
+
const navigation = useNavigation()
|
|
381
|
+
return (
|
|
382
|
+
<Screen toolbarVisibility="hidden">
|
|
383
|
+
<SafeAreaBar edge="top" content={
|
|
384
|
+
<HStack spacing={12} style={{ padding: '8px 20px' }}>
|
|
385
|
+
<Button aria-label="Back" buttonStyle="glass" onPress={() => navigation.pop()}>
|
|
386
|
+
Back
|
|
387
|
+
</Button>
|
|
388
|
+
<Spacer />
|
|
389
|
+
<VStack spacing={4}>
|
|
390
|
+
<div role="img" aria-label="Alex's avatar" style={{
|
|
391
|
+
width: 60, height: 60, borderRadius: '50%', background: 'var(--satin-system-orange)',
|
|
392
|
+
}} />
|
|
393
|
+
<strong style={{ fontSize: 15, lineHeight: '18px' }}>Alex Morgan</strong>
|
|
394
|
+
</VStack>
|
|
395
|
+
<Spacer />
|
|
396
|
+
<Button aria-label="Video call" buttonStyle="glass" onPress={startVideoCall}>
|
|
397
|
+
Video
|
|
398
|
+
</Button>
|
|
399
|
+
</HStack>
|
|
400
|
+
}>
|
|
401
|
+
<ScrollView>{messages}</ScrollView>
|
|
402
|
+
</SafeAreaBar>
|
|
403
|
+
</Screen>
|
|
404
|
+
)
|
|
405
|
+
}
|
|
406
|
+
```
|
|
407
|
+
|
|
408
|
+
Supply your `messages` and `startVideoCall` action. The default HStack alignment centers
|
|
409
|
+
buttons on the entire avatar/name stack. In the native 98 pt composition, button centers
|
|
410
|
+
are 11 pt below the avatar center. If the design calls for avatar-centered buttons, choose
|
|
411
|
+
that alignment deliberately in the composition.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# FileImporter
|
|
2
|
+
|
|
3
|
+
Imports file bytes through the system file chooser. `FileImporter` requires a user gesture and does not expose a presentation flag that would open a chooser outside a user gesture.
|
|
4
|
+
|
|
5
|
+
Pass `selection` as the accepted File array and update it in `onSelectionChange`. `allowedContentTypes` accepts MIME strings or file extensions, for example `['application/pdf', '.txt']`. These are chooser hints, not content validation or Swift uniform type identifiers. `allowsMultipleSelection` defaults to false.
|
|
6
|
+
|
|
7
|
+
Returned Files are snapshots of selected bytes, not persistent filesystem URLs, directory access, or permission to overwrite the originals. WebKit owns the provider UI and may offer sources in addition to Files.
|
|
8
|
+
|
|
9
|
+
## Example
|
|
10
|
+
|
|
11
|
+
Choose files to read their names. Cancel keeps the current selection.
|
|
12
|
+
|
|
13
|
+
<!-- example: file-importer open -->
|
|
14
|
+
|
|
15
|
+
```tsx
|
|
16
|
+
import { useState } from 'react'
|
|
17
|
+
import { FileImporter, LabeledContent, List, Screen, Section } from '@satinhq/kit'
|
|
18
|
+
|
|
19
|
+
function Example() {
|
|
20
|
+
const [files, setFiles] = useState<File[]>([])
|
|
21
|
+
const [message, setMessage] = useState('No files selected')
|
|
22
|
+
|
|
23
|
+
return (
|
|
24
|
+
<Screen>
|
|
25
|
+
<List id="example">
|
|
26
|
+
<Section>
|
|
27
|
+
<FileImporter
|
|
28
|
+
selection={files}
|
|
29
|
+
allowsMultipleSelection
|
|
30
|
+
onSelectionChange={selected => {
|
|
31
|
+
setFiles(selected)
|
|
32
|
+
setMessage(selected.map(file => file.name).join(', '))
|
|
33
|
+
}}
|
|
34
|
+
onError={error => setMessage(error.message)}
|
|
35
|
+
/>
|
|
36
|
+
<LabeledContent label="Result" value={message} />
|
|
37
|
+
</Section>
|
|
38
|
+
</List>
|
|
39
|
+
</Screen>
|
|
40
|
+
)
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Selection lifetime
|
|
45
|
+
|
|
46
|
+
Cancel leaves the accepted selection unchanged. The input resets after delivery, allowing the same file to be selected again. Observed disabled, covered-screen, selection or mount changes invalidate an outstanding result. Key the picker by draft identity when replacing a draft whose selection has not changed. Browser events carry no chooser session ID, so overlapping choosers cannot be attributed exactly. Already-started decoding or storage is still app-owned.
|
|
47
|
+
|
|
48
|
+
## Platform limits and evidence
|
|
49
|
+
|
|
50
|
+
Use an HTTPS installed app. Browser capability and permission policy still apply. Embedded docs previews may block these APIs; open the example in its own page when needed. The framework does not replace a system prompt with a simulated picker, share sheet or paste menu.
|
|
51
|
+
|
|
52
|
+
Software regression coverage is separate from installed-device acceptance. Installed selection, cancellation, focus return and touch feedback for this revision are pending; no native visual or motion parity is claimed.
|
|
53
|
+
|
|
54
|
+
Platform reference: [HTML file upload state](https://html.spec.whatwg.org/multipage/input.html#file-upload-state-(type=file)).
|