mythik-react 0.1.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 (244) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +4 -0
  3. package/README.md +83 -0
  4. package/dist/MythikApp.d.ts +61 -0
  5. package/dist/MythikApp.d.ts.map +1 -0
  6. package/dist/MythikApp.js +381 -0
  7. package/dist/MythikApp.js.map +1 -0
  8. package/dist/MythikRenderer.d.ts +31 -0
  9. package/dist/MythikRenderer.d.ts.map +1 -0
  10. package/dist/MythikRenderer.js +900 -0
  11. package/dist/MythikRenderer.js.map +1 -0
  12. package/dist/animation/index.d.ts +7 -0
  13. package/dist/animation/index.d.ts.map +1 -0
  14. package/dist/animation/index.js +5 -0
  15. package/dist/animation/index.js.map +1 -0
  16. package/dist/animation/stylesheet-singleton.d.ts +12 -0
  17. package/dist/animation/stylesheet-singleton.d.ts.map +1 -0
  18. package/dist/animation/stylesheet-singleton.js +107 -0
  19. package/dist/animation/stylesheet-singleton.js.map +1 -0
  20. package/dist/animation/useElementAnimations.d.ts +30 -0
  21. package/dist/animation/useElementAnimations.d.ts.map +1 -0
  22. package/dist/animation/useElementAnimations.js +254 -0
  23. package/dist/animation/useElementAnimations.js.map +1 -0
  24. package/dist/animation/usePrefersReducedMotion.d.ts +2 -0
  25. package/dist/animation/usePrefersReducedMotion.d.ts.map +1 -0
  26. package/dist/animation/usePrefersReducedMotion.js +29 -0
  27. package/dist/animation/usePrefersReducedMotion.js.map +1 -0
  28. package/dist/animation/useShapeAnimations.d.ts +21 -0
  29. package/dist/animation/useShapeAnimations.d.ts.map +1 -0
  30. package/dist/animation/useShapeAnimations.js +119 -0
  31. package/dist/animation/useShapeAnimations.js.map +1 -0
  32. package/dist/app-context.d.ts +15 -0
  33. package/dist/app-context.d.ts.map +1 -0
  34. package/dist/app-context.js +9 -0
  35. package/dist/app-context.js.map +1 -0
  36. package/dist/background/BackgroundLayer.d.ts +7 -0
  37. package/dist/background/BackgroundLayer.d.ts.map +1 -0
  38. package/dist/background/BackgroundLayer.js +50 -0
  39. package/dist/background/BackgroundLayer.js.map +1 -0
  40. package/dist/background/BackgroundStack.d.ts +19 -0
  41. package/dist/background/BackgroundStack.d.ts.map +1 -0
  42. package/dist/background/BackgroundStack.js +59 -0
  43. package/dist/background/BackgroundStack.js.map +1 -0
  44. package/dist/background/BlobLayer.d.ts +12 -0
  45. package/dist/background/BlobLayer.d.ts.map +1 -0
  46. package/dist/background/BlobLayer.js +60 -0
  47. package/dist/background/BlobLayer.js.map +1 -0
  48. package/dist/background/index.d.ts +3 -0
  49. package/dist/background/index.d.ts.map +1 -0
  50. package/dist/background/index.js +3 -0
  51. package/dist/background/index.js.map +1 -0
  52. package/dist/css-hover.d.ts +15 -0
  53. package/dist/css-hover.d.ts.map +1 -0
  54. package/dist/css-hover.js +51 -0
  55. package/dist/css-hover.js.map +1 -0
  56. package/dist/index.d.ts +10 -0
  57. package/dist/index.d.ts.map +1 -0
  58. package/dist/index.js +11 -0
  59. package/dist/index.js.map +1 -0
  60. package/dist/primitives/accordion.d.ts +12 -0
  61. package/dist/primitives/accordion.d.ts.map +1 -0
  62. package/dist/primitives/accordion.js +25 -0
  63. package/dist/primitives/accordion.js.map +1 -0
  64. package/dist/primitives/area-chart.d.ts +14 -0
  65. package/dist/primitives/area-chart.d.ts.map +1 -0
  66. package/dist/primitives/area-chart.js +18 -0
  67. package/dist/primitives/area-chart.js.map +1 -0
  68. package/dist/primitives/audio-player.d.ts +9 -0
  69. package/dist/primitives/audio-player.d.ts.map +1 -0
  70. package/dist/primitives/audio-player.js +5 -0
  71. package/dist/primitives/audio-player.js.map +1 -0
  72. package/dist/primitives/bar-chart.d.ts +14 -0
  73. package/dist/primitives/bar-chart.d.ts.map +1 -0
  74. package/dist/primitives/bar-chart.js +22 -0
  75. package/dist/primitives/bar-chart.js.map +1 -0
  76. package/dist/primitives/box.d.ts +21 -0
  77. package/dist/primitives/box.d.ts.map +1 -0
  78. package/dist/primitives/box.js +54 -0
  79. package/dist/primitives/box.js.map +1 -0
  80. package/dist/primitives/button.d.ts +14 -0
  81. package/dist/primitives/button.d.ts.map +1 -0
  82. package/dist/primitives/button.js +28 -0
  83. package/dist/primitives/button.js.map +1 -0
  84. package/dist/primitives/camera.d.ts +15 -0
  85. package/dist/primitives/camera.d.ts.map +1 -0
  86. package/dist/primitives/camera.js +25 -0
  87. package/dist/primitives/camera.js.map +1 -0
  88. package/dist/primitives/checkbox.d.ts +12 -0
  89. package/dist/primitives/checkbox.d.ts.map +1 -0
  90. package/dist/primitives/checkbox.js +24 -0
  91. package/dist/primitives/checkbox.js.map +1 -0
  92. package/dist/primitives/divider.d.ts +9 -0
  93. package/dist/primitives/divider.d.ts.map +1 -0
  94. package/dist/primitives/divider.js +10 -0
  95. package/dist/primitives/divider.js.map +1 -0
  96. package/dist/primitives/drawer.d.ts +21 -0
  97. package/dist/primitives/drawer.d.ts.map +1 -0
  98. package/dist/primitives/drawer.js +38 -0
  99. package/dist/primitives/drawer.js.map +1 -0
  100. package/dist/primitives/file-upload.d.ts +27 -0
  101. package/dist/primitives/file-upload.d.ts.map +1 -0
  102. package/dist/primitives/file-upload.js +225 -0
  103. package/dist/primitives/file-upload.js.map +1 -0
  104. package/dist/primitives/grid.d.ts +13 -0
  105. package/dist/primitives/grid.d.ts.map +1 -0
  106. package/dist/primitives/grid.js +13 -0
  107. package/dist/primitives/grid.js.map +1 -0
  108. package/dist/primitives/icon.d.ts +22 -0
  109. package/dist/primitives/icon.d.ts.map +1 -0
  110. package/dist/primitives/icon.js +52 -0
  111. package/dist/primitives/icon.js.map +1 -0
  112. package/dist/primitives/image.d.ts +13 -0
  113. package/dist/primitives/image.d.ts.map +1 -0
  114. package/dist/primitives/image.js +38 -0
  115. package/dist/primitives/image.js.map +1 -0
  116. package/dist/primitives/index.d.ts +57 -0
  117. package/dist/primitives/index.d.ts.map +1 -0
  118. package/dist/primitives/index.js +106 -0
  119. package/dist/primitives/index.js.map +1 -0
  120. package/dist/primitives/input.d.ts +32 -0
  121. package/dist/primitives/input.d.ts.map +1 -0
  122. package/dist/primitives/input.js +192 -0
  123. package/dist/primitives/input.js.map +1 -0
  124. package/dist/primitives/kanban-board.d.ts +13 -0
  125. package/dist/primitives/kanban-board.d.ts.map +1 -0
  126. package/dist/primitives/kanban-board.js +5 -0
  127. package/dist/primitives/kanban-board.js.map +1 -0
  128. package/dist/primitives/line-chart.d.ts +14 -0
  129. package/dist/primitives/line-chart.d.ts.map +1 -0
  130. package/dist/primitives/line-chart.js +17 -0
  131. package/dist/primitives/line-chart.js.map +1 -0
  132. package/dist/primitives/list.d.ts +13 -0
  133. package/dist/primitives/list.d.ts.map +1 -0
  134. package/dist/primitives/list.js +10 -0
  135. package/dist/primitives/list.js.map +1 -0
  136. package/dist/primitives/modal.d.ts +20 -0
  137. package/dist/primitives/modal.d.ts.map +1 -0
  138. package/dist/primitives/modal.js +60 -0
  139. package/dist/primitives/modal.js.map +1 -0
  140. package/dist/primitives/pie-chart.d.ts +15 -0
  141. package/dist/primitives/pie-chart.d.ts.map +1 -0
  142. package/dist/primitives/pie-chart.js +36 -0
  143. package/dist/primitives/pie-chart.js.map +1 -0
  144. package/dist/primitives/screen-outlet.d.ts +9 -0
  145. package/dist/primitives/screen-outlet.d.ts.map +1 -0
  146. package/dist/primitives/screen-outlet.js +92 -0
  147. package/dist/primitives/screen-outlet.js.map +1 -0
  148. package/dist/primitives/screen.d.ts +9 -0
  149. package/dist/primitives/screen.d.ts.map +1 -0
  150. package/dist/primitives/screen.js +10 -0
  151. package/dist/primitives/screen.js.map +1 -0
  152. package/dist/primitives/scroll.d.ts +11 -0
  153. package/dist/primitives/scroll.d.ts.map +1 -0
  154. package/dist/primitives/scroll.js +10 -0
  155. package/dist/primitives/scroll.js.map +1 -0
  156. package/dist/primitives/select.d.ts +19 -0
  157. package/dist/primitives/select.d.ts.map +1 -0
  158. package/dist/primitives/select.js +109 -0
  159. package/dist/primitives/select.js.map +1 -0
  160. package/dist/primitives/signature.d.ts +13 -0
  161. package/dist/primitives/signature.d.ts.map +1 -0
  162. package/dist/primitives/signature.js +45 -0
  163. package/dist/primitives/signature.js.map +1 -0
  164. package/dist/primitives/skeleton.d.ts +14 -0
  165. package/dist/primitives/skeleton.d.ts.map +1 -0
  166. package/dist/primitives/skeleton.js +41 -0
  167. package/dist/primitives/skeleton.js.map +1 -0
  168. package/dist/primitives/slider.d.ts +15 -0
  169. package/dist/primitives/slider.d.ts.map +1 -0
  170. package/dist/primitives/slider.js +7 -0
  171. package/dist/primitives/slider.js.map +1 -0
  172. package/dist/primitives/spacer.d.ts +9 -0
  173. package/dist/primitives/spacer.d.ts.map +1 -0
  174. package/dist/primitives/spacer.js +9 -0
  175. package/dist/primitives/spacer.js.map +1 -0
  176. package/dist/primitives/spatial-map-editing.d.ts +472 -0
  177. package/dist/primitives/spatial-map-editing.d.ts.map +1 -0
  178. package/dist/primitives/spatial-map-editing.js +886 -0
  179. package/dist/primitives/spatial-map-editing.js.map +1 -0
  180. package/dist/primitives/spatial-map.d.ts +1073 -0
  181. package/dist/primitives/spatial-map.d.ts.map +1 -0
  182. package/dist/primitives/spatial-map.js +1705 -0
  183. package/dist/primitives/spatial-map.js.map +1 -0
  184. package/dist/primitives/stack.d.ts +13 -0
  185. package/dist/primitives/stack.d.ts.map +1 -0
  186. package/dist/primitives/stack.js +12 -0
  187. package/dist/primitives/stack.js.map +1 -0
  188. package/dist/primitives/table.d.ts +115 -0
  189. package/dist/primitives/table.d.ts.map +1 -0
  190. package/dist/primitives/table.js +498 -0
  191. package/dist/primitives/table.js.map +1 -0
  192. package/dist/primitives/tabs.d.ts +17 -0
  193. package/dist/primitives/tabs.d.ts.map +1 -0
  194. package/dist/primitives/tabs.js +13 -0
  195. package/dist/primitives/tabs.js.map +1 -0
  196. package/dist/primitives/text.d.ts +11 -0
  197. package/dist/primitives/text.d.ts.map +1 -0
  198. package/dist/primitives/text.js +69 -0
  199. package/dist/primitives/text.js.map +1 -0
  200. package/dist/primitives/textarea.d.ts +15 -0
  201. package/dist/primitives/textarea.d.ts.map +1 -0
  202. package/dist/primitives/textarea.js +23 -0
  203. package/dist/primitives/textarea.js.map +1 -0
  204. package/dist/primitives/toast-container.d.ts +15 -0
  205. package/dist/primitives/toast-container.d.ts.map +1 -0
  206. package/dist/primitives/toast-container.js +160 -0
  207. package/dist/primitives/toast-container.js.map +1 -0
  208. package/dist/primitives/toggle.d.ts +12 -0
  209. package/dist/primitives/toggle.d.ts.map +1 -0
  210. package/dist/primitives/toggle.js +18 -0
  211. package/dist/primitives/toggle.js.map +1 -0
  212. package/dist/primitives/touchable.d.ts +10 -0
  213. package/dist/primitives/touchable.d.ts.map +1 -0
  214. package/dist/primitives/touchable.js +6 -0
  215. package/dist/primitives/touchable.js.map +1 -0
  216. package/dist/primitives/use-design-tokens.d.ts +127 -0
  217. package/dist/primitives/use-design-tokens.d.ts.map +1 -0
  218. package/dist/primitives/use-design-tokens.js +251 -0
  219. package/dist/primitives/use-design-tokens.js.map +1 -0
  220. package/dist/primitives/use-theme.d.ts +11 -0
  221. package/dist/primitives/use-theme.d.ts.map +1 -0
  222. package/dist/primitives/use-theme.js +17 -0
  223. package/dist/primitives/use-theme.js.map +1 -0
  224. package/dist/primitives/wizard.d.ts +11 -0
  225. package/dist/primitives/wizard.d.ts.map +1 -0
  226. package/dist/primitives/wizard.js +15 -0
  227. package/dist/primitives/wizard.js.map +1 -0
  228. package/dist/runtime/context-dispatcher.d.ts +3 -0
  229. package/dist/runtime/context-dispatcher.d.ts.map +1 -0
  230. package/dist/runtime/context-dispatcher.js +11 -0
  231. package/dist/runtime/context-dispatcher.js.map +1 -0
  232. package/dist/runtime/row-dispatcher.d.ts +19 -0
  233. package/dist/runtime/row-dispatcher.d.ts.map +1 -0
  234. package/dist/runtime/row-dispatcher.js +25 -0
  235. package/dist/runtime/row-dispatcher.js.map +1 -0
  236. package/dist/types.d.ts +10 -0
  237. package/dist/types.d.ts.map +1 -0
  238. package/dist/types.js +2 -0
  239. package/dist/types.js.map +1 -0
  240. package/dist/use-device-context.d.ts +8 -0
  241. package/dist/use-device-context.d.ts.map +1 -0
  242. package/dist/use-device-context.js +54 -0
  243. package/dist/use-device-context.js.map +1 -0
  244. package/package.json +59 -0
