@framingui/core 0.4.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/README.md +758 -0
- package/dist/blueprint.d.ts +44 -0
- package/dist/blueprint.d.ts.map +1 -0
- package/dist/blueprint.js +163 -0
- package/dist/blueprint.js.map +1 -0
- package/dist/component-schemas.d.ts +78 -0
- package/dist/component-schemas.d.ts.map +1 -0
- package/dist/component-schemas.js +1037 -0
- package/dist/component-schemas.js.map +1 -0
- package/dist/css-generator.d.ts +42 -0
- package/dist/css-generator.d.ts.map +1 -0
- package/dist/css-generator.js +339 -0
- package/dist/css-generator.js.map +1 -0
- package/dist/icon-library.d.ts +109 -0
- package/dist/icon-library.d.ts.map +1 -0
- package/dist/icon-library.js +204 -0
- package/dist/icon-library.js.map +1 -0
- package/dist/index.d.ts +36 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +53 -0
- package/dist/index.js.map +1 -0
- package/dist/layout-css-generator.d.ts +158 -0
- package/dist/layout-css-generator.d.ts.map +1 -0
- package/dist/layout-css-generator.js +901 -0
- package/dist/layout-css-generator.js.map +1 -0
- package/dist/layout-resolver.d.ts +92 -0
- package/dist/layout-resolver.d.ts.map +1 -0
- package/dist/layout-resolver.js +275 -0
- package/dist/layout-resolver.js.map +1 -0
- package/dist/layout-tokens/index.d.ts +16 -0
- package/dist/layout-tokens/index.d.ts.map +1 -0
- package/dist/layout-tokens/index.js +16 -0
- package/dist/layout-tokens/index.js.map +1 -0
- package/dist/layout-tokens/keyboard.d.ts +254 -0
- package/dist/layout-tokens/keyboard.d.ts.map +1 -0
- package/dist/layout-tokens/keyboard.js +407 -0
- package/dist/layout-tokens/keyboard.js.map +1 -0
- package/dist/layout-tokens/mobile-shells.d.ts +78 -0
- package/dist/layout-tokens/mobile-shells.d.ts.map +1 -0
- package/dist/layout-tokens/mobile-shells.js +635 -0
- package/dist/layout-tokens/mobile-shells.js.map +1 -0
- package/dist/layout-tokens/pages.d.ts +100 -0
- package/dist/layout-tokens/pages.d.ts.map +1 -0
- package/dist/layout-tokens/pages.js +576 -0
- package/dist/layout-tokens/pages.js.map +1 -0
- package/dist/layout-tokens/responsive.d.ts +109 -0
- package/dist/layout-tokens/responsive.d.ts.map +1 -0
- package/dist/layout-tokens/responsive.js +167 -0
- package/dist/layout-tokens/responsive.js.map +1 -0
- package/dist/layout-tokens/safe-area.d.ts +156 -0
- package/dist/layout-tokens/safe-area.d.ts.map +1 -0
- package/dist/layout-tokens/safe-area.js +316 -0
- package/dist/layout-tokens/safe-area.js.map +1 -0
- package/dist/layout-tokens/sections-advanced.d.ts +277 -0
- package/dist/layout-tokens/sections-advanced.d.ts.map +1 -0
- package/dist/layout-tokens/sections-advanced.js +593 -0
- package/dist/layout-tokens/sections-advanced.js.map +1 -0
- package/dist/layout-tokens/sections.d.ts +137 -0
- package/dist/layout-tokens/sections.d.ts.map +1 -0
- package/dist/layout-tokens/sections.js +694 -0
- package/dist/layout-tokens/sections.js.map +1 -0
- package/dist/layout-tokens/shells.d.ts +77 -0
- package/dist/layout-tokens/shells.d.ts.map +1 -0
- package/dist/layout-tokens/shells.js +408 -0
- package/dist/layout-tokens/shells.js.map +1 -0
- package/dist/layout-tokens/touch-target.d.ts +119 -0
- package/dist/layout-tokens/touch-target.d.ts.map +1 -0
- package/dist/layout-tokens/touch-target.js +156 -0
- package/dist/layout-tokens/touch-target.js.map +1 -0
- package/dist/layout-tokens/types.d.ts +632 -0
- package/dist/layout-tokens/types.d.ts.map +1 -0
- package/dist/layout-tokens/types.js +49 -0
- package/dist/layout-tokens/types.js.map +1 -0
- package/dist/layout-validation.d.ts +1547 -0
- package/dist/layout-validation.d.ts.map +1 -0
- package/dist/layout-validation.js +628 -0
- package/dist/layout-validation.js.map +1 -0
- package/dist/render.d.ts +23 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +244 -0
- package/dist/render.js.map +1 -0
- package/dist/schema-validation.d.ts +208 -0
- package/dist/schema-validation.d.ts.map +1 -0
- package/dist/schema-validation.js +205 -0
- package/dist/schema-validation.js.map +1 -0
- package/dist/screen-generation/generators/css-in-js-generator.d.ts +82 -0
- package/dist/screen-generation/generators/css-in-js-generator.d.ts.map +1 -0
- package/dist/screen-generation/generators/css-in-js-generator.js +335 -0
- package/dist/screen-generation/generators/css-in-js-generator.js.map +1 -0
- package/dist/screen-generation/generators/index.d.ts +13 -0
- package/dist/screen-generation/generators/index.d.ts.map +1 -0
- package/dist/screen-generation/generators/index.js +32 -0
- package/dist/screen-generation/generators/index.js.map +1 -0
- package/dist/screen-generation/generators/react-generator.d.ts +100 -0
- package/dist/screen-generation/generators/react-generator.d.ts.map +1 -0
- package/dist/screen-generation/generators/react-generator.js +379 -0
- package/dist/screen-generation/generators/react-generator.js.map +1 -0
- package/dist/screen-generation/generators/tailwind-generator.d.ts +105 -0
- package/dist/screen-generation/generators/tailwind-generator.d.ts.map +1 -0
- package/dist/screen-generation/generators/tailwind-generator.js +355 -0
- package/dist/screen-generation/generators/tailwind-generator.js.map +1 -0
- package/dist/screen-generation/generators/types.d.ts +136 -0
- package/dist/screen-generation/generators/types.d.ts.map +1 -0
- package/dist/screen-generation/generators/types.js +18 -0
- package/dist/screen-generation/generators/types.js.map +1 -0
- package/dist/screen-generation/generators/utils.d.ts +187 -0
- package/dist/screen-generation/generators/utils.d.ts.map +1 -0
- package/dist/screen-generation/generators/utils.js +312 -0
- package/dist/screen-generation/generators/utils.js.map +1 -0
- package/dist/screen-generation/index.d.ts +14 -0
- package/dist/screen-generation/index.d.ts.map +1 -0
- package/dist/screen-generation/index.js +33 -0
- package/dist/screen-generation/index.js.map +1 -0
- package/dist/screen-generation/resolver/component-resolver.d.ts +157 -0
- package/dist/screen-generation/resolver/component-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/component-resolver.js +295 -0
- package/dist/screen-generation/resolver/component-resolver.js.map +1 -0
- package/dist/screen-generation/resolver/index.d.ts +10 -0
- package/dist/screen-generation/resolver/index.d.ts.map +1 -0
- package/dist/screen-generation/resolver/index.js +46 -0
- package/dist/screen-generation/resolver/index.js.map +1 -0
- package/dist/screen-generation/resolver/layout-resolver.d.ts +155 -0
- package/dist/screen-generation/resolver/layout-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/layout-resolver.js +193 -0
- package/dist/screen-generation/resolver/layout-resolver.js.map +1 -0
- package/dist/screen-generation/resolver/screen-resolver.d.ts +174 -0
- package/dist/screen-generation/resolver/screen-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/screen-resolver.js +373 -0
- package/dist/screen-generation/resolver/screen-resolver.js.map +1 -0
- package/dist/screen-generation/resolver/token-resolver.d.ts +170 -0
- package/dist/screen-generation/resolver/token-resolver.d.ts.map +1 -0
- package/dist/screen-generation/resolver/token-resolver.js +260 -0
- package/dist/screen-generation/resolver/token-resolver.js.map +1 -0
- package/dist/screen-generation/types.d.ts +116 -0
- package/dist/screen-generation/types.d.ts.map +1 -0
- package/dist/screen-generation/types.js +33 -0
- package/dist/screen-generation/types.js.map +1 -0
- package/dist/screen-generation/validators.d.ts +286 -0
- package/dist/screen-generation/validators.d.ts.map +1 -0
- package/dist/screen-generation/validators.js +323 -0
- package/dist/screen-generation/validators.js.map +1 -0
- package/dist/screen-templates/__tests__/registry.test.d.ts +6 -0
- package/dist/screen-templates/__tests__/registry.test.d.ts.map +1 -0
- package/dist/screen-templates/__tests__/registry.test.js +247 -0
- package/dist/screen-templates/__tests__/registry.test.js.map +1 -0
- package/dist/screen-templates/__tests__/templates.test.d.ts +6 -0
- package/dist/screen-templates/__tests__/templates.test.d.ts.map +1 -0
- package/dist/screen-templates/__tests__/templates.test.js +179 -0
- package/dist/screen-templates/__tests__/templates.test.js.map +1 -0
- package/dist/screen-templates/index.d.ts +39 -0
- package/dist/screen-templates/index.d.ts.map +1 -0
- package/dist/screen-templates/index.js +79 -0
- package/dist/screen-templates/index.js.map +1 -0
- package/dist/screen-templates/registry.d.ts +177 -0
- package/dist/screen-templates/registry.d.ts.map +1 -0
- package/dist/screen-templates/registry.js +274 -0
- package/dist/screen-templates/registry.js.map +1 -0
- package/dist/screen-templates/templates/account/index.d.ts +6 -0
- package/dist/screen-templates/templates/account/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/account/index.js +6 -0
- package/dist/screen-templates/templates/account/index.js.map +1 -0
- package/dist/screen-templates/templates/account/profile.d.ts +23 -0
- package/dist/screen-templates/templates/account/profile.d.ts.map +1 -0
- package/dist/screen-templates/templates/account/profile.js +249 -0
- package/dist/screen-templates/templates/account/profile.js.map +1 -0
- package/dist/screen-templates/templates/auth/forgot-password.d.ts +23 -0
- package/dist/screen-templates/templates/auth/forgot-password.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/forgot-password.js +203 -0
- package/dist/screen-templates/templates/auth/forgot-password.js.map +1 -0
- package/dist/screen-templates/templates/auth/index.d.ts +9 -0
- package/dist/screen-templates/templates/auth/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/index.js +9 -0
- package/dist/screen-templates/templates/auth/index.js.map +1 -0
- package/dist/screen-templates/templates/auth/login.d.ts +24 -0
- package/dist/screen-templates/templates/auth/login.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/login.js +254 -0
- package/dist/screen-templates/templates/auth/login.js.map +1 -0
- package/dist/screen-templates/templates/auth/signup.d.ts +24 -0
- package/dist/screen-templates/templates/auth/signup.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/signup.js +315 -0
- package/dist/screen-templates/templates/auth/signup.js.map +1 -0
- package/dist/screen-templates/templates/auth/verification.d.ts +23 -0
- package/dist/screen-templates/templates/auth/verification.d.ts.map +1 -0
- package/dist/screen-templates/templates/auth/verification.js +239 -0
- package/dist/screen-templates/templates/auth/verification.js.map +1 -0
- package/dist/screen-templates/templates/feedback/confirmation.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/confirmation.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/confirmation.js +107 -0
- package/dist/screen-templates/templates/feedback/confirmation.js.map +1 -0
- package/dist/screen-templates/templates/feedback/empty.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/empty.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/empty.js +90 -0
- package/dist/screen-templates/templates/feedback/empty.js.map +1 -0
- package/dist/screen-templates/templates/feedback/error.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/error.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/error.js +99 -0
- package/dist/screen-templates/templates/feedback/error.js.map +1 -0
- package/dist/screen-templates/templates/feedback/index.d.ts +10 -0
- package/dist/screen-templates/templates/feedback/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/index.js +10 -0
- package/dist/screen-templates/templates/feedback/index.js.map +1 -0
- package/dist/screen-templates/templates/feedback/loading.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/loading.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/loading.js +77 -0
- package/dist/screen-templates/templates/feedback/loading.js.map +1 -0
- package/dist/screen-templates/templates/feedback/success.d.ts +9 -0
- package/dist/screen-templates/templates/feedback/success.d.ts.map +1 -0
- package/dist/screen-templates/templates/feedback/success.js +99 -0
- package/dist/screen-templates/templates/feedback/success.js.map +1 -0
- package/dist/screen-templates/templates/home/index.d.ts +6 -0
- package/dist/screen-templates/templates/home/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/home/index.js +6 -0
- package/dist/screen-templates/templates/home/index.js.map +1 -0
- package/dist/screen-templates/templates/home/landing.d.ts +24 -0
- package/dist/screen-templates/templates/home/landing.d.ts.map +1 -0
- package/dist/screen-templates/templates/home/landing.js +197 -0
- package/dist/screen-templates/templates/home/landing.js.map +1 -0
- package/dist/screen-templates/templates/settings/index.d.ts +6 -0
- package/dist/screen-templates/templates/settings/index.d.ts.map +1 -0
- package/dist/screen-templates/templates/settings/index.js +6 -0
- package/dist/screen-templates/templates/settings/index.js.map +1 -0
- package/dist/screen-templates/templates/settings/preferences.d.ts +24 -0
- package/dist/screen-templates/templates/settings/preferences.d.ts.map +1 -0
- package/dist/screen-templates/templates/settings/preferences.js +265 -0
- package/dist/screen-templates/templates/settings/preferences.js.map +1 -0
- package/dist/screen-templates/types.d.ts +229 -0
- package/dist/screen-templates/types.d.ts.map +1 -0
- package/dist/screen-templates/types.js +7 -0
- package/dist/screen-templates/types.js.map +1 -0
- package/dist/theme-v2.d.ts +361 -0
- package/dist/theme-v2.d.ts.map +1 -0
- package/dist/theme-v2.js +251 -0
- package/dist/theme-v2.js.map +1 -0
- package/dist/theme.d.ts +60 -0
- package/dist/theme.d.ts.map +1 -0
- package/dist/theme.js +78 -0
- package/dist/theme.js.map +1 -0
- package/dist/token-resolver.d.ts +69 -0
- package/dist/token-resolver.d.ts.map +1 -0
- package/dist/token-resolver.js +122 -0
- package/dist/token-resolver.js.map +1 -0
- package/dist/token-validation.d.ts +432 -0
- package/dist/token-validation.d.ts.map +1 -0
- package/dist/token-validation.js +140 -0
- package/dist/token-validation.js.map +1 -0
- package/dist/tokens.d.ts +158 -0
- package/dist/tokens.d.ts.map +1 -0
- package/dist/tokens.js +10 -0
- package/dist/tokens.js.map +1 -0
- package/dist/types.d.ts +77 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +7 -0
- package/dist/types.js.map +1 -0
- package/package.json +54 -0
package/dist/theme.d.ts
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @framingui/core - Theme Module
|
|
3
|
+
* v2.1 Theme System - Load themes from .moai/themes/generated/
|
|
4
|
+
*
|
|
5
|
+
* MIGRATION NOTICE:
|
|
6
|
+
* - v1 themes (packages/core/themes/) have been removed
|
|
7
|
+
* - All themes now use v2.1 schema from .moai/themes/generated/
|
|
8
|
+
* - Use loadThemeV2() and ThemeV2 type for new code
|
|
9
|
+
*/
|
|
10
|
+
export { type ThemeV2, type ThemeMetaV2, type DesignDNA, type AtomicTokensV2, type SemanticTokensV2, type ComponentTokensV2, type StateLayerTokens, type MotionTokens, type ElevationTokens, type BorderTokens, type TypographyTokens, type DensityTokens, type EffectsTokens, type AIContext, type DarkModeOverrides, type OKLCHColorV2, loadThemeV2, listThemesV2, themeExistsV2, oklchToCSSV2, resolveTokenRef, getWhiteColor, CSS_VARIABLE_MAP, type CSSVariableName, } from './theme-v2.js';
|
|
11
|
+
import { type ThemeV2, type ThemeMetaV2, type OKLCHColorV2 } from './theme-v2.js';
|
|
12
|
+
/**
|
|
13
|
+
* Load a theme by ID
|
|
14
|
+
* @param themeId - Theme identifier (e.g., "atlantic-magazine-v1")
|
|
15
|
+
* @returns Theme object or null if not found
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* const theme = loadTheme('atlantic-magazine-v1');
|
|
20
|
+
* if (theme) {
|
|
21
|
+
* console.log(theme.brandTone); // "professional"
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export declare function loadTheme(themeId: string): ThemeV2 | null;
|
|
26
|
+
/**
|
|
27
|
+
* List all available themes
|
|
28
|
+
* @returns Array of theme metadata
|
|
29
|
+
*/
|
|
30
|
+
export declare function listThemes(): ThemeMetaV2[];
|
|
31
|
+
/**
|
|
32
|
+
* Check if a theme exists
|
|
33
|
+
* @param themeId - Theme identifier
|
|
34
|
+
*/
|
|
35
|
+
export declare function themeExists(themeId: string): boolean;
|
|
36
|
+
/**
|
|
37
|
+
* Convert OKLCH color to CSS string
|
|
38
|
+
*/
|
|
39
|
+
export declare function oklchToCSS(color: OKLCHColorV2): string;
|
|
40
|
+
export type Theme = ThemeV2;
|
|
41
|
+
export type ThemeMeta = ThemeMetaV2;
|
|
42
|
+
export type OKLCHColor = OKLCHColorV2;
|
|
43
|
+
/**
|
|
44
|
+
* @deprecated v1 built-in themes have been removed. Use themes from .moai/themes/generated/
|
|
45
|
+
*/
|
|
46
|
+
export declare const BUILTIN_THEMES: readonly string[];
|
|
47
|
+
/**
|
|
48
|
+
* @deprecated v1 built-in themes have been removed
|
|
49
|
+
*/
|
|
50
|
+
export type BuiltinThemeId = never;
|
|
51
|
+
/**
|
|
52
|
+
* @deprecated v1 built-in themes have been removed
|
|
53
|
+
*/
|
|
54
|
+
export declare function isBuiltinTheme(_themeId: string): _themeId is BuiltinThemeId;
|
|
55
|
+
/**
|
|
56
|
+
* @deprecated Use theme tokens directly. This function provided minimal v1 CSS output.
|
|
57
|
+
* For v2.1, use generateThemeCSS() from css-generator.ts with proper token resolution.
|
|
58
|
+
*/
|
|
59
|
+
export declare function generateCSSVariables(_theme: ThemeV2): Record<string, string>;
|
|
60
|
+
//# sourceMappingURL=theme.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.d.ts","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,OAAO,EAEL,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,EACrB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,aAAa,EAClB,KAAK,SAAS,EACd,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAGjB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,eAAe,EACf,aAAa,EAEb,gBAAgB,EAChB,KAAK,eAAe,GACrB,MAAM,eAAe,CAAC;AAMvB,OAAO,EAKL,KAAK,OAAO,EACZ,KAAK,WAAW,EAChB,KAAK,YAAY,EAClB,MAAM,eAAe,CAAC;AAEvB;;;;;;;;;;;;GAYG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAEzD;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,WAAW,EAAE,CAE1C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAEtD;AAGD,MAAM,MAAM,KAAK,GAAG,OAAO,CAAC;AAC5B,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC;AACpC,MAAM,MAAM,UAAU,GAAG,YAAY,CAAC;AAMtC;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,SAAS,MAAM,EAAO,CAAC;AAEpD;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,KAAK,CAAC;AAEnC;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,cAAc,CAG3E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAG5E"}
|
package/dist/theme.js
ADDED
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @framingui/core - Theme Module
|
|
3
|
+
* v2.1 Theme System - Load themes from .moai/themes/generated/
|
|
4
|
+
*
|
|
5
|
+
* MIGRATION NOTICE:
|
|
6
|
+
* - v1 themes (packages/core/themes/) have been removed
|
|
7
|
+
* - All themes now use v2.1 schema from .moai/themes/generated/
|
|
8
|
+
* - Use loadThemeV2() and ThemeV2 type for new code
|
|
9
|
+
*/
|
|
10
|
+
// Re-export all v2.1 theme functionality
|
|
11
|
+
export {
|
|
12
|
+
// Functions
|
|
13
|
+
loadThemeV2, listThemesV2, themeExistsV2, oklchToCSSV2, resolveTokenRef, getWhiteColor,
|
|
14
|
+
// Constants
|
|
15
|
+
CSS_VARIABLE_MAP, } from './theme-v2.js';
|
|
16
|
+
// ============================================================================
|
|
17
|
+
// Convenience Aliases (Primary API)
|
|
18
|
+
// ============================================================================
|
|
19
|
+
import { loadThemeV2, listThemesV2, themeExistsV2, oklchToCSSV2, } from './theme-v2.js';
|
|
20
|
+
/**
|
|
21
|
+
* Load a theme by ID
|
|
22
|
+
* @param themeId - Theme identifier (e.g., "atlantic-magazine-v1")
|
|
23
|
+
* @returns Theme object or null if not found
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* ```typescript
|
|
27
|
+
* const theme = loadTheme('atlantic-magazine-v1');
|
|
28
|
+
* if (theme) {
|
|
29
|
+
* console.log(theme.brandTone); // "professional"
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export function loadTheme(themeId) {
|
|
34
|
+
return loadThemeV2(themeId);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* List all available themes
|
|
38
|
+
* @returns Array of theme metadata
|
|
39
|
+
*/
|
|
40
|
+
export function listThemes() {
|
|
41
|
+
return listThemesV2();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Check if a theme exists
|
|
45
|
+
* @param themeId - Theme identifier
|
|
46
|
+
*/
|
|
47
|
+
export function themeExists(themeId) {
|
|
48
|
+
return themeExistsV2(themeId);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Convert OKLCH color to CSS string
|
|
52
|
+
*/
|
|
53
|
+
export function oklchToCSS(color) {
|
|
54
|
+
return oklchToCSSV2(color);
|
|
55
|
+
}
|
|
56
|
+
// ============================================================================
|
|
57
|
+
// Deprecated - Remove in next major version
|
|
58
|
+
// ============================================================================
|
|
59
|
+
/**
|
|
60
|
+
* @deprecated v1 built-in themes have been removed. Use themes from .moai/themes/generated/
|
|
61
|
+
*/
|
|
62
|
+
export const BUILTIN_THEMES = [];
|
|
63
|
+
/**
|
|
64
|
+
* @deprecated v1 built-in themes have been removed
|
|
65
|
+
*/
|
|
66
|
+
export function isBuiltinTheme(_themeId) {
|
|
67
|
+
console.warn('isBuiltinTheme() is deprecated. All themes now come from .moai/themes/generated/');
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* @deprecated Use theme tokens directly. This function provided minimal v1 CSS output.
|
|
72
|
+
* For v2.1, use generateThemeCSS() from css-generator.ts with proper token resolution.
|
|
73
|
+
*/
|
|
74
|
+
export function generateCSSVariables(_theme) {
|
|
75
|
+
console.warn('generateCSSVariables() is deprecated. Use generateThemeCSS() for v2.1 themes.');
|
|
76
|
+
return {};
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=theme.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"theme.js","sourceRoot":"","sources":["../src/theme.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,yCAAyC;AACzC,OAAO;AAmBL,YAAY;AACZ,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,eAAe,EACf,aAAa;AACb,YAAY;AACZ,gBAAgB,GAEjB,MAAM,eAAe,CAAC;AAEvB,+EAA+E;AAC/E,oCAAoC;AACpC,+EAA+E;AAE/E,OAAO,EACL,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,GAIb,MAAM,eAAe,CAAC;AAEvB;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO,YAAY,EAAE,CAAC;AACxB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe;IACzC,OAAO,aAAa,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,KAAmB;IAC5C,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAOD,+EAA+E;AAC/E,4CAA4C;AAC5C,+EAA+E;AAE/E;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAsB,EAAE,CAAC;AAOpD;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,OAAO,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;IACjG,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAe;IAClD,OAAO,CAAC,IAAI,CAAC,+EAA+E,CAAC,CAAC;IAC9F,OAAO,EAAE,CAAC;AACZ,CAAC"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @framingui/core - Token Resolution Engine
|
|
3
|
+
* Resolves token references to final values with fallback chain support
|
|
4
|
+
* [SPEC-COMPONENT-001-A] [TOKEN-RESOLUTION]
|
|
5
|
+
*/
|
|
6
|
+
import type { ThemeWithTokens } from './tokens.js';
|
|
7
|
+
/** Token reference in dot notation: "atomic.color.blue.500" */
|
|
8
|
+
export type TokenReference = string;
|
|
9
|
+
/**
|
|
10
|
+
* Resolves a token reference to its final value
|
|
11
|
+
*
|
|
12
|
+
* Supports:
|
|
13
|
+
* - Dot-notation references: "atomic.color.blue.500"
|
|
14
|
+
* - Multi-level references: "component.button.primary.background" → "semantic.foreground.accent" → "atomic.color.blue.500"
|
|
15
|
+
* - Direct values: "#3b82f6" (returned as-is)
|
|
16
|
+
* - Circular reference detection
|
|
17
|
+
*
|
|
18
|
+
* @param ref - Token reference or direct value
|
|
19
|
+
* @param tokens - Theme token structure
|
|
20
|
+
* @param visited - Internal tracking for circular reference detection
|
|
21
|
+
* @returns Resolved token value
|
|
22
|
+
* @throws Error if token not found or circular reference detected
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* resolveToken('atomic.color.blue.500', tokens) // → '#3b82f6'
|
|
27
|
+
* resolveToken('semantic.background.page', tokens) // → '#f9fafb' (via atomic.color.neutral.50)
|
|
28
|
+
* resolveToken('#3b82f6', tokens) // → '#3b82f6' (direct value)
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveToken(ref: TokenReference, tokens: ThemeWithTokens['tokens'], visited?: Set<string>): string;
|
|
32
|
+
/**
|
|
33
|
+
* Resolves token with fallback chain: Component → Semantic → Atomic
|
|
34
|
+
*
|
|
35
|
+
* Attempts to resolve tokens in order of specificity:
|
|
36
|
+
* 1. Component-level token (most specific)
|
|
37
|
+
* 2. Semantic-level token (medium specificity)
|
|
38
|
+
* 3. Atomic-level token (least specific, guaranteed to exist)
|
|
39
|
+
*
|
|
40
|
+
* This enables graceful degradation when component or semantic tokens are missing.
|
|
41
|
+
*
|
|
42
|
+
* @param componentRef - Component-level token reference
|
|
43
|
+
* @param semanticRef - Semantic-level token reference (fallback)
|
|
44
|
+
* @param atomicRef - Atomic-level token reference (final fallback)
|
|
45
|
+
* @param tokens - Theme token structure
|
|
46
|
+
* @returns Resolved token value from first successful resolution
|
|
47
|
+
* @throws Error if all fallback attempts fail
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* // Returns component token if exists
|
|
52
|
+
* resolveWithFallback(
|
|
53
|
+
* 'component.button.primary.background',
|
|
54
|
+
* 'semantic.foreground.accent',
|
|
55
|
+
* 'atomic.color.blue.500',
|
|
56
|
+
* tokens
|
|
57
|
+
* ) // → '#3b82f6'
|
|
58
|
+
*
|
|
59
|
+
* // Falls back to semantic if component missing
|
|
60
|
+
* resolveWithFallback(
|
|
61
|
+
* 'component.button.nonexistent.background',
|
|
62
|
+
* 'semantic.foreground.accent',
|
|
63
|
+
* 'atomic.color.blue.500',
|
|
64
|
+
* tokens
|
|
65
|
+
* ) // → '#3b82f6' (via semantic)
|
|
66
|
+
* ```
|
|
67
|
+
*/
|
|
68
|
+
export declare function resolveWithFallback(componentRef: string, semanticRef: string, atomicRef: string, tokens: ThemeWithTokens['tokens']): string;
|
|
69
|
+
//# sourceMappingURL=token-resolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-resolver.d.ts","sourceRoot":"","sources":["../src/token-resolver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAMnD,+DAA+D;AAC/D,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC;AAMpC;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,YAAY,CAC1B,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,EACjC,OAAO,GAAE,GAAG,CAAC,MAAM,CAAa,GAC/B,MAAM,CA0CR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,GAChC,MAAM,CAmBR"}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @framingui/core - Token Resolution Engine
|
|
3
|
+
* Resolves token references to final values with fallback chain support
|
|
4
|
+
* [SPEC-COMPONENT-001-A] [TOKEN-RESOLUTION]
|
|
5
|
+
*/
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Token Resolution Functions
|
|
8
|
+
// ============================================================================
|
|
9
|
+
/**
|
|
10
|
+
* Resolves a token reference to its final value
|
|
11
|
+
*
|
|
12
|
+
* Supports:
|
|
13
|
+
* - Dot-notation references: "atomic.color.blue.500"
|
|
14
|
+
* - Multi-level references: "component.button.primary.background" → "semantic.foreground.accent" → "atomic.color.blue.500"
|
|
15
|
+
* - Direct values: "#3b82f6" (returned as-is)
|
|
16
|
+
* - Circular reference detection
|
|
17
|
+
*
|
|
18
|
+
* @param ref - Token reference or direct value
|
|
19
|
+
* @param tokens - Theme token structure
|
|
20
|
+
* @param visited - Internal tracking for circular reference detection
|
|
21
|
+
* @returns Resolved token value
|
|
22
|
+
* @throws Error if token not found or circular reference detected
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* resolveToken('atomic.color.blue.500', tokens) // → '#3b82f6'
|
|
27
|
+
* resolveToken('semantic.background.page', tokens) // → '#f9fafb' (via atomic.color.neutral.50)
|
|
28
|
+
* resolveToken('#3b82f6', tokens) // → '#3b82f6' (direct value)
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export function resolveToken(ref, tokens, visited = new Set()) {
|
|
32
|
+
// Prevent circular references
|
|
33
|
+
if (visited.has(ref)) {
|
|
34
|
+
throw new Error(`Circular token reference detected: ${ref}`);
|
|
35
|
+
}
|
|
36
|
+
visited.add(ref);
|
|
37
|
+
// If not a reference (doesn't contain dot or doesn't start with layer name), return as-is
|
|
38
|
+
if (!ref.includes('.')) {
|
|
39
|
+
return ref;
|
|
40
|
+
}
|
|
41
|
+
// Check if it's a token reference (starts with atomic, semantic, or component)
|
|
42
|
+
const startsWithLayer = ref.startsWith('atomic.') || ref.startsWith('semantic.') || ref.startsWith('component.');
|
|
43
|
+
if (!startsWithLayer) {
|
|
44
|
+
return ref; // Return direct value like "#3b82f6"
|
|
45
|
+
}
|
|
46
|
+
// Parse reference path
|
|
47
|
+
const parts = ref.split('.');
|
|
48
|
+
const [layer, ...path] = parts;
|
|
49
|
+
// Navigate token tree
|
|
50
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
51
|
+
let value = tokens;
|
|
52
|
+
for (const part of [layer, ...path]) {
|
|
53
|
+
value = value?.[part];
|
|
54
|
+
if (value === undefined) {
|
|
55
|
+
throw new Error(`Token not found: ${ref}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
// If value is another reference, resolve recursively
|
|
59
|
+
if (typeof value === 'string' &&
|
|
60
|
+
(value.startsWith('atomic.') || value.startsWith('semantic.') || value.startsWith('component.'))) {
|
|
61
|
+
return resolveToken(value, tokens, visited);
|
|
62
|
+
}
|
|
63
|
+
return value;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Resolves token with fallback chain: Component → Semantic → Atomic
|
|
67
|
+
*
|
|
68
|
+
* Attempts to resolve tokens in order of specificity:
|
|
69
|
+
* 1. Component-level token (most specific)
|
|
70
|
+
* 2. Semantic-level token (medium specificity)
|
|
71
|
+
* 3. Atomic-level token (least specific, guaranteed to exist)
|
|
72
|
+
*
|
|
73
|
+
* This enables graceful degradation when component or semantic tokens are missing.
|
|
74
|
+
*
|
|
75
|
+
* @param componentRef - Component-level token reference
|
|
76
|
+
* @param semanticRef - Semantic-level token reference (fallback)
|
|
77
|
+
* @param atomicRef - Atomic-level token reference (final fallback)
|
|
78
|
+
* @param tokens - Theme token structure
|
|
79
|
+
* @returns Resolved token value from first successful resolution
|
|
80
|
+
* @throws Error if all fallback attempts fail
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* // Returns component token if exists
|
|
85
|
+
* resolveWithFallback(
|
|
86
|
+
* 'component.button.primary.background',
|
|
87
|
+
* 'semantic.foreground.accent',
|
|
88
|
+
* 'atomic.color.blue.500',
|
|
89
|
+
* tokens
|
|
90
|
+
* ) // → '#3b82f6'
|
|
91
|
+
*
|
|
92
|
+
* // Falls back to semantic if component missing
|
|
93
|
+
* resolveWithFallback(
|
|
94
|
+
* 'component.button.nonexistent.background',
|
|
95
|
+
* 'semantic.foreground.accent',
|
|
96
|
+
* 'atomic.color.blue.500',
|
|
97
|
+
* tokens
|
|
98
|
+
* ) // → '#3b82f6' (via semantic)
|
|
99
|
+
* ```
|
|
100
|
+
*/
|
|
101
|
+
export function resolveWithFallback(componentRef, semanticRef, atomicRef, tokens) {
|
|
102
|
+
// Try component token first
|
|
103
|
+
try {
|
|
104
|
+
return resolveToken(componentRef, tokens);
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
// Fallback to semantic token
|
|
108
|
+
try {
|
|
109
|
+
return resolveToken(semanticRef, tokens);
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// Final fallback to atomic token
|
|
113
|
+
try {
|
|
114
|
+
return resolveToken(atomicRef, tokens);
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
throw new Error(`Failed to resolve token with fallback: ${componentRef} → ${semanticRef} → ${atomicRef}`);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
//# sourceMappingURL=token-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-resolver.js","sourceRoot":"","sources":["../src/token-resolver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAWH,+EAA+E;AAC/E,6BAA6B;AAC7B,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,YAAY,CAC1B,GAAmB,EACnB,MAAiC,EACjC,UAAuB,IAAI,GAAG,EAAE;IAEhC,8BAA8B;IAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,sCAAsC,GAAG,EAAE,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAEjB,0FAA0F;IAC1F,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,GAAG,CAAC;IACb,CAAC;IAED,+EAA+E;IAC/E,MAAM,eAAe,GACnB,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IAC3F,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,GAAG,CAAC,CAAC,qCAAqC;IACnD,CAAC;IAED,uBAAuB;IACvB,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;IAE/B,sBAAsB;IACtB,8DAA8D;IAC9D,IAAI,KAAK,GAAQ,MAAM,CAAC;IACxB,KAAK,MAAM,IAAI,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACpC,KAAK,GAAG,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,oBAAoB,GAAG,EAAE,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC;IAED,qDAAqD;IACrD,IACE,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,KAAK,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAChG,CAAC;QACD,OAAO,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,MAAM,UAAU,mBAAmB,CACjC,YAAoB,EACpB,WAAmB,EACnB,SAAiB,EACjB,MAAiC;IAEjC,4BAA4B;IAC5B,IAAI,CAAC;QACH,OAAO,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,6BAA6B;QAC7B,IAAI,CAAC;YACH,OAAO,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,iCAAiC;YACjC,IAAI,CAAC;gBACH,OAAO,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACzC,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CACb,0CAA0C,YAAY,MAAM,WAAW,MAAM,SAAS,EAAE,CACzF,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
|