mythik 0.0.1 → 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 (1111) hide show
  1. package/LICENSE +201 -0
  2. package/NOTICE +4 -0
  3. package/README.md +97 -2
  4. package/dist/actions/dispatcher.d.ts +46 -0
  5. package/dist/actions/dispatcher.d.ts.map +1 -0
  6. package/dist/actions/dispatcher.js +366 -0
  7. package/dist/actions/dispatcher.js.map +1 -0
  8. package/dist/actions/middleware.d.ts +27 -0
  9. package/dist/actions/middleware.d.ts.map +1 -0
  10. package/dist/actions/middleware.js +37 -0
  11. package/dist/actions/middleware.js.map +1 -0
  12. package/dist/actions/transaction-engine.d.ts +13 -0
  13. package/dist/actions/transaction-engine.d.ts.map +1 -0
  14. package/dist/actions/transaction-engine.js +96 -0
  15. package/dist/actions/transaction-engine.js.map +1 -0
  16. package/dist/app/app-engine.d.ts +106 -0
  17. package/dist/app/app-engine.d.ts.map +1 -0
  18. package/dist/app/app-engine.js +413 -0
  19. package/dist/app/app-engine.js.map +1 -0
  20. package/dist/auth/cross-tab.d.ts +24 -0
  21. package/dist/auth/cross-tab.d.ts.map +1 -0
  22. package/dist/auth/cross-tab.js +117 -0
  23. package/dist/auth/cross-tab.js.map +1 -0
  24. package/dist/auth/engine.d.ts +16 -0
  25. package/dist/auth/engine.d.ts.map +1 -0
  26. package/dist/auth/engine.js +225 -0
  27. package/dist/auth/engine.js.map +1 -0
  28. package/dist/auth/persistence.d.ts +21 -0
  29. package/dist/auth/persistence.d.ts.map +1 -0
  30. package/dist/auth/persistence.js +97 -0
  31. package/dist/auth/persistence.js.map +1 -0
  32. package/dist/auth/providers/custom-jwt.d.ts +41 -0
  33. package/dist/auth/providers/custom-jwt.d.ts.map +1 -0
  34. package/dist/auth/providers/custom-jwt.js +165 -0
  35. package/dist/auth/providers/custom-jwt.js.map +1 -0
  36. package/dist/auth/providers/mock.d.ts +7 -0
  37. package/dist/auth/providers/mock.d.ts.map +1 -0
  38. package/dist/auth/providers/mock.js +52 -0
  39. package/dist/auth/providers/mock.js.map +1 -0
  40. package/dist/auth/providers/supabase.d.ts +90 -0
  41. package/dist/auth/providers/supabase.d.ts.map +1 -0
  42. package/dist/auth/providers/supabase.js +102 -0
  43. package/dist/auth/providers/supabase.js.map +1 -0
  44. package/dist/auth/rate-limiter.d.ts +29 -0
  45. package/dist/auth/rate-limiter.d.ts.map +1 -0
  46. package/dist/auth/rate-limiter.js +67 -0
  47. package/dist/auth/rate-limiter.js.map +1 -0
  48. package/dist/auth/refresh-engine.d.ts +25 -0
  49. package/dist/auth/refresh-engine.d.ts.map +1 -0
  50. package/dist/auth/refresh-engine.js +59 -0
  51. package/dist/auth/refresh-engine.js.map +1 -0
  52. package/dist/auth/types.d.ts +89 -0
  53. package/dist/auth/types.d.ts.map +1 -0
  54. package/dist/auth/types.js +2 -0
  55. package/dist/auth/types.js.map +1 -0
  56. package/dist/contract/endpoint-map.d.ts +20 -0
  57. package/dist/contract/endpoint-map.d.ts.map +1 -0
  58. package/dist/contract/endpoint-map.js +57 -0
  59. package/dist/contract/endpoint-map.js.map +1 -0
  60. package/dist/contract/engine.d.ts +12 -0
  61. package/dist/contract/engine.d.ts.map +1 -0
  62. package/dist/contract/engine.js +80 -0
  63. package/dist/contract/engine.js.map +1 -0
  64. package/dist/contract/extractor.d.ts +7 -0
  65. package/dist/contract/extractor.d.ts.map +1 -0
  66. package/dist/contract/extractor.js +133 -0
  67. package/dist/contract/extractor.js.map +1 -0
  68. package/dist/contract/index.d.ts +4 -0
  69. package/dist/contract/index.d.ts.map +1 -0
  70. package/dist/contract/index.js +2 -0
  71. package/dist/contract/index.js.map +1 -0
  72. package/dist/contract/matcher.d.ts +13 -0
  73. package/dist/contract/matcher.d.ts.map +1 -0
  74. package/dist/contract/matcher.js +57 -0
  75. package/dist/contract/matcher.js.map +1 -0
  76. package/dist/contract/rules/endpoints-exist.d.ts +3 -0
  77. package/dist/contract/rules/endpoints-exist.d.ts.map +1 -0
  78. package/dist/contract/rules/endpoints-exist.js +29 -0
  79. package/dist/contract/rules/endpoints-exist.js.map +1 -0
  80. package/dist/contract/rules/fields-valid.d.ts +3 -0
  81. package/dist/contract/rules/fields-valid.d.ts.map +1 -0
  82. package/dist/contract/rules/fields-valid.js +39 -0
  83. package/dist/contract/rules/fields-valid.js.map +1 -0
  84. package/dist/contract/rules/params-match.d.ts +3 -0
  85. package/dist/contract/rules/params-match.d.ts.map +1 -0
  86. package/dist/contract/rules/params-match.js +40 -0
  87. package/dist/contract/rules/params-match.js.map +1 -0
  88. package/dist/contract/rules/permissions-consistent.d.ts +3 -0
  89. package/dist/contract/rules/permissions-consistent.d.ts.map +1 -0
  90. package/dist/contract/rules/permissions-consistent.js +52 -0
  91. package/dist/contract/rules/permissions-consistent.js.map +1 -0
  92. package/dist/contract/types.d.ts +66 -0
  93. package/dist/contract/types.d.ts.map +1 -0
  94. package/dist/contract/types.js +2 -0
  95. package/dist/contract/types.js.map +1 -0
  96. package/dist/data/data-sources.d.ts +26 -0
  97. package/dist/data/data-sources.d.ts.map +1 -0
  98. package/dist/data/data-sources.js +218 -0
  99. package/dist/data/data-sources.js.map +1 -0
  100. package/dist/data/fetch.d.ts +29 -0
  101. package/dist/data/fetch.d.ts.map +1 -0
  102. package/dist/data/fetch.js +63 -0
  103. package/dist/data/fetch.js.map +1 -0
  104. package/dist/data/offline.d.ts +29 -0
  105. package/dist/data/offline.d.ts.map +1 -0
  106. package/dist/data/offline.js +48 -0
  107. package/dist/data/offline.js.map +1 -0
  108. package/dist/data/realtime.d.ts +21 -0
  109. package/dist/data/realtime.d.ts.map +1 -0
  110. package/dist/data/realtime.js +40 -0
  111. package/dist/data/realtime.js.map +1 -0
  112. package/dist/derive/evaluator.d.ts +19 -0
  113. package/dist/derive/evaluator.d.ts.map +1 -0
  114. package/dist/derive/evaluator.js +59 -0
  115. package/dist/derive/evaluator.js.map +1 -0
  116. package/dist/derive/topo-sort.d.ts +10 -0
  117. package/dist/derive/topo-sort.d.ts.map +1 -0
  118. package/dist/derive/topo-sort.js +36 -0
  119. package/dist/derive/topo-sort.js.map +1 -0
  120. package/dist/design/animation/cascade-types.d.ts +23 -0
  121. package/dist/design/animation/cascade-types.d.ts.map +1 -0
  122. package/dist/design/animation/cascade-types.js +2 -0
  123. package/dist/design/animation/cascade-types.js.map +1 -0
  124. package/dist/design/animation/cascade.d.ts +4 -0
  125. package/dist/design/animation/cascade.d.ts.map +1 -0
  126. package/dist/design/animation/cascade.js +73 -0
  127. package/dist/design/animation/cascade.js.map +1 -0
  128. package/dist/design/animation/css-keyframes.d.ts +8 -0
  129. package/dist/design/animation/css-keyframes.d.ts.map +1 -0
  130. package/dist/design/animation/css-keyframes.js +72 -0
  131. package/dist/design/animation/css-keyframes.js.map +1 -0
  132. package/dist/design/animation/index.d.ts +14 -0
  133. package/dist/design/animation/index.d.ts.map +1 -0
  134. package/dist/design/animation/index.js +9 -0
  135. package/dist/design/animation/index.js.map +1 -0
  136. package/dist/design/animation/keyframes-builder.d.ts +40 -0
  137. package/dist/design/animation/keyframes-builder.d.ts.map +1 -0
  138. package/dist/design/animation/keyframes-builder.js +140 -0
  139. package/dist/design/animation/keyframes-builder.js.map +1 -0
  140. package/dist/design/animation/reanimated-spec.d.ts +16 -0
  141. package/dist/design/animation/reanimated-spec.d.ts.map +1 -0
  142. package/dist/design/animation/reanimated-spec.js +162 -0
  143. package/dist/design/animation/reanimated-spec.js.map +1 -0
  144. package/dist/design/animation/reduced-motion.d.ts +3 -0
  145. package/dist/design/animation/reduced-motion.d.ts.map +1 -0
  146. package/dist/design/animation/reduced-motion.js +54 -0
  147. package/dist/design/animation/reduced-motion.js.map +1 -0
  148. package/dist/design/animation/resolver.d.ts +3 -0
  149. package/dist/design/animation/resolver.d.ts.map +1 -0
  150. package/dist/design/animation/resolver.js +86 -0
  151. package/dist/design/animation/resolver.js.map +1 -0
  152. package/dist/design/animation/types.d.ts +109 -0
  153. package/dist/design/animation/types.d.ts.map +1 -0
  154. package/dist/design/animation/types.js +7 -0
  155. package/dist/design/animation/types.js.map +1 -0
  156. package/dist/design/animation/validator.d.ts +44 -0
  157. package/dist/design/animation/validator.d.ts.map +1 -0
  158. package/dist/design/animation/validator.js +169 -0
  159. package/dist/design/animation/validator.js.map +1 -0
  160. package/dist/design/background/blobs/catalog.d.ts +10 -0
  161. package/dist/design/background/blobs/catalog.d.ts.map +1 -0
  162. package/dist/design/background/blobs/catalog.js +63 -0
  163. package/dist/design/background/blobs/catalog.js.map +1 -0
  164. package/dist/design/background/blobs/index.d.ts +4 -0
  165. package/dist/design/background/blobs/index.d.ts.map +1 -0
  166. package/dist/design/background/blobs/index.js +5 -0
  167. package/dist/design/background/blobs/index.js.map +1 -0
  168. package/dist/design/background/blobs/resolver.d.ts +16 -0
  169. package/dist/design/background/blobs/resolver.d.ts.map +1 -0
  170. package/dist/design/background/blobs/resolver.js +301 -0
  171. package/dist/design/background/blobs/resolver.js.map +1 -0
  172. package/dist/design/background/blobs/types.d.ts +112 -0
  173. package/dist/design/background/blobs/types.d.ts.map +1 -0
  174. package/dist/design/background/blobs/types.js +27 -0
  175. package/dist/design/background/blobs/types.js.map +1 -0
  176. package/dist/design/background/grain.d.ts +3 -0
  177. package/dist/design/background/grain.d.ts.map +1 -0
  178. package/dist/design/background/grain.js +23 -0
  179. package/dist/design/background/grain.js.map +1 -0
  180. package/dist/design/background/index.d.ts +8 -0
  181. package/dist/design/background/index.d.ts.map +1 -0
  182. package/dist/design/background/index.js +8 -0
  183. package/dist/design/background/index.js.map +1 -0
  184. package/dist/design/background/layers.d.ts +3 -0
  185. package/dist/design/background/layers.d.ts.map +1 -0
  186. package/dist/design/background/layers.js +23 -0
  187. package/dist/design/background/layers.js.map +1 -0
  188. package/dist/design/background/patterns/chevron.d.ts +8 -0
  189. package/dist/design/background/patterns/chevron.d.ts.map +1 -0
  190. package/dist/design/background/patterns/chevron.js +10 -0
  191. package/dist/design/background/patterns/chevron.js.map +1 -0
  192. package/dist/design/background/patterns/crosshatch.d.ts +8 -0
  193. package/dist/design/background/patterns/crosshatch.d.ts.map +1 -0
  194. package/dist/design/background/patterns/crosshatch.js +12 -0
  195. package/dist/design/background/patterns/crosshatch.js.map +1 -0
  196. package/dist/design/background/patterns/diagonal.d.ts +8 -0
  197. package/dist/design/background/patterns/diagonal.d.ts.map +1 -0
  198. package/dist/design/background/patterns/diagonal.js +7 -0
  199. package/dist/design/background/patterns/diagonal.js.map +1 -0
  200. package/dist/design/background/patterns/dots.d.ts +7 -0
  201. package/dist/design/background/patterns/dots.d.ts.map +1 -0
  202. package/dist/design/background/patterns/dots.js +9 -0
  203. package/dist/design/background/patterns/dots.js.map +1 -0
  204. package/dist/design/background/patterns/grid.d.ts +7 -0
  205. package/dist/design/background/patterns/grid.d.ts.map +1 -0
  206. package/dist/design/background/patterns/grid.js +8 -0
  207. package/dist/design/background/patterns/grid.js.map +1 -0
  208. package/dist/design/background/patterns/index.d.ts +8 -0
  209. package/dist/design/background/patterns/index.d.ts.map +1 -0
  210. package/dist/design/background/patterns/index.js +8 -0
  211. package/dist/design/background/patterns/index.js.map +1 -0
  212. package/dist/design/background/patterns/iso.d.ts +7 -0
  213. package/dist/design/background/patterns/iso.d.ts.map +1 -0
  214. package/dist/design/background/patterns/iso.js +11 -0
  215. package/dist/design/background/patterns/iso.js.map +1 -0
  216. package/dist/design/background/patterns/resolver.d.ts +3 -0
  217. package/dist/design/background/patterns/resolver.d.ts.map +1 -0
  218. package/dist/design/background/patterns/resolver.js +56 -0
  219. package/dist/design/background/patterns/resolver.js.map +1 -0
  220. package/dist/design/background/primitives/gradient.d.ts +3 -0
  221. package/dist/design/background/primitives/gradient.d.ts.map +1 -0
  222. package/dist/design/background/primitives/gradient.js +68 -0
  223. package/dist/design/background/primitives/gradient.js.map +1 -0
  224. package/dist/design/background/primitives/image.d.ts +3 -0
  225. package/dist/design/background/primitives/image.d.ts.map +1 -0
  226. package/dist/design/background/primitives/image.js +12 -0
  227. package/dist/design/background/primitives/image.js.map +1 -0
  228. package/dist/design/background/primitives/index.d.ts +4 -0
  229. package/dist/design/background/primitives/index.d.ts.map +1 -0
  230. package/dist/design/background/primitives/index.js +4 -0
  231. package/dist/design/background/primitives/index.js.map +1 -0
  232. package/dist/design/background/primitives/solid.d.ts +8 -0
  233. package/dist/design/background/primitives/solid.d.ts.map +1 -0
  234. package/dist/design/background/primitives/solid.js +15 -0
  235. package/dist/design/background/primitives/solid.js.map +1 -0
  236. package/dist/design/background/resolver.d.ts +3 -0
  237. package/dist/design/background/resolver.d.ts.map +1 -0
  238. package/dist/design/background/resolver.js +20 -0
  239. package/dist/design/background/resolver.js.map +1 -0
  240. package/dist/design/background/sanitizer.d.ts +2 -0
  241. package/dist/design/background/sanitizer.d.ts.map +1 -0
  242. package/dist/design/background/sanitizer.js +54 -0
  243. package/dist/design/background/sanitizer.js.map +1 -0
  244. package/dist/design/deep-tokens.d.ts +125 -0
  245. package/dist/design/deep-tokens.d.ts.map +1 -0
  246. package/dist/design/deep-tokens.js +115 -0
  247. package/dist/design/deep-tokens.js.map +1 -0
  248. package/dist/design/dna.d.ts +7 -0
  249. package/dist/design/dna.d.ts.map +1 -0
  250. package/dist/design/dna.js +210 -0
  251. package/dist/design/dna.js.map +1 -0
  252. package/dist/design/identity/color.d.ts +8 -0
  253. package/dist/design/identity/color.d.ts.map +1 -0
  254. package/dist/design/identity/color.js +64 -0
  255. package/dist/design/identity/color.js.map +1 -0
  256. package/dist/design/identity/elevation.d.ts +8 -0
  257. package/dist/design/identity/elevation.d.ts.map +1 -0
  258. package/dist/design/identity/elevation.js +31 -0
  259. package/dist/design/identity/elevation.js.map +1 -0
  260. package/dist/design/identity/index.d.ts +12 -0
  261. package/dist/design/identity/index.d.ts.map +1 -0
  262. package/dist/design/identity/index.js +14 -0
  263. package/dist/design/identity/index.js.map +1 -0
  264. package/dist/design/identity/shape.d.ts +4 -0
  265. package/dist/design/identity/shape.d.ts.map +1 -0
  266. package/dist/design/identity/shape.js +23 -0
  267. package/dist/design/identity/shape.js.map +1 -0
  268. package/dist/design/identity/surface.d.ts +18 -0
  269. package/dist/design/identity/surface.d.ts.map +1 -0
  270. package/dist/design/identity/surface.js +125 -0
  271. package/dist/design/identity/surface.js.map +1 -0
  272. package/dist/design/identity/types.d.ts +280 -0
  273. package/dist/design/identity/types.d.ts.map +1 -0
  274. package/dist/design/identity/types.js +21 -0
  275. package/dist/design/identity/types.js.map +1 -0
  276. package/dist/design/identity/typography.d.ts +7 -0
  277. package/dist/design/identity/typography.d.ts.map +1 -0
  278. package/dist/design/identity/typography.js +42 -0
  279. package/dist/design/identity/typography.js.map +1 -0
  280. package/dist/design/identity-resolver.d.ts +15 -0
  281. package/dist/design/identity-resolver.d.ts.map +1 -0
  282. package/dist/design/identity-resolver.js +52 -0
  283. package/dist/design/identity-resolver.js.map +1 -0
  284. package/dist/design/oklch.d.ts +10 -0
  285. package/dist/design/oklch.d.ts.map +1 -0
  286. package/dist/design/oklch.js +61 -0
  287. package/dist/design/oklch.js.map +1 -0
  288. package/dist/design/palette.d.ts +26 -0
  289. package/dist/design/palette.d.ts.map +1 -0
  290. package/dist/design/palette.js +73 -0
  291. package/dist/design/palette.js.map +1 -0
  292. package/dist/design/presets.d.ts +18 -0
  293. package/dist/design/presets.d.ts.map +1 -0
  294. package/dist/design/presets.js +2 -0
  295. package/dist/design/presets.js.map +1 -0
  296. package/dist/design/recipes/animations.d.ts +11 -0
  297. package/dist/design/recipes/animations.d.ts.map +1 -0
  298. package/dist/design/recipes/animations.js +180 -0
  299. package/dist/design/recipes/animations.js.map +1 -0
  300. package/dist/design/recipes/backgrounds.d.ts +3 -0
  301. package/dist/design/recipes/backgrounds.d.ts.map +1 -0
  302. package/dist/design/recipes/backgrounds.js +152 -0
  303. package/dist/design/recipes/backgrounds.js.map +1 -0
  304. package/dist/design/recipes/index.d.ts +2 -0
  305. package/dist/design/recipes/index.d.ts.map +1 -0
  306. package/dist/design/recipes/index.js +2 -0
  307. package/dist/design/recipes/index.js.map +1 -0
  308. package/dist/design/surface-to-css.d.ts +57 -0
  309. package/dist/design/surface-to-css.d.ts.map +1 -0
  310. package/dist/design/surface-to-css.js +130 -0
  311. package/dist/design/surface-to-css.js.map +1 -0
  312. package/dist/design/surface-to-rn.d.ts +57 -0
  313. package/dist/design/surface-to-rn.d.ts.map +1 -0
  314. package/dist/design/surface-to-rn.js +133 -0
  315. package/dist/design/surface-to-rn.js.map +1 -0
  316. package/dist/design/tokens.d.ts +67 -0
  317. package/dist/design/tokens.d.ts.map +1 -0
  318. package/dist/design/tokens.js +36 -0
  319. package/dist/design/tokens.js.map +1 -0
  320. package/dist/device/context.d.ts +13 -0
  321. package/dist/device/context.d.ts.map +1 -0
  322. package/dist/device/context.js +2 -0
  323. package/dist/device/context.js.map +1 -0
  324. package/dist/editor-session/clone.d.ts +4 -0
  325. package/dist/editor-session/clone.d.ts.map +1 -0
  326. package/dist/editor-session/clone.js +55 -0
  327. package/dist/editor-session/clone.js.map +1 -0
  328. package/dist/editor-session/engine.d.ts +21 -0
  329. package/dist/editor-session/engine.d.ts.map +1 -0
  330. package/dist/editor-session/engine.js +375 -0
  331. package/dist/editor-session/engine.js.map +1 -0
  332. package/dist/editor-session/persistence.d.ts +8 -0
  333. package/dist/editor-session/persistence.d.ts.map +1 -0
  334. package/dist/editor-session/persistence.js +89 -0
  335. package/dist/editor-session/persistence.js.map +1 -0
  336. package/dist/editor-session/types.d.ts +90 -0
  337. package/dist/editor-session/types.d.ts.map +1 -0
  338. package/dist/editor-session/types.js +2 -0
  339. package/dist/editor-session/types.js.map +1 -0
  340. package/dist/editor-session/validators.d.ts +5 -0
  341. package/dist/editor-session/validators.d.ts.map +1 -0
  342. package/dist/editor-session/validators.js +106 -0
  343. package/dist/editor-session/validators.js.map +1 -0
  344. package/dist/elements/composer.d.ts +109 -0
  345. package/dist/elements/composer.d.ts.map +1 -0
  346. package/dist/elements/composer.js +129 -0
  347. package/dist/elements/composer.js.map +1 -0
  348. package/dist/export/csv.d.ts +3 -0
  349. package/dist/export/csv.d.ts.map +1 -0
  350. package/dist/export/csv.js +16 -0
  351. package/dist/export/csv.js.map +1 -0
  352. package/dist/export/download.d.ts +2 -0
  353. package/dist/export/download.d.ts.map +1 -0
  354. package/dist/export/download.js +13 -0
  355. package/dist/export/download.js.map +1 -0
  356. package/dist/export/format.d.ts +3 -0
  357. package/dist/export/format.d.ts.map +1 -0
  358. package/dist/export/format.js +43 -0
  359. package/dist/export/format.js.map +1 -0
  360. package/dist/export/types.d.ts +22 -0
  361. package/dist/export/types.d.ts.map +1 -0
  362. package/dist/export/types.js +2 -0
  363. package/dist/export/types.js.map +1 -0
  364. package/dist/expressions/deep-resolve.d.ts +4 -0
  365. package/dist/expressions/deep-resolve.d.ts.map +1 -0
  366. package/dist/expressions/deep-resolve.js +20 -0
  367. package/dist/expressions/deep-resolve.js.map +1 -0
  368. package/dist/expressions/handlers/array.d.ts +19 -0
  369. package/dist/expressions/handlers/array.d.ts.map +1 -0
  370. package/dist/expressions/handlers/array.js +161 -0
  371. package/dist/expressions/handlers/array.js.map +1 -0
  372. package/dist/expressions/handlers/auth.d.ts +13 -0
  373. package/dist/expressions/handlers/auth.d.ts.map +1 -0
  374. package/dist/expressions/handlers/auth.js +90 -0
  375. package/dist/expressions/handlers/auth.js.map +1 -0
  376. package/dist/expressions/handlers/bind.d.ts +22 -0
  377. package/dist/expressions/handlers/bind.d.ts.map +1 -0
  378. package/dist/expressions/handlers/bind.js +57 -0
  379. package/dist/expressions/handlers/bind.js.map +1 -0
  380. package/dist/expressions/handlers/breakpoint.d.ts +10 -0
  381. package/dist/expressions/handlers/breakpoint.d.ts.map +1 -0
  382. package/dist/expressions/handlers/breakpoint.js +39 -0
  383. package/dist/expressions/handlers/breakpoint.js.map +1 -0
  384. package/dist/expressions/handlers/computed.d.ts +3 -0
  385. package/dist/expressions/handlers/computed.d.ts.map +1 -0
  386. package/dist/expressions/handlers/computed.js +20 -0
  387. package/dist/expressions/handlers/computed.js.map +1 -0
  388. package/dist/expressions/handlers/cond.d.ts +3 -0
  389. package/dist/expressions/handlers/cond.d.ts.map +1 -0
  390. package/dist/expressions/handlers/cond.js +57 -0
  391. package/dist/expressions/handlers/cond.js.map +1 -0
  392. package/dist/expressions/handlers/date.d.ts +14 -0
  393. package/dist/expressions/handlers/date.d.ts.map +1 -0
  394. package/dist/expressions/handlers/date.js +95 -0
  395. package/dist/expressions/handlers/date.js.map +1 -0
  396. package/dist/expressions/handlers/format.d.ts +19 -0
  397. package/dist/expressions/handlers/format.d.ts.map +1 -0
  398. package/dist/expressions/handlers/format.js +93 -0
  399. package/dist/expressions/handlers/format.js.map +1 -0
  400. package/dist/expressions/handlers/group.d.ts +25 -0
  401. package/dist/expressions/handlers/group.d.ts.map +1 -0
  402. package/dist/expressions/handlers/group.js +85 -0
  403. package/dist/expressions/handlers/group.js.map +1 -0
  404. package/dist/expressions/handlers/i18n.d.ts +8 -0
  405. package/dist/expressions/handlers/i18n.d.ts.map +1 -0
  406. package/dist/expressions/handlers/i18n.js +35 -0
  407. package/dist/expressions/handlers/i18n.js.map +1 -0
  408. package/dist/expressions/handlers/index.d.ts +4 -0
  409. package/dist/expressions/handlers/index.d.ts.map +1 -0
  410. package/dist/expressions/handlers/index.js +52 -0
  411. package/dist/expressions/handlers/index.js.map +1 -0
  412. package/dist/expressions/handlers/let.d.ts +4 -0
  413. package/dist/expressions/handlers/let.d.ts.map +1 -0
  414. package/dist/expressions/handlers/let.js +36 -0
  415. package/dist/expressions/handlers/let.js.map +1 -0
  416. package/dist/expressions/handlers/logic.d.ts +27 -0
  417. package/dist/expressions/handlers/logic.d.ts.map +1 -0
  418. package/dist/expressions/handlers/logic.js +52 -0
  419. package/dist/expressions/handlers/logic.js.map +1 -0
  420. package/dist/expressions/handlers/math.d.ts +13 -0
  421. package/dist/expressions/handlers/math.d.ts.map +1 -0
  422. package/dist/expressions/handlers/math.js +58 -0
  423. package/dist/expressions/handlers/math.js.map +1 -0
  424. package/dist/expressions/handlers/platform.d.ts +13 -0
  425. package/dist/expressions/handlers/platform.d.ts.map +1 -0
  426. package/dist/expressions/handlers/platform.js +37 -0
  427. package/dist/expressions/handlers/platform.js.map +1 -0
  428. package/dist/expressions/handlers/prop.d.ts +10 -0
  429. package/dist/expressions/handlers/prop.d.ts.map +1 -0
  430. package/dist/expressions/handlers/prop.js +18 -0
  431. package/dist/expressions/handlers/prop.js.map +1 -0
  432. package/dist/expressions/handlers/selection.d.ts +10 -0
  433. package/dist/expressions/handlers/selection.d.ts.map +1 -0
  434. package/dist/expressions/handlers/selection.js +33 -0
  435. package/dist/expressions/handlers/selection.js.map +1 -0
  436. package/dist/expressions/handlers/state.d.ts +3 -0
  437. package/dist/expressions/handlers/state.d.ts.map +1 -0
  438. package/dist/expressions/handlers/state.js +8 -0
  439. package/dist/expressions/handlers/state.js.map +1 -0
  440. package/dist/expressions/handlers/switch.d.ts +15 -0
  441. package/dist/expressions/handlers/switch.d.ts.map +1 -0
  442. package/dist/expressions/handlers/switch.js +31 -0
  443. package/dist/expressions/handlers/switch.js.map +1 -0
  444. package/dist/expressions/handlers/template.d.ts +3 -0
  445. package/dist/expressions/handlers/template.d.ts.map +1 -0
  446. package/dist/expressions/handlers/template.js +23 -0
  447. package/dist/expressions/handlers/template.js.map +1 -0
  448. package/dist/expressions/handlers/token.d.ts +3 -0
  449. package/dist/expressions/handlers/token.d.ts.map +1 -0
  450. package/dist/expressions/handlers/token.js +40 -0
  451. package/dist/expressions/handlers/token.js.map +1 -0
  452. package/dist/expressions/handlers/unique-id.d.ts +11 -0
  453. package/dist/expressions/handlers/unique-id.d.ts.map +1 -0
  454. package/dist/expressions/handlers/unique-id.js +52 -0
  455. package/dist/expressions/handlers/unique-id.js.map +1 -0
  456. package/dist/expressions/registry.d.ts +8 -0
  457. package/dist/expressions/registry.d.ts.map +1 -0
  458. package/dist/expressions/registry.js +35 -0
  459. package/dist/expressions/registry.js.map +1 -0
  460. package/dist/expressions/resolver.d.ts +15 -0
  461. package/dist/expressions/resolver.d.ts.map +1 -0
  462. package/dist/expressions/resolver.js +56 -0
  463. package/dist/expressions/resolver.js.map +1 -0
  464. package/dist/factory.d.ts +56 -0
  465. package/dist/factory.d.ts.map +1 -0
  466. package/dist/factory.js +265 -0
  467. package/dist/factory.js.map +1 -0
  468. package/dist/fetch/framework-fetch.d.ts +12 -0
  469. package/dist/fetch/framework-fetch.d.ts.map +1 -0
  470. package/dist/fetch/framework-fetch.js +36 -0
  471. package/dist/fetch/framework-fetch.js.map +1 -0
  472. package/dist/fetch/interceptors/auth.d.ts +19 -0
  473. package/dist/fetch/interceptors/auth.d.ts.map +1 -0
  474. package/dist/fetch/interceptors/auth.js +66 -0
  475. package/dist/fetch/interceptors/auth.js.map +1 -0
  476. package/dist/fetch/interceptors/logging.d.ts +8 -0
  477. package/dist/fetch/interceptors/logging.d.ts.map +1 -0
  478. package/dist/fetch/interceptors/logging.js +40 -0
  479. package/dist/fetch/interceptors/logging.js.map +1 -0
  480. package/dist/fetch/interceptors/retry.d.ts +20 -0
  481. package/dist/fetch/interceptors/retry.d.ts.map +1 -0
  482. package/dist/fetch/interceptors/retry.js +34 -0
  483. package/dist/fetch/interceptors/retry.js.map +1 -0
  484. package/dist/fetch/interceptors/timeout.d.ts +7 -0
  485. package/dist/fetch/interceptors/timeout.d.ts.map +1 -0
  486. package/dist/fetch/interceptors/timeout.js +20 -0
  487. package/dist/fetch/interceptors/timeout.js.map +1 -0
  488. package/dist/fetch/types.d.ts +30 -0
  489. package/dist/fetch/types.d.ts.map +1 -0
  490. package/dist/fetch/types.js +2 -0
  491. package/dist/fetch/types.js.map +1 -0
  492. package/dist/forms/engine.d.ts +3 -0
  493. package/dist/forms/engine.d.ts.map +1 -0
  494. package/dist/forms/engine.js +167 -0
  495. package/dist/forms/engine.js.map +1 -0
  496. package/dist/forms/types.d.ts +30 -0
  497. package/dist/forms/types.d.ts.map +1 -0
  498. package/dist/forms/types.js +2 -0
  499. package/dist/forms/types.js.map +1 -0
  500. package/dist/i18n/engine.d.ts +15 -0
  501. package/dist/i18n/engine.d.ts.map +1 -0
  502. package/dist/i18n/engine.js +61 -0
  503. package/dist/i18n/engine.js.map +1 -0
  504. package/dist/index.d.ts +161 -0
  505. package/dist/index.d.ts.map +1 -0
  506. package/dist/index.js +106 -0
  507. package/dist/index.js.map +1 -0
  508. package/dist/interactions/data-operations.d.ts +51 -0
  509. package/dist/interactions/data-operations.d.ts.map +1 -0
  510. package/dist/interactions/data-operations.js +64 -0
  511. package/dist/interactions/data-operations.js.map +1 -0
  512. package/dist/interactions/drag-drop.d.ts +14 -0
  513. package/dist/interactions/drag-drop.d.ts.map +1 -0
  514. package/dist/interactions/drag-drop.js +35 -0
  515. package/dist/interactions/drag-drop.js.map +1 -0
  516. package/dist/interactions/export.d.ts +24 -0
  517. package/dist/interactions/export.d.ts.map +1 -0
  518. package/dist/interactions/export.js +44 -0
  519. package/dist/interactions/export.js.map +1 -0
  520. package/dist/interactions/history.d.ts +16 -0
  521. package/dist/interactions/history.d.ts.map +1 -0
  522. package/dist/interactions/history.js +52 -0
  523. package/dist/interactions/history.js.map +1 -0
  524. package/dist/motion/engine.d.ts +47 -0
  525. package/dist/motion/engine.d.ts.map +1 -0
  526. package/dist/motion/engine.js +81 -0
  527. package/dist/motion/engine.js.map +1 -0
  528. package/dist/navigation/router.d.ts +36 -0
  529. package/dist/navigation/router.d.ts.map +1 -0
  530. package/dist/navigation/router.js +51 -0
  531. package/dist/navigation/router.js.map +1 -0
  532. package/dist/permissions/evaluator.d.ts +15 -0
  533. package/dist/permissions/evaluator.d.ts.map +1 -0
  534. package/dist/permissions/evaluator.js +32 -0
  535. package/dist/permissions/evaluator.js.map +1 -0
  536. package/dist/plugins/loader.d.ts +30 -0
  537. package/dist/plugins/loader.d.ts.map +1 -0
  538. package/dist/plugins/loader.js +87 -0
  539. package/dist/plugins/loader.js.map +1 -0
  540. package/dist/reference/generator.d.ts +25 -0
  541. package/dist/reference/generator.d.ts.map +1 -0
  542. package/dist/reference/generator.js +808 -0
  543. package/dist/reference/generator.js.map +1 -0
  544. package/dist/renderer/deps.d.ts +24 -0
  545. package/dist/renderer/deps.d.ts.map +1 -0
  546. package/dist/renderer/deps.js +150 -0
  547. package/dist/renderer/deps.js.map +1 -0
  548. package/dist/renderer/engine.d.ts +15 -0
  549. package/dist/renderer/engine.d.ts.map +1 -0
  550. package/dist/renderer/engine.js +1097 -0
  551. package/dist/renderer/engine.js.map +1 -0
  552. package/dist/renderer/lazy-paths.d.ts +14 -0
  553. package/dist/renderer/lazy-paths.d.ts.map +1 -0
  554. package/dist/renderer/lazy-paths.js +63 -0
  555. package/dist/renderer/lazy-paths.js.map +1 -0
  556. package/dist/renderer/prop-schemas.d.ts +17 -0
  557. package/dist/renderer/prop-schemas.d.ts.map +1 -0
  558. package/dist/renderer/prop-schemas.js +81 -0
  559. package/dist/renderer/prop-schemas.js.map +1 -0
  560. package/dist/renderer/registry.d.ts +10 -0
  561. package/dist/renderer/registry.d.ts.map +1 -0
  562. package/dist/renderer/registry.js +22 -0
  563. package/dist/renderer/registry.js.map +1 -0
  564. package/dist/renderer/variants.d.ts +54 -0
  565. package/dist/renderer/variants.d.ts.map +1 -0
  566. package/dist/renderer/variants.js +105 -0
  567. package/dist/renderer/variants.js.map +1 -0
  568. package/dist/runtime/mount-spec-runtime.d.ts +59 -0
  569. package/dist/runtime/mount-spec-runtime.d.ts.map +1 -0
  570. package/dist/runtime/mount-spec-runtime.js +73 -0
  571. package/dist/runtime/mount-spec-runtime.js.map +1 -0
  572. package/dist/security/api-spec-validator.d.ts +13 -0
  573. package/dist/security/api-spec-validator.d.ts.map +1 -0
  574. package/dist/security/api-spec-validator.js +347 -0
  575. package/dist/security/api-spec-validator.js.map +1 -0
  576. package/dist/security/app-spec-validator.d.ts +4 -0
  577. package/dist/security/app-spec-validator.d.ts.map +1 -0
  578. package/dist/security/app-spec-validator.js +200 -0
  579. package/dist/security/app-spec-validator.js.map +1 -0
  580. package/dist/security/identifier-guard.d.ts +3 -0
  581. package/dist/security/identifier-guard.d.ts.map +1 -0
  582. package/dist/security/identifier-guard.js +15 -0
  583. package/dist/security/identifier-guard.js.map +1 -0
  584. package/dist/security/identity-token-validator.d.ts +3 -0
  585. package/dist/security/identity-token-validator.d.ts.map +1 -0
  586. package/dist/security/identity-token-validator.js +121 -0
  587. package/dist/security/identity-token-validator.js.map +1 -0
  588. package/dist/security/index.d.ts +14 -0
  589. package/dist/security/index.d.ts.map +1 -0
  590. package/dist/security/index.js +8 -0
  591. package/dist/security/index.js.map +1 -0
  592. package/dist/security/protection-registry.d.ts +24 -0
  593. package/dist/security/protection-registry.d.ts.map +1 -0
  594. package/dist/security/protection-registry.js +35 -0
  595. package/dist/security/protection-registry.js.map +1 -0
  596. package/dist/security/rate-limiter.d.ts +23 -0
  597. package/dist/security/rate-limiter.d.ts.map +1 -0
  598. package/dist/security/rate-limiter.js +44 -0
  599. package/dist/security/rate-limiter.js.map +1 -0
  600. package/dist/security/spec-signing.d.ts +23 -0
  601. package/dist/security/spec-signing.d.ts.map +1 -0
  602. package/dist/security/spec-signing.js +62 -0
  603. package/dist/security/spec-signing.js.map +1 -0
  604. package/dist/security/spec-validator.d.ts +60 -0
  605. package/dist/security/spec-validator.d.ts.map +1 -0
  606. package/dist/security/spec-validator.js +903 -0
  607. package/dist/security/spec-validator.js.map +1 -0
  608. package/dist/security/state-protection.d.ts +23 -0
  609. package/dist/security/state-protection.d.ts.map +1 -0
  610. package/dist/security/state-protection.js +49 -0
  611. package/dist/security/state-protection.js.map +1 -0
  612. package/dist/security/url-whitelist.d.ts +14 -0
  613. package/dist/security/url-whitelist.d.ts.map +1 -0
  614. package/dist/security/url-whitelist.js +37 -0
  615. package/dist/security/url-whitelist.js.map +1 -0
  616. package/dist/server.d.ts +6 -0
  617. package/dist/server.d.ts.map +1 -0
  618. package/dist/server.js +8 -0
  619. package/dist/server.js.map +1 -0
  620. package/dist/spec-engine/app-elements.d.ts +5 -0
  621. package/dist/spec-engine/app-elements.d.ts.map +1 -0
  622. package/dist/spec-engine/app-elements.js +36 -0
  623. package/dist/spec-engine/app-elements.js.map +1 -0
  624. package/dist/spec-engine/app-manifest.d.ts +3 -0
  625. package/dist/spec-engine/app-manifest.d.ts.map +1 -0
  626. package/dist/spec-engine/app-manifest.js +132 -0
  627. package/dist/spec-engine/app-manifest.js.map +1 -0
  628. package/dist/spec-engine/elements.d.ts +8 -0
  629. package/dist/spec-engine/elements.d.ts.map +1 -0
  630. package/dist/spec-engine/elements.js +18 -0
  631. package/dist/spec-engine/elements.js.map +1 -0
  632. package/dist/spec-engine/engine.d.ts +3 -0
  633. package/dist/spec-engine/engine.d.ts.map +1 -0
  634. package/dist/spec-engine/engine.js +76 -0
  635. package/dist/spec-engine/engine.js.map +1 -0
  636. package/dist/spec-engine/handlers/api-handler.d.ts +5 -0
  637. package/dist/spec-engine/handlers/api-handler.d.ts.map +1 -0
  638. package/dist/spec-engine/handlers/api-handler.js +111 -0
  639. package/dist/spec-engine/handlers/api-handler.js.map +1 -0
  640. package/dist/spec-engine/handlers/app-handler.d.ts +4 -0
  641. package/dist/spec-engine/handlers/app-handler.d.ts.map +1 -0
  642. package/dist/spec-engine/handlers/app-handler.js +41 -0
  643. package/dist/spec-engine/handlers/app-handler.js.map +1 -0
  644. package/dist/spec-engine/handlers/index.d.ts +8 -0
  645. package/dist/spec-engine/handlers/index.d.ts.map +1 -0
  646. package/dist/spec-engine/handlers/index.js +17 -0
  647. package/dist/spec-engine/handlers/index.js.map +1 -0
  648. package/dist/spec-engine/handlers/screen-handler.d.ts +4 -0
  649. package/dist/spec-engine/handlers/screen-handler.d.ts.map +1 -0
  650. package/dist/spec-engine/handlers/screen-handler.js +34 -0
  651. package/dist/spec-engine/handlers/screen-handler.js.map +1 -0
  652. package/dist/spec-engine/manifest.d.ts +11 -0
  653. package/dist/spec-engine/manifest.d.ts.map +1 -0
  654. package/dist/spec-engine/manifest.js +76 -0
  655. package/dist/spec-engine/manifest.js.map +1 -0
  656. package/dist/spec-engine/types.d.ts +61 -0
  657. package/dist/spec-engine/types.d.ts.map +1 -0
  658. package/dist/spec-engine/types.js +2 -0
  659. package/dist/spec-engine/types.js.map +1 -0
  660. package/dist/spec-stores/file.d.ts +12 -0
  661. package/dist/spec-stores/file.d.ts.map +1 -0
  662. package/dist/spec-stores/file.js +32 -0
  663. package/dist/spec-stores/file.js.map +1 -0
  664. package/dist/spec-stores/memory-versioned.d.ts +22 -0
  665. package/dist/spec-stores/memory-versioned.d.ts.map +1 -0
  666. package/dist/spec-stores/memory-versioned.js +125 -0
  667. package/dist/spec-stores/memory-versioned.js.map +1 -0
  668. package/dist/spec-stores/memory.d.ts +10 -0
  669. package/dist/spec-stores/memory.d.ts.map +1 -0
  670. package/dist/spec-stores/memory.js +31 -0
  671. package/dist/spec-stores/memory.js.map +1 -0
  672. package/dist/spec-stores/sqlserver-versioned.d.ts +44 -0
  673. package/dist/spec-stores/sqlserver-versioned.d.ts.map +1 -0
  674. package/dist/spec-stores/sqlserver-versioned.js +253 -0
  675. package/dist/spec-stores/sqlserver-versioned.js.map +1 -0
  676. package/dist/spec-stores/sqlserver.d.ts +27 -0
  677. package/dist/spec-stores/sqlserver.d.ts.map +1 -0
  678. package/dist/spec-stores/sqlserver.js +78 -0
  679. package/dist/spec-stores/sqlserver.js.map +1 -0
  680. package/dist/spec-stores/supabase-versioned.d.ts +38 -0
  681. package/dist/spec-stores/supabase-versioned.d.ts.map +1 -0
  682. package/dist/spec-stores/supabase-versioned.js +197 -0
  683. package/dist/spec-stores/supabase-versioned.js.map +1 -0
  684. package/dist/spec-stores/supabase.d.ts +18 -0
  685. package/dist/spec-stores/supabase.d.ts.map +1 -0
  686. package/dist/spec-stores/supabase.js +68 -0
  687. package/dist/spec-stores/supabase.js.map +1 -0
  688. package/dist/state/reserved-paths.d.ts +41 -0
  689. package/dist/state/reserved-paths.d.ts.map +1 -0
  690. package/dist/state/reserved-paths.js +40 -0
  691. package/dist/state/reserved-paths.js.map +1 -0
  692. package/dist/state/store.d.ts +18 -0
  693. package/dist/state/store.d.ts.map +1 -0
  694. package/dist/state/store.js +114 -0
  695. package/dist/state/store.js.map +1 -0
  696. package/dist/storage/supabase.d.ts +37 -0
  697. package/dist/storage/supabase.d.ts.map +1 -0
  698. package/dist/storage/supabase.js +22 -0
  699. package/dist/storage/supabase.js.map +1 -0
  700. package/dist/storage/types.d.ts +22 -0
  701. package/dist/storage/types.d.ts.map +1 -0
  702. package/dist/storage/types.js +2 -0
  703. package/dist/storage/types.js.map +1 -0
  704. package/dist/storage/upload-action.d.ts +22 -0
  705. package/dist/storage/upload-action.d.ts.map +1 -0
  706. package/dist/storage/upload-action.js +117 -0
  707. package/dist/storage/upload-action.js.map +1 -0
  708. package/dist/storage/url.d.ts +17 -0
  709. package/dist/storage/url.d.ts.map +1 -0
  710. package/dist/storage/url.js +48 -0
  711. package/dist/storage/url.js.map +1 -0
  712. package/dist/streaming/compiler.d.ts +26 -0
  713. package/dist/streaming/compiler.d.ts.map +1 -0
  714. package/dist/streaming/compiler.js +54 -0
  715. package/dist/streaming/compiler.js.map +1 -0
  716. package/dist/streaming/patch.d.ts +19 -0
  717. package/dist/streaming/patch.d.ts.map +1 -0
  718. package/dist/streaming/patch.js +139 -0
  719. package/dist/streaming/patch.js.map +1 -0
  720. package/dist/types.d.ts +443 -0
  721. package/dist/types.d.ts.map +1 -0
  722. package/dist/types.js +8 -0
  723. package/dist/types.js.map +1 -0
  724. package/dist/util/to-array.d.ts +2 -0
  725. package/dist/util/to-array.d.ts.map +1 -0
  726. package/dist/util/to-array.js +14 -0
  727. package/dist/util/to-array.js.map +1 -0
  728. package/dist/utils/levenshtein.d.ts +3 -0
  729. package/dist/utils/levenshtein.d.ts.map +1 -0
  730. package/dist/utils/levenshtein.js +29 -0
  731. package/dist/utils/levenshtein.js.map +1 -0
  732. package/dist/validation/validators.d.ts +20 -0
  733. package/dist/validation/validators.d.ts.map +1 -0
  734. package/dist/validation/validators.js +138 -0
  735. package/dist/validation/validators.js.map +1 -0
  736. package/dist/versioning/compute-patches.d.ts +7 -0
  737. package/dist/versioning/compute-patches.d.ts.map +1 -0
  738. package/dist/versioning/compute-patches.js +62 -0
  739. package/dist/versioning/compute-patches.js.map +1 -0
  740. package/dist/versioning/index.d.ts +12 -0
  741. package/dist/versioning/index.d.ts.map +1 -0
  742. package/dist/versioning/index.js +7 -0
  743. package/dist/versioning/index.js.map +1 -0
  744. package/dist/versioning/promote-gate.d.ts +12 -0
  745. package/dist/versioning/promote-gate.d.ts.map +1 -0
  746. package/dist/versioning/promote-gate.js +166 -0
  747. package/dist/versioning/promote-gate.js.map +1 -0
  748. package/dist/versioning/rollback.d.ts +26 -0
  749. package/dist/versioning/rollback.d.ts.map +1 -0
  750. package/dist/versioning/rollback.js +67 -0
  751. package/dist/versioning/rollback.js.map +1 -0
  752. package/dist/versioning/structural-diff.d.ts +8 -0
  753. package/dist/versioning/structural-diff.d.ts.map +1 -0
  754. package/dist/versioning/structural-diff.js +287 -0
  755. package/dist/versioning/structural-diff.js.map +1 -0
  756. package/dist/versioning/types.d.ts +90 -0
  757. package/dist/versioning/types.d.ts.map +1 -0
  758. package/dist/versioning/types.js +2 -0
  759. package/dist/versioning/types.js.map +1 -0
  760. package/dist/visibility/evaluator.d.ts +12 -0
  761. package/dist/visibility/evaluator.d.ts.map +1 -0
  762. package/dist/visibility/evaluator.js +76 -0
  763. package/dist/visibility/evaluator.js.map +1 -0
  764. package/dist/watchers/engine.d.ts +19 -0
  765. package/dist/watchers/engine.d.ts.map +1 -0
  766. package/dist/watchers/engine.js +24 -0
  767. package/dist/watchers/engine.js.map +1 -0
  768. package/docs/consumer/README.md +44 -0
  769. package/docs/consumer/WHERE-TO-LOOK.md +94 -0
  770. package/docs/consumer/ai-context-api.md +195 -0
  771. package/docs/consumer/ai-context-custom-elements.md +249 -0
  772. package/docs/consumer/ai-context-patterns.md +254 -0
  773. package/docs/consumer/ai-context-primitives.md +839 -0
  774. package/docs/consumer/ai-context-runtime-semantics.md +1075 -0
  775. package/docs/consumer/ai-context.md +1374 -0
  776. package/docs/consumer/reference-doc.md +3201 -0
  777. package/docs/llms.txt +17 -0
  778. package/docs/wiki/compiled/README.md +33 -0
  779. package/docs/wiki/compiled/_gaps.md +52 -0
  780. package/docs/wiki/compiled/_index.md +354 -0
  781. package/docs/wiki/compiled/_inventory.md +2986 -0
  782. package/docs/wiki/compiled/_lint.md +66 -0
  783. package/docs/wiki/compiled/_unmapped.md +3 -0
  784. package/docs/wiki/compiled/action-apply-preset.md +63 -0
  785. package/docs/wiki/compiled/action-copy-clipboard.md +45 -0
  786. package/docs/wiki/compiled/action-drawer.md +50 -0
  787. package/docs/wiki/compiled/action-export.md +66 -0
  788. package/docs/wiki/compiled/action-fetch.md +87 -0
  789. package/docs/wiki/compiled/action-form-control.md +55 -0
  790. package/docs/wiki/compiled/action-login.md +71 -0
  791. package/docs/wiki/compiled/action-modal.md +61 -0
  792. package/docs/wiki/compiled/action-navigate.md +72 -0
  793. package/docs/wiki/compiled/action-open-url.md +38 -0
  794. package/docs/wiki/compiled/action-refresh-data-source.md +51 -0
  795. package/docs/wiki/compiled/action-selection.md +55 -0
  796. package/docs/wiki/compiled/action-set-locale.md +44 -0
  797. package/docs/wiki/compiled/action-set-state.md +61 -0
  798. package/docs/wiki/compiled/action-show-notification.md +65 -0
  799. package/docs/wiki/compiled/action-submit-form.md +69 -0
  800. package/docs/wiki/compiled/action-toggle-theme.md +50 -0
  801. package/docs/wiki/compiled/action-update-tokens.md +63 -0
  802. package/docs/wiki/compiled/action-upload-file.md +87 -0
  803. package/docs/wiki/compiled/antipattern-action-chain-no-stop.md +49 -0
  804. package/docs/wiki/compiled/antipattern-all-filter-wildcard.md +59 -0
  805. package/docs/wiki/compiled/antipattern-auth-domains-port.md +47 -0
  806. package/docs/wiki/compiled/antipattern-background-blobs-prop.md +62 -0
  807. package/docs/wiki/compiled/antipattern-background-css-token.md +53 -0
  808. package/docs/wiki/compiled/antipattern-checkbox-toggle-value.md +42 -0
  809. package/docs/wiki/compiled/antipattern-crud-id-collision.md +66 -0
  810. package/docs/wiki/compiled/antipattern-derive-server-pagination.md +58 -0
  811. package/docs/wiki/compiled/antipattern-element-variant-top-level.md +57 -0
  812. package/docs/wiki/compiled/antipattern-event-expression.md +55 -0
  813. package/docs/wiki/compiled/antipattern-input-type-name.md +43 -0
  814. package/docs/wiki/compiled/antipattern-mix-fetch-and-datasources.md +48 -0
  815. package/docs/wiki/compiled/antipattern-modal-drawer-visible.md +57 -0
  816. package/docs/wiki/compiled/antipattern-motion-entrance-token.md +53 -0
  817. package/docs/wiki/compiled/antipattern-overflow-hidden-with-shadow.md +50 -0
  818. package/docs/wiki/compiled/antipattern-required-if-equals.md +59 -0
  819. package/docs/wiki/compiled/antipattern-row-literal.md +70 -0
  820. package/docs/wiki/compiled/antipattern-row-template-capture.md +42 -0
  821. package/docs/wiki/compiled/antipattern-store-save-bypass.md +72 -0
  822. package/docs/wiki/compiled/antipattern-style-block-duplication.md +56 -0
  823. package/docs/wiki/compiled/antipattern-submit-form-in-tx-confirm.md +56 -0
  824. package/docs/wiki/compiled/cli-app-spec.md +53 -0
  825. package/docs/wiki/compiled/cli-config.md +46 -0
  826. package/docs/wiki/compiled/cli-contract.md +73 -0
  827. package/docs/wiki/compiled/cli-delete.md +37 -0
  828. package/docs/wiki/compiled/cli-docs.md +44 -0
  829. package/docs/wiki/compiled/cli-elements.md +39 -0
  830. package/docs/wiki/compiled/cli-existing-spec-edit-loop.md +24 -0
  831. package/docs/wiki/compiled/cli-history.md +38 -0
  832. package/docs/wiki/compiled/cli-lint.md +77 -0
  833. package/docs/wiki/compiled/cli-manifest.md +43 -0
  834. package/docs/wiki/compiled/cli-overview.md +77 -0
  835. package/docs/wiki/compiled/cli-patch.md +85 -0
  836. package/docs/wiki/compiled/cli-programmatic-api.md +73 -0
  837. package/docs/wiki/compiled/cli-pull.md +39 -0
  838. package/docs/wiki/compiled/cli-push.md +91 -0
  839. package/docs/wiki/compiled/cli-tokens.md +38 -0
  840. package/docs/wiki/compiled/cli-toon.md +44 -0
  841. package/docs/wiki/compiled/cli-validate.md +52 -0
  842. package/docs/wiki/compiled/cli-versioning-author.md +58 -0
  843. package/docs/wiki/compiled/concept-action-chains.md +65 -0
  844. package/docs/wiki/compiled/concept-action-middleware.md +55 -0
  845. package/docs/wiki/compiled/concept-animation-build-css.md +43 -0
  846. package/docs/wiki/compiled/concept-animation-build-rn.md +44 -0
  847. package/docs/wiki/compiled/concept-animation-caps.md +38 -0
  848. package/docs/wiki/compiled/concept-animation-cascade.md +89 -0
  849. package/docs/wiki/compiled/concept-animation-null-semantics.md +55 -0
  850. package/docs/wiki/compiled/concept-animation-recipes.md +67 -0
  851. package/docs/wiki/compiled/concept-animation-triggers.md +54 -0
  852. package/docs/wiki/compiled/concept-animations-engine.md +78 -0
  853. package/docs/wiki/compiled/concept-api-audit.md +67 -0
  854. package/docs/wiki/compiled/concept-api-auth.md +67 -0
  855. package/docs/wiki/compiled/concept-api-catalogs.md +44 -0
  856. package/docs/wiki/compiled/concept-api-crud-endpoint.md +90 -0
  857. package/docs/wiki/compiled/concept-api-endpoint-properties.md +40 -0
  858. package/docs/wiki/compiled/concept-api-endpoints-overview.md +57 -0
  859. package/docs/wiki/compiled/concept-api-handler-endpoint.md +56 -0
  860. package/docs/wiki/compiled/concept-api-login-body-contract.md +47 -0
  861. package/docs/wiki/compiled/concept-api-param-properties.md +44 -0
  862. package/docs/wiki/compiled/concept-api-public-endpoint.md +33 -0
  863. package/docs/wiki/compiled/concept-api-query-endpoint.md +53 -0
  864. package/docs/wiki/compiled/concept-api-scope-filter.md +59 -0
  865. package/docs/wiki/compiled/concept-api-spec.md +70 -0
  866. package/docs/wiki/compiled/concept-app-auto-state-paths.md +59 -0
  867. package/docs/wiki/compiled/concept-app-spec.md +89 -0
  868. package/docs/wiki/compiled/concept-auth-config.md +71 -0
  869. package/docs/wiki/compiled/concept-auth-domains.md +55 -0
  870. package/docs/wiki/compiled/concept-auth-security.md +58 -0
  871. package/docs/wiki/compiled/concept-auth-state-paths.md +48 -0
  872. package/docs/wiki/compiled/concept-auto-dark-mode.md +55 -0
  873. package/docs/wiki/compiled/concept-background-caps.md +42 -0
  874. package/docs/wiki/compiled/concept-background-layer-kinds.md +80 -0
  875. package/docs/wiki/compiled/concept-background-recipes.md +53 -0
  876. package/docs/wiki/compiled/concept-background-stack.md +55 -0
  877. package/docs/wiki/compiled/concept-blob-layer.md +92 -0
  878. package/docs/wiki/compiled/concept-blob-motion.md +58 -0
  879. package/docs/wiki/compiled/concept-blob-shapes-catalog.md +45 -0
  880. package/docs/wiki/compiled/concept-cli-tokens-inspect.md +38 -0
  881. package/docs/wiki/compiled/concept-component-variants.md +89 -0
  882. package/docs/wiki/compiled/concept-cross-tab-sync.md +35 -0
  883. package/docs/wiki/compiled/concept-css-vs-motion.md +46 -0
  884. package/docs/wiki/compiled/concept-custom-detection-pattern.md +49 -0
  885. package/docs/wiki/compiled/concept-custom-element-action-props.md +81 -0
  886. package/docs/wiki/compiled/concept-custom-element-black-box.md +56 -0
  887. package/docs/wiki/compiled/concept-custom-element-cache.md +39 -0
  888. package/docs/wiki/compiled/concept-custom-element-error-boundary.md +33 -0
  889. package/docs/wiki/compiled/concept-custom-element-prop-cascade.md +60 -0
  890. package/docs/wiki/compiled/concept-custom-element-repeat.md +53 -0
  891. package/docs/wiki/compiled/concept-custom-elements.md +71 -0
  892. package/docs/wiki/compiled/concept-custom-jwt-provider.md +63 -0
  893. package/docs/wiki/compiled/concept-customize-action.md +33 -0
  894. package/docs/wiki/compiled/concept-customize-cli-lint-rule.md +30 -0
  895. package/docs/wiki/compiled/concept-customize-expression-handler.md +30 -0
  896. package/docs/wiki/compiled/concept-customize-plugin.md +43 -0
  897. package/docs/wiki/compiled/concept-customize-server-middleware.md +36 -0
  898. package/docs/wiki/compiled/concept-customize-spec-store.md +42 -0
  899. package/docs/wiki/compiled/concept-customize-validator-rule.md +35 -0
  900. package/docs/wiki/compiled/concept-customize-versioned-store.md +37 -0
  901. package/docs/wiki/compiled/concept-data-sources-lifecycle.md +61 -0
  902. package/docs/wiki/compiled/concept-data-sources.md +96 -0
  903. package/docs/wiki/compiled/concept-debugging-runtime-pointers.md +45 -0
  904. package/docs/wiki/compiled/concept-derive-datasources-mount-order.md +72 -0
  905. package/docs/wiki/compiled/concept-derive.md +67 -0
  906. package/docs/wiki/compiled/concept-dna-seeds.md +79 -0
  907. package/docs/wiki/compiled/concept-editor-commit.md +37 -0
  908. package/docs/wiki/compiled/concept-editor-save.md +18 -0
  909. package/docs/wiki/compiled/concept-editor-sessions.md +23 -0
  910. package/docs/wiki/compiled/concept-element-children-slot.md +54 -0
  911. package/docs/wiki/compiled/concept-element-definition.md +60 -0
  912. package/docs/wiki/compiled/concept-element-key.md +56 -0
  913. package/docs/wiki/compiled/concept-element-prop-definition.md +54 -0
  914. package/docs/wiki/compiled/concept-element-properties.md +81 -0
  915. package/docs/wiki/compiled/concept-element-render-node.md +62 -0
  916. package/docs/wiki/compiled/concept-element-variants.md +67 -0
  917. package/docs/wiki/compiled/concept-environment-store.md +46 -0
  918. package/docs/wiki/compiled/concept-export-action.md +56 -0
  919. package/docs/wiki/compiled/concept-expression-contexts.md +56 -0
  920. package/docs/wiki/compiled/concept-expression-timing.md +56 -0
  921. package/docs/wiki/compiled/concept-fetch-interceptors.md +49 -0
  922. package/docs/wiki/compiled/concept-file-upload-overview.md +55 -0
  923. package/docs/wiki/compiled/concept-fire-and-forget.md +45 -0
  924. package/docs/wiki/compiled/concept-font-loading.md +52 -0
  925. package/docs/wiki/compiled/concept-form-state-paths.md +55 -0
  926. package/docs/wiki/compiled/concept-forms.md +89 -0
  927. package/docs/wiki/compiled/concept-identity-accent-application.md +48 -0
  928. package/docs/wiki/compiled/concept-identity-animations.md +48 -0
  929. package/docs/wiki/compiled/concept-identity-border-elevation-override.md +56 -0
  930. package/docs/wiki/compiled/concept-identity-color-scheme.md +74 -0
  931. package/docs/wiki/compiled/concept-identity-color-weight.md +50 -0
  932. package/docs/wiki/compiled/concept-identity-glass-rn.md +46 -0
  933. package/docs/wiki/compiled/concept-identity-gradients.md +56 -0
  934. package/docs/wiki/compiled/concept-identity-heading-color.md +40 -0
  935. package/docs/wiki/compiled/concept-identity-helpers.md +61 -0
  936. package/docs/wiki/compiled/concept-identity-icons.md +46 -0
  937. package/docs/wiki/compiled/concept-identity-images.md +36 -0
  938. package/docs/wiki/compiled/concept-identity-label-style.md +36 -0
  939. package/docs/wiki/compiled/concept-identity-overview.md +72 -0
  940. package/docs/wiki/compiled/concept-identity-radius-pattern.md +39 -0
  941. package/docs/wiki/compiled/concept-identity-surface.md +62 -0
  942. package/docs/wiki/compiled/concept-identity-text-decoration.md +48 -0
  943. package/docs/wiki/compiled/concept-identity-typography-hierarchy.md +40 -0
  944. package/docs/wiki/compiled/concept-initial-actions.md +82 -0
  945. package/docs/wiki/compiled/concept-interactive-states.md +72 -0
  946. package/docs/wiki/compiled/concept-keyframe-snapshot.md +52 -0
  947. package/docs/wiki/compiled/concept-layer-background.md +80 -0
  948. package/docs/wiki/compiled/concept-motion-field.md +77 -0
  949. package/docs/wiki/compiled/concept-mount-spec-runtime.md +47 -0
  950. package/docs/wiki/compiled/concept-mythik-renderer.md +76 -0
  951. package/docs/wiki/compiled/concept-navigation-dirty-guard.md +23 -0
  952. package/docs/wiki/compiled/concept-navigation.md +75 -0
  953. package/docs/wiki/compiled/concept-package-layout.md +35 -0
  954. package/docs/wiki/compiled/concept-path-references.md +53 -0
  955. package/docs/wiki/compiled/concept-pattern-primitives.md +54 -0
  956. package/docs/wiki/compiled/concept-preset-dropdown-pattern.md +52 -0
  957. package/docs/wiki/compiled/concept-presets.md +49 -0
  958. package/docs/wiki/compiled/concept-primitive-prop-schemas.md +53 -0
  959. package/docs/wiki/compiled/concept-primitives-overview.md +49 -0
  960. package/docs/wiki/compiled/concept-promote-gate.md +47 -0
  961. package/docs/wiki/compiled/concept-prop-cascade.md +76 -0
  962. package/docs/wiki/compiled/concept-public-package-names.md +33 -0
  963. package/docs/wiki/compiled/concept-query-envelope.md +55 -0
  964. package/docs/wiki/compiled/concept-reduced-motion.md +38 -0
  965. package/docs/wiki/compiled/concept-register-presets.md +44 -0
  966. package/docs/wiki/compiled/concept-render-error-visibility.md +57 -0
  967. package/docs/wiki/compiled/concept-repeat-grouped.md +72 -0
  968. package/docs/wiki/compiled/concept-repeat-selection.md +61 -0
  969. package/docs/wiki/compiled/concept-repeat.md +81 -0
  970. package/docs/wiki/compiled/concept-role-access.md +61 -0
  971. package/docs/wiki/compiled/concept-rollback.md +36 -0
  972. package/docs/wiki/compiled/concept-rules-catalog.md +49 -0
  973. package/docs/wiki/compiled/concept-screen-definition.md +51 -0
  974. package/docs/wiki/compiled/concept-screen-outlet.md +46 -0
  975. package/docs/wiki/compiled/concept-session-persistence.md +41 -0
  976. package/docs/wiki/compiled/concept-shape-animations.md +66 -0
  977. package/docs/wiki/compiled/concept-skeleton-auto.md +58 -0
  978. package/docs/wiki/compiled/concept-skeleton-manual.md +47 -0
  979. package/docs/wiki/compiled/concept-source-of-truth-references.md +37 -0
  980. package/docs/wiki/compiled/concept-source-reading-misleading.md +37 -0
  981. package/docs/wiki/compiled/concept-spatial-map-editor.md +22 -0
  982. package/docs/wiki/compiled/concept-spatial-map-zones.md +18 -0
  983. package/docs/wiki/compiled/concept-spec-engine.md +47 -0
  984. package/docs/wiki/compiled/concept-spec-store-interface.md +59 -0
  985. package/docs/wiki/compiled/concept-spec-store-layering.md +51 -0
  986. package/docs/wiki/compiled/concept-spec-stores-catalog.md +66 -0
  987. package/docs/wiki/compiled/concept-spec-structure.md +94 -0
  988. package/docs/wiki/compiled/concept-spec-types.md +76 -0
  989. package/docs/wiki/compiled/concept-state-change-animation.md +73 -0
  990. package/docs/wiki/compiled/concept-state-policies.md +44 -0
  991. package/docs/wiki/compiled/concept-state-protection.md +51 -0
  992. package/docs/wiki/compiled/concept-storage-adapter.md +69 -0
  993. package/docs/wiki/compiled/concept-storage-custom-names.md +69 -0
  994. package/docs/wiki/compiled/concept-storage-evolution.md +32 -0
  995. package/docs/wiki/compiled/concept-storage-idempotency.md +35 -0
  996. package/docs/wiki/compiled/concept-storage-overview.md +81 -0
  997. package/docs/wiki/compiled/concept-storage-postgres-jsonb.md +53 -0
  998. package/docs/wiki/compiled/concept-storage-postgres-triggers.md +60 -0
  999. package/docs/wiki/compiled/concept-storage-table-environments.md +40 -0
  1000. package/docs/wiki/compiled/concept-storage-table-screens.md +44 -0
  1001. package/docs/wiki/compiled/concept-storage-table-versions.md +50 -0
  1002. package/docs/wiki/compiled/concept-storage-verification.md +57 -0
  1003. package/docs/wiki/compiled/concept-template-children-marker.md +56 -0
  1004. package/docs/wiki/compiled/concept-template-interpolation.md +60 -0
  1005. package/docs/wiki/compiled/concept-templates-vs-variants.md +80 -0
  1006. package/docs/wiki/compiled/concept-templates.md +93 -0
  1007. package/docs/wiki/compiled/concept-token-categories.md +58 -0
  1008. package/docs/wiki/compiled/concept-token-system.md +61 -0
  1009. package/docs/wiki/compiled/concept-transaction-phase-timing.md +47 -0
  1010. package/docs/wiki/compiled/concept-transaction-rollback.md +38 -0
  1011. package/docs/wiki/compiled/concept-transaction-snapshot.md +37 -0
  1012. package/docs/wiki/compiled/concept-transactions.md +72 -0
  1013. package/docs/wiki/compiled/concept-validation-checks.md +63 -0
  1014. package/docs/wiki/compiled/concept-validators-catalog.md +76 -0
  1015. package/docs/wiki/compiled/concept-versioned-store.md +65 -0
  1016. package/docs/wiki/compiled/concept-versioning-snapshots-patches.md +61 -0
  1017. package/docs/wiki/compiled/concept-visibility.md +55 -0
  1018. package/docs/wiki/compiled/concept-web-only-recipes.md +37 -0
  1019. package/docs/wiki/compiled/concept-where-to-look.md +78 -0
  1020. package/docs/wiki/compiled/expression-and-or-not.md +68 -0
  1021. package/docs/wiki/compiled/expression-array.md +111 -0
  1022. package/docs/wiki/compiled/expression-auth.md +83 -0
  1023. package/docs/wiki/compiled/expression-binditem.md +52 -0
  1024. package/docs/wiki/compiled/expression-bindstate.md +63 -0
  1025. package/docs/wiki/compiled/expression-breakpoint.md +71 -0
  1026. package/docs/wiki/compiled/expression-computed.md +52 -0
  1027. package/docs/wiki/compiled/expression-cond.md +78 -0
  1028. package/docs/wiki/compiled/expression-date.md +66 -0
  1029. package/docs/wiki/compiled/expression-format.md +79 -0
  1030. package/docs/wiki/compiled/expression-group.md +84 -0
  1031. package/docs/wiki/compiled/expression-i18n.md +53 -0
  1032. package/docs/wiki/compiled/expression-item-index.md +72 -0
  1033. package/docs/wiki/compiled/expression-let-ref.md +87 -0
  1034. package/docs/wiki/compiled/expression-math.md +67 -0
  1035. package/docs/wiki/compiled/expression-platform.md +68 -0
  1036. package/docs/wiki/compiled/expression-prop.md +89 -0
  1037. package/docs/wiki/compiled/expression-selection.md +58 -0
  1038. package/docs/wiki/compiled/expression-state.md +70 -0
  1039. package/docs/wiki/compiled/expression-switch.md +68 -0
  1040. package/docs/wiki/compiled/expression-template.md +71 -0
  1041. package/docs/wiki/compiled/expression-token.md +67 -0
  1042. package/docs/wiki/compiled/path-app-screens.md +55 -0
  1043. package/docs/wiki/compiled/path-data-source-paths.md +44 -0
  1044. package/docs/wiki/compiled/path-forms.md +38 -0
  1045. package/docs/wiki/compiled/path-login.md +57 -0
  1046. package/docs/wiki/compiled/path-navigation.md +62 -0
  1047. package/docs/wiki/compiled/path-presets-available.md +44 -0
  1048. package/docs/wiki/compiled/path-tokens.md +56 -0
  1049. package/docs/wiki/compiled/path-tx-result-error.md +56 -0
  1050. package/docs/wiki/compiled/path-ui-device.md +53 -0
  1051. package/docs/wiki/compiled/path-ui-loading-error.md +40 -0
  1052. package/docs/wiki/compiled/path-ui-modals-drawers.md +46 -0
  1053. package/docs/wiki/compiled/path-ui-selected-row.md +92 -0
  1054. package/docs/wiki/compiled/path-uploads.md +32 -0
  1055. package/docs/wiki/compiled/pattern-cross-screen-data-flow.md +83 -0
  1056. package/docs/wiki/compiled/pattern-fetch-vs-datasources.md +63 -0
  1057. package/docs/wiki/compiled/pattern-file-upload-auto.md +61 -0
  1058. package/docs/wiki/compiled/pattern-file-upload-manual.md +59 -0
  1059. package/docs/wiki/compiled/pattern-form-validation-cross-field.md +58 -0
  1060. package/docs/wiki/compiled/pattern-form-validation.md +58 -0
  1061. package/docs/wiki/compiled/pattern-fullstack-coherence.md +49 -0
  1062. package/docs/wiki/compiled/pattern-git-vs-db-versioning.md +55 -0
  1063. package/docs/wiki/compiled/pattern-identity-aware-spec.md +70 -0
  1064. package/docs/wiki/compiled/pattern-loading-content-empty.md +66 -0
  1065. package/docs/wiki/compiled/pattern-login-body-template.md +47 -0
  1066. package/docs/wiki/compiled/pattern-login-screen.md +83 -0
  1067. package/docs/wiki/compiled/pattern-push-vs-patch.md +54 -0
  1068. package/docs/wiki/compiled/pattern-reusable-components.md +67 -0
  1069. package/docs/wiki/compiled/pattern-tx-create.md +76 -0
  1070. package/docs/wiki/compiled/pattern-tx-delete.md +50 -0
  1071. package/docs/wiki/compiled/pattern-tx-toggle.md +45 -0
  1072. package/docs/wiki/compiled/pattern-tx-update.md +68 -0
  1073. package/docs/wiki/compiled/primitive-accordion.md +46 -0
  1074. package/docs/wiki/compiled/primitive-area-chart.md +35 -0
  1075. package/docs/wiki/compiled/primitive-audio-player.md +27 -0
  1076. package/docs/wiki/compiled/primitive-bar-chart.md +34 -0
  1077. package/docs/wiki/compiled/primitive-box.md +58 -0
  1078. package/docs/wiki/compiled/primitive-button.md +55 -0
  1079. package/docs/wiki/compiled/primitive-camera.md +39 -0
  1080. package/docs/wiki/compiled/primitive-checkbox.md +62 -0
  1081. package/docs/wiki/compiled/primitive-divider.md +31 -0
  1082. package/docs/wiki/compiled/primitive-drawer.md +44 -0
  1083. package/docs/wiki/compiled/primitive-file-upload.md +65 -0
  1084. package/docs/wiki/compiled/primitive-grid.md +48 -0
  1085. package/docs/wiki/compiled/primitive-icon.md +106 -0
  1086. package/docs/wiki/compiled/primitive-image.md +49 -0
  1087. package/docs/wiki/compiled/primitive-input.md +81 -0
  1088. package/docs/wiki/compiled/primitive-kanban-board.md +30 -0
  1089. package/docs/wiki/compiled/primitive-line-chart.md +33 -0
  1090. package/docs/wiki/compiled/primitive-list.md +34 -0
  1091. package/docs/wiki/compiled/primitive-modal.md +51 -0
  1092. package/docs/wiki/compiled/primitive-pie-chart.md +32 -0
  1093. package/docs/wiki/compiled/primitive-screen-outlet.md +42 -0
  1094. package/docs/wiki/compiled/primitive-screen.md +43 -0
  1095. package/docs/wiki/compiled/primitive-scroll.md +33 -0
  1096. package/docs/wiki/compiled/primitive-select.md +76 -0
  1097. package/docs/wiki/compiled/primitive-signature.md +40 -0
  1098. package/docs/wiki/compiled/primitive-skeleton.md +48 -0
  1099. package/docs/wiki/compiled/primitive-slider.md +47 -0
  1100. package/docs/wiki/compiled/primitive-spacer.md +33 -0
  1101. package/docs/wiki/compiled/primitive-spatial-map.md +26 -0
  1102. package/docs/wiki/compiled/primitive-stack.md +46 -0
  1103. package/docs/wiki/compiled/primitive-table.md +127 -0
  1104. package/docs/wiki/compiled/primitive-tabs.md +52 -0
  1105. package/docs/wiki/compiled/primitive-text.md +59 -0
  1106. package/docs/wiki/compiled/primitive-textarea.md +44 -0
  1107. package/docs/wiki/compiled/primitive-toast-container.md +44 -0
  1108. package/docs/wiki/compiled/primitive-toggle.md +46 -0
  1109. package/docs/wiki/compiled/primitive-touchable.md +40 -0
  1110. package/docs/wiki/compiled/primitive-wizard.md +43 -0
  1111. package/package.json +58 -8
