@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.
Files changed (254) hide show
  1. package/README.md +758 -0
  2. package/dist/blueprint.d.ts +44 -0
  3. package/dist/blueprint.d.ts.map +1 -0
  4. package/dist/blueprint.js +163 -0
  5. package/dist/blueprint.js.map +1 -0
  6. package/dist/component-schemas.d.ts +78 -0
  7. package/dist/component-schemas.d.ts.map +1 -0
  8. package/dist/component-schemas.js +1037 -0
  9. package/dist/component-schemas.js.map +1 -0
  10. package/dist/css-generator.d.ts +42 -0
  11. package/dist/css-generator.d.ts.map +1 -0
  12. package/dist/css-generator.js +339 -0
  13. package/dist/css-generator.js.map +1 -0
  14. package/dist/icon-library.d.ts +109 -0
  15. package/dist/icon-library.d.ts.map +1 -0
  16. package/dist/icon-library.js +204 -0
  17. package/dist/icon-library.js.map +1 -0
  18. package/dist/index.d.ts +36 -0
  19. package/dist/index.d.ts.map +1 -0
  20. package/dist/index.js +53 -0
  21. package/dist/index.js.map +1 -0
  22. package/dist/layout-css-generator.d.ts +158 -0
  23. package/dist/layout-css-generator.d.ts.map +1 -0
  24. package/dist/layout-css-generator.js +901 -0
  25. package/dist/layout-css-generator.js.map +1 -0
  26. package/dist/layout-resolver.d.ts +92 -0
  27. package/dist/layout-resolver.d.ts.map +1 -0
  28. package/dist/layout-resolver.js +275 -0
  29. package/dist/layout-resolver.js.map +1 -0
  30. package/dist/layout-tokens/index.d.ts +16 -0
  31. package/dist/layout-tokens/index.d.ts.map +1 -0
  32. package/dist/layout-tokens/index.js +16 -0
  33. package/dist/layout-tokens/index.js.map +1 -0
  34. package/dist/layout-tokens/keyboard.d.ts +254 -0
  35. package/dist/layout-tokens/keyboard.d.ts.map +1 -0
  36. package/dist/layout-tokens/keyboard.js +407 -0
  37. package/dist/layout-tokens/keyboard.js.map +1 -0
  38. package/dist/layout-tokens/mobile-shells.d.ts +78 -0
  39. package/dist/layout-tokens/mobile-shells.d.ts.map +1 -0
  40. package/dist/layout-tokens/mobile-shells.js +635 -0
  41. package/dist/layout-tokens/mobile-shells.js.map +1 -0
  42. package/dist/layout-tokens/pages.d.ts +100 -0
  43. package/dist/layout-tokens/pages.d.ts.map +1 -0
  44. package/dist/layout-tokens/pages.js +576 -0
  45. package/dist/layout-tokens/pages.js.map +1 -0
  46. package/dist/layout-tokens/responsive.d.ts +109 -0
  47. package/dist/layout-tokens/responsive.d.ts.map +1 -0
  48. package/dist/layout-tokens/responsive.js +167 -0
  49. package/dist/layout-tokens/responsive.js.map +1 -0
  50. package/dist/layout-tokens/safe-area.d.ts +156 -0
  51. package/dist/layout-tokens/safe-area.d.ts.map +1 -0
  52. package/dist/layout-tokens/safe-area.js +316 -0
  53. package/dist/layout-tokens/safe-area.js.map +1 -0
  54. package/dist/layout-tokens/sections-advanced.d.ts +277 -0
  55. package/dist/layout-tokens/sections-advanced.d.ts.map +1 -0
  56. package/dist/layout-tokens/sections-advanced.js +593 -0
  57. package/dist/layout-tokens/sections-advanced.js.map +1 -0
  58. package/dist/layout-tokens/sections.d.ts +137 -0
  59. package/dist/layout-tokens/sections.d.ts.map +1 -0
  60. package/dist/layout-tokens/sections.js +694 -0
  61. package/dist/layout-tokens/sections.js.map +1 -0
  62. package/dist/layout-tokens/shells.d.ts +77 -0
  63. package/dist/layout-tokens/shells.d.ts.map +1 -0
  64. package/dist/layout-tokens/shells.js +408 -0
  65. package/dist/layout-tokens/shells.js.map +1 -0
  66. package/dist/layout-tokens/touch-target.d.ts +119 -0
  67. package/dist/layout-tokens/touch-target.d.ts.map +1 -0
  68. package/dist/layout-tokens/touch-target.js +156 -0
  69. package/dist/layout-tokens/touch-target.js.map +1 -0
  70. package/dist/layout-tokens/types.d.ts +632 -0
  71. package/dist/layout-tokens/types.d.ts.map +1 -0
  72. package/dist/layout-tokens/types.js +49 -0
  73. package/dist/layout-tokens/types.js.map +1 -0
  74. package/dist/layout-validation.d.ts +1547 -0
  75. package/dist/layout-validation.d.ts.map +1 -0
  76. package/dist/layout-validation.js +628 -0
  77. package/dist/layout-validation.js.map +1 -0
  78. package/dist/render.d.ts +23 -0
  79. package/dist/render.d.ts.map +1 -0
  80. package/dist/render.js +244 -0
  81. package/dist/render.js.map +1 -0
  82. package/dist/schema-validation.d.ts +208 -0
  83. package/dist/schema-validation.d.ts.map +1 -0
  84. package/dist/schema-validation.js +205 -0
  85. package/dist/schema-validation.js.map +1 -0
  86. package/dist/screen-generation/generators/css-in-js-generator.d.ts +82 -0
  87. package/dist/screen-generation/generators/css-in-js-generator.d.ts.map +1 -0
  88. package/dist/screen-generation/generators/css-in-js-generator.js +335 -0
  89. package/dist/screen-generation/generators/css-in-js-generator.js.map +1 -0
  90. package/dist/screen-generation/generators/index.d.ts +13 -0
  91. package/dist/screen-generation/generators/index.d.ts.map +1 -0
  92. package/dist/screen-generation/generators/index.js +32 -0
  93. package/dist/screen-generation/generators/index.js.map +1 -0
  94. package/dist/screen-generation/generators/react-generator.d.ts +100 -0
  95. package/dist/screen-generation/generators/react-generator.d.ts.map +1 -0
  96. package/dist/screen-generation/generators/react-generator.js +379 -0
  97. package/dist/screen-generation/generators/react-generator.js.map +1 -0
  98. package/dist/screen-generation/generators/tailwind-generator.d.ts +105 -0
  99. package/dist/screen-generation/generators/tailwind-generator.d.ts.map +1 -0
  100. package/dist/screen-generation/generators/tailwind-generator.js +355 -0
  101. package/dist/screen-generation/generators/tailwind-generator.js.map +1 -0
  102. package/dist/screen-generation/generators/types.d.ts +136 -0
  103. package/dist/screen-generation/generators/types.d.ts.map +1 -0
  104. package/dist/screen-generation/generators/types.js +18 -0
  105. package/dist/screen-generation/generators/types.js.map +1 -0
  106. package/dist/screen-generation/generators/utils.d.ts +187 -0
  107. package/dist/screen-generation/generators/utils.d.ts.map +1 -0
  108. package/dist/screen-generation/generators/utils.js +312 -0
  109. package/dist/screen-generation/generators/utils.js.map +1 -0
  110. package/dist/screen-generation/index.d.ts +14 -0
  111. package/dist/screen-generation/index.d.ts.map +1 -0
  112. package/dist/screen-generation/index.js +33 -0
  113. package/dist/screen-generation/index.js.map +1 -0
  114. package/dist/screen-generation/resolver/component-resolver.d.ts +157 -0
  115. package/dist/screen-generation/resolver/component-resolver.d.ts.map +1 -0
  116. package/dist/screen-generation/resolver/component-resolver.js +295 -0
  117. package/dist/screen-generation/resolver/component-resolver.js.map +1 -0
  118. package/dist/screen-generation/resolver/index.d.ts +10 -0
  119. package/dist/screen-generation/resolver/index.d.ts.map +1 -0
  120. package/dist/screen-generation/resolver/index.js +46 -0
  121. package/dist/screen-generation/resolver/index.js.map +1 -0
  122. package/dist/screen-generation/resolver/layout-resolver.d.ts +155 -0
  123. package/dist/screen-generation/resolver/layout-resolver.d.ts.map +1 -0
  124. package/dist/screen-generation/resolver/layout-resolver.js +193 -0
  125. package/dist/screen-generation/resolver/layout-resolver.js.map +1 -0
  126. package/dist/screen-generation/resolver/screen-resolver.d.ts +174 -0
  127. package/dist/screen-generation/resolver/screen-resolver.d.ts.map +1 -0
  128. package/dist/screen-generation/resolver/screen-resolver.js +373 -0
  129. package/dist/screen-generation/resolver/screen-resolver.js.map +1 -0
  130. package/dist/screen-generation/resolver/token-resolver.d.ts +170 -0
  131. package/dist/screen-generation/resolver/token-resolver.d.ts.map +1 -0
  132. package/dist/screen-generation/resolver/token-resolver.js +260 -0
  133. package/dist/screen-generation/resolver/token-resolver.js.map +1 -0
  134. package/dist/screen-generation/types.d.ts +116 -0
  135. package/dist/screen-generation/types.d.ts.map +1 -0
  136. package/dist/screen-generation/types.js +33 -0
  137. package/dist/screen-generation/types.js.map +1 -0
  138. package/dist/screen-generation/validators.d.ts +286 -0
  139. package/dist/screen-generation/validators.d.ts.map +1 -0
  140. package/dist/screen-generation/validators.js +323 -0
  141. package/dist/screen-generation/validators.js.map +1 -0
  142. package/dist/screen-templates/__tests__/registry.test.d.ts +6 -0
  143. package/dist/screen-templates/__tests__/registry.test.d.ts.map +1 -0
  144. package/dist/screen-templates/__tests__/registry.test.js +247 -0
  145. package/dist/screen-templates/__tests__/registry.test.js.map +1 -0
  146. package/dist/screen-templates/__tests__/templates.test.d.ts +6 -0
  147. package/dist/screen-templates/__tests__/templates.test.d.ts.map +1 -0
  148. package/dist/screen-templates/__tests__/templates.test.js +179 -0
  149. package/dist/screen-templates/__tests__/templates.test.js.map +1 -0
  150. package/dist/screen-templates/index.d.ts +39 -0
  151. package/dist/screen-templates/index.d.ts.map +1 -0
  152. package/dist/screen-templates/index.js +79 -0
  153. package/dist/screen-templates/index.js.map +1 -0
  154. package/dist/screen-templates/registry.d.ts +177 -0
  155. package/dist/screen-templates/registry.d.ts.map +1 -0
  156. package/dist/screen-templates/registry.js +274 -0
  157. package/dist/screen-templates/registry.js.map +1 -0
  158. package/dist/screen-templates/templates/account/index.d.ts +6 -0
  159. package/dist/screen-templates/templates/account/index.d.ts.map +1 -0
  160. package/dist/screen-templates/templates/account/index.js +6 -0
  161. package/dist/screen-templates/templates/account/index.js.map +1 -0
  162. package/dist/screen-templates/templates/account/profile.d.ts +23 -0
  163. package/dist/screen-templates/templates/account/profile.d.ts.map +1 -0
  164. package/dist/screen-templates/templates/account/profile.js +249 -0
  165. package/dist/screen-templates/templates/account/profile.js.map +1 -0
  166. package/dist/screen-templates/templates/auth/forgot-password.d.ts +23 -0
  167. package/dist/screen-templates/templates/auth/forgot-password.d.ts.map +1 -0
  168. package/dist/screen-templates/templates/auth/forgot-password.js +203 -0
  169. package/dist/screen-templates/templates/auth/forgot-password.js.map +1 -0
  170. package/dist/screen-templates/templates/auth/index.d.ts +9 -0
  171. package/dist/screen-templates/templates/auth/index.d.ts.map +1 -0
  172. package/dist/screen-templates/templates/auth/index.js +9 -0
  173. package/dist/screen-templates/templates/auth/index.js.map +1 -0
  174. package/dist/screen-templates/templates/auth/login.d.ts +24 -0
  175. package/dist/screen-templates/templates/auth/login.d.ts.map +1 -0
  176. package/dist/screen-templates/templates/auth/login.js +254 -0
  177. package/dist/screen-templates/templates/auth/login.js.map +1 -0
  178. package/dist/screen-templates/templates/auth/signup.d.ts +24 -0
  179. package/dist/screen-templates/templates/auth/signup.d.ts.map +1 -0
  180. package/dist/screen-templates/templates/auth/signup.js +315 -0
  181. package/dist/screen-templates/templates/auth/signup.js.map +1 -0
  182. package/dist/screen-templates/templates/auth/verification.d.ts +23 -0
  183. package/dist/screen-templates/templates/auth/verification.d.ts.map +1 -0
  184. package/dist/screen-templates/templates/auth/verification.js +239 -0
  185. package/dist/screen-templates/templates/auth/verification.js.map +1 -0
  186. package/dist/screen-templates/templates/feedback/confirmation.d.ts +9 -0
  187. package/dist/screen-templates/templates/feedback/confirmation.d.ts.map +1 -0
  188. package/dist/screen-templates/templates/feedback/confirmation.js +107 -0
  189. package/dist/screen-templates/templates/feedback/confirmation.js.map +1 -0
  190. package/dist/screen-templates/templates/feedback/empty.d.ts +9 -0
  191. package/dist/screen-templates/templates/feedback/empty.d.ts.map +1 -0
  192. package/dist/screen-templates/templates/feedback/empty.js +90 -0
  193. package/dist/screen-templates/templates/feedback/empty.js.map +1 -0
  194. package/dist/screen-templates/templates/feedback/error.d.ts +9 -0
  195. package/dist/screen-templates/templates/feedback/error.d.ts.map +1 -0
  196. package/dist/screen-templates/templates/feedback/error.js +99 -0
  197. package/dist/screen-templates/templates/feedback/error.js.map +1 -0
  198. package/dist/screen-templates/templates/feedback/index.d.ts +10 -0
  199. package/dist/screen-templates/templates/feedback/index.d.ts.map +1 -0
  200. package/dist/screen-templates/templates/feedback/index.js +10 -0
  201. package/dist/screen-templates/templates/feedback/index.js.map +1 -0
  202. package/dist/screen-templates/templates/feedback/loading.d.ts +9 -0
  203. package/dist/screen-templates/templates/feedback/loading.d.ts.map +1 -0
  204. package/dist/screen-templates/templates/feedback/loading.js +77 -0
  205. package/dist/screen-templates/templates/feedback/loading.js.map +1 -0
  206. package/dist/screen-templates/templates/feedback/success.d.ts +9 -0
  207. package/dist/screen-templates/templates/feedback/success.d.ts.map +1 -0
  208. package/dist/screen-templates/templates/feedback/success.js +99 -0
  209. package/dist/screen-templates/templates/feedback/success.js.map +1 -0
  210. package/dist/screen-templates/templates/home/index.d.ts +6 -0
  211. package/dist/screen-templates/templates/home/index.d.ts.map +1 -0
  212. package/dist/screen-templates/templates/home/index.js +6 -0
  213. package/dist/screen-templates/templates/home/index.js.map +1 -0
  214. package/dist/screen-templates/templates/home/landing.d.ts +24 -0
  215. package/dist/screen-templates/templates/home/landing.d.ts.map +1 -0
  216. package/dist/screen-templates/templates/home/landing.js +197 -0
  217. package/dist/screen-templates/templates/home/landing.js.map +1 -0
  218. package/dist/screen-templates/templates/settings/index.d.ts +6 -0
  219. package/dist/screen-templates/templates/settings/index.d.ts.map +1 -0
  220. package/dist/screen-templates/templates/settings/index.js +6 -0
  221. package/dist/screen-templates/templates/settings/index.js.map +1 -0
  222. package/dist/screen-templates/templates/settings/preferences.d.ts +24 -0
  223. package/dist/screen-templates/templates/settings/preferences.d.ts.map +1 -0
  224. package/dist/screen-templates/templates/settings/preferences.js +265 -0
  225. package/dist/screen-templates/templates/settings/preferences.js.map +1 -0
  226. package/dist/screen-templates/types.d.ts +229 -0
  227. package/dist/screen-templates/types.d.ts.map +1 -0
  228. package/dist/screen-templates/types.js +7 -0
  229. package/dist/screen-templates/types.js.map +1 -0
  230. package/dist/theme-v2.d.ts +361 -0
  231. package/dist/theme-v2.d.ts.map +1 -0
  232. package/dist/theme-v2.js +251 -0
  233. package/dist/theme-v2.js.map +1 -0
  234. package/dist/theme.d.ts +60 -0
  235. package/dist/theme.d.ts.map +1 -0
  236. package/dist/theme.js +78 -0
  237. package/dist/theme.js.map +1 -0
  238. package/dist/token-resolver.d.ts +69 -0
  239. package/dist/token-resolver.d.ts.map +1 -0
  240. package/dist/token-resolver.js +122 -0
  241. package/dist/token-resolver.js.map +1 -0
  242. package/dist/token-validation.d.ts +432 -0
  243. package/dist/token-validation.d.ts.map +1 -0
  244. package/dist/token-validation.js +140 -0
  245. package/dist/token-validation.js.map +1 -0
  246. package/dist/tokens.d.ts +158 -0
  247. package/dist/tokens.d.ts.map +1 -0
  248. package/dist/tokens.js +10 -0
  249. package/dist/tokens.js.map +1 -0
  250. package/dist/types.d.ts +77 -0
  251. package/dist/types.d.ts.map +1 -0
  252. package/dist/types.js +7 -0
  253. package/dist/types.js.map +1 -0
  254. package/package.json +54 -0
@@ -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"}