@satinhq/kit 0.0.0-stage → 0.1.0-beta.1
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 +29 -0
- package/dist/glass/GlassPresentation.js +1041 -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 +176 -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 +38 -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 +32 -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 +833 -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 +116 -3
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { CapsuleShape } from '../renderSpecs.js';
|
|
2
|
+
/**
|
|
3
|
+
* The trailing Search member of a minimizing tab bar (`Tab(role: .search)` on iPhone).
|
|
4
|
+
*
|
|
5
|
+
* Native reference: stock SwiftUI on iOS 27.0, iPhone 17 Pro Max (search-tab-split, Simulator
|
|
6
|
+
* tracks at 60 Hz) and the owner's Apple Music recording on a physical iPhone. On collapse the
|
|
7
|
+
* bar's trailing end separates into its own capsule within one or two frames: at the split it
|
|
8
|
+
* spans x = 339–413 of the 21–419 bar, full height. It then narrows from its leading edge into
|
|
9
|
+
* the 48 pt circle at x = 364–412 while the rest of the bar retracts into the leading shortcut.
|
|
10
|
+
* Expansion runs the other way: the circle widens back towards the bar and the growing bar
|
|
11
|
+
* merges with it. One glass field draws both members, so the parting and the merge are the
|
|
12
|
+
* field's smooth union, not a crossfade.
|
|
13
|
+
*/
|
|
14
|
+
/** Width of the trailing piece that separates from the bar (native: 419 − 339 pt). */
|
|
15
|
+
export declare const SEARCH_SPLIT_WIDTH = 80;
|
|
16
|
+
/** Diameter of the minimized Search circle. */
|
|
17
|
+
export declare const SEARCH_CIRCLE_SIZE = 48;
|
|
18
|
+
export declare const SEARCH_SPLIT_DELAY_MS = 12;
|
|
19
|
+
/**
|
|
20
|
+
* How far the Search member has gone from the bar's trailing end (0) to the circle (1),
|
|
21
|
+
* `milliseconds` after its motion starts, beginning at the presented value `from`.
|
|
22
|
+
*/
|
|
23
|
+
export declare function searchMemberProgress(from: number, to: number, milliseconds: number): number;
|
|
24
|
+
export type SearchMemberGeometry = {
|
|
25
|
+
/** Width and height of the tab bar's own frame (the expanded bar). */
|
|
26
|
+
dockWidth: number;
|
|
27
|
+
dockHeight: number;
|
|
28
|
+
/** Compact members' inset from the bar's edges; negative for a centred intrinsic platter. */
|
|
29
|
+
inset: number;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* The Search member in the tab bar's frame. `progress` is the member's own spring; the height
|
|
33
|
+
* and trailing inset follow the bar's height channel so the two members part at the same height
|
|
34
|
+
* and keep concentric trailing caps.
|
|
35
|
+
*/
|
|
36
|
+
export declare function searchMemberShape(progress: number, heightProgress: number, { dockWidth, dockHeight, inset }: SearchMemberGeometry): CapsuleShape;
|
|
37
|
+
/** Centre of the minimized Search circle in the tab bar's frame. */
|
|
38
|
+
export declare function searchCircleCentre({ dockWidth, inset }: SearchMemberGeometry): number;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The trailing Search member of a minimizing tab bar (`Tab(role: .search)` on iPhone).
|
|
3
|
+
*
|
|
4
|
+
* Native reference: stock SwiftUI on iOS 27.0, iPhone 17 Pro Max (search-tab-split, Simulator
|
|
5
|
+
* tracks at 60 Hz) and the owner's Apple Music recording on a physical iPhone. On collapse the
|
|
6
|
+
* bar's trailing end separates into its own capsule within one or two frames: at the split it
|
|
7
|
+
* spans x = 339–413 of the 21–419 bar, full height. It then narrows from its leading edge into
|
|
8
|
+
* the 48 pt circle at x = 364–412 while the rest of the bar retracts into the leading shortcut.
|
|
9
|
+
* Expansion runs the other way: the circle widens back towards the bar and the growing bar
|
|
10
|
+
* merges with it. One glass field draws both members, so the parting and the merge are the
|
|
11
|
+
* field's smooth union, not a crossfade.
|
|
12
|
+
*/
|
|
13
|
+
/** Width of the trailing piece that separates from the bar (native: 419 − 339 pt). */
|
|
14
|
+
export const SEARCH_SPLIT_WIDTH = 80;
|
|
15
|
+
/** Diameter of the minimized Search circle. */
|
|
16
|
+
export const SEARCH_CIRCLE_SIZE = 48;
|
|
17
|
+
/**
|
|
18
|
+
* The Search member's leading edge is a damped spring (mass 1). Fitted to the leading edge of
|
|
19
|
+
* the separated capsule in three dark collapse recordings (b, a, Library selected):
|
|
20
|
+
* stiffness 960, damping 52 (damping ratio 0.84), starting 12 ms after the bar's first painted
|
|
21
|
+
* change; RMS 0.05 of the 25 pt travel. Expansion reuses the same spring from the bar's onset.
|
|
22
|
+
*/
|
|
23
|
+
const SEARCH_STIFFNESS = 960;
|
|
24
|
+
const SEARCH_DAMPING = 52;
|
|
25
|
+
export const SEARCH_SPLIT_DELAY_MS = 12;
|
|
26
|
+
/** After this the spring is within 0.1% of its target; return the target exactly. */
|
|
27
|
+
const SEARCH_SETTLE_MS = 400;
|
|
28
|
+
/** Normalized step response of the fitted spring: 0 at the start, 1 at rest. */
|
|
29
|
+
function springStep(milliseconds) {
|
|
30
|
+
if (milliseconds <= 0)
|
|
31
|
+
return 0;
|
|
32
|
+
if (milliseconds >= SEARCH_SETTLE_MS)
|
|
33
|
+
return 1;
|
|
34
|
+
const seconds = milliseconds / 1000;
|
|
35
|
+
const natural = Math.sqrt(SEARCH_STIFFNESS);
|
|
36
|
+
const ratio = SEARCH_DAMPING / (2 * natural);
|
|
37
|
+
const damped = natural * Math.sqrt(1 - ratio * ratio);
|
|
38
|
+
const decay = Math.exp(-ratio * natural * seconds);
|
|
39
|
+
return (1 -
|
|
40
|
+
decay * (Math.cos(damped * seconds) + ((ratio * natural) / damped) * Math.sin(damped * seconds)));
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* How far the Search member has gone from the bar's trailing end (0) to the circle (1),
|
|
44
|
+
* `milliseconds` after its motion starts, beginning at the presented value `from`.
|
|
45
|
+
*/
|
|
46
|
+
export function searchMemberProgress(from, to, milliseconds) {
|
|
47
|
+
return from + (to - from) * springStep(milliseconds);
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* The Search member in the tab bar's frame. `progress` is the member's own spring; the height
|
|
51
|
+
* and trailing inset follow the bar's height channel so the two members part at the same height
|
|
52
|
+
* and keep concentric trailing caps.
|
|
53
|
+
*/
|
|
54
|
+
export function searchMemberShape(progress, heightProgress, { dockWidth, dockHeight, inset }) {
|
|
55
|
+
// The bar overshoots past its resting size on expansion (heightProgress below 0). It then
|
|
56
|
+
// contains the Search member, which stays within the resting bar instead of bulging out.
|
|
57
|
+
const settled = Math.max(0, heightProgress);
|
|
58
|
+
const right = dockWidth - inset * settled;
|
|
59
|
+
const splitLeft = dockWidth - SEARCH_SPLIT_WIDTH;
|
|
60
|
+
const circleLeft = dockWidth - inset - SEARCH_CIRCLE_SIZE;
|
|
61
|
+
const left = splitLeft + (circleLeft - splitLeft) * progress;
|
|
62
|
+
const height = dockHeight + (SEARCH_CIRCLE_SIZE - dockHeight) * settled;
|
|
63
|
+
return {
|
|
64
|
+
centerX: (left + right) / 2,
|
|
65
|
+
centerY: dockHeight / 2,
|
|
66
|
+
halfWidth: (right - left) / 2,
|
|
67
|
+
halfHeight: height / 2,
|
|
68
|
+
radius: height / 2,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/** Centre of the minimized Search circle in the tab bar's frame. */
|
|
72
|
+
export function searchCircleCentre({ dockWidth, inset }) {
|
|
73
|
+
return dockWidth - inset - SEARCH_CIRCLE_SIZE / 2;
|
|
74
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Appearance } from './theme.js';
|
|
2
|
+
export { tabGlyphStyle } from './tabGlyphColours.js';
|
|
3
|
+
export declare const TAB_BAR_LOCAL_CENTRES: readonly number[];
|
|
4
|
+
export declare const TAB_BAR_BLUR_SIGMA: Readonly<{
|
|
5
|
+
light: number;
|
|
6
|
+
dark: number;
|
|
7
|
+
}>;
|
|
8
|
+
export declare const TAB_SELECTION_HEIGHT = 52;
|
|
9
|
+
export declare const TAB_SELECTION_WIDTH = 96;
|
|
10
|
+
export declare function stableTabSelection(appearance: Appearance): {
|
|
11
|
+
readonly blurSigmaCssPx: number;
|
|
12
|
+
readonly materialMix: 1;
|
|
13
|
+
};
|
|
14
|
+
export declare function tabSelectionCapsule(index: number, centres?: readonly number[], width?: number, height?: number, centerY?: number): {
|
|
15
|
+
centerX: number;
|
|
16
|
+
centerY: number;
|
|
17
|
+
halfHeight: number;
|
|
18
|
+
halfWidth: number;
|
|
19
|
+
radius: number;
|
|
20
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { TAB_PILL_MATERIAL, TAB_BAR_MATERIAL } from './tabMaterialModel.js';
|
|
2
|
+
export { tabGlyphStyle } from './tabGlyphColours.js';
|
|
3
|
+
export const TAB_BAR_LOCAL_CENTRES = Object.freeze([53, 138, 223, 308]);
|
|
4
|
+
export const TAB_BAR_BLUR_SIGMA = Object.freeze({
|
|
5
|
+
light: TAB_BAR_MATERIAL.light.sigma,
|
|
6
|
+
dark: TAB_BAR_MATERIAL.dark.sigma,
|
|
7
|
+
});
|
|
8
|
+
export const TAB_SELECTION_HEIGHT = 52;
|
|
9
|
+
export const TAB_SELECTION_WIDTH = 96;
|
|
10
|
+
// Effective dense-kernel sigma is explicit in the measured material model.
|
|
11
|
+
export function stableTabSelection(appearance) {
|
|
12
|
+
return { blurSigmaCssPx: TAB_PILL_MATERIAL[appearance].sigma, materialMix: 1 };
|
|
13
|
+
}
|
|
14
|
+
export function tabSelectionCapsule(index, centres = TAB_BAR_LOCAL_CENTRES, width = TAB_SELECTION_WIDTH, height = TAB_SELECTION_HEIGHT, centerY = 31) {
|
|
15
|
+
const selected = Math.max(0, Math.min(centres.length - 1, Math.round(index)));
|
|
16
|
+
return {
|
|
17
|
+
centerX: centres[selected],
|
|
18
|
+
centerY,
|
|
19
|
+
halfHeight: height / 2,
|
|
20
|
+
halfWidth: width / 2,
|
|
21
|
+
radius: height / 2,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Appearance } from './theme.js';
|
|
2
|
+
export type TabSelectionMeasurement = Readonly<{
|
|
3
|
+
appearance: Appearance;
|
|
4
|
+
backdrop: readonly [number, number, number];
|
|
5
|
+
background: string;
|
|
6
|
+
bar: readonly [number, number, number];
|
|
7
|
+
pill: readonly [number, number, number];
|
|
8
|
+
}>;
|
|
9
|
+
export declare const TAB_SELECTION_MEASUREMENTS: readonly TabSelectionMeasurement[];
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
// Historical native flat targets, retained only for test/evidence comparison.
|
|
2
|
+
// Runtime material coefficients never read this fixture.
|
|
3
|
+
export const TAB_SELECTION_MEASUREMENTS = Object.freeze([
|
|
4
|
+
{
|
|
5
|
+
appearance: 'light',
|
|
6
|
+
backdrop: [0, 0, 0],
|
|
7
|
+
background: 'tint-black',
|
|
8
|
+
bar: [18, 18, 18],
|
|
9
|
+
pill: [52, 52, 52],
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
appearance: 'light',
|
|
13
|
+
backdrop: [32, 32, 32],
|
|
14
|
+
background: 'tint-dark-grey',
|
|
15
|
+
bar: [28, 28, 28],
|
|
16
|
+
pill: [61, 61, 61],
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
appearance: 'light',
|
|
20
|
+
backdrop: [10, 132, 255],
|
|
21
|
+
background: 'tint-saturated-blue',
|
|
22
|
+
bar: [149, 207, 255],
|
|
23
|
+
pill: [114, 184, 241],
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
appearance: 'light',
|
|
27
|
+
backdrop: [216, 216, 216],
|
|
28
|
+
background: 'tint-light-grey',
|
|
29
|
+
bar: [244, 244, 244],
|
|
30
|
+
pill: [225, 225, 225],
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
appearance: 'light',
|
|
34
|
+
backdrop: [255, 255, 255],
|
|
35
|
+
background: 'tint-white',
|
|
36
|
+
bar: [253, 253, 253],
|
|
37
|
+
pill: [235, 235, 235],
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
appearance: 'dark',
|
|
41
|
+
backdrop: [0, 0, 0],
|
|
42
|
+
background: 'tint-black',
|
|
43
|
+
bar: [19, 19, 19],
|
|
44
|
+
pill: [53, 53, 53],
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
appearance: 'dark',
|
|
48
|
+
backdrop: [32, 32, 32],
|
|
49
|
+
background: 'tint-dark-grey',
|
|
50
|
+
bar: [28, 28, 28],
|
|
51
|
+
pill: [61, 61, 61],
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
appearance: 'dark',
|
|
55
|
+
backdrop: [10, 132, 255],
|
|
56
|
+
background: 'tint-saturated-blue',
|
|
57
|
+
bar: [23, 93, 163],
|
|
58
|
+
pill: [47, 125, 203],
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
appearance: 'dark',
|
|
62
|
+
backdrop: [216, 216, 216],
|
|
63
|
+
background: 'tint-light-grey',
|
|
64
|
+
bar: [107, 107, 107],
|
|
65
|
+
pill: [137, 137, 137],
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
appearance: 'dark',
|
|
69
|
+
backdrop: [255, 255, 255],
|
|
70
|
+
background: 'tint-white',
|
|
71
|
+
bar: [253, 253, 253],
|
|
72
|
+
pill: [235, 235, 235],
|
|
73
|
+
},
|
|
74
|
+
]);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const TAB_SETTINGS_SYMBOL: string;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
// reference fit candidate from the recorded fast/slow arrival controls. Native travel
|
|
2
|
+
// flattens the lens; braking briefly contracts its width and raises its height.
|
|
3
|
+
// These are coarse visual-fit parameters, not a material UIKit physical model.
|
|
4
|
+
const clamp01 = (x) => Math.max(0, Math.min(1, x));
|
|
5
|
+
export class TabShapeResponse {
|
|
6
|
+
speed = 0;
|
|
7
|
+
brake = 0;
|
|
8
|
+
strain = 0;
|
|
9
|
+
reset() {
|
|
10
|
+
this.speed = 0;
|
|
11
|
+
this.brake = 0;
|
|
12
|
+
this.strain = 0;
|
|
13
|
+
}
|
|
14
|
+
sample(velocity, dt) {
|
|
15
|
+
if (dt <= 0)
|
|
16
|
+
return this.strain;
|
|
17
|
+
// Long suspension gaps settle instead of injecting a large simulated step.
|
|
18
|
+
if (dt > 0.1) {
|
|
19
|
+
this.reset();
|
|
20
|
+
return 0;
|
|
21
|
+
}
|
|
22
|
+
const excitation = clamp01((Math.abs(velocity) - 300) / 1000);
|
|
23
|
+
const previousSpeed = this.speed;
|
|
24
|
+
this.speed += (excitation - this.speed) * (1 - Math.exp(-dt / 0.035));
|
|
25
|
+
this.brake = Math.min(1, this.brake * Math.exp(-dt / 0.16) + Math.max(0, previousSpeed - this.speed) * 2);
|
|
26
|
+
const target = 15 * this.speed - 12 * this.brake;
|
|
27
|
+
this.strain += (target - this.strain) * (1 - Math.exp(-dt / 0.035));
|
|
28
|
+
return this.strain;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { IconTone } from './data.js';
|
|
2
|
+
export type Appearance = 'dark' | 'light';
|
|
3
|
+
export type SettingsPalette = Readonly<{
|
|
4
|
+
background: number;
|
|
5
|
+
cell: number;
|
|
6
|
+
label: number;
|
|
7
|
+
secondaryLabel: number;
|
|
8
|
+
separator: number;
|
|
9
|
+
pressed: number;
|
|
10
|
+
searchFill: number;
|
|
11
|
+
searchPlaceholder: number;
|
|
12
|
+
chrome: number;
|
|
13
|
+
chromeStroke: number;
|
|
14
|
+
indicator: number;
|
|
15
|
+
tabSelection: number;
|
|
16
|
+
}>;
|
|
17
|
+
export declare const PALETTES: Readonly<Record<Appearance, SettingsPalette>>;
|
|
18
|
+
export declare const ICON_GRADIENTS: Readonly<Record<IconTone, readonly [number, number]>>;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export const PALETTES = Object.freeze({
|
|
2
|
+
light: Object.freeze({
|
|
3
|
+
background: 0xf2f2f7,
|
|
4
|
+
cell: 0xffffff,
|
|
5
|
+
label: 0x000000,
|
|
6
|
+
secondaryLabel: 0x8e8e93,
|
|
7
|
+
separator: 0xe8e8e8,
|
|
8
|
+
pressed: 0xd1d1d6,
|
|
9
|
+
searchFill: 0xe3e3e8,
|
|
10
|
+
searchPlaceholder: 0x737378,
|
|
11
|
+
chrome: 0xf7f7fa,
|
|
12
|
+
chromeStroke: 0xffffff,
|
|
13
|
+
indicator: 0x8e8e93,
|
|
14
|
+
tabSelection: 0x0a84ff,
|
|
15
|
+
}),
|
|
16
|
+
dark: Object.freeze({
|
|
17
|
+
background: 0x000000,
|
|
18
|
+
cell: 0x1c1c1e,
|
|
19
|
+
label: 0xffffff,
|
|
20
|
+
secondaryLabel: 0x98989d,
|
|
21
|
+
separator: 0x38383a,
|
|
22
|
+
pressed: 0x3a3a3c,
|
|
23
|
+
searchFill: 0x1c1c1e,
|
|
24
|
+
searchPlaceholder: 0x98989d,
|
|
25
|
+
chrome: 0x232326,
|
|
26
|
+
chromeStroke: 0x4a4a4e,
|
|
27
|
+
indicator: 0x98989d,
|
|
28
|
+
tabSelection: 0x0a84ff,
|
|
29
|
+
}),
|
|
30
|
+
});
|
|
31
|
+
export const ICON_GRADIENTS = Object.freeze({
|
|
32
|
+
black: [0x3b3b3d, 0x050506],
|
|
33
|
+
blue: [0x40b6ff, 0x0787ed],
|
|
34
|
+
gray: [0xb9bbc0, 0x898b90],
|
|
35
|
+
green: [0x5bd662, 0x24a938],
|
|
36
|
+
orange: [0xffb13b, 0xf27912],
|
|
37
|
+
pink: [0xff648c, 0xf13b71],
|
|
38
|
+
purple: [0x9f7bff, 0x6753f1],
|
|
39
|
+
red: [0xff6262, 0xe23434],
|
|
40
|
+
});
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/** Persistent step trace: survives a main-thread hang so the next launch can show where it stopped. */
|
|
2
|
+
const KEY = 'satinGeometry-trace';
|
|
3
|
+
const started = performance.now();
|
|
4
|
+
let previous = [];
|
|
5
|
+
try {
|
|
6
|
+
previous = JSON.parse(localStorage.getItem(KEY) ?? '[]');
|
|
7
|
+
localStorage.setItem(KEY, '[]');
|
|
8
|
+
}
|
|
9
|
+
catch {
|
|
10
|
+
previous = [];
|
|
11
|
+
}
|
|
12
|
+
let current = [];
|
|
13
|
+
export function trace(step) {
|
|
14
|
+
current.push(`${((performance.now() - started) / 1000).toFixed(1)}:${step}`);
|
|
15
|
+
if (current.length > 14)
|
|
16
|
+
current = current.slice(-14);
|
|
17
|
+
try {
|
|
18
|
+
localStorage.setItem(KEY, JSON.stringify(current));
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
// ignore
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function previousTrace() {
|
|
25
|
+
// Latest step first: the hang is at the tail of the previous run.
|
|
26
|
+
return previous.length ? [...previous].reverse().join(' ← ') : '(none)';
|
|
27
|
+
}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { GlassRegionRegistry } from './regionRegistry.js';
|
|
2
|
+
import type { TabBarProps, TabItemFrame } from './TabBar.js';
|
|
3
|
+
export type RegisteredTabBar = TabBarProps & Readonly<{
|
|
4
|
+
tint?: string;
|
|
5
|
+
insetHost?: HTMLElement;
|
|
6
|
+
intrinsicWidth?: boolean;
|
|
7
|
+
/** 'top': the regular-width iPad bar, laid out by `itemFrames` inside `insetHost`. */
|
|
8
|
+
placement?: 'bottom' | 'top';
|
|
9
|
+
itemFrames?: readonly TabItemFrame[];
|
|
10
|
+
}>;
|
|
11
|
+
export type MaterialEffectRegistration = Readonly<{
|
|
12
|
+
/** The one glass renderer. */
|
|
13
|
+
backend?: 'webgpu' | 'fallback';
|
|
14
|
+
regions?: GlassRegionRegistry;
|
|
15
|
+
ready: boolean;
|
|
16
|
+
preparingSources?: boolean;
|
|
17
|
+
preparedScreenKey?: string;
|
|
18
|
+
preparedAt?: number;
|
|
19
|
+
preparedSources?: ReadonlyMap<string, number>;
|
|
20
|
+
registerTabs: (id: string, tabs: RegisteredTabBar | undefined) => void;
|
|
21
|
+
}>;
|
|
22
|
+
export declare const MaterialEffectContext: import("react").Context<Readonly<{
|
|
23
|
+
/** The one glass renderer. */
|
|
24
|
+
backend?: 'webgpu' | 'fallback';
|
|
25
|
+
regions?: GlassRegionRegistry;
|
|
26
|
+
ready: boolean;
|
|
27
|
+
preparingSources?: boolean;
|
|
28
|
+
preparedScreenKey?: string;
|
|
29
|
+
preparedAt?: number;
|
|
30
|
+
preparedSources?: ReadonlyMap<string, number>;
|
|
31
|
+
registerTabs: (id: string, tabs: RegisteredTabBar | undefined) => void;
|
|
32
|
+
}> | null>;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
type Rect = Readonly<{
|
|
2
|
+
x: number;
|
|
3
|
+
y: number;
|
|
4
|
+
width: number;
|
|
5
|
+
height: number;
|
|
6
|
+
}>;
|
|
7
|
+
/** How far a trigger's centre may sit from the middle of the screen and still get a centred
|
|
8
|
+
* panel (points). iPhone 17 Pro Max Simulator, iOS 27.0, a 129 pt capsule trigger at 14
|
|
9
|
+
* positions: centred at 4.5, 15.5, 19.5 and 20.5 pt from the middle, edge-aligned at 25.5, 29.5,
|
|
10
|
+
* 30.5 and beyond. Other screen widths were not measured. */
|
|
11
|
+
export declare const MENU_CENTER_BAND = 22;
|
|
12
|
+
/** Lifted non-row content (iPhone 17 Pro Max Simulator, iOS 27.0, stock `.contextMenu` on a grid
|
|
13
|
+
* tile with and without `preview:`; native menu measurements native-iphone stills): the menu sits 20 pt from
|
|
14
|
+
* the lifted box (tile 19.8, preview 20.0) and takes the box's leading or trailing edge on its
|
|
15
|
+
* side of the screen, with no centred band (tall bubbles 19.5 and 30 pt off centre align
|
|
16
|
+
* leading; content exactly centred is unmeasured and aligns leading). iPad does the same for
|
|
17
|
+
* lifted bubbles (native iPad: tall leading, short trailing, 18-19 pt at the 1 pt contour
|
|
18
|
+
* resolution), and puts a custom preview's menu beside it, top-aligned, 20-21 pt away. */
|
|
19
|
+
export declare const CONTEXT_CONTENT_GAP = 20;
|
|
20
|
+
/** How much lifted non-row content grows. A 192 x 230 pt grid tile settles at 1.115 and a
|
|
21
|
+
* 159 x 38 pt bubble at 1.15 (same stills); a full-width row keeps its own measured lift. Both
|
|
22
|
+
* points fit growing the longest side by 26 pt, at most 1.15. Two sizes were measured. */
|
|
23
|
+
export declare function contextContentScale(width: number, height: number): number;
|
|
24
|
+
/** Where lifted content (or its custom preview, `size`) settles: centred on its resting source,
|
|
25
|
+
* kept inside the screen (native keeps 20 pt), and moved up or down only when its menu would fit
|
|
26
|
+
* neither below nor above it. Native tile and preview stills: centred on the whole tile
|
|
27
|
+
* (artwork and labels), clamped to the 20 pt side margin. Tall bubbles (native menu measurements stills):
|
|
28
|
+
* the content moves the shorter way that frees room for its menu (3 positions), and content too
|
|
29
|
+
* tall to share the screen with its menu sits at the bottom with the menu over its top. */
|
|
30
|
+
export declare function contextLiftBox(rest: Rect, size: Readonly<{
|
|
31
|
+
width: number;
|
|
32
|
+
height: number;
|
|
33
|
+
}>, menuHeight: number, available: Rect): Rect;
|
|
34
|
+
/** Stock Menu keeps its first row over the trigger. The September 27 iPad
|
|
35
|
+
* reference puts its center 3pt below the text trigger (3.5pt for ellipsis).
|
|
36
|
+
* Center the panel horizontally, then move it inside the usable viewport.
|
|
37
|
+
*
|
|
38
|
+
* iPhone (October 1 reference, capsule, full-width, toolbar-group and circle triggers): a trigger
|
|
39
|
+
* near the middle of the screen gets a panel centred on it; any other trigger gets a panel whose
|
|
40
|
+
* edge is the trigger glass's own edge on its side of the screen (a toolbar group's edge, whichever
|
|
41
|
+
* member opened the menu). The panel's top is the trigger's top; when it does not fit below, its
|
|
42
|
+
* bottom is the trigger's bottom and it opens upward. This is an idiom distinction, not a
|
|
43
|
+
* window-width breakpoint. */
|
|
44
|
+
export declare function menuPanelPlacement(trigger: Rect, panel: Rect, firstRow: Rect | undefined, available: Rect, phone?: boolean, source?: 'trigger' | 'context' | 'context-content' | 'context-preview'): {
|
|
45
|
+
left: number;
|
|
46
|
+
top: number;
|
|
47
|
+
};
|
|
48
|
+
/** An iPhone menu hangs from its trigger's top, and opens upward from its trigger's bottom when
|
|
49
|
+
* it would not fit below (and does fit above). */
|
|
50
|
+
export declare function menuOpensUpward(trigger: Rect, panel: Rect, available: Rect): boolean;
|
|
51
|
+
export {};
|
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
/** How far a trigger's centre may sit from the middle of the screen and still get a centred
|
|
2
|
+
* panel (points). iPhone 17 Pro Max Simulator, iOS 27.0, a 129 pt capsule trigger at 14
|
|
3
|
+
* positions: centred at 4.5, 15.5, 19.5 and 20.5 pt from the middle, edge-aligned at 25.5, 29.5,
|
|
4
|
+
* 30.5 and beyond. Other screen widths were not measured. */
|
|
5
|
+
export const MENU_CENTER_BAND = 22;
|
|
6
|
+
/** Lifted non-row content (iPhone 17 Pro Max Simulator, iOS 27.0, stock `.contextMenu` on a grid
|
|
7
|
+
* tile with and without `preview:`; native menu measurements native-iphone stills): the menu sits 20 pt from
|
|
8
|
+
* the lifted box (tile 19.8, preview 20.0) and takes the box's leading or trailing edge on its
|
|
9
|
+
* side of the screen, with no centred band (tall bubbles 19.5 and 30 pt off centre align
|
|
10
|
+
* leading; content exactly centred is unmeasured and aligns leading). iPad does the same for
|
|
11
|
+
* lifted bubbles (native iPad: tall leading, short trailing, 18-19 pt at the 1 pt contour
|
|
12
|
+
* resolution), and puts a custom preview's menu beside it, top-aligned, 20-21 pt away. */
|
|
13
|
+
export const CONTEXT_CONTENT_GAP = 20;
|
|
14
|
+
/** How much lifted non-row content grows. A 192 x 230 pt grid tile settles at 1.115 and a
|
|
15
|
+
* 159 x 38 pt bubble at 1.15 (same stills); a full-width row keeps its own measured lift. Both
|
|
16
|
+
* points fit growing the longest side by 26 pt, at most 1.15. Two sizes were measured. */
|
|
17
|
+
export function contextContentScale(width, height) {
|
|
18
|
+
const longest = Math.max(width, height, 1);
|
|
19
|
+
return Math.min(1.15, (longest + 26) / longest);
|
|
20
|
+
}
|
|
21
|
+
/** Where lifted content (or its custom preview, `size`) settles: centred on its resting source,
|
|
22
|
+
* kept inside the screen (native keeps 20 pt), and moved up or down only when its menu would fit
|
|
23
|
+
* neither below nor above it. Native tile and preview stills: centred on the whole tile
|
|
24
|
+
* (artwork and labels), clamped to the 20 pt side margin. Tall bubbles (native menu measurements stills):
|
|
25
|
+
* the content moves the shorter way that frees room for its menu (3 positions), and content too
|
|
26
|
+
* tall to share the screen with its menu sits at the bottom with the menu over its top. */
|
|
27
|
+
export function contextLiftBox(rest, size, menuHeight, available) {
|
|
28
|
+
const width = Math.min(size.width, available.width);
|
|
29
|
+
const height = Math.min(size.height, available.height);
|
|
30
|
+
const clamp = (value, start, extent, length) => Math.max(start, Math.min(value, start + Math.max(0, extent - length)));
|
|
31
|
+
const x = clamp(rest.x + (rest.width - width) / 2, available.x, available.width, width);
|
|
32
|
+
let y = clamp(rest.y + (rest.height - height) / 2, available.y, available.height, height);
|
|
33
|
+
const bottom = available.y + available.height;
|
|
34
|
+
const fitsBelow = y + height + CONTEXT_CONTENT_GAP + menuHeight <= bottom;
|
|
35
|
+
const fitsAbove = y - CONTEXT_CONTENT_GAP - menuHeight >= available.y;
|
|
36
|
+
if (!fitsBelow && !fitsAbove) {
|
|
37
|
+
const up = bottom - menuHeight - CONTEXT_CONTENT_GAP - height;
|
|
38
|
+
const down = available.y + menuHeight + CONTEXT_CONTENT_GAP;
|
|
39
|
+
y = up < available.y ? bottom - height : Math.abs(up - y) <= Math.abs(down - y) ? up : down;
|
|
40
|
+
}
|
|
41
|
+
return { x, y, width, height };
|
|
42
|
+
}
|
|
43
|
+
/** Stock Menu keeps its first row over the trigger. The September 27 iPad
|
|
44
|
+
* reference puts its center 3pt below the text trigger (3.5pt for ellipsis).
|
|
45
|
+
* Center the panel horizontally, then move it inside the usable viewport.
|
|
46
|
+
*
|
|
47
|
+
* iPhone (October 1 reference, capsule, full-width, toolbar-group and circle triggers): a trigger
|
|
48
|
+
* near the middle of the screen gets a panel centred on it; any other trigger gets a panel whose
|
|
49
|
+
* edge is the trigger glass's own edge on its side of the screen (a toolbar group's edge, whichever
|
|
50
|
+
* member opened the menu). The panel's top is the trigger's top; when it does not fit below, its
|
|
51
|
+
* bottom is the trigger's bottom and it opens upward. This is an idiom distinction, not a
|
|
52
|
+
* window-width breakpoint. */
|
|
53
|
+
export function menuPanelPlacement(trigger, panel, firstRow, available, phone = false, source = 'trigger') {
|
|
54
|
+
const clamp = (value, start, extent, size) => Math.max(start, Math.min(value, start + Math.max(0, extent - size)));
|
|
55
|
+
const triggerCenter = trigger.x + trigger.width / 2;
|
|
56
|
+
if (source !== 'trigger') {
|
|
57
|
+
// Native iPad paired held state: 17pt between a row and its menu edge. A phone row's menu
|
|
58
|
+
// sits 12 pt below the row; lifted content (or a custom preview) keeps 20 pt from its lifted
|
|
59
|
+
// box, and the menu takes the box's edge on its side of the screen (CONTEXT_CONTENT_GAP).
|
|
60
|
+
const content = source !== 'context';
|
|
61
|
+
if (!phone && source === 'context-preview') {
|
|
62
|
+
// iPad: beside the preview on the roomier side, when it fits there (a right-column tile's
|
|
63
|
+
// preview gets its menu on the left).
|
|
64
|
+
const right = available.x + available.width;
|
|
65
|
+
const before = trigger.x - CONTEXT_CONTENT_GAP - panel.width;
|
|
66
|
+
const after = trigger.x + trigger.width + CONTEXT_CONTENT_GAP;
|
|
67
|
+
const roomierBefore = trigger.x - available.x > right - (trigger.x + trigger.width);
|
|
68
|
+
const fitsBefore = before >= available.x;
|
|
69
|
+
const fitsAfter = after + panel.width <= right;
|
|
70
|
+
if (fitsBefore || fitsAfter)
|
|
71
|
+
return {
|
|
72
|
+
left: (roomierBefore && fitsBefore) || !fitsAfter ? before : after,
|
|
73
|
+
top: clamp(trigger.y, available.y, available.height, panel.height),
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
const gap = content ? CONTEXT_CONTENT_GAP : phone ? 12 : 17;
|
|
77
|
+
const below = trigger.y + trigger.height + gap;
|
|
78
|
+
const above = trigger.y - panel.height - gap;
|
|
79
|
+
const offset = triggerCenter - (available.x + available.width / 2);
|
|
80
|
+
// Lifted content keeps an edge even 19.5 pt off centre (r2 698 pt bubble: leading).
|
|
81
|
+
const left = !content
|
|
82
|
+
? triggerCenter - panel.width / 2
|
|
83
|
+
: offset <= 0
|
|
84
|
+
? trigger.x
|
|
85
|
+
: trigger.x + trigger.width - panel.width;
|
|
86
|
+
const bottom = available.y + available.height;
|
|
87
|
+
// Lifted content's menu takes the roomier side when it fits there (native: a second-row
|
|
88
|
+
// tile and a lower bubble open upward, a first-row tile and a preview downward).
|
|
89
|
+
const roomier = content && trigger.y - available.y > bottom - (trigger.y + trigger.height);
|
|
90
|
+
// Content too tall to leave room on either side keeps the menu over its top.
|
|
91
|
+
const over = content && above < available.y && below + panel.height > bottom;
|
|
92
|
+
return {
|
|
93
|
+
left: clamp(left, available.x, available.width, panel.width),
|
|
94
|
+
top: clamp(over
|
|
95
|
+
? available.y
|
|
96
|
+
: above >= available.y && (roomier || below + panel.height > bottom)
|
|
97
|
+
? above
|
|
98
|
+
: below, available.y, available.height, panel.height),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
if (phone) {
|
|
102
|
+
const offset = triggerCenter - (available.x + available.width / 2);
|
|
103
|
+
const left = Math.abs(offset) <= MENU_CENTER_BAND
|
|
104
|
+
? triggerCenter - panel.width / 2
|
|
105
|
+
: offset < 0
|
|
106
|
+
? trigger.x
|
|
107
|
+
: trigger.x + trigger.width - panel.width;
|
|
108
|
+
const top = menuOpensUpward(trigger, panel, available)
|
|
109
|
+
? trigger.y + trigger.height - panel.height
|
|
110
|
+
: trigger.y;
|
|
111
|
+
return {
|
|
112
|
+
left: clamp(left, available.x, available.width, panel.width),
|
|
113
|
+
top: clamp(top, available.y, available.height, panel.height),
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
const rowCenter = firstRow ? firstRow.y + firstRow.height / 2 - panel.y : panel.height / 2;
|
|
117
|
+
return {
|
|
118
|
+
left: clamp(triggerCenter - panel.width / 2, available.x, available.width, panel.width),
|
|
119
|
+
top: clamp(trigger.y + trigger.height / 2 + 3 - rowCenter, available.y, available.height, panel.height),
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
/** An iPhone menu hangs from its trigger's top, and opens upward from its trigger's bottom when
|
|
123
|
+
* it would not fit below (and does fit above). */
|
|
124
|
+
export function menuOpensUpward(trigger, panel, available) {
|
|
125
|
+
const fitsBelow = trigger.y + panel.height <= available.y + available.height;
|
|
126
|
+
const fitsAbove = trigger.y + trigger.height - panel.height >= available.y;
|
|
127
|
+
return !fitsBelow && fitsAbove;
|
|
128
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { MenuEntry } from './menuTypes.js';
|
|
2
|
+
import { type MenuContactSample } from '../menu/menuContact.js';
|
|
3
|
+
import { type ReactNode } from 'react';
|
|
4
|
+
import { type PressableProps } from '../press/Pressable.js';
|
|
5
|
+
export type MenuTriggerProps = Pick<PressableProps, 'onPress' | 'disabled' | 'aria-expanded' | 'aria-haspopup' | 'aria-controls'>;
|
|
6
|
+
export type MenuProps = Readonly<{
|
|
7
|
+
label: ReactNode;
|
|
8
|
+
disabled?: boolean;
|
|
9
|
+
actions: readonly MenuEntry[];
|
|
10
|
+
/** @unstable Custom menu triggers may change. Forward every supplied trigger prop. */
|
|
11
|
+
trigger?: (props: MenuTriggerProps) => ReactNode;
|
|
12
|
+
}>;
|
|
13
|
+
/** Shared presentation and contact ownership for every menu source. */
|
|
14
|
+
export type MenuSource = {
|
|
15
|
+
kind: 'trigger';
|
|
16
|
+
element: HTMLElement;
|
|
17
|
+
contact?: MenuContactSample;
|
|
18
|
+
} | {
|
|
19
|
+
kind: 'context';
|
|
20
|
+
element: HTMLElement;
|
|
21
|
+
contact?: MenuContactSample;
|
|
22
|
+
};
|
|
23
|
+
export declare function useMenuPresenter({ label, actions, disabled, preview, }: Omit<MenuProps, 'trigger'> & {
|
|
24
|
+
preview?: ReactNode;
|
|
25
|
+
}): {
|
|
26
|
+
id: string;
|
|
27
|
+
open: boolean;
|
|
28
|
+
presentation: import("react").ReactPortal | null;
|
|
29
|
+
close: () => void;
|
|
30
|
+
ownsContact: () => boolean;
|
|
31
|
+
prepare(next: MenuSource, pointerId?: number, contactEpoch?: number): void;
|
|
32
|
+
show: (next?: MenuSource) => void;
|
|
33
|
+
cancelPreparation(pointerId?: number): void;
|
|
34
|
+
};
|