@@ -0,0 +1,839 @@
1
+ # Mythik — Primitive Props Reference
2
+
3
+ > Read when generating frontend UI specs. Every primitive with its valid props, events, and gotchas.
4
+
5
+ All primitives accept `style`, `visible`, and `permission`. Theme colors auto-inherited.
6
+
7
+ **Tokens are project-defined** — no framework defaults. If no tokens defined, use direct CSS values.
8
+
9
+ **Layout:** `box`, `text`, `image`, `icon`, `stack`, `grid`, `scroll`, `divider`, `spacer`
10
+ **Form:** `input`, `textarea`, `select`, `checkbox`, `toggle`, `slider`
11
+ **Interaction:** `button`, `touchable`, `list`
12
+ **Overlays:** `modal`, `drawer`, `tabs`, `accordion`, `wizard`, `screen`
13
+ **Charts:** `bar-chart`, `line-chart`, `pie-chart`, `area-chart`, `table`, `kanban-board`
14
+ **Spatial:** `spatial-map`
15
+ **Special:** `file-upload`, `camera`, `signature`, `audio-player`, `skeleton`, `toast-container`
16
+
17
+ ---
18
+
19
+ ## Layout Primitives
20
+
21
+ ### box
22
+
23
+ Container element. Props: `className`, `surface`.
24
+
25
+ **`surface` prop** — when set, box consumes identity surface styles (border, shadow, bg, borderRadius):
26
+ - `surface="card"` — for stat cards, form cards, content panels
27
+ - `surface="modal"` — for overlay panels
28
+ - No `surface` prop — plain layout div (default, most boxes)
29
+
30
+ ```json
31
+ "stat-card": { "type": "box", "props": { "surface": "card" }, "style": { "padding": 24 }, "children": ["value", "label"] }
32
+ ```
33
+
34
+ **IMPORTANT:** Always use `surface="card"` for card-like containers. Without it, the box ignores identity surface treatment.
35
+
36
+ ### text
37
+
38
+ | Prop | Type | Default | Description |
39
+ |---|---|---|---|
40
+ | `content` | string/expression | — | Text content |
41
+ | `variant` | string | — | `heading` (h2), `body` (p), `caption` (span), `label` (label), `mono` (code) |
42
+ | `className` | string | — | CSS class |
43
+
44
+ ### image
45
+
46
+ | Prop | Type | Default | Description |
47
+ |---|---|---|---|
48
+ | `src` | string/expression | — | Image URL |
49
+ | `alt` | string | — | Alt text |
50
+ | `aspectRatio` | number | — | Width/height ratio |
51
+ | `placeholder` | string | — | Placeholder while loading |
52
+
53
+ ### icon
54
+
55
+ | Prop | Type | Default | Description |
56
+ |---|---|---|---|
57
+ | `name` | string | — | Icon name (kebab-case: `pencil-simple`, `trash`, `moon`) |
58
+ | `size` | number | — | Size in pixels |
59
+ | `weight` | string | — | `thin`, `light`, `regular`, `bold`, `fill`, `duotone` |
60
+ | `color` | string | — | Color value |
61
+
62
+ Names are kebab-case, library-agnostic.
63
+
64
+ **Icon renderer contract:** Mythik does not bundle an icon pack. The built-in `icon` primitive renders a placeholder unless the host app registers a renderer with `plugins.setIconRenderer(Component)`. Register it from `MythikApp.onPlugins`; the built-in primitive keeps identity behavior (container, default weight) and calls your renderer with `{ name, size, weight, color, style }`.
65
+
66
+ ```tsx
67
+ import { MythikApp } from 'mythik-react';
68
+ import { Calendar, Circle, Trash } from '@phosphor-icons/react';
69
+
70
+ const PHOSPHOR_ICONS = {
71
+ calendar: Calendar,
72
+ trash: Trash,
73
+ } as const;
74
+
75
+ function PhosphorIcon({ name, size, weight, color, style }) {
76
+ const Icon = PHOSPHOR_ICONS[name as keyof typeof PHOSPHOR_ICONS] ?? Circle;
77
+ return <Icon size={size} weight={weight} color={color} style={style} />;
78
+ }
79
+
80
+ <MythikApp
81
+ appSpec={appSpec}
82
+ specStore={specStore}
83
+ onPlugins={(plugins) => plugins.setIconRenderer(PhosphorIcon)}
84
+ />;
85
+ ```
86
+
87
+ Lucide follows the same pattern with a map of kebab-case Mythik names to imported Lucide components:
88
+
89
+ ```tsx
90
+ import { Calendar, Circle, Trash } from 'lucide-react';
91
+
92
+ const LUCIDE_ICONS = {
93
+ calendar: Calendar,
94
+ trash: Trash,
95
+ } as const;
96
+
97
+ function LucideIcon({ name, size, color, style }) {
98
+ const Icon = LUCIDE_ICONS[name as keyof typeof LUCIDE_ICONS] ?? Circle;
99
+ return <Icon size={size} color={color} style={style} />;
100
+ }
101
+ ```
102
+
103
+ **Troubleshooting:** if you see the placeholder circle, the renderer was not present in resolved tokens when the app applied plugins. Verify `onPlugins` calls `setIconRenderer`, verify the consumer is installed from a tarball/package that includes the `applyPlugins()` icon renderer fix, and avoid using source aliases when validating published-package behavior.
104
+
105
+ **Advanced override:** `plugins.overridePrimitive('icon', ...)` is still supported, but it replaces the whole primitive and bypasses the built-in identity wrapper. The renderer function must return a Mythik `RenderNode`, not JSX:
106
+
107
+ ```ts
108
+ plugins.overridePrimitive('icon', (props, children) => ({
109
+ type: 'icon',
110
+ props: { ...props, _component: CustomIcon },
111
+ children,
112
+ }));
113
+ ```
114
+
115
+ ### stack
116
+
117
+ | Prop | Type | Default | Description |
118
+ |---|---|---|---|
119
+ | `direction` | string | `vertical` | `vertical` or `horizontal` |
120
+ | `gap` | number | — | Space between children (px) |
121
+ | `align` | string | — | Cross-axis: `start`, `center`, `end`, `stretch` |
122
+ | `justify` | string | — | Main-axis: `start`, `center`, `end`, `between`, `around` |
123
+ | `className` | string | — | CSS class |
124
+
125
+ ### grid
126
+
127
+ | Prop | Type | Default | Description |
128
+ |---|---|---|---|
129
+ | `columns` | number/string/expression | — | CSS grid columns (number or template string) |
130
+ | `rows` | string | — | CSS grid rows template |
131
+ | `gap` | number | — | Gap between cells (px) |
132
+ | `areas` | string | — | CSS grid-template-areas |
133
+ | `className` | string | — | CSS class |
134
+
135
+ ### scroll
136
+
137
+ | Prop | Type | Default | Description |
138
+ |---|---|---|---|
139
+ | `direction` | string | `vertical` | `vertical` or `horizontal` |
140
+ | `maxHeight` | string/number | — | Max height (enables scroll) |
141
+ | `className` | string | — | CSS class |
142
+
143
+ ### divider
144
+
145
+ Props: `direction` (`horizontal`/`vertical`). Renders a visual separator.
146
+
147
+ ### spacer
148
+
149
+ Props: `size` (px), `direction` (`vertical`/`horizontal`). Renders empty space.
150
+
151
+ ---
152
+
153
+ ## Form Primitives
154
+
155
+ `input` and `select` labels are associated with their controls and the controls use border-box sizing. In constrained panels or two-column editor rows, still use `gridTemplateColumns: "minmax(0, 1fr) minmax(0, 1fr)"` so cells can shrink without horizontal overflow.
156
+
157
+ ### input
158
+
159
+ | Prop | Type | Default | Description |
160
+ |---|---|---|---|
161
+ | `value` | expression | — | Bind via `$bindState` |
162
+ | `type` | string | `text` | `text`, `password`, `email`, `number`, `date`, `tel`, `url` |
163
+ | `placeholder` | string/expression | — | Placeholder text |
164
+ | `label` | string/expression | — | Field label |
165
+ | `disabled` | boolean/expression | `false` | Disable input |
166
+ | `readOnly` | boolean | `false` | Read-only mode |
167
+ | `required` | boolean | `false` | Visual required indicator |
168
+ | `format` | string | — | `phone`, `currency` — display format |
169
+ | `formatOptions` | object | — | `{ currency, locale, decimals }` |
170
+ | `selectOnFocus` | boolean | `false` | Select all text on focus |
171
+ | `checks` | array | — | Inline validators |
172
+ | `validateOn` | string | — | `blur` or `change` |
173
+
174
+ **Events:** `on.change`, `on.submit` (fires on Enter key — use for login/search)
175
+
176
+ **Wrong:** `{ "props": { "inputType": "password" } }` — no `inputType` prop
177
+ **Right:** `{ "props": { "type": "password" } }`
178
+
179
+ ### textarea
180
+
181
+ | Prop | Type | Default | Description |
182
+ |---|---|---|---|
183
+ | `value` | expression | — | Bind via `$bindState` |
184
+ | `placeholder` | string/expression | — | Placeholder text |
185
+ | `label` | string/expression | — | Field label |
186
+ | `rows` | number | `3` | Visible rows |
187
+ | `disabled` | boolean/expression | `false` | Disable |
188
+ | `readOnly` | boolean | `false` | Read-only |
189
+
190
+ **Events:** `on.change`
191
+
192
+ ### select
193
+
194
+ | Prop | Type | Default | Description |
195
+ |---|---|---|---|
196
+ | `value` | expression | — | Bind via `$bindState` |
197
+ | `options` | array | — | Strings or `[{ label, value }]` objects |
198
+ | `placeholder` | string | — | Placeholder text |
199
+ | `label` | string/expression | — | Field label |
200
+ | `disabled` | boolean/expression | `false` | Disable |
201
+ | `required` | boolean | `false` | Visual indicator |
202
+
203
+ **Events:** `on.change`
204
+
205
+ Options formats:
206
+ ```json
207
+ "options": ["Low", "Medium", "High"]
208
+ "options": [{ "label": "Low", "value": "low" }, { "label": "Medium", "value": "medium" }]
209
+ ```
210
+
211
+ ### checkbox
212
+
213
+ | Prop | Type | Default | Description |
214
+ |---|---|---|---|
215
+ | `checked` | boolean/expression | — | Bind via `$bindState`. **NOT `value`** |
216
+ | `label` | string/expression | — | Label text |
217
+ | `disabled` | boolean/expression | `false` | Disable |
218
+
219
+ **Events:** `on.change`
220
+
221
+ Custom rendered (div+SVG, not native browser checkbox). Surface-aware — adapts to identity surface treatment (bold=thick border, neo=inset shadow, flat=no border). Unchecked uses `t.surface.input`, checked fills with primary preserving surface border. Focus uses `t.surface.inputFocus` (never includes backgroundColor — prevents overwriting checked primary bg). Uses `color: 'inherit'` from parent surface container. Label respects `labelStyle` identity.
222
+
223
+ ```json
224
+ { "type": "checkbox", "props": { "checked": { "$bindState": "/form/agreed" }, "label": "I agree" } }
225
+ ```
226
+
227
+ ### toggle
228
+
229
+ | Prop | Type | Default | Description |
230
+ |---|---|---|---|
231
+ | `checked` | boolean/expression | — | Bind via `$bindState`. **NOT `value`** |
232
+ | `label` | string/expression | — | Label text |
233
+ | `disabled` | boolean/expression | `false` | Disable |
234
+
235
+ **Events:** `on.change`
236
+
237
+ ```json
238
+ { "type": "toggle", "props": { "checked": { "$bindState": "/preferences/darkMode" }, "label": "Dark Mode" } }
239
+ ```
240
+
241
+ ### slider
242
+
243
+ | Prop | Type | Default | Description |
244
+ |---|---|---|---|
245
+ | `value` | expression | — | Bind via `$bindState` |
246
+ | `min` | number | `0` | Minimum value |
247
+ | `max` | number | `100` | Maximum value |
248
+ | `step` | number | `1` | Step increment |
249
+ | `label` | string/expression | — | Label text |
250
+ | `disabled` | boolean/expression | `false` | Disable |
251
+
252
+ ---
253
+
254
+ ## Interaction Primitives
255
+
256
+ ### button
257
+
258
+ | Prop | Type | Default | Description |
259
+ |---|---|---|---|
260
+ | `label` | string/expression | — | Button text |
261
+ | `variant` | string | — | `primary`, `secondary`, `destructive`, `ghost`, or custom from tokens |
262
+ | `disabled` | boolean/expression | `false` | Disable |
263
+ | `className` | string | — | CSS class |
264
+
265
+ Buttons have built-in CSS transitions — only add `hover`/`active` for custom behavior.
266
+
267
+ ### touchable
268
+
269
+ Invisible tap area. Props: `className`. Wire actions via `on.press`.
270
+
271
+ ### list
272
+
273
+ Container for list items. Props: none besides common. Use with `repeat`.
274
+
275
+ ---
276
+
277
+ ## Overlay Primitives
278
+
279
+ ### modal
280
+
281
+ | Prop | Type | Default | Description |
282
+ |---|---|---|---|
283
+ | `visible` | — | — | Managed by engine — do NOT set |
284
+ | `title` | string/expression | — | Modal header |
285
+
286
+ **Wrong:** Adding `visible` condition on modal element
287
+ **Right:** Engine manages via `/ui/modals/{id}`. Use `openModal`/`closeModal` actions.
288
+
289
+ ```json
290
+ "my-modal": { "type": "modal", "props": { "title": "Confirm" }, "children": ["content"] }
291
+ ```
292
+
293
+ ### drawer
294
+
295
+ | Prop | Type | Default | Description |
296
+ |---|---|---|---|
297
+ | `visible` | — | — | Managed by engine — do NOT set |
298
+ | `side` | string | `right` | `left` or `right` |
299
+ | `width` | number | — | Width in pixels |
300
+
301
+ **Wrong:** Adding `visible` condition on drawer element
302
+ **Right:** Engine manages via `/ui/drawers/{id}`. Use `openDrawer`/`closeDrawer` actions.
303
+
304
+ ### tabs
305
+
306
+ | Prop | Type | Default | Description |
307
+ |---|---|---|---|
308
+ | `value` | expression | — | Active tab key, bind via `$bindState` |
309
+ | `items` | array | — | `[{ key, label, icon? }]` tab definitions |
310
+
311
+ **Events:** `on.change`
312
+
313
+ ```json
314
+ {
315
+ "type": "tabs",
316
+ "props": {
317
+ "value": { "$bindState": "/ui/activeTab" },
318
+ "items": [
319
+ { "key": "overview", "label": "Overview", "icon": "chart-bar" },
320
+ { "key": "sales", "label": "Sales" }
321
+ ]
322
+ },
323
+ "children": ["tab-content"]
324
+ }
325
+ ```
326
+
327
+ Children render below tabs. Use `visible` conditions with `$state` on the active tab key to show/hide tab content panels.
328
+
329
+ ### accordion
330
+
331
+ | Prop | Type | Default | Description |
332
+ |---|---|---|---|
333
+ | `title` | string/expression | — | Accordion header |
334
+ | `defaultOpen` | boolean | `false` | Open on mount |
335
+ | `badge` | string/number/boolean | — | Indicator next to title. `true` = solid dot, number/string = pill with text. Falsy hides badge |
336
+
337
+ Children render inside.
338
+
339
+ **React Native glass support:** When `identity.surface === 'glass'`, RN primitives (accordion, input, modal, select, textarea) wrap content in `<BlurView>` from `expo-blur`. No spec changes needed — the surface treatment handles it automatically.
340
+
341
+ ### wizard
342
+
343
+ | Prop | Type | Default | Description |
344
+ |---|---|---|---|
345
+ | `currentStep` | number/expression | — | 0-based step index. Use `$state` (read-only display) |
346
+ | `totalSteps` | number | — | Total step count |
347
+
348
+ Renders progress bar + "Step X of Y". Use `visible` conditions on children to show/hide per step. Navigate with `setState` on the step number.
349
+
350
+ ```json
351
+ {
352
+ "type": "wizard",
353
+ "props": { "currentStep": { "$state": "/wizard/step" }, "totalSteps": 3 },
354
+ "children": ["step-content"]
355
+ }
356
+ ```
357
+
358
+ ### screen
359
+
360
+ Props: `title`. Top-level screen wrapper in AppSpec apps.
361
+
362
+ ---
363
+
364
+ ## Chart Primitives
365
+
366
+ All charts accept `data` (array) and `height` (pixels, default 200).
367
+
368
+ ### bar-chart
369
+
370
+ | Prop | Type | Default | Description |
371
+ |---|---|---|---|
372
+ | `data` | array/expression | — | `[{ label, value, color? }]` |
373
+ | `height` | number | `200` | Chart height in pixels |
374
+
375
+ ```json
376
+ { "type": "bar-chart", "props": { "data": { "$state": "/chartData" }, "height": 300 } }
377
+ ```
378
+
379
+ ### line-chart
380
+
381
+ | Prop | Type | Default | Description |
382
+ |---|---|---|---|
383
+ | `data` | array/expression | — | `[{ label, value }]` |
384
+ | `height` | number | `200` | Chart height |
385
+ | `color` | string | — | Line color |
386
+
387
+ ### pie-chart
388
+
389
+ | Prop | Type | Default | Description |
390
+ |---|---|---|---|
391
+ | `data` | array/expression | — | `[{ label, value, color? }]` |
392
+ | `size` | number | — | Diameter in pixels |
393
+ | `donut` | boolean | `false` | Donut style |
394
+
395
+ ### area-chart
396
+
397
+ | Prop | Type | Default | Description |
398
+ |---|---|---|---|
399
+ | `data` | array/expression | — | `[{ label, value }]` |
400
+ | `height` | number | `200` | Chart height |
401
+ | `color` | string | — | Fill color |
402
+
403
+ ---
404
+
405
+ ## Table
406
+
407
+ ```json
408
+ {
409
+ "type": "table",
410
+ "props": {
411
+ "data": { "$state": "/items" },
412
+ "columns": [
413
+ { "key": "name", "label": "Name", "width": "2fr" },
414
+ { "key": "amount", "label": "Amount", "align": "right", "format": "currency", "formatOptions": { "currency": "HNL", "locale": "es-HN" } }
415
+ ],
416
+ "sorting": { "enabled": true, "default": { "field": "amount", "direction": "desc" }, "mode": "client" },
417
+ "pagination": { "enabled": true, "pageSize": 20, "mode": "client" },
418
+ "selection": { "enabled": true, "mode": "multiple", "state": "/selectedIds" },
419
+ "groupBy": { "field": "category", "header": true, "footer": "subtotal", "collapsible": true },
420
+ "stickyHeader": true,
421
+ "emptyState": { "icon": "inbox", "message": "No data" },
422
+ "onRowClick": { "action": "openDrawer", "params": { "id": "detail" } }
423
+ }
424
+ }
425
+ ```
426
+
427
+ **Table props:**
428
+
429
+ | Prop | Type | Default | Description |
430
+ |---|---|---|---|
431
+ | `data` | array/expression | — | Row data array |
432
+ | `columns` | array | — | Column definitions (see below) |
433
+ | `sorting` | object | — | `{ enabled, mode, default, state }` |
434
+ | `pagination` | object | — | `{ enabled, pageSize, mode, state, totalItems }` |
435
+ | `selection` | object | — | `{ enabled, mode, state }` |
436
+ | `groupBy` | object | — | `{ field, header, footer, expanded, collapsible }` |
437
+ | `stickyHeader` | boolean | `false` | Sticky table header |
438
+ | `emptyState` | object | — | `{ icon, message }` when no data |
439
+ | `rowStyle` | object/expression | — | Per-row style applied to each row. Row data is available via `/ui/selectedRow` state path after row actions fire (see `ai-context-runtime-semantics.md § 2.1`); for static or dynamic per-row styling, use a style expression that reads framework state paths. |
440
+ | `onRowClick` | action / array / function | — | Action(s) on row click — accepts `ActionBinding`, array, or function callback (programmatic) |
441
+ | `headerStyle` | object | — | Header row style |
442
+ | `cellStyle` | object | — | Default cell style |
443
+ | `grandTotal` | boolean | `false` | Show grand total row |
444
+
445
+ **Column props:**
446
+
447
+ | Prop | Type | Default | Description |
448
+ |---|---|---|---|
449
+ | `key`/`field` | string | — | Data field name |
450
+ | `label` | string | — | Column header |
451
+ | `width` | string | — | CSS grid: `fr`/`px`/`%` |
452
+ | `align` | string | `left` | `left`, `center`, `right` |
453
+ | `format` | string | — | `currency`, `number`, `percent`, `date` |
454
+ | `formatOptions` | object | — | `{ currency, locale, decimals }` |
455
+ | `sortable` | boolean | `true` | Allow sorting |
456
+ | `visible` | boolean | `true` | Show/hide column |
457
+ | `actions` | array | — | `[{ icon, color, onPress }]` action buttons |
458
+
459
+ **Sorting:** `client` sorts internally. `server` writes `{ field, direction }` to `state` path — **`state` is required** when mode is `"server"` (e.g., `"state": "sort"`).
460
+
461
+ **Pagination:** `client` slices internally. `server` writes page number to `state` path — **`state` is required** when mode is `"server"` (e.g., `"state": "page"`).
462
+
463
+ **GroupBy:** `footer: "subtotal"` auto-sums numeric columns.
464
+
465
+ **onRowClick** fires when a row is clicked. Per the row context model in `ai-context-runtime-semantics.md § 2.1`, the framework automatically writes the clicked row to `/ui/selectedRow` before dispatching the action chain (see also § 5.1). Action `params` resolve `$state` / `$template` lazily at click time — read the freshly-written row via `$state: '/ui/selectedRow/<key>'`. Same lazy-resolution contract as `columns[].actions[].onPress` (see § 1.3 table).
466
+
467
+ ```json
468
+ "onRowClick": [
469
+ { "action": "openDrawer", "params": { "id": "detail-drawer" } }
470
+ ]
471
+ ```
472
+
473
+ Inside the drawer content, read row fields via `$template`:
474
+
475
+ ```json
476
+ { "type": "text", "props": { "content": { "$template": "Editing: ${ /ui/selectedRow/name }" } } }
477
+ ```
478
+
479
+ **Anti-pattern — do NOT use `"$row"` as a literal value.** There is no `$row` expression. A literal string `"$row"` in `setState` params writes the characters `"$row"` to state, not the row object. See `ai-context-runtime-semantics.md § 2.1` for the canonical read patterns.
480
+
481
+ **Column action buttons** (`columns[].actions[].onPress`) follow the same row-context pattern as `onRowClick`. The framework writes the clicked row to `/ui/selectedRow` before dispatching, so action params resolve `$state` at press time (lazy, not render-time):
482
+
483
+ ```json
484
+ "columns": [{
485
+ "id": "actions-col",
486
+ "actions": [{
487
+ "icon": "pencil-simple",
488
+ "onPress": [{
489
+ "action": "openModal",
490
+ "params": {
491
+ "id": "edit-modal",
492
+ "itemId": { "$state": "/ui/selectedRow/id" }
493
+ }
494
+ }]
495
+ }]
496
+ }]
497
+ ```
498
+
499
+ `$state: "/ui/selectedRow/id"` reads the row just clicked — not a stale value. See `ai-context-runtime-semantics.md § 1.3` for the lazy press-time mechanism.
500
+
501
+ ---
502
+
503
+ ## Spatial
504
+
505
+ ### spatial-map
506
+
507
+ Generic SVG/data-first primitive for two-dimensional spatial layouts: floor plans, seating maps, parking maps, warehouse locations, hospital beds, office maps, and similar domains. The primitive knows zones, items, geometry, status, selection, and actions. It does not know any domain workflow.
508
+
509
+ ```json
510
+ {
511
+ "type": "spatial-map",
512
+ "props": {
513
+ "viewBox": { "x": 0, "y": 0, "width": 1000, "height": 620 },
514
+ "mode": "operate",
515
+ "selectedItemPath": "/ui/selectedSpatialItem",
516
+ "zones": [
517
+ {
518
+ "id": "main-floor",
519
+ "label": "Main floor",
520
+ "shape": { "type": "path", "d": "M86 92 L602 92 L602 178 L790 178 L790 526 L88 526 Z" }
521
+ }
522
+ ],
523
+ "items": [
524
+ {
525
+ "id": "item-1",
526
+ "label": "A1",
527
+ "zoneId": "main-floor",
528
+ "position": { "x": 214, "y": 174 },
529
+ "rotation": -10,
530
+ "shape": { "type": "rect", "width": 116, "height": 76, "radius": 24 },
531
+ "status": "available",
532
+ "metadata": { "capacity": 4 }
533
+ }
534
+ ],
535
+ "statusStyles": {
536
+ "available": { "fill": "#dcfce7", "stroke": "#22c55e", "text": "#14532d" }
537
+ },
538
+ "onItemPress": { "action": "openDrawer", "params": { "id": "item-actions" } }
539
+ }
540
+ }
541
+ ```
542
+
543
+ | Prop | Type | Default | Description |
544
+ |---|---|---|---|
545
+ | `viewBox` | object/string | required | Stable SVG coordinate system |
546
+ | `zones` | array/expression | `[]` | Non-domain spatial regions |
547
+ | `items` | array/expression | `[]` | Operable spatial objects |
548
+ | `layers` | array | default layer order | Optional render order |
549
+ | `mode` | string | `operate` | `readonly`, `operate`, or `edit` |
550
+ | `statusStyles` | object | safe fallback | Semantic status-to-style map |
551
+ | `selectedItemPath` | string | `/ui/selectedSpatialItem` | State path written before item action dispatch |
552
+ | `selectedItemId` | string/number/expression | none | Optional external selected item override |
553
+ | `selectedZonePath` | string | `/ui/selectedSpatialZone` | State path written before zone action dispatch |
554
+ | `selectedZoneId` | string/expression | none | Optional external selected zone override |
555
+ | `canvasPressPath` | string | `/ui/spatialCanvasPress` | State path written before JSON `onCanvasPress` dispatch |
556
+ | `interactionPolicy` | object | mode-based | Selection, activation, canvas clear, keyboard flags |
557
+ | `editPolicy` | object | mode-based | Editor policy for drag, keyboard movement, resize, bounds, coordinate precision, snap, and authoring guide overlays |
558
+ | `canvasGuide` | object/expression | none | Optional SVG pointer guide, e.g. dotted crosshair while a consumer-owned placement mode is active |
559
+ | `itemChangePath` | string | `/ui/spatialItemChange` | State path written before JSON `onItemChange` dispatch |
560
+ | `zoneChangePath` | string | `/ui/spatialZoneChange` | State path written before JSON `onZoneChange` dispatch |
561
+ | `ariaLabel` | string | `Spatial map` | Accessible name for the SVG |
562
+ | `onItemPress` | action/array/function | none | Lazy item action. JSON actions write selected item context before dispatch; programmatic functions pass through |
563
+ | `onItemChange` | action/array/function | none | Lazy edit action. JSON actions write item-change context before dispatch; programmatic functions pass through |
564
+ | `onZonePress` | action/array/function | none | Lazy zone action. JSON actions write selected zone context before dispatch; programmatic functions pass through |
565
+ | `onZoneChange` | action/array/function | none | Lazy zone edit action. JSON actions write zone-change context before dispatch; programmatic functions pass through |
566
+ | `onCanvasPress` | action/array/function | none | Canvas action. Clearing is controlled by `interactionPolicy.clearSelectionOnCanvasPress` |
567
+
568
+ Supported shapes for zones and items: `rect`, `circle`, `ellipse`, `polygon`, and `path`. Item shapes are positioned by `position`, `rotation`, and optional `transform`; item `rect` uses `width`/`height` centered on the item. Zone shapes use map coordinates; zone `rect` requires `x`, `y`, `width`, and `height`. `polygon.points` may be an SVG points string or an array of `[x, y]` / `{ "x": n, "y": n }` points. Use semantic status keys such as `available`, `occupied`, `blocked`, `inactive`; colors belong in `statusStyles`.
569
+
570
+ Zones may include `position: { "x": n, "y": n }`, `rotation`, `transform`, and `localBounds`. For runtime zone movement, Mythik writes `position`; for runtime zone resize, Mythik writes `transform.scaleX/scaleY`; in both cases it keeps the base `shape` stable. This is the same generic transform-layer principle used by item resize: do not rewrite polygon points or SVG path data as the primary move/resize model. Rect, circle, ellipse, and polygon zones derive map bounds automatically; arbitrary path zones may provide `localBounds` when bounded editing or resize handles are required.
571
+
572
+ Items may include `transform: { "scaleX": n, "scaleY": n }` and `localBounds: { "x": n, "y": n, "width": n, "height": n }`. `transform` is the generic resize model: the base `shape` remains clean, while `position`, `rotation`, and `transform` define the visual item. Simple shapes derive edit bounds automatically. `path` items require `localBounds` for resize handles; without it they remain movable/rotatable but are not resized by handles.
573
+
574
+ `status` is semantic and visual only. Do not use a status value such as `inactive` to lock an item out of selection, activation, or editing. Use `disabled: true` only for items that must be intentionally non-interactive.
575
+
576
+ Use existing Mythik expressions for dynamic props:
577
+
578
+ ```json
579
+ "items": { "$state": "/data/layout/items" },
580
+ "zones": { "$state": "/data/layout/zones" },
581
+ "statusStyles": { "$state": "/theme/spatial/statusStyles" }
582
+ ```
583
+
584
+ Do not use `itemsPath`, `zonesPath`, `modePath`, or `statusStylesPath`; those aliases are not part of the runtime contract.
585
+
586
+ When an item is pressed, Mythik writes the full context to `/ui/selectedSpatialItem` before dispatching `onItemPress`. Read it in action params via `$state`, for example:
587
+
588
+ ```json
589
+ "onItemPress": {
590
+ "action": "openDrawer",
591
+ "params": {
592
+ "id": "item-actions",
593
+ "itemId": { "$state": "/ui/selectedSpatialItem/itemId" }
594
+ }
595
+ }
596
+ ```
597
+
598
+ When a zone is pressed with `interactionPolicy.selectZones` or `interactionPolicy.activateZones`, Mythik writes the full context to `/ui/selectedSpatialZone` or the configured `selectedZonePath`. Zone context is domain-neutral: `kind: "zone"`, `mode`, `zoneId`, optional `label`, `position`, `rotation`, optional `transform`, `shape`, optional `metadata`, and full `zone`. By default zone press stops canvas dispatch only when zone selection/activation is enabled; set `interactionPolicy.zonePressStopsCanvas` explicitly when a map needs different press propagation.
599
+
600
+ When the SVG canvas is pressed, Mythik writes canvas context to `/ui/spatialCanvasPress` or the configured `canvasPressPath` before dispatching JSON `onCanvasPress`. The context includes `kind: "canvas"`, `mode`, `point`, `viewBox`, optional `zoneId`, and optional `zone`. With snap enabled, `point` is the effective snapped coordinate and `rawPoint` is the unmodified SVG pointer coordinate. Existing specs that read only `point` continue to work. Use this for click-to-place flows; keep the placement mode and pending item paths consumer-owned.
601
+
602
+ For edit movement, resize, and rotate, use `editPolicy` rather than `interactionPolicy`. Item drag/resize/rotate previews are local and persistence happens on pointer release through `onItemChange`; zone drag/resize previews are local and persistence happens on pointer release through `onZoneChange`; keyboard edits emit one change per valid command. Runtime item change types are `move`, `resize`, and `rotate`. Runtime zone change types include `move` and `resize`: movement writes `nextZone.position`, resize writes `nextZone.transform.scaleX/scaleY`, and both preserve `nextZone.shape`. Current viewBox bounds clamp item `position` by anchor and clamp zone `position` by transformed derived zone bounds when bounds are available. Item and zone movement use the same snap/guide resolver; zones snap by the center of their transformed derived map bounds, or by `position` for path zones without bounds. Resize snap uses the same world/map-coordinate snap guides as movement, including for item and zone resize handles: the active handle point snaps in map coordinates and is then projected into local resize math. Persist item edits with `$array: "replace"` from `/ui/spatialItemChange/nextItem`; persist zone edits with `$array: "replace"` from `/ui/spatialZoneChange/nextZone`. For undoable editors, wrap that same replacement value in `editorCommit` instead of plain `setState`. In `mode: "edit"`, item click selects/moves but does not dispatch `onItemPress` unless `interactionPolicy.activateItems: true` is set explicitly; zone click behaves the same through `activateZones`.
603
+
604
+ ```json
605
+ "mode": "edit",
606
+ "items": { "$state": "/data/layout/items" },
607
+ "itemChangePath": "/ui/floorEditor/itemChange",
608
+ "editPolicy": {
609
+ "dragItems": true,
610
+ "dragZones": true,
611
+ "keyboardMoveItems": true,
612
+ "keyboardMoveZones": true,
613
+ "resizeItems": true,
614
+ "resizeZones": true,
615
+ "rotateItems": true,
616
+ "keyboardResizeItems": true,
617
+ "keyboardResizeZones": true,
618
+ "keyboardRotateItems": true,
619
+ "bounds": "viewBox",
620
+ "boundsMode": "position",
621
+ "coordinatePrecision": 0,
622
+ "resizeStep": 0.05,
623
+ "resizeLargeStep": 0.25,
624
+ "rotationStep": 5,
625
+ "rotationLargeStep": 15,
626
+ "minScale": 0.1,
627
+ "maxScale": 10,
628
+ "snap": { "enabled": true, "grid": { "enabled": true, "size": 20, "threshold": 8 } },
629
+ "guides": { "enabled": true, "showCoordinates": true, "showSnapLines": true }
630
+ },
631
+ "onItemChange": {
632
+ "action": "setState",
633
+ "params": {
634
+ "statePath": "/data/layout/items",
635
+ "value": {
636
+ "$array": "replace",
637
+ "source": { "$state": "/data/layout/items" },
638
+ "where": {
639
+ "field": "id",
640
+ "eq": { "$state": "/ui/floorEditor/itemChange/itemId" }
641
+ },
642
+ "value": { "$state": "/ui/floorEditor/itemChange/nextItem" }
643
+ }
644
+ }
645
+ }
646
+ ```
647
+
648
+ Zone movement example:
649
+
650
+ ```json
651
+ "mode": "edit",
652
+ "zones": { "$state": "/data/layout/zones" },
653
+ "selectedZonePath": "/ui/floorEditor/selectedZone",
654
+ "zoneChangePath": "/ui/floorEditor/zoneChange",
655
+ "interactionPolicy": {
656
+ "selectZones": true,
657
+ "activateZones": true,
658
+ "zonePressStopsCanvas": true
659
+ },
660
+ "editPolicy": {
661
+ "dragZones": true,
662
+ "keyboardMoveZones": true,
663
+ "resizeZones": true,
664
+ "keyboardResizeZones": true,
665
+ "bounds": "viewBox",
666
+ "coordinatePrecision": 0
667
+ },
668
+ "onZoneChange": {
669
+ "action": "setState",
670
+ "params": {
671
+ "statePath": "/data/layout/zones",
672
+ "value": {
673
+ "$array": "replace",
674
+ "source": { "$state": "/data/layout/zones" },
675
+ "where": {
676
+ "field": "id",
677
+ "eq": { "$state": "/ui/floorEditor/zoneChange/zoneId" }
678
+ },
679
+ "value": { "$state": "/ui/floorEditor/zoneChange/nextZone" }
680
+ }
681
+ }
682
+ }
683
+ ```
684
+
685
+ Snap/guides are generic editor aids for spatial authoring. Use `editPolicy.snap` to compute effective coordinates and `editPolicy.guides` to render contextual authoring guides. When snap is enabled, item movement, zone movement, keyboard movement, item resize handles, zone resize handles, and canvas placement all use the same resolver. Grid threshold is per-axis, so X and Y can snap independently. Zone movement snaps a stable authoring anchor: the center of the zone's transformed derived map bounds, or `position` when no bounds exist. Item-center snap wins ties over grid snap on the same axis because it is the more specific alignment target. `canvasPress.point` is the effective placement coordinate; `canvasPress.rawPoint` preserves the original pointer coordinate.
686
+
687
+ ```json
688
+ "editPolicy": {
689
+ "dragItems": true,
690
+ "keyboardMoveItems": true,
691
+ "snap": {
692
+ "enabled": true,
693
+ "grid": { "enabled": true, "size": 20, "threshold": 8 },
694
+ "itemCenters": { "enabled": true, "threshold": 8 }
695
+ },
696
+ "guides": {
697
+ "enabled": true,
698
+ "showCoordinates": true,
699
+ "showSnapLines": true
700
+ }
701
+ }
702
+ ```
703
+
704
+ **Inspector composition pattern:** keep `spatial-map` domain-neutral. Build item inspectors outside the primitive with normal JSON primitives (`box`, `stack`, `input`, `select`, `button`) and a consumer-owned draft state path. In edit mode, set `interactionPolicy.activateItems: true` only when item press should initialize the inspector draft.
705
+
706
+ Canonical flow:
707
+
708
+ 1. `selectedItemPath` receives the selected item context.
709
+ 2. `onItemPress` copies `{ "$state": "<selectedItemPath>/item" }` to a consumer-owned draft path.
710
+ 3. Inputs bind to draft fields with `$bindState`.
711
+ 4. `Save` normalizes numeric draft fields, writes an `item-change` context with `changeType: "update"`, persists via `$array: "replace"`, and refreshes `selectedItemPath` from the saved draft while the inspector stays open.
712
+ 5. `Cancel` clears the draft and `selectedItemPath` so the inspector closes without changing persisted items.
713
+ 6. If drag or keyboard movement can happen while the inspector is open, append `onItemChange` actions that sync the draft `position` when the changed item id matches the draft id and refresh `selectedItemPath` from `nextItem`.
714
+
715
+ Use a non-modal overlay (`box` with absolute/fixed positioning) for editor inspectors when the map must remain interactive. The current `drawer` primitive is modal and includes a backdrop, so it is not the right default for spatial editing panels.
716
+
717
+ **Lifecycle composition pattern:** create, duplicate, and delete spatial items with JSON actions outside the primitive. For add/place, set a consumer-owned `placeMode`, drive `canvasGuide.visible` from that state for a generic dotted SVG placement guide, use `onCanvasPress` plus `canvasPressPath` to create a pending item at the SVG point, generate ids/labels with `$uniqueId`, round coordinates with `$math: "round"` when needed, append with `$array: "append"`, then refresh draft and selection paths. For duplicate, copy the selected full item, generate a new id/label, offset position, preserve shape/status/metadata, append, and select the duplicate. For delete, capture a delete candidate, call `openModal`, confirm with `$array: "remove"`, write `changeType: "delete"`, clear draft/selection/delete-candidate state, and call `closeModal`. Do not set `props.visible` on modal/drawer elements; open/close actions drive `/ui/modals/{id}` and `/ui/drawers/{id}` automatically.
718
+
719
+ In programmatic React usage, function callbacks pass through and Mythik does not write selection or edit-change state automatically. The consumer owns the selected visual state through `selectedItemId` or by writing to `selectedItemPath` directly, and owns edit persistence by handling `onItemChange`.
720
+
721
+ Compose menus, drawers, modals, and inspectors outside the primitive. The map supplies context; the app owns domain actions.
722
+
723
+ ---
724
+
725
+ ## Special Primitives
726
+
727
+ ### kanban-board
728
+
729
+ Props: `columns` (column definitions). Board-style layout.
730
+
731
+ ### file-upload
732
+
733
+ | Prop | Type | Default | Description |
734
+ |---|---|---|---|
735
+ | `accept` | string | — | MIME types (`image/*`, `.pdf`) |
736
+ | `maxSize` | number | — | Max file size in bytes |
737
+ | `multiple` | boolean | `false` | Allow multiple files |
738
+ | `maxFiles` | number | — | Max file count |
739
+ | `preview` | boolean | — | Show file preview |
740
+ | `dropZone` | boolean | `false` | Drop zone UI |
741
+ | `autoUpload` | boolean | `true` | Upload immediately on select |
742
+ | `label` | string | — | Upload button label |
743
+ | `disabled` | boolean/expression | `false` | Disable |
744
+
745
+ **Events:** `on.upload`
746
+
747
+ Always set `accept` and `maxSize`. Read URLs from `target` path, not `/ui/uploads/*`.
748
+
749
+ `autoUpload: true` — simple uploads (avatar). `autoUpload: false` — multi-field forms (upload in submit chain).
750
+
751
+ **Auto upload pattern:**
752
+ ```json
753
+ {
754
+ "type": "file-upload",
755
+ "props": { "accept": "image/*", "maxSize": 5242880, "autoUpload": true },
756
+ "on": { "upload": { "action": "uploadFile", "params": { "bucket": "avatars", "target": "/form/avatarUrl" } } }
757
+ }
758
+ ```
759
+
760
+ **Manual upload pattern** (autoUpload false): place `uploadFile` before `submitForm` in action chain:
761
+ ```json
762
+ "on": { "press": [
763
+ { "action": "uploadFile", "params": { "bucket": "docs", "target": "/form/attachmentUrl" } },
764
+ { "action": "submitForm", "params": { "formId": "my-form", "url": "...", "method": "POST", "body": { "attachment": { "$state": "/form/attachmentUrl" } } } },
765
+ { "action": "showNotification", "params": { "type": "success", "message": "Sent!" } }
766
+ ] }
767
+ ```
768
+
769
+ ### camera
770
+
771
+ | Prop | Type | Default | Description |
772
+ |---|---|---|---|
773
+ | `label` | string | — | Button label |
774
+ | `accept` | string | — | `image/*`, `video/*` |
775
+ | `disabled` | boolean/expression | `false` | Disable |
776
+
777
+ **Events:** `on.capture`
778
+
779
+ ### signature
780
+
781
+ | Prop | Type | Default | Description |
782
+ |---|---|---|---|
783
+ | `width` | number | — | Canvas width |
784
+ | `height` | number | — | Canvas height |
785
+ | `lineColor` | string | — | Pen color |
786
+ | `lineWidth` | number | — | Pen width |
787
+ | `label` | string | — | Label text |
788
+
789
+ **Events:** `on.sign`
790
+
791
+ ### audio-player
792
+
793
+ | Prop | Type | Default | Description |
794
+ |---|---|---|---|
795
+ | `src` | string/expression | — | Audio URL |
796
+ | `label` | string | — | Player label |
797
+
798
+ ### skeleton
799
+
800
+ | Prop | Type | Default | Description |
801
+ |---|---|---|---|
802
+ | `variant` | string | — | Shape variant |
803
+ | `width` | string/number | — | Skeleton width |
804
+ | `height` | string/number | — | Skeleton height |
805
+ | `count` | number | — | Number of skeleton items |
806
+ | `gap` | number | — | Gap between items |
807
+
808
+ Auto-skeleton is zero config — set `skeleton: false` on static elements to opt out.
809
+
810
+ ### toast-container
811
+
812
+ | Prop | Type | Default | Description |
813
+ |---|---|---|---|
814
+ | `store` | string | — | State path for toast data |
815
+ | `position` | string | — | Screen position |
816
+ | `duration` | number | — | Auto-dismiss ms (`null` = persistent) |
817
+ | `maxVisible` | number | — | Max visible toasts |
818
+ | `offset` | number | — | Edge offset |
819
+ | `gap` | number | — | Gap between toasts |
820
+
821
+ `showNotification` renders automatically — no element needed unless custom positioning. Types: `success`, `error`, `warning`, `info`. Optional: `title`, `duration`.
822
+
823
+ ### screen-outlet
824
+
825
+ Props: none besides `style`. Renders nested screen content in AppSpec apps.
826
+
827
+ ---
828
+
829
+ ## Device Context (auto-tracked)
830
+
831
+ | State Path | Value |
832
+ |---|---|
833
+ | `/ui/device/viewportWidth` | Viewport width px |
834
+ | `/ui/device/viewportHeight` | Viewport height px |
835
+ | `/ui/device/platform` | `"web"`, `"ios"`, `"android"` |
836
+ | `/ui/device/orientation` | `"portrait"`, `"landscape"` |
837
+ | `/ui/device/colorScheme` | `"light"`, `"dark"` |
838
+
839
+ All auto-updated. Use `$breakpoint` for responsive layout, `$platform` for cross-platform branching.