@@ -0,0 +1,251 @@
1
+ import { surfaceToCSS, resolveIdentity, DEFAULTS, applyBorderElevationCSS, applyGradientCardsCSS } from 'mythik';
2
+ // Defaults derived from core DEFAULTS — single source of truth
3
+ const D = DEFAULTS;
4
+ function elevToCSS(e) {
5
+ if (e.shadowOpacity === 0)
6
+ return 'none';
7
+ const hex = e.shadowColor.replace('#', '');
8
+ const r = parseInt(hex.slice(0, 2), 16);
9
+ const g = parseInt(hex.slice(2, 4), 16);
10
+ const b = parseInt(hex.slice(4, 6), 16);
11
+ return `${e.shadowOffset[0]}px ${e.shadowOffset[1]}px ${e.shadowRadius}px rgba(${r},${g},${b},${e.shadowOpacity})`;
12
+ }
13
+ function get(obj, path, fallback) {
14
+ if (!obj)
15
+ return fallback;
16
+ const segments = path.split('.');
17
+ let current = obj;
18
+ for (const seg of segments) {
19
+ if (current === null || current === undefined || typeof current !== 'object')
20
+ return fallback;
21
+ current = current[seg];
22
+ }
23
+ return current ?? fallback;
24
+ }
25
+ export function useDesignTokens(tokens) {
26
+ const c = (tokens?.colors ?? {});
27
+ const sr = get(tokens, 'shape.radius', {});
28
+ const tf = get(tokens, 'typography.fontFamily', {});
29
+ const ts = get(tokens, 'typography.scale', {});
30
+ const tw = get(tokens, 'typography.weight', {});
31
+ const sp = (tokens?.spacing ?? {});
32
+ const ss = (sp.scale ?? {});
33
+ const el = (tokens?.elevation ?? {});
34
+ const op = (tokens?.opacity ?? {});
35
+ // Build identity config from tokens
36
+ const identityConfig = {
37
+ surface: get(tokens, 'identity.surface', 'elevated'),
38
+ radiusPattern: get(tokens, 'identity.radiusPattern', 'all'),
39
+ depth: get(tokens, 'identity.depth', D.identity.depth),
40
+ shadowAngle: get(tokens, 'identity.shadowAngle', D.identity.shadowAngle),
41
+ colorScheme: get(tokens, 'identity.colorScheme', D.identity.colorScheme),
42
+ colorWeight: get(tokens, 'identity.colorWeight', D.identity.colorWeight),
43
+ accentApplication: {
44
+ buttons: get(tokens, 'identity.accentApplication.buttons', false),
45
+ navItems: get(tokens, 'identity.accentApplication.navItems', false),
46
+ cardLine: get(tokens, 'identity.accentApplication.cardLine', []),
47
+ links: get(tokens, 'identity.accentApplication.links', false),
48
+ backgrounds: get(tokens, 'identity.accentApplication.backgrounds', false),
49
+ iconContainers: get(tokens, 'identity.accentApplication.iconContainers', false),
50
+ },
51
+ coloredSurfaceLayers: get(tokens, 'identity.colorScheme', D.identity.colorScheme) === 'colored-surface'
52
+ ? {
53
+ background: get(tokens, 'identity.coloredSurfaceLayers.background', 25),
54
+ surface: get(tokens, 'identity.coloredSurfaceLayers.surface', 45),
55
+ primitive: get(tokens, 'identity.coloredSurfaceLayers.primitive', 65),
56
+ }
57
+ : undefined,
58
+ borderWidth: get(tokens, 'identity.borderWidth', D.identity.borderWidth),
59
+ borderStyle: get(tokens, 'identity.borderStyle', D.identity.borderStyle),
60
+ borderColor: get(tokens, 'identity.borderColor', D.identity.borderColor),
61
+ elevationStyle: get(tokens, 'identity.elevationStyle', D.identity.elevationStyle),
62
+ elevationColor: get(tokens, 'identity.elevationColor', D.identity.elevationColor),
63
+ overrideSurfaceBorders: get(tokens, 'identity.overrideSurfaceBorders', false),
64
+ overrideInputButtons: get(tokens, 'identity.overrideInputButtons', false),
65
+ typographyHierarchy: get(tokens, 'identity.typographyHierarchy', D.identity.typographyHierarchy),
66
+ textDecoration: get(tokens, 'identity.textDecoration', D.identity.textDecoration),
67
+ labelStyle: get(tokens, 'identity.labelStyle', D.identity.labelStyle),
68
+ headingColor: get(tokens, 'identity.headingColor', D.identity.headingColor),
69
+ // Phase 4 / plan 3 Task 21 — LayerBackground shape: optional color +
70
+ // optional layers[]. Legacy BackgroundConfig (style/gradient/blobs) was
71
+ // deleted; MythikRenderer consumes this via BackgroundStack directly
72
+ // (from the RAW spec, not this resolved output). Undefined keys are
73
+ // omitted so `isLayerBackground` (which does `'color' in bg` key-
74
+ // presence check) doesn't falsely accept an all-undefined payload.
75
+ background: (() => {
76
+ const bgColor = get(tokens, 'identity.background.color', undefined);
77
+ const bgLayers = get(tokens, 'identity.background.layers', undefined);
78
+ const bg = {};
79
+ if (bgColor !== undefined)
80
+ bg.color = bgColor;
81
+ if (bgLayers !== undefined)
82
+ bg.layers = bgLayers;
83
+ return bg;
84
+ })(),
85
+ gradients: {
86
+ buttons: get(tokens, 'identity.gradients.buttons', false),
87
+ cards: get(tokens, 'identity.gradients.cards', false),
88
+ headers: get(tokens, 'identity.gradients.headers', false),
89
+ text: get(tokens, 'identity.gradients.text', false),
90
+ },
91
+ icons: {
92
+ weight: get(tokens, 'identity.icons.weight', 'regular'),
93
+ container: get(tokens, 'identity.icons.container', 'none'),
94
+ containerColor: get(tokens, 'identity.icons.containerColor', 'primary'),
95
+ },
96
+ images: {
97
+ corners: get(tokens, 'identity.images.corners', 'rounded'),
98
+ overlay: get(tokens, 'identity.images.overlay', 'none'),
99
+ border: get(tokens, 'identity.images.border', false),
100
+ },
101
+ };
102
+ // Build full color sets
103
+ const fullColors = {
104
+ primary: c.primary ?? D.colors.primary, primaryLight: c.primaryLight ?? D.colors.primaryLight,
105
+ primaryDark: c.primaryDark ?? D.colors.primaryDark, accent: c.accent ?? D.colors.accent,
106
+ accentLight: c.accentLight ?? D.colors.accentLight, surface: c.surface ?? D.colors.surface,
107
+ background: c.background ?? D.colors.background, text: c.text ?? D.colors.text,
108
+ textMuted: c.textMuted ?? D.colors.textMuted, border: c.border ?? D.colors.border,
109
+ error: c.error ?? D.colors.error, success: c.success ?? D.colors.success,
110
+ warning: c.warning ?? D.colors.warning,
111
+ };
112
+ const dc = get(tokens, 'modes.dark.colors', undefined);
113
+ const fullDark = dc ? {
114
+ primary: dc.primary ?? fullColors.primary, primaryLight: dc.primaryLight ?? fullColors.primaryLight,
115
+ primaryDark: dc.primaryDark ?? fullColors.primaryDark, accent: dc.accent ?? fullColors.accent,
116
+ accentLight: dc.accentLight ?? fullColors.accentLight, surface: dc.surface ?? fullColors.surface,
117
+ background: dc.background ?? fullColors.background, text: dc.text ?? fullColors.text,
118
+ textMuted: dc.textMuted ?? fullColors.textMuted, border: dc.border ?? fullColors.border,
119
+ error: dc.error ?? fullColors.error, success: dc.success ?? fullColors.success,
120
+ warning: dc.warning ?? fullColors.warning,
121
+ } : undefined;
122
+ // Resolve all identity in one call
123
+ const { schemeColors, surface: rawSurface, colorWeight: colorWeightResult, radius } = resolveIdentity({ colors: fullColors, darkColors: fullDark, identity: identityConfig }, surfaceToCSS);
124
+ // Apply border/elevation identity overrides only when explicitly enabled
125
+ const overrideCardModal = identityConfig.overrideSurfaceBorders ?? false;
126
+ const overrideInputBtns = identityConfig.overrideInputButtons ?? false;
127
+ let surface = rawSurface;
128
+ if (overrideCardModal || overrideInputBtns) {
129
+ const resolvedBorderColor = identityConfig.borderColor === 'primary' ? schemeColors.primary
130
+ : identityConfig.borderColor === 'accent' ? schemeColors.accent
131
+ : identityConfig.borderColor === 'text' ? schemeColors.text
132
+ : schemeColors.border;
133
+ const resolvedElevationColor = identityConfig.elevationColor === 'primary' ? schemeColors.primary
134
+ : identityConfig.elevationColor === 'accent' ? schemeColors.accent
135
+ : '#000000';
136
+ surface = applyBorderElevationCSS(rawSurface, {
137
+ borderWidth: identityConfig.borderWidth ?? D.identity.borderWidth,
138
+ borderStyle: identityConfig.borderStyle ?? D.identity.borderStyle,
139
+ borderColor: resolvedBorderColor,
140
+ elevationStyle: identityConfig.elevationStyle ?? D.identity.elevationStyle,
141
+ elevationColor: resolvedElevationColor,
142
+ depth: identityConfig.depth ?? D.identity.depth,
143
+ shadowAngle: identityConfig.shadowAngle ?? D.identity.shadowAngle,
144
+ slots: { cardModal: overrideCardModal, inputButtons: overrideInputBtns },
145
+ });
146
+ }
147
+ if (identityConfig.gradients?.cards) {
148
+ const cardsFlag = identityConfig.gradients.cards;
149
+ const mode = typeof cardsFlag === 'string' ? cardsFlag : undefined;
150
+ surface = applyGradientCardsCSS(surface, {
151
+ primaryColor: schemeColors.primary,
152
+ surfaceColor: schemeColors.surface,
153
+ mode,
154
+ });
155
+ }
156
+ const identity = {
157
+ surface: identityConfig.surface,
158
+ radiusPattern: identityConfig.radiusPattern,
159
+ borderWidth: identityConfig.borderWidth,
160
+ borderStyle: identityConfig.borderStyle,
161
+ borderColor: identityConfig.borderColor ?? D.identity.borderColor,
162
+ elevationStyle: identityConfig.elevationStyle,
163
+ elevationColor: identityConfig.elevationColor ?? D.identity.elevationColor,
164
+ overrideSurfaceBorders: overrideCardModal,
165
+ overrideInputButtons: overrideInputBtns,
166
+ typographyHierarchy: identityConfig.typographyHierarchy,
167
+ textDecoration: identityConfig.textDecoration,
168
+ labelStyle: identityConfig.labelStyle,
169
+ headingColor: identityConfig.headingColor ?? D.identity.headingColor,
170
+ depth: identityConfig.depth,
171
+ shadowAngle: identityConfig.shadowAngle,
172
+ colorScheme: identityConfig.colorScheme,
173
+ colorWeight: identityConfig.colorWeight,
174
+ accentApplication: identityConfig.accentApplication,
175
+ // Phase 4
176
+ background: identityConfig.background,
177
+ gradients: identityConfig.gradients,
178
+ icons: identityConfig.icons,
179
+ images: identityConfig.images,
180
+ };
181
+ return {
182
+ colors: {
183
+ primary: fullColors.primary, primaryLight: fullColors.primaryLight,
184
+ primaryDark: fullColors.primaryDark, accent: fullColors.accent,
185
+ accentLight: fullColors.accentLight, surface: fullColors.surface,
186
+ background: fullColors.background, text: fullColors.text,
187
+ textMuted: fullColors.textMuted, border: fullColors.border,
188
+ error: fullColors.error, success: fullColors.success,
189
+ warning: fullColors.warning,
190
+ },
191
+ shape: { radius: {
192
+ none: sr.none ?? D.shape.radius.none, sm: sr.sm ?? D.shape.radius.sm, md: sr.md ?? D.shape.radius.md,
193
+ lg: sr.lg ?? D.shape.radius.lg, xl: sr.xl ?? D.shape.radius.xl, full: sr.full ?? D.shape.radius.full,
194
+ } },
195
+ typography: {
196
+ fontFamily: {
197
+ base: tf.base ?? D.typography.fontFamily.base, heading: tf.heading ?? D.typography.fontFamily.heading,
198
+ mono: tf.mono ?? D.typography.fontFamily.mono,
199
+ },
200
+ scale: {
201
+ xs: ts.xs ?? D.typography.scale.xs, sm: ts.sm ?? D.typography.scale.sm, md: ts.md ?? D.typography.scale.md,
202
+ lg: ts.lg ?? D.typography.scale.lg, xl: ts.xl ?? D.typography.scale.xl, '2xl': ts['2xl'] ?? D.typography.scale['2xl'],
203
+ },
204
+ weight: {
205
+ normal: tw.normal ?? D.typography.weight.normal, medium: tw.medium ?? D.typography.weight.medium,
206
+ semibold: tw.semibold ?? D.typography.weight.semibold, bold: tw.bold ?? D.typography.weight.bold,
207
+ },
208
+ letterSpacing: get(tokens, 'typography.letterSpacing', D.typography.letterSpacing),
209
+ headingLetterSpacing: get(tokens, 'typography.headingLetterSpacing', D.typography.headingLetterSpacing),
210
+ },
211
+ spacing: {
212
+ unit: sp.unit ?? D.spacing.unit,
213
+ scale: {
214
+ xs: ss.xs ?? D.spacing.scale.xs, sm: ss.sm ?? D.spacing.scale.sm, md: ss.md ?? D.spacing.scale.md,
215
+ lg: ss.lg ?? D.spacing.scale.lg, xl: ss.xl ?? D.spacing.scale.xl, '2xl': ss['2xl'] ?? D.spacing.scale['2xl'],
216
+ },
217
+ },
218
+ elevation: {
219
+ none: elevToCSS(el.none ?? D.elevation.none), sm: elevToCSS(el.sm ?? D.elevation.sm),
220
+ md: elevToCSS(el.md ?? D.elevation.md), lg: elevToCSS(el.lg ?? D.elevation.lg),
221
+ xl: elevToCSS(el.xl ?? D.elevation.xl),
222
+ },
223
+ motion: {
224
+ duration: {
225
+ fast: get(tokens, 'motion.duration.fast', D.motion.duration.fast),
226
+ normal: get(tokens, 'motion.duration.normal', D.motion.duration.normal),
227
+ slow: get(tokens, 'motion.duration.slow', D.motion.duration.slow),
228
+ },
229
+ easing: {
230
+ default: get(tokens, 'motion.easing.default', D.motion.easing.default),
231
+ enter: get(tokens, 'motion.easing.enter', D.motion.easing.enter),
232
+ exit: get(tokens, 'motion.easing.exit', D.motion.easing.exit),
233
+ },
234
+ spring: {
235
+ damping: get(tokens, 'motion.spring.damping', D.motion.spring.damping),
236
+ stiffness: get(tokens, 'motion.spring.stiffness', D.motion.spring.stiffness),
237
+ mass: get(tokens, 'motion.spring.mass', D.motion.spring.mass),
238
+ },
239
+ stagger: get(tokens, 'motion.stagger', D.motion.stagger),
240
+ },
241
+ opacity: {
242
+ disabled: op.disabled ?? D.opacity.disabled, pressed: op.pressed ?? D.opacity.pressed,
243
+ backdrop: op.backdrop ?? D.opacity.backdrop, muted: op.muted ?? D.opacity.muted,
244
+ },
245
+ surface,
246
+ identity,
247
+ colorWeight: colorWeightResult,
248
+ radius,
249
+ };
250
+ }
251
+ //# sourceMappingURL=use-design-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-design-tokens.js","sourceRoot":"","sources":["../../src/primitives/use-design-tokens.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ interface ThemeColors {
2
+ background: string;
3
+ surface: string;
4
+ text: string;
5
+ textMuted: string;
6
+ border: string;
7
+ primary: string;
8
+ }
9
+ export declare function useThemeColors(tokens: Record<string, unknown> | undefined): ThemeColors;
10
+ export {};
11
+ //# sourceMappingURL=use-theme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-theme.d.ts","sourceRoot":"","sources":["../../src/primitives/use-theme.ts"],"names":[],"mappings":"AAMA,UAAU,WAAW;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,WAAW,CAUvF"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @deprecated Use useDesignTokens instead.
3
+ * Kept for backward compatibility — wraps useDesignTokens and returns only colors.
4
+ */
5
+ import { useDesignTokens } from './use-design-tokens.js';
6
+ export function useThemeColors(tokens) {
7
+ const t = useDesignTokens(tokens);
8
+ return {
9
+ background: t.colors.background,
10
+ surface: t.colors.surface,
11
+ text: t.colors.text,
12
+ textMuted: t.colors.textMuted,
13
+ border: t.colors.border,
14
+ primary: t.colors.primary,
15
+ };
16
+ }
17
+ //# sourceMappingURL=use-theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-theme.js","sourceRoot":"","sources":["../../src/primitives/use-theme.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAWzD,MAAM,UAAU,cAAc,CAAC,MAA2C;IACxE,MAAM,CAAC,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO;QACL,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,UAAU;QAC/B,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;QACzB,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI;QACnB,SAAS,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS;QAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;QACvB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO;KAC1B,CAAC;AACJ,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { CSSProperties, ReactNode } from 'react';
2
+ interface WizardProps {
3
+ currentStep?: number;
4
+ totalSteps?: number;
5
+ style?: CSSProperties;
6
+ _tokens?: Record<string, unknown>;
7
+ children?: ReactNode;
8
+ }
9
+ export declare function Wizard({ currentStep, totalSteps, style, _tokens, children }: WizardProps): import("react/jsx-runtime").JSX.Element;
10
+ export {};
11
+ //# sourceMappingURL=wizard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.d.ts","sourceRoot":"","sources":["../../src/primitives/wizard.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAGtD,UAAU,WAAW;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAED,wBAAgB,MAAM,CAAC,EAAE,WAAe,EAAE,UAAc,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,WAAW,2CA4BhG"}
@@ -0,0 +1,15 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useDesignTokens } from './use-design-tokens.js';
3
+ export function Wizard({ currentStep = 0, totalSteps = 1, style, _tokens, children }) {
4
+ const t = useDesignTokens(_tokens);
5
+ const progress = totalSteps > 0 ? ((currentStep + 1) / totalSteps) * 100 : 0;
6
+ return (_jsxs("div", { style: style, children: [_jsx("div", { role: "progressbar", "aria-valuenow": currentStep + 1, "aria-valuemin": 1, "aria-valuemax": totalSteps, style: {
7
+ width: '100%',
8
+ height: 4,
9
+ backgroundColor: t.colors.border,
10
+ borderRadius: 2,
11
+ marginBottom: t.spacing.scale.lg,
12
+ overflow: 'hidden',
13
+ }, children: _jsx("div", { style: { width: `${progress}%`, height: '100%', backgroundColor: t.colors.primary, transition: `width ${t.motion.duration.normal}ms` } }) }), _jsxs("div", { style: { fontSize: t.typography.scale.xs.fontSize, color: t.colors.textMuted, marginBottom: t.spacing.scale.md }, children: ["Step ", currentStep + 1, " of ", totalSteps] }), children] }));
14
+ }
15
+ //# sourceMappingURL=wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wizard.js","sourceRoot":"","sources":["../../src/primitives/wizard.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAUzD,MAAM,UAAU,MAAM,CAAC,EAAE,WAAW,GAAG,CAAC,EAAE,UAAU,GAAG,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAe;IAC/F,MAAM,CAAC,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7E,OAAO,CACL,eAAK,KAAK,EAAE,KAAK,aACf,cACE,IAAI,EAAC,aAAa,mBACH,WAAW,GAAG,CAAC,mBACf,CAAC,mBACD,UAAU,EACzB,KAAK,EAAE;oBACL,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,CAAC;oBACT,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM;oBAChC,YAAY,EAAE,CAAC;oBACf,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBAChC,QAAQ,EAAE,QAAQ;iBACnB,YAED,cAAK,KAAK,EAAE,EAAE,KAAK,EAAE,GAAG,QAAQ,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,GAAI,GAC3I,EACN,eAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,sBAC7G,WAAW,GAAG,CAAC,UAAM,UAAU,IACjC,EACL,QAAQ,IACL,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { StateStore, EventBinding } from 'mythik';
2
+ export declare function createContextDispatcher<TContext>(store: StateStore, dispatchAction: (binding: EventBinding) => void, defaultContextPath: string): (binding: EventBinding | undefined, context?: TContext, contextPath?: string) => void;
3
+ //# sourceMappingURL=context-dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-dispatcher.d.ts","sourceRoot":"","sources":["../../src/runtime/context-dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEvD,wBAAgB,uBAAuB,CAAC,QAAQ,EAC9C,KAAK,EAAE,UAAU,EACjB,cAAc,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,EAC/C,kBAAkB,EAAE,MAAM,GACzB,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,EAAE,OAAO,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,EAAE,MAAM,KAAK,IAAI,CAUvF"}
@@ -0,0 +1,11 @@
1
+ export function createContextDispatcher(store, dispatchAction, defaultContextPath) {
2
+ return (binding, context, contextPath = defaultContextPath) => {
3
+ if (context !== undefined) {
4
+ store.set(contextPath, context);
5
+ }
6
+ if (!binding)
7
+ return;
8
+ dispatchAction(binding);
9
+ };
10
+ }
11
+ //# sourceMappingURL=context-dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context-dispatcher.js","sourceRoot":"","sources":["../../src/runtime/context-dispatcher.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,uBAAuB,CACrC,KAAiB,EACjB,cAA+C,EAC/C,kBAA0B;IAE1B,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,WAAW,GAAG,kBAAkB,EAAE,EAAE;QAC5D,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,KAAK,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;QAClC,CAAC;QAED,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,cAAc,CAAC,OAAO,CAAC,CAAC;IAC1B,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ import type { StateStore, EventBinding } from 'mythik';
2
+ /**
3
+ * Create a row-context dispatcher: writes the row to a reserved state path
4
+ * (default: /ui/selectedRow) immediately before invoking the underlying
5
+ * dispatchAction. Used by the table primitive for both onRowClick and
6
+ * columns[].actions[].onPress — they share the same row-context contract
7
+ * per ai-context-runtime-semantics.md § 2.1.
8
+ *
9
+ * Behavior:
10
+ * - If `row` is provided, writes row to `rowPath` synchronously before any dispatch.
11
+ * - If `binding` is undefined, performs the row write but no dispatch.
12
+ * - If `binding` is an array, dispatches each entry in order.
13
+ * - If `binding` is an empty array, performs the row write (if `row` provided) but no dispatch.
14
+ * - If `binding` is a single binding (ActionBinding or TransactionBinding shape),
15
+ * dispatches once. The underlying dispatchAction is responsible for handling
16
+ * transaction shapes — this helper passes through.
17
+ */
18
+ export declare function createRowDispatcher(store: StateStore, dispatchAction: (binding: EventBinding) => void, rowPath?: string): (binding: EventBinding | undefined, row?: Record<string, unknown>) => void;
19
+ //# sourceMappingURL=row-dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row-dispatcher.d.ts","sourceRoot":"","sources":["../../src/runtime/row-dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAIvD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,UAAU,EACjB,cAAc,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,EAC/C,OAAO,GAAE,MAAoC,GAC5C,CAAC,OAAO,EAAE,YAAY,GAAG,SAAS,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAU5E"}
@@ -0,0 +1,25 @@
1
+ import { RESERVED_PATHS } from 'mythik';
2
+ import { createContextDispatcher } from './context-dispatcher.js';
3
+ /**
4
+ * Create a row-context dispatcher: writes the row to a reserved state path
5
+ * (default: /ui/selectedRow) immediately before invoking the underlying
6
+ * dispatchAction. Used by the table primitive for both onRowClick and
7
+ * columns[].actions[].onPress — they share the same row-context contract
8
+ * per ai-context-runtime-semantics.md § 2.1.
9
+ *
10
+ * Behavior:
11
+ * - If `row` is provided, writes row to `rowPath` synchronously before any dispatch.
12
+ * - If `binding` is undefined, performs the row write but no dispatch.
13
+ * - If `binding` is an array, dispatches each entry in order.
14
+ * - If `binding` is an empty array, performs the row write (if `row` provided) but no dispatch.
15
+ * - If `binding` is a single binding (ActionBinding or TransactionBinding shape),
16
+ * dispatches once. The underlying dispatchAction is responsible for handling
17
+ * transaction shapes — this helper passes through.
18
+ */
19
+ export function createRowDispatcher(store, dispatchAction, rowPath = RESERVED_PATHS.SELECTED_ROW) {
20
+ const dispatchWithContext = createContextDispatcher(store, dispatchAction, rowPath);
21
+ return (binding, row) => {
22
+ dispatchWithContext(binding, row || undefined);
23
+ };
24
+ }
25
+ //# sourceMappingURL=row-dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row-dispatcher.js","sourceRoot":"","sources":["../../src/runtime/row-dispatcher.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAiB,EACjB,cAA+C,EAC/C,UAAkB,cAAc,CAAC,YAAY;IAE7C,MAAM,mBAAmB,GAAG,uBAAuB,CACjD,KAAK,EACL,cAAc,EACd,OAAO,CACR,CAAC;IAEF,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,EAAE;QACtB,mBAAmB,CAAC,OAAO,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC;IACjD,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,10 @@
1
+ import type { CSSProperties, ReactNode } from 'react';
2
+ /** Props that every primitive receives from the engine */
3
+ export interface PrimitiveProps {
4
+ style?: CSSProperties;
5
+ children?: ReactNode;
6
+ [key: string]: unknown;
7
+ }
8
+ /** A React primitive component */
9
+ export type PrimitiveComponent = (props: PrimitiveProps) => ReactNode;
10
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEtD,0DAA0D;AAC1D,MAAM,WAAW,cAAc;IAC7B,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,CAAC,EAAE,SAAS,CAAC;IACrB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,kCAAkC;AAClC,MAAM,MAAM,kBAAkB,GAAG,CAAC,KAAK,EAAE,cAAc,KAAK,SAAS,CAAC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import type { StateStore } from 'mythik';
2
+ /**
3
+ * Auto-tracks device context and writes to /ui/device/* in the store.
4
+ * Platform-specific: this implementation is for React web (uses window + matchMedia).
5
+ * React Native would use Dimensions + Appearance instead.
6
+ */
7
+ export declare function useDeviceContext(store: StateStore, enabled?: boolean): void;
8
+ //# sourceMappingURL=use-device-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-device-context.d.ts","sourceRoot":"","sources":["../src/use-device-context.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AAEzC;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,UAAU,EAAE,OAAO,GAAE,OAAc,GAAG,IAAI,CA+CjF"}
@@ -0,0 +1,54 @@
1
+ import { useEffect, useRef } from 'react';
2
+ /**
3
+ * Auto-tracks device context and writes to /ui/device/* in the store.
4
+ * Platform-specific: this implementation is for React web (uses window + matchMedia).
5
+ * React Native would use Dimensions + Appearance instead.
6
+ */
7
+ export function useDeviceContext(store, enabled = true) {
8
+ const debounceRef = useRef(null);
9
+ useEffect(() => {
10
+ if (!enabled)
11
+ return;
12
+ function writeContext() {
13
+ const w = window.innerWidth;
14
+ const h = window.innerHeight;
15
+ store.set('/ui/device/viewportWidth', w);
16
+ store.set('/ui/device/viewportHeight', h);
17
+ store.set('/ui/device/platform', 'web');
18
+ store.set('/ui/device/orientation', w > h ? 'landscape' : 'portrait');
19
+ // Legacy path — existing specs may use $state: "/ui/viewportWidth" directly
20
+ store.set('/ui/viewportWidth', w);
21
+ }
22
+ // Write initial values
23
+ writeContext();
24
+ // Detect OS color scheme (matchMedia may not exist in test environments)
25
+ let darkQuery = null;
26
+ let onColorChange = null;
27
+ if (typeof window.matchMedia === 'function') {
28
+ darkQuery = window.matchMedia('(prefers-color-scheme: dark)');
29
+ store.set('/ui/device/colorScheme', darkQuery.matches ? 'dark' : 'light');
30
+ onColorChange = (e) => {
31
+ store.set('/ui/device/colorScheme', e.matches ? 'dark' : 'light');
32
+ };
33
+ darkQuery.addEventListener('change', onColorChange);
34
+ }
35
+ else {
36
+ store.set('/ui/device/colorScheme', 'light');
37
+ }
38
+ // Debounced resize handler
39
+ const onResize = () => {
40
+ if (debounceRef.current)
41
+ clearTimeout(debounceRef.current);
42
+ debounceRef.current = setTimeout(writeContext, 100);
43
+ };
44
+ window.addEventListener('resize', onResize);
45
+ return () => {
46
+ window.removeEventListener('resize', onResize);
47
+ if (darkQuery && onColorChange)
48
+ darkQuery.removeEventListener('change', onColorChange);
49
+ if (debounceRef.current)
50
+ clearTimeout(debounceRef.current);
51
+ };
52
+ }, [store, enabled]);
53
+ }
54
+ //# sourceMappingURL=use-device-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"use-device-context.js","sourceRoot":"","sources":["../src/use-device-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAC;AAG1C;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAiB,EAAE,UAAmB,IAAI;IACzE,MAAM,WAAW,GAAG,MAAM,CAAuC,IAAI,CAAC,CAAC;IAEvE,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,SAAS,YAAY;YACnB,MAAM,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;YAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC;YAC7B,KAAK,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC,CAAC,CAAC;YACzC,KAAK,CAAC,GAAG,CAAC,2BAA2B,EAAE,CAAC,CAAC,CAAC;YAC1C,KAAK,CAAC,GAAG,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;YACxC,KAAK,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;YACtE,4EAA4E;YAC5E,KAAK,CAAC,GAAG,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;QACpC,CAAC;QAED,uBAAuB;QACvB,YAAY,EAAE,CAAC;QAEf,yEAAyE;QACzE,IAAI,SAAS,GAA0B,IAAI,CAAC;QAC5C,IAAI,aAAa,GAA8C,IAAI,CAAC;QACpE,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,UAAU,EAAE,CAAC;YAC5C,SAAS,GAAG,MAAM,CAAC,UAAU,CAAC,8BAA8B,CAAC,CAAC;YAC9D,KAAK,CAAC,GAAG,CAAC,wBAAwB,EAAE,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC1E,aAAa,GAAG,CAAC,CAAsB,EAAE,EAAE;gBACzC,KAAK,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YACpE,CAAC,CAAC;YACF,SAAS,CAAC,gBAAgB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;QACtD,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,GAAG,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;QAC/C,CAAC;QAED,2BAA2B;QAC3B,MAAM,QAAQ,GAAG,GAAG,EAAE;YACpB,IAAI,WAAW,CAAC,OAAO;gBAAE,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC3D,WAAW,CAAC,OAAO,GAAG,UAAU,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACtD,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAE5C,OAAO,GAAG,EAAE;YACV,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YAC/C,IAAI,SAAS,IAAI,aAAa;gBAAE,SAAS,CAAC,mBAAmB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YACvF,IAAI,WAAW,CAAC,OAAO;gBAAE,YAAY,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QAC7D,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AACvB,CAAC"}
package/package.json ADDED
@@ -0,0 +1,59 @@
1
+ {
2
+ "name": "mythik-react",
3
+ "version": "0.1.0",
4
+ "description": "React runtime and primitives for rendering Mythik JSON specs as applications.",
5
+ "license": "Apache-2.0",
6
+ "type": "module",
7
+ "main": "dist/index.js",
8
+ "types": "dist/index.d.ts",
9
+ "keywords": [
10
+ "mythik",
11
+ "react",
12
+ "json",
13
+ "spec-driven",
14
+ "application-framework",
15
+ "low-code",
16
+ "ai"
17
+ ],
18
+ "homepage": "https://mythik.dev",
19
+ "bugs": {
20
+ "url": "https://github.com/mldixdev/mythik/issues"
21
+ },
22
+ "repository": {
23
+ "type": "git",
24
+ "url": "git+https://github.com/mldixdev/mythik.git",
25
+ "directory": "packages/react"
26
+ },
27
+ "files": [
28
+ "dist",
29
+ "LICENSE",
30
+ "NOTICE"
31
+ ],
32
+ "exports": {
33
+ ".": {
34
+ "types": "./dist/index.d.ts",
35
+ "default": "./dist/index.js"
36
+ },
37
+ "./package.json": "./package.json"
38
+ },
39
+ "scripts": {
40
+ "build": "node ../../node_modules/typescript/bin/tsc",
41
+ "typecheck": "node ../../node_modules/typescript/bin/tsc --noEmit",
42
+ "prepack": "pnpm build"
43
+ },
44
+ "dependencies": {
45
+ "mythik": "workspace:*",
46
+ "motion": "^12.38.0"
47
+ },
48
+ "devDependencies": {
49
+ "@testing-library/jest-dom": "^6.0.0",
50
+ "@testing-library/react": "^16.0.0",
51
+ "@types/node": "^25.5.2",
52
+ "@types/react": "^19.0.0",
53
+ "typescript": "^5.7.0"
54
+ },
55
+ "peerDependencies": {
56
+ "react": "^18.0.0 || ^19.0.0",
57
+ "react-dom": "^18.0.0 || ^19.0.0"
58
+ }
59
+ }