@omerdlw/base-framework 1.0.5 → 2.0.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/dist/atoms/index.js +1 -103
- package/dist/atoms/index.js.map +1 -1
- package/dist/chunk-3BUP64Q6.js +105 -0
- package/dist/chunk-3BUP64Q6.js.map +1 -0
- package/dist/chunk-3MSK4XGK.js +9888 -0
- package/dist/chunk-3MSK4XGK.js.map +1 -0
- package/dist/chunk-4GMQKD6F.js +353 -0
- package/dist/chunk-4GMQKD6F.js.map +1 -0
- package/dist/chunk-65ZB4QTQ.js +888 -0
- package/dist/chunk-65ZB4QTQ.js.map +1 -0
- package/dist/chunk-6SG7V77J.js +577 -0
- package/dist/chunk-6SG7V77J.js.map +1 -0
- package/dist/chunk-7HQMXTNP.js +419 -0
- package/dist/chunk-7HQMXTNP.js.map +1 -0
- package/dist/chunk-7TAVYJ3A.js +371 -0
- package/dist/chunk-7TAVYJ3A.js.map +1 -0
- package/dist/chunk-AQ4BNXA2.js +349 -0
- package/dist/chunk-AQ4BNXA2.js.map +1 -0
- package/dist/chunk-CGHZSSFR.js +2166 -0
- package/dist/chunk-CGHZSSFR.js.map +1 -0
- package/dist/chunk-DGCQWQLZ.js +61 -0
- package/dist/chunk-DGCQWQLZ.js.map +1 -0
- package/dist/chunk-FIMPHODX.js +67 -0
- package/dist/chunk-FIMPHODX.js.map +1 -0
- package/dist/chunk-GF7TUX5I.js +1889 -0
- package/dist/chunk-GF7TUX5I.js.map +1 -0
- package/dist/chunk-JELG4JLT.js +454 -0
- package/dist/chunk-JELG4JLT.js.map +1 -0
- package/dist/chunk-K676GL7Z.js +51 -0
- package/dist/chunk-K676GL7Z.js.map +1 -0
- package/dist/chunk-KKQT46TP.js +26 -0
- package/dist/chunk-KKQT46TP.js.map +1 -0
- package/dist/chunk-QI3ALLIB.js +38 -0
- package/dist/chunk-QI3ALLIB.js.map +1 -0
- package/dist/chunk-QXR55VVS.js +1139 -0
- package/dist/chunk-QXR55VVS.js.map +1 -0
- package/dist/chunk-R2YGFJDJ.js +408 -0
- package/dist/chunk-R2YGFJDJ.js.map +1 -0
- package/dist/chunk-RFZQWLC5.js +27 -0
- package/dist/chunk-RFZQWLC5.js.map +1 -0
- package/dist/chunk-SYAVGTOX.js +521 -0
- package/dist/chunk-SYAVGTOX.js.map +1 -0
- package/dist/chunk-TV3WEF5G.js +784 -0
- package/dist/chunk-TV3WEF5G.js.map +1 -0
- package/dist/chunk-XASQT4CQ.js +280 -0
- package/dist/chunk-XASQT4CQ.js.map +1 -0
- package/dist/error/index.js +5 -682
- package/dist/error/index.js.map +1 -1
- package/dist/error/reporter.d.ts.map +1 -1
- package/dist/error/theme.d.ts +1 -1
- package/dist/error/theme.d.ts.map +1 -1
- package/dist/events.js +1 -7
- package/dist/events.js.map +1 -1
- package/dist/hooks/index.js +1 -358
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/use-global-event.d.ts +1 -1
- package/dist/index.js +18 -20019
- package/dist/index.js.map +1 -1
- package/dist/kernel/index.js +2 -2035
- package/dist/kernel/index.js.map +1 -1
- package/dist/kernel/types.d.ts +1 -1
- package/dist/modules/ambient/analyze.d.ts +46 -0
- package/dist/modules/ambient/analyze.d.ts.map +1 -0
- package/dist/modules/ambient/constants.d.ts +1 -5
- package/dist/modules/ambient/constants.d.ts.map +1 -1
- package/dist/modules/ambient/context.d.ts.map +1 -1
- package/dist/modules/ambient/dom.d.ts +11 -12
- package/dist/modules/ambient/dom.d.ts.map +1 -1
- package/dist/modules/ambient/extractor.d.ts +12 -4
- package/dist/modules/ambient/extractor.d.ts.map +1 -1
- package/dist/modules/ambient/hooks.d.ts +1 -1
- package/dist/modules/ambient/hooks.d.ts.map +1 -1
- package/dist/modules/ambient/index.d.ts +6 -4
- package/dist/modules/ambient/index.d.ts.map +1 -1
- package/dist/modules/ambient/index.js +7 -753
- package/dist/modules/ambient/index.js.map +1 -1
- package/dist/modules/ambient/module.d.ts +1 -1
- package/dist/modules/ambient/module.d.ts.map +1 -1
- package/dist/modules/ambient/oklab.d.ts +36 -0
- package/dist/modules/ambient/oklab.d.ts.map +1 -0
- package/dist/modules/ambient/pipeline.d.ts +28 -0
- package/dist/modules/ambient/pipeline.d.ts.map +1 -0
- package/dist/modules/ambient/quantize.d.ts +22 -0
- package/dist/modules/ambient/quantize.d.ts.map +1 -0
- package/dist/modules/ambient/server/address.d.ts +8 -0
- package/dist/modules/ambient/server/address.d.ts.map +1 -0
- package/dist/modules/ambient/server/index.d.ts +53 -0
- package/dist/modules/ambient/server/index.d.ts.map +1 -0
- package/dist/modules/ambient/server/index.js +221 -0
- package/dist/modules/ambient/server/index.js.map +1 -0
- package/dist/modules/ambient/settings.d.ts +19 -0
- package/dist/modules/ambient/settings.d.ts.map +1 -0
- package/dist/modules/ambient/types.d.ts +105 -9
- package/dist/modules/ambient/types.d.ts.map +1 -1
- package/dist/modules/ambient/worker/index.d.ts +15 -0
- package/dist/modules/ambient/worker/index.d.ts.map +1 -0
- package/dist/modules/ambient/worker/index.js +114 -0
- package/dist/modules/ambient/worker/index.js.map +1 -0
- package/dist/modules/background/constants.d.ts +2 -2
- package/dist/modules/background/constants.d.ts.map +1 -1
- package/dist/modules/background/hooks.d.ts +1 -1
- package/dist/modules/background/index.js +6 -3078
- package/dist/modules/background/index.js.map +1 -1
- package/dist/modules/background/motion.d.ts +9 -7
- package/dist/modules/background/motion.d.ts.map +1 -1
- package/dist/modules/background/overlay.d.ts +3 -8
- package/dist/modules/background/overlay.d.ts.map +1 -1
- package/dist/modules/background/types.d.ts +16 -2
- package/dist/modules/background/types.d.ts.map +1 -1
- package/dist/modules/context-menu/constants.d.ts +2 -2
- package/dist/modules/context-menu/constants.d.ts.map +1 -1
- package/dist/modules/context-menu/hooks.d.ts +1 -1
- package/dist/modules/context-menu/index.js +10 -1896
- package/dist/modules/context-menu/index.js.map +1 -1
- package/dist/modules/context-menu/motion.d.ts +1 -8
- package/dist/modules/context-menu/motion.d.ts.map +1 -1
- package/dist/modules/context-menu/overlay.d.ts.map +1 -1
- package/dist/modules/context-menu/types.d.ts +16 -2
- package/dist/modules/context-menu/types.d.ts.map +1 -1
- package/dist/modules/controls/constants.d.ts +1 -1
- package/dist/modules/controls/constants.d.ts.map +1 -1
- package/dist/modules/controls/entries.d.ts +1 -1
- package/dist/modules/controls/hooks.d.ts +1 -1
- package/dist/modules/controls/index.js +4 -1110
- package/dist/modules/controls/index.js.map +1 -1
- package/dist/modules/controls/overlay.d.ts +1 -1
- package/dist/modules/controls/types.d.ts +2 -2
- package/dist/modules/dock/cards.d.ts +708 -24
- package/dist/modules/dock/cards.d.ts.map +1 -1
- package/dist/modules/dock/constants.d.ts +2 -2
- package/dist/modules/dock/constants.d.ts.map +1 -1
- package/dist/modules/dock/helpers.d.ts +2 -2
- package/dist/modules/dock/hooks.d.ts +2 -2
- package/dist/modules/dock/index.d.ts +1 -1
- package/dist/modules/dock/index.d.ts.map +1 -1
- package/dist/modules/dock/index.js +9 -12130
- package/dist/modules/dock/index.js.map +1 -1
- package/dist/modules/dock/module.d.ts +1 -1
- package/dist/modules/dock/motion.d.ts +41 -915
- package/dist/modules/dock/motion.d.ts.map +1 -1
- package/dist/modules/dock/overlay.d.ts.map +1 -1
- package/dist/modules/dock/runtime/dock.d.ts +1 -23
- package/dist/modules/dock/runtime/dock.d.ts.map +1 -1
- package/dist/modules/dock/styles.d.ts +4 -4
- package/dist/modules/dock/surface/context.d.ts.map +1 -1
- package/dist/modules/dock/surface/hooks.d.ts +10 -23
- package/dist/modules/dock/surface/hooks.d.ts.map +1 -1
- package/dist/modules/dock/surface/machine.d.ts +4 -3
- package/dist/modules/dock/surface/machine.d.ts.map +1 -1
- package/dist/modules/dock/surface/stack.d.ts.map +1 -1
- package/dist/modules/dock/types.d.ts +158 -3
- package/dist/modules/dock/types.d.ts.map +1 -1
- package/dist/modules/index.js +16 -17873
- package/dist/modules/index.js.map +1 -1
- package/dist/modules/loading/constants.d.ts +1 -1
- package/dist/modules/loading/constants.d.ts.map +1 -1
- package/dist/modules/loading/context.d.ts +1 -1
- package/dist/modules/loading/hooks.d.ts +1 -1
- package/dist/modules/loading/index.js +5 -1153
- package/dist/modules/loading/index.js.map +1 -1
- package/dist/modules/loading/types.d.ts +2 -2
- package/dist/modules/media/context.d.ts +1 -1
- package/dist/modules/media/index.js +3 -570
- package/dist/modules/media/index.js.map +1 -1
- package/dist/modules/media/types.d.ts +2 -2
- package/dist/modules/modal/constants.d.ts +2 -2
- package/dist/modules/modal/constants.d.ts.map +1 -1
- package/dist/modules/modal/context.d.ts +1 -1
- package/dist/modules/modal/hooks.d.ts +3 -3
- package/dist/modules/modal/index.js +8 -2355
- package/dist/modules/modal/index.js.map +1 -1
- package/dist/modules/modal/motion.d.ts +3 -8
- package/dist/modules/modal/motion.d.ts.map +1 -1
- package/dist/modules/modal/overlay.d.ts.map +1 -1
- package/dist/modules/modal/types.d.ts +21 -0
- package/dist/modules/modal/types.d.ts.map +1 -1
- package/dist/modules/notification/constants.d.ts +2 -2
- package/dist/modules/notification/constants.d.ts.map +1 -1
- package/dist/modules/notification/context.d.ts +1 -1
- package/dist/modules/notification/hooks.d.ts +1 -1
- package/dist/modules/notification/index.js +4 -828
- package/dist/modules/notification/index.js.map +1 -1
- package/dist/modules/notification/motion.d.ts +1 -7
- package/dist/modules/notification/motion.d.ts.map +1 -1
- package/dist/modules/notification/overlay.d.ts.map +1 -1
- package/dist/modules/notification/types.d.ts +9 -1
- package/dist/modules/notification/types.d.ts.map +1 -1
- package/dist/overlay-TZ6L52A5.js +9 -0
- package/dist/overlay-TZ6L52A5.js.map +1 -0
- package/dist/provider.d.ts +1 -1
- package/dist/provider.d.ts.map +1 -1
- package/dist/provider.js +6 -1968
- package/dist/provider.js.map +1 -1
- package/dist/result.js +2 -63
- package/dist/result.js.map +1 -1
- package/dist/theme.d.ts +45 -8
- package/dist/theme.d.ts.map +1 -1
- package/dist/theme.js +3 -41
- package/dist/theme.js.map +1 -1
- package/dist/tokens/index.d.ts +1 -0
- package/dist/tokens/index.d.ts.map +1 -1
- package/dist/tokens/index.js +126 -155
- package/dist/tokens/index.js.map +1 -1
- package/dist/tokens/motion-config.d.ts +44 -0
- package/dist/tokens/motion-config.d.ts.map +1 -0
- package/dist/tokens/motion.d.ts +23 -174
- package/dist/tokens/motion.d.ts.map +1 -1
- package/dist/utils/index.js +4 -82
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/report.d.ts.map +1 -1
- package/docs/README.md +1 -0
- package/docs/architecture-and-rules.md +4 -3
- package/docs/core-engine.md +7 -10
- package/docs/getting-started.md +4 -2
- package/docs/modules/ambient.md +194 -80
- package/docs/modules/background.md +3 -3
- package/docs/modules/context-menu.md +2 -2
- package/docs/modules/dock.md +8 -5
- package/docs/modules/modal.md +2 -2
- package/docs/modules/notification.md +2 -2
- package/docs/theming.md +81 -9
- package/package.json +22 -5
- package/templates/AGENTS.md +1 -1
- package/templates/motion/background.ts +17 -0
- package/templates/motion/context-menu.ts +63 -0
- package/templates/motion/dock.ts +327 -0
- package/templates/motion/modal.ts +79 -0
- package/templates/motion/notification.ts +27 -0
- package/templates/motion/tokens.ts +47 -0
- package/templates/tsconfig.json +7 -0
- package/dist/modules/ambient/color.d.ts +0 -16
- package/dist/modules/ambient/color.d.ts.map +0 -1
package/dist/theme.d.ts
CHANGED
|
@@ -1,26 +1,63 @@
|
|
|
1
1
|
import { type CSSProperties, type ReactNode } from "react";
|
|
2
|
-
|
|
2
|
+
import { type MotionTokens } from "./tokens";
|
|
3
|
+
/**
|
|
4
|
+
* A module's theme contract: the slots it styles and, for modules that
|
|
5
|
+
* animate, the motion it plays. Both are written by the app.
|
|
6
|
+
*/
|
|
7
|
+
export interface ThemeSpec<S extends string = string, M = never> {
|
|
3
8
|
readonly id: string;
|
|
4
9
|
readonly _slots?: S;
|
|
10
|
+
readonly _motion?: M;
|
|
5
11
|
}
|
|
6
|
-
|
|
12
|
+
interface ThemeVisuals<S extends string> {
|
|
7
13
|
slots: Readonly<Record<S, string>>;
|
|
8
14
|
styles?: Readonly<Partial<Record<S, CSSProperties>>>;
|
|
9
15
|
}
|
|
16
|
+
export type ThemeConfig<S extends string, M = never> = ThemeVisuals<S> & ([M] extends [never] ? {
|
|
17
|
+
motion?: undefined;
|
|
18
|
+
} : {
|
|
19
|
+
motion: M;
|
|
20
|
+
});
|
|
10
21
|
export interface ResolvedTheme<S extends string> {
|
|
11
22
|
readonly slots: Readonly<Record<S, string>>;
|
|
12
23
|
readonly styles: Readonly<Partial<Record<S, CSSProperties>>>;
|
|
13
24
|
}
|
|
14
25
|
export interface ThemeEntry {
|
|
15
26
|
readonly id: string;
|
|
16
|
-
readonly config:
|
|
27
|
+
readonly config: ThemeVisuals<string> & {
|
|
28
|
+
motion?: unknown;
|
|
29
|
+
};
|
|
17
30
|
}
|
|
18
|
-
export declare function defineThemeSpec<S extends string>(id: string): ThemeSpec<S>;
|
|
19
|
-
export declare function defineTheme<S extends string>(spec: ThemeSpec<S>, config: ThemeConfig<NoInfer<S>>): ThemeEntry;
|
|
20
|
-
export declare function ThemeProvider({ children, themes, }: {
|
|
31
|
+
export declare function defineThemeSpec<S extends string, M = never>(id: string): ThemeSpec<S, M>;
|
|
32
|
+
export declare function defineTheme<S extends string, M = never>(spec: ThemeSpec<S, M>, config: ThemeConfig<NoInfer<S>, NoInfer<M>>): ThemeEntry;
|
|
33
|
+
export declare function ThemeProvider({ children, motion, themes, }: {
|
|
21
34
|
children?: ReactNode;
|
|
35
|
+
/** The app's motion tokens, from `defineMotion` (tempo, reduced-motion policy, vocabulary). */
|
|
36
|
+
motion?: MotionTokens;
|
|
22
37
|
themes: readonly ThemeEntry[];
|
|
23
|
-
}): import("react").FunctionComponentElement<import("react").ProviderProps<ReadonlyMap<string,
|
|
24
|
-
|
|
38
|
+
}): import("react").FunctionComponentElement<import("react").ProviderProps<ReadonlyMap<string, ThemeVisuals<string> & {
|
|
39
|
+
motion?: unknown;
|
|
40
|
+
}>>>;
|
|
41
|
+
export declare function useTheme<S extends string>(spec: ThemeSpec<S, unknown>): ResolvedTheme<S>;
|
|
25
42
|
export { useTheme as useModuleTheme };
|
|
43
|
+
/** The app's motion tokens, plus whether reduced motion is in effect. */
|
|
44
|
+
export declare function useMotionTokens<T extends MotionTokens = MotionTokens>(): T & {
|
|
45
|
+
readonly reduced: boolean;
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* The motion a module plays, as the app wrote it in `defineTheme(spec, { motion })`,
|
|
49
|
+
* retimed by the app's tempo or collapsed for reduced motion. Stable per
|
|
50
|
+
* (tokens, theme) so it can be a dependency.
|
|
51
|
+
*/
|
|
52
|
+
export declare function useModuleMotion<M>(spec: ThemeSpec<string, M>): M;
|
|
53
|
+
/** Like useModuleMotion, but null when the app hasn't themed the module. */
|
|
54
|
+
export declare function useOptionalModuleMotion<M>(spec: ThemeSpec<string, M>): M | null;
|
|
55
|
+
/**
|
|
56
|
+
* Applies the app's reduced-motion policy to the motion components inside a
|
|
57
|
+
* module (positional values such as width, height, x and scale jump instead of
|
|
58
|
+
* animating). CoreProvider wraps every module backdrop and overlay in it.
|
|
59
|
+
*/
|
|
60
|
+
export declare function ModuleMotionConfig({ children }: {
|
|
61
|
+
children?: ReactNode;
|
|
62
|
+
}): import("react").FunctionComponentElement<import("framer-motion").MotionConfigProps>;
|
|
26
63
|
//# sourceMappingURL=theme.d.ts.map
|
package/dist/theme.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.tsx"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.tsx"],"names":[],"mappings":"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"}
|
package/dist/theme.js
CHANGED
|
@@ -1,44 +1,6 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
const sym = /* @__PURE__ */ Symbol.for(`@omerdlw/base-framework/context/${name}`);
|
|
6
|
-
const store = globalThis;
|
|
7
|
-
if (!store[sym]) {
|
|
8
|
-
store[sym] = createContext(defaultValue);
|
|
9
|
-
}
|
|
10
|
-
return store[sym];
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
// src/theme.tsx
|
|
14
|
-
function defineThemeSpec(id) {
|
|
15
|
-
return Object.freeze({ id });
|
|
16
|
-
}
|
|
17
|
-
function defineTheme(spec, config) {
|
|
18
|
-
return { id: spec.id, config };
|
|
19
|
-
}
|
|
20
|
-
var EMPTY = /* @__PURE__ */ new Map();
|
|
21
|
-
var ThemeContext = getOrCreateGlobalContext("ThemeContext", EMPTY);
|
|
22
|
-
function ThemeProvider({
|
|
23
|
-
children,
|
|
24
|
-
themes
|
|
25
|
-
}) {
|
|
26
|
-
const configs = new Map(themes.map((entry) => [entry.id, entry.config]));
|
|
27
|
-
return createElement(ThemeContext.Provider, { value: configs }, children);
|
|
28
|
-
}
|
|
29
|
-
function useTheme(spec) {
|
|
30
|
-
const config = useContext(ThemeContext).get(spec.id);
|
|
31
|
-
if (!config) {
|
|
32
|
-
throw new Error(
|
|
33
|
-
`Theme "${spec.id}" is missing. Ensure its theme configuration is provided to <ThemeProvider themes={[...]}> (e.g. in src/config/ or your theme setup).`
|
|
34
|
-
);
|
|
35
|
-
}
|
|
36
|
-
return {
|
|
37
|
-
slots: config.slots,
|
|
38
|
-
styles: config.styles ?? {}
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
export { ThemeProvider, defineTheme, defineThemeSpec, useTheme as useModuleTheme, useTheme };
|
|
2
|
+
export { ModuleMotionConfig, ThemeProvider, defineTheme, defineThemeSpec, useModuleMotion, useTheme as useModuleTheme, useMotionTokens, useOptionalModuleMotion, useTheme } from './chunk-7TAVYJ3A.js';
|
|
3
|
+
import './chunk-GF7TUX5I.js';
|
|
4
|
+
import './chunk-TV3WEF5G.js';
|
|
43
5
|
//# sourceMappingURL=theme.js.map
|
|
44
6
|
//# sourceMappingURL=theme.js.map
|
package/dist/theme.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":[
|
|
1
|
+
{"version":3,"sources":[],"names":[],"mappings":"","file":"theme.js"}
|
package/dist/tokens/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tokens/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tokens/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,iBAAiB,CAAC"}
|
package/dist/tokens/index.js
CHANGED
|
@@ -34,90 +34,10 @@ var SURFACE_CLASSES = Object.freeze({
|
|
|
34
34
|
var ACTION_TONE_CLASS = "bg-primary/10 text-primary hover:bg-primary hover:text-black";
|
|
35
35
|
|
|
36
36
|
// src/tokens/motion.ts
|
|
37
|
-
var DURATION_TOKENS = Object.freeze({
|
|
38
|
-
INSTANT: 0.08,
|
|
39
|
-
MICRO: 0.18,
|
|
40
|
-
FAST: 0.28,
|
|
41
|
-
BASE: 0.36,
|
|
42
|
-
MODERATE: 0.44,
|
|
43
|
-
SLOW: 0.58,
|
|
44
|
-
CINEMATIC: 0.86
|
|
45
|
-
});
|
|
46
|
-
var EASING_CURVES = Object.freeze({
|
|
47
|
-
OUT_EXPO: [0.16, 1, 0.3, 1],
|
|
48
|
-
OUT_QUART: [0.25, 1, 0.5, 1],
|
|
49
|
-
OUT_QUINT: [0.22, 1, 0.36, 1],
|
|
50
|
-
IN_OUT_CUBIC: [0.65, 0, 0.35, 1],
|
|
51
|
-
IN_CUBIC: [0.5, 0, 1, 1],
|
|
52
|
-
OUT_BACK: [0.34, 1.56, 0.64, 1]
|
|
53
|
-
});
|
|
54
|
-
var MOTION_EASINGS = Object.freeze({
|
|
55
|
-
ENTER: EASING_CURVES.OUT_QUART,
|
|
56
|
-
ENTER_EMPHASIZED: EASING_CURVES.OUT_EXPO,
|
|
57
|
-
EXIT: EASING_CURVES.IN_CUBIC
|
|
58
|
-
});
|
|
59
|
-
var MOTION_TIERS = Object.freeze({
|
|
60
|
-
MICRO: Object.freeze({
|
|
61
|
-
distance: 4,
|
|
62
|
-
duration: DURATION_TOKENS.MICRO,
|
|
63
|
-
ease: MOTION_EASINGS.ENTER_EMPHASIZED,
|
|
64
|
-
scaleDelta: 8e-3
|
|
65
|
-
}),
|
|
66
|
-
FAST: Object.freeze({
|
|
67
|
-
distance: 9,
|
|
68
|
-
duration: DURATION_TOKENS.FAST,
|
|
69
|
-
ease: MOTION_EASINGS.ENTER_EMPHASIZED,
|
|
70
|
-
scaleDelta: 0.012
|
|
71
|
-
}),
|
|
72
|
-
STANDARD: Object.freeze({
|
|
73
|
-
distance: 18,
|
|
74
|
-
duration: DURATION_TOKENS.MODERATE,
|
|
75
|
-
ease: MOTION_EASINGS.ENTER,
|
|
76
|
-
scaleDelta: 0.018
|
|
77
|
-
}),
|
|
78
|
-
SURFACE: Object.freeze({
|
|
79
|
-
distance: 28,
|
|
80
|
-
duration: DURATION_TOKENS.SLOW,
|
|
81
|
-
ease: MOTION_EASINGS.ENTER_EMPHASIZED,
|
|
82
|
-
scaleDelta: 0.024
|
|
83
|
-
})
|
|
84
|
-
});
|
|
85
|
-
var SPRING_PRESETS = Object.freeze({
|
|
86
|
-
MICRO: Object.freeze({
|
|
87
|
-
damping: 32,
|
|
88
|
-
mass: 0.6,
|
|
89
|
-
stiffness: 520,
|
|
90
|
-
type: "spring"
|
|
91
|
-
}),
|
|
92
|
-
SNAPPY: Object.freeze({
|
|
93
|
-
damping: 28,
|
|
94
|
-
mass: 0.8,
|
|
95
|
-
stiffness: 380,
|
|
96
|
-
type: "spring"
|
|
97
|
-
}),
|
|
98
|
-
GENTLE: Object.freeze({
|
|
99
|
-
damping: 30,
|
|
100
|
-
mass: 1,
|
|
101
|
-
stiffness: 260,
|
|
102
|
-
type: "spring"
|
|
103
|
-
}),
|
|
104
|
-
BOUNCY: Object.freeze({
|
|
105
|
-
damping: 20,
|
|
106
|
-
mass: 0.85,
|
|
107
|
-
stiffness: 340,
|
|
108
|
-
type: "spring"
|
|
109
|
-
})
|
|
110
|
-
});
|
|
111
37
|
var REDUCED_MOTION_TRANSITION = Object.freeze({
|
|
112
|
-
duration:
|
|
38
|
+
duration: 0.08,
|
|
113
39
|
ease: "linear"
|
|
114
40
|
});
|
|
115
|
-
var COMPOSITOR_GPU_STYLE = Object.freeze({
|
|
116
|
-
backfaceVisibility: "hidden",
|
|
117
|
-
transform: "translate3d(0, 0, 0)",
|
|
118
|
-
willChange: "transform, opacity"
|
|
119
|
-
});
|
|
120
|
-
var TAP_SCALE_SUBTLE = 0.97;
|
|
121
41
|
function tween(duration, ease) {
|
|
122
42
|
return Object.freeze({ type: "tween", duration, ease });
|
|
123
43
|
}
|
|
@@ -133,12 +53,12 @@ function gpuTransform(y = 0, scale = 1, x = 0) {
|
|
|
133
53
|
return `translate3d(${translateX}px, ${translateY}px, 0) scale(${scaleValue})`;
|
|
134
54
|
}
|
|
135
55
|
function durationForDistance(distancePx, {
|
|
136
|
-
base
|
|
137
|
-
min
|
|
138
|
-
max
|
|
56
|
+
base,
|
|
57
|
+
min,
|
|
58
|
+
max,
|
|
139
59
|
reference = 320,
|
|
140
60
|
gain = 0.22
|
|
141
|
-
}
|
|
61
|
+
}) {
|
|
142
62
|
const distance = Math.abs(Number(distancePx) || 0);
|
|
143
63
|
const safeMin = Math.max(0, min);
|
|
144
64
|
const safeMax = Math.max(safeMin, max);
|
|
@@ -147,24 +67,24 @@ function durationForDistance(distancePx, {
|
|
|
147
67
|
return Math.min(safeMax, Math.max(safeMin, duration));
|
|
148
68
|
}
|
|
149
69
|
function surfaceResizeTransition(distancePx, {
|
|
150
|
-
base
|
|
151
|
-
min
|
|
152
|
-
max
|
|
70
|
+
base,
|
|
71
|
+
min,
|
|
72
|
+
max,
|
|
153
73
|
reference = 320,
|
|
154
74
|
gain = 0.22,
|
|
155
|
-
ease
|
|
156
|
-
}
|
|
75
|
+
ease
|
|
76
|
+
}) {
|
|
157
77
|
return tween(
|
|
158
78
|
durationForDistance(distancePx, { base, min, max, reference, gain }),
|
|
159
79
|
ease
|
|
160
80
|
);
|
|
161
81
|
}
|
|
162
82
|
function contentSwapTransitions({
|
|
163
|
-
duration
|
|
164
|
-
exitDuration
|
|
165
|
-
enterEase
|
|
166
|
-
exitEase
|
|
167
|
-
}
|
|
83
|
+
duration,
|
|
84
|
+
exitDuration,
|
|
85
|
+
enterEase,
|
|
86
|
+
exitEase
|
|
87
|
+
}) {
|
|
168
88
|
return Object.freeze({
|
|
169
89
|
enter: tween(duration, enterEase),
|
|
170
90
|
exit: tween(exitDuration, exitEase)
|
|
@@ -176,7 +96,7 @@ function contentSwap({
|
|
|
176
96
|
enterScale = 0.99,
|
|
177
97
|
exitScale = 0.99,
|
|
178
98
|
...transitionOptions
|
|
179
|
-
}
|
|
99
|
+
}) {
|
|
180
100
|
const transitions = contentSwapTransitions(transitionOptions);
|
|
181
101
|
return Object.freeze({
|
|
182
102
|
hidden: Object.freeze({
|
|
@@ -200,16 +120,14 @@ function overlaySurface({
|
|
|
200
120
|
exitTravel = travel * 0.5,
|
|
201
121
|
enterScale = 0.97,
|
|
202
122
|
exitScale = 0.985,
|
|
203
|
-
distance,
|
|
204
123
|
duration,
|
|
205
|
-
exitDuration,
|
|
206
|
-
enterEase
|
|
207
|
-
exitEase
|
|
208
|
-
}
|
|
209
|
-
const enterDuration = duration ?? (distance === void 0 ? DURATION_TOKENS.BASE : durationForDistance(distance));
|
|
124
|
+
exitDuration = duration * 0.68,
|
|
125
|
+
enterEase,
|
|
126
|
+
exitEase
|
|
127
|
+
}) {
|
|
210
128
|
const transitions = contentSwapTransitions({
|
|
211
|
-
duration
|
|
212
|
-
exitDuration
|
|
129
|
+
duration,
|
|
130
|
+
exitDuration,
|
|
213
131
|
enterEase,
|
|
214
132
|
exitEase
|
|
215
133
|
});
|
|
@@ -234,41 +152,12 @@ function staggerDelay(index, { base = 0.028, cap = 0.16, exponent = 0.82 } = {})
|
|
|
234
152
|
const safeIndex = Math.max(0, Number(index) || 0);
|
|
235
153
|
return Math.min(cap, base * Math.pow(safeIndex, exponent));
|
|
236
154
|
}
|
|
237
|
-
function staggerItem({
|
|
238
|
-
base = 0.028,
|
|
239
|
-
cap = 0.16,
|
|
240
|
-
duration = DURATION_TOKENS.BASE,
|
|
241
|
-
travel = 10,
|
|
242
|
-
enterEase = EASING_CURVES.OUT_EXPO,
|
|
243
|
-
exitDuration = DURATION_TOKENS.MICRO,
|
|
244
|
-
exitEase = EASING_CURVES.IN_CUBIC
|
|
245
|
-
} = {}) {
|
|
246
|
-
return Object.freeze({
|
|
247
|
-
hidden: Object.freeze({
|
|
248
|
-
opacity: 0,
|
|
249
|
-
transform: gpuTransform(travel, 0.985)
|
|
250
|
-
}),
|
|
251
|
-
visible: (index = 0) => ({
|
|
252
|
-
opacity: 1,
|
|
253
|
-
transform: gpuTransform(0),
|
|
254
|
-
transition: Object.freeze({
|
|
255
|
-
...tween(duration, enterEase),
|
|
256
|
-
delay: staggerDelay(index, { base, cap })
|
|
257
|
-
})
|
|
258
|
-
}),
|
|
259
|
-
exit: Object.freeze({
|
|
260
|
-
opacity: 0,
|
|
261
|
-
transform: gpuTransform(-travel * 0.6, 0.99),
|
|
262
|
-
transition: tween(exitDuration, exitEase)
|
|
263
|
-
})
|
|
264
|
-
});
|
|
265
|
-
}
|
|
266
155
|
function chip({
|
|
267
|
-
duration
|
|
268
|
-
exitDuration
|
|
269
|
-
enterEase
|
|
270
|
-
exitEase
|
|
271
|
-
}
|
|
156
|
+
duration,
|
|
157
|
+
exitDuration,
|
|
158
|
+
enterEase,
|
|
159
|
+
exitEase
|
|
160
|
+
}) {
|
|
272
161
|
const transitions = contentSwapTransitions({
|
|
273
162
|
duration,
|
|
274
163
|
exitDuration,
|
|
@@ -290,9 +179,9 @@ function chip({
|
|
|
290
179
|
});
|
|
291
180
|
}
|
|
292
181
|
function press({
|
|
293
|
-
tapScale
|
|
294
|
-
spring
|
|
295
|
-
}
|
|
182
|
+
tapScale,
|
|
183
|
+
spring
|
|
184
|
+
}) {
|
|
296
185
|
return Object.freeze({
|
|
297
186
|
variants: Object.freeze({
|
|
298
187
|
idle: Object.freeze({ transform: gpuTransform(0, 1) }),
|
|
@@ -302,24 +191,106 @@ function press({
|
|
|
302
191
|
transition: Object.freeze({ type: "spring", ...spring })
|
|
303
192
|
});
|
|
304
193
|
}
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
opacity: [1, 0.75],
|
|
312
|
-
scale: [1, 0.96]
|
|
194
|
+
|
|
195
|
+
// src/tokens/motion-config.ts
|
|
196
|
+
function defineMotion(tokens) {
|
|
197
|
+
const tempo = tokens.tempo ?? 1;
|
|
198
|
+
if (!Number.isFinite(tempo) || tempo <= 0) {
|
|
199
|
+
throw new Error(`Motion tempo must be a positive number, got ${tempo}.`);
|
|
313
200
|
}
|
|
314
|
-
} = {}) {
|
|
315
201
|
return Object.freeze({
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
interpolation: Object.freeze(interpolation)
|
|
202
|
+
...tokens,
|
|
203
|
+
tempo,
|
|
204
|
+
reducedMotion: tokens.reducedMotion ?? "user"
|
|
320
205
|
});
|
|
321
206
|
}
|
|
207
|
+
var TIME_KEYS = [
|
|
208
|
+
"duration",
|
|
209
|
+
"delay",
|
|
210
|
+
"delayChildren",
|
|
211
|
+
"staggerChildren",
|
|
212
|
+
"repeatDelay",
|
|
213
|
+
"visualDuration"
|
|
214
|
+
];
|
|
215
|
+
var REDUCED = Object.freeze({
|
|
216
|
+
type: "tween",
|
|
217
|
+
...REDUCED_MOTION_TRANSITION
|
|
218
|
+
});
|
|
219
|
+
function isPlainObject(value) {
|
|
220
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) return false;
|
|
221
|
+
const prototype = Object.getPrototypeOf(value);
|
|
222
|
+
return prototype === Object.prototype || prototype === null;
|
|
223
|
+
}
|
|
224
|
+
function isSpring(value) {
|
|
225
|
+
return value.type === "spring" || typeof value.stiffness === "number" || typeof value.damping === "number";
|
|
226
|
+
}
|
|
227
|
+
function isTransition(value) {
|
|
228
|
+
return isSpring(value) || TIME_KEYS.some((key) => typeof value[key] === "number");
|
|
229
|
+
}
|
|
230
|
+
function retimeTransition(value, clock) {
|
|
231
|
+
if (clock.reduced) return { ...REDUCED };
|
|
232
|
+
const { tempo } = clock;
|
|
233
|
+
const next = {};
|
|
234
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
235
|
+
next[key] = isPlainObject(entry) ? retimeNode(entry, clock) : entry;
|
|
236
|
+
}
|
|
237
|
+
for (const key of TIME_KEYS) {
|
|
238
|
+
if (typeof value[key] === "number") next[key] = value[key] * tempo;
|
|
239
|
+
}
|
|
240
|
+
if (typeof value.stiffness === "number") {
|
|
241
|
+
next.stiffness = value.stiffness / (tempo * tempo);
|
|
242
|
+
}
|
|
243
|
+
if (typeof value.damping === "number") next.damping = value.damping / tempo;
|
|
244
|
+
return next;
|
|
245
|
+
}
|
|
246
|
+
function retimeNode(value, clock) {
|
|
247
|
+
if (typeof value === "function") {
|
|
248
|
+
const fn = value;
|
|
249
|
+
return (...args) => retimeNode(fn(...args), clock);
|
|
250
|
+
}
|
|
251
|
+
if (!isPlainObject(value)) return value;
|
|
252
|
+
if (isTransition(value)) return retimeTransition(value, clock);
|
|
253
|
+
const next = {};
|
|
254
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
255
|
+
next[key] = retimeNode(entry, clock);
|
|
256
|
+
}
|
|
257
|
+
return next;
|
|
258
|
+
}
|
|
259
|
+
function retime(value, clock) {
|
|
260
|
+
if (clock.tempo === 1 && !clock.reduced) return value;
|
|
261
|
+
return retimeNode(value, clock);
|
|
262
|
+
}
|
|
263
|
+
function retimeSeconds(value, clock) {
|
|
264
|
+
if (typeof value === "number") {
|
|
265
|
+
return clock.reduced ? Math.min(value, REDUCED.duration) : value * clock.tempo;
|
|
266
|
+
}
|
|
267
|
+
if (!isPlainObject(value)) return value;
|
|
268
|
+
const next = {};
|
|
269
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
270
|
+
next[key] = retimeSeconds(entry, clock);
|
|
271
|
+
}
|
|
272
|
+
return next;
|
|
273
|
+
}
|
|
274
|
+
function retimeModuleMotion(motion, clock) {
|
|
275
|
+
if (clock.tempo === 1 && !clock.reduced) return motion;
|
|
276
|
+
if (!isPlainObject(motion)) return retime(motion, clock);
|
|
277
|
+
const next = {};
|
|
278
|
+
for (const [key, entry] of Object.entries(motion)) {
|
|
279
|
+
next[key] = key === "timings" ? retimeSeconds(entry, clock) : retimeNode(entry, clock);
|
|
280
|
+
}
|
|
281
|
+
return next;
|
|
282
|
+
}
|
|
283
|
+
function cssEasing(ease) {
|
|
284
|
+
if (Array.isArray(ease)) return `cubic-bezier(${ease.join(", ")})`;
|
|
285
|
+
if (typeof ease === "string" && ease.trim()) return ease;
|
|
286
|
+
return "ease";
|
|
287
|
+
}
|
|
288
|
+
function cssTransition(property, transition) {
|
|
289
|
+
const duration = `${Math.round((transition.duration ?? 0) * 1e3)}ms`;
|
|
290
|
+
const delay = transition.delay ? ` ${Math.round(transition.delay * 1e3)}ms` : "";
|
|
291
|
+
return `${property} ${duration} ${cssEasing(transition.ease)}${delay}`;
|
|
292
|
+
}
|
|
322
293
|
|
|
323
|
-
export { ACTION_TONE_CLASS,
|
|
294
|
+
export { ACTION_TONE_CLASS, REDUCED_MOTION_TRANSITION, SURFACE_CLASSES, Z_INDEX, chip, contentSwap, contentSwapTransitions, cssEasing, cssTransition, defineMotion, durationForDistance, gpuTransform, overlaySurface, press, retime, retimeModuleMotion, staggerDelay, surfaceResizeTransition };
|
|
324
295
|
//# sourceMappingURL=index.js.map
|
|
325
296
|
//# sourceMappingURL=index.js.map
|
package/dist/tokens/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tokens/tokens.ts","../../src/tokens/motion.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["export const Z_INDEX = Object.freeze({\n BACKGROUND: 0,\n DOCK_BACKDROP: 100,\n DOCK: 110,\n NOTIFICATION: 120,\n MODAL_BACKDROP: 130,\n MODAL: 140,\n SELECT: 150,\n LOADING: 160,\n ERROR_OVERLAY: 170,\n CONTEXT_MENU_BACKDROP: 180,\n CONTEXT_MENU: 190,\n TOOLTIP: 200,\n\n UI_ELEMENT: 10,\n DOCK_CARD_BACKGROUND: 0,\n DOCK_CARD_CONTENT: 10,\n DOCK_CARD_STACK_BASE: 10,\n DOCK_CARD_BADGE: 20,\n DOCK_CARD_MEDIA: 30,\n DOCK_BREADCRUMBS: 10,\n DOCK_SURFACE_CONTROL: 10,\n DOCK_SURFACE_POPOVER: 30,\n DOCK_SURFACE_CENTER: 0,\n MODAL_FRAME: 1,\n MODAL_STICKY_HEADER: 10,\n} as const);\n\nexport const SURFACE_CLASSES = Object.freeze({\n description: \"text-white/70\",\n icon: \"bg-white/10 text-white\",\n surface: \"bg-black/60 ring-1 ring-inset ring-white/10\",\n title: \"text-white\",\n} as const);\n\nexport const ACTION_TONE_CLASS =\n \"bg-primary/10 text-primary hover:bg-primary hover:text-black\";\n","export const DURATION_TOKENS = Object.freeze({\n INSTANT: 0.08,\n MICRO: 0.18,\n FAST: 0.28,\n BASE: 0.36,\n MODERATE: 0.44,\n SLOW: 0.58,\n CINEMATIC: 0.86,\n} as const);\n\nexport const EASING_CURVES = Object.freeze({\n OUT_EXPO: [0.16, 1, 0.3, 1] as const,\n OUT_QUART: [0.25, 1, 0.5, 1] as const,\n OUT_QUINT: [0.22, 1, 0.36, 1] as const,\n IN_OUT_CUBIC: [0.65, 0, 0.35, 1] as const,\n IN_CUBIC: [0.5, 0, 1, 1] as const,\n OUT_BACK: [0.34, 1.56, 0.64, 1] as const,\n} as const);\n\nexport const MOTION_EASINGS = Object.freeze({\n ENTER: EASING_CURVES.OUT_QUART,\n ENTER_EMPHASIZED: EASING_CURVES.OUT_EXPO,\n EXIT: EASING_CURVES.IN_CUBIC,\n} as const);\n\nexport const MOTION_TIERS = Object.freeze({\n MICRO: Object.freeze({\n distance: 4,\n duration: DURATION_TOKENS.MICRO,\n ease: MOTION_EASINGS.ENTER_EMPHASIZED,\n scaleDelta: 0.008,\n }),\n FAST: Object.freeze({\n distance: 9,\n duration: DURATION_TOKENS.FAST,\n ease: MOTION_EASINGS.ENTER_EMPHASIZED,\n scaleDelta: 0.012,\n }),\n STANDARD: Object.freeze({\n distance: 18,\n duration: DURATION_TOKENS.MODERATE,\n ease: MOTION_EASINGS.ENTER,\n scaleDelta: 0.018,\n }),\n SURFACE: Object.freeze({\n distance: 28,\n duration: DURATION_TOKENS.SLOW,\n ease: MOTION_EASINGS.ENTER_EMPHASIZED,\n scaleDelta: 0.024,\n }),\n} as const);\n\nexport const SPRING_PRESETS = Object.freeze({\n MICRO: Object.freeze({\n damping: 32,\n mass: 0.6,\n stiffness: 520,\n type: \"spring\",\n } as const),\n SNAPPY: Object.freeze({\n damping: 28,\n mass: 0.8,\n stiffness: 380,\n type: \"spring\",\n } as const),\n GENTLE: Object.freeze({\n damping: 30,\n mass: 1,\n stiffness: 260,\n type: \"spring\",\n } as const),\n BOUNCY: Object.freeze({\n damping: 20,\n mass: 0.85,\n stiffness: 340,\n type: \"spring\",\n } as const),\n} as const);\n\nexport const REDUCED_MOTION_TRANSITION = Object.freeze({\n duration: DURATION_TOKENS.INSTANT,\n ease: \"linear\",\n} as const);\n\nexport const COMPOSITOR_GPU_STYLE = Object.freeze({\n backfaceVisibility: \"hidden\",\n transform: \"translate3d(0, 0, 0)\",\n willChange: \"transform, opacity\",\n} as const);\n\nexport const TAP_SCALE_SUBTLE = 0.97;\n\ntype Ease = readonly [number, number, number, number];\n\ntype TweenOptions = {\n duration?: number;\n exitDuration?: number;\n enterEase?: Ease;\n exitEase?: Ease;\n};\n\ntype Spring = {\n type?: \"spring\";\n stiffness: number;\n damping: number;\n mass: number;\n};\n\nfunction tween(duration: number, ease: Ease) {\n return Object.freeze({ type: \"tween\" as const, duration, ease });\n}\n\nfunction safeNumber(value: unknown, fallback: number): number {\n const source =\n value &&\n typeof value === \"object\" &&\n \"get\" in value &&\n typeof value.get === \"function\"\n ? value.get()\n : value;\n const number = Number.parseFloat(String(source));\n return Number.isFinite(number) ? number : fallback;\n}\n\nexport function gpuTransform(\n y: unknown = 0,\n scale: unknown = 1,\n x: unknown = 0,\n): string {\n const translateY = Math.round(safeNumber(y, 0));\n const translateX = Math.round(safeNumber(x, 0));\n const scaleValue = Math.round(safeNumber(scale, 1) * 1000) / 1000;\n return `translate3d(${translateX}px, ${translateY}px, 0) scale(${scaleValue})`;\n}\n\nexport function durationForDistance(\n distancePx: number,\n {\n base = DURATION_TOKENS.FAST,\n min = DURATION_TOKENS.MICRO,\n max = DURATION_TOKENS.SLOW,\n reference = 320,\n gain = 0.22,\n }: {\n base?: number;\n min?: number;\n max?: number;\n reference?: number;\n gain?: number;\n } = {},\n): number {\n const distance = Math.abs(Number(distancePx) || 0);\n const safeMin = Math.max(0, min);\n const safeMax = Math.max(safeMin, max);\n const safeReference = Math.max(1, reference);\n const duration = base + Math.sqrt(distance / safeReference) * gain;\n return Math.min(safeMax, Math.max(safeMin, duration));\n}\n\nexport function surfaceResizeTransition(\n distancePx: number,\n {\n base = DURATION_TOKENS.FAST,\n min = DURATION_TOKENS.MICRO,\n max = DURATION_TOKENS.SLOW,\n reference = 320,\n gain = 0.22,\n ease = EASING_CURVES.IN_OUT_CUBIC,\n }: {\n base?: number;\n min?: number;\n max?: number;\n reference?: number;\n gain?: number;\n ease?: Ease;\n } = {},\n) {\n return tween(\n durationForDistance(distancePx, { base, min, max, reference, gain }),\n ease,\n );\n}\n\nexport function contentSwapTransitions({\n duration = DURATION_TOKENS.FAST,\n exitDuration = DURATION_TOKENS.MICRO,\n enterEase = EASING_CURVES.OUT_EXPO,\n exitEase = EASING_CURVES.IN_CUBIC,\n}: TweenOptions = {}) {\n return Object.freeze({\n enter: tween(duration, enterEase),\n exit: tween(exitDuration, exitEase),\n });\n}\n\nexport function contentSwap({\n travel = 6,\n exitTravel = travel * 0.7,\n enterScale = 0.99,\n exitScale = 0.99,\n ...transitionOptions\n}: TweenOptions & {\n travel?: number;\n exitTravel?: number;\n enterScale?: number;\n exitScale?: number;\n} = {}) {\n const transitions = contentSwapTransitions(transitionOptions);\n return Object.freeze({\n hidden: Object.freeze({\n opacity: 0,\n transform: gpuTransform(travel, enterScale),\n }),\n visible: Object.freeze({\n opacity: 1,\n transform: gpuTransform(0),\n transition: transitions.enter,\n }),\n exit: Object.freeze({\n opacity: 0,\n transform: gpuTransform(-exitTravel, exitScale),\n transition: transitions.exit,\n }),\n });\n}\n\nexport function overlaySurface({\n travel = 16,\n exitTravel = travel * 0.5,\n enterScale = 0.97,\n exitScale = 0.985,\n distance,\n duration,\n exitDuration,\n enterEase = EASING_CURVES.OUT_EXPO,\n exitEase = EASING_CURVES.IN_CUBIC,\n}: {\n travel?: number;\n exitTravel?: number;\n enterScale?: number;\n exitScale?: number;\n distance?: number;\n duration?: number;\n exitDuration?: number;\n enterEase?: Ease;\n exitEase?: Ease;\n} = {}) {\n const enterDuration =\n duration ??\n (distance === undefined\n ? DURATION_TOKENS.BASE\n : durationForDistance(distance));\n const transitions = contentSwapTransitions({\n duration: enterDuration,\n exitDuration: exitDuration ?? enterDuration * 0.68,\n enterEase,\n exitEase,\n });\n\n return Object.freeze({\n hidden: Object.freeze({\n opacity: 0,\n transform: gpuTransform(travel, enterScale),\n }),\n visible: Object.freeze({\n opacity: 1,\n transform: gpuTransform(0),\n transition: transitions.enter,\n }),\n exit: Object.freeze({\n opacity: 0,\n transform: gpuTransform(exitTravel, exitScale),\n transition: transitions.exit,\n }),\n });\n}\n\nexport function staggerDelay(\n index: number,\n { base = 0.028, cap = 0.16, exponent = 0.82 } = {},\n): number {\n const safeIndex = Math.max(0, Number(index) || 0);\n return Math.min(cap, base * Math.pow(safeIndex, exponent));\n}\n\nexport function staggerItem({\n base = 0.028,\n cap = 0.16,\n duration = DURATION_TOKENS.BASE,\n travel = 10,\n enterEase = EASING_CURVES.OUT_EXPO,\n exitDuration = DURATION_TOKENS.MICRO,\n exitEase = EASING_CURVES.IN_CUBIC,\n}: {\n base?: number;\n cap?: number;\n duration?: number;\n travel?: number;\n enterEase?: Ease;\n exitDuration?: number;\n exitEase?: Ease;\n} = {}) {\n return Object.freeze({\n hidden: Object.freeze({\n opacity: 0,\n transform: gpuTransform(travel, 0.985),\n }),\n visible: (index: number = 0) => ({\n opacity: 1,\n transform: gpuTransform(0),\n transition: Object.freeze({\n ...tween(duration, enterEase),\n delay: staggerDelay(index, { base, cap }),\n }),\n }),\n exit: Object.freeze({\n opacity: 0,\n transform: gpuTransform(-travel * 0.6, 0.99),\n transition: tween(exitDuration, exitEase),\n }),\n });\n}\n\nexport function chip({\n duration = DURATION_TOKENS.FAST,\n exitDuration = DURATION_TOKENS.MICRO,\n enterEase = EASING_CURVES.IN_OUT_CUBIC,\n exitEase = EASING_CURVES.IN_CUBIC,\n}: TweenOptions = {}) {\n const transitions = contentSwapTransitions({\n duration,\n exitDuration,\n enterEase,\n exitEase,\n });\n return Object.freeze({\n hidden: Object.freeze({ opacity: 0, transform: gpuTransform(0, 0.96) }),\n visible: Object.freeze({\n opacity: 1,\n transform: gpuTransform(0),\n transition: transitions.enter,\n }),\n exit: Object.freeze({\n opacity: 0,\n transform: gpuTransform(0, 0.96),\n transition: transitions.exit,\n }),\n });\n}\n\nexport function press({\n tapScale = TAP_SCALE_SUBTLE,\n spring = SPRING_PRESETS.MICRO,\n}: { tapScale?: number; spring?: Spring } = {}) {\n return Object.freeze({\n variants: Object.freeze({\n idle: Object.freeze({ transform: gpuTransform(0, 1) }),\n hover: Object.freeze({ transform: gpuTransform(0, 1) }),\n tap: Object.freeze({ transform: gpuTransform(0, tapScale) }),\n }),\n transition: Object.freeze({ type: \"spring\" as const, ...spring }),\n });\n}\n\nexport function dragDismiss({\n constraints = { top: 0, bottom: 0 },\n elastic = { top: 0.05, bottom: 0.5 },\n thresholds = { offsetY: 65, velocityY: 400 },\n interpolation = {\n range: [0, 180] as const,\n opacity: [1, 0.75] as const,\n scale: [1, 0.96] as const,\n },\n} = {}) {\n return Object.freeze({\n constraints: Object.freeze(constraints),\n elastic: Object.freeze(elastic),\n thresholds: Object.freeze(thresholds),\n interpolation: Object.freeze(interpolation),\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/tokens/tokens.ts","../../src/tokens/motion.ts","../../src/tokens/motion-config.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["export const Z_INDEX = Object.freeze({\n BACKGROUND: 0,\n DOCK_BACKDROP: 100,\n DOCK: 110,\n NOTIFICATION: 120,\n MODAL_BACKDROP: 130,\n MODAL: 140,\n SELECT: 150,\n LOADING: 160,\n ERROR_OVERLAY: 170,\n CONTEXT_MENU_BACKDROP: 180,\n CONTEXT_MENU: 190,\n TOOLTIP: 200,\n\n UI_ELEMENT: 10,\n DOCK_CARD_BACKGROUND: 0,\n DOCK_CARD_CONTENT: 10,\n DOCK_CARD_STACK_BASE: 10,\n DOCK_CARD_BADGE: 20,\n DOCK_CARD_MEDIA: 30,\n DOCK_BREADCRUMBS: 10,\n DOCK_SURFACE_CONTROL: 10,\n DOCK_SURFACE_POPOVER: 30,\n DOCK_SURFACE_CENTER: 0,\n MODAL_FRAME: 1,\n MODAL_STICKY_HEADER: 10,\n} as const);\n\nexport const SURFACE_CLASSES = Object.freeze({\n description: \"text-white/70\",\n icon: \"bg-white/10 text-white\",\n surface: \"bg-black/60 ring-1 ring-inset ring-white/10\",\n title: \"text-white\",\n} as const);\n\nexport const ACTION_TONE_CLASS =\n \"bg-primary/10 text-primary hover:bg-primary hover:text-black\";\n","// Builders for the motion an app writes in its theme files. They hold shapes\n// (travel, scale, how a duration grows with distance), never the app's timing:\n// every duration, easing and spring is passed in.\n\nexport const REDUCED_MOTION_TRANSITION = Object.freeze({\n duration: 0.08,\n ease: \"linear\",\n} as const);\n\ntype Ease = readonly [number, number, number, number];\n\ntype TweenOptions = {\n duration: number;\n exitDuration: number;\n enterEase: Ease;\n exitEase: Ease;\n};\n\ntype Spring = {\n type?: \"spring\";\n stiffness: number;\n damping: number;\n mass: number;\n};\n\nfunction tween(duration: number, ease: Ease) {\n return Object.freeze({ type: \"tween\" as const, duration, ease });\n}\n\nfunction safeNumber(value: unknown, fallback: number): number {\n const source =\n value &&\n typeof value === \"object\" &&\n \"get\" in value &&\n typeof value.get === \"function\"\n ? value.get()\n : value;\n const number = Number.parseFloat(String(source));\n return Number.isFinite(number) ? number : fallback;\n}\n\nexport function gpuTransform(\n y: unknown = 0,\n scale: unknown = 1,\n x: unknown = 0,\n): string {\n const translateY = Math.round(safeNumber(y, 0));\n const translateX = Math.round(safeNumber(x, 0));\n const scaleValue = Math.round(safeNumber(scale, 1) * 1000) / 1000;\n return `translate3d(${translateX}px, ${translateY}px, 0) scale(${scaleValue})`;\n}\n\nexport function durationForDistance(\n distancePx: number,\n {\n base,\n min,\n max,\n reference = 320,\n gain = 0.22,\n }: {\n base: number;\n min: number;\n max: number;\n reference?: number;\n gain?: number;\n },\n): number {\n const distance = Math.abs(Number(distancePx) || 0);\n const safeMin = Math.max(0, min);\n const safeMax = Math.max(safeMin, max);\n const safeReference = Math.max(1, reference);\n const duration = base + Math.sqrt(distance / safeReference) * gain;\n return Math.min(safeMax, Math.max(safeMin, duration));\n}\n\nexport function surfaceResizeTransition(\n distancePx: number,\n {\n base,\n min,\n max,\n reference = 320,\n gain = 0.22,\n ease,\n }: {\n base: number;\n min: number;\n max: number;\n reference?: number;\n gain?: number;\n ease: Ease;\n },\n) {\n return tween(\n durationForDistance(distancePx, { base, min, max, reference, gain }),\n ease,\n );\n}\n\nexport function contentSwapTransitions({\n duration,\n exitDuration,\n enterEase,\n exitEase,\n}: TweenOptions) {\n return Object.freeze({\n enter: tween(duration, enterEase),\n exit: tween(exitDuration, exitEase),\n });\n}\n\nexport function contentSwap({\n travel = 6,\n exitTravel = travel * 0.7,\n enterScale = 0.99,\n exitScale = 0.99,\n ...transitionOptions\n}: TweenOptions & {\n travel?: number;\n exitTravel?: number;\n enterScale?: number;\n exitScale?: number;\n}) {\n const transitions = contentSwapTransitions(transitionOptions);\n return Object.freeze({\n hidden: Object.freeze({\n opacity: 0,\n transform: gpuTransform(travel, enterScale),\n }),\n visible: Object.freeze({\n opacity: 1,\n transform: gpuTransform(0),\n transition: transitions.enter,\n }),\n exit: Object.freeze({\n opacity: 0,\n transform: gpuTransform(-exitTravel, exitScale),\n transition: transitions.exit,\n }),\n });\n}\n\nexport function overlaySurface({\n travel = 16,\n exitTravel = travel * 0.5,\n enterScale = 0.97,\n exitScale = 0.985,\n duration,\n exitDuration = duration * 0.68,\n enterEase,\n exitEase,\n}: {\n travel?: number;\n exitTravel?: number;\n enterScale?: number;\n exitScale?: number;\n duration: number;\n exitDuration?: number;\n enterEase: Ease;\n exitEase: Ease;\n}) {\n const transitions = contentSwapTransitions({\n duration,\n exitDuration,\n enterEase,\n exitEase,\n });\n\n return Object.freeze({\n hidden: Object.freeze({\n opacity: 0,\n transform: gpuTransform(travel, enterScale),\n }),\n visible: Object.freeze({\n opacity: 1,\n transform: gpuTransform(0),\n transition: transitions.enter,\n }),\n exit: Object.freeze({\n opacity: 0,\n transform: gpuTransform(exitTravel, exitScale),\n transition: transitions.exit,\n }),\n });\n}\n\nexport function staggerDelay(\n index: number,\n { base = 0.028, cap = 0.16, exponent = 0.82 } = {},\n): number {\n const safeIndex = Math.max(0, Number(index) || 0);\n return Math.min(cap, base * Math.pow(safeIndex, exponent));\n}\n\nexport function chip({\n duration,\n exitDuration,\n enterEase,\n exitEase,\n}: TweenOptions) {\n const transitions = contentSwapTransitions({\n duration,\n exitDuration,\n enterEase,\n exitEase,\n });\n return Object.freeze({\n hidden: Object.freeze({ opacity: 0, transform: gpuTransform(0, 0.96) }),\n visible: Object.freeze({\n opacity: 1,\n transform: gpuTransform(0),\n transition: transitions.enter,\n }),\n exit: Object.freeze({\n opacity: 0,\n transform: gpuTransform(0, 0.96),\n transition: transitions.exit,\n }),\n });\n}\n\nexport function press({\n tapScale,\n spring,\n}: {\n tapScale: number;\n spring: Spring;\n}) {\n return Object.freeze({\n variants: Object.freeze({\n idle: Object.freeze({ transform: gpuTransform(0, 1) }),\n hover: Object.freeze({ transform: gpuTransform(0, 1) }),\n tap: Object.freeze({ transform: gpuTransform(0, tapScale) }),\n }),\n transition: Object.freeze({ type: \"spring\" as const, ...spring }),\n });\n}\n","import { REDUCED_MOTION_TRANSITION } from \"./motion\";\n\n// Motion is owned by the app, like its styles. The app names its own\n// durations, easings and springs and writes every module's motion with them;\n// the framework only reads the tempo and the reduced-motion policy, and applies\n// both to whatever the app wrote.\n\nexport type MotionEase = readonly [number, number, number, number];\n\nexport type ReducedMotionPolicy = \"user\" | \"always\" | \"never\";\n\nexport interface MotionSpring {\n readonly type?: \"spring\";\n readonly stiffness?: number;\n readonly damping?: number;\n readonly mass?: number;\n readonly bounce?: number;\n readonly visualDuration?: number;\n}\n\nexport interface MotionTokensInput {\n /** Stretches every module duration, delay, stagger, timer and spring. */\n readonly tempo?: number;\n /** \"user\" follows the OS setting. */\n readonly reducedMotion?: ReducedMotionPolicy;\n readonly durations?: Readonly<Record<string, number>>;\n readonly easings?: Readonly<Record<string, MotionEase>>;\n readonly springs?: Readonly<Record<string, MotionSpring>>;\n}\n\nexport type MotionTokens<T extends MotionTokensInput = MotionTokensInput> =\n Readonly<\n Omit<T, \"tempo\" | \"reducedMotion\"> & {\n tempo: number;\n reducedMotion: ReducedMotionPolicy;\n }\n >;\n\nexport function defineMotion<T extends MotionTokensInput>(\n tokens: T,\n): MotionTokens<T> {\n const tempo = tokens.tempo ?? 1;\n if (!Number.isFinite(tempo) || tempo <= 0) {\n throw new Error(`Motion tempo must be a positive number, got ${tempo}.`);\n }\n return Object.freeze({\n ...tokens,\n tempo,\n reducedMotion: tokens.reducedMotion ?? \"user\",\n }) as MotionTokens<T>;\n}\n\nexport interface MotionClock {\n readonly tempo: number;\n readonly reduced: boolean;\n}\n\nconst TIME_KEYS = [\n \"duration\",\n \"delay\",\n \"delayChildren\",\n \"staggerChildren\",\n \"repeatDelay\",\n \"visualDuration\",\n] as const;\n\nconst REDUCED = Object.freeze({\n type: \"tween\" as const,\n ...REDUCED_MOTION_TRANSITION,\n});\n\ntype Plain = Record<string, unknown>;\n\nfunction isPlainObject(value: unknown): value is Plain {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return false;\n const prototype = Object.getPrototypeOf(value);\n return prototype === Object.prototype || prototype === null;\n}\n\nfunction isSpring(value: Plain): boolean {\n return (\n value.type === \"spring\" ||\n typeof value.stiffness === \"number\" ||\n typeof value.damping === \"number\"\n );\n}\n\nfunction isTransition(value: Plain): boolean {\n return (\n isSpring(value) ||\n TIME_KEYS.some((key) => typeof value[key] === \"number\")\n );\n}\n\nfunction retimeTransition(value: Plain, clock: MotionClock): Plain {\n if (clock.reduced) return { ...REDUCED };\n const { tempo } = clock;\n const next: Plain = {};\n for (const [key, entry] of Object.entries(value)) {\n next[key] = isPlainObject(entry) ? retimeNode(entry, clock) : entry;\n }\n for (const key of TIME_KEYS) {\n if (typeof value[key] === \"number\") next[key] = (value[key] as number) * tempo;\n }\n // A spring takes tempo× as long at the same damping ratio when its\n // stiffness falls by tempo² and its damping by tempo.\n if (typeof value.stiffness === \"number\") {\n next.stiffness = value.stiffness / (tempo * tempo);\n }\n if (typeof value.damping === \"number\") next.damping = value.damping / tempo;\n return next;\n}\n\nfunction retimeNode(value: unknown, clock: MotionClock): unknown {\n if (typeof value === \"function\") {\n const fn = value as (...args: unknown[]) => unknown;\n return (...args: unknown[]) => retimeNode(fn(...args), clock);\n }\n if (!isPlainObject(value)) return value;\n if (isTransition(value)) return retimeTransition(value, clock);\n const next: Plain = {};\n for (const [key, entry] of Object.entries(value)) {\n next[key] = retimeNode(entry, clock);\n }\n return next;\n}\n\n/** Applies tempo, or the reduced-motion collapse, to transitions anywhere in a motion tree. */\nexport function retime<T>(value: T, clock: MotionClock): T {\n if (clock.tempo === 1 && !clock.reduced) return value;\n return retimeNode(value, clock) as T;\n}\n\nfunction retimeSeconds(value: unknown, clock: MotionClock): unknown {\n if (typeof value === \"number\") {\n return clock.reduced\n ? Math.min(value, REDUCED.duration)\n : value * clock.tempo;\n }\n if (!isPlainObject(value)) return value;\n const next: Plain = {};\n for (const [key, entry] of Object.entries(value)) {\n next[key] = retimeSeconds(entry, clock);\n }\n return next;\n}\n\n/**\n * Retimes a module's resolved motion. Every number under its `timings` key is\n * seconds (choreography timers, staggers); everything else is walked for\n * transitions.\n */\nexport function retimeModuleMotion<M>(motion: M, clock: MotionClock): M {\n if (clock.tempo === 1 && !clock.reduced) return motion;\n if (!isPlainObject(motion)) return retime(motion, clock);\n const next: Plain = {};\n for (const [key, entry] of Object.entries(motion)) {\n next[key] =\n key === \"timings\" ? retimeSeconds(entry, clock) : retimeNode(entry, clock);\n }\n return next as M;\n}\n\nexport function cssEasing(ease: unknown): string {\n if (Array.isArray(ease)) return `cubic-bezier(${ease.join(\", \")})`;\n if (typeof ease === \"string\" && ease.trim()) return ease;\n return \"ease\";\n}\n\n/** A CSS `transition` value for one property, from a motion tween. */\nexport function cssTransition(\n property: string,\n transition: { duration?: number; delay?: number; ease?: unknown },\n): string {\n const duration = `${Math.round((transition.duration ?? 0) * 1000)}ms`;\n const delay = transition.delay\n ? ` ${Math.round(transition.delay * 1000)}ms`\n : \"\";\n return `${property} ${duration} ${cssEasing(transition.ease)}${delay}`;\n}\n"]}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export type MotionEase = readonly [number, number, number, number];
|
|
2
|
+
export type ReducedMotionPolicy = "user" | "always" | "never";
|
|
3
|
+
export interface MotionSpring {
|
|
4
|
+
readonly type?: "spring";
|
|
5
|
+
readonly stiffness?: number;
|
|
6
|
+
readonly damping?: number;
|
|
7
|
+
readonly mass?: number;
|
|
8
|
+
readonly bounce?: number;
|
|
9
|
+
readonly visualDuration?: number;
|
|
10
|
+
}
|
|
11
|
+
export interface MotionTokensInput {
|
|
12
|
+
/** Stretches every module duration, delay, stagger, timer and spring. */
|
|
13
|
+
readonly tempo?: number;
|
|
14
|
+
/** "user" follows the OS setting. */
|
|
15
|
+
readonly reducedMotion?: ReducedMotionPolicy;
|
|
16
|
+
readonly durations?: Readonly<Record<string, number>>;
|
|
17
|
+
readonly easings?: Readonly<Record<string, MotionEase>>;
|
|
18
|
+
readonly springs?: Readonly<Record<string, MotionSpring>>;
|
|
19
|
+
}
|
|
20
|
+
export type MotionTokens<T extends MotionTokensInput = MotionTokensInput> = Readonly<Omit<T, "tempo" | "reducedMotion"> & {
|
|
21
|
+
tempo: number;
|
|
22
|
+
reducedMotion: ReducedMotionPolicy;
|
|
23
|
+
}>;
|
|
24
|
+
export declare function defineMotion<T extends MotionTokensInput>(tokens: T): MotionTokens<T>;
|
|
25
|
+
export interface MotionClock {
|
|
26
|
+
readonly tempo: number;
|
|
27
|
+
readonly reduced: boolean;
|
|
28
|
+
}
|
|
29
|
+
/** Applies tempo, or the reduced-motion collapse, to transitions anywhere in a motion tree. */
|
|
30
|
+
export declare function retime<T>(value: T, clock: MotionClock): T;
|
|
31
|
+
/**
|
|
32
|
+
* Retimes a module's resolved motion. Every number under its `timings` key is
|
|
33
|
+
* seconds (choreography timers, staggers); everything else is walked for
|
|
34
|
+
* transitions.
|
|
35
|
+
*/
|
|
36
|
+
export declare function retimeModuleMotion<M>(motion: M, clock: MotionClock): M;
|
|
37
|
+
export declare function cssEasing(ease: unknown): string;
|
|
38
|
+
/** A CSS `transition` value for one property, from a motion tween. */
|
|
39
|
+
export declare function cssTransition(property: string, transition: {
|
|
40
|
+
duration?: number;
|
|
41
|
+
delay?: number;
|
|
42
|
+
ease?: unknown;
|
|
43
|
+
}): string;
|
|
44
|
+
//# sourceMappingURL=motion-config.d.ts.map
|