@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,306 @@
|
|
|
1
|
+
import { animateElement, timelineStart } from '../motion/animate.js';
|
|
2
|
+
import { menuSpring } from './lens/menuSpring.js';
|
|
3
|
+
import { setGlassShapeTrack } from './shapeTrackRegistry.js';
|
|
4
|
+
import { shapeTrackClock, shapeTrackEnvelope, shapeTrackFrame, } from './shapeTrack.js';
|
|
5
|
+
import { springMotion, springTrack, sampledKeyframes, } from '../motion/springTrack.js';
|
|
6
|
+
/**
|
|
7
|
+
* Nested menus, measured from stock SwiftUI on iOS 27.0 (submenus/SPEC.md).
|
|
8
|
+
*
|
|
9
|
+
* iPhone stacks each submenu over its parent: the parent shrinks to 0.97 about its top edge and
|
|
10
|
+
* its rows dim to half ink, and the child grows out of the row that opened it into a full-width
|
|
11
|
+
* platter whose title row sits 12 pt above where that row now is. iPad opens a cascade beside the
|
|
12
|
+
* parent instead: the child overlaps the parent's edge by 12 pt and its first row lines up with
|
|
13
|
+
* the row that opened it, while the parent stays as it was.
|
|
14
|
+
*
|
|
15
|
+
* Springs are fitted per track from a 60 Hz presentation-layer trace of the native Simulator
|
|
16
|
+
* (submenus-impl/fit-open-child.json and fit-back.json; RMS residuals under 0.2 pt / 0.004 ink).
|
|
17
|
+
* Forward and back are fitted separately: the child opens slightly underdamped (zeta 0.85) and
|
|
18
|
+
* collapses critically damped (zeta 1.0). The iPad cascade's motion is unmeasured; it uses the
|
|
19
|
+
* same child springs until an iPad trace exists.
|
|
20
|
+
*
|
|
21
|
+
* Only the glass changes size. The same trace shows the child's rows keeping their full size
|
|
22
|
+
* throughout: on the way back the glass shrinks around the title row while the rows drift 3.6 pt,
|
|
23
|
+
* so the title lands exactly on the row that opened it, and the title's chevron turns from down to
|
|
24
|
+
* forward on its own spring (measured Oct 13: the content and chevron fits).
|
|
25
|
+
*/
|
|
26
|
+
export const SUBMENU_GEOMETRY = {
|
|
27
|
+
/** Each ancestor level below the top submenu shrinks by this much more (0.97, 0.94, ...). */
|
|
28
|
+
parentScaleStep: 0.03,
|
|
29
|
+
/** Ink of an ancestor's rows while a submenu covers it. */
|
|
30
|
+
parentInk: 0.5,
|
|
31
|
+
/** The child's top sits this far above the (scaled) top of the row that opened it. */
|
|
32
|
+
phoneTitleLift: 12,
|
|
33
|
+
/** The iPad child overlaps the parent's edge by this much. */
|
|
34
|
+
padEdgeOverlap: 12,
|
|
35
|
+
/** The iPad child's first row starts this far above the row that opened it. */
|
|
36
|
+
padRowLift: 1,
|
|
37
|
+
};
|
|
38
|
+
const OPEN = {
|
|
39
|
+
/** Width, height and x of the child's glass: one spring. */
|
|
40
|
+
frame: { stiffness: 249.05, damping: 26.89 },
|
|
41
|
+
/** The glass's top settles faster than its size (overdamped). */
|
|
42
|
+
top: { stiffness: 1027.7, damping: 107.3 },
|
|
43
|
+
/** The child's rows keep their size and move only from the opening row to their place. */
|
|
44
|
+
content: { stiffness: 608.68, damping: 108.1 },
|
|
45
|
+
/** The title's chevron turns from pointing forward to pointing down. */
|
|
46
|
+
chevron: { stiffness: 1200, damping: 73.44 },
|
|
47
|
+
parentScale: { stiffness: 257.9, damping: 27.7 },
|
|
48
|
+
/** The parent's rows start dimming 50 ms after the child starts to grow. */
|
|
49
|
+
parentInk: { stiffness: 92.36, damping: 16.26, delay: 50 },
|
|
50
|
+
};
|
|
51
|
+
const BACK = {
|
|
52
|
+
frame: { stiffness: 246.2, damping: 31.35 },
|
|
53
|
+
top: { stiffness: 194.1, damping: 26.41 },
|
|
54
|
+
parentScale: { stiffness: 216.3, damping: 27.78 },
|
|
55
|
+
parentInk: { stiffness: 241.1, damping: 30.74 },
|
|
56
|
+
/** The child's rows fade out as it collapses into its row. */
|
|
57
|
+
fade: { stiffness: 157.5, damping: 25.07 },
|
|
58
|
+
/** The rows keep their size and move only until the title sits on the row that opened it. */
|
|
59
|
+
content: { stiffness: 148, damping: 21.41 },
|
|
60
|
+
/** The title's chevron turns back from pointing down to pointing forward. */
|
|
61
|
+
chevron: { stiffness: 150, damping: 24 },
|
|
62
|
+
};
|
|
63
|
+
export const SUBMENU_SPRINGS = { open: OPEN, back: BACK };
|
|
64
|
+
/** Progress (0 to 1) of a measured spring `ms` after it starts. */
|
|
65
|
+
export function springProgress(parameters, ms) {
|
|
66
|
+
return 1 - menuSpring(springMotion(parameters), ms).value;
|
|
67
|
+
}
|
|
68
|
+
/** Compositor keyframes for one measured spring, from `from` to `to`. */
|
|
69
|
+
export function springKeyframes(parameters, frame) {
|
|
70
|
+
const track = springTrack(springMotion(parameters));
|
|
71
|
+
return { keyframes: sampledKeyframes(track, frame), duration: track.duration };
|
|
72
|
+
}
|
|
73
|
+
/** Scale of a level that has `covering` submenu levels open above it. */
|
|
74
|
+
export function ancestorScale(covering) {
|
|
75
|
+
return 1 - SUBMENU_GEOMETRY.parentScaleStep * covering;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Where a phone submenu settles, in the root platter's coordinates. `parent` is the parent
|
|
79
|
+
* platter's resting frame and `row` the opening row's resting frame; the parent then shrinks to
|
|
80
|
+
* `parentScale` about its top edge.
|
|
81
|
+
*/
|
|
82
|
+
export function phoneSubmenuFrame(parent, row, parentScale, child, bounds) {
|
|
83
|
+
const scaledRowTop = parent.y + (row.y - parent.y) * parentScale;
|
|
84
|
+
const y = scaledRowTop - SUBMENU_GEOMETRY.phoneTitleLift;
|
|
85
|
+
return {
|
|
86
|
+
x: parent.x + (parent.width - child.width) / 2,
|
|
87
|
+
y: clamp(y, bounds.y, bounds.y + bounds.height - child.height),
|
|
88
|
+
width: child.width,
|
|
89
|
+
height: child.height,
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Where an iPad submenu settles: beside the parent, overlapping its trailing edge, with its first
|
|
94
|
+
* row level with the opening row. It flips to the leading side when the trailing side has no room.
|
|
95
|
+
*/
|
|
96
|
+
export function padSubmenuFrame(parent, row, child, bounds) {
|
|
97
|
+
const overlap = SUBMENU_GEOMETRY.padEdgeOverlap;
|
|
98
|
+
const trailing = parent.x + parent.width - overlap;
|
|
99
|
+
const leading = parent.x + overlap - child.width;
|
|
100
|
+
const fitsTrailing = trailing + child.width <= bounds.x + bounds.width;
|
|
101
|
+
const y = row.y - SUBMENU_GEOMETRY.padRowLift - child.firstRowOffset;
|
|
102
|
+
// A window too narrow for either side keeps the child on screen over more of its parent.
|
|
103
|
+
const x = fitsTrailing || leading < bounds.x ? trailing : leading;
|
|
104
|
+
return {
|
|
105
|
+
x: clamp(x, bounds.x, bounds.x + bounds.width - child.width),
|
|
106
|
+
y: clamp(y, bounds.y, bounds.y + bounds.height - child.height),
|
|
107
|
+
width: child.width,
|
|
108
|
+
height: child.height,
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
function clamp(value, min, max) {
|
|
112
|
+
return Math.max(min, Math.min(value, Math.max(min, max)));
|
|
113
|
+
}
|
|
114
|
+
/** Glass frames are sampled at 120 Hz; the renderer and the page interpolate between them. */
|
|
115
|
+
const SAMPLE_MS = 1000 / 120;
|
|
116
|
+
/**
|
|
117
|
+
* The child's glass frame from `from` to `to`, sampled from the measured springs until it settles:
|
|
118
|
+
* x, width and height share one spring and the top has its own.
|
|
119
|
+
*/
|
|
120
|
+
export function submenuGlassFrames(from, to, direction) {
|
|
121
|
+
const springs = SUBMENU_SPRINGS[direction];
|
|
122
|
+
const frames = [];
|
|
123
|
+
for (let ms = 0;; ms += SAMPLE_MS) {
|
|
124
|
+
const size = springProgress(springs.frame, ms);
|
|
125
|
+
const top = springProgress(springs.top, ms);
|
|
126
|
+
const settled = Math.abs(1 - size) * Math.max(Math.abs(to.height - from.height), 1) < 0.05 &&
|
|
127
|
+
Math.abs(1 - top) * Math.max(Math.abs(to.y - from.y), 1) < 0.05;
|
|
128
|
+
if (settled || ms > 3000) {
|
|
129
|
+
frames.push(to);
|
|
130
|
+
break;
|
|
131
|
+
}
|
|
132
|
+
frames.push({
|
|
133
|
+
x: from.x + (to.x - from.x) * size,
|
|
134
|
+
y: from.y + (to.y - from.y) * top,
|
|
135
|
+
width: from.width + (to.width - from.width) * size,
|
|
136
|
+
height: from.height + (to.height - from.height) * size,
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
return { frames, duration: (frames.length - 1) * SAMPLE_MS };
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Where a phone child's content must sit for its title row to cover the row that opened it:
|
|
143
|
+
* `titleOffset` is the title row's position inside the content. The child grows out of that place
|
|
144
|
+
* and collapses back into it, so the title never jumps when the platter appears or leaves.
|
|
145
|
+
*/
|
|
146
|
+
export function titleOnRow(row, titleOffset) {
|
|
147
|
+
return { x: row.x - titleOffset.x, y: row.y - titleOffset.y };
|
|
148
|
+
}
|
|
149
|
+
/** The content's position `ms` into a transition from `from` to `to`. */
|
|
150
|
+
export function submenuContentAt(from, to, direction, ms) {
|
|
151
|
+
const progress = springProgress(SUBMENU_SPRINGS[direction].content, ms);
|
|
152
|
+
return { x: from.x + (to.x - from.x) * progress, y: from.y + (to.y - from.y) * progress };
|
|
153
|
+
}
|
|
154
|
+
/** Compositor keyframes that turn the title's chevron: forward is a quarter turn back from down. */
|
|
155
|
+
export function chevronKeyframes(direction, fromDegrees) {
|
|
156
|
+
const forward = -90;
|
|
157
|
+
const start = fromDegrees ?? (direction === 'open' ? forward : 0);
|
|
158
|
+
const end = direction === 'open' ? 0 : forward;
|
|
159
|
+
return springKeyframes(SUBMENU_SPRINGS[direction].chevron, progress => ({
|
|
160
|
+
transform: `rotate(${start + (end - start) * progress}deg)`,
|
|
161
|
+
}));
|
|
162
|
+
}
|
|
163
|
+
const visibleFrames = new WeakMap();
|
|
164
|
+
const contentPlaces = new WeakMap();
|
|
165
|
+
const activeRuns = new WeakMap();
|
|
166
|
+
/** Where a platter's glass is now (not its layout box, which may be larger while it moves). */
|
|
167
|
+
export function submenuVisibleFrame(platter) {
|
|
168
|
+
return activeRuns.get(platter)?.frame() ?? visibleFrames.get(platter);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Move a child platter's glass from `from` to `to` on the measured springs, and its content from
|
|
172
|
+
* `contentFrom` to `contentTo` on its own spring.
|
|
173
|
+
*
|
|
174
|
+
* The platter's layout box holds the envelope of every frame of the run, so its glass canvas never
|
|
175
|
+
* resizes or moves: the backdrop stays where it is on screen and only the glass's edge moves
|
|
176
|
+
* (shapeTrack.ts). The glass is drawn from a shape track, and the content is clipped to the same
|
|
177
|
+
* frames, read from the same track. Returns a function that stops the motion where it is.
|
|
178
|
+
*/
|
|
179
|
+
export function animateSubmenuFrame(parts, from, to, contentFrom, contentTo, direction, done) {
|
|
180
|
+
const run = startRun(parts, from, to, direction, shapeTrackClock());
|
|
181
|
+
const { envelope, track } = run;
|
|
182
|
+
// Sample content until the same positional tolerance used by the old frame loop.
|
|
183
|
+
let duration = track.duration;
|
|
184
|
+
while (Math.hypot(contentTo.x - submenuContentAt(contentFrom, contentTo, direction, duration).x, contentTo.y - submenuContentAt(contentFrom, contentTo, direction, duration).y) >= 0.05 &&
|
|
185
|
+
duration < 10000)
|
|
186
|
+
duration += SAMPLE_MS;
|
|
187
|
+
const count = Math.max(1, Math.ceil(duration / SAMPLE_MS));
|
|
188
|
+
duration = count * SAMPLE_MS;
|
|
189
|
+
const placeAt = (age) => age >= duration
|
|
190
|
+
? contentTo
|
|
191
|
+
: submenuContentAt(contentFrom, contentTo, direction, Math.max(0, age));
|
|
192
|
+
const contentFrames = [];
|
|
193
|
+
const clipFrames = [];
|
|
194
|
+
for (let index = 0; index <= count; index++) {
|
|
195
|
+
const age = index * SAMPLE_MS;
|
|
196
|
+
contentFrames.push({ offset: index / count, transform: run.transform(placeAt(age)) });
|
|
197
|
+
clipFrames.push({ offset: index / count, clipPath: run.clipPath(track.epoch + age) });
|
|
198
|
+
}
|
|
199
|
+
run.write(track.epoch, contentFrom);
|
|
200
|
+
const options = { duration, easing: 'linear', fill: 'both' };
|
|
201
|
+
const animations = [
|
|
202
|
+
animateElement(parts.content, contentFrames, options),
|
|
203
|
+
// The rounded clip must follow the glass without scaling the rows or their corners.
|
|
204
|
+
// WAAPI owns this track; compositor acceleration of clip-path needs WebKit evidence.
|
|
205
|
+
animateElement(parts.clip, clipFrames, options),
|
|
206
|
+
];
|
|
207
|
+
const start = timelineStart(track.epoch - performance.timeOrigin);
|
|
208
|
+
for (const animation of animations)
|
|
209
|
+
animation.startTime = start;
|
|
210
|
+
const live = {
|
|
211
|
+
frame: () => run.frameAt(shapeTrackClock()),
|
|
212
|
+
content: () => placeAt(shapeTrackClock() - track.epoch),
|
|
213
|
+
};
|
|
214
|
+
activeRuns.set(parts.platter, live);
|
|
215
|
+
let stopped = false;
|
|
216
|
+
const stop = (finished) => {
|
|
217
|
+
if (stopped)
|
|
218
|
+
return;
|
|
219
|
+
stopped = true;
|
|
220
|
+
const at = finished ? track.epoch + duration : shapeTrackClock();
|
|
221
|
+
run.write(at, finished ? contentTo : placeAt(at - track.epoch));
|
|
222
|
+
// Freeze the renderer at the same point before a reversal or whole-menu dismissal.
|
|
223
|
+
const frame = shapeTrackFrame(track, at);
|
|
224
|
+
setGlassShapeTrack(parts.glass, { epoch: Number.MAX_VALUE, duration: 0, frames: [frame] });
|
|
225
|
+
if (activeRuns.get(parts.platter) === live)
|
|
226
|
+
activeRuns.delete(parts.platter);
|
|
227
|
+
for (const animation of animations)
|
|
228
|
+
animation.cancel();
|
|
229
|
+
if (finished) {
|
|
230
|
+
if (sameFrame(envelope, to)) {
|
|
231
|
+
setGlassShapeTrack(parts.glass, undefined);
|
|
232
|
+
parts.clip.style.clipPath = '';
|
|
233
|
+
}
|
|
234
|
+
done?.();
|
|
235
|
+
}
|
|
236
|
+
};
|
|
237
|
+
void Promise.all(animations.map(animation => animation.finished)).then(() => stop(true), () => { });
|
|
238
|
+
return () => stop(false);
|
|
239
|
+
}
|
|
240
|
+
/**
|
|
241
|
+
* Lay a platter out for a run that has not started: its box is already the run's envelope and its
|
|
242
|
+
* glass holds the first frame, so the glass the platter first appears with is drawn in the canvas
|
|
243
|
+
* the whole run keeps.
|
|
244
|
+
*/
|
|
245
|
+
export function holdSubmenuFrame(parts, from, to, contentFrom, direction) {
|
|
246
|
+
const run = startRun(parts, from, to, direction, Number.MAX_VALUE);
|
|
247
|
+
run.write(run.track.epoch, contentFrom);
|
|
248
|
+
}
|
|
249
|
+
/** Fix the run's envelope as the platter's layout box and give its glass the run's shape track. */
|
|
250
|
+
function startRun(parts, from, to, direction, epoch) {
|
|
251
|
+
const { platter, glass, clip, content, cornerRadius } = parts;
|
|
252
|
+
const { frames, duration } = submenuGlassFrames(from, to, direction);
|
|
253
|
+
const laidOut = layoutBox(platter);
|
|
254
|
+
const envelope = shapeTrackEnvelope(laidOut ? [laidOut, ...frames] : frames);
|
|
255
|
+
writeBox(platter, envelope);
|
|
256
|
+
const local = (frame) => ({ ...frame, x: frame.x - envelope.x, y: frame.y - envelope.y });
|
|
257
|
+
const track = { epoch, duration, frames: frames.map(local) };
|
|
258
|
+
setGlassShapeTrack(glass, track);
|
|
259
|
+
const frameAt = (at) => {
|
|
260
|
+
const frame = shapeTrackFrame(track, at);
|
|
261
|
+
return { ...frame, x: frame.x + envelope.x, y: frame.y + envelope.y };
|
|
262
|
+
};
|
|
263
|
+
const transform = (place) => `translate(${place.x - envelope.x}px, ${place.y - envelope.y}px)`;
|
|
264
|
+
const clipPath = (at) => {
|
|
265
|
+
const frame = shapeTrackFrame(track, at);
|
|
266
|
+
const radius = Math.min(cornerRadius, frame.width / 2, frame.height / 2);
|
|
267
|
+
const right = envelope.width - frame.x - frame.width;
|
|
268
|
+
const bottom = envelope.height - frame.y - frame.height;
|
|
269
|
+
return `inset(${frame.y}px ${right}px ${bottom}px ${frame.x}px round ${radius}px)`;
|
|
270
|
+
};
|
|
271
|
+
// Writes happen only at admission, interruption and settlement, never per display frame.
|
|
272
|
+
const write = (at, place) => {
|
|
273
|
+
clip.style.clipPath = clipPath(at);
|
|
274
|
+
content.style.transform = transform(place);
|
|
275
|
+
visibleFrames.set(platter, frameAt(at));
|
|
276
|
+
contentPlaces.set(platter, place);
|
|
277
|
+
};
|
|
278
|
+
return { envelope, track, write, frameAt, transform, clipPath };
|
|
279
|
+
}
|
|
280
|
+
/** Where a platter's content sits now, if a transition has placed it. */
|
|
281
|
+
export function submenuContentPlace(platter) {
|
|
282
|
+
return activeRuns.get(platter)?.content() ?? contentPlaces.get(platter);
|
|
283
|
+
}
|
|
284
|
+
function layoutBox(element) {
|
|
285
|
+
const style = element.style;
|
|
286
|
+
if (!style.width || !style.height)
|
|
287
|
+
return undefined;
|
|
288
|
+
return {
|
|
289
|
+
x: parseFloat(style.left),
|
|
290
|
+
y: parseFloat(style.top),
|
|
291
|
+
width: parseFloat(style.width),
|
|
292
|
+
height: parseFloat(style.height),
|
|
293
|
+
};
|
|
294
|
+
}
|
|
295
|
+
function writeBox(element, box) {
|
|
296
|
+
element.style.left = `${box.x}px`;
|
|
297
|
+
element.style.top = `${box.y}px`;
|
|
298
|
+
element.style.width = `${box.width}px`;
|
|
299
|
+
element.style.height = `${box.height}px`;
|
|
300
|
+
}
|
|
301
|
+
function sameFrame(a, b) {
|
|
302
|
+
return (Math.abs(a.x - b.x) < 0.25 &&
|
|
303
|
+
Math.abs(a.y - b.y) < 0.25 &&
|
|
304
|
+
Math.abs(a.width - b.width) < 0.25 &&
|
|
305
|
+
Math.abs(a.height - b.height) < 0.25);
|
|
306
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TabBarItem } from './TabBar.js';
|
|
2
|
+
/** A bottom accessory expands native phone tabs to the full dock. */
|
|
3
|
+
export declare const TabBarAccessoryContext: import("react").Context<boolean>;
|
|
4
|
+
/** iOS 27 intrinsic platters have 8 pt end margins and 8 pt overlapping selections. */
|
|
5
|
+
export declare function intrinsicTabGeometry(width: number, count: number): {
|
|
6
|
+
centres: number[];
|
|
7
|
+
selectionWidth: number;
|
|
8
|
+
};
|
|
9
|
+
export declare function isSupportedTabCount(count: number): boolean;
|
|
10
|
+
export declare function resolveTabBarModel(items: readonly TabBarItem[], selected: string, allowUnselected?: boolean): {
|
|
11
|
+
selectedIndex: number;
|
|
12
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { createContext } from 'react';
|
|
2
|
+
/** A bottom accessory expands native phone tabs to the full dock. */
|
|
3
|
+
export const TabBarAccessoryContext = createContext(false);
|
|
4
|
+
/** iOS 27 intrinsic platters have 8 pt end margins and 8 pt overlapping selections. */
|
|
5
|
+
export function intrinsicTabGeometry(width, count) {
|
|
6
|
+
const spacing = (width - 16) / count;
|
|
7
|
+
return {
|
|
8
|
+
centres: Array.from({ length: count }, (_, index) => 8 + spacing * (index + 0.5)),
|
|
9
|
+
selectionWidth: spacing + 8,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
export function isSupportedTabCount(count) {
|
|
13
|
+
return count >= 2 && count <= 5;
|
|
14
|
+
}
|
|
15
|
+
export function resolveTabBarModel(items, selected, allowUnselected = false) {
|
|
16
|
+
if (!isSupportedTabCount(items.length)) {
|
|
17
|
+
throw new Error('TabBar requires between two and five controlled items.');
|
|
18
|
+
}
|
|
19
|
+
const ids = new Set();
|
|
20
|
+
for (const item of items) {
|
|
21
|
+
if (!item.id)
|
|
22
|
+
throw new Error('TabBar item ids must be non-empty.');
|
|
23
|
+
if (ids.has(item.id))
|
|
24
|
+
throw new Error(`TabBar item id "${item.id}" is duplicated.`);
|
|
25
|
+
ids.add(item.id);
|
|
26
|
+
}
|
|
27
|
+
const selectedIndex = items.findIndex(item => item.id === selected);
|
|
28
|
+
if (selectedIndex < 0 && !allowUnselected) {
|
|
29
|
+
throw new Error(`TabBar selected id "${selected}" is not registered.`);
|
|
30
|
+
}
|
|
31
|
+
return { selectedIndex };
|
|
32
|
+
}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from './renderSpecs.js';
|
|
2
|
+
export * from './lens/Scene.js';
|
|
3
|
+
export * from './lens/theme.js';
|
|
4
|
+
export * from './lens/referenceBackground.js';
|
|
5
|
+
export * from './lens/motion.js';
|
|
6
|
+
export * from './lens/trace.js';
|
|
7
|
+
export * from './lens/icons.js';
|
|
8
|
+
export * from './lens/liquidMotion.js';
|
|
9
|
+
export * from './lens/menuMotion.js';
|
|
10
|
+
export * from './lens/tabSelectionMaterial.js';
|
|
11
|
+
export * from './lens/tabPresentation.js';
|
|
12
|
+
export { GlassPresentation as GlassSpecimen } from './GlassPresentation.js';
|
|
13
|
+
export * from './lens/bitmapBackdrop.js';
|
|
14
|
+
export { GlassConfusionReview } from './GlassConfusionReview.js';
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export * from './renderSpecs.js';
|
|
2
|
+
export * from './lens/Scene.js';
|
|
3
|
+
export * from './lens/theme.js';
|
|
4
|
+
export * from './lens/referenceBackground.js';
|
|
5
|
+
export * from './lens/motion.js';
|
|
6
|
+
export * from './lens/trace.js';
|
|
7
|
+
export * from './lens/icons.js';
|
|
8
|
+
export * from './lens/liquidMotion.js';
|
|
9
|
+
export * from './lens/menuMotion.js';
|
|
10
|
+
export * from './lens/tabSelectionMaterial.js';
|
|
11
|
+
export * from './lens/tabPresentation.js';
|
|
12
|
+
export { GlassPresentation as GlassSpecimen } from './GlassPresentation.js';
|
|
13
|
+
export * from './lens/bitmapBackdrop.js';
|
|
14
|
+
export { GlassConfusionReview } from './GlassConfusionReview.js';
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
export type GlassVariant = 'regular' | 'clear';
|
|
2
|
+
export declare const GLASS_BAR_HEIGHT_PX = 54;
|
|
3
|
+
export declare const GLASS_TAB_BAR_HEIGHT_PX = 60;
|
|
4
|
+
export declare const GLASS_TAB_BAR_INLINE_INSET_PX = 16;
|
|
5
|
+
export declare const GLASS_TAB_BAR_BOTTOM_GAP_PX = 21;
|
|
6
|
+
export declare const GLASS_COMPACT_TAB_BAR_HEIGHT_PX = 44;
|
|
7
|
+
export declare const GLASS_COMPACT_TAB_BAR_BOTTOM_GAP_PX = 20;
|
|
8
|
+
export declare const GLASS_CONTROL_SIZE_PX = 44;
|
|
9
|
+
export declare const GLASS_LENS_STRENGTH = 0.1;
|
|
10
|
+
export declare const GLASS_LENS_CHROMATIC_ABERRATION = 0.2;
|
|
11
|
+
export declare const GLASS_LENS_BLUR_PX = 0;
|
|
12
|
+
export declare const GLASS_LENS_DEPTH_PX = 10;
|
|
13
|
+
export declare const GLASS_LENS_CURVATURE = 0.65;
|
|
14
|
+
export declare const GLASS_LENS_SPLAY = 1;
|
|
15
|
+
export declare const GLASS_LENS_GLOW = 0.1;
|
|
16
|
+
export declare const GLASS_LENS_GLOW_SPREAD = 1;
|
|
17
|
+
export declare const GLASS_LENS_GLOW_EXPONENT = 1.5;
|
|
18
|
+
export declare const GLASS_LENS_EDGE_HIGHLIGHT = 0.25;
|
|
19
|
+
export declare const GLASS_LENS_EDGE_WIDTH_PX = 3;
|
|
20
|
+
export declare const GLASS_LENS_EDGE_EXPONENT = 1.5;
|
|
21
|
+
export declare const GLASS_LENS_SPECULAR = 1;
|
|
22
|
+
export declare const GLASS_LENS_SPECULAR_ANGLE_DEG = 45;
|
|
23
|
+
export declare const GLASS_REGULAR_SATURATION = 1.04;
|
|
24
|
+
export declare const GLASS_CLEAR_SATURATION = 1;
|
|
25
|
+
export declare const GLASS_REGULAR_BRIGHTNESS = 1.02;
|
|
26
|
+
export declare const GLASS_CLEAR_BRIGHTNESS = 1;
|
|
27
|
+
export declare const GLASS_TINT_RGB = "255 255 255";
|
|
28
|
+
export declare const GLASS_REGULAR_TINT_ALPHA = 0.06;
|
|
29
|
+
export declare const GLASS_CLEAR_TINT_ALPHA = 0;
|
|
30
|
+
export declare const GLASS_RIM_HIGHLIGHT_ALPHA = 0.25;
|
|
31
|
+
export declare const GLASS_RIM_SHADOW_ALPHA = 0.35;
|
|
32
|
+
export declare const GLASS_BAR_EDGE_HIGHLIGHT_ALPHA = 0.25;
|
|
33
|
+
export declare const GLASS_BAR_SHADOW_ALPHA = 0.2;
|
|
34
|
+
export declare const GLASS_SELECTION_DURATION_MS = 300;
|
|
35
|
+
export declare const GLASS_SELECTION_EASING = "cubic-bezier(0.2, 0.82, 0.2, 1)";
|
|
36
|
+
export declare const glassTokens: Readonly<{
|
|
37
|
+
barHeight: 54;
|
|
38
|
+
tabBarHeight: 60;
|
|
39
|
+
tabBarInlineInset: 16;
|
|
40
|
+
tabBarBottomGap: 21;
|
|
41
|
+
controlSize: 44;
|
|
42
|
+
lens: Readonly<{
|
|
43
|
+
blur: 0;
|
|
44
|
+
chromaticAberration: 0.2;
|
|
45
|
+
curvature: 0.65;
|
|
46
|
+
depth: 10;
|
|
47
|
+
edgeExponent: 1.5;
|
|
48
|
+
edgeHighlight: 0.25;
|
|
49
|
+
edgeWidth: 3;
|
|
50
|
+
glow: 0.1;
|
|
51
|
+
glowExponent: 1.5;
|
|
52
|
+
glowSpread: 1;
|
|
53
|
+
specular: 1;
|
|
54
|
+
specularAngle: 45;
|
|
55
|
+
splay: 1;
|
|
56
|
+
strength: 0.1;
|
|
57
|
+
}>;
|
|
58
|
+
regular: Readonly<{
|
|
59
|
+
brightness: 1.02;
|
|
60
|
+
saturation: 1.04;
|
|
61
|
+
tintAlpha: 0.06;
|
|
62
|
+
}>;
|
|
63
|
+
clear: Readonly<{
|
|
64
|
+
brightness: 1;
|
|
65
|
+
saturation: 1;
|
|
66
|
+
tintAlpha: 0;
|
|
67
|
+
}>;
|
|
68
|
+
rim: Readonly<{
|
|
69
|
+
barEdgeHighlightAlpha: 0.25;
|
|
70
|
+
barShadowAlpha: 0.2;
|
|
71
|
+
highlightAlpha: 0.25;
|
|
72
|
+
shadowAlpha: 0.35;
|
|
73
|
+
}>;
|
|
74
|
+
tintRgb: "255 255 255";
|
|
75
|
+
selection: Readonly<{
|
|
76
|
+
duration: 300;
|
|
77
|
+
easing: "cubic-bezier(0.2, 0.82, 0.2, 1)";
|
|
78
|
+
}>;
|
|
79
|
+
}>;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
export const GLASS_BAR_HEIGHT_PX = 54;
|
|
2
|
+
export const GLASS_TAB_BAR_HEIGHT_PX = 60;
|
|
3
|
+
export const GLASS_TAB_BAR_INLINE_INSET_PX = 16;
|
|
4
|
+
// UIKit's iOS 27 floating tab platter ends 21 pt above the physical screen
|
|
5
|
+
// bottom. This is a screen-edge offset, not extra padding above WebKit's
|
|
6
|
+
// reported safe-area inset; UIKit deliberately occupies the bottom safe area.
|
|
7
|
+
export const GLASS_TAB_BAR_BOTTOM_GAP_PX = 21;
|
|
8
|
+
// Rough-edges native reference: compact phone platter occupies y376–420 in a 440 pt screen.
|
|
9
|
+
export const GLASS_COMPACT_TAB_BAR_HEIGHT_PX = 44;
|
|
10
|
+
export const GLASS_COMPACT_TAB_BAR_BOTTOM_GAP_PX = 20;
|
|
11
|
+
export const GLASS_CONTROL_SIZE_PX = 44;
|
|
12
|
+
// Optical defaults ported from liquid-glass-web-react under the MIT license.
|
|
13
|
+
// The map adapts strength to each registered bar's own geometry.
|
|
14
|
+
export const GLASS_LENS_STRENGTH = 0.1;
|
|
15
|
+
export const GLASS_LENS_CHROMATIC_ABERRATION = 0.2;
|
|
16
|
+
export const GLASS_LENS_BLUR_PX = 0;
|
|
17
|
+
export const GLASS_LENS_DEPTH_PX = 10;
|
|
18
|
+
export const GLASS_LENS_CURVATURE = 0.65;
|
|
19
|
+
export const GLASS_LENS_SPLAY = 1;
|
|
20
|
+
export const GLASS_LENS_GLOW = 0.1;
|
|
21
|
+
export const GLASS_LENS_GLOW_SPREAD = 1;
|
|
22
|
+
export const GLASS_LENS_GLOW_EXPONENT = 1.5;
|
|
23
|
+
export const GLASS_LENS_EDGE_HIGHLIGHT = 0.25;
|
|
24
|
+
export const GLASS_LENS_EDGE_WIDTH_PX = 3;
|
|
25
|
+
export const GLASS_LENS_EDGE_EXPONENT = 1.5;
|
|
26
|
+
export const GLASS_LENS_SPECULAR = 1;
|
|
27
|
+
export const GLASS_LENS_SPECULAR_ANGLE_DEG = 45;
|
|
28
|
+
// The CSS-only fallback stays close to passthrough. It supplies a restrained
|
|
29
|
+
// bright material and rim when the foreground displacement gate is unavailable.
|
|
30
|
+
export const GLASS_REGULAR_SATURATION = 1.04;
|
|
31
|
+
export const GLASS_CLEAR_SATURATION = 1;
|
|
32
|
+
export const GLASS_REGULAR_BRIGHTNESS = 1.02;
|
|
33
|
+
export const GLASS_CLEAR_BRIGHTNESS = 1;
|
|
34
|
+
export const GLASS_TINT_RGB = '255 255 255';
|
|
35
|
+
export const GLASS_REGULAR_TINT_ALPHA = 0.06;
|
|
36
|
+
export const GLASS_CLEAR_TINT_ALPHA = 0;
|
|
37
|
+
export const GLASS_RIM_HIGHLIGHT_ALPHA = 0.25;
|
|
38
|
+
export const GLASS_RIM_SHADOW_ALPHA = 0.35;
|
|
39
|
+
export const GLASS_BAR_EDGE_HIGHLIGHT_ALPHA = 0.25;
|
|
40
|
+
export const GLASS_BAR_SHADOW_ALPHA = 0.2;
|
|
41
|
+
export const GLASS_SELECTION_DURATION_MS = 300;
|
|
42
|
+
export const GLASS_SELECTION_EASING = 'cubic-bezier(0.2, 0.82, 0.2, 1)';
|
|
43
|
+
export const glassTokens = Object.freeze({
|
|
44
|
+
barHeight: GLASS_BAR_HEIGHT_PX,
|
|
45
|
+
tabBarHeight: GLASS_TAB_BAR_HEIGHT_PX,
|
|
46
|
+
tabBarInlineInset: GLASS_TAB_BAR_INLINE_INSET_PX,
|
|
47
|
+
tabBarBottomGap: GLASS_TAB_BAR_BOTTOM_GAP_PX,
|
|
48
|
+
controlSize: GLASS_CONTROL_SIZE_PX,
|
|
49
|
+
lens: Object.freeze({
|
|
50
|
+
blur: GLASS_LENS_BLUR_PX,
|
|
51
|
+
chromaticAberration: GLASS_LENS_CHROMATIC_ABERRATION,
|
|
52
|
+
curvature: GLASS_LENS_CURVATURE,
|
|
53
|
+
depth: GLASS_LENS_DEPTH_PX,
|
|
54
|
+
edgeExponent: GLASS_LENS_EDGE_EXPONENT,
|
|
55
|
+
edgeHighlight: GLASS_LENS_EDGE_HIGHLIGHT,
|
|
56
|
+
edgeWidth: GLASS_LENS_EDGE_WIDTH_PX,
|
|
57
|
+
glow: GLASS_LENS_GLOW,
|
|
58
|
+
glowExponent: GLASS_LENS_GLOW_EXPONENT,
|
|
59
|
+
glowSpread: GLASS_LENS_GLOW_SPREAD,
|
|
60
|
+
specular: GLASS_LENS_SPECULAR,
|
|
61
|
+
specularAngle: GLASS_LENS_SPECULAR_ANGLE_DEG,
|
|
62
|
+
splay: GLASS_LENS_SPLAY,
|
|
63
|
+
strength: GLASS_LENS_STRENGTH,
|
|
64
|
+
}),
|
|
65
|
+
regular: Object.freeze({
|
|
66
|
+
brightness: GLASS_REGULAR_BRIGHTNESS,
|
|
67
|
+
saturation: GLASS_REGULAR_SATURATION,
|
|
68
|
+
tintAlpha: GLASS_REGULAR_TINT_ALPHA,
|
|
69
|
+
}),
|
|
70
|
+
clear: Object.freeze({
|
|
71
|
+
brightness: GLASS_CLEAR_BRIGHTNESS,
|
|
72
|
+
saturation: GLASS_CLEAR_SATURATION,
|
|
73
|
+
tintAlpha: GLASS_CLEAR_TINT_ALPHA,
|
|
74
|
+
}),
|
|
75
|
+
rim: Object.freeze({
|
|
76
|
+
barEdgeHighlightAlpha: GLASS_BAR_EDGE_HIGHLIGHT_ALPHA,
|
|
77
|
+
barShadowAlpha: GLASS_BAR_SHADOW_ALPHA,
|
|
78
|
+
highlightAlpha: GLASS_RIM_HIGHLIGHT_ALPHA,
|
|
79
|
+
shadowAlpha: GLASS_RIM_SHADOW_ALPHA,
|
|
80
|
+
}),
|
|
81
|
+
tintRgb: GLASS_TINT_RGB,
|
|
82
|
+
selection: Object.freeze({
|
|
83
|
+
duration: GLASS_SELECTION_DURATION_MS,
|
|
84
|
+
easing: GLASS_SELECTION_EASING,
|
|
85
|
+
}),
|
|
86
|
+
});
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { type ReactNode } from 'react';
|
|
2
|
+
import type { Glass, GlassShape } from './regions.js';
|
|
3
|
+
/** Navigation glass items own material independently of entry content opacity. */
|
|
4
|
+
export declare const ToolbarMaterialContext: import("react").Context<boolean>;
|
|
5
|
+
export type ToolbarMaterial = {
|
|
6
|
+
glass: Glass;
|
|
7
|
+
shape: GlassShape;
|
|
8
|
+
press?: 'button' | 'bar' | 'menu';
|
|
9
|
+
};
|
|
10
|
+
/** A child describes the slot's material without registering a second renderer region. */
|
|
11
|
+
export declare const toolbarMaterials: WeakMap<HTMLElement, ToolbarMaterial>;
|
|
12
|
+
/** Each run of top-level glass items gets a persistent placement/index owner. */
|
|
13
|
+
export declare function toolbarMaterialOwner(content: HTMLElement | null | undefined): HTMLElement | null | undefined;
|
|
14
|
+
export declare function toolbarMaterialItems(slot: HTMLElement | undefined): HTMLElement[];
|
|
15
|
+
/** Items of consecutive `ToolbarItem`s (one each, with no spacer between) share one glass capsule,
|
|
16
|
+
* as iOS 26+ merges adjacent bar items of a placement. The principal placement never merges. */
|
|
17
|
+
export declare function toolbarMaterialRuns(slot: HTMLElement | undefined): HTMLElement[][];
|
|
18
|
+
/** SearchDrawer hides the bar items of a screen presenting search; they own no glass. */
|
|
19
|
+
export declare function toolbarSearchHidden(element: HTMLElement): boolean;
|
|
20
|
+
export declare function bindToolbarMaterialContent(material: HTMLElement, content: HTMLElement): void;
|
|
21
|
+
export declare function toolbarMaterialContent(material: HTMLElement): HTMLElement;
|
|
22
|
+
/** Every content item carried by the same glass capsule as this trigger. */
|
|
23
|
+
export declare function toolbarMenuContents(trigger: HTMLElement | null | undefined): HTMLElement[];
|
|
24
|
+
export declare function toolbarMenuTrigger(trigger: HTMLElement | null | undefined): HTMLElement | null | undefined;
|
|
25
|
+
/** A portal must have its canvas on its first commit, before first-show readiness binds. */
|
|
26
|
+
export declare function ToolbarMaterialPortal({ children }: {
|
|
27
|
+
children: ReactNode;
|
|
28
|
+
}): import("react").FunctionComponentElement<import("react").ProviderProps<boolean>>;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { createContext, createElement } from 'react';
|
|
2
|
+
/** Navigation glass items own material independently of entry content opacity. */
|
|
3
|
+
export const ToolbarMaterialContext = createContext(false);
|
|
4
|
+
/** A child describes the slot's material without registering a second renderer region. */
|
|
5
|
+
export const toolbarMaterials = new WeakMap();
|
|
6
|
+
/** Each run of top-level glass items gets a persistent placement/index owner. */
|
|
7
|
+
export function toolbarMaterialOwner(content) {
|
|
8
|
+
const slot = content?.closest('[data-satin-navigation-toolbar-slot]');
|
|
9
|
+
if (!slot || !content)
|
|
10
|
+
return;
|
|
11
|
+
const runs = toolbarMaterialRuns(slot);
|
|
12
|
+
const index = runs.findIndex(run => run.some(item => item === content || item.contains(content)));
|
|
13
|
+
if (index < 0)
|
|
14
|
+
return;
|
|
15
|
+
return slot
|
|
16
|
+
.closest('[data-satin-navigation-chrome]')
|
|
17
|
+
?.querySelector(`[data-satin-toolbar-glass="${slot.dataset.satinNavigationToolbarSlot}"][data-satin-toolbar-glass-item="${index}"]`);
|
|
18
|
+
}
|
|
19
|
+
export function toolbarMaterialItems(slot) {
|
|
20
|
+
return [...(slot?.querySelectorAll('[data-satin-glass-slot-content]') ?? [])].filter(item => !item.parentElement?.closest('[data-satin-glass-slot-content]'));
|
|
21
|
+
}
|
|
22
|
+
/** Items of consecutive `ToolbarItem`s (one each, with no spacer between) share one glass capsule,
|
|
23
|
+
* as iOS 26+ merges adjacent bar items of a placement. The principal placement never merges. */
|
|
24
|
+
export function toolbarMaterialRuns(slot) {
|
|
25
|
+
const runs = [];
|
|
26
|
+
let previous = null;
|
|
27
|
+
for (const item of toolbarMaterialItems(slot)) {
|
|
28
|
+
const wrapper = item.closest('[data-satin-toolbar-item="item"]');
|
|
29
|
+
const joins = slot?.dataset.satinNavigationToolbarSlot !== 'principal' &&
|
|
30
|
+
wrapper !== null &&
|
|
31
|
+
previous !== null &&
|
|
32
|
+
previous.nextElementSibling === wrapper &&
|
|
33
|
+
toolbarMaterialItems(wrapper).length === 1;
|
|
34
|
+
if (joins)
|
|
35
|
+
runs.at(-1).push(item);
|
|
36
|
+
else
|
|
37
|
+
runs.push([item]);
|
|
38
|
+
previous = wrapper && toolbarMaterialItems(wrapper).length === 1 ? wrapper : null;
|
|
39
|
+
}
|
|
40
|
+
return runs;
|
|
41
|
+
}
|
|
42
|
+
/** SearchDrawer hides the bar items of a screen presenting search; they own no glass. */
|
|
43
|
+
export function toolbarSearchHidden(element) {
|
|
44
|
+
return Boolean(element.closest('[data-satin-entry-toolbar][data-satin-search-presented]'));
|
|
45
|
+
}
|
|
46
|
+
const materialContents = new WeakMap();
|
|
47
|
+
export function bindToolbarMaterialContent(material, content) {
|
|
48
|
+
materialContents.set(material, content);
|
|
49
|
+
}
|
|
50
|
+
export function toolbarMaterialContent(material) {
|
|
51
|
+
return materialContents.get(material) ?? material;
|
|
52
|
+
}
|
|
53
|
+
/** Every content item carried by the same glass capsule as this trigger. */
|
|
54
|
+
export function toolbarMenuContents(trigger) {
|
|
55
|
+
const slot = trigger?.closest('[data-satin-navigation-toolbar-slot]');
|
|
56
|
+
return (toolbarMaterialRuns(slot ?? undefined).find(run => run.some(item => item === trigger || (trigger && item.contains(trigger)))) ?? (trigger ? [trigger] : []));
|
|
57
|
+
}
|
|
58
|
+
/* Keep Menu trigger geometry local to its presentation context. */
|
|
59
|
+
export function toolbarMenuTrigger(trigger) {
|
|
60
|
+
const slot = trigger?.closest('[data-satin-navigation-toolbar-slot]');
|
|
61
|
+
return (toolbarMaterialItems(slot ?? undefined).find(item => item === trigger || (trigger && item.contains(trigger))) ?? trigger);
|
|
62
|
+
}
|
|
63
|
+
/** A portal must have its canvas on its first commit, before first-show readiness binds. */
|
|
64
|
+
export function ToolbarMaterialPortal({ children }) {
|
|
65
|
+
return createElement(ToolbarMaterialContext, { value: false }, children);
|
|
66
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** An open dialog in the top layer (showModal): painted above the scene, not in its DOM plane.
|
|
2
|
+
* A non-modal dialog (show()) paints in flow, as part of the plane it sits in. */
|
|
3
|
+
export declare const topLayerDialog: (dialog: Element) => boolean;
|
|
4
|
+
/** The modal dialog whose top-layer plane paints `element` (null: the page's own planes). */
|
|
5
|
+
export declare function topLayerDialogOf(element: Element): HTMLDialogElement | null;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** An open dialog in the top layer (showModal): painted above the scene, not in its DOM plane.
|
|
2
|
+
* A non-modal dialog (show()) paints in flow, as part of the plane it sits in. */
|
|
3
|
+
export const topLayerDialog = (dialog) => dialog.open && dialog.matches(':modal');
|
|
4
|
+
/** The modal dialog whose top-layer plane paints `element` (null: the page's own planes). */
|
|
5
|
+
export function topLayerDialogOf(element) {
|
|
6
|
+
for (let dialog = element.closest('dialog'); dialog; dialog = dialog.parentElement?.closest('dialog') ?? null)
|
|
7
|
+
if (topLayerDialog(dialog))
|
|
8
|
+
return dialog;
|
|
9
|
+
return null;
|
|
10
|
+
}
|