@omerdlw/base-framework 2.0.1 → 3.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (104) hide show
  1. package/README.md +4 -1
  2. package/dist/{chunk-XASQT4CQ.js → chunk-66EYJBIP.js} +47 -27
  3. package/dist/chunk-66EYJBIP.js.map +1 -0
  4. package/dist/{chunk-6SG7V77J.js → chunk-HHWRTQKQ.js} +100 -67
  5. package/dist/chunk-HHWRTQKQ.js.map +1 -0
  6. package/dist/chunk-HLL5EHXC.js +485 -0
  7. package/dist/chunk-HLL5EHXC.js.map +1 -0
  8. package/dist/{chunk-6ZJVLUBE.js → chunk-I5GK7VOV.js} +8 -6
  9. package/dist/chunk-I5GK7VOV.js.map +1 -0
  10. package/dist/chunk-RIOKLMYM.js +145 -0
  11. package/dist/chunk-RIOKLMYM.js.map +1 -0
  12. package/dist/{chunk-SKBITB5X.js → chunk-RRAZKP3J.js} +3 -3
  13. package/dist/{chunk-SKBITB5X.js.map → chunk-RRAZKP3J.js.map} +1 -1
  14. package/dist/{chunk-QXR55VVS.js → chunk-TG6NMHXI.js} +241 -162
  15. package/dist/chunk-TG6NMHXI.js.map +1 -0
  16. package/dist/{chunk-A5RE3F6O.js → chunk-WVRMABDN.js} +249 -427
  17. package/dist/chunk-WVRMABDN.js.map +1 -0
  18. package/dist/index.js +7 -5
  19. package/dist/modules/ambient/analyze.d.ts +18 -3
  20. package/dist/modules/ambient/analyze.d.ts.map +1 -1
  21. package/dist/modules/ambient/dom.d.ts +14 -1
  22. package/dist/modules/ambient/dom.d.ts.map +1 -1
  23. package/dist/modules/ambient/hooks.d.ts.map +1 -1
  24. package/dist/modules/ambient/index.d.ts +2 -2
  25. package/dist/modules/ambient/index.d.ts.map +1 -1
  26. package/dist/modules/ambient/index.js +1 -1
  27. package/dist/modules/ambient/server/index.d.ts +1 -1
  28. package/dist/modules/ambient/server/index.d.ts.map +1 -1
  29. package/dist/modules/ambient/server/index.js +2 -2
  30. package/dist/modules/ambient/server/index.js.map +1 -1
  31. package/dist/modules/ambient/settings.d.ts +1 -0
  32. package/dist/modules/ambient/settings.d.ts.map +1 -1
  33. package/dist/modules/ambient/types.d.ts +13 -0
  34. package/dist/modules/ambient/types.d.ts.map +1 -1
  35. package/dist/modules/ambient/worker/index.js +1 -1
  36. package/dist/modules/context-menu/index.js +4 -3
  37. package/dist/modules/dock/cards.d.ts.map +1 -1
  38. package/dist/modules/dock/constants.d.ts +1 -35
  39. package/dist/modules/dock/constants.d.ts.map +1 -1
  40. package/dist/modules/dock/index.js +3 -2
  41. package/dist/modules/dock/motion.d.ts +7 -5
  42. package/dist/modules/dock/motion.d.ts.map +1 -1
  43. package/dist/modules/dock/overlay.d.ts.map +1 -1
  44. package/dist/modules/dock/routing/guards.d.ts +1 -1
  45. package/dist/modules/dock/routing/navigation.d.ts +7 -4
  46. package/dist/modules/dock/routing/navigation.d.ts.map +1 -1
  47. package/dist/modules/dock/runtime/display.d.ts +31 -2
  48. package/dist/modules/dock/runtime/display.d.ts.map +1 -1
  49. package/dist/modules/dock/runtime/dock.d.ts +2 -3
  50. package/dist/modules/dock/runtime/dock.d.ts.map +1 -1
  51. package/dist/modules/dock/runtime/pipeline.d.ts.map +1 -1
  52. package/dist/modules/dock/styles.d.ts +1 -1
  53. package/dist/modules/dock/styles.d.ts.map +1 -1
  54. package/dist/modules/dock/surface/hooks.d.ts.map +1 -1
  55. package/dist/modules/dock/surface/stack.d.ts.map +1 -1
  56. package/dist/modules/dock/types.d.ts +88 -43
  57. package/dist/modules/dock/types.d.ts.map +1 -1
  58. package/dist/modules/index.d.ts +3 -2
  59. package/dist/modules/index.d.ts.map +1 -1
  60. package/dist/modules/index.js +7 -5
  61. package/dist/modules/loading/context.d.ts.map +1 -1
  62. package/dist/modules/loading/index.js +1 -1
  63. package/dist/modules/navigation/constants.d.ts +37 -0
  64. package/dist/modules/navigation/constants.d.ts.map +1 -0
  65. package/dist/modules/navigation/context.d.ts +10 -0
  66. package/dist/modules/navigation/context.d.ts.map +1 -0
  67. package/dist/modules/navigation/hooks.d.ts +29 -0
  68. package/dist/modules/navigation/hooks.d.ts.map +1 -0
  69. package/dist/modules/navigation/index.d.ts +10 -0
  70. package/dist/modules/navigation/index.d.ts.map +1 -0
  71. package/dist/modules/navigation/index.js +81 -0
  72. package/dist/modules/navigation/index.js.map +1 -0
  73. package/dist/modules/navigation/listeners.d.ts +15 -0
  74. package/dist/modules/navigation/listeners.d.ts.map +1 -0
  75. package/dist/modules/navigation/module.d.ts +25 -0
  76. package/dist/modules/navigation/module.d.ts.map +1 -0
  77. package/dist/modules/navigation/navigator.d.ts +8 -0
  78. package/dist/modules/navigation/navigator.d.ts.map +1 -0
  79. package/dist/modules/navigation/settings.d.ts +10 -0
  80. package/dist/modules/navigation/settings.d.ts.map +1 -0
  81. package/dist/modules/navigation/state.d.ts +20 -0
  82. package/dist/modules/navigation/state.d.ts.map +1 -0
  83. package/dist/modules/navigation/types.d.ts +168 -0
  84. package/dist/modules/navigation/types.d.ts.map +1 -0
  85. package/dist/modules/navigation/utils.d.ts +11 -0
  86. package/dist/modules/navigation/utils.d.ts.map +1 -0
  87. package/docs/getting-started.md +2 -0
  88. package/docs/modules/README.md +5 -1
  89. package/docs/modules/ambient.md +9 -6
  90. package/docs/modules/dock.md +31 -13
  91. package/docs/modules/loading.md +2 -2
  92. package/docs/modules/navigation.md +216 -0
  93. package/docs/proposals/navigation.md +209 -0
  94. package/docs/theming.md +1 -1
  95. package/package.json +6 -1
  96. package/templates/AGENTS.md +2 -0
  97. package/templates/motion/dock.ts +83 -15
  98. package/dist/chunk-6SG7V77J.js.map +0 -1
  99. package/dist/chunk-6ZJVLUBE.js.map +0 -1
  100. package/dist/chunk-A5RE3F6O.js.map +0 -1
  101. package/dist/chunk-QXR55VVS.js.map +0 -1
  102. package/dist/chunk-XASQT4CQ.js.map +0 -1
  103. package/dist/modules/dock/routing/transactions.d.ts +0 -21
  104. package/dist/modules/dock/routing/transactions.d.ts.map +0 -1
package/dist/index.js CHANGED
@@ -1,18 +1,20 @@
1
1
  "use client";
2
2
  export { CoreProvider } from './chunk-K676GL7Z.js';
3
3
  export { ComponentError, DEFAULT_DEDUPE_WINDOW, ERROR_LISTENER_CONFIG, ERROR_MESSAGES, ErrorBoundaryCore, GlobalError, GlobalErrorListener, MAX_CONTEXT, MAX_FINGERPRINTS, ModuleError, createConsoleHandler, createErrorContext, createReport, createSentryHandler, errorTheme, fingerprint, getBrowserEnvironment, getErrorMessage, getErrorReporter, getRuntimePath, getUserAgent, normalizeDedupeWindow, normalizeSampleRate, shouldIgnoreError } from './chunk-JELG4JLT.js';
4
- export { defaultModules } from './chunk-6ZJVLUBE.js';
4
+ export { defaultModules } from './chunk-I5GK7VOV.js';
5
+ export { navigationModule } from './chunk-RIOKLMYM.js';
5
6
  export { modalModule } from './chunk-FIMPHODX.js';
6
7
  import './chunk-7HQMXTNP.js';
7
- export { ambientModule } from './chunk-QXR55VVS.js';
8
+ export { ambientModule } from './chunk-TG6NMHXI.js';
8
9
  export { backgroundModule } from './chunk-CGHZSSFR.js';
9
- export { contextMenuModule } from './chunk-SKBITB5X.js';
10
- export { dockModule } from './chunk-A5RE3F6O.js';
10
+ export { contextMenuModule } from './chunk-RRAZKP3J.js';
11
+ export { dockModule } from './chunk-WVRMABDN.js';
12
+ import './chunk-HLL5EHXC.js';
11
13
  export { ACTION_TONE_CLASS, SURFACE_CLASSES, Z_INDEX } from './chunk-QI3ALLIB.js';
12
14
  export { createSafeAction, err, isErr, isOk, isResult, map, mapErr, match, notificationModule, ok, tryCatch, unwrap, unwrapOr } from './chunk-SYAVGTOX.js';
13
15
  export { mediaModule } from './chunk-R2YGFJDJ.js';
14
16
  export { controlsModule } from './chunk-4GMQKD6F.js';
15
- export { loadingModule } from './chunk-XASQT4CQ.js';
17
+ export { loadingModule } from './chunk-66EYJBIP.js';
16
18
  export { ModuleMotionConfig, REDUCED_MOTION_TRANSITION, ThemeProvider, chip, contentSwap, contentSwapTransitions, cssEasing, cssTransition, defineMotion, defineTheme, defineThemeSpec, durationForDistance, gpuTransform, overlaySurface, press, retime, retimeModuleMotion, staggerDelay, surfaceResizeTransition, useModuleMotion, useTheme as useModuleTheme, useMotionTokens, useOptionalModuleMotion, useTheme } from './chunk-7TAVYJ3A.js';
17
19
  export { Compose, ModuleBoundary, ModuleHost, PageControllerProvider, REGISTRY_SOURCES, RegistryProvider, applyRegistryConfig, createModuleRegistryDefinitions, createRegistryApplyContext, createRegistryOperations, createRegistryStore, defineModule, definePeer, getOrCreateGlobalContext, hasOwnProperty, sortModules, useIsModuleInstalled, useModule, useModuleRegistration, useModuleState, usePage, usePageController, useRegistryEntries, useRegistryValue } from './chunk-GF7TUX5I.js';
18
20
  export { EVENT_TYPES, EventEmitter, USER_MESSAGES, UserError, acquireGlobalScrollLock, clamp, cn, createScheduler, createStore, debounce, getCurrentPath, getSiteUrl, globalEvents, isBrowser, isImageIconSource, isObject, isPlainObject, normalizePath, report, setReportSink, shallowEqual, stripTrailingSlash, throttle, toArray, toFiniteNumber, toUserMessage, trimToNull, useClickOutside, useControllableState, useEscapeKey, useGlobalEvent, useHotkey, useIsFullscreenStateActive, useIsomorphicLayoutEffect, useRequiredContext, useStore } from './chunk-TV3WEF5G.js';
@@ -1,4 +1,10 @@
1
1
  import type { AmbientAnalysisOptions, AmbientPalette, AmbientPixels, OklchColor } from "./types";
2
+ /**
3
+ * Bumped whenever the same pixels would give a different palette. Put it in
4
+ * the key of any palette cache that outlives a deploy (`unstable_cache`, a
5
+ * database), so stored palettes are computed again.
6
+ */
7
+ export declare const AMBIENT_ANALYSIS_VERSION = 2;
2
8
  export interface Cluster extends OklchColor {
3
9
  /** Share of the (centre-weighted) image. */
4
10
  pop: number;
@@ -18,10 +24,18 @@ interface Bounds {
18
24
  * that are uniformly near-black. At most 22% of each side is cut.
19
25
  */
20
26
  export declare function findContentBounds({ data, height, width }: AmbientPixels): Bounds;
27
+ /**
28
+ * How much a colour looks like skin, hair, wood or a tungsten-lit wall: the
29
+ * warm, low-chroma band most film frames are full of. It is what a frame
30
+ * shows, rarely its mood.
31
+ */
32
+ export declare function skinLikeness({ c, h, l }: OklchColor): number;
21
33
  export interface AmbientClustering {
22
34
  clusters: Cluster[];
23
35
  /** Centre-weighted mean lightness. */
24
36
  meanL: number;
37
+ /** Per region, the OKLab sum (`L, a, b` per cluster) of each cluster's pixels. */
38
+ regionLab: Float64Array[];
25
39
  /** Per region, the pixel count of each cluster. */
26
40
  regionWeights: Float64Array[];
27
41
  }
@@ -32,9 +46,10 @@ export interface AmbientClustering {
32
46
  export declare function clusterAmbientPixels(pixels: AmbientPixels, options: AmbientAnalysisOptions): AmbientClustering;
33
47
  /**
34
48
  * The palette of an image: OKLab k-means clusters scored by population ×
35
- * chroma, turned into four roles (each with a gamut-aware tonal ramp and a
36
- * contrast-safe text colour), five region colours, and the deep `shadow`
37
- * tone.
49
+ * chroma (skin tones counted less), turned into four roles (each with a tonal
50
+ * ramp and a contrast-safe text colour), five region colours, and the deep
51
+ * `shadow` tone. Roles keep about their source's chroma rather than its share
52
+ * of the gamut, so warm hues are not inflated.
38
53
  */
39
54
  export declare function analyzeAmbientPixels(pixels: AmbientPixels, overrides?: Partial<AmbientAnalysisOptions>): AmbientPalette;
40
55
  /** Width and height that fit `width × height` inside `size` on the long side. */
@@ -1 +1 @@
1
- {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/analyze.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EACd,aAAa,EAMb,UAAU,EACX,MAAM,SAAS,CAAC;AAiBjB,MAAM,WAAW,OAAQ,SAAQ,UAAU;IACzC,4CAA4C;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,MAAM;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAKD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,aAAa,GAAG,MAAM,CAgChF;AA8DD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,sBAAsB,GAC9B,iBAAiB,CAgInB;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,SAAS,GAAE,OAAO,CAAC,sBAAsB,CAAM,GAC9C,cAAc,CA6LhB;AAED,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;EAMpE"}
1
+ {"version":3,"file":"analyze.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/analyze.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EACd,aAAa,EAMb,UAAU,EACX,MAAM,SAAS,CAAC;AAEjB;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAiB1C,MAAM,WAAW,OAAQ,SAAQ,UAAU;IACzC,4CAA4C;IAC5C,GAAG,EAAE,MAAM,CAAC;IACZ,iEAAiE;IACjE,GAAG,EAAE,MAAM,CAAC;IACZ,8DAA8D;IAC9D,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,MAAM;IACd,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAKD;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,aAAa,GAAG,MAAM,CAgChF;AAyBD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,CAQ5D;AAiFD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,sCAAsC;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,mDAAmD;IACnD,aAAa,EAAE,YAAY,EAAE,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,OAAO,EAAE,sBAAsB,GAC9B,iBAAiB,CA8InB;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,EACrB,SAAS,GAAE,OAAO,CAAC,sBAAsB,CAAM,GAC9C,cAAc,CAyLhB;AAED,iFAAiF;AACjF,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM;;;EAMpE"}
@@ -6,7 +6,20 @@ export declare function resolveCssVarNames(overrides?: AmbientCssVarConfig | nul
6
6
  export declare function resolveTargetElement(target: AmbientTarget): HTMLElement | null;
7
7
  /** `colors` keys are custom property names; a bare name gets `--color-`. */
8
8
  export declare function normalizeColorMap(colors: Record<string, string>): Record<string, string>;
9
- export declare function applyScopedCssVariables(element: HTMLElement, varMap: Record<string, string>): () => void;
9
+ export interface ScopedCssVariableOptions {
10
+ /**
11
+ * How long (ms) the variables stay after the returned function is called,
12
+ * unless another call on the same element takes over first. Bridges the
13
+ * gap between one page's theme and the next (a loading boundary between).
14
+ */
15
+ linger?: number;
16
+ }
17
+ /**
18
+ * Sets custom properties on `element`; the returned function takes them off
19
+ * again, restoring the inline values from before. Calls stack: the latest
20
+ * wins each variable, and taking one off reveals what lies beneath it.
21
+ */
22
+ export declare function applyScopedCssVariables(element: HTMLElement, varMap: Record<string, string>, { linger }?: ScopedCssVariableOptions): () => void;
10
23
  /** Every variable a palette writes: shadow, roles, `on` colours, ramps, regions. */
11
24
  export declare function paletteVarMap(palette: AmbientPalette | null | undefined, names?: ResolvedCssVars): Record<string, string>;
12
25
  export declare function resolveAmbientVarMap({ colors, cssVars, image, palette, }: {
@@ -1 +1 @@
1
- {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/dom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG;IACjD,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,KAAK,CAAC;CACvC,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,SAAS,CAAC,EAAE,mBAAmB,GAAG,IAAI,GACrC,eAAe,CAGjB;AAOD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,GACpB,WAAW,GAAG,IAAI,CAOpB;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB;AAED,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,IAAI,CAiBZ;AAED,oFAAoF;AACpF,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,EAC1C,KAAK,GAAE,eAAsC,GAC5C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoBxB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,MAAa,EACb,OAAc,EACd,KAAY,EACZ,OAAc,GACf,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACrC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CACjC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMzB"}
1
+ {"version":3,"file":"dom.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/dom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,aAAa,EACb,WAAW,EACZ,MAAM,SAAS,CAAC;AAEjB,MAAM,MAAM,eAAe,GAAG,kBAAkB,GAAG;IACjD,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,KAAK,CAAC;CACvC,CAAC;AAEF,wBAAgB,kBAAkB,CAChC,SAAS,CAAC,EAAE,mBAAmB,GAAG,IAAI,GACrC,eAAe,CAGjB;AAOD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,aAAa,GACpB,WAAW,GAAG,IAAI,CAOpB;AAED,4EAA4E;AAC5E,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAC7B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAOxB;AA+CD,MAAM,WAAW,wBAAwB;IACvC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,WAAW,EACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,EAAE,MAAU,EAAE,GAAE,wBAA6B,GAC5C,MAAM,IAAI,CAqCZ;AAED,oFAAoF;AACpF,wBAAgB,aAAa,CAC3B,OAAO,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,EAC1C,KAAK,GAAE,eAAsC,GAC5C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAoBxB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,MAAa,EACb,OAAc,EACd,KAAY,EACZ,OAAc,GACf,EAAE;IACD,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACvC,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACrC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CACjC,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAMzB"}
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/hooks.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAMhF;AAED,wBAAgB,eAAe,CAC7B,WAAW,EAAE,kBAAkB,EAC/B,OAAO,GAAE,qBAAqB,GAAG,IAAW,GAC3C;IAAE,YAAY,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;CAAE,CA6C3D;AAED,wBAAgB,eAAe,CAC7B,MAAM,GAAE,aAAa,GAAG,MAAM,GAAG,IAAW,GAC3C,YAAY,CAgFd;AAED,wBAAgB,UAAU,CACxB,aAAa,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,GAC5C,mBAAmB,CAqBrB"}
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/hooks.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EACV,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,cAAc,EACd,YAAY,EACb,MAAM,SAAS,CAAC;AAEjB,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAMhF;AAED,wBAAgB,eAAe,CAC7B,WAAW,EAAE,kBAAkB,EAC/B,OAAO,GAAE,qBAAqB,GAAG,IAAW,GAC3C;IAAE,YAAY,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAA;CAAE,CA6C3D;AAED,wBAAgB,eAAe,CAC7B,MAAM,GAAE,aAAa,GAAG,MAAM,GAAG,IAAW,GAC3C,YAAY,CAmFd;AAED,wBAAgB,UAAU,CACxB,aAAa,CAAC,EAAE,aAAa,GAAG,MAAM,GAAG,IAAI,GAC5C,mBAAmB,CAqBrB"}
@@ -1,7 +1,7 @@
1
1
  export { ambientTheme } from "./constants";
2
- export { AMBIENT_REGIONS, AMBIENT_ROLES, AMBIENT_TONES, DEFAULT_ANALYSIS, DEFAULT_CSS_VAR_NAMES, configureAmbient, getAmbientSettings, } from "./settings";
2
+ export { AMBIENT_REGIONS, AMBIENT_ROLES, AMBIENT_TONES, DEFAULT_ANALYSIS, DEFAULT_CSS_VAR_NAMES, DEFAULT_LINGER_MS, configureAmbient, getAmbientSettings, } from "./settings";
3
3
  export { contrastRatio, formatOklch, maxChroma, onColorFor, srgbToOklab, toneOf, } from "./oklab";
4
- export { analyzeAmbientPixels, findContentBounds } from "./analyze";
4
+ export { AMBIENT_ANALYSIS_VERSION, analyzeAmbientPixels, findContentBounds, skinLikeness, } from "./analyze";
5
5
  export { extractPaletteFromImage, getCachedAmbientPalette, primeAmbientPalette, } from "./extractor";
6
6
  export { applyScopedCssVariables, normalizeColorMap, paletteVarMap, resolveAmbientVarMap, resolveCssVarNames, resolveTargetElement, } from "./dom";
7
7
  export { ambientModule, defineAmbient, resolvePageAmbientTheme, } from "./module";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EACL,eAAe,EACf,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,WAAW,EACX,SAAS,EACT,UAAU,EACV,WAAW,EACX,MAAM,GACP,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAEpE,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,aAAa,EACb,aAAa,EACb,uBAAuB,GACxB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,cAAc,EACd,eAAe,GAChB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,mBAAmB,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,OAAO,EACL,eAAe,EACf,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,iBAAiB,EACjB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,EACL,aAAa,EACb,WAAW,EACX,SAAS,EACT,UAAU,EACV,WAAW,EACX,MAAM,GACP,MAAM,SAAS,CAAC;AAEjB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,YAAY,GACb,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,uBAAuB,EACvB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,uBAAuB,EACvB,iBAAiB,EACjB,aAAa,EACb,oBAAoB,EACpB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,OAAO,CAAC;AAEf,OAAO,EACL,aAAa,EACb,aAAa,EACb,uBAAuB,GACxB,MAAM,UAAU,CAAC;AAElB,OAAO,EACL,cAAc,EACd,eAAe,GAChB,MAAM,WAAW,CAAC;AAEnB,OAAO,EACL,UAAU,EACV,eAAe,EACf,eAAe,GAChB,MAAM,SAAS,CAAC;AAEjB,mBAAmB,SAAS,CAAC"}
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- export { AMBIENT_REGIONS, AMBIENT_ROLES, AMBIENT_TONES, AmbientContext, AmbientProvider, DEFAULT_ANALYSIS, DEFAULT_CSS_VAR_NAMES, ambientModule, ambientTheme, analyzeAmbientPixels, applyScopedCssVariables, configureAmbient, contrastRatio, defineAmbient, extractPaletteFromImage, findContentBounds, formatOklch, getAmbientSettings, getCachedAmbientPalette, maxChroma, normalizeColorMap, onColorFor, paletteVarMap, primeAmbientPalette, resolveAmbientVarMap, resolveCssVarNames, resolvePageAmbientTheme, resolveTargetElement, srgbToOklab, toneOf, useAmbient, useAmbientColor, useAmbientTheme } from '../../chunk-QXR55VVS.js';
2
+ export { AMBIENT_ANALYSIS_VERSION, AMBIENT_REGIONS, AMBIENT_ROLES, AMBIENT_TONES, AmbientContext, AmbientProvider, DEFAULT_ANALYSIS, DEFAULT_CSS_VAR_NAMES, DEFAULT_LINGER_MS, ambientModule, ambientTheme, analyzeAmbientPixels, applyScopedCssVariables, configureAmbient, contrastRatio, defineAmbient, extractPaletteFromImage, findContentBounds, formatOklch, getAmbientSettings, getCachedAmbientPalette, maxChroma, normalizeColorMap, onColorFor, paletteVarMap, primeAmbientPalette, resolveAmbientVarMap, resolveCssVarNames, resolvePageAmbientTheme, resolveTargetElement, skinLikeness, srgbToOklab, toneOf, useAmbient, useAmbientColor, useAmbientTheme } from '../../chunk-TG6NMHXI.js';
3
3
  import '../../chunk-CGHZSSFR.js';
4
4
  import '../../chunk-R2YGFJDJ.js';
5
5
  import '../../chunk-7TAVYJ3A.js';
@@ -1,5 +1,5 @@
1
1
  import type { AmbientAnalysisOptions, AmbientPalette, AmbientPixels } from "../types";
2
- export { analyzeAmbientPixels, findContentBounds, fitSample } from "../analyze";
2
+ export { AMBIENT_ANALYSIS_VERSION, analyzeAmbientPixels, findContentBounds, fitSample, } from "../analyze";
3
3
  export { isPrivateAddress, isPrivateHostname } from "./address";
4
4
  export { configureAmbient, getAmbientSettings } from "../settings";
5
5
  export { contrastRatio, formatOklch, maxChroma, onColorFor, srgbToOklab, toneOf, } from "../oklab";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/ambient/server/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EACd,aAAa,EACd,MAAM,UAAU,CAAC;AAMlB,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EACL,aAAa,EACb,WAAW,EACX,SAAS,EACT,UAAU,EACV,WAAW,EACX,MAAM,GACP,MAAM,UAAU,CAAC;AAClB,mBAAmB,UAAU,CAAC;AAE9B,mFAAmF;AACnF,MAAM,MAAM,cAAc,GAAG,CAC3B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC3C,qEAAqE;IACrE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;IAC9B,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qEAAqE;IACrE,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,mEAAmE;IACnE,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAOlD;AAqCD,2FAA2F;AAC3F,qBAAa,0BAA2B,SAAQ,KAAK;IAC1C,IAAI,SAAgC;CAC9C;AAkBD,4DAA4D;AAC5D,eAAO,MAAM,YAAY,EAAE,cAS1B,CAAC;AA6BF,sFAAsF;AACtF,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,IAAI,CAAC,oBAAoB,EAAE,UAAU,GAAG,QAAQ,CAAM,GAC9D,OAAO,CAAC,cAAc,CAAC,CAIzB;AAoDD;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAgChC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/modules/ambient/server/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,sBAAsB,EACtB,cAAc,EACd,aAAa,EACd,MAAM,UAAU,CAAC;AAMlB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,iBAAiB,EACjB,SAAS,GACV,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACnE,OAAO,EACL,aAAa,EACb,WAAW,EACX,SAAS,EACT,UAAU,EACV,WAAW,EACX,MAAM,GACP,MAAM,UAAU,CAAC;AAClB,mBAAmB,UAAU,CAAC;AAE9B,mFAAmF;AACnF,MAAM,MAAM,cAAc,GAAG,CAC3B,KAAK,EAAE,UAAU,EACjB,IAAI,EAAE,MAAM,KACT,OAAO,CAAC,aAAa,CAAC,CAAC;AAE5B,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC3C,qEAAqE;IACrE,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;IAC9B,4DAA4D;IAC5D,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,qEAAqE;IACrE,MAAM,CAAC,EAAE,cAAc,CAAC;IACxB,KAAK,CAAC,EAAE,OAAO,KAAK,CAAC;IACrB,mEAAmE;IACnE,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC;IAC5D,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAMD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAOlD;AAqCD,2FAA2F;AAC3F,qBAAa,0BAA2B,SAAQ,KAAK;IAC1C,IAAI,SAAgC;CAC9C;AAkBD,4DAA4D;AAC5D,eAAO,MAAM,YAAY,EAAE,cAS1B,CAAC;AA6BF,sFAAsF;AACtF,wBAAsB,8BAA8B,CAClD,KAAK,EAAE,UAAU,EACjB,OAAO,GAAE,IAAI,CAAC,oBAAoB,EAAE,UAAU,GAAG,QAAQ,CAAM,GAC9D,OAAO,CAAC,cAAc,CAAC,CAIzB;AAoDD;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,GAAG,EAAE,MAAM,GAAG,GAAG,EACjB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAgChC"}
@@ -1,5 +1,5 @@
1
- import { resolveAnalysis, analyzeAmbientPixels } from '../../../chunk-6SG7V77J.js';
2
- export { analyzeAmbientPixels, configureAmbient, contrastRatio, findContentBounds, fitSample, formatOklch, getAmbientSettings, maxChroma, onColorFor, srgbToOklab, toneOf } from '../../../chunk-6SG7V77J.js';
1
+ import { resolveAnalysis, analyzeAmbientPixels } from '../../../chunk-HHWRTQKQ.js';
2
+ export { AMBIENT_ANALYSIS_VERSION, analyzeAmbientPixels, configureAmbient, contrastRatio, findContentBounds, fitSample, formatOklch, getAmbientSettings, maxChroma, onColorFor, srgbToOklab, toneOf } from '../../../chunk-HHWRTQKQ.js';
3
3
 
4
4
  // src/modules/ambient/server/address.ts
5
5
  var PRIVATE_NAMES = /(^|\.)(localhost|local|internal|intranet|lan|home\.arpa|localdomain)$/;
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/modules/ambient/server/address.ts","../../../../src/modules/ambient/server/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["// Which hosts and addresses the server entry refuses to fetch from: anything\n// that is not plainly on the public internet.\n\nconst PRIVATE_NAMES = /(^|\\.)(localhost|local|internal|intranet|lan|home\\.arpa|localdomain)$/;\n\n/** Lower-cased, without the trailing dot(s) and IPv6 brackets. */\nexport function normalizeHost(hostname: string): string {\n return hostname.toLowerCase().replace(/\\.+$/, \"\").replace(/^\\[|\\]$/g, \"\");\n}\n\nfunction parseIPv4(value: string): number[] | null {\n const parts = value.split(\".\");\n if (parts.length !== 4) return null;\n const bytes = parts.map((part) => (/^\\d{1,3}$/.test(part) ? Number(part) : NaN));\n return bytes.every((byte) => byte >= 0 && byte <= 255) ? bytes : null;\n}\n\nfunction isPrivateIPv4([a, b, c]: number[]): boolean {\n return (\n a === 0 || // \"this network\"\n a === 10 ||\n a === 127 ||\n (a === 100 && b >= 64 && b <= 127) || // CGNAT\n (a === 169 && b === 254) || // link-local, cloud metadata\n (a === 172 && b >= 16 && b <= 31) ||\n (a === 192 && b === 168) ||\n (a === 192 && b === 0 && c === 0) || // IETF protocol assignments\n (a === 198 && (b === 18 || b === 19)) || // benchmarking\n a >= 224 // multicast, reserved, broadcast\n );\n}\n\n/** Eight 16-bit groups, or `null` when `value` is not an IPv6 address. */\nfunction parseIPv6(value: string): number[] | null {\n let text = value.split(\"%\")[0]; // zone id\n const tail = text.match(/^(.*:)(\\d+\\.\\d+\\.\\d+\\.\\d+)$/);\n if (tail) {\n const v4 = parseIPv4(tail[2]);\n if (!v4) return null;\n text = `${tail[1]}${((v4[0] << 8) | v4[1]).toString(16)}:${((v4[2] << 8) | v4[3]).toString(16)}`;\n }\n const halves = text.split(\"::\");\n if (halves.length > 2) return null;\n const read = (part: string) => (part ? part.split(\":\") : []);\n const head = read(halves[0]);\n const rest = halves.length === 2 ? read(halves[1]) : [];\n const missing = 8 - head.length - rest.length;\n if (halves.length === 1 ? missing !== 0 : missing < 1) return null;\n const groups = [...head, ...Array(halves.length === 2 ? missing : 0).fill(\"0\"), ...rest];\n const words = groups.map((group) => (/^[0-9a-f]{1,4}$/.test(group) ? parseInt(group, 16) : NaN));\n return words.length === 8 && words.every((word) => word >= 0) ? words : null;\n}\n\nfunction isPrivateIPv6(words: number[]): boolean {\n const [w0, w1, w2, w3, w4, w5, w6, w7] = words;\n const embedded = () => [w6 >> 8, w6 & 255, w7 >> 8, w7 & 255];\n if (words.slice(0, 7).every((word) => word === 0)) return w7 <= 1; // :: and ::1\n // IPv4-mapped (::ffff:a.b.c.d), IPv4-compatible (::a.b.c.d), NAT64 (64:ff9b::a.b.c.d)\n if (w0 === 0 && w1 === 0 && w2 === 0 && w3 === 0 && w4 === 0 && (w5 === 0xffff || w5 === 0)) {\n return isPrivateIPv4(embedded());\n }\n if (w0 === 0x64 && w1 === 0xff9b) return isPrivateIPv4(embedded());\n if (w0 === 0x2002) return isPrivateIPv4([w1 >> 8, w1 & 255, w2 >> 8, w2 & 255]); // 6to4\n return (\n (w0 & 0xfe00) === 0xfc00 || // unique local\n (w0 & 0xffc0) === 0xfe80 || // link-local\n (w0 & 0xff00) === 0xff00 || // multicast\n (w0 === 0x2001 && w1 === 0xdb8) // documentation\n );\n}\n\n/** `true` for loopback, private, link-local, CGNAT, multicast and reserved IPs. */\nexport function isPrivateAddress(address: string): boolean {\n const host = normalizeHost(address);\n const v4 = parseIPv4(host);\n if (v4) return isPrivateIPv4(v4);\n const v6 = parseIPv6(host);\n return v6 ? isPrivateIPv6(v6) : false;\n}\n\nexport const isIpLiteral = (hostname: string) => {\n const host = normalizeHost(hostname);\n return parseIPv4(host) !== null || parseIPv6(host) !== null;\n};\n\n/** A host name that only means something on a private network. */\nexport function isPrivateHostname(hostname: string): boolean {\n const host = normalizeHost(hostname);\n if (!host) return true;\n if (isIpLiteral(host)) return isPrivateAddress(host);\n return PRIVATE_NAMES.test(host) || !host.includes(\".\");\n}\n","import { analyzeAmbientPixels } from \"../analyze\";\nimport { isIpLiteral, isPrivateAddress, isPrivateHostname, normalizeHost } from \"./address\";\nimport { resolveAnalysis } from \"../settings\";\nimport type {\n AmbientAnalysisOptions,\n AmbientPalette,\n AmbientPixels,\n} from \"../types\";\n\n// `@omerdlw/base-framework/ambient/server`: palettes computed in Node (RSC,\n// route handlers, build scripts), to be cached and handed to the client as\n// `initialPalette`. Nothing here is client code.\n\nexport { analyzeAmbientPixels, findContentBounds, fitSample } from \"../analyze\";\nexport { isPrivateAddress, isPrivateHostname } from \"./address\";\nexport { configureAmbient, getAmbientSettings } from \"../settings\";\nexport {\n contrastRatio,\n formatOklch,\n maxChroma,\n onColorFor,\n srgbToOklab,\n toneOf,\n} from \"../oklab\";\nexport type * from \"../types\";\n\n/** Decodes image bytes into RGBA pixels no larger than `size` on the long side. */\nexport type AmbientDecoder = (\n bytes: Uint8Array,\n size: number,\n) => Promise<AmbientPixels>;\n\nexport interface AmbientServerOptions {\n analysis?: Partial<AmbientAnalysisOptions>;\n /** Which URLs may be fetched. Default: public http(s) hosts only. */\n allow?: (url: URL) => boolean;\n /** Keep results in an in-process cache (default `true`). */\n cache?: boolean;\n /** Default: `sharp` (loaded on first use; it ships with Next.js). */\n decode?: AmbientDecoder;\n fetch?: typeof fetch;\n /** Extra fetch options, e.g. `{ next: { revalidate: 86400 } }`. */\n init?: RequestInit;\n maxBytes?: number;\n /**\n * Resolves a host name to its IP addresses, checked before every request\n * (redirects included): a request whose host resolves to any loopback,\n * private, link-local or reserved address is refused. Default: `node:dns`.\n * `false` skips the check (only do that behind an `allow` list).\n */\n resolve?: ((hostname: string) => Promise<string[]>) | false;\n timeoutMs?: number;\n}\n\nconst MAX_BYTES = 12 * 1024 * 1024;\nconst TIMEOUT_MS = 8_000;\nconst CACHE_LIMIT = 500;\n\n/**\n * Public http(s) URLs only: no credentials, no localhost / private / link-local\n * names or IP literals (in any spelling the URL parser accepts). Host names\n * are also resolved and checked before fetching (`resolve`).\n */\nexport function isPublicImageUrl(url: URL): boolean {\n return (\n (url.protocol === \"https:\" || url.protocol === \"http:\") &&\n !url.username &&\n !url.password &&\n !isPrivateHostname(url.hostname)\n );\n}\n\nasync function lookupAll(hostname: string): Promise<string[]> {\n const { lookup } = await import(\"node:dns/promises\");\n return (await lookup(hostname, { all: true, verbatim: true })).map(\n (entry) => entry.address,\n );\n}\n\nasync function reachesOnlyPublic(\n url: URL,\n resolve: AmbientServerOptions[\"resolve\"],\n): Promise<boolean> {\n if (resolve === false) return true;\n const host = normalizeHost(url.hostname);\n try {\n const addresses = isIpLiteral(host) ? [host] : await (resolve ?? lookupAll)(host);\n return addresses.length > 0 && !addresses.some(isPrivateAddress);\n } catch {\n return false;\n }\n}\n\ninterface SharpLike {\n (input: Uint8Array, options?: Record<string, unknown>): SharpPipeline;\n}\ninterface SharpPipeline {\n ensureAlpha(): SharpPipeline;\n raw(): SharpPipeline;\n resize(width: number, height: number, options: Record<string, unknown>): SharpPipeline;\n rotate(): SharpPipeline;\n toBuffer(options: { resolveWithObject: true }): Promise<{\n data: Uint8Array;\n info: { height: number; width: number };\n }>;\n}\n\n/** Thrown (not swallowed) when no decoder is available: a setup error, not a bad image. */\nexport class AmbientDecoderMissingError extends Error {\n override name = \"AmbientDecoderMissingError\";\n}\n\nlet sharpModule: Promise<SharpLike> | null = null;\nconst SHARP = \"sharp\";\n\nfunction loadSharp(): Promise<SharpLike> {\n sharpModule ??= import(/* webpackIgnore: true */ /* turbopackIgnore: true */ SHARP)\n .then((mod: { default?: SharpLike }) => (mod.default ?? mod) as SharpLike)\n .catch((error: unknown) => {\n sharpModule = null;\n throw new AmbientDecoderMissingError(\n \"ambient/server: `sharp` is not installed. Install it or pass `decode`.\",\n { cause: error },\n );\n });\n return sharpModule;\n}\n\n/** The default decoder: `sharp`, resized inside libvips. */\nexport const sharpDecoder: AmbientDecoder = async (bytes, size) => {\n const sharp = await loadSharp();\n const { data, info } = await sharp(bytes, { failOn: \"none\" })\n .rotate()\n .resize(size, size, { fit: \"inside\", withoutEnlargement: true })\n .ensureAlpha()\n .raw()\n .toBuffer({ resolveWithObject: true });\n return { data, height: info.height, width: info.width };\n};\n\nasync function readLimited(response: Response, maxBytes: number): Promise<Uint8Array> {\n const declared = Number(response.headers.get(\"content-length\"));\n if (declared > maxBytes) throw new Error(\"ambient/server: image too large\");\n if (!response.body) return new Uint8Array(await response.arrayBuffer());\n\n const reader = response.body.getReader();\n const chunks: Uint8Array[] = [];\n let length = 0;\n for (;;) {\n const { done, value } = await reader.read();\n if (done) break;\n length += value.byteLength;\n if (length > maxBytes) {\n await reader.cancel();\n throw new Error(\"ambient/server: image too large\");\n }\n chunks.push(value);\n }\n const bytes = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) {\n bytes.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return bytes;\n}\n\n/** The palette of image bytes (JPEG, PNG, WebP, AVIF… whatever the decoder reads). */\nexport async function extractAmbientPaletteFromBytes(\n bytes: Uint8Array,\n options: Pick<AmbientServerOptions, \"analysis\" | \"decode\"> = {},\n): Promise<AmbientPalette> {\n const analysis = resolveAnalysis(options.analysis);\n const pixels = await (options.decode ?? sharpDecoder)(bytes, analysis.sampleSize);\n return analyzeAmbientPixels(pixels, analysis);\n}\n\nconst cache = new Map<string, AmbientPalette>();\nconst inFlight = new Map<string, Promise<AmbientPalette | null>>();\n\nfunction remember(key: string, palette: AmbientPalette): void {\n cache.delete(key);\n while (cache.size >= CACHE_LIMIT) {\n const oldest = cache.keys().next().value;\n if (oldest === undefined) break;\n cache.delete(oldest);\n }\n cache.set(key, palette);\n}\n\nasync function fetchAndExtract(\n url: URL,\n options: AmbientServerOptions,\n): Promise<AmbientPalette | null> {\n const allow = options.allow ?? isPublicImageUrl;\n const doFetch = options.fetch ?? fetch;\n const signal = AbortSignal.timeout(options.timeoutMs ?? TIMEOUT_MS);\n\n let current = url;\n for (let hop = 0; hop <= 5; hop++) {\n if (!allow(current)) return null;\n // Checked on every hop. The fetch resolves the name again, so a host that\n // changes its answer in between (DNS rebinding) is only ruled out by an\n // `allow` list of hosts you trust.\n if (!(await reachesOnlyPublic(current, options.resolve))) return null;\n const response = await doFetch(current, {\n ...options.init,\n redirect: \"manual\",\n signal,\n });\n if (response.status >= 300 && response.status < 400) {\n const location = response.headers.get(\"location\");\n await response.body?.cancel();\n if (!location) return null;\n current = new URL(location, current);\n continue;\n }\n if (!response.ok) return null;\n const type = response.headers.get(\"content-type\") ?? \"\";\n if (type && !type.toLowerCase().startsWith(\"image/\")) return null;\n const bytes = await readLimited(response, options.maxBytes ?? MAX_BYTES);\n const palette = await extractAmbientPaletteFromBytes(bytes, options);\n return { ...palette, source: url.href };\n }\n return null;\n}\n\n/**\n * Fetches an image and returns its palette, or `null` when it cannot be\n * fetched or decoded. `source` is the URL, so a client theme given the same\n * image and this palette as `initialPalette` does not extract it again.\n *\n * Wrap it in the app's cache (`\"use cache\"`, `unstable_cache`…) to keep\n * palettes across requests; an in-process cache is kept as well.\n */\nexport async function extractAmbientPalette(\n src: string | URL,\n options: AmbientServerOptions = {},\n): Promise<AmbientPalette | null> {\n let url: URL;\n try {\n url = new URL(src);\n } catch {\n return null;\n }\n const useCache = options.cache !== false;\n const key = options.analysis\n ? `${url.href}#${JSON.stringify(options.analysis)}`\n : url.href;\n if (useCache) {\n const hit = cache.get(key);\n if (hit) return hit;\n const pending = inFlight.get(key);\n if (pending) return pending;\n }\n\n const task = fetchAndExtract(url, options).catch((error: unknown) => {\n if (error instanceof AmbientDecoderMissingError) throw error;\n return null;\n });\n if (!useCache) return task;\n\n const shared = task\n .then((palette) => {\n if (palette) remember(key, palette);\n return palette;\n })\n .finally(() => inFlight.delete(key));\n inFlight.set(key, shared);\n return shared;\n}\n"]}
1
+ {"version":3,"sources":["../../../../src/modules/ambient/server/address.ts","../../../../src/modules/ambient/server/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["// Which hosts and addresses the server entry refuses to fetch from: anything\n// that is not plainly on the public internet.\n\nconst PRIVATE_NAMES = /(^|\\.)(localhost|local|internal|intranet|lan|home\\.arpa|localdomain)$/;\n\n/** Lower-cased, without the trailing dot(s) and IPv6 brackets. */\nexport function normalizeHost(hostname: string): string {\n return hostname.toLowerCase().replace(/\\.+$/, \"\").replace(/^\\[|\\]$/g, \"\");\n}\n\nfunction parseIPv4(value: string): number[] | null {\n const parts = value.split(\".\");\n if (parts.length !== 4) return null;\n const bytes = parts.map((part) => (/^\\d{1,3}$/.test(part) ? Number(part) : NaN));\n return bytes.every((byte) => byte >= 0 && byte <= 255) ? bytes : null;\n}\n\nfunction isPrivateIPv4([a, b, c]: number[]): boolean {\n return (\n a === 0 || // \"this network\"\n a === 10 ||\n a === 127 ||\n (a === 100 && b >= 64 && b <= 127) || // CGNAT\n (a === 169 && b === 254) || // link-local, cloud metadata\n (a === 172 && b >= 16 && b <= 31) ||\n (a === 192 && b === 168) ||\n (a === 192 && b === 0 && c === 0) || // IETF protocol assignments\n (a === 198 && (b === 18 || b === 19)) || // benchmarking\n a >= 224 // multicast, reserved, broadcast\n );\n}\n\n/** Eight 16-bit groups, or `null` when `value` is not an IPv6 address. */\nfunction parseIPv6(value: string): number[] | null {\n let text = value.split(\"%\")[0]; // zone id\n const tail = text.match(/^(.*:)(\\d+\\.\\d+\\.\\d+\\.\\d+)$/);\n if (tail) {\n const v4 = parseIPv4(tail[2]);\n if (!v4) return null;\n text = `${tail[1]}${((v4[0] << 8) | v4[1]).toString(16)}:${((v4[2] << 8) | v4[3]).toString(16)}`;\n }\n const halves = text.split(\"::\");\n if (halves.length > 2) return null;\n const read = (part: string) => (part ? part.split(\":\") : []);\n const head = read(halves[0]);\n const rest = halves.length === 2 ? read(halves[1]) : [];\n const missing = 8 - head.length - rest.length;\n if (halves.length === 1 ? missing !== 0 : missing < 1) return null;\n const groups = [...head, ...Array(halves.length === 2 ? missing : 0).fill(\"0\"), ...rest];\n const words = groups.map((group) => (/^[0-9a-f]{1,4}$/.test(group) ? parseInt(group, 16) : NaN));\n return words.length === 8 && words.every((word) => word >= 0) ? words : null;\n}\n\nfunction isPrivateIPv6(words: number[]): boolean {\n const [w0, w1, w2, w3, w4, w5, w6, w7] = words;\n const embedded = () => [w6 >> 8, w6 & 255, w7 >> 8, w7 & 255];\n if (words.slice(0, 7).every((word) => word === 0)) return w7 <= 1; // :: and ::1\n // IPv4-mapped (::ffff:a.b.c.d), IPv4-compatible (::a.b.c.d), NAT64 (64:ff9b::a.b.c.d)\n if (w0 === 0 && w1 === 0 && w2 === 0 && w3 === 0 && w4 === 0 && (w5 === 0xffff || w5 === 0)) {\n return isPrivateIPv4(embedded());\n }\n if (w0 === 0x64 && w1 === 0xff9b) return isPrivateIPv4(embedded());\n if (w0 === 0x2002) return isPrivateIPv4([w1 >> 8, w1 & 255, w2 >> 8, w2 & 255]); // 6to4\n return (\n (w0 & 0xfe00) === 0xfc00 || // unique local\n (w0 & 0xffc0) === 0xfe80 || // link-local\n (w0 & 0xff00) === 0xff00 || // multicast\n (w0 === 0x2001 && w1 === 0xdb8) // documentation\n );\n}\n\n/** `true` for loopback, private, link-local, CGNAT, multicast and reserved IPs. */\nexport function isPrivateAddress(address: string): boolean {\n const host = normalizeHost(address);\n const v4 = parseIPv4(host);\n if (v4) return isPrivateIPv4(v4);\n const v6 = parseIPv6(host);\n return v6 ? isPrivateIPv6(v6) : false;\n}\n\nexport const isIpLiteral = (hostname: string) => {\n const host = normalizeHost(hostname);\n return parseIPv4(host) !== null || parseIPv6(host) !== null;\n};\n\n/** A host name that only means something on a private network. */\nexport function isPrivateHostname(hostname: string): boolean {\n const host = normalizeHost(hostname);\n if (!host) return true;\n if (isIpLiteral(host)) return isPrivateAddress(host);\n return PRIVATE_NAMES.test(host) || !host.includes(\".\");\n}\n","import { analyzeAmbientPixels } from \"../analyze\";\nimport { isIpLiteral, isPrivateAddress, isPrivateHostname, normalizeHost } from \"./address\";\nimport { resolveAnalysis } from \"../settings\";\nimport type {\n AmbientAnalysisOptions,\n AmbientPalette,\n AmbientPixels,\n} from \"../types\";\n\n// `@omerdlw/base-framework/ambient/server`: palettes computed in Node (RSC,\n// route handlers, build scripts), to be cached and handed to the client as\n// `initialPalette`. Nothing here is client code.\n\nexport {\n AMBIENT_ANALYSIS_VERSION,\n analyzeAmbientPixels,\n findContentBounds,\n fitSample,\n} from \"../analyze\";\nexport { isPrivateAddress, isPrivateHostname } from \"./address\";\nexport { configureAmbient, getAmbientSettings } from \"../settings\";\nexport {\n contrastRatio,\n formatOklch,\n maxChroma,\n onColorFor,\n srgbToOklab,\n toneOf,\n} from \"../oklab\";\nexport type * from \"../types\";\n\n/** Decodes image bytes into RGBA pixels no larger than `size` on the long side. */\nexport type AmbientDecoder = (\n bytes: Uint8Array,\n size: number,\n) => Promise<AmbientPixels>;\n\nexport interface AmbientServerOptions {\n analysis?: Partial<AmbientAnalysisOptions>;\n /** Which URLs may be fetched. Default: public http(s) hosts only. */\n allow?: (url: URL) => boolean;\n /** Keep results in an in-process cache (default `true`). */\n cache?: boolean;\n /** Default: `sharp` (loaded on first use; it ships with Next.js). */\n decode?: AmbientDecoder;\n fetch?: typeof fetch;\n /** Extra fetch options, e.g. `{ next: { revalidate: 86400 } }`. */\n init?: RequestInit;\n maxBytes?: number;\n /**\n * Resolves a host name to its IP addresses, checked before every request\n * (redirects included): a request whose host resolves to any loopback,\n * private, link-local or reserved address is refused. Default: `node:dns`.\n * `false` skips the check (only do that behind an `allow` list).\n */\n resolve?: ((hostname: string) => Promise<string[]>) | false;\n timeoutMs?: number;\n}\n\nconst MAX_BYTES = 12 * 1024 * 1024;\nconst TIMEOUT_MS = 8_000;\nconst CACHE_LIMIT = 500;\n\n/**\n * Public http(s) URLs only: no credentials, no localhost / private / link-local\n * names or IP literals (in any spelling the URL parser accepts). Host names\n * are also resolved and checked before fetching (`resolve`).\n */\nexport function isPublicImageUrl(url: URL): boolean {\n return (\n (url.protocol === \"https:\" || url.protocol === \"http:\") &&\n !url.username &&\n !url.password &&\n !isPrivateHostname(url.hostname)\n );\n}\n\nasync function lookupAll(hostname: string): Promise<string[]> {\n const { lookup } = await import(\"node:dns/promises\");\n return (await lookup(hostname, { all: true, verbatim: true })).map(\n (entry) => entry.address,\n );\n}\n\nasync function reachesOnlyPublic(\n url: URL,\n resolve: AmbientServerOptions[\"resolve\"],\n): Promise<boolean> {\n if (resolve === false) return true;\n const host = normalizeHost(url.hostname);\n try {\n const addresses = isIpLiteral(host) ? [host] : await (resolve ?? lookupAll)(host);\n return addresses.length > 0 && !addresses.some(isPrivateAddress);\n } catch {\n return false;\n }\n}\n\ninterface SharpLike {\n (input: Uint8Array, options?: Record<string, unknown>): SharpPipeline;\n}\ninterface SharpPipeline {\n ensureAlpha(): SharpPipeline;\n raw(): SharpPipeline;\n resize(width: number, height: number, options: Record<string, unknown>): SharpPipeline;\n rotate(): SharpPipeline;\n toBuffer(options: { resolveWithObject: true }): Promise<{\n data: Uint8Array;\n info: { height: number; width: number };\n }>;\n}\n\n/** Thrown (not swallowed) when no decoder is available: a setup error, not a bad image. */\nexport class AmbientDecoderMissingError extends Error {\n override name = \"AmbientDecoderMissingError\";\n}\n\nlet sharpModule: Promise<SharpLike> | null = null;\nconst SHARP = \"sharp\";\n\nfunction loadSharp(): Promise<SharpLike> {\n sharpModule ??= import(/* webpackIgnore: true */ /* turbopackIgnore: true */ SHARP)\n .then((mod: { default?: SharpLike }) => (mod.default ?? mod) as SharpLike)\n .catch((error: unknown) => {\n sharpModule = null;\n throw new AmbientDecoderMissingError(\n \"ambient/server: `sharp` is not installed. Install it or pass `decode`.\",\n { cause: error },\n );\n });\n return sharpModule;\n}\n\n/** The default decoder: `sharp`, resized inside libvips. */\nexport const sharpDecoder: AmbientDecoder = async (bytes, size) => {\n const sharp = await loadSharp();\n const { data, info } = await sharp(bytes, { failOn: \"none\" })\n .rotate()\n .resize(size, size, { fit: \"inside\", withoutEnlargement: true })\n .ensureAlpha()\n .raw()\n .toBuffer({ resolveWithObject: true });\n return { data, height: info.height, width: info.width };\n};\n\nasync function readLimited(response: Response, maxBytes: number): Promise<Uint8Array> {\n const declared = Number(response.headers.get(\"content-length\"));\n if (declared > maxBytes) throw new Error(\"ambient/server: image too large\");\n if (!response.body) return new Uint8Array(await response.arrayBuffer());\n\n const reader = response.body.getReader();\n const chunks: Uint8Array[] = [];\n let length = 0;\n for (;;) {\n const { done, value } = await reader.read();\n if (done) break;\n length += value.byteLength;\n if (length > maxBytes) {\n await reader.cancel();\n throw new Error(\"ambient/server: image too large\");\n }\n chunks.push(value);\n }\n const bytes = new Uint8Array(length);\n let offset = 0;\n for (const chunk of chunks) {\n bytes.set(chunk, offset);\n offset += chunk.byteLength;\n }\n return bytes;\n}\n\n/** The palette of image bytes (JPEG, PNG, WebP, AVIF… whatever the decoder reads). */\nexport async function extractAmbientPaletteFromBytes(\n bytes: Uint8Array,\n options: Pick<AmbientServerOptions, \"analysis\" | \"decode\"> = {},\n): Promise<AmbientPalette> {\n const analysis = resolveAnalysis(options.analysis);\n const pixels = await (options.decode ?? sharpDecoder)(bytes, analysis.sampleSize);\n return analyzeAmbientPixels(pixels, analysis);\n}\n\nconst cache = new Map<string, AmbientPalette>();\nconst inFlight = new Map<string, Promise<AmbientPalette | null>>();\n\nfunction remember(key: string, palette: AmbientPalette): void {\n cache.delete(key);\n while (cache.size >= CACHE_LIMIT) {\n const oldest = cache.keys().next().value;\n if (oldest === undefined) break;\n cache.delete(oldest);\n }\n cache.set(key, palette);\n}\n\nasync function fetchAndExtract(\n url: URL,\n options: AmbientServerOptions,\n): Promise<AmbientPalette | null> {\n const allow = options.allow ?? isPublicImageUrl;\n const doFetch = options.fetch ?? fetch;\n const signal = AbortSignal.timeout(options.timeoutMs ?? TIMEOUT_MS);\n\n let current = url;\n for (let hop = 0; hop <= 5; hop++) {\n if (!allow(current)) return null;\n // Checked on every hop. The fetch resolves the name again, so a host that\n // changes its answer in between (DNS rebinding) is only ruled out by an\n // `allow` list of hosts you trust.\n if (!(await reachesOnlyPublic(current, options.resolve))) return null;\n const response = await doFetch(current, {\n ...options.init,\n redirect: \"manual\",\n signal,\n });\n if (response.status >= 300 && response.status < 400) {\n const location = response.headers.get(\"location\");\n await response.body?.cancel();\n if (!location) return null;\n current = new URL(location, current);\n continue;\n }\n if (!response.ok) return null;\n const type = response.headers.get(\"content-type\") ?? \"\";\n if (type && !type.toLowerCase().startsWith(\"image/\")) return null;\n const bytes = await readLimited(response, options.maxBytes ?? MAX_BYTES);\n const palette = await extractAmbientPaletteFromBytes(bytes, options);\n return { ...palette, source: url.href };\n }\n return null;\n}\n\n/**\n * Fetches an image and returns its palette, or `null` when it cannot be\n * fetched or decoded. `source` is the URL, so a client theme given the same\n * image and this palette as `initialPalette` does not extract it again.\n *\n * Wrap it in the app's cache (`\"use cache\"`, `unstable_cache`…) to keep\n * palettes across requests; an in-process cache is kept as well.\n */\nexport async function extractAmbientPalette(\n src: string | URL,\n options: AmbientServerOptions = {},\n): Promise<AmbientPalette | null> {\n let url: URL;\n try {\n url = new URL(src);\n } catch {\n return null;\n }\n const useCache = options.cache !== false;\n const key = options.analysis\n ? `${url.href}#${JSON.stringify(options.analysis)}`\n : url.href;\n if (useCache) {\n const hit = cache.get(key);\n if (hit) return hit;\n const pending = inFlight.get(key);\n if (pending) return pending;\n }\n\n const task = fetchAndExtract(url, options).catch((error: unknown) => {\n if (error instanceof AmbientDecoderMissingError) throw error;\n return null;\n });\n if (!useCache) return task;\n\n const shared = task\n .then((palette) => {\n if (palette) remember(key, palette);\n return palette;\n })\n .finally(() => inFlight.delete(key));\n inFlight.set(key, shared);\n return shared;\n}\n"]}
@@ -5,6 +5,7 @@ export declare const AMBIENT_REGIONS: readonly ["top", "bottom", "left", "right"
5
5
  export declare const DEFAULT_ANALYSIS: Readonly<AmbientAnalysisOptions>;
6
6
  export declare const DEFAULT_CSS_VAR_NAMES: Readonly<AmbientCssVarNames>;
7
7
  export declare const DEFAULT_PROXY = "/api/ambient/proxy?url=";
8
+ export declare const DEFAULT_LINGER_MS = 3000;
8
9
  export declare function getAmbientSettings(): AmbientSettings;
9
10
  export declare function mergeAmbientSettings(base: AmbientSettings, input: AmbientSettingsInput): AmbientSettings;
10
11
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,oBAAoB,EAErB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,aAAa,uDAEkB,CAAC;AAE7C,eAAO,MAAM,aAAa,qDAKf,CAAC;AAEZ,eAAO,MAAM,eAAe,uDAMjB,CAAC;AAEZ,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,sBAAsB,CAQ5D,CAAC;AAEH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,kBAAkB,CAM7D,CAAC;AAEH,eAAO,MAAM,aAAa,4BAA4B,CAAC;AAmBvD,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,oBAAoB,GAC1B,eAAe,CASjB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,IAAI,CAOxE;AAED,wBAAgB,eAAe,CAC7B,SAAS,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI,GACjD,sBAAsB,CAExB;AAED,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO/E"}
1
+ {"version":3,"file":"settings.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/settings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACZ,eAAe,EACf,oBAAoB,EAErB,MAAM,SAAS,CAAC;AAEjB,eAAO,MAAM,aAAa,uDAEkB,CAAC;AAE7C,eAAO,MAAM,aAAa,qDAKf,CAAC;AAEZ,eAAO,MAAM,eAAe,uDAMjB,CAAC;AAEZ,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,sBAAsB,CAQ5D,CAAC;AAEH,eAAO,MAAM,qBAAqB,EAAE,QAAQ,CAAC,kBAAkB,CAM7D,CAAC;AAEH,eAAO,MAAM,aAAa,4BAA4B,CAAC;AAEvD,eAAO,MAAM,iBAAiB,OAAQ,CAAC;AAoBvC,wBAAgB,kBAAkB,IAAI,eAAe,CAEpD;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,oBAAoB,GAC1B,eAAe,CAUjB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,IAAI,CAOxE;AAED,wBAAgB,eAAe,CAC7B,SAAS,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,GAAG,IAAI,GACjD,sBAAsB,CAExB;AAED,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO/E"}
@@ -90,6 +90,12 @@ export interface AmbientSettings {
90
90
  cssVars: AmbientCssVarNames & {
91
91
  tones: readonly AmbientTone[] | false;
92
92
  };
93
+ /**
94
+ * How long (ms) a page-wide theme's variables stay after it goes away,
95
+ * so the next page (behind a loading boundary, say) takes over from them
96
+ * instead of from the fallbacks.
97
+ */
98
+ linger: number;
93
99
  proxy: AmbientProxy;
94
100
  strategy: AmbientStrategy;
95
101
  /** Builds the extraction worker (see `serveAmbientWorker`). */
@@ -99,6 +105,7 @@ export interface AmbientSettingsInput {
99
105
  analysis?: Partial<AmbientAnalysisOptions>;
100
106
  cacheLimit?: number;
101
107
  cssVars?: AmbientCssVarConfig;
108
+ linger?: number;
102
109
  proxy?: AmbientProxy;
103
110
  strategy?: AmbientStrategy;
104
111
  worker?: (() => Worker) | null;
@@ -119,6 +126,12 @@ export interface AmbientConfig {
119
126
  cssVars?: AmbientCssVarConfig | null;
120
127
  image?: AmbientImageSource;
121
128
  initialPalette?: AmbientPalette | null;
129
+ /**
130
+ * How long (ms) the variables stay after this theme goes away, unless
131
+ * another theme takes over first. Default: the configured `linger` on the
132
+ * page root, 0 on a scoped target.
133
+ */
134
+ linger?: number;
122
135
  options?: AmbientExtractOptions | null;
123
136
  scope?: AmbientTarget;
124
137
  transition?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/modules/ambient/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,OAAO,CAAC;AAC5E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAE9C,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAE5C,iDAAiD;AACjD,MAAM,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;AAE/E,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEtE,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,CAAC;AAE3E,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;AAEtD,MAAM,WAAW,aAAa;IAC5B,4EAA4E;IAC5E,KAAK,EAAE,MAAM,CAAC;IACd,oFAAoF;IACpF,EAAE,EAAE,MAAM,CAAC;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,oEAAoE;IACpE,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,SAAS,EAAE,OAAO,CAAC;IACnB,iFAAiF;IACjF,IAAI,EAAE,WAAW,CAAC;CACnB;AAED,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,2CAA2C;IAC3C,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,yEAAyE;IACzE,OAAO,EAAE,OAAO,CAAC;IACjB,uEAAuE;IACvE,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IAC1C,OAAO,EAAE,MAAM,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;CACpD;AAED,MAAM,WAAW,UAAU;IACzB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,sBAAsB;IACrC,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IACjB,8EAA8E;IAC9E,YAAY,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,SAAS,EAAE,OAAO,CAAC;IACnB,sEAAsE;IACtE,cAAc,EAAE,MAAM,CAAC;IACvB,+CAA+C;IAC/C,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,iDAAiD;AACjD,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAC;AAElE;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,CAAC,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;AAE5E,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,4FAA4F;IAC5F,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,mBAAoB,SAAQ,OAAO,CAAC,kBAAkB,CAAC;IACtE,4DAA4D;IAC5D,KAAK,CAAC,EAAE,SAAS,WAAW,EAAE,GAAG,KAAK,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,sBAAsB,CAAC;IACjC,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,kBAAkB,GAAG;QAAE,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,KAAK,CAAA;KAAE,CAAC;IACxE;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,YAAY,CAAC;IACpB,QAAQ,EAAE,eAAe,CAAC;IAC1B,+DAA+D;IAC/D,MAAM,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC3C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,eAAe,CAAC;IAC3B,MAAM,CAAC,EAAE,CAAC,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,GAAG,SAAS,CAAC;AAE7E,MAAM,MAAM,aAAa,GACvB,MAAM,GAAG,WAAW,GAAG,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC;AAE1E,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACvC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACrC,KAAK,CAAC,EAAE,kBAAkB,CAAC;IAC3B,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IACvC;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACvC,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,KAAK,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAE5C,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC;IACtC,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,kBAAkB,CAAC;IAC1B,cAAc,EAAE,cAAc,GAAG,IAAI,CAAC;IACtC,OAAO,EAAE,qBAAqB,CAAC;IAC/B,KAAK,EAAE,YAAY,CAAC;IACpB,KAAK,EAAE,aAAa,CAAC;IACrB,UAAU,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,oBAAqB,SAAQ,IAAI,CAChD,aAAa,EACb,QAAQ,GAAG,OAAO,CACnB;IACC,MAAM,CAAC,EACH,aAAa,CAAC,QAAQ,CAAC,GACvB,CAAC,CAAC,KAAK,EAAE,YAAY,KAAK,aAAa,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,KAAK,CAAC,EAAE,kBAAkB,GAAG,CAAC,CAAC,KAAK,EAAE,YAAY,KAAK,kBAAkB,CAAC,CAAC;CAC5E;AAED,MAAM,MAAM,gBAAgB,GAAG,aAAa,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/D,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,MAAM,EAAE,CACN,KAAK,CAAC,EAAE,YAAY,EACpB,SAAS,CAAC,EAAE,gBAAgB,KACzB,iBAAiB,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,SAAS,CAAC,EAAE,gBAAgB,KAAK,YAAY,CAAC;CAC3E;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,iFAAiF;IACjF,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;IAC/B,eAAe,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACpD,UAAU,CAAC,EAAE,QAAQ,CAAC,cAAc,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC;CAC9D;AAED,MAAM,WAAW,YAAY;IAC3B,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,cAAc,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,MAAM,oBAAoB,GAAG,aAAa,CAC9C,YAAY,EACZ;IACE,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC;IACnD,UAAU,EAAE,QAAQ,CAAC,cAAc,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC;CAC7D,CACF,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,CAAC;AAEjE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,iBAAiB,GAAG,SAAS,CAAC;IACvC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,CAAC;CAC3C;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CACxC"}
@@ -1,4 +1,4 @@
1
- import { analyzeAmbientPixels, fitSample } from '../../../chunk-6SG7V77J.js';
1
+ import { analyzeAmbientPixels, fitSample } from '../../../chunk-HHWRTQKQ.js';
2
2
 
3
3
  // src/modules/ambient/pipeline.ts
4
4
  async function fetchImageBlob(src, proxyUrl) {
@@ -1,10 +1,11 @@
1
1
  "use client";
2
- export { CONTEXT_MENU_VISIBILITY_EVENT, CURRENT_PAGE_KEY, ContextMenuContext, ContextMenuGlobal, ContextMenuHeader, ContextMenuHeaderIcon, ContextMenuItem, ContextMenuProvider, ContextMenuRenderer, GLOBAL_MENU_KEY, INITIAL_POSITION, MENU_SCREEN_MARGIN, contextMenuModule, contextMenuTheme, createInitialMenuState, defineContextMenu, emitContextMenuVisibility, extractNodeText, getNextActiveIndex, isScrollLockKey, joinClassNames, positionMenu, prepareMenu, resolveAsBoolean, resolveAsValue, resolveContextMenu, resolveContextMenuPageMeta, resolveMenuHeader, resolveMenuItems, resolveNextOpenState, safeInvoke, useContextMenu, useContextMenuActions, useContextMenuContentModel, useContextMenuListener, useContextMenuRegistration, useContextMenuState, useMenuDismissal } from '../../chunk-SKBITB5X.js';
3
- import '../../chunk-A5RE3F6O.js';
2
+ export { CONTEXT_MENU_VISIBILITY_EVENT, CURRENT_PAGE_KEY, ContextMenuContext, ContextMenuGlobal, ContextMenuHeader, ContextMenuHeaderIcon, ContextMenuItem, ContextMenuProvider, ContextMenuRenderer, GLOBAL_MENU_KEY, INITIAL_POSITION, MENU_SCREEN_MARGIN, contextMenuModule, contextMenuTheme, createInitialMenuState, defineContextMenu, emitContextMenuVisibility, extractNodeText, getNextActiveIndex, isScrollLockKey, joinClassNames, positionMenu, prepareMenu, resolveAsBoolean, resolveAsValue, resolveContextMenu, resolveContextMenuPageMeta, resolveMenuHeader, resolveMenuItems, resolveNextOpenState, safeInvoke, useContextMenu, useContextMenuActions, useContextMenuContentModel, useContextMenuListener, useContextMenuRegistration, useContextMenuState, useMenuDismissal } from '../../chunk-RRAZKP3J.js';
3
+ import '../../chunk-WVRMABDN.js';
4
+ import '../../chunk-HLL5EHXC.js';
4
5
  import '../../chunk-QI3ALLIB.js';
5
6
  import '../../chunk-SYAVGTOX.js';
6
7
  import '../../chunk-R2YGFJDJ.js';
7
- import '../../chunk-XASQT4CQ.js';
8
+ import '../../chunk-66EYJBIP.js';
8
9
  import '../../chunk-7TAVYJ3A.js';
9
10
  import '../../chunk-GF7TUX5I.js';
10
11
  import '../../chunk-TV3WEF5G.js';
@@ -1 +1 @@
1
- {"version":3,"file":"cards.d.ts","sourceRoot":"","sources":["../../../src/modules/dock/cards.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,EAOZ,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,OAAO,EACb,MAAM,OAAO,CAAC;AAgBf,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,wBAAwB,EAC9B,MAAM,SAAS,CAAC;AAOjB,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AA2B3D,wBAAgB,sBAAsB,CAAC,EACrC,MAAM,EACN,SAAS,EACT,cAAc,EACd,UAAU,EACV,YAAY,EACZ,aAAa,EACb,QAAe,EACf,eAAuB,EACvB,WAAmB,EACnB,cAAsB,EACtB,KAAK,EACL,SAAS,GACV,EAAE,mBAAmB;;;;;;;;;;;;;;;EAerB;AAuCD,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,cAAc,CAAC,GAAG,IAAI,GAAG,SAAS,GACpE,OAAO,CAIT;AAiDD,wBAAgB,sBAAsB,CAAC,EACrC,UAAU,EACV,eAAoB,EACpB,SAAiB,GAClB,EAAE;IACD,UAAU,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC7B,eAAe,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;;;;;EAsBA;AAED,wBAAgB,YAAY,CAC1B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,EACvB,YAAY,CAAC,EAAE,SAAS,GACvB,cAAc,CAwBhB;AAED,eAAO,MAAM,cAAc,GAAI,OAAO,cAAc,SAGnD,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAI,OAAO,cAAc,SAExD,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,EAClC,QAAQ,EACR,QAAQ,EACR,QAAgB,GACjB,EAAE;IACD,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,GAAG,OAAO,CAEV;AAED,wBAAgB,sBAAsB,CAAC,EACrC,IAAI,EAAE,QAAQ,EACd,IAAI,EACJ,UAAiB,EACjB,SAAS,EACT,KAAK,EACL,aAAqB,EACrB,SAAiB,EACjB,oBAA2B,EAC3B,iBAAyB,EACzB,eAAe,EACf,WAAW,EACX,KAAa,EACb,eAAoB,GACrB,EAAE,mBAAmB;;;;EAiBrB;AAED,MAAM,MAAM,cAAc,GACxB;IAAE,IAAI,EAAE,OAAO,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,eAAe,CAAA;CAAE,GAAG,IAAI,CAAC;AAUzE,wBAAgB,aAAa,CAC3B,IAAI,EAAE,QAAQ,EACd,QAAQ,EAAE,MAAM,EAChB,EAAE,KAAa,EAAE,GAAE;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAC1C,cAAc,CA0ChB;AAED,wBAAgB,2BAA2B,CAAC,EAC1C,IAAI,EAAE,QAAQ,EACd,IAAI,EACJ,UAAiB,EACjB,KAAa,EACb,SAAS,EACT,KAAK,EACL,QAAgB,EAChB,UAAU,EACV,WAAmB,EACnB,GAAU,EACV,QAAe,EACf,eAAoB,EACpB,QAAQ,GACT,EAAE,wBAAwB;;;;;;;6BAaf,cAAc;EAuBzB;AAED,wBAAgB,oBAAoB,CAAC,EACnC,GAAG,EACH,UAAiB,EACjB,qBAAqB,EACrB,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,aAAqB,EACrB,QAAQ,EACR,OAAO,EACP,KAAa,EACb,IAAI,EAAE,QAAQ,EACd,IAAI,EACJ,QAAgB,EAChB,WAAkB,EAClB,cAAsB,EACtB,WAAmB,EACnB,eAAuB,EACvB,GAAU,EACV,QAAe,EACf,eAAoB,GACrB,EAAE,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAgKR,aAAa,CAAC,cAAc,CAAC;0BAQE,OAAO,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiEjE;AA8BD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACjC,QAAQ,EAAE,OAAO,EACjB,WAAW,EAAE,MAAM,IAAI,EACvB,WAAW,EAAE,aAAa,GAAG,IAAI,EACjC,gBAAgB,EAAE,MAAM,GACvB,QAAQ,GAAG,IAAI,CAmBjB;AAED,wBAAgB,yBAAyB,CAAC,EACxC,SAAc,GACf,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;iCA8OqC,KAAK,CAAC,aAAa;;;;;;;;;;;;;;;;qCAtG7C,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;8BAkDlC,KAAK,CAAC,UAAU;;;;EA6F3B;AAED,UAAU,SAAS;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1C;AAED,wBAAgB,yBAAyB,CAAC,EACxC,SAAc,EACd,eAAsB,GACvB,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;;;;;;;;;;;wBA0EW,SAAS;2BAYT,KAAK,CAAC,aAAa;6BAgBnB,KAAK,CAAC,UAAU;EA4B3B"}
1
+ {"version":3,"file":"cards.d.ts","sourceRoot":"","sources":["../../../src/modules/dock/cards.tsx"],"names":[],"mappings":"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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2BAkKR,aAAa,CAAC,cAAc,CAAC;0BAQE,OAAO,CAAC,cAAc,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAwEjE;AA8BD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EACjC,QAAQ,EAAE,OAAO,EACjB,WAAW,EAAE,MAAM,IAAI,EACvB,WAAW,EAAE,aAAa,GAAG,IAAI,EACjC,gBAAgB,EAAE,MAAM,GACvB,QAAQ,GAAG,IAAI,CAmBjB;AAED,wBAAgB,yBAAyB,CAAC,EACxC,SAAc,GACf,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;iCA8OqC,KAAK,CAAC,aAAa;;;;;;;;;;;;;;;;qCAtG7C,KAAK,CAAC,YAAY,CAAC,cAAc,CAAC;8BAkDlC,KAAK,CAAC,UAAU;;;;EA6F3B;AAED,UAAU,SAAS;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,SAAS,CAAC;QAAE,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC1C;AAED,wBAAgB,yBAAyB,CAAC,EACxC,SAAc,EACd,eAAsB,GACvB,EAAE;IACD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;;;;;;;;;;;wBA0EW,SAAS;2BAYT,KAAK,CAAC,aAAa;6BAgBnB,KAAK,CAAC,UAAU;EA4B3B"}
@@ -65,54 +65,21 @@ export declare const DOCK_SURFACE_PHASE: Readonly<{
65
65
  }>;
66
66
  export declare const VIEWPORT_MARGIN = 24;
67
67
  export declare const DOCK_CARD_DIMENSIONS: Readonly<{
68
- expandedY: number;
69
68
  chromeHeight: 20;
70
- collapsedY: -10;
71
- extensionShelfY: -42;
72
- extensionShelfScale: 0.94;
73
69
  extensionShelfHeight: 45;
74
70
  hudHeight: 52;
75
71
  actionGap: 10;
76
72
  height: 68;
77
73
  }>;
78
74
  export declare const DOCK_CARD_LAYOUT: Readonly<{
79
- collapsed: Readonly<{
80
- offsetY: -10;
81
- scale: 0.88;
82
- }>;
83
- expanded: Readonly<{
84
- offsetY: number;
85
- scale: 1;
86
- }>;
87
- extensionShelfY: -42;
88
- extensionShelfScale: 0.94;
89
75
  extensionShelfHeight: 45;
90
76
  chromeHeight: 20;
91
77
  hudHeight: 52;
92
78
  actionGap: 10;
93
79
  baseHeight: 68;
94
80
  }>;
95
- export declare const DOCK_TRANSACTION_EVENTS: Readonly<{
96
- readonly START: "START";
97
- readonly COMPLETE: "COMPLETE";
98
- readonly CANCEL: "CANCEL";
99
- readonly FAIL: "FAIL";
100
- readonly TIME_OUT: "TIME_OUT";
101
- }>;
102
- export declare const DOCK_TRANSACTION_STATUS: Readonly<{
103
- readonly PENDING: "pending";
104
- readonly COMPLETED: "completed";
105
- readonly CANCELLED: "cancelled";
106
- readonly FAILED: "failed";
107
- readonly TIMED_OUT: "timed-out";
108
- }>;
109
- export declare const DOCK_TRANSACTION_REASON: Readonly<{
110
- readonly GUARD: "guard";
111
- readonly SUPERSEDED: "superseded";
112
- readonly TIME_OUT: "time-out";
113
- }>;
114
- export declare const DOCK_TRANSACTION_TIMEOUT_MS = 15000;
115
81
  export declare const DOCK_PREFETCH_INTENT_DELAY_MS = 90;
82
+ export declare const DOCK_PENDING_ROUTE_HOLD_MS = 2500;
116
83
  export declare const DOCK_CONTINUITY_EVENTS: Readonly<{
117
84
  readonly CLEAR: "CLEAR";
118
85
  readonly CONSUME_RETURN: "CONSUME_RETURN";
@@ -152,6 +119,5 @@ export declare const STATUS_CLEAR_DURATION = 4500;
152
119
  export declare const API_ERROR_BATCH_DELAY = 300;
153
120
  export declare const DOCK_HEIGHT_BUFFER = 16;
154
121
  export declare const HEIGHT_EPSILON = 0.5;
155
- export declare const MAX_VISIBLE_STACKED_CARDS = 3;
156
122
  export declare const dockTheme: import("../../theme").ThemeSpec<DockThemeSlot, DockMotion>;
157
123
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/modules/dock/constants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAE9D,eAAO,MAAM,mBAAmB,mDAKrB,CAAC;AAEZ,eAAO,MAAM,WAAW;;;;;;;;;EASb,CAAC;AAEZ,eAAO,MAAM,oBAAoB;;;EAGtB,CAAC;AAEZ,eAAO,MAAM,gBAAgB;;;;EAIlB,CAAC;AAEZ,eAAO,MAAM,iBAAiB;;;;;;;EAOnB,CAAC;AAEZ,eAAO,MAAM,mBAAmB;;;;;;;EAOrB,CAAC;AAEZ,eAAO,MAAM,uBAAuB;;;;;;;;EAQzB,CAAC;AAEZ,eAAO,MAAM,kCAAkC,KAAK,CAAC;AAErD,eAAO,MAAM,wBAAwB;;;EAG1B,CAAC;AAEZ,eAAO,MAAM,wBAAwB;;;;EAI1B,CAAC;AAEZ,eAAO,MAAM,kBAAkB;;;;;;;;EAQpB,CAAC;AAGZ,eAAO,MAAM,eAAe,KAAK,CAAC;AAElC,eAAO,MAAM,oBAAoB;;;;;;;;;;EAU/B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;EAgB3B,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;EAMzB,CAAC;AAEZ,eAAO,MAAM,uBAAuB;;;;;;EAMzB,CAAC;AAEZ,eAAO,MAAM,uBAAuB;;;;EAIzB,CAAC;AAEZ,eAAO,MAAM,2BAA2B,QAAS,CAAC;AAClD,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAEhD,eAAO,MAAM,sBAAsB;;;;;;EAMxB,CAAC;AAEZ,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAElD,eAAO,MAAM,qBAAqB;;;;;;EAMvB,CAAC;AAEZ,eAAO,MAAM,qBAAqB;;;;EAIvB,CAAC;AAEZ,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,eAAO,MAAM,uBAAuB,2IACoG,CAAC;AAEzI,eAAO,MAAM,kCAAkC,8CAIpC,CAAC;AAEZ,eAAO,MAAM,cAAc;;;;;EAKhB,CAAC;AAEZ,eAAO,MAAM,cAAc,4BAA4C,CAAC;AAExE,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAWjD,CAAC;AAEH,eAAO,MAAM,kBAAkB,aAM7B,CAAC;AAEH,eAAO,MAAM,0BAA0B,wBAAwB,CAAC;AAChE,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAClD,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,cAAc,MAAM,CAAC;AAClC,eAAO,MAAM,yBAAyB,IAAI,CAAC;AAE3C,eAAO,MAAM,SAAS,wDAAqD,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/modules/dock/constants.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,UAAU,EAAE,KAAK,aAAa,EAAE,MAAM,SAAS,CAAC;AAE9D,eAAO,MAAM,mBAAmB,mDAKrB,CAAC;AAEZ,eAAO,MAAM,WAAW;;;;;;;;;EASb,CAAC;AAEZ,eAAO,MAAM,oBAAoB;;;EAGtB,CAAC;AAEZ,eAAO,MAAM,gBAAgB;;;;EAIlB,CAAC;AAEZ,eAAO,MAAM,iBAAiB;;;;;;;EAOnB,CAAC;AAEZ,eAAO,MAAM,mBAAmB;;;;;;;EAOrB,CAAC;AAEZ,eAAO,MAAM,uBAAuB;;;;;;;;EAQzB,CAAC;AAEZ,eAAO,MAAM,kCAAkC,KAAK,CAAC;AAErD,eAAO,MAAM,wBAAwB;;;EAG1B,CAAC;AAEZ,eAAO,MAAM,wBAAwB;;;;EAI1B,CAAC;AAEZ,eAAO,MAAM,kBAAkB;;;;;;;;EAQpB,CAAC;AAEZ,eAAO,MAAM,eAAe,KAAK,CAAC;AAIlC,eAAO,MAAM,oBAAoB;;;;;;EAM/B,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;EAM3B,CAAC;AAEH,eAAO,MAAM,6BAA6B,KAAK,CAAC;AAGhD,eAAO,MAAM,0BAA0B,OAAQ,CAAC;AAEhD,eAAO,MAAM,sBAAsB;;;;;;EAMxB,CAAC;AAEZ,eAAO,MAAM,2BAA2B,KAAK,CAAC;AAC9C,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAElD,eAAO,MAAM,qBAAqB;;;;;;EAMvB,CAAC;AAEZ,eAAO,MAAM,qBAAqB;;;;EAIvB,CAAC;AAEZ,eAAO,MAAM,0BAA0B,KAAK,CAAC;AAE7C,eAAO,MAAM,uBAAuB,2IACoG,CAAC;AAEzI,eAAO,MAAM,kCAAkC,8CAIpC,CAAC;AAEZ,eAAO,MAAM,cAAc;;;;;EAKhB,CAAC;AAEZ,eAAO,MAAM,cAAc,4BAA4C,CAAC;AAExE,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAWjD,CAAC;AAEH,eAAO,MAAM,kBAAkB,aAM7B,CAAC;AAEH,eAAO,MAAM,0BAA0B,wBAAwB,CAAC;AAChE,eAAO,MAAM,6BAA6B,OAAO,CAAC;AAClD,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAE1C,eAAO,MAAM,qBAAqB,MAAM,CAAC;AACzC,eAAO,MAAM,kBAAkB,KAAK,CAAC;AACrC,eAAO,MAAM,cAAc,MAAM,CAAC;AAElC,eAAO,MAAM,SAAS,wDAAqD,CAAC"}
@@ -1,9 +1,10 @@
1
1
  "use client";
2
- export { DOCK_EVENTS, DOCK_HUD_PRIORITY, DOCK_HUD_RENDER_MODE, DOCK_HUD_VARIANT, Dock, DockCardBanner, DockCardHeader, DockDescription, DockIcon, DockProvider, DockSurfaceAction, DockSurfaceExtension, DockSurfaceHeaderButton, DockTitle, ErrorActions, GuardActions, createDockGuardRegistry, createErrorStatus, createGuardStatus, createInlineSurfaceEntry, createSurfaceEntryDefinition, createSurfaceFlowBuilder, defineBreadcrumb, defineDockAction, defineHud, defineStepSurface, defineSurface, dockModule, dockTheme, isValidBannerUrl, useDock, useDockActionClass, useDockActions, useDockBanner, useDockConfig, useDockContextActions, useDockDimensions, useDockGuard, useDockHeight, useDockHud, useDockMotion, useDockRegistration, useDockSelector, useDockState, useDockTheme, useHud, useOptionalDockActions, useOptionalDockState, useSurface, useSurfaceAction, useSurfaceDimensions, useSurfaceFlow, useSurfaceHeader, useSurfaceId, useSurfaceReturn, useSurfaceStep } from '../../chunk-A5RE3F6O.js';
2
+ export { DOCK_EVENTS, DOCK_HUD_PRIORITY, DOCK_HUD_RENDER_MODE, DOCK_HUD_VARIANT, Dock, DockCardBanner, DockCardHeader, DockDescription, DockIcon, DockProvider, DockSurfaceAction, DockSurfaceExtension, DockSurfaceHeaderButton, DockTitle, ErrorActions, GuardActions, createDockGuardRegistry, createErrorStatus, createGuardStatus, createInlineSurfaceEntry, createSurfaceEntryDefinition, createSurfaceFlowBuilder, defineBreadcrumb, defineDockAction, defineHud, defineStepSurface, defineSurface, dockModule, dockTheme, isValidBannerUrl, useDock, useDockActionClass, useDockActions, useDockBanner, useDockConfig, useDockContextActions, useDockDimensions, useDockGuard, useDockHeight, useDockHud, useDockMotion, useDockRegistration, useDockSelector, useDockState, useDockTheme, useHud, useOptionalDockActions, useOptionalDockState, useSurface, useSurfaceAction, useSurfaceDimensions, useSurfaceFlow, useSurfaceHeader, useSurfaceId, useSurfaceReturn, useSurfaceStep } from '../../chunk-WVRMABDN.js';
3
+ import '../../chunk-HLL5EHXC.js';
3
4
  import '../../chunk-QI3ALLIB.js';
4
5
  import '../../chunk-SYAVGTOX.js';
5
6
  import '../../chunk-R2YGFJDJ.js';
6
- import '../../chunk-XASQT4CQ.js';
7
+ import '../../chunk-66EYJBIP.js';
7
8
  import '../../chunk-7TAVYJ3A.js';
8
9
  import '../../chunk-GF7TUX5I.js';
9
10
  import '../../chunk-TV3WEF5G.js';
@@ -1,5 +1,5 @@
1
1
  import { type Transition } from "motion/react";
2
- import { type DockMotion, type DockSurfaceTimings } from "./types";
2
+ import { type DockMotion, type DockSurfacePhaseMotion, type DockSurfaceTimings } from "./types";
3
3
  export declare function useDockMotion(): DockMotion;
4
4
  /**
5
5
  * The app's surface phase timings. A dock state provider can run without the
@@ -23,10 +23,6 @@ export declare const DOCK_SURFACE_DRAG_CONSTRAINTS: Readonly<{
23
23
  readonly top: 0;
24
24
  readonly bottom: 0;
25
25
  }>;
26
- export declare const DOCK_SURFACE_DRAG_THRESHOLDS: Readonly<{
27
- readonly DISMISS_OFFSET_Y: 65;
28
- readonly DISMISS_VELOCITY_Y: 400;
29
- }>;
30
26
  export declare function toGpuTransform(y?: unknown, scale?: unknown, x?: unknown): string;
31
27
  export declare const dockSurfaceDragTransformTemplate: ({ y, scale, }: {
32
28
  y?: unknown;
@@ -55,12 +51,18 @@ export declare function getDockMediaVolumeThumbAnimateProps(motion: DockMotion,
55
51
  export declare function getDockMediaVolumeThumbPositionTransition(motion: DockMotion, { isDragging }?: {
56
52
  isDragging?: boolean;
57
53
  }): string;
54
+ /** What the app's theme plays in a surface phase; a missing or unknown phase is `idle`. */
55
+ export declare function getDockPhaseMotion(motion: DockMotion, surfacePhase?: string | null): DockSurfacePhaseMotion;
58
56
  export declare function getDockStackTransformTransition(motion: DockMotion, surfacePhase: string | null | undefined, fallbackTransition: Transition): Transition;
59
57
  export declare function getDockStackTransition(motion: DockMotion, { expanded, resizeDistance, surfacePhase, }?: {
60
58
  expanded?: boolean;
61
59
  resizeDistance?: number;
62
60
  surfacePhase?: string | null;
63
61
  }): Transition;
62
+ /** The transition of a layout move (`layout="position"`), apart from the part's other animations. */
63
+ export declare function getDockLayoutTransition(motion: DockMotion): {
64
+ layout: Transition;
65
+ };
64
66
  export declare function getDockStackAnimateProps(motion: DockMotion, { width, height, isBreadcrumbsVisible, isFullscreen, isSurfaceActive, surfacePhase, }: {
65
67
  width: number | string | null | undefined;
66
68
  height: number | string | null | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"motion.d.ts","sourceRoot":"","sources":["../../../src/modules/dock/motion.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"motion.d.ts","sourceRoot":"","sources":["../../../src/modules/dock/motion.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../src/modules/dock/overlay.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"overlay.d.ts","sourceRoot":"","sources":["../../../src/modules/dock/overlay.tsx"],"names":[],"mappings":"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"}