@tachui/core 0.7.0-alpha1

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 (1327) hide show
  1. package/LICENSE +363 -0
  2. package/dist/assets/Asset.cjs +2 -0
  3. package/dist/assets/Asset.cjs.map +1 -0
  4. package/dist/assets/Asset.d.ts +11 -0
  5. package/dist/assets/Asset.d.ts.map +1 -0
  6. package/dist/assets/Asset.js +9 -0
  7. package/dist/assets/Asset.js.map +1 -0
  8. package/dist/assets/AssetCollection.cjs +2 -0
  9. package/dist/assets/AssetCollection.cjs.map +1 -0
  10. package/dist/assets/AssetCollection.d.ts +14 -0
  11. package/dist/assets/AssetCollection.d.ts.map +1 -0
  12. package/dist/assets/AssetCollection.js +44 -0
  13. package/dist/assets/AssetCollection.js.map +1 -0
  14. package/dist/assets/ColorAsset.cjs +2 -0
  15. package/dist/assets/ColorAsset.cjs.map +1 -0
  16. package/dist/assets/ColorAsset.d.ts +31 -0
  17. package/dist/assets/ColorAsset.d.ts.map +1 -0
  18. package/dist/assets/ColorAsset.js +114 -0
  19. package/dist/assets/ColorAsset.js.map +1 -0
  20. package/dist/assets/FontAsset.cjs +9 -0
  21. package/dist/assets/FontAsset.cjs.map +1 -0
  22. package/dist/assets/FontAsset.d.ts +114 -0
  23. package/dist/assets/FontAsset.d.ts.map +1 -0
  24. package/dist/assets/FontAsset.js +173 -0
  25. package/dist/assets/FontAsset.js.map +1 -0
  26. package/dist/assets/ImageAsset.cjs +2 -0
  27. package/dist/assets/ImageAsset.cjs.map +1 -0
  28. package/dist/assets/ImageAsset.d.ts +35 -0
  29. package/dist/assets/ImageAsset.d.ts.map +1 -0
  30. package/dist/assets/ImageAsset.js +39 -0
  31. package/dist/assets/ImageAsset.js.map +1 -0
  32. package/dist/assets/index.cjs +2 -0
  33. package/dist/assets/index.cjs.map +1 -0
  34. package/dist/assets/index.d.ts +26 -0
  35. package/dist/assets/index.d.ts.map +1 -0
  36. package/dist/assets/index.js +119 -0
  37. package/dist/assets/index.js.map +1 -0
  38. package/dist/assets/types.d.ts +70 -0
  39. package/dist/assets/types.d.ts.map +1 -0
  40. package/dist/bundles/common.d.ts +24 -0
  41. package/dist/bundles/common.d.ts.map +1 -0
  42. package/dist/bundles/complete.d.ts +27 -0
  43. package/dist/bundles/complete.d.ts.map +1 -0
  44. package/dist/bundles/essential.d.ts +24 -0
  45. package/dist/bundles/essential.d.ts.map +1 -0
  46. package/dist/bundles/minimal.d.ts +24 -0
  47. package/dist/bundles/minimal.d.ts.map +1 -0
  48. package/dist/bundles/production-minimal.d.ts +35 -0
  49. package/dist/bundles/production-minimal.d.ts.map +1 -0
  50. package/dist/common.cjs +2 -0
  51. package/dist/common.cjs.map +1 -0
  52. package/dist/common.js +985 -0
  53. package/dist/common.js.map +1 -0
  54. package/dist/compiler/advanced-parser.cjs +5 -0
  55. package/dist/compiler/advanced-parser.cjs.map +1 -0
  56. package/dist/compiler/advanced-parser.d.ts +113 -0
  57. package/dist/compiler/advanced-parser.d.ts.map +1 -0
  58. package/dist/compiler/advanced-parser.js +440 -0
  59. package/dist/compiler/advanced-parser.js.map +1 -0
  60. package/dist/compiler/codegen.cjs +6 -0
  61. package/dist/compiler/codegen.cjs.map +1 -0
  62. package/dist/compiler/codegen.d.ts +20 -0
  63. package/dist/compiler/codegen.d.ts.map +1 -0
  64. package/dist/compiler/codegen.js +241 -0
  65. package/dist/compiler/codegen.js.map +1 -0
  66. package/dist/compiler/enhanced-codegen.cjs +6 -0
  67. package/dist/compiler/enhanced-codegen.cjs.map +1 -0
  68. package/dist/compiler/enhanced-codegen.d.ts +121 -0
  69. package/dist/compiler/enhanced-codegen.d.ts.map +1 -0
  70. package/dist/compiler/enhanced-codegen.js +347 -0
  71. package/dist/compiler/enhanced-codegen.js.map +1 -0
  72. package/dist/compiler/index.cjs +2 -0
  73. package/dist/compiler/index.cjs.map +1 -0
  74. package/dist/compiler/index.d.ts +14 -0
  75. package/dist/compiler/index.d.ts.map +1 -0
  76. package/dist/compiler/index.js +13 -0
  77. package/dist/compiler/index.js.map +1 -0
  78. package/dist/compiler/parser.cjs +5 -0
  79. package/dist/compiler/parser.cjs.map +1 -0
  80. package/dist/compiler/parser.d.ts +12 -0
  81. package/dist/compiler/parser.d.ts.map +1 -0
  82. package/dist/compiler/parser.js +275 -0
  83. package/dist/compiler/parser.js.map +1 -0
  84. package/dist/compiler/plugin.cjs +33 -0
  85. package/dist/compiler/plugin.cjs.map +1 -0
  86. package/dist/compiler/plugin.d.ts +13 -0
  87. package/dist/compiler/plugin.d.ts.map +1 -0
  88. package/dist/compiler/plugin.js +103 -0
  89. package/dist/compiler/plugin.js.map +1 -0
  90. package/dist/compiler/types.d.ts +149 -0
  91. package/dist/compiler/types.d.ts.map +1 -0
  92. package/dist/components/BasicInput.cjs +2 -0
  93. package/dist/components/BasicInput.cjs.map +1 -0
  94. package/dist/components/BasicInput.d.ts +116 -0
  95. package/dist/components/BasicInput.d.ts.map +1 -0
  96. package/dist/components/BasicInput.js +182 -0
  97. package/dist/components/BasicInput.js.map +1 -0
  98. package/dist/components/Button.cjs +7 -0
  99. package/dist/components/Button.cjs.map +1 -0
  100. package/dist/components/Button.d.ts +252 -0
  101. package/dist/components/Button.d.ts.map +1 -0
  102. package/dist/components/Button.js +408 -0
  103. package/dist/components/Button.js.map +1 -0
  104. package/dist/components/Divider.cjs +2 -0
  105. package/dist/components/Divider.cjs.map +1 -0
  106. package/dist/components/Divider.d.ts +141 -0
  107. package/dist/components/Divider.d.ts.map +1 -0
  108. package/dist/components/Divider.js +187 -0
  109. package/dist/components/Divider.js.map +1 -0
  110. package/dist/components/EnhancedLink.cjs +2 -0
  111. package/dist/components/EnhancedLink.cjs.map +1 -0
  112. package/dist/components/EnhancedLink.d.ts +365 -0
  113. package/dist/components/EnhancedLink.d.ts.map +1 -0
  114. package/dist/components/EnhancedLink.js +345 -0
  115. package/dist/components/EnhancedLink.js.map +1 -0
  116. package/dist/components/Form.cjs +2 -0
  117. package/dist/components/Form.cjs.map +1 -0
  118. package/dist/components/Form.d.ts +141 -0
  119. package/dist/components/Form.d.ts.map +1 -0
  120. package/dist/components/Form.js +244 -0
  121. package/dist/components/Form.js.map +1 -0
  122. package/dist/components/Grid.cjs +2 -0
  123. package/dist/components/Grid.cjs.map +1 -0
  124. package/dist/components/Grid.d.ts +698 -0
  125. package/dist/components/Grid.d.ts.map +1 -0
  126. package/dist/components/Grid.js +1045 -0
  127. package/dist/components/Grid.js.map +1 -0
  128. package/dist/components/GridResponsive.cjs +2 -0
  129. package/dist/components/GridResponsive.cjs.map +1 -0
  130. package/dist/components/GridResponsive.d.ts +214 -0
  131. package/dist/components/GridResponsive.d.ts.map +1 -0
  132. package/dist/components/GridResponsive.js +382 -0
  133. package/dist/components/GridResponsive.js.map +1 -0
  134. package/dist/components/Image.cjs +2 -0
  135. package/dist/components/Image.cjs.map +1 -0
  136. package/dist/components/Image.d.ts +162 -0
  137. package/dist/components/Image.d.ts.map +1 -0
  138. package/dist/components/Image.js +212 -0
  139. package/dist/components/Image.js.map +1 -0
  140. package/dist/components/List.cjs +2 -0
  141. package/dist/components/List.cjs.map +1 -0
  142. package/dist/components/List.d.ts +287 -0
  143. package/dist/components/List.d.ts.map +1 -0
  144. package/dist/components/List.js +561 -0
  145. package/dist/components/List.js.map +1 -0
  146. package/dist/components/Menu.cjs +2 -0
  147. package/dist/components/Menu.cjs.map +1 -0
  148. package/dist/components/Menu.d.ts +159 -0
  149. package/dist/components/Menu.d.ts.map +1 -0
  150. package/dist/components/Menu.js +443 -0
  151. package/dist/components/Menu.js.map +1 -0
  152. package/dist/components/Picker.cjs +2 -0
  153. package/dist/components/Picker.cjs.map +1 -0
  154. package/dist/components/Picker.d.ts +153 -0
  155. package/dist/components/Picker.d.ts.map +1 -0
  156. package/dist/components/Picker.js +478 -0
  157. package/dist/components/Picker.js.map +1 -0
  158. package/dist/components/ScrollView.cjs +6 -0
  159. package/dist/components/ScrollView.cjs.map +1 -0
  160. package/dist/components/ScrollView.d.ts +222 -0
  161. package/dist/components/ScrollView.d.ts.map +1 -0
  162. package/dist/components/ScrollView.js +363 -0
  163. package/dist/components/ScrollView.js.map +1 -0
  164. package/dist/components/Section.cjs +2 -0
  165. package/dist/components/Section.cjs.map +1 -0
  166. package/dist/components/Section.d.ts +153 -0
  167. package/dist/components/Section.d.ts.map +1 -0
  168. package/dist/components/Section.js +323 -0
  169. package/dist/components/Section.js.map +1 -0
  170. package/dist/components/Show.cjs +2 -0
  171. package/dist/components/Show.cjs.map +1 -0
  172. package/dist/components/Show.d.ts +64 -0
  173. package/dist/components/Show.d.ts.map +1 -0
  174. package/dist/components/Show.js +112 -0
  175. package/dist/components/Show.js.map +1 -0
  176. package/dist/components/Spacer.cjs +2 -0
  177. package/dist/components/Spacer.cjs.map +1 -0
  178. package/dist/components/Spacer.d.ts +35 -0
  179. package/dist/components/Spacer.d.ts.map +1 -0
  180. package/dist/components/Spacer.js +53 -0
  181. package/dist/components/Spacer.js.map +1 -0
  182. package/dist/components/Text.cjs +2 -0
  183. package/dist/components/Text.cjs.map +1 -0
  184. package/dist/components/Text.d.ts +242 -0
  185. package/dist/components/Text.d.ts.map +1 -0
  186. package/dist/components/Text.js +193 -0
  187. package/dist/components/Text.js.map +1 -0
  188. package/dist/components/Toggle.cjs +2 -0
  189. package/dist/components/Toggle.cjs.map +1 -0
  190. package/dist/components/Toggle.d.ts +207 -0
  191. package/dist/components/Toggle.d.ts.map +1 -0
  192. package/dist/components/Toggle.js +477 -0
  193. package/dist/components/Toggle.js.map +1 -0
  194. package/dist/components/index.cjs +2 -0
  195. package/dist/components/index.cjs.map +1 -0
  196. package/dist/components/index.d.ts +45 -0
  197. package/dist/components/index.d.ts.map +1 -0
  198. package/dist/components/index.js +104 -0
  199. package/dist/components/index.js.map +1 -0
  200. package/dist/components/wrapper.cjs +2 -0
  201. package/dist/components/wrapper.cjs.map +1 -0
  202. package/dist/components/wrapper.d.ts +249 -0
  203. package/dist/components/wrapper.d.ts.map +1 -0
  204. package/dist/components/wrapper.js +484 -0
  205. package/dist/components/wrapper.js.map +1 -0
  206. package/dist/concatenation/concatenatable.cjs +2 -0
  207. package/dist/concatenation/concatenatable.cjs.map +1 -0
  208. package/dist/concatenation/concatenatable.d.ts +63 -0
  209. package/dist/concatenation/concatenatable.d.ts.map +1 -0
  210. package/dist/concatenation/concatenatable.js +118 -0
  211. package/dist/concatenation/concatenatable.js.map +1 -0
  212. package/dist/concatenation/concatenated-component.cjs +2 -0
  213. package/dist/concatenation/concatenated-component.cjs.map +1 -0
  214. package/dist/concatenation/concatenated-component.d.ts +110 -0
  215. package/dist/concatenation/concatenated-component.d.ts.map +1 -0
  216. package/dist/concatenation/concatenated-component.js +276 -0
  217. package/dist/concatenation/concatenated-component.js.map +1 -0
  218. package/dist/concatenation/index.d.ts +13 -0
  219. package/dist/concatenation/index.d.ts.map +1 -0
  220. package/dist/concatenation/text-optimizer.cjs +2 -0
  221. package/dist/concatenation/text-optimizer.cjs.map +1 -0
  222. package/dist/concatenation/text-optimizer.d.ts +104 -0
  223. package/dist/concatenation/text-optimizer.d.ts.map +1 -0
  224. package/dist/concatenation/text-optimizer.js +236 -0
  225. package/dist/concatenation/text-optimizer.js.map +1 -0
  226. package/dist/concatenation/types.cjs +2 -0
  227. package/dist/concatenation/types.cjs.map +1 -0
  228. package/dist/concatenation/types.d.ts +88 -0
  229. package/dist/concatenation/types.d.ts.map +1 -0
  230. package/dist/concatenation/types.js +13 -0
  231. package/dist/concatenation/types.js.map +1 -0
  232. package/dist/constants/frame-utils.cjs +2 -0
  233. package/dist/constants/frame-utils.cjs.map +1 -0
  234. package/dist/constants/frame-utils.d.ts +68 -0
  235. package/dist/constants/frame-utils.d.ts.map +1 -0
  236. package/dist/constants/frame-utils.js +116 -0
  237. package/dist/constants/frame-utils.js.map +1 -0
  238. package/dist/constants/index.d.ts +8 -0
  239. package/dist/constants/index.d.ts.map +1 -0
  240. package/dist/constants/layout.cjs +2 -0
  241. package/dist/constants/layout.cjs.map +1 -0
  242. package/dist/constants/layout.d.ts +60 -0
  243. package/dist/constants/layout.d.ts.map +1 -0
  244. package/dist/constants/layout.js +46 -0
  245. package/dist/constants/layout.js.map +1 -0
  246. package/dist/css-classes/component-base.cjs +2 -0
  247. package/dist/css-classes/component-base.cjs.map +1 -0
  248. package/dist/css-classes/component-base.d.ts +40 -0
  249. package/dist/css-classes/component-base.d.ts.map +1 -0
  250. package/dist/css-classes/component-base.js +62 -0
  251. package/dist/css-classes/component-base.js.map +1 -0
  252. package/dist/css-classes/css-class-manager.cjs +2 -0
  253. package/dist/css-classes/css-class-manager.cjs.map +1 -0
  254. package/dist/css-classes/css-class-manager.d.ts +89 -0
  255. package/dist/css-classes/css-class-manager.d.ts.map +1 -0
  256. package/dist/css-classes/css-class-manager.js +209 -0
  257. package/dist/css-classes/css-class-manager.js.map +1 -0
  258. package/dist/css-classes/dom-integration.cjs +2 -0
  259. package/dist/css-classes/dom-integration.cjs.map +1 -0
  260. package/dist/css-classes/dom-integration.d.ts +76 -0
  261. package/dist/css-classes/dom-integration.d.ts.map +1 -0
  262. package/dist/css-classes/dom-integration.js +67 -0
  263. package/dist/css-classes/dom-integration.js.map +1 -0
  264. package/dist/css-classes/enhanced-renderer.cjs +2 -0
  265. package/dist/css-classes/enhanced-renderer.cjs.map +1 -0
  266. package/dist/css-classes/enhanced-renderer.d.ts +42 -0
  267. package/dist/css-classes/enhanced-renderer.d.ts.map +1 -0
  268. package/dist/css-classes/enhanced-renderer.js +73 -0
  269. package/dist/css-classes/enhanced-renderer.js.map +1 -0
  270. package/dist/css-classes/index.d.ts +14 -0
  271. package/dist/css-classes/index.d.ts.map +1 -0
  272. package/dist/css-classes/types.d.ts +59 -0
  273. package/dist/css-classes/types.d.ts.map +1 -0
  274. package/dist/css-classes/utilities.cjs +2 -0
  275. package/dist/css-classes/utilities.cjs.map +1 -0
  276. package/dist/css-classes/utilities.d.ts +104 -0
  277. package/dist/css-classes/utilities.d.ts.map +1 -0
  278. package/dist/css-classes/utilities.js +41 -0
  279. package/dist/css-classes/utilities.js.map +1 -0
  280. package/dist/debug/index.d.ts +61 -0
  281. package/dist/debug/index.d.ts.map +1 -0
  282. package/dist/debug.cjs +52 -0
  283. package/dist/debug.cjs.map +1 -0
  284. package/dist/debug.js +179 -0
  285. package/dist/debug.js.map +1 -0
  286. package/dist/developer-experience/enhanced-errors.d.ts +128 -0
  287. package/dist/developer-experience/enhanced-errors.d.ts.map +1 -0
  288. package/dist/developer-experience/enhanced-types.d.ts +281 -0
  289. package/dist/developer-experience/enhanced-types.d.ts.map +1 -0
  290. package/dist/developer-experience/index.d.ts +44 -0
  291. package/dist/developer-experience/index.d.ts.map +1 -0
  292. package/dist/essential.cjs +2 -0
  293. package/dist/essential.cjs.map +1 -0
  294. package/dist/essential.js +968 -0
  295. package/dist/essential.js.map +1 -0
  296. package/dist/gradients/css-generator.cjs +2 -0
  297. package/dist/gradients/css-generator.cjs.map +1 -0
  298. package/dist/gradients/css-generator.d.ts +10 -0
  299. package/dist/gradients/css-generator.d.ts.map +1 -0
  300. package/dist/gradients/css-generator.js +100 -0
  301. package/dist/gradients/css-generator.js.map +1 -0
  302. package/dist/gradients/examples.cjs +2 -0
  303. package/dist/gradients/examples.cjs.map +1 -0
  304. package/dist/gradients/examples.d.ts +432 -0
  305. package/dist/gradients/examples.d.ts.map +1 -0
  306. package/dist/gradients/examples.js +555 -0
  307. package/dist/gradients/examples.js.map +1 -0
  308. package/dist/gradients/gradient-asset.cjs +2 -0
  309. package/dist/gradients/gradient-asset.cjs.map +1 -0
  310. package/dist/gradients/gradient-asset.d.ts +10 -0
  311. package/dist/gradients/gradient-asset.d.ts.map +1 -0
  312. package/dist/gradients/gradient-asset.js +22 -0
  313. package/dist/gradients/gradient-asset.js.map +1 -0
  314. package/dist/gradients/index.cjs +2 -0
  315. package/dist/gradients/index.cjs.map +1 -0
  316. package/dist/gradients/index.d.ts +19 -0
  317. package/dist/gradients/index.d.ts.map +1 -0
  318. package/dist/gradients/index.js +78 -0
  319. package/dist/gradients/index.js.map +1 -0
  320. package/dist/gradients/performance.cjs +2 -0
  321. package/dist/gradients/performance.cjs.map +1 -0
  322. package/dist/gradients/performance.d.ts +146 -0
  323. package/dist/gradients/performance.d.ts.map +1 -0
  324. package/dist/gradients/performance.js +237 -0
  325. package/dist/gradients/performance.js.map +1 -0
  326. package/dist/gradients/presets.cjs +2 -0
  327. package/dist/gradients/presets.cjs.map +1 -0
  328. package/dist/gradients/presets.d.ts +165 -0
  329. package/dist/gradients/presets.d.ts.map +1 -0
  330. package/dist/gradients/presets.js +254 -0
  331. package/dist/gradients/presets.js.map +1 -0
  332. package/dist/gradients/reactive.cjs +2 -0
  333. package/dist/gradients/reactive.cjs.map +1 -0
  334. package/dist/gradients/reactive.d.ts +167 -0
  335. package/dist/gradients/reactive.d.ts.map +1 -0
  336. package/dist/gradients/reactive.js +239 -0
  337. package/dist/gradients/reactive.js.map +1 -0
  338. package/dist/gradients/state-gradient-asset.cjs +2 -0
  339. package/dist/gradients/state-gradient-asset.cjs.map +1 -0
  340. package/dist/gradients/state-gradient-asset.d.ts +67 -0
  341. package/dist/gradients/state-gradient-asset.d.ts.map +1 -0
  342. package/dist/gradients/state-gradient-asset.js +111 -0
  343. package/dist/gradients/state-gradient-asset.js.map +1 -0
  344. package/dist/gradients/types.d.ts +94 -0
  345. package/dist/gradients/types.d.ts.map +1 -0
  346. package/dist/gradients/utils.cjs +2 -0
  347. package/dist/gradients/utils.cjs.map +1 -0
  348. package/dist/gradients/utils.d.ts +313 -0
  349. package/dist/gradients/utils.d.ts.map +1 -0
  350. package/dist/gradients/utils.js +385 -0
  351. package/dist/gradients/utils.js.map +1 -0
  352. package/dist/gradients/validation.cjs +2 -0
  353. package/dist/gradients/validation.cjs.map +1 -0
  354. package/dist/gradients/validation.d.ts +156 -0
  355. package/dist/gradients/validation.d.ts.map +1 -0
  356. package/dist/gradients/validation.js +209 -0
  357. package/dist/gradients/validation.js.map +1 -0
  358. package/dist/index.cjs +2 -0
  359. package/dist/index.cjs.map +1 -0
  360. package/dist/index.d.ts +26 -0
  361. package/dist/index.d.ts.map +1 -0
  362. package/dist/index.js +965 -0
  363. package/dist/index.js.map +1 -0
  364. package/dist/index2.cjs +2 -0
  365. package/dist/index2.cjs.map +1 -0
  366. package/dist/index2.js +293 -0
  367. package/dist/index2.js.map +1 -0
  368. package/dist/lifecycle/hooks.cjs +2 -0
  369. package/dist/lifecycle/hooks.cjs.map +1 -0
  370. package/dist/lifecycle/hooks.d.ts +101 -0
  371. package/dist/lifecycle/hooks.d.ts.map +1 -0
  372. package/dist/lifecycle/hooks.js +159 -0
  373. package/dist/lifecycle/hooks.js.map +1 -0
  374. package/dist/minimal-prod.cjs +2 -0
  375. package/dist/minimal-prod.cjs.map +1 -0
  376. package/dist/minimal-prod.js +193 -0
  377. package/dist/minimal-prod.js.map +1 -0
  378. package/dist/minimal.cjs +2 -0
  379. package/dist/minimal.cjs.map +1 -0
  380. package/dist/minimal.js +968 -0
  381. package/dist/minimal.js.map +1 -0
  382. package/dist/modifiers/as-html-validator.cjs +2 -0
  383. package/dist/modifiers/as-html-validator.cjs.map +1 -0
  384. package/dist/modifiers/as-html-validator.d.ts +20 -0
  385. package/dist/modifiers/as-html-validator.d.ts.map +1 -0
  386. package/dist/modifiers/as-html-validator.js +47 -0
  387. package/dist/modifiers/as-html-validator.js.map +1 -0
  388. package/dist/modifiers/as-html.cjs +2 -0
  389. package/dist/modifiers/as-html.cjs.map +1 -0
  390. package/dist/modifiers/as-html.d.ts +65 -0
  391. package/dist/modifiers/as-html.d.ts.map +1 -0
  392. package/dist/modifiers/as-html.js +71 -0
  393. package/dist/modifiers/as-html.js.map +1 -0
  394. package/dist/modifiers/attributes.cjs +2 -0
  395. package/dist/modifiers/attributes.cjs.map +1 -0
  396. package/dist/modifiers/attributes.d.ts +203 -0
  397. package/dist/modifiers/attributes.d.ts.map +1 -0
  398. package/dist/modifiers/attributes.js +272 -0
  399. package/dist/modifiers/attributes.js.map +1 -0
  400. package/dist/modifiers/backdrop.cjs +2 -0
  401. package/dist/modifiers/backdrop.cjs.map +1 -0
  402. package/dist/modifiers/backdrop.d.ts +59 -0
  403. package/dist/modifiers/backdrop.d.ts.map +1 -0
  404. package/dist/modifiers/backdrop.js +109 -0
  405. package/dist/modifiers/backdrop.js.map +1 -0
  406. package/dist/modifiers/background.cjs +2 -0
  407. package/dist/modifiers/background.cjs.map +1 -0
  408. package/dist/modifiers/background.d.ts +21 -0
  409. package/dist/modifiers/background.d.ts.map +1 -0
  410. package/dist/modifiers/background.js +67 -0
  411. package/dist/modifiers/background.js.map +1 -0
  412. package/dist/modifiers/base.cjs +25 -0
  413. package/dist/modifiers/base.cjs.map +1 -0
  414. package/dist/modifiers/base.d.ts +156 -0
  415. package/dist/modifiers/base.d.ts.map +1 -0
  416. package/dist/modifiers/base.js +745 -0
  417. package/dist/modifiers/base.js.map +1 -0
  418. package/dist/modifiers/basic-sanitizer.cjs +2 -0
  419. package/dist/modifiers/basic-sanitizer.cjs.map +1 -0
  420. package/dist/modifiers/basic-sanitizer.d.ts +54 -0
  421. package/dist/modifiers/basic-sanitizer.d.ts.map +1 -0
  422. package/dist/modifiers/basic-sanitizer.js +162 -0
  423. package/dist/modifiers/basic-sanitizer.js.map +1 -0
  424. package/dist/modifiers/border.cjs +2 -0
  425. package/dist/modifiers/border.cjs.map +1 -0
  426. package/dist/modifiers/border.d.ts +217 -0
  427. package/dist/modifiers/border.d.ts.map +1 -0
  428. package/dist/modifiers/border.js +160 -0
  429. package/dist/modifiers/border.js.map +1 -0
  430. package/dist/modifiers/builder.cjs +2 -0
  431. package/dist/modifiers/builder.cjs.map +1 -0
  432. package/dist/modifiers/builder.d.ts +377 -0
  433. package/dist/modifiers/builder.d.ts.map +1 -0
  434. package/dist/modifiers/builder.js +930 -0
  435. package/dist/modifiers/builder.js.map +1 -0
  436. package/dist/modifiers/core.cjs +2 -0
  437. package/dist/modifiers/core.cjs.map +1 -0
  438. package/dist/modifiers/core.d.ts +407 -0
  439. package/dist/modifiers/core.d.ts.map +1 -0
  440. package/dist/modifiers/core.js +398 -0
  441. package/dist/modifiers/core.js.map +1 -0
  442. package/dist/modifiers/css.cjs +2 -0
  443. package/dist/modifiers/css.cjs.map +1 -0
  444. package/dist/modifiers/css.d.ts +86 -0
  445. package/dist/modifiers/css.d.ts.map +1 -0
  446. package/dist/modifiers/css.js +50 -0
  447. package/dist/modifiers/css.js.map +1 -0
  448. package/dist/modifiers/effects.cjs +2 -0
  449. package/dist/modifiers/effects.cjs.map +1 -0
  450. package/dist/modifiers/effects.d.ts +159 -0
  451. package/dist/modifiers/effects.d.ts.map +1 -0
  452. package/dist/modifiers/effects.js +178 -0
  453. package/dist/modifiers/effects.js.map +1 -0
  454. package/dist/modifiers/elements.cjs +2 -0
  455. package/dist/modifiers/elements.cjs.map +1 -0
  456. package/dist/modifiers/elements.d.ts +240 -0
  457. package/dist/modifiers/elements.d.ts.map +1 -0
  458. package/dist/modifiers/elements.js +216 -0
  459. package/dist/modifiers/elements.js.map +1 -0
  460. package/dist/modifiers/filters.cjs +2 -0
  461. package/dist/modifiers/filters.cjs.map +1 -0
  462. package/dist/modifiers/filters.d.ts +275 -0
  463. package/dist/modifiers/filters.d.ts.map +1 -0
  464. package/dist/modifiers/filters.js +223 -0
  465. package/dist/modifiers/filters.js.map +1 -0
  466. package/dist/modifiers/flexbox.cjs +2 -0
  467. package/dist/modifiers/flexbox.cjs.map +1 -0
  468. package/dist/modifiers/flexbox.d.ts +82 -0
  469. package/dist/modifiers/flexbox.d.ts.map +1 -0
  470. package/dist/modifiers/flexbox.js +56 -0
  471. package/dist/modifiers/flexbox.js.map +1 -0
  472. package/dist/modifiers/font.cjs +2 -0
  473. package/dist/modifiers/font.cjs.map +1 -0
  474. package/dist/modifiers/font.d.ts +71 -0
  475. package/dist/modifiers/font.d.ts.map +1 -0
  476. package/dist/modifiers/font.js +60 -0
  477. package/dist/modifiers/font.js.map +1 -0
  478. package/dist/modifiers/grid.cjs +2 -0
  479. package/dist/modifiers/grid.cjs.map +1 -0
  480. package/dist/modifiers/grid.d.ts +92 -0
  481. package/dist/modifiers/grid.d.ts.map +1 -0
  482. package/dist/modifiers/grid.js +92 -0
  483. package/dist/modifiers/grid.js.map +1 -0
  484. package/dist/modifiers/index.d.ts +58 -0
  485. package/dist/modifiers/index.d.ts.map +1 -0
  486. package/dist/modifiers/margin.cjs +2 -0
  487. package/dist/modifiers/margin.cjs.map +1 -0
  488. package/dist/modifiers/margin.d.ts +128 -0
  489. package/dist/modifiers/margin.d.ts.map +1 -0
  490. package/dist/modifiers/margin.js +65 -0
  491. package/dist/modifiers/margin.js.map +1 -0
  492. package/dist/modifiers/padding.cjs +2 -0
  493. package/dist/modifiers/padding.cjs.map +1 -0
  494. package/dist/modifiers/padding.d.ts +204 -0
  495. package/dist/modifiers/padding.d.ts.map +1 -0
  496. package/dist/modifiers/padding.js +109 -0
  497. package/dist/modifiers/padding.js.map +1 -0
  498. package/dist/modifiers/registry.cjs +2 -0
  499. package/dist/modifiers/registry.cjs.map +1 -0
  500. package/dist/modifiers/registry.d.ts +69 -0
  501. package/dist/modifiers/registry.d.ts.map +1 -0
  502. package/dist/modifiers/registry.js +163 -0
  503. package/dist/modifiers/registry.js.map +1 -0
  504. package/dist/modifiers/responsive/advanced-utilities.cjs +2 -0
  505. package/dist/modifiers/responsive/advanced-utilities.cjs.map +1 -0
  506. package/dist/modifiers/responsive/advanced-utilities.d.ts +118 -0
  507. package/dist/modifiers/responsive/advanced-utilities.d.ts.map +1 -0
  508. package/dist/modifiers/responsive/advanced-utilities.js +291 -0
  509. package/dist/modifiers/responsive/advanced-utilities.js.map +1 -0
  510. package/dist/modifiers/responsive/breakpoints.cjs +2 -0
  511. package/dist/modifiers/responsive/breakpoints.cjs.map +1 -0
  512. package/dist/modifiers/responsive/breakpoints.d.ts +81 -0
  513. package/dist/modifiers/responsive/breakpoints.d.ts.map +1 -0
  514. package/dist/modifiers/responsive/breakpoints.js +168 -0
  515. package/dist/modifiers/responsive/breakpoints.js.map +1 -0
  516. package/dist/modifiers/responsive/css-generator.cjs +5 -0
  517. package/dist/modifiers/responsive/css-generator.cjs.map +1 -0
  518. package/dist/modifiers/responsive/css-generator.d.ts +100 -0
  519. package/dist/modifiers/responsive/css-generator.d.ts.map +1 -0
  520. package/dist/modifiers/responsive/css-generator.js +261 -0
  521. package/dist/modifiers/responsive/css-generator.js.map +1 -0
  522. package/dist/modifiers/responsive/dev-tools.cjs +77 -0
  523. package/dist/modifiers/responsive/dev-tools.cjs.map +1 -0
  524. package/dist/modifiers/responsive/dev-tools.d.ts +107 -0
  525. package/dist/modifiers/responsive/dev-tools.d.ts.map +1 -0
  526. package/dist/modifiers/responsive/dev-tools.js +380 -0
  527. package/dist/modifiers/responsive/dev-tools.js.map +1 -0
  528. package/dist/modifiers/responsive/index.d.ts +28 -0
  529. package/dist/modifiers/responsive/index.d.ts.map +1 -0
  530. package/dist/modifiers/responsive/layout-patterns.cjs +2 -0
  531. package/dist/modifiers/responsive/layout-patterns.cjs.map +1 -0
  532. package/dist/modifiers/responsive/layout-patterns.d.ts +230 -0
  533. package/dist/modifiers/responsive/layout-patterns.d.ts.map +1 -0
  534. package/dist/modifiers/responsive/layout-patterns.js +254 -0
  535. package/dist/modifiers/responsive/layout-patterns.js.map +1 -0
  536. package/dist/modifiers/responsive/performance.cjs +3 -0
  537. package/dist/modifiers/responsive/performance.cjs.map +1 -0
  538. package/dist/modifiers/responsive/performance.d.ts +130 -0
  539. package/dist/modifiers/responsive/performance.d.ts.map +1 -0
  540. package/dist/modifiers/responsive/performance.js +212 -0
  541. package/dist/modifiers/responsive/performance.js.map +1 -0
  542. package/dist/modifiers/responsive/responsive-builder.cjs +2 -0
  543. package/dist/modifiers/responsive/responsive-builder.cjs.map +1 -0
  544. package/dist/modifiers/responsive/responsive-builder.d.ts +133 -0
  545. package/dist/modifiers/responsive/responsive-builder.d.ts.map +1 -0
  546. package/dist/modifiers/responsive/responsive-builder.js +272 -0
  547. package/dist/modifiers/responsive/responsive-builder.js.map +1 -0
  548. package/dist/modifiers/responsive/responsive-modifier.cjs +3 -0
  549. package/dist/modifiers/responsive/responsive-modifier.cjs.map +1 -0
  550. package/dist/modifiers/responsive/responsive-modifier.d.ts +123 -0
  551. package/dist/modifiers/responsive/responsive-modifier.d.ts.map +1 -0
  552. package/dist/modifiers/responsive/responsive-modifier.js +204 -0
  553. package/dist/modifiers/responsive/responsive-modifier.js.map +1 -0
  554. package/dist/modifiers/responsive/types.cjs +2 -0
  555. package/dist/modifiers/responsive/types.cjs.map +1 -0
  556. package/dist/modifiers/responsive/types.d.ts +183 -0
  557. package/dist/modifiers/responsive/types.d.ts.map +1 -0
  558. package/dist/modifiers/responsive/types.js +26 -0
  559. package/dist/modifiers/responsive/types.js.map +1 -0
  560. package/dist/modifiers/responsive/utilities.cjs +16 -0
  561. package/dist/modifiers/responsive/utilities.cjs.map +1 -0
  562. package/dist/modifiers/responsive/utilities.d.ts +149 -0
  563. package/dist/modifiers/responsive/utilities.d.ts.map +1 -0
  564. package/dist/modifiers/responsive/utilities.js +273 -0
  565. package/dist/modifiers/responsive/utilities.js.map +1 -0
  566. package/dist/modifiers/scroll.cjs +2 -0
  567. package/dist/modifiers/scroll.cjs.map +1 -0
  568. package/dist/modifiers/scroll.d.ts +143 -0
  569. package/dist/modifiers/scroll.d.ts.map +1 -0
  570. package/dist/modifiers/scroll.js +82 -0
  571. package/dist/modifiers/scroll.js.map +1 -0
  572. package/dist/modifiers/shadows.cjs +2 -0
  573. package/dist/modifiers/shadows.cjs.map +1 -0
  574. package/dist/modifiers/shadows.d.ts +114 -0
  575. package/dist/modifiers/shadows.d.ts.map +1 -0
  576. package/dist/modifiers/shadows.js +147 -0
  577. package/dist/modifiers/shadows.js.map +1 -0
  578. package/dist/modifiers/size.cjs +2 -0
  579. package/dist/modifiers/size.cjs.map +1 -0
  580. package/dist/modifiers/size.d.ts +113 -0
  581. package/dist/modifiers/size.d.ts.map +1 -0
  582. package/dist/modifiers/size.js +74 -0
  583. package/dist/modifiers/size.js.map +1 -0
  584. package/dist/modifiers/text.cjs +2 -0
  585. package/dist/modifiers/text.cjs.map +1 -0
  586. package/dist/modifiers/text.d.ts +147 -0
  587. package/dist/modifiers/text.d.ts.map +1 -0
  588. package/dist/modifiers/text.js +166 -0
  589. package/dist/modifiers/text.js.map +1 -0
  590. package/dist/modifiers/transformations.cjs +2 -0
  591. package/dist/modifiers/transformations.cjs.map +1 -0
  592. package/dist/modifiers/transformations.d.ts +329 -0
  593. package/dist/modifiers/transformations.d.ts.map +1 -0
  594. package/dist/modifiers/transformations.js +216 -0
  595. package/dist/modifiers/transformations.js.map +1 -0
  596. package/dist/modifiers/transitions.cjs +2 -0
  597. package/dist/modifiers/transitions.cjs.map +1 -0
  598. package/dist/modifiers/transitions.d.ts +98 -0
  599. package/dist/modifiers/transitions.d.ts.map +1 -0
  600. package/dist/modifiers/transitions.js +102 -0
  601. package/dist/modifiers/transitions.js.map +1 -0
  602. package/dist/modifiers/types.cjs +2 -0
  603. package/dist/modifiers/types.cjs.map +1 -0
  604. package/dist/modifiers/types.d.ts +655 -0
  605. package/dist/modifiers/types.d.ts.map +1 -0
  606. package/dist/modifiers/types.js +5 -0
  607. package/dist/modifiers/types.js.map +1 -0
  608. package/dist/modifiers/typography.cjs +2 -0
  609. package/dist/modifiers/typography.cjs.map +1 -0
  610. package/dist/modifiers/typography.d.ts +192 -0
  611. package/dist/modifiers/typography.d.ts.map +1 -0
  612. package/dist/modifiers/typography.js +76 -0
  613. package/dist/modifiers/typography.js.map +1 -0
  614. package/dist/modifiers/utility.cjs +2 -0
  615. package/dist/modifiers/utility.cjs.map +1 -0
  616. package/dist/modifiers/utility.d.ts +69 -0
  617. package/dist/modifiers/utility.d.ts.map +1 -0
  618. package/dist/modifiers/utility.js +71 -0
  619. package/dist/modifiers/utility.js.map +1 -0
  620. package/dist/modifiers/utils.cjs +2 -0
  621. package/dist/modifiers/utils.cjs.map +1 -0
  622. package/dist/modifiers/utils.d.ts +75 -0
  623. package/dist/modifiers/utils.d.ts.map +1 -0
  624. package/dist/modifiers/utils.js +250 -0
  625. package/dist/modifiers/utils.js.map +1 -0
  626. package/dist/plugins/component-loader-registry.d.ts +143 -0
  627. package/dist/plugins/component-loader-registry.d.ts.map +1 -0
  628. package/dist/plugins/index.cjs +2 -0
  629. package/dist/plugins/index.cjs.map +1 -0
  630. package/dist/plugins/index.d.ts +17 -0
  631. package/dist/plugins/index.d.ts.map +1 -0
  632. package/dist/plugins/index.js +34 -0
  633. package/dist/plugins/index.js.map +1 -0
  634. package/dist/plugins/legacy-adapter.cjs +2 -0
  635. package/dist/plugins/legacy-adapter.cjs.map +1 -0
  636. package/dist/plugins/legacy-adapter.d.ts +35 -0
  637. package/dist/plugins/legacy-adapter.d.ts.map +1 -0
  638. package/dist/plugins/legacy-adapter.js +30 -0
  639. package/dist/plugins/legacy-adapter.js.map +1 -0
  640. package/dist/plugins/simplified-component-registry.cjs +2 -0
  641. package/dist/plugins/simplified-component-registry.cjs.map +1 -0
  642. package/dist/plugins/simplified-component-registry.d.ts +40 -0
  643. package/dist/plugins/simplified-component-registry.d.ts.map +1 -0
  644. package/dist/plugins/simplified-component-registry.js +71 -0
  645. package/dist/plugins/simplified-component-registry.js.map +1 -0
  646. package/dist/plugins/simplified-error-handler.cjs +2 -0
  647. package/dist/plugins/simplified-error-handler.cjs.map +1 -0
  648. package/dist/plugins/simplified-error-handler.d.ts +83 -0
  649. package/dist/plugins/simplified-error-handler.d.ts.map +1 -0
  650. package/dist/plugins/simplified-error-handler.js +154 -0
  651. package/dist/plugins/simplified-error-handler.js.map +1 -0
  652. package/dist/plugins/simplified-index.d.ts +17 -0
  653. package/dist/plugins/simplified-index.d.ts.map +1 -0
  654. package/dist/plugins/simplified-lazy-loader.cjs +2 -0
  655. package/dist/plugins/simplified-lazy-loader.cjs.map +1 -0
  656. package/dist/plugins/simplified-lazy-loader.d.ts +65 -0
  657. package/dist/plugins/simplified-lazy-loader.d.ts.map +1 -0
  658. package/dist/plugins/simplified-lazy-loader.js +129 -0
  659. package/dist/plugins/simplified-lazy-loader.js.map +1 -0
  660. package/dist/plugins/simplified-plugin-manager.cjs +2 -0
  661. package/dist/plugins/simplified-plugin-manager.cjs.map +1 -0
  662. package/dist/plugins/simplified-plugin-manager.d.ts +24 -0
  663. package/dist/plugins/simplified-plugin-manager.d.ts.map +1 -0
  664. package/dist/plugins/simplified-plugin-manager.js +51 -0
  665. package/dist/plugins/simplified-plugin-manager.js.map +1 -0
  666. package/dist/plugins/simplified-tachui-instance.cjs +2 -0
  667. package/dist/plugins/simplified-tachui-instance.cjs.map +1 -0
  668. package/dist/plugins/simplified-tachui-instance.d.ts +54 -0
  669. package/dist/plugins/simplified-tachui-instance.d.ts.map +1 -0
  670. package/dist/plugins/simplified-tachui-instance.js +88 -0
  671. package/dist/plugins/simplified-tachui-instance.js.map +1 -0
  672. package/dist/plugins/simplified-types.cjs +2 -0
  673. package/dist/plugins/simplified-types.cjs.map +1 -0
  674. package/dist/plugins/simplified-types.d.ts +63 -0
  675. package/dist/plugins/simplified-types.d.ts.map +1 -0
  676. package/dist/plugins/simplified-types.js +9 -0
  677. package/dist/plugins/simplified-types.js.map +1 -0
  678. package/dist/plugins/simplified-utils.cjs +2 -0
  679. package/dist/plugins/simplified-utils.cjs.map +1 -0
  680. package/dist/plugins/simplified-utils.d.ts +39 -0
  681. package/dist/plugins/simplified-utils.d.ts.map +1 -0
  682. package/dist/plugins/simplified-utils.js +40 -0
  683. package/dist/plugins/simplified-utils.js.map +1 -0
  684. package/dist/reactive/cleanup.cjs +2 -0
  685. package/dist/reactive/cleanup.cjs.map +1 -0
  686. package/dist/reactive/cleanup.d.ts +115 -0
  687. package/dist/reactive/cleanup.d.ts.map +1 -0
  688. package/dist/reactive/cleanup.js +62 -0
  689. package/dist/reactive/cleanup.js.map +1 -0
  690. package/dist/reactive/computed.cjs +2 -0
  691. package/dist/reactive/computed.cjs.map +1 -0
  692. package/dist/reactive/computed.d.ts +115 -0
  693. package/dist/reactive/computed.d.ts.map +1 -0
  694. package/dist/reactive/computed.js +121 -0
  695. package/dist/reactive/computed.js.map +1 -0
  696. package/dist/reactive/context.cjs +2 -0
  697. package/dist/reactive/context.cjs.map +1 -0
  698. package/dist/reactive/context.d.ts +82 -0
  699. package/dist/reactive/context.d.ts.map +1 -0
  700. package/dist/reactive/context.js +143 -0
  701. package/dist/reactive/context.js.map +1 -0
  702. package/dist/reactive/effect.cjs +2 -0
  703. package/dist/reactive/effect.cjs.map +1 -0
  704. package/dist/reactive/effect.d.ts +79 -0
  705. package/dist/reactive/effect.d.ts.map +1 -0
  706. package/dist/reactive/effect.js +67 -0
  707. package/dist/reactive/effect.js.map +1 -0
  708. package/dist/reactive/enhanced-effect.cjs +2 -0
  709. package/dist/reactive/enhanced-effect.cjs.map +1 -0
  710. package/dist/reactive/enhanced-effect.d.ts +108 -0
  711. package/dist/reactive/enhanced-effect.d.ts.map +1 -0
  712. package/dist/reactive/enhanced-effect.js +153 -0
  713. package/dist/reactive/enhanced-effect.js.map +1 -0
  714. package/dist/reactive/enhanced-signal.cjs +2 -0
  715. package/dist/reactive/enhanced-signal.cjs.map +1 -0
  716. package/dist/reactive/enhanced-signal.d.ts +91 -0
  717. package/dist/reactive/enhanced-signal.d.ts.map +1 -0
  718. package/dist/reactive/enhanced-signal.js +117 -0
  719. package/dist/reactive/enhanced-signal.js.map +1 -0
  720. package/dist/reactive/equality.cjs +2 -0
  721. package/dist/reactive/equality.cjs.map +1 -0
  722. package/dist/reactive/equality.d.ts +51 -0
  723. package/dist/reactive/equality.d.ts.map +1 -0
  724. package/dist/reactive/equality.js +66 -0
  725. package/dist/reactive/equality.js.map +1 -0
  726. package/dist/reactive/index.cjs +2 -0
  727. package/dist/reactive/index.cjs.map +1 -0
  728. package/dist/reactive/index.d.ts +21 -0
  729. package/dist/reactive/index.d.ts.map +1 -0
  730. package/dist/reactive/index.js +95 -0
  731. package/dist/reactive/index.js.map +1 -0
  732. package/dist/reactive/migration.cjs +18 -0
  733. package/dist/reactive/migration.cjs.map +1 -0
  734. package/dist/reactive/migration.d.ts +104 -0
  735. package/dist/reactive/migration.d.ts.map +1 -0
  736. package/dist/reactive/migration.js +164 -0
  737. package/dist/reactive/migration.js.map +1 -0
  738. package/dist/reactive/ownership.cjs +2 -0
  739. package/dist/reactive/ownership.cjs.map +1 -0
  740. package/dist/reactive/ownership.d.ts +75 -0
  741. package/dist/reactive/ownership.d.ts.map +1 -0
  742. package/dist/reactive/ownership.js +34 -0
  743. package/dist/reactive/ownership.js.map +1 -0
  744. package/dist/reactive/scheduler.cjs +2 -0
  745. package/dist/reactive/scheduler.cjs.map +1 -0
  746. package/dist/reactive/scheduler.d.ts +56 -0
  747. package/dist/reactive/scheduler.d.ts.map +1 -0
  748. package/dist/reactive/scheduler.js +111 -0
  749. package/dist/reactive/scheduler.js.map +1 -0
  750. package/dist/reactive/signal.cjs +2 -0
  751. package/dist/reactive/signal.cjs.map +1 -0
  752. package/dist/reactive/signal.d.ts +82 -0
  753. package/dist/reactive/signal.d.ts.map +1 -0
  754. package/dist/reactive/signal.js +96 -0
  755. package/dist/reactive/signal.js.map +1 -0
  756. package/dist/reactive/theme.cjs +2 -0
  757. package/dist/reactive/theme.cjs.map +1 -0
  758. package/dist/reactive/theme.d.ts +12 -0
  759. package/dist/reactive/theme.d.ts.map +1 -0
  760. package/dist/reactive/theme.js +27 -0
  761. package/dist/reactive/theme.js.map +1 -0
  762. package/dist/reactive/types.cjs +2 -0
  763. package/dist/reactive/types.cjs.map +1 -0
  764. package/dist/reactive/types.d.ts +93 -0
  765. package/dist/reactive/types.d.ts.map +1 -0
  766. package/dist/reactive/types.js +5 -0
  767. package/dist/reactive/types.js.map +1 -0
  768. package/dist/reactive/unified-scheduler.cjs +2 -0
  769. package/dist/reactive/unified-scheduler.cjs.map +1 -0
  770. package/dist/reactive/unified-scheduler.d.ts +112 -0
  771. package/dist/reactive/unified-scheduler.d.ts.map +1 -0
  772. package/dist/reactive/unified-scheduler.js +219 -0
  773. package/dist/reactive/unified-scheduler.js.map +1 -0
  774. package/dist/runtime/component-context.cjs +2 -0
  775. package/dist/runtime/component-context.cjs.map +1 -0
  776. package/dist/runtime/component-context.d.ts +73 -0
  777. package/dist/runtime/component-context.d.ts.map +1 -0
  778. package/dist/runtime/component-context.js +177 -0
  779. package/dist/runtime/component-context.js.map +1 -0
  780. package/dist/runtime/component.cjs +2 -0
  781. package/dist/runtime/component.cjs.map +1 -0
  782. package/dist/runtime/component.d.ts +112 -0
  783. package/dist/runtime/component.d.ts.map +1 -0
  784. package/dist/runtime/component.js +238 -0
  785. package/dist/runtime/component.js.map +1 -0
  786. package/dist/runtime/context.cjs +2 -0
  787. package/dist/runtime/context.cjs.map +1 -0
  788. package/dist/runtime/context.d.ts +138 -0
  789. package/dist/runtime/context.d.ts.map +1 -0
  790. package/dist/runtime/context.js +289 -0
  791. package/dist/runtime/context.js.map +1 -0
  792. package/dist/runtime/dev-tools.cjs +2 -0
  793. package/dist/runtime/dev-tools.cjs.map +1 -0
  794. package/dist/runtime/dev-tools.d.ts +240 -0
  795. package/dist/runtime/dev-tools.d.ts.map +1 -0
  796. package/dist/runtime/dev-tools.js +391 -0
  797. package/dist/runtime/dev-tools.js.map +1 -0
  798. package/dist/runtime/development-warnings.cjs +2 -0
  799. package/dist/runtime/development-warnings.cjs.map +1 -0
  800. package/dist/runtime/development-warnings.d.ts +42 -0
  801. package/dist/runtime/development-warnings.d.ts.map +1 -0
  802. package/dist/runtime/development-warnings.js +69 -0
  803. package/dist/runtime/development-warnings.js.map +1 -0
  804. package/dist/runtime/dom-bridge.cjs +2 -0
  805. package/dist/runtime/dom-bridge.cjs.map +1 -0
  806. package/dist/runtime/dom-bridge.d.ts +70 -0
  807. package/dist/runtime/dom-bridge.d.ts.map +1 -0
  808. package/dist/runtime/dom-bridge.js +241 -0
  809. package/dist/runtime/dom-bridge.js.map +1 -0
  810. package/dist/runtime/element-override.cjs +2 -0
  811. package/dist/runtime/element-override.cjs.map +1 -0
  812. package/dist/runtime/element-override.d.ts +82 -0
  813. package/dist/runtime/element-override.d.ts.map +1 -0
  814. package/dist/runtime/element-override.js +214 -0
  815. package/dist/runtime/element-override.js.map +1 -0
  816. package/dist/runtime/error-boundary.cjs +2 -0
  817. package/dist/runtime/error-boundary.cjs.map +1 -0
  818. package/dist/runtime/error-boundary.d.ts +302 -0
  819. package/dist/runtime/error-boundary.d.ts.map +1 -0
  820. package/dist/runtime/error-boundary.js +559 -0
  821. package/dist/runtime/error-boundary.js.map +1 -0
  822. package/dist/runtime/error-recovery.cjs +2 -0
  823. package/dist/runtime/error-recovery.cjs.map +1 -0
  824. package/dist/runtime/error-recovery.d.ts +267 -0
  825. package/dist/runtime/error-recovery.d.ts.map +1 -0
  826. package/dist/runtime/error-recovery.js +385 -0
  827. package/dist/runtime/error-recovery.js.map +1 -0
  828. package/dist/runtime/error-reporting.cjs +3 -0
  829. package/dist/runtime/error-reporting.cjs.map +1 -0
  830. package/dist/runtime/error-reporting.d.ts +287 -0
  831. package/dist/runtime/error-reporting.d.ts.map +1 -0
  832. package/dist/runtime/error-reporting.js +479 -0
  833. package/dist/runtime/error-reporting.js.map +1 -0
  834. package/dist/runtime/error-utils.cjs +3 -0
  835. package/dist/runtime/error-utils.cjs.map +1 -0
  836. package/dist/runtime/error-utils.d.ts +204 -0
  837. package/dist/runtime/error-utils.d.ts.map +1 -0
  838. package/dist/runtime/error-utils.js +352 -0
  839. package/dist/runtime/error-utils.js.map +1 -0
  840. package/dist/runtime/index.d.ts +29 -0
  841. package/dist/runtime/index.d.ts.map +1 -0
  842. package/dist/runtime/lazy-component.cjs +2 -0
  843. package/dist/runtime/lazy-component.cjs.map +1 -0
  844. package/dist/runtime/lazy-component.d.ts +58 -0
  845. package/dist/runtime/lazy-component.d.ts.map +1 -0
  846. package/dist/runtime/lazy-component.js +129 -0
  847. package/dist/runtime/lazy-component.js.map +1 -0
  848. package/dist/runtime/lifecycle.cjs +2 -0
  849. package/dist/runtime/lifecycle.cjs.map +1 -0
  850. package/dist/runtime/lifecycle.d.ts +8 -0
  851. package/dist/runtime/lifecycle.d.ts.map +1 -0
  852. package/dist/runtime/lifecycle.js +7 -0
  853. package/dist/runtime/lifecycle.js.map +1 -0
  854. package/dist/runtime/mounting.cjs +2 -0
  855. package/dist/runtime/mounting.cjs.map +1 -0
  856. package/dist/runtime/mounting.d.ts +9 -0
  857. package/dist/runtime/mounting.d.ts.map +1 -0
  858. package/dist/runtime/mounting.js +12 -0
  859. package/dist/runtime/mounting.js.map +1 -0
  860. package/dist/runtime/optimization.cjs +2 -0
  861. package/dist/runtime/optimization.cjs.map +1 -0
  862. package/dist/runtime/optimization.d.ts +8 -0
  863. package/dist/runtime/optimization.d.ts.map +1 -0
  864. package/dist/runtime/optimization.js +6 -0
  865. package/dist/runtime/optimization.js.map +1 -0
  866. package/dist/runtime/performance.cjs +2 -0
  867. package/dist/runtime/performance.cjs.map +1 -0
  868. package/dist/runtime/performance.d.ts +217 -0
  869. package/dist/runtime/performance.d.ts.map +1 -0
  870. package/dist/runtime/performance.js +399 -0
  871. package/dist/runtime/performance.js.map +1 -0
  872. package/dist/runtime/props.cjs +2 -0
  873. package/dist/runtime/props.cjs.map +1 -0
  874. package/dist/runtime/props.d.ts +154 -0
  875. package/dist/runtime/props.d.ts.map +1 -0
  876. package/dist/runtime/props.js +265 -0
  877. package/dist/runtime/props.js.map +1 -0
  878. package/dist/runtime/refs.d.ts +8 -0
  879. package/dist/runtime/refs.d.ts.map +1 -0
  880. package/dist/runtime/renderer.cjs +2 -0
  881. package/dist/runtime/renderer.cjs.map +1 -0
  882. package/dist/runtime/renderer.d.ts +116 -0
  883. package/dist/runtime/renderer.d.ts.map +1 -0
  884. package/dist/runtime/renderer.js +390 -0
  885. package/dist/runtime/renderer.js.map +1 -0
  886. package/dist/runtime/semantic-role-manager.cjs +2 -0
  887. package/dist/runtime/semantic-role-manager.cjs.map +1 -0
  888. package/dist/runtime/semantic-role-manager.d.ts +37 -0
  889. package/dist/runtime/semantic-role-manager.d.ts.map +1 -0
  890. package/dist/runtime/semantic-role-manager.js +82 -0
  891. package/dist/runtime/semantic-role-manager.js.map +1 -0
  892. package/dist/runtime/types.d.ts +230 -0
  893. package/dist/runtime/types.d.ts.map +1 -0
  894. package/dist/state/binding.cjs +2 -0
  895. package/dist/state/binding.cjs.map +1 -0
  896. package/dist/state/binding.d.ts +96 -0
  897. package/dist/state/binding.d.ts.map +1 -0
  898. package/dist/state/binding.js +155 -0
  899. package/dist/state/binding.js.map +1 -0
  900. package/dist/state/environment-object.d.ts +130 -0
  901. package/dist/state/environment-object.d.ts.map +1 -0
  902. package/dist/state/environment.cjs +2 -0
  903. package/dist/state/environment.cjs.map +1 -0
  904. package/dist/state/environment.d.ts +178 -0
  905. package/dist/state/environment.d.ts.map +1 -0
  906. package/dist/state/environment.js +115 -0
  907. package/dist/state/environment.js.map +1 -0
  908. package/dist/state/index.cjs +2 -0
  909. package/dist/state/index.cjs.map +1 -0
  910. package/dist/state/index.d.ts +108 -0
  911. package/dist/state/index.d.ts.map +1 -0
  912. package/dist/state/index.js +63 -0
  913. package/dist/state/index.js.map +1 -0
  914. package/dist/state/observed-object.cjs +2 -0
  915. package/dist/state/observed-object.cjs.map +1 -0
  916. package/dist/state/observed-object.d.ts +126 -0
  917. package/dist/state/observed-object.d.ts.map +1 -0
  918. package/dist/state/observed-object.js +163 -0
  919. package/dist/state/observed-object.js.map +1 -0
  920. package/dist/state/state-manager.cjs +2 -0
  921. package/dist/state/state-manager.cjs.map +1 -0
  922. package/dist/state/state-manager.d.ts +97 -0
  923. package/dist/state/state-manager.d.ts.map +1 -0
  924. package/dist/state/state-manager.js +233 -0
  925. package/dist/state/state-manager.js.map +1 -0
  926. package/dist/state/state.cjs +2 -0
  927. package/dist/state/state.cjs.map +1 -0
  928. package/dist/state/state.d.ts +78 -0
  929. package/dist/state/state.d.ts.map +1 -0
  930. package/dist/state/state.js +159 -0
  931. package/dist/state/state.js.map +1 -0
  932. package/dist/state/types.d.ts +159 -0
  933. package/dist/state/types.d.ts.map +1 -0
  934. package/dist/sui-compat.cjs +2 -0
  935. package/dist/sui-compat.cjs.map +1 -0
  936. package/dist/sui-compat.d.ts +110 -0
  937. package/dist/sui-compat.d.ts.map +1 -0
  938. package/dist/sui-compat.js +88 -0
  939. package/dist/sui-compat.js.map +1 -0
  940. package/dist/validation/advanced-debugging.cjs +44 -0
  941. package/dist/validation/advanced-debugging.cjs.map +1 -0
  942. package/dist/validation/advanced-debugging.d.ts +319 -0
  943. package/dist/validation/advanced-debugging.d.ts.map +1 -0
  944. package/dist/validation/advanced-debugging.js +455 -0
  945. package/dist/validation/advanced-debugging.js.map +1 -0
  946. package/dist/validation/build-time/detection.cjs +2 -0
  947. package/dist/validation/build-time/detection.cjs.map +1 -0
  948. package/dist/validation/build-time/detection.d.ts +32 -0
  949. package/dist/validation/build-time/detection.d.ts.map +1 -0
  950. package/dist/validation/build-time/detection.js +199 -0
  951. package/dist/validation/build-time/detection.js.map +1 -0
  952. package/dist/validation/build-time/index.cjs +2 -0
  953. package/dist/validation/build-time/index.cjs.map +1 -0
  954. package/dist/validation/build-time/index.d.ts +84 -0
  955. package/dist/validation/build-time/index.d.ts.map +1 -0
  956. package/dist/validation/build-time/index.js +122 -0
  957. package/dist/validation/build-time/index.js.map +1 -0
  958. package/dist/validation/build-time/plugins.cjs +3 -0
  959. package/dist/validation/build-time/plugins.cjs.map +1 -0
  960. package/dist/validation/build-time/plugins.d.ts +75 -0
  961. package/dist/validation/build-time/plugins.d.ts.map +1 -0
  962. package/dist/validation/build-time/plugins.js +282 -0
  963. package/dist/validation/build-time/plugins.js.map +1 -0
  964. package/dist/validation/build-time/rules.cjs +2 -0
  965. package/dist/validation/build-time/rules.cjs.map +1 -0
  966. package/dist/validation/build-time/rules.d.ts +73 -0
  967. package/dist/validation/build-time/rules.d.ts.map +1 -0
  968. package/dist/validation/build-time/rules.js +576 -0
  969. package/dist/validation/build-time/rules.js.map +1 -0
  970. package/dist/validation/build-time/transformer.cjs +3 -0
  971. package/dist/validation/build-time/transformer.cjs.map +1 -0
  972. package/dist/validation/build-time/transformer.d.ts +23 -0
  973. package/dist/validation/build-time/transformer.d.ts.map +1 -0
  974. package/dist/validation/build-time/transformer.js +177 -0
  975. package/dist/validation/build-time/transformer.js.map +1 -0
  976. package/dist/validation/build-time/types.d.ts +212 -0
  977. package/dist/validation/build-time/types.d.ts.map +1 -0
  978. package/dist/validation/comprehensive.cjs +9 -0
  979. package/dist/validation/comprehensive.cjs.map +1 -0
  980. package/dist/validation/comprehensive.d.ts +160 -0
  981. package/dist/validation/comprehensive.d.ts.map +1 -0
  982. package/dist/validation/comprehensive.js +916 -0
  983. package/dist/validation/comprehensive.js.map +1 -0
  984. package/dist/validation/debug-tools.cjs +16 -0
  985. package/dist/validation/debug-tools.cjs.map +1 -0
  986. package/dist/validation/debug-tools.d.ts +251 -0
  987. package/dist/validation/debug-tools.d.ts.map +1 -0
  988. package/dist/validation/debug-tools.js +405 -0
  989. package/dist/validation/debug-tools.js.map +1 -0
  990. package/dist/validation/developer-experience.cjs +17 -0
  991. package/dist/validation/developer-experience.cjs.map +1 -0
  992. package/dist/validation/developer-experience.d.ts +243 -0
  993. package/dist/validation/developer-experience.d.ts.map +1 -0
  994. package/dist/validation/developer-experience.js +433 -0
  995. package/dist/validation/developer-experience.js.map +1 -0
  996. package/dist/validation/documentation-integration.cjs +7 -0
  997. package/dist/validation/documentation-integration.cjs.map +1 -0
  998. package/dist/validation/documentation-integration.d.ts +269 -0
  999. package/dist/validation/documentation-integration.d.ts.map +1 -0
  1000. package/dist/validation/documentation-integration.js +440 -0
  1001. package/dist/validation/documentation-integration.js.map +1 -0
  1002. package/dist/validation/enhanced-runtime.cjs +6 -0
  1003. package/dist/validation/enhanced-runtime.cjs.map +1 -0
  1004. package/dist/validation/enhanced-runtime.d.ts +279 -0
  1005. package/dist/validation/enhanced-runtime.d.ts.map +1 -0
  1006. package/dist/validation/enhanced-runtime.js +465 -0
  1007. package/dist/validation/enhanced-runtime.js.map +1 -0
  1008. package/dist/validation/error-reporting.cjs +32 -0
  1009. package/dist/validation/error-reporting.cjs.map +1 -0
  1010. package/dist/validation/error-reporting.d.ts +186 -0
  1011. package/dist/validation/error-reporting.d.ts.map +1 -0
  1012. package/dist/validation/error-reporting.js +370 -0
  1013. package/dist/validation/error-reporting.js.map +1 -0
  1014. package/dist/validation/ide-integration.cjs +85 -0
  1015. package/dist/validation/ide-integration.cjs.map +1 -0
  1016. package/dist/validation/ide-integration.d.ts +328 -0
  1017. package/dist/validation/ide-integration.d.ts.map +1 -0
  1018. package/dist/validation/ide-integration.js +557 -0
  1019. package/dist/validation/ide-integration.js.map +1 -0
  1020. package/dist/validation/index.cjs +6 -0
  1021. package/dist/validation/index.cjs.map +1 -0
  1022. package/dist/validation/index.d.ts +171 -0
  1023. package/dist/validation/index.d.ts.map +1 -0
  1024. package/dist/validation/index.js +309 -0
  1025. package/dist/validation/index.js.map +1 -0
  1026. package/dist/validation/lifecycle-validation.cjs +2 -0
  1027. package/dist/validation/lifecycle-validation.cjs.map +1 -0
  1028. package/dist/validation/lifecycle-validation.d.ts +165 -0
  1029. package/dist/validation/lifecycle-validation.d.ts.map +1 -0
  1030. package/dist/validation/lifecycle-validation.js +314 -0
  1031. package/dist/validation/lifecycle-validation.js.map +1 -0
  1032. package/dist/validation/performance-optimizer.cjs +2 -0
  1033. package/dist/validation/performance-optimizer.cjs.map +1 -0
  1034. package/dist/validation/performance-optimizer.d.ts +218 -0
  1035. package/dist/validation/performance-optimizer.d.ts.map +1 -0
  1036. package/dist/validation/performance-optimizer.js +338 -0
  1037. package/dist/validation/performance-optimizer.js.map +1 -0
  1038. package/dist/validation/plugin-registration.cjs +2 -0
  1039. package/dist/validation/plugin-registration.cjs.map +1 -0
  1040. package/dist/validation/plugin-registration.d.ts +88 -0
  1041. package/dist/validation/plugin-registration.d.ts.map +1 -0
  1042. package/dist/validation/plugin-registration.js +126 -0
  1043. package/dist/validation/plugin-registration.js.map +1 -0
  1044. package/dist/validation/production-bypass.cjs +2 -0
  1045. package/dist/validation/production-bypass.cjs.map +1 -0
  1046. package/dist/validation/production-bypass.d.ts +175 -0
  1047. package/dist/validation/production-bypass.d.ts.map +1 -0
  1048. package/dist/validation/production-bypass.js +218 -0
  1049. package/dist/validation/production-bypass.js.map +1 -0
  1050. package/dist/validation/simple.cjs +9 -0
  1051. package/dist/validation/simple.cjs.map +1 -0
  1052. package/dist/validation/simple.d.ts +111 -0
  1053. package/dist/validation/simple.d.ts.map +1 -0
  1054. package/dist/validation/simple.js +146 -0
  1055. package/dist/validation/simple.js.map +1 -0
  1056. package/dist/viewport/adapters/web-adapter.cjs +70 -0
  1057. package/dist/viewport/adapters/web-adapter.cjs.map +1 -0
  1058. package/dist/viewport/adapters/web-adapter.d.ts +227 -0
  1059. package/dist/viewport/adapters/web-adapter.d.ts.map +1 -0
  1060. package/dist/viewport/adapters/web-adapter.js +823 -0
  1061. package/dist/viewport/adapters/web-adapter.js.map +1 -0
  1062. package/dist/viewport/components.cjs +2 -0
  1063. package/dist/viewport/components.cjs.map +1 -0
  1064. package/dist/viewport/components.d.ts +131 -0
  1065. package/dist/viewport/components.d.ts.map +1 -0
  1066. package/dist/viewport/components.js +298 -0
  1067. package/dist/viewport/components.js.map +1 -0
  1068. package/dist/viewport/environment.cjs +2 -0
  1069. package/dist/viewport/environment.cjs.map +1 -0
  1070. package/dist/viewport/environment.d.ts +75 -0
  1071. package/dist/viewport/environment.d.ts.map +1 -0
  1072. package/dist/viewport/environment.js +86 -0
  1073. package/dist/viewport/environment.js.map +1 -0
  1074. package/dist/viewport/index.cjs +2 -0
  1075. package/dist/viewport/index.cjs.map +1 -0
  1076. package/dist/viewport/index.d.ts +138 -0
  1077. package/dist/viewport/index.d.ts.map +1 -0
  1078. package/dist/viewport/index.js +166 -0
  1079. package/dist/viewport/index.js.map +1 -0
  1080. package/dist/viewport/platform-detection.cjs +2 -0
  1081. package/dist/viewport/platform-detection.cjs.map +1 -0
  1082. package/dist/viewport/platform-detection.d.ts +59 -0
  1083. package/dist/viewport/platform-detection.d.ts.map +1 -0
  1084. package/dist/viewport/platform-detection.js +205 -0
  1085. package/dist/viewport/platform-detection.js.map +1 -0
  1086. package/dist/viewport/types.cjs +2 -0
  1087. package/dist/viewport/types.cjs.map +1 -0
  1088. package/dist/viewport/types.d.ts +301 -0
  1089. package/dist/viewport/types.d.ts.map +1 -0
  1090. package/dist/viewport/types.js +13 -0
  1091. package/dist/viewport/types.js.map +1 -0
  1092. package/dist/viewport/viewport-manager.cjs +2 -0
  1093. package/dist/viewport/viewport-manager.cjs.map +1 -0
  1094. package/dist/viewport/viewport-manager.d.ts +118 -0
  1095. package/dist/viewport/viewport-manager.d.ts.map +1 -0
  1096. package/dist/viewport/viewport-manager.js +524 -0
  1097. package/dist/viewport/viewport-manager.js.map +1 -0
  1098. package/package.json +128 -0
  1099. package/src/assets/Asset.ts +11 -0
  1100. package/src/assets/AssetCollection.ts +99 -0
  1101. package/src/assets/ColorAsset.ts +210 -0
  1102. package/src/assets/FontAsset.ts +380 -0
  1103. package/src/assets/ImageAsset.ts +91 -0
  1104. package/src/assets/README.md +190 -0
  1105. package/src/assets/index.ts +175 -0
  1106. package/src/assets/test-assets.ts +69 -0
  1107. package/src/assets/test-integration.ts +46 -0
  1108. package/src/assets/test-simple.ts +28 -0
  1109. package/src/assets/types.ts +79 -0
  1110. package/src/bundles/common.ts +30 -0
  1111. package/src/bundles/complete.ts +29 -0
  1112. package/src/bundles/essential.ts +26 -0
  1113. package/src/bundles/minimal.ts +26 -0
  1114. package/src/bundles/production-minimal.ts +67 -0
  1115. package/src/compiler/advanced-parser.ts +871 -0
  1116. package/src/compiler/codegen.ts +450 -0
  1117. package/src/compiler/enhanced-codegen.ts +729 -0
  1118. package/src/compiler/index.ts +25 -0
  1119. package/src/compiler/parser.ts +461 -0
  1120. package/src/compiler/plugin.ts +181 -0
  1121. package/src/compiler/types.ts +177 -0
  1122. package/src/components/BasicInput.ts +352 -0
  1123. package/src/components/Button.ts +963 -0
  1124. package/src/components/Divider.ts +341 -0
  1125. package/src/components/EnhancedLink.ts +676 -0
  1126. package/src/components/Form.ts +414 -0
  1127. package/src/components/Grid.ts +2507 -0
  1128. package/src/components/GridResponsive.ts +637 -0
  1129. package/src/components/Image.ts +426 -0
  1130. package/src/components/List.ts +1084 -0
  1131. package/src/components/Menu.ts +807 -0
  1132. package/src/components/Picker.ts +678 -0
  1133. package/src/components/ScrollView.ts +725 -0
  1134. package/src/components/Section.ts +472 -0
  1135. package/src/components/Show.ts +205 -0
  1136. package/src/components/Spacer.ts +93 -0
  1137. package/src/components/Text.ts +447 -0
  1138. package/src/components/Toggle.ts +700 -0
  1139. package/src/components/index.ts +231 -0
  1140. package/src/components/wrapper.ts +828 -0
  1141. package/src/concatenation/concatenatable.ts +211 -0
  1142. package/src/concatenation/concatenated-component.ts +471 -0
  1143. package/src/concatenation/index.ts +41 -0
  1144. package/src/concatenation/styles.css +120 -0
  1145. package/src/concatenation/text-optimizer.ts +440 -0
  1146. package/src/concatenation/types.ts +116 -0
  1147. package/src/constants/README.md +339 -0
  1148. package/src/constants/__tests__/frame-utils.test.ts +276 -0
  1149. package/src/constants/__tests__/layout.test.ts +215 -0
  1150. package/src/constants/frame-utils.ts +174 -0
  1151. package/src/constants/index.ts +8 -0
  1152. package/src/constants/layout.ts +120 -0
  1153. package/src/css-classes/component-base.ts +117 -0
  1154. package/src/css-classes/css-class-manager.ts +372 -0
  1155. package/src/css-classes/dom-integration.ts +162 -0
  1156. package/src/css-classes/enhanced-renderer.ts +166 -0
  1157. package/src/css-classes/index.ts +45 -0
  1158. package/src/css-classes/types.ts +73 -0
  1159. package/src/css-classes/utilities.ts +175 -0
  1160. package/src/debug/index.ts +267 -0
  1161. package/src/developer-experience/enhanced-errors.ts +556 -0
  1162. package/src/developer-experience/enhanced-types.ts +427 -0
  1163. package/src/developer-experience/index.ts +220 -0
  1164. package/src/globals.d.ts +43 -0
  1165. package/src/gradients/__tests__/angular-gradient.test.ts +111 -0
  1166. package/src/gradients/__tests__/background-modifier.test.ts +81 -0
  1167. package/src/gradients/__tests__/comprehensive-gradients.test.ts +296 -0
  1168. package/src/gradients/__tests__/gradient-asset.test.ts +144 -0
  1169. package/src/gradients/__tests__/linear-gradient.test.ts +92 -0
  1170. package/src/gradients/__tests__/phase4-features.test.ts +386 -0
  1171. package/src/gradients/__tests__/radial-gradient.test.ts +110 -0
  1172. package/src/gradients/__tests__/repeating-gradients.test.ts +125 -0
  1173. package/src/gradients/__tests__/state-background-modifier.test.ts +340 -0
  1174. package/src/gradients/__tests__/state-gradient-asset.test.ts +262 -0
  1175. package/src/gradients/__tests__/state-gradient-integration.test.ts +277 -0
  1176. package/src/gradients/css-generator.ts +158 -0
  1177. package/src/gradients/examples.ts +632 -0
  1178. package/src/gradients/gradient-asset.ts +30 -0
  1179. package/src/gradients/index.ts +85 -0
  1180. package/src/gradients/performance.ts +521 -0
  1181. package/src/gradients/presets.ts +422 -0
  1182. package/src/gradients/reactive.ts +470 -0
  1183. package/src/gradients/state-gradient-asset.ts +179 -0
  1184. package/src/gradients/types.ts +148 -0
  1185. package/src/gradients/utils.ts +579 -0
  1186. package/src/gradients/validation.ts +489 -0
  1187. package/src/index.ts +168 -0
  1188. package/src/lifecycle/hooks.ts +332 -0
  1189. package/src/modifiers/__tests__/as-html-integration.test.ts +204 -0
  1190. package/src/modifiers/__tests__/as-html.test.ts +437 -0
  1191. package/src/modifiers/__tests__/basic-sanitizer-security.test.ts +294 -0
  1192. package/src/modifiers/__tests__/border.test.ts +371 -0
  1193. package/src/modifiers/__tests__/margin-string-support.test.ts +41 -0
  1194. package/src/modifiers/__tests__/padding-string-support.test.ts +41 -0
  1195. package/src/modifiers/as-html-validator.ts +68 -0
  1196. package/src/modifiers/as-html.ts +216 -0
  1197. package/src/modifiers/attributes.ts +574 -0
  1198. package/src/modifiers/backdrop.ts +290 -0
  1199. package/src/modifiers/background.ts +165 -0
  1200. package/src/modifiers/base.ts +1815 -0
  1201. package/src/modifiers/basic-sanitizer.ts +227 -0
  1202. package/src/modifiers/border.ts +574 -0
  1203. package/src/modifiers/builder.ts +1747 -0
  1204. package/src/modifiers/core.ts +521 -0
  1205. package/src/modifiers/css.ts +148 -0
  1206. package/src/modifiers/effects.ts +412 -0
  1207. package/src/modifiers/elements.ts +541 -0
  1208. package/src/modifiers/filters.ts +501 -0
  1209. package/src/modifiers/flexbox.ts +180 -0
  1210. package/src/modifiers/font.ts +149 -0
  1211. package/src/modifiers/grid.ts +238 -0
  1212. package/src/modifiers/index.ts +481 -0
  1213. package/src/modifiers/margin.ts +218 -0
  1214. package/src/modifiers/padding.ts +318 -0
  1215. package/src/modifiers/registry.ts +444 -0
  1216. package/src/modifiers/responsive/__tests__/advanced-media-queries.test.ts +392 -0
  1217. package/src/modifiers/responsive/__tests__/advanced-utilities.test.ts +368 -0
  1218. package/src/modifiers/responsive/__tests__/comprehensive-browser-tests.test.ts +556 -0
  1219. package/src/modifiers/responsive/__tests__/layout-patterns.test.ts +558 -0
  1220. package/src/modifiers/responsive/advanced-utilities.ts +562 -0
  1221. package/src/modifiers/responsive/breakpoints.ts +330 -0
  1222. package/src/modifiers/responsive/css-generator.ts +432 -0
  1223. package/src/modifiers/responsive/dev-tools.ts +650 -0
  1224. package/src/modifiers/responsive/index.ts +119 -0
  1225. package/src/modifiers/responsive/layout-patterns.ts +592 -0
  1226. package/src/modifiers/responsive/performance.ts +385 -0
  1227. package/src/modifiers/responsive/responsive-builder.ts +620 -0
  1228. package/src/modifiers/responsive/responsive-modifier.ts +410 -0
  1229. package/src/modifiers/responsive/types.ts +226 -0
  1230. package/src/modifiers/responsive/utilities.ts +478 -0
  1231. package/src/modifiers/scroll.ts +297 -0
  1232. package/src/modifiers/shadows.ts +321 -0
  1233. package/src/modifiers/size.ts +208 -0
  1234. package/src/modifiers/text.ts +416 -0
  1235. package/src/modifiers/transformations.ts +640 -0
  1236. package/src/modifiers/transitions.ts +218 -0
  1237. package/src/modifiers/types.ts +889 -0
  1238. package/src/modifiers/typography.ts +341 -0
  1239. package/src/modifiers/utility.ts +209 -0
  1240. package/src/modifiers/utils.ts +413 -0
  1241. package/src/plugins/__tests__/simplified-plugin-system.test.ts +190 -0
  1242. package/src/plugins/component-loader-registry.ts +371 -0
  1243. package/src/plugins/index.ts +61 -0
  1244. package/src/plugins/legacy-adapter.ts +84 -0
  1245. package/src/plugins/simplified-component-registry.ts +130 -0
  1246. package/src/plugins/simplified-error-handler.ts +372 -0
  1247. package/src/plugins/simplified-index.ts +61 -0
  1248. package/src/plugins/simplified-lazy-loader.ts +242 -0
  1249. package/src/plugins/simplified-plugin-manager.ts +93 -0
  1250. package/src/plugins/simplified-tachui-instance.ts +142 -0
  1251. package/src/plugins/simplified-types.ts +79 -0
  1252. package/src/plugins/simplified-utils.ts +118 -0
  1253. package/src/reactive/cleanup.ts +241 -0
  1254. package/src/reactive/computed.ts +281 -0
  1255. package/src/reactive/context.ts +287 -0
  1256. package/src/reactive/effect.ts +194 -0
  1257. package/src/reactive/enhanced-effect.ts +318 -0
  1258. package/src/reactive/enhanced-signal.ts +227 -0
  1259. package/src/reactive/equality.ts +188 -0
  1260. package/src/reactive/globals.d.ts +5 -0
  1261. package/src/reactive/index.ts +150 -0
  1262. package/src/reactive/migration.ts +335 -0
  1263. package/src/reactive/ownership.ts +182 -0
  1264. package/src/reactive/scheduler.ts +300 -0
  1265. package/src/reactive/signal.ts +201 -0
  1266. package/src/reactive/theme.ts +49 -0
  1267. package/src/reactive/types.ts +103 -0
  1268. package/src/reactive/unified-scheduler.ts +357 -0
  1269. package/src/runtime/component-context.ts +343 -0
  1270. package/src/runtime/component.ts +499 -0
  1271. package/src/runtime/context.ts +527 -0
  1272. package/src/runtime/dev-tools.ts +752 -0
  1273. package/src/runtime/development-warnings.ts +114 -0
  1274. package/src/runtime/dom-bridge.ts +570 -0
  1275. package/src/runtime/element-override.ts +282 -0
  1276. package/src/runtime/error-boundary.ts +955 -0
  1277. package/src/runtime/error-recovery.ts +638 -0
  1278. package/src/runtime/error-reporting.ts +808 -0
  1279. package/src/runtime/error-utils.ts +698 -0
  1280. package/src/runtime/index.ts +202 -0
  1281. package/src/runtime/lazy-component.ts +268 -0
  1282. package/src/runtime/lifecycle.ts +10 -0
  1283. package/src/runtime/mounting.ts +17 -0
  1284. package/src/runtime/optimization.ts +13 -0
  1285. package/src/runtime/performance.ts +693 -0
  1286. package/src/runtime/props.ts +434 -0
  1287. package/src/runtime/refs.ts +13 -0
  1288. package/src/runtime/renderer.ts +674 -0
  1289. package/src/runtime/semantic-role-manager.ts +140 -0
  1290. package/src/runtime/types.ts +282 -0
  1291. package/src/state/binding.ts +381 -0
  1292. package/src/state/environment-object.ts +444 -0
  1293. package/src/state/environment.ts +351 -0
  1294. package/src/state/index.ts +179 -0
  1295. package/src/state/observed-object.ts +405 -0
  1296. package/src/state/state-manager.ts +366 -0
  1297. package/src/state/state.ts +339 -0
  1298. package/src/state/types.ts +192 -0
  1299. package/src/sui-compat.ts +163 -0
  1300. package/src/validation/__tests__/phase-1d-integration.test.ts +558 -0
  1301. package/src/validation/advanced-debugging.ts +860 -0
  1302. package/src/validation/build-time/detection.ts +373 -0
  1303. package/src/validation/build-time/index.ts +222 -0
  1304. package/src/validation/build-time/plugins.ts +515 -0
  1305. package/src/validation/build-time/rules.ts +624 -0
  1306. package/src/validation/build-time/transformer.ts +372 -0
  1307. package/src/validation/build-time/types.ts +232 -0
  1308. package/src/validation/comprehensive.ts +1272 -0
  1309. package/src/validation/debug-tools.ts +724 -0
  1310. package/src/validation/developer-experience.ts +712 -0
  1311. package/src/validation/documentation-integration.ts +835 -0
  1312. package/src/validation/enhanced-runtime.ts +765 -0
  1313. package/src/validation/error-reporting.ts +587 -0
  1314. package/src/validation/ide-integration.ts +845 -0
  1315. package/src/validation/index.ts +353 -0
  1316. package/src/validation/lifecycle-validation.ts +636 -0
  1317. package/src/validation/performance-optimizer.ts +599 -0
  1318. package/src/validation/plugin-registration.ts +249 -0
  1319. package/src/validation/production-bypass.ts +466 -0
  1320. package/src/validation/simple.ts +465 -0
  1321. package/src/viewport/adapters/web-adapter.ts +1385 -0
  1322. package/src/viewport/components.ts +505 -0
  1323. package/src/viewport/environment.ts +173 -0
  1324. package/src/viewport/index.ts +290 -0
  1325. package/src/viewport/platform-detection.ts +431 -0
  1326. package/src/viewport/types.ts +371 -0
  1327. package/src/viewport/viewport-manager.ts +979 -0
@@ -0,0 +1,2507 @@
1
+ /**
2
+ * Grid Layout Components (Phase 1)
3
+ *
4
+ * SwiftUI-inspired Grid components with CSS Grid integration.
5
+ * Provides Grid, GridRow, LazyVGrid, and LazyHGrid components
6
+ * that mirror SwiftUI's grid system while leveraging modern CSS Grid capabilities.
7
+ */
8
+
9
+ import type { ModifiableComponent, ModifierBuilder } from '../modifiers/types'
10
+ import type { ComponentInstance, ComponentProps } from '../runtime/types'
11
+ import { withModifiers } from './wrapper'
12
+ import {
13
+ processElementOverride,
14
+ type ElementOverrideProps
15
+ } from '../runtime/element-override'
16
+ import {
17
+ ComponentWithCSSClasses,
18
+ type CSSClassesProps
19
+ } from '../css-classes'
20
+ import { useLifecycle } from '../lifecycle/hooks'
21
+ import { registerComponentWithLifecycleHooks } from '../runtime/dom-bridge'
22
+ import type { ResponsiveValue } from '../modifiers/responsive/types'
23
+ import {
24
+ GridResponsiveUtils,
25
+ createResponsiveGridModifier,
26
+ GridDebugger,
27
+ GridPerformanceMonitor,
28
+ type EnhancedResponsiveGridConfig
29
+ } from './GridResponsive'
30
+ import {
31
+ transition
32
+ } from '../modifiers/transitions'
33
+
34
+ // Lazy import debug manager to avoid circular dependencies
35
+ let debugManager: any = null
36
+ const getDebugManager = () => {
37
+ if (!debugManager) {
38
+ try {
39
+ const debugModule = require('../debug')
40
+ debugManager = debugModule.debugManager
41
+ } catch {
42
+ // Debug module not available, create a mock
43
+ debugManager = {
44
+ isEnabled: () => false,
45
+ logComponent: () => {},
46
+ }
47
+ }
48
+ }
49
+ return debugManager
50
+ }
51
+
52
+ /**
53
+ * GridItem sizing configuration (SwiftUI-equivalent)
54
+ */
55
+ export interface GridItemConfig {
56
+ type: 'fixed' | 'flexible' | 'adaptive'
57
+ size?: number
58
+ minimum?: number
59
+ maximum?: number
60
+ spacing?: number
61
+ }
62
+
63
+ /**
64
+ * Grid item spanning configuration (Phase 3)
65
+ */
66
+ export interface GridSpanConfig {
67
+ columnSpan?: number
68
+ rowSpan?: number
69
+ columnStart?: number
70
+ rowStart?: number
71
+ area?: string
72
+ alignment?: 'start' | 'center' | 'end' | 'stretch'
73
+ }
74
+
75
+ /**
76
+ * Enhanced grid item with spanning support (Phase 3)
77
+ */
78
+ export interface EnhancedGridItemConfig extends GridItemConfig {
79
+ span?: GridSpanConfig
80
+ }
81
+
82
+ /**
83
+ * GridItem factory class - matches SwiftUI GridItem exactly
84
+ */
85
+ export class GridItem {
86
+ /**
87
+ * Fixed-size grid column/row
88
+ */
89
+ static fixed(size: number, spacing?: number): GridItemConfig {
90
+ return {
91
+ type: 'fixed',
92
+ size,
93
+ spacing
94
+ }
95
+ }
96
+
97
+ /**
98
+ * Flexible grid column/row with optional constraints
99
+ */
100
+ static flexible(minimum: number = 0, maximum?: number): GridItemConfig {
101
+ return {
102
+ type: 'flexible',
103
+ minimum,
104
+ maximum
105
+ }
106
+ }
107
+
108
+ /**
109
+ * Adaptive grid column/row with minimum size
110
+ */
111
+ static adaptive(minimum: number, maximum?: number): GridItemConfig {
112
+ return {
113
+ type: 'adaptive',
114
+ minimum,
115
+ maximum
116
+ }
117
+ }
118
+
119
+ /**
120
+ * Create spanning configuration for grid items (Phase 3)
121
+ */
122
+ static spanning(config: GridSpanConfig): GridSpanConfig {
123
+ return config
124
+ }
125
+
126
+ /**
127
+ * Create enhanced grid item with spanning support (Phase 3)
128
+ */
129
+ static withSpan(baseConfig: GridItemConfig, spanConfig: GridSpanConfig): EnhancedGridItemConfig {
130
+ return {
131
+ ...baseConfig,
132
+ span: spanConfig
133
+ }
134
+ }
135
+ }
136
+
137
+ /**
138
+ * Responsive grid configuration for breakpoint-aware layouts
139
+ */
140
+ export type ResponsiveGridItemConfig = {
141
+ base?: GridItemConfig[]
142
+ sm?: GridItemConfig[]
143
+ md?: GridItemConfig[]
144
+ lg?: GridItemConfig[]
145
+ xl?: GridItemConfig[]
146
+ xxl?: GridItemConfig[]
147
+ }
148
+
149
+ /**
150
+ * Grid alignment options (SwiftUI-equivalent)
151
+ */
152
+ export type GridAlignment =
153
+ | 'topLeading' | 'top' | 'topTrailing'
154
+ | 'leading' | 'center' | 'trailing'
155
+ | 'bottomLeading' | 'bottom' | 'bottomTrailing'
156
+
157
+ /**
158
+ * Base Grid component properties
159
+ */
160
+ export interface BaseGridProps extends ComponentProps, ElementOverrideProps, CSSClassesProps {
161
+ children?: ComponentInstance[]
162
+ alignment?: GridAlignment
163
+ spacing?: number | { horizontal?: number; vertical?: number }
164
+ debugLabel?: string
165
+ /** Animation configuration for grid layout changes (Phase 3) */
166
+ animations?: GridAnimationConfig
167
+ /** Accessibility configuration for grid components (Phase 3) */
168
+ accessibility?: GridAccessibilityConfig
169
+ /** Advanced styling configuration for grid components (Phase 3) */
170
+ styling?: GridStylingConfig
171
+ }
172
+
173
+ /**
174
+ * Grid component properties (explicit row/column control)
175
+ */
176
+ export interface GridProps extends BaseGridProps {
177
+ // Grid uses explicit rows defined by GridRow children
178
+ }
179
+
180
+ /**
181
+ * LazyVGrid component properties (vertical scrolling with flexible columns)
182
+ */
183
+ export interface LazyVGridProps extends BaseGridProps {
184
+ columns: GridItemConfig[] | ResponsiveGridItemConfig | ResponsiveValue<GridItemConfig[]>
185
+ pinnedViews?: ('sectionHeaders' | 'sectionFooters')[]
186
+ /** Enhanced responsive configuration (Phase 2) */
187
+ responsive?: EnhancedResponsiveGridConfig
188
+ /** Sectioned data with headers/footers (Phase 3) */
189
+ sections?: GridSection[]
190
+ }
191
+
192
+ /**
193
+ * LazyHGrid component properties (horizontal scrolling with flexible rows)
194
+ */
195
+ export interface LazyHGridProps extends BaseGridProps {
196
+ rows: GridItemConfig[] | ResponsiveGridItemConfig | ResponsiveValue<GridItemConfig[]>
197
+ pinnedViews?: ('sectionHeaders' | 'sectionFooters')[]
198
+ /** Enhanced responsive configuration (Phase 2) */
199
+ responsive?: EnhancedResponsiveGridConfig
200
+ /** Sectioned data with headers/footers (Phase 3) */
201
+ sections?: GridSection[]
202
+ }
203
+
204
+ /**
205
+ * Grid animation configuration (Phase 3)
206
+ */
207
+ export interface GridAnimationConfig {
208
+ /** Enable layout animations when grid structure changes */
209
+ layoutChanges?: boolean | {
210
+ duration?: number
211
+ easing?: string
212
+ delay?: number
213
+ }
214
+ /** Enable animations when items are added/removed */
215
+ itemChanges?: boolean | {
216
+ enter?: {
217
+ duration?: number
218
+ easing?: string
219
+ delay?: number
220
+ from?: 'fade' | 'scale' | 'slide-up' | 'slide-down' | 'slide-left' | 'slide-right'
221
+ }
222
+ exit?: {
223
+ duration?: number
224
+ easing?: string
225
+ delay?: number
226
+ to?: 'fade' | 'scale' | 'slide-up' | 'slide-down' | 'slide-left' | 'slide-right'
227
+ }
228
+ }
229
+ /** Enable animations for responsive breakpoint changes */
230
+ responsive?: boolean | {
231
+ duration?: number
232
+ easing?: string
233
+ delay?: number
234
+ }
235
+ /** Enable animations for section header/footer changes */
236
+ sections?: boolean | {
237
+ duration?: number
238
+ easing?: string
239
+ delay?: number
240
+ }
241
+ }
242
+
243
+ /**
244
+ * Grid accessibility configuration (Phase 3)
245
+ */
246
+ export interface GridAccessibilityConfig {
247
+ /** Main accessibility label for the grid */
248
+ label?: string
249
+ /** Description of the grid's purpose */
250
+ description?: string
251
+ /** ARIA role override (defaults to 'grid' for data grids, 'group' for layout grids) */
252
+ role?: 'grid' | 'group' | 'list' | 'region'
253
+ /** Enable keyboard navigation between grid items */
254
+ keyboardNavigation?: boolean | {
255
+ enabled?: boolean
256
+ /** Arrow key behavior: 'grid' for 2D navigation, 'list' for linear navigation */
257
+ mode?: 'grid' | 'list'
258
+ /** Enable page up/down navigation */
259
+ pageNavigation?: boolean
260
+ /** Enable home/end navigation */
261
+ homeEndNavigation?: boolean
262
+ }
263
+ /** Enable focus management */
264
+ focusManagement?: boolean | {
265
+ enabled?: boolean
266
+ /** Focus trap within grid */
267
+ trapFocus?: boolean
268
+ /** Restore focus when grid is unmounted */
269
+ restoreFocus?: boolean
270
+ /** Skip links for screen readers */
271
+ skipLinks?: boolean
272
+ }
273
+ /** Screen reader optimizations */
274
+ screenReader?: boolean | {
275
+ enabled?: boolean
276
+ /** Announce grid structure changes */
277
+ announceChanges?: boolean
278
+ /** Provide row/column count information */
279
+ announceStructure?: boolean
280
+ /** Announce item positions */
281
+ announcePositions?: boolean
282
+ }
283
+ /** Reduced motion support */
284
+ reducedMotion?: boolean | {
285
+ respectPreference?: boolean
286
+ fallbackBehavior?: 'disable' | 'reduce' | 'instant'
287
+ }
288
+ }
289
+
290
+ /**
291
+ * Advanced grid styling configuration (Phase 3)
292
+ */
293
+ export interface GridStylingConfig {
294
+ /** Custom grid template areas for named grid positioning */
295
+ templateAreas?: string[]
296
+ /** Advanced gap configuration with different spacing for different breakpoints */
297
+ advancedGap?: {
298
+ row?: number | string | { [breakpoint: string]: number | string }
299
+ column?: number | string | { [breakpoint: string]: number | string }
300
+ }
301
+ /** Grid debugging and overlay styles */
302
+ debug?: boolean | {
303
+ enabled?: boolean
304
+ /** Show grid lines */
305
+ showLines?: boolean
306
+ /** Show grid areas */
307
+ showAreas?: boolean
308
+ /** Grid line color */
309
+ lineColor?: string
310
+ /** Grid line style */
311
+ lineStyle?: 'solid' | 'dashed' | 'dotted'
312
+ /** Show item numbers */
313
+ showItemNumbers?: boolean
314
+ }
315
+ /** Theme integration */
316
+ theme?: {
317
+ /** Use theme-based grid colors */
318
+ useThemeColors?: boolean
319
+ /** Custom theme variant */
320
+ variant?: string
321
+ /** Grid-specific theme overrides */
322
+ overrides?: Record<string, string | number>
323
+ }
324
+ /** Advanced hover and focus states */
325
+ itemStates?: {
326
+ /** Grid item hover effects */
327
+ hover?: {
328
+ enabled?: boolean
329
+ transform?: 'scale' | 'lift' | 'glow' | 'highlight'
330
+ transition?: string
331
+ customCSS?: Record<string, string>
332
+ }
333
+ /** Grid item focus effects */
334
+ focus?: {
335
+ enabled?: boolean
336
+ style?: 'ring' | 'outline' | 'background' | 'border'
337
+ color?: string
338
+ customCSS?: Record<string, string>
339
+ }
340
+ /** Grid item active/pressed effects */
341
+ active?: {
342
+ enabled?: boolean
343
+ transform?: 'scale' | 'inset' | 'darken'
344
+ customCSS?: Record<string, string>
345
+ }
346
+ }
347
+ /** Grid container styling */
348
+ container?: {
349
+ /** Background patterns or overlays */
350
+ background?: string | {
351
+ pattern?: 'dots' | 'lines' | 'grid' | 'none'
352
+ color?: string
353
+ opacity?: number
354
+ }
355
+ /** Container border and shadow */
356
+ border?: string
357
+ borderRadius?: number | string
358
+ boxShadow?: string
359
+ /** Container padding */
360
+ padding?: number | string | {
361
+ top?: number | string
362
+ right?: number | string
363
+ bottom?: number | string
364
+ left?: number | string
365
+ }
366
+ }
367
+ }
368
+
369
+ /**
370
+ * Grid section configuration (Phase 3)
371
+ */
372
+ export interface GridSection {
373
+ id: string
374
+ header?: ComponentInstance | string
375
+ footer?: ComponentInstance | string
376
+ items: ComponentInstance[]
377
+ headerStyle?: 'automatic' | 'grouped' | 'plain' | 'sticky'
378
+ footerStyle?: 'automatic' | 'grouped' | 'plain' | 'sticky'
379
+ }
380
+
381
+ /**
382
+ * Grid section header/footer properties (Phase 3)
383
+ */
384
+ export interface GridSectionHeaderProps extends ComponentProps, ElementOverrideProps, CSSClassesProps {
385
+ content: ComponentInstance | string
386
+ sectionId: string
387
+ type: 'header' | 'footer'
388
+ style: 'automatic' | 'grouped' | 'plain' | 'sticky'
389
+ debugLabel?: string
390
+ }
391
+
392
+ /**
393
+ * GridRow component properties
394
+ */
395
+ export interface GridRowProps extends ComponentProps, ElementOverrideProps, CSSClassesProps {
396
+ children?: ComponentInstance[]
397
+ alignment?: 'leading' | 'center' | 'trailing'
398
+ debugLabel?: string
399
+ }
400
+
401
+ /**
402
+ * CSS Grid generation utilities
403
+ */
404
+ class GridCSSGenerator {
405
+ /**
406
+ * Generate CSS grid-template-columns from GridItem configurations
407
+ */
408
+ static generateColumns(items: GridItemConfig[]): string {
409
+ return items.map(item => {
410
+ switch (item.type) {
411
+ case 'fixed':
412
+ return `${item.size}px`
413
+ case 'flexible':
414
+ const minSize = item.minimum || 0
415
+ const maxSize = item.maximum ? `${item.maximum}px` : '1fr'
416
+ return minSize > 0 ? `minmax(${minSize}px, ${maxSize})` : '1fr'
417
+ case 'adaptive':
418
+ const adaptiveMin = item.minimum
419
+ const adaptiveMax = item.maximum ? `${item.maximum}px` : '1fr'
420
+ return `minmax(${adaptiveMin}px, ${adaptiveMax})`
421
+ default:
422
+ return '1fr'
423
+ }
424
+ }).join(' ')
425
+ }
426
+
427
+ /**
428
+ * Generate CSS grid-template-rows from GridItem configurations
429
+ */
430
+ static generateRows(items: GridItemConfig[]): string {
431
+ return this.generateColumns(items) // Same logic applies
432
+ }
433
+
434
+ /**
435
+ * Generate responsive CSS for grid layouts
436
+ */
437
+ static generateResponsiveGridCSS(config: ResponsiveGridItemConfig, property: 'grid-template-columns' | 'grid-template-rows'): Record<string, string | Record<string, string>> {
438
+ const responsiveCSS: Record<string, string | Record<string, string>> = {}
439
+
440
+ if (config.base) {
441
+ responsiveCSS[property] = property === 'grid-template-columns'
442
+ ? this.generateColumns(config.base)
443
+ : this.generateRows(config.base)
444
+ }
445
+
446
+ // Generate media queries for other breakpoints
447
+ const breakpoints = {
448
+ sm: '640px',
449
+ md: '768px',
450
+ lg: '1024px',
451
+ xl: '1280px',
452
+ xxl: '1536px'
453
+ }
454
+
455
+ Object.entries(breakpoints).forEach(([breakpoint, minWidth]) => {
456
+ const breakpointConfig = config[breakpoint as keyof ResponsiveGridItemConfig]
457
+ if (breakpointConfig) {
458
+ const mediaQuery = `@media (min-width: ${minWidth})`
459
+ const gridValue = property === 'grid-template-columns'
460
+ ? this.generateColumns(breakpointConfig)
461
+ : this.generateRows(breakpointConfig)
462
+
463
+ if (!responsiveCSS[mediaQuery]) {
464
+ responsiveCSS[mediaQuery] = {}
465
+ }
466
+ const existing = responsiveCSS[mediaQuery] as Record<string, string>
467
+ responsiveCSS[mediaQuery] = {
468
+ ...existing,
469
+ [property]: gridValue
470
+ }
471
+ }
472
+ })
473
+
474
+ return responsiveCSS
475
+ }
476
+
477
+ /**
478
+ * Convert spacing configuration to CSS gap values
479
+ */
480
+ static generateSpacing(spacing?: number | { horizontal?: number; vertical?: number }): string {
481
+ if (typeof spacing === 'number') {
482
+ return `${spacing}px`
483
+ }
484
+ if (spacing && typeof spacing === 'object') {
485
+ const horizontal = spacing.horizontal ?? 0
486
+ const vertical = spacing.vertical ?? 0
487
+ return `${vertical}px ${horizontal}px`
488
+ }
489
+ return '0'
490
+ }
491
+
492
+ /**
493
+ * Convert GridAlignment to CSS grid alignment properties
494
+ */
495
+ static generateAlignment(alignment: GridAlignment): { justifyItems?: string; alignItems?: string } {
496
+ const alignmentMap: Record<GridAlignment, { justifyItems: string; alignItems: string }> = {
497
+ 'topLeading': { justifyItems: 'start', alignItems: 'start' },
498
+ 'top': { justifyItems: 'center', alignItems: 'start' },
499
+ 'topTrailing': { justifyItems: 'end', alignItems: 'start' },
500
+ 'leading': { justifyItems: 'start', alignItems: 'center' },
501
+ 'center': { justifyItems: 'center', alignItems: 'center' },
502
+ 'trailing': { justifyItems: 'end', alignItems: 'center' },
503
+ 'bottomLeading': { justifyItems: 'start', alignItems: 'end' },
504
+ 'bottom': { justifyItems: 'center', alignItems: 'end' },
505
+ 'bottomTrailing': { justifyItems: 'end', alignItems: 'end' }
506
+ }
507
+
508
+ return alignmentMap[alignment] || alignmentMap.center
509
+ }
510
+
511
+ /**
512
+ * Generate CSS for section header/footer styling (Phase 3)
513
+ */
514
+ static generateSectionHeaderCSS(style: 'automatic' | 'grouped' | 'plain' | 'sticky', type: 'header' | 'footer', columnSpan: number): Record<string, string> {
515
+ const baseStyles: Record<string, string> = {
516
+ gridColumn: `1 / span ${columnSpan}`,
517
+ display: 'flex',
518
+ alignItems: 'center'
519
+ }
520
+
521
+ switch (style) {
522
+ case 'sticky':
523
+ baseStyles.position = 'sticky'
524
+ baseStyles.top = type === 'header' ? '0' : 'auto'
525
+ baseStyles.bottom = type === 'footer' ? '0' : 'auto'
526
+ baseStyles.zIndex = '10'
527
+ baseStyles.backgroundColor = 'var(--background-color, white)'
528
+ break
529
+ case 'grouped':
530
+ baseStyles.padding = '12px 16px'
531
+ baseStyles.backgroundColor = 'var(--section-bg, #f8f9fa)'
532
+ baseStyles.borderRadius = type === 'header' ? '8px 8px 0 0' : '0 0 8px 8px'
533
+ break
534
+ case 'plain':
535
+ baseStyles.padding = '8px 0'
536
+ break
537
+ case 'automatic':
538
+ default:
539
+ baseStyles.padding = '12px 0'
540
+ baseStyles.fontWeight = '600'
541
+ baseStyles.fontSize = '1.1em'
542
+ if (type === 'footer') {
543
+ baseStyles.fontSize = '0.9em'
544
+ baseStyles.fontWeight = '400'
545
+ baseStyles.color = 'var(--text-secondary, #6b7280)'
546
+ }
547
+ break
548
+ }
549
+
550
+ return baseStyles
551
+ }
552
+
553
+ /**
554
+ * Generate CSS animations for grid layout changes (Phase 3)
555
+ */
556
+ static generateGridAnimationCSS(animations: GridAnimationConfig): Record<string, string> {
557
+ const animationStyles: Record<string, string> = {}
558
+
559
+ // Layout change animations
560
+ if (animations.layoutChanges) {
561
+ const config = typeof animations.layoutChanges === 'boolean' ? {} : animations.layoutChanges
562
+ const duration = config.duration || 300
563
+ const easing = config.easing || 'ease-out'
564
+ const delay = config.delay || 0
565
+
566
+ animationStyles.transition = `grid-template-columns ${duration}ms ${easing}${delay > 0 ? ` ${delay}ms` : ''}, grid-template-rows ${duration}ms ${easing}${delay > 0 ? ` ${delay}ms` : ''}`
567
+ }
568
+
569
+ // Responsive breakpoint change animations
570
+ if (animations.responsive) {
571
+ const config = typeof animations.responsive === 'boolean' ? {} : animations.responsive
572
+ const duration = config.duration || 250
573
+ const easing = config.easing || 'ease-out'
574
+ const delay = config.delay || 0
575
+
576
+ const responsiveTransition = `grid-template-columns ${duration}ms ${easing}${delay > 0 ? ` ${delay}ms` : ''}, grid-template-rows ${duration}ms ${easing}${delay > 0 ? ` ${delay}ms` : ''}, gap ${duration}ms ${easing}${delay > 0 ? ` ${delay}ms` : ''}`
577
+
578
+ if (animationStyles.transition) {
579
+ animationStyles.transition += `, ${responsiveTransition}`
580
+ } else {
581
+ animationStyles.transition = responsiveTransition
582
+ }
583
+ }
584
+
585
+ return animationStyles
586
+ }
587
+
588
+ /**
589
+ * Generate item entrance/exit animation keyframes (Phase 3)
590
+ */
591
+ static generateItemAnimationKeyframes(type: 'enter' | 'exit', animation: 'fade' | 'scale' | 'slide-up' | 'slide-down' | 'slide-left' | 'slide-right'): Record<string, string> {
592
+ const keyframeName = `grid-item-${type}-${animation}`
593
+
594
+ let keyframeContent = ''
595
+ switch (animation) {
596
+ case 'fade':
597
+ keyframeContent = type === 'enter'
598
+ ? 'from { opacity: 0; } to { opacity: 1; }'
599
+ : 'from { opacity: 1; } to { opacity: 0; }'
600
+ break
601
+ case 'scale':
602
+ keyframeContent = type === 'enter'
603
+ ? 'from { opacity: 0; transform: scale(0.8); } to { opacity: 1; transform: scale(1); }'
604
+ : 'from { opacity: 1; transform: scale(1); } to { opacity: 0; transform: scale(0.8); }'
605
+ break
606
+ case 'slide-up':
607
+ keyframeContent = type === 'enter'
608
+ ? 'from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); }'
609
+ : 'from { opacity: 1; transform: translateY(0); } to { opacity: 0; transform: translateY(-20px); }'
610
+ break
611
+ case 'slide-down':
612
+ keyframeContent = type === 'enter'
613
+ ? 'from { opacity: 0; transform: translateY(-20px); } to { opacity: 1; transform: translateY(0); }'
614
+ : 'from { opacity: 1; transform: translateY(0); } to { opacity: 0; transform: translateY(20px); }'
615
+ break
616
+ case 'slide-left':
617
+ keyframeContent = type === 'enter'
618
+ ? 'from { opacity: 0; transform: translateX(20px); } to { opacity: 1; transform: translateX(0); }'
619
+ : 'from { opacity: 1; transform: translateX(0); } to { opacity: 0; transform: translateX(-20px); }'
620
+ break
621
+ case 'slide-right':
622
+ keyframeContent = type === 'enter'
623
+ ? 'from { opacity: 0; transform: translateX(-20px); } to { opacity: 1; transform: translateX(0); }'
624
+ : 'from { opacity: 1; transform: translateX(0); } to { opacity: 0; transform: translateX(20px); }'
625
+ break
626
+ }
627
+
628
+ return {
629
+ [`@keyframes ${keyframeName}`]: `{ ${keyframeContent} }`,
630
+ [`--${keyframeName}-keyframes`]: keyframeName
631
+ }
632
+ }
633
+
634
+ /**
635
+ * Generate accessibility attributes for grid elements (Phase 3)
636
+ */
637
+ static generateAccessibilityAttributes(
638
+ accessibility: GridAccessibilityConfig,
639
+ gridType: 'grid' | 'lazy-vgrid' | 'lazy-hgrid',
640
+ columnCount?: number,
641
+ rowCount?: number
642
+ ): Record<string, string | number | boolean> {
643
+ const attributes: Record<string, string | number | boolean> = {}
644
+
645
+ // Determine appropriate ARIA role
646
+ const defaultRole = gridType === 'grid' ? 'grid' : 'group'
647
+ const role = accessibility.role || defaultRole
648
+ attributes.role = role
649
+
650
+ // Add accessibility labels
651
+ if (accessibility.label) {
652
+ attributes['aria-label'] = accessibility.label
653
+ }
654
+ if (accessibility.description) {
655
+ attributes['aria-describedby'] = accessibility.description
656
+ }
657
+
658
+ // Grid structure information for screen readers
659
+ if (accessibility.screenReader !== false) {
660
+ const screenReaderConfig = typeof accessibility.screenReader === 'boolean' ? {} : accessibility.screenReader || {}
661
+
662
+ if (screenReaderConfig.announceStructure !== false && columnCount !== undefined) {
663
+ attributes['aria-colcount'] = columnCount
664
+ }
665
+ if (screenReaderConfig.announceStructure !== false && rowCount !== undefined) {
666
+ attributes['aria-rowcount'] = rowCount
667
+ }
668
+ }
669
+
670
+ // Keyboard navigation attributes
671
+ if (accessibility.keyboardNavigation !== false) {
672
+ const keyboardConfig = typeof accessibility.keyboardNavigation === 'boolean' ? {} : accessibility.keyboardNavigation || {}
673
+
674
+ if (keyboardConfig.enabled !== false) {
675
+ attributes.tabIndex = 0
676
+ attributes['data-keyboard-navigation'] = keyboardConfig.mode || 'grid'
677
+
678
+ if (keyboardConfig.pageNavigation) {
679
+ attributes['data-page-navigation'] = true
680
+ }
681
+ if (keyboardConfig.homeEndNavigation) {
682
+ attributes['data-home-end-navigation'] = true
683
+ }
684
+ }
685
+ }
686
+
687
+ // Focus management attributes
688
+ if (accessibility.focusManagement !== false) {
689
+ const focusConfig = typeof accessibility.focusManagement === 'boolean' ? {} : accessibility.focusManagement || {}
690
+
691
+ if (focusConfig.trapFocus) {
692
+ attributes['data-focus-trap'] = true
693
+ }
694
+ if (focusConfig.skipLinks) {
695
+ attributes['data-skip-links'] = true
696
+ }
697
+ }
698
+
699
+ // Reduced motion attributes
700
+ if (accessibility.reducedMotion !== false) {
701
+ const motionConfig = typeof accessibility.reducedMotion === 'boolean' ? {} : accessibility.reducedMotion || {}
702
+
703
+ if (motionConfig.respectPreference !== false) {
704
+ attributes['data-respect-reduced-motion'] = true
705
+ attributes['data-reduced-motion-fallback'] = motionConfig.fallbackBehavior || 'disable'
706
+ }
707
+ }
708
+
709
+ return attributes
710
+ }
711
+
712
+ /**
713
+ * Generate reduced motion CSS based on user preferences (Phase 3)
714
+ */
715
+ static generateReducedMotionCSS(accessibility?: GridAccessibilityConfig): Record<string, string> {
716
+ if (!accessibility?.reducedMotion) return {}
717
+
718
+ const motionConfig = typeof accessibility.reducedMotion === 'boolean' ? {} : accessibility.reducedMotion
719
+ const fallback = motionConfig.fallbackBehavior || 'disable'
720
+
721
+ const reducedMotionCSS: Record<string, string> = {}
722
+
723
+ switch (fallback) {
724
+ case 'disable':
725
+ reducedMotionCSS['@media (prefers-reduced-motion: reduce)'] = '{ transition: none !important; animation: none !important; }'
726
+ break
727
+ case 'reduce':
728
+ reducedMotionCSS['@media (prefers-reduced-motion: reduce)'] = '{ transition-duration: 0.1s !important; animation-duration: 0.1s !important; }'
729
+ break
730
+ case 'instant':
731
+ reducedMotionCSS['@media (prefers-reduced-motion: reduce)'] = '{ transition-duration: 0s !important; animation-duration: 0s !important; }'
732
+ break
733
+ }
734
+
735
+ return reducedMotionCSS
736
+ }
737
+
738
+ /**
739
+ * Generate advanced styling CSS for grid components (Phase 3)
740
+ */
741
+ static generateAdvancedStylingCSS(styling: GridStylingConfig): Record<string, string> {
742
+ const styles: Record<string, string> = {}
743
+
744
+ // Grid template areas
745
+ if (styling.templateAreas && styling.templateAreas.length > 0) {
746
+ const areas = styling.templateAreas.map(area => `"${area}"`).join(' ')
747
+ styles.gridTemplateAreas = areas
748
+ }
749
+
750
+ // Advanced gap configuration
751
+ if (styling.advancedGap) {
752
+ if (styling.advancedGap.row) {
753
+ if (typeof styling.advancedGap.row === 'object') {
754
+ // Responsive row gap - would need media queries
755
+ Object.entries(styling.advancedGap.row).forEach(([breakpoint, value]) => {
756
+ const mediaQuery = this.getMediaQueryForBreakpoint(breakpoint)
757
+ if (mediaQuery) {
758
+ styles[mediaQuery] = styles[mediaQuery] || '{}'
759
+ styles[mediaQuery] = styles[mediaQuery].replace('}', ` row-gap: ${value}px; }`)
760
+ }
761
+ })
762
+ } else {
763
+ styles.rowGap = typeof styling.advancedGap.row === 'number'
764
+ ? `${styling.advancedGap.row}px`
765
+ : styling.advancedGap.row
766
+ }
767
+ }
768
+
769
+ if (styling.advancedGap.column) {
770
+ if (typeof styling.advancedGap.column === 'object') {
771
+ // Responsive column gap
772
+ Object.entries(styling.advancedGap.column).forEach(([breakpoint, value]) => {
773
+ const mediaQuery = this.getMediaQueryForBreakpoint(breakpoint)
774
+ if (mediaQuery) {
775
+ styles[mediaQuery] = styles[mediaQuery] || '{}'
776
+ styles[mediaQuery] = styles[mediaQuery].replace('}', ` column-gap: ${value}px; }`)
777
+ }
778
+ })
779
+ } else {
780
+ styles.columnGap = typeof styling.advancedGap.column === 'number'
781
+ ? `${styling.advancedGap.column}px`
782
+ : styling.advancedGap.column
783
+ }
784
+ }
785
+ }
786
+
787
+ // Container styling (handle first to allow debug to override/combine)
788
+ if (styling.container) {
789
+ if (styling.container.background) {
790
+ if (typeof styling.container.background === 'string') {
791
+ styles.background = styling.container.background
792
+ } else {
793
+ const bgConfig = styling.container.background
794
+ switch (bgConfig.pattern) {
795
+ case 'dots':
796
+ styles.background = `radial-gradient(circle, ${bgConfig.color || '#e0e0e0'} 1px, transparent 1px)`
797
+ styles.backgroundSize = '20px 20px'
798
+ if (bgConfig.opacity) {
799
+ styles.opacity = bgConfig.opacity.toString()
800
+ }
801
+ break
802
+ case 'lines':
803
+ styles.background = `linear-gradient(90deg, ${bgConfig.color || '#e0e0e0'} 1px, transparent 1px), linear-gradient(${bgConfig.color || '#e0e0e0'} 1px, transparent 1px)`
804
+ styles.backgroundSize = '20px 20px'
805
+ break
806
+ case 'grid':
807
+ styles.background = `linear-gradient(to right, ${bgConfig.color || '#e0e0e0'} 1px, transparent 1px), linear-gradient(to bottom, ${bgConfig.color || '#e0e0e0'} 1px, transparent 1px)`
808
+ styles.backgroundSize = '20px 20px'
809
+ break
810
+ }
811
+ }
812
+ }
813
+
814
+ if (styling.container.border) {
815
+ styles.border = styling.container.border
816
+ }
817
+ if (styling.container.borderRadius) {
818
+ styles.borderRadius = typeof styling.container.borderRadius === 'number'
819
+ ? `${styling.container.borderRadius}px`
820
+ : styling.container.borderRadius
821
+ }
822
+ if (styling.container.boxShadow) {
823
+ styles.boxShadow = styling.container.boxShadow
824
+ }
825
+ if (styling.container.padding) {
826
+ if (typeof styling.container.padding === 'object') {
827
+ const p = styling.container.padding
828
+ styles.padding = `${p.top || 0} ${p.right || 0} ${p.bottom || 0} ${p.left || 0}`
829
+ } else {
830
+ styles.padding = typeof styling.container.padding === 'number'
831
+ ? `${styling.container.padding}px`
832
+ : styling.container.padding
833
+ }
834
+ }
835
+ }
836
+
837
+ // Debug visualization (applies after container background to combine properly)
838
+ if (styling.debug && (styling.debug === true || styling.debug.enabled)) {
839
+ const debugConfig = typeof styling.debug === 'boolean' ? {} : styling.debug
840
+ const lineColor = debugConfig.lineColor || '#ff0000'
841
+
842
+ if (debugConfig.showLines !== false) {
843
+ const debugGradient = `linear-gradient(to right, ${lineColor} 1px, transparent 1px), linear-gradient(to bottom, ${lineColor} 1px, transparent 1px)`
844
+
845
+ // Combine with existing background if present
846
+ if (styles.background && !styles.background.includes('linear-gradient')) {
847
+ styles.background = `${debugGradient}, ${styles.background}`
848
+ } else {
849
+ styles.background = debugGradient
850
+ }
851
+ styles.backgroundSize = 'var(--grid-debug-size, 20px) var(--grid-debug-size, 20px)'
852
+ }
853
+
854
+ if (debugConfig.showAreas) {
855
+ styles.position = 'relative'
856
+ styles['&::after'] = `{ content: ""; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: repeating-linear-gradient(45deg, transparent, transparent 10px, ${lineColor}22 10px, ${lineColor}22 20px); pointer-events: none; }`
857
+ }
858
+ }
859
+
860
+ return styles
861
+ }
862
+
863
+ /**
864
+ * Generate item state CSS (hover, focus, active) (Phase 3)
865
+ */
866
+ static generateItemStateCSS(itemStates: NonNullable<GridStylingConfig['itemStates']>): Record<string, string> {
867
+ const styles: Record<string, string> = {}
868
+
869
+ // Hover effects
870
+ if (itemStates.hover && itemStates.hover.enabled !== false) {
871
+ const hoverConfig = itemStates.hover
872
+ const hoverStyles: string[] = []
873
+
874
+ switch (hoverConfig.transform) {
875
+ case 'scale':
876
+ hoverStyles.push('transform: scale(1.05)')
877
+ break
878
+ case 'lift':
879
+ hoverStyles.push('transform: translateY(-2px)', 'box-shadow: 0 4px 8px rgba(0,0,0,0.12)')
880
+ break
881
+ case 'glow':
882
+ hoverStyles.push('box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.4)')
883
+ break
884
+ case 'highlight':
885
+ hoverStyles.push('background-color: rgba(59, 130, 246, 0.1)')
886
+ break
887
+ }
888
+
889
+ if (hoverConfig.transition) {
890
+ hoverStyles.push(`transition: ${hoverConfig.transition}`)
891
+ } else {
892
+ hoverStyles.push('transition: all 0.2s ease')
893
+ }
894
+
895
+ if (hoverConfig.customCSS) {
896
+ Object.entries(hoverConfig.customCSS).forEach(([prop, value]) => {
897
+ hoverStyles.push(`${prop}: ${value}`)
898
+ })
899
+ }
900
+
901
+ styles['& > *:hover'] = `{ ${hoverStyles.join('; ')} }`
902
+ }
903
+
904
+ // Focus effects
905
+ if (itemStates.focus && itemStates.focus.enabled !== false) {
906
+ const focusConfig = itemStates.focus
907
+ const focusStyles: string[] = []
908
+
909
+ switch (focusConfig.style) {
910
+ case 'ring':
911
+ focusStyles.push(`box-shadow: 0 0 0 2px ${focusConfig.color || '#3b82f6'}`)
912
+ break
913
+ case 'outline':
914
+ focusStyles.push(`outline: 2px solid ${focusConfig.color || '#3b82f6'}`, 'outline-offset: 2px')
915
+ break
916
+ case 'background':
917
+ focusStyles.push(`background-color: ${focusConfig.color || 'rgba(59, 130, 246, 0.1)'}`)
918
+ break
919
+ case 'border':
920
+ focusStyles.push(`border: 2px solid ${focusConfig.color || '#3b82f6'}`)
921
+ break
922
+ }
923
+
924
+ if (focusConfig.customCSS) {
925
+ Object.entries(focusConfig.customCSS).forEach(([prop, value]) => {
926
+ focusStyles.push(`${prop}: ${value}`)
927
+ })
928
+ }
929
+
930
+ styles['& > *:focus'] = `{ ${focusStyles.join('; ')} }`
931
+ }
932
+
933
+ // Active effects
934
+ if (itemStates.active && itemStates.active.enabled !== false) {
935
+ const activeConfig = itemStates.active
936
+ const activeStyles: string[] = []
937
+
938
+ switch (activeConfig.transform) {
939
+ case 'scale':
940
+ activeStyles.push('transform: scale(0.95)')
941
+ break
942
+ case 'inset':
943
+ activeStyles.push('box-shadow: inset 0 2px 4px rgba(0,0,0,0.1)')
944
+ break
945
+ case 'darken':
946
+ activeStyles.push('filter: brightness(0.9)')
947
+ break
948
+ }
949
+
950
+ if (activeConfig.customCSS) {
951
+ Object.entries(activeConfig.customCSS).forEach(([prop, value]) => {
952
+ activeStyles.push(`${prop}: ${value}`)
953
+ })
954
+ }
955
+
956
+ styles['& > *:active'] = `{ ${activeStyles.join('; ')} }`
957
+ }
958
+
959
+ return styles
960
+ }
961
+
962
+ /**
963
+ * Get media query for breakpoint (helper function)
964
+ */
965
+ private static getMediaQueryForBreakpoint(breakpoint: string): string | null {
966
+ const breakpoints: Record<string, string> = {
967
+ sm: '@media (min-width: 640px)',
968
+ md: '@media (min-width: 768px)',
969
+ lg: '@media (min-width: 1024px)',
970
+ xl: '@media (min-width: 1280px)',
971
+ xxl: '@media (min-width: 1536px)'
972
+ }
973
+ return breakpoints[breakpoint] || null
974
+ }
975
+ }
976
+
977
+ /**
978
+ * Grid Section Header/Footer component (Phase 3)
979
+ */
980
+ class GridSectionHeaderComponent extends ComponentWithCSSClasses implements ComponentInstance<GridSectionHeaderProps> {
981
+ public readonly type = 'component' as const
982
+ public readonly id: string
983
+ public mounted = false
984
+ public cleanup: (() => void)[] = []
985
+ private effectiveTag: string
986
+ private validationResult: any
987
+
988
+ constructor(public props: GridSectionHeaderProps) {
989
+ super()
990
+ this.id = `grid-section-${props.type}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`
991
+
992
+ // Process element override
993
+ const componentType = `GridSection${props.type === 'header' ? 'Header' : 'Footer'}`
994
+ const override = processElementOverride(componentType, 'div', this.props.element)
995
+ this.effectiveTag = override.tag
996
+ this.validationResult = override.validation
997
+ }
998
+
999
+ render() {
1000
+ const { content, sectionId, type, style, debugLabel } = this.props
1001
+
1002
+ // Log component for debugging
1003
+ const debug = getDebugManager()
1004
+ debug.logComponent(`GRID_SECTION_${type.toUpperCase()}`, debugLabel)
1005
+
1006
+ // Process CSS classes for this component
1007
+ const baseClasses = [`tachui-grid-section-${type}`, ...(debug.isEnabled() ? ['tachui-debug'] : [])]
1008
+ const classString = this.createClassString(this.props, baseClasses)
1009
+
1010
+ // Determine column span (will be set by parent grid)
1011
+ const columnSpan = 12 // Default, should be overridden by parent
1012
+
1013
+ // Generate section header styles
1014
+ const sectionStyles = GridCSSGenerator.generateSectionHeaderCSS(style, type, columnSpan)
1015
+
1016
+ // Render content
1017
+ let renderedContent: any
1018
+ if (typeof content === 'string') {
1019
+ renderedContent = [{
1020
+ type: 'element' as const,
1021
+ tag: 'span',
1022
+ props: {
1023
+ className: `tachui-grid-section-${type}-text`,
1024
+ children: [{ type: 'text' as const, text: content }]
1025
+ }
1026
+ }]
1027
+ } else {
1028
+ const contentResult = content.render()
1029
+ renderedContent = Array.isArray(contentResult) ? contentResult : [contentResult]
1030
+ }
1031
+
1032
+ const element = {
1033
+ type: 'element' as const,
1034
+ tag: this.effectiveTag,
1035
+ props: {
1036
+ className: classString,
1037
+ style: sectionStyles,
1038
+ 'data-section-id': sectionId,
1039
+ 'data-section-type': type,
1040
+ // Add debug attributes
1041
+ ...(debug.isEnabled() && {
1042
+ 'data-tachui-component': `GridSection${type === 'header' ? 'Header' : 'Footer'}`,
1043
+ ...(debugLabel && { 'data-tachui-label': debugLabel })
1044
+ })
1045
+ },
1046
+ children: renderedContent,
1047
+ // Add component metadata
1048
+ componentMetadata: {
1049
+ originalType: `GridSection${type === 'header' ? 'Header' : 'Footer'}`,
1050
+ overriddenTo: this.effectiveTag !== 'div' ? this.effectiveTag : undefined,
1051
+ validationResult: this.validationResult
1052
+ }
1053
+ }
1054
+
1055
+ return [element]
1056
+ }
1057
+ }
1058
+
1059
+ /**
1060
+ * Base Grid component class with CSS Grid layout
1061
+ */
1062
+ class BaseGridComponent extends ComponentWithCSSClasses implements ComponentInstance<BaseGridProps> {
1063
+ public readonly type = 'component' as const
1064
+ public readonly id: string
1065
+ public mounted = false
1066
+ public cleanup: (() => void)[] = []
1067
+ protected effectiveTag: string
1068
+ protected validationResult: any
1069
+
1070
+ constructor(
1071
+ public props: BaseGridProps,
1072
+ protected gridType: 'grid' | 'lazy-vgrid' | 'lazy-hgrid',
1073
+ public children: ComponentInstance[] = []
1074
+ ) {
1075
+ super()
1076
+ this.id = `${gridType}-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`
1077
+
1078
+ // Process element override for tag specification enhancement
1079
+ const componentType = gridType === 'grid' ? 'Grid' :
1080
+ gridType === 'lazy-vgrid' ? 'LazyVGrid' : 'LazyHGrid'
1081
+ const override = processElementOverride(componentType, 'div', this.props.element)
1082
+ this.effectiveTag = override.tag
1083
+ this.validationResult = override.validation
1084
+
1085
+ // Set up lifecycle hooks for child components
1086
+ this.setupLifecycleHooks()
1087
+
1088
+ // Register this component for lifecycle processing
1089
+ registerComponentWithLifecycleHooks(this)
1090
+ }
1091
+
1092
+ /**
1093
+ * Generate animation styles for grid layout (Phase 3)
1094
+ */
1095
+ protected generateAnimationStyles(animations?: GridAnimationConfig): Record<string, string> {
1096
+ if (!animations) return {}
1097
+
1098
+ return GridCSSGenerator.generateGridAnimationCSS(animations)
1099
+ }
1100
+
1101
+ /**
1102
+ * Apply item animations to child elements (Phase 3)
1103
+ */
1104
+ protected applyItemAnimations(children: ComponentInstance[], animations?: GridAnimationConfig): ComponentInstance[] {
1105
+ if (!animations?.itemChanges) return children
1106
+
1107
+ const itemConfig = typeof animations.itemChanges === 'boolean' ? {} : animations.itemChanges
1108
+
1109
+ // Apply enter animations to new items
1110
+ if (itemConfig.enter) {
1111
+ const enterConfig = itemConfig.enter
1112
+ const duration = enterConfig.duration || 250
1113
+ const easing = enterConfig.easing || 'ease-out'
1114
+ const delay = enterConfig.delay || 0
1115
+
1116
+ // Apply animation styles to children
1117
+ return children.map((child, index) => {
1118
+ // Add animation modifier to child (if child supports modifiers)
1119
+ if ('modifiers' in child && Array.isArray((child as any).modifiers)) {
1120
+ const animationDelay = delay + (index * 50) // Stagger animations
1121
+ const animationModifier = transition('all', duration, easing, animationDelay)
1122
+ ;(child as any).modifiers.push(animationModifier)
1123
+ }
1124
+ return child
1125
+ })
1126
+ }
1127
+
1128
+ return children
1129
+ }
1130
+
1131
+ /**
1132
+ * Generate accessibility attributes for grid (Phase 3)
1133
+ */
1134
+ protected generateAccessibilityAttributes(accessibility?: GridAccessibilityConfig, columnCount?: number, rowCount?: number): Record<string, any> {
1135
+ if (!accessibility) return {}
1136
+
1137
+ return GridCSSGenerator.generateAccessibilityAttributes(accessibility, this.gridType, columnCount, rowCount)
1138
+ }
1139
+
1140
+ /**
1141
+ * Generate advanced styling CSS for grid (Phase 3)
1142
+ */
1143
+ protected generateStylingCSS(styling?: GridStylingConfig): Record<string, string> {
1144
+ if (!styling) return {}
1145
+
1146
+ const stylingCSS = GridCSSGenerator.generateAdvancedStylingCSS(styling)
1147
+
1148
+ // Add item state CSS if configured
1149
+ if (styling.itemStates) {
1150
+ const itemStateCSS = GridCSSGenerator.generateItemStateCSS(styling.itemStates)
1151
+ Object.assign(stylingCSS, itemStateCSS)
1152
+ }
1153
+
1154
+ return stylingCSS
1155
+ }
1156
+
1157
+ /**
1158
+ * Handle keyboard navigation events (Phase 3)
1159
+ */
1160
+ protected setupKeyboardNavigation(element: HTMLElement, accessibility?: GridAccessibilityConfig) {
1161
+ if (!accessibility?.keyboardNavigation) return
1162
+
1163
+ const keyboardConfig = typeof accessibility.keyboardNavigation === 'boolean' ? {} : accessibility.keyboardNavigation
1164
+ if (keyboardConfig.enabled === false) return
1165
+
1166
+ const mode = keyboardConfig.mode || 'grid'
1167
+
1168
+ const handleKeyDown = (event: KeyboardEvent) => {
1169
+ const target = event.target as HTMLElement
1170
+ if (!element.contains(target)) return
1171
+
1172
+ let handled = false
1173
+
1174
+ switch (event.key) {
1175
+ case 'ArrowUp':
1176
+ if (mode === 'grid') {
1177
+ this.navigateGrid(element, 'up')
1178
+ handled = true
1179
+ }
1180
+ break
1181
+ case 'ArrowDown':
1182
+ if (mode === 'grid') {
1183
+ this.navigateGrid(element, 'down')
1184
+ handled = true
1185
+ } else if (mode === 'list') {
1186
+ this.navigateList(element, 'next')
1187
+ handled = true
1188
+ }
1189
+ break
1190
+ case 'ArrowLeft':
1191
+ this.navigateGrid(element, 'left')
1192
+ handled = true
1193
+ break
1194
+ case 'ArrowRight':
1195
+ this.navigateGrid(element, 'right')
1196
+ handled = true
1197
+ break
1198
+ case 'Home':
1199
+ if (keyboardConfig.homeEndNavigation) {
1200
+ this.navigateToFirst(element)
1201
+ handled = true
1202
+ }
1203
+ break
1204
+ case 'End':
1205
+ if (keyboardConfig.homeEndNavigation) {
1206
+ this.navigateToLast(element)
1207
+ handled = true
1208
+ }
1209
+ break
1210
+ case 'PageUp':
1211
+ if (keyboardConfig.pageNavigation) {
1212
+ this.navigatePage(element, 'up')
1213
+ handled = true
1214
+ }
1215
+ break
1216
+ case 'PageDown':
1217
+ if (keyboardConfig.pageNavigation) {
1218
+ this.navigatePage(element, 'down')
1219
+ handled = true
1220
+ }
1221
+ break
1222
+ }
1223
+
1224
+ if (handled) {
1225
+ event.preventDefault()
1226
+ event.stopPropagation()
1227
+ }
1228
+ }
1229
+
1230
+ element.addEventListener('keydown', handleKeyDown)
1231
+
1232
+ // Store cleanup function
1233
+ this.cleanup.push(() => {
1234
+ element.removeEventListener('keydown', handleKeyDown)
1235
+ })
1236
+ }
1237
+
1238
+ /**
1239
+ * Navigate within grid structure (Phase 3)
1240
+ */
1241
+ private navigateGrid(container: HTMLElement, direction: 'up' | 'down' | 'left' | 'right') {
1242
+ const focusableElements = container.querySelectorAll('[tabindex="0"], button, input, select, textarea, [contenteditable]')
1243
+ const currentIndex = Array.from(focusableElements).indexOf(document.activeElement as HTMLElement)
1244
+
1245
+ if (currentIndex === -1) return
1246
+
1247
+ // Get grid dimensions (simplified - assumes regular grid)
1248
+ const computedStyle = getComputedStyle(container)
1249
+ const columns = computedStyle.gridTemplateColumns.split(' ').length
1250
+
1251
+ let targetIndex = currentIndex
1252
+
1253
+ switch (direction) {
1254
+ case 'up':
1255
+ targetIndex = Math.max(0, currentIndex - columns)
1256
+ break
1257
+ case 'down':
1258
+ targetIndex = Math.min(focusableElements.length - 1, currentIndex + columns)
1259
+ break
1260
+ case 'left':
1261
+ targetIndex = Math.max(0, currentIndex - 1)
1262
+ break
1263
+ case 'right':
1264
+ targetIndex = Math.min(focusableElements.length - 1, currentIndex + 1)
1265
+ break
1266
+ }
1267
+
1268
+ if (targetIndex !== currentIndex) {
1269
+ (focusableElements[targetIndex] as HTMLElement).focus()
1270
+ }
1271
+ }
1272
+
1273
+ /**
1274
+ * Navigate in list mode (Phase 3)
1275
+ */
1276
+ private navigateList(container: HTMLElement, direction: 'previous' | 'next') {
1277
+ const focusableElements = container.querySelectorAll('[tabindex="0"], button, input, select, textarea, [contenteditable]')
1278
+ const currentIndex = Array.from(focusableElements).indexOf(document.activeElement as HTMLElement)
1279
+
1280
+ if (currentIndex === -1) return
1281
+
1282
+ const targetIndex = direction === 'next'
1283
+ ? Math.min(focusableElements.length - 1, currentIndex + 1)
1284
+ : Math.max(0, currentIndex - 1)
1285
+
1286
+ if (targetIndex !== currentIndex) {
1287
+ (focusableElements[targetIndex] as HTMLElement).focus()
1288
+ }
1289
+ }
1290
+
1291
+ /**
1292
+ * Navigate to first/last elements (Phase 3)
1293
+ */
1294
+ private navigateToFirst(container: HTMLElement) {
1295
+ const focusableElements = container.querySelectorAll('[tabindex="0"], button, input, select, textarea, [contenteditable]')
1296
+ if (focusableElements.length > 0) {
1297
+ (focusableElements[0] as HTMLElement).focus()
1298
+ }
1299
+ }
1300
+
1301
+ private navigateToLast(container: HTMLElement) {
1302
+ const focusableElements = container.querySelectorAll('[tabindex="0"], button, input, select, textarea, [contenteditable]')
1303
+ if (focusableElements.length > 0) {
1304
+ (focusableElements[focusableElements.length - 1] as HTMLElement).focus()
1305
+ }
1306
+ }
1307
+
1308
+ /**
1309
+ * Navigate by page (Phase 3)
1310
+ */
1311
+ private navigatePage(container: HTMLElement, direction: 'up' | 'down') {
1312
+ const focusableElements = container.querySelectorAll('[tabindex="0"], button, input, select, textarea, [contenteditable]')
1313
+ const currentIndex = Array.from(focusableElements).indexOf(document.activeElement as HTMLElement)
1314
+
1315
+ if (currentIndex === -1) return
1316
+
1317
+ // Page navigation jumps by ~10 items or to start/end
1318
+ const pageSize = 10
1319
+ const targetIndex = direction === 'down'
1320
+ ? Math.min(focusableElements.length - 1, currentIndex + pageSize)
1321
+ : Math.max(0, currentIndex - pageSize)
1322
+
1323
+ if (targetIndex !== currentIndex) {
1324
+ (focusableElements[targetIndex] as HTMLElement).focus()
1325
+ }
1326
+ }
1327
+
1328
+ private setupLifecycleHooks() {
1329
+ useLifecycle(this, {
1330
+ onDOMReady: (_elements, primaryElement) => {
1331
+ // Process lifecycle hooks for child components that have them
1332
+ this.children.forEach((child, index) => {
1333
+ const enhancedLifecycle = (child as any)._enhancedLifecycle
1334
+
1335
+ if (enhancedLifecycle && enhancedLifecycle.onDOMReady && !child.domReady) {
1336
+ try {
1337
+ if (primaryElement) {
1338
+ const childElements = this.findChildDOMElements(child, primaryElement, index)
1339
+
1340
+ if (childElements.length > 0) {
1341
+ child.domElements = new Map()
1342
+ childElements.forEach((element, idx) => {
1343
+ const key = element.id || `element-${idx}`
1344
+ child.domElements!.set(key, element)
1345
+ if (!child.primaryElement) {
1346
+ child.primaryElement = element
1347
+ }
1348
+ })
1349
+
1350
+ child.domReady = true
1351
+
1352
+ // Call the child's onDOMReady hook
1353
+ const cleanup = enhancedLifecycle.onDOMReady(
1354
+ child.domElements,
1355
+ child.primaryElement
1356
+ )
1357
+ if (typeof cleanup === 'function') {
1358
+ child.cleanup = child.cleanup || []
1359
+ child.cleanup.push(cleanup)
1360
+ }
1361
+
1362
+ // Also call onMount if it exists
1363
+ if (enhancedLifecycle.onMount) {
1364
+ const mountCleanup = enhancedLifecycle.onMount()
1365
+ if (typeof mountCleanup === 'function') {
1366
+ child.cleanup = child.cleanup || []
1367
+ child.cleanup.push(mountCleanup)
1368
+ }
1369
+ }
1370
+ }
1371
+ }
1372
+ } catch (error) {
1373
+ console.error(`Error processing lifecycle hooks for child ${child.id}:`, error)
1374
+ }
1375
+ }
1376
+ })
1377
+ }
1378
+ })
1379
+ }
1380
+
1381
+ /**
1382
+ * Find DOM elements for child components (reusing pattern from LayoutComponent)
1383
+ */
1384
+ private findChildDOMElements(child: ComponentInstance, container: Element, childIndex: number): Element[] {
1385
+ // For Image components, look for img elements with the tachui-image class
1386
+ if (child.id.startsWith('image-')) {
1387
+ const images = container.querySelectorAll('img.tachui-image')
1388
+ if (images[childIndex]) {
1389
+ return [images[childIndex]]
1390
+ }
1391
+ return Array.from(images)
1392
+ }
1393
+
1394
+ // For Button components, look for button elements with the tachui-button class
1395
+ if (child.id.startsWith('button-')) {
1396
+ const buttons = container.querySelectorAll('button.tachui-button')
1397
+ if (buttons[childIndex]) {
1398
+ return [buttons[childIndex]]
1399
+ }
1400
+ return Array.from(buttons)
1401
+ }
1402
+
1403
+ // For Text components, look for span elements with the tachui-text class
1404
+ if (child.id.startsWith('text-')) {
1405
+ const textElements = container.querySelectorAll('span.tachui-text, .tachui-text')
1406
+ if (textElements[childIndex]) {
1407
+ return [textElements[childIndex]]
1408
+ }
1409
+ return Array.from(textElements)
1410
+ }
1411
+
1412
+ // For other components, try to find any direct children elements
1413
+ const allChildren = Array.from(container.children)
1414
+ if (allChildren[childIndex]) {
1415
+ return [allChildren[childIndex]]
1416
+ }
1417
+
1418
+ return allChildren
1419
+ }
1420
+
1421
+ render(): any[] {
1422
+ // To be implemented by specific grid component subclasses
1423
+ throw new Error('BaseGridComponent.render() must be implemented by subclass')
1424
+ }
1425
+ }
1426
+
1427
+ /**
1428
+ * Grid component class (explicit row/column control)
1429
+ */
1430
+ class GridComponent extends BaseGridComponent {
1431
+ constructor(public props: GridProps, children: ComponentInstance[] = []) {
1432
+ super(props, 'grid', children)
1433
+ }
1434
+
1435
+ render() {
1436
+ const { alignment = 'center', spacing, debugLabel, animations, accessibility, styling } = this.props
1437
+
1438
+ // Log component for debugging
1439
+ const debug = getDebugManager()
1440
+ debug.logComponent('GRID', debugLabel)
1441
+
1442
+ // Process CSS classes for this component
1443
+ const baseClasses = ['tachui-grid', ...(debug.isEnabled() ? ['tachui-debug'] : [])]
1444
+ const classString = this.createClassString(this.props, baseClasses)
1445
+
1446
+ // Apply item animations to children before rendering (Phase 3)
1447
+ const animatedChildren = this.applyItemAnimations(this.children, animations)
1448
+
1449
+ // Render children - Grid expects GridRow children for explicit layout
1450
+ const renderedChildren = animatedChildren.map((child) => {
1451
+ const childResult = child.render()
1452
+ return Array.isArray(childResult) ? childResult : [childResult]
1453
+ }).flat()
1454
+
1455
+ // Generate base CSS Grid styles
1456
+ const alignmentStyles = GridCSSGenerator.generateAlignment(alignment)
1457
+ const gapValue = GridCSSGenerator.generateSpacing(spacing)
1458
+
1459
+ // Phase 3: Generate animation styles
1460
+ const animationStyles = this.generateAnimationStyles(animations)
1461
+
1462
+ // Phase 3: Generate accessibility attributes
1463
+ const accessibilityAttrs = this.generateAccessibilityAttributes(accessibility)
1464
+
1465
+ // Phase 3: Generate reduced motion CSS
1466
+ const reducedMotionCSS = GridCSSGenerator.generateReducedMotionCSS(accessibility)
1467
+
1468
+ // Phase 3: Generate advanced styling CSS
1469
+ const advancedStylingCSS = this.generateStylingCSS(styling)
1470
+
1471
+ const finalStyles = {
1472
+ display: 'grid',
1473
+ gap: gapValue,
1474
+ ...alignmentStyles,
1475
+ ...animationStyles,
1476
+ ...reducedMotionCSS,
1477
+ ...advancedStylingCSS
1478
+ }
1479
+
1480
+ const element = {
1481
+ type: 'element' as const,
1482
+ tag: this.effectiveTag,
1483
+ props: {
1484
+ className: classString,
1485
+ style: finalStyles,
1486
+ ...accessibilityAttrs,
1487
+ // Add debug attributes
1488
+ ...(debug.isEnabled() && {
1489
+ 'data-tachui-component': 'Grid',
1490
+ ...(debugLabel && { 'data-tachui-label': debugLabel })
1491
+ })
1492
+ },
1493
+ children: renderedChildren,
1494
+ // Add component metadata for semantic role processing
1495
+ componentMetadata: {
1496
+ originalType: 'Grid',
1497
+ overriddenTo: this.effectiveTag !== 'div' ? this.effectiveTag : undefined,
1498
+ validationResult: this.validationResult
1499
+ }
1500
+ }
1501
+
1502
+ return [element]
1503
+ }
1504
+ }
1505
+
1506
+ /**
1507
+ * GridRow component class
1508
+ */
1509
+ class GridRowComponent extends ComponentWithCSSClasses implements ComponentInstance<GridRowProps> {
1510
+ public readonly type = 'component' as const
1511
+ public readonly id: string
1512
+ public mounted = false
1513
+ public cleanup: (() => void)[] = []
1514
+ private effectiveTag: string
1515
+ private validationResult: any
1516
+
1517
+ constructor(public props: GridRowProps, public children: ComponentInstance[] = []) {
1518
+ super()
1519
+ this.id = `gridrow-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`
1520
+
1521
+ // Process element override for tag specification enhancement
1522
+ const override = processElementOverride('GridRow', 'div', this.props.element)
1523
+ this.effectiveTag = override.tag
1524
+ this.validationResult = override.validation
1525
+ }
1526
+
1527
+ render() {
1528
+ const { debugLabel } = this.props
1529
+
1530
+ // Log component for debugging
1531
+ const debug = getDebugManager()
1532
+ debug.logComponent('GRIDROW', debugLabel)
1533
+
1534
+ // Process CSS classes for this component
1535
+ const baseClasses = ['tachui-gridrow', ...(debug.isEnabled() ? ['tachui-debug'] : [])]
1536
+ const classString = this.createClassString(this.props, baseClasses)
1537
+
1538
+ // Render children
1539
+ const renderedChildren = this.children.map((child) => {
1540
+ const childResult = child.render()
1541
+ return Array.isArray(childResult) ? childResult : [childResult]
1542
+ }).flat()
1543
+
1544
+ // GridRow creates a row within the parent Grid - contents are positioned within the grid row
1545
+ const element = {
1546
+ type: 'element' as const,
1547
+ tag: this.effectiveTag,
1548
+ props: {
1549
+ className: classString,
1550
+ style: {
1551
+ display: 'contents', // GridRow acts as a transparent container within CSS Grid
1552
+ },
1553
+ // Add debug attributes
1554
+ ...(debug.isEnabled() && {
1555
+ 'data-tachui-component': 'GridRow',
1556
+ ...(debugLabel && { 'data-tachui-label': debugLabel })
1557
+ })
1558
+ },
1559
+ children: renderedChildren,
1560
+ // Add component metadata
1561
+ componentMetadata: {
1562
+ originalType: 'GridRow',
1563
+ overriddenTo: this.effectiveTag !== 'div' ? this.effectiveTag : undefined,
1564
+ validationResult: this.validationResult
1565
+ }
1566
+ }
1567
+
1568
+ return [element]
1569
+ }
1570
+ }
1571
+
1572
+ /**
1573
+ * LazyVGrid component class (vertical scrolling with flexible columns)
1574
+ */
1575
+ class LazyVGridComponent extends BaseGridComponent {
1576
+ constructor(public props: LazyVGridProps, children: ComponentInstance[] = []) {
1577
+ super(props, 'lazy-vgrid', children)
1578
+ }
1579
+
1580
+ render() {
1581
+ const { columns, alignment = 'center', spacing, debugLabel, responsive, sections, pinnedViews, animations, accessibility, styling } = this.props
1582
+
1583
+ // Log component for debugging
1584
+ const debug = getDebugManager()
1585
+ debug.logComponent('LAZYVGRID', debugLabel)
1586
+
1587
+ // Process CSS classes for this component
1588
+ const baseClasses = ['tachui-lazy-vgrid', ...(debug.isEnabled() ? ['tachui-debug'] : [])]
1589
+ const classString = this.createClassString(this.props, baseClasses)
1590
+
1591
+ // Phase 3: Handle sectioned data with headers and footers
1592
+ let renderedChildren: any[]
1593
+ if (sections && sections.length > 0) {
1594
+ renderedChildren = this.renderSections(sections, pinnedViews)
1595
+ } else {
1596
+ // Apply item animations to children before rendering (Phase 3)
1597
+ const animatedChildren = this.applyItemAnimations(this.children, animations)
1598
+
1599
+ // Render regular children (backward compatibility)
1600
+ renderedChildren = animatedChildren.map((child) => {
1601
+ const childResult = child.render()
1602
+ return Array.isArray(childResult) ? childResult : [childResult]
1603
+ }).flat()
1604
+ }
1605
+
1606
+ // Generate CSS Grid styles
1607
+ let gridTemplateColumns: string
1608
+ let baseStyles: Record<string, any> = {
1609
+ display: 'grid',
1610
+ }
1611
+
1612
+ // Phase 2: Enhanced responsive integration
1613
+ if (responsive) {
1614
+ // Performance monitoring for responsive CSS generation
1615
+ const endMeasurement = GridPerformanceMonitor.startMeasurement('responsive-css-generation')
1616
+
1617
+ try {
1618
+ // Use enhanced responsive configuration
1619
+ const responsiveConfig = GridResponsiveUtils.createResponsiveGridConfig({
1620
+ columns: columns as any,
1621
+ spacing,
1622
+ alignment
1623
+ })
1624
+
1625
+ // Merge with provided responsive config
1626
+ const finalConfig = { ...responsiveConfig, ...responsive }
1627
+
1628
+ // Debug: Register grid instance and visualize breakpoints
1629
+ GridDebugger.registerGrid(this.id, finalConfig, `#${this.id}`)
1630
+ GridDebugger.visualizeBreakpoints(finalConfig)
1631
+
1632
+ // Generate responsive modifier (would be applied by modifier system)
1633
+ const responsiveModifier = createResponsiveGridModifier(finalConfig)
1634
+
1635
+ // For Phase 2, we'll apply base styles and let the modifier system handle responsive styles
1636
+ if (finalConfig.columns && typeof finalConfig.columns === 'object' && 'base' in finalConfig.columns && finalConfig.columns.base) {
1637
+ gridTemplateColumns = this.generateColumnsFromConfig(finalConfig.columns.base)
1638
+ } else if (Array.isArray(columns)) {
1639
+ gridTemplateColumns = GridCSSGenerator.generateColumns(columns)
1640
+ } else {
1641
+ gridTemplateColumns = '1fr'
1642
+ }
1643
+
1644
+ // Add responsive modifier to component metadata for processing
1645
+ baseStyles._responsiveModifier = responsiveModifier
1646
+ } finally {
1647
+ endMeasurement()
1648
+ }
1649
+ } else {
1650
+ // Phase 1: Basic responsive support (backward compatibility)
1651
+ const alignmentStyles = GridCSSGenerator.generateAlignment(alignment)
1652
+ const gapValue = GridCSSGenerator.generateSpacing(spacing)
1653
+
1654
+ if (Array.isArray(columns)) {
1655
+ // Simple column configuration
1656
+ gridTemplateColumns = GridCSSGenerator.generateColumns(columns)
1657
+ } else {
1658
+ // Responsive column configuration (legacy)
1659
+ const responsiveCSS = GridCSSGenerator.generateResponsiveGridCSS(columns, 'grid-template-columns')
1660
+ const templateValue = responsiveCSS['grid-template-columns']
1661
+ gridTemplateColumns = (typeof templateValue === 'string' ? templateValue : '1fr')
1662
+ }
1663
+
1664
+ baseStyles = {
1665
+ ...baseStyles,
1666
+ gap: gapValue,
1667
+ ...alignmentStyles,
1668
+ }
1669
+ }
1670
+
1671
+ baseStyles.gridTemplateColumns = gridTemplateColumns
1672
+
1673
+ // Phase 3: Apply animation styles
1674
+ const animationStyles = this.generateAnimationStyles(animations)
1675
+ Object.assign(baseStyles, animationStyles)
1676
+
1677
+ // Phase 3: Generate accessibility attributes
1678
+ const columnCount = this.getColumnCount()
1679
+ const accessibilityAttrs = this.generateAccessibilityAttributes(accessibility, columnCount)
1680
+
1681
+ // Phase 3: Generate reduced motion CSS
1682
+ const reducedMotionCSS = GridCSSGenerator.generateReducedMotionCSS(accessibility)
1683
+ Object.assign(baseStyles, reducedMotionCSS)
1684
+
1685
+ // Phase 3: Generate advanced styling CSS
1686
+ const advancedStylingCSS = this.generateStylingCSS(styling)
1687
+ Object.assign(baseStyles, advancedStylingCSS)
1688
+
1689
+ const element = {
1690
+ type: 'element' as const,
1691
+ tag: this.effectiveTag,
1692
+ props: {
1693
+ className: classString,
1694
+ style: baseStyles,
1695
+ ...accessibilityAttrs,
1696
+ // Add debug attributes
1697
+ ...(debug.isEnabled() && {
1698
+ 'data-tachui-component': 'LazyVGrid',
1699
+ ...(debugLabel && { 'data-tachui-label': debugLabel })
1700
+ })
1701
+ },
1702
+ children: renderedChildren,
1703
+ // Add component metadata
1704
+ componentMetadata: {
1705
+ originalType: 'LazyVGrid',
1706
+ overriddenTo: this.effectiveTag !== 'div' ? this.effectiveTag : undefined,
1707
+ validationResult: this.validationResult,
1708
+ // Phase 2: Include responsive modifier for processing
1709
+ ...(responsive && baseStyles._responsiveModifier && {
1710
+ responsiveModifier: baseStyles._responsiveModifier
1711
+ })
1712
+ }
1713
+ }
1714
+
1715
+ // Clean up internal responsive modifier from styles
1716
+ if (baseStyles._responsiveModifier) {
1717
+ delete baseStyles._responsiveModifier
1718
+ }
1719
+
1720
+ return [element]
1721
+ }
1722
+
1723
+ /**
1724
+ * Render sectioned data with headers and footers (Phase 3)
1725
+ */
1726
+ private renderSections(sections: GridSection[], pinnedViews?: ('sectionHeaders' | 'sectionFooters')[]): any[] {
1727
+ const renderedElements: any[] = []
1728
+ const columnCount = this.getColumnCount()
1729
+ const isPinnedHeaders = pinnedViews?.includes('sectionHeaders')
1730
+ const isPinnedFooters = pinnedViews?.includes('sectionFooters')
1731
+
1732
+ sections.forEach((section) => {
1733
+ // Render section header
1734
+ if (section.header) {
1735
+ const headerStyle = section.headerStyle || (isPinnedHeaders ? 'sticky' : 'automatic')
1736
+ const headerComponent = new GridSectionHeaderComponent({
1737
+ content: section.header,
1738
+ sectionId: section.id,
1739
+ type: 'header',
1740
+ style: headerStyle
1741
+ })
1742
+
1743
+ const headerResult = headerComponent.render()
1744
+ if (Array.isArray(headerResult)) {
1745
+ // Update grid-column style to span all columns
1746
+ headerResult.forEach(element => {
1747
+ if (element.props && element.props.style) {
1748
+ element.props.style.gridColumn = `1 / span ${columnCount}`
1749
+ }
1750
+ })
1751
+ renderedElements.push(...headerResult)
1752
+ }
1753
+ }
1754
+
1755
+ // Render section items
1756
+ section.items.forEach((item) => {
1757
+ const itemResult = item.render()
1758
+ const flatResult = Array.isArray(itemResult) ? itemResult : [itemResult]
1759
+ renderedElements.push(...flatResult)
1760
+ })
1761
+
1762
+ // Render section footer
1763
+ if (section.footer) {
1764
+ const footerStyle = section.footerStyle || (isPinnedFooters ? 'sticky' : 'automatic')
1765
+ const footerComponent = new GridSectionHeaderComponent({
1766
+ content: section.footer,
1767
+ sectionId: section.id,
1768
+ type: 'footer',
1769
+ style: footerStyle
1770
+ })
1771
+
1772
+ const footerResult = footerComponent.render()
1773
+ if (Array.isArray(footerResult)) {
1774
+ // Update grid-column style to span all columns
1775
+ footerResult.forEach(element => {
1776
+ if (element.props && element.props.style) {
1777
+ element.props.style.gridColumn = `1 / span ${columnCount}`
1778
+ }
1779
+ })
1780
+ renderedElements.push(...footerResult)
1781
+ }
1782
+ }
1783
+ })
1784
+
1785
+ return renderedElements
1786
+ }
1787
+
1788
+ /**
1789
+ * Get the number of columns in the grid (Phase 3 helper)
1790
+ */
1791
+ private getColumnCount(): number {
1792
+ const { columns } = this.props
1793
+
1794
+ if (Array.isArray(columns)) {
1795
+ return columns.length
1796
+ }
1797
+
1798
+ // For responsive configurations, use the base or first available
1799
+ if (typeof columns === 'object' && columns !== null) {
1800
+ const responsiveConfig = columns as any
1801
+ const baseColumns = responsiveConfig.base || responsiveConfig.sm || responsiveConfig.md || responsiveConfig.lg || responsiveConfig.xl || responsiveConfig.xxl
1802
+ return Array.isArray(baseColumns) ? baseColumns.length : 1
1803
+ }
1804
+
1805
+ return 1
1806
+ }
1807
+
1808
+ /**
1809
+ * Generate columns from GridItemConfig array (Phase 2 helper)
1810
+ */
1811
+ private generateColumnsFromConfig(items: GridItemConfig[]): string {
1812
+ return items.map(item => {
1813
+ switch (item.type) {
1814
+ case 'fixed':
1815
+ return `${item.size}px`
1816
+ case 'flexible':
1817
+ const minSize = item.minimum || 0
1818
+ const maxSize = item.maximum ? `${item.maximum}px` : '1fr'
1819
+ return minSize > 0 ? `minmax(${minSize}px, ${maxSize})` : '1fr'
1820
+ case 'adaptive':
1821
+ const adaptiveMin = item.minimum
1822
+ const adaptiveMax = item.maximum ? `${item.maximum}px` : '1fr'
1823
+ return `minmax(${adaptiveMin}px, ${adaptiveMax})`
1824
+ default:
1825
+ return '1fr'
1826
+ }
1827
+ }).join(' ')
1828
+ }
1829
+ }
1830
+
1831
+ /**
1832
+ * LazyHGrid component class (horizontal scrolling with flexible rows)
1833
+ */
1834
+ class LazyHGridComponent extends BaseGridComponent {
1835
+ constructor(public props: LazyHGridProps, children: ComponentInstance[] = []) {
1836
+ super(props, 'lazy-hgrid', children)
1837
+ }
1838
+
1839
+ render() {
1840
+ const { rows, alignment = 'center', spacing, debugLabel, responsive, sections, pinnedViews, animations, accessibility, styling } = this.props
1841
+
1842
+ // Log component for debugging
1843
+ const debug = getDebugManager()
1844
+ debug.logComponent('LAZYHGRID', debugLabel)
1845
+
1846
+ // Process CSS classes for this component
1847
+ const baseClasses = ['tachui-lazy-hgrid', ...(debug.isEnabled() ? ['tachui-debug'] : [])]
1848
+ const classString = this.createClassString(this.props, baseClasses)
1849
+
1850
+ // Phase 3: Handle sectioned data with headers and footers
1851
+ let renderedChildren: any[]
1852
+ if (sections && sections.length > 0) {
1853
+ renderedChildren = this.renderSections(sections, pinnedViews)
1854
+ } else {
1855
+ // Apply item animations to children before rendering (Phase 3)
1856
+ const animatedChildren = this.applyItemAnimations(this.children, animations)
1857
+
1858
+ // Render regular children (backward compatibility)
1859
+ renderedChildren = animatedChildren.map((child) => {
1860
+ const childResult = child.render()
1861
+ return Array.isArray(childResult) ? childResult : [childResult]
1862
+ }).flat()
1863
+ }
1864
+
1865
+ // Generate CSS Grid styles
1866
+ let gridTemplateRows: string
1867
+ let baseStyles: Record<string, any> = {
1868
+ display: 'grid',
1869
+ gridAutoFlow: 'column', // Horizontal flow for LazyHGrid
1870
+ overflowX: 'auto', // Enable horizontal scrolling
1871
+ }
1872
+
1873
+ // Phase 2: Enhanced responsive integration
1874
+ if (responsive) {
1875
+ // Performance monitoring for responsive CSS generation
1876
+ const endMeasurement = GridPerformanceMonitor.startMeasurement('responsive-css-generation')
1877
+
1878
+ try {
1879
+ // Use enhanced responsive configuration
1880
+ const responsiveConfig = GridResponsiveUtils.createResponsiveGridConfig({
1881
+ rows: rows as any,
1882
+ spacing,
1883
+ alignment
1884
+ })
1885
+
1886
+ // Merge with provided responsive config
1887
+ const finalConfig = { ...responsiveConfig, ...responsive }
1888
+
1889
+ // Debug: Register grid instance and visualize breakpoints
1890
+ GridDebugger.registerGrid(this.id, finalConfig, `#${this.id}`)
1891
+ GridDebugger.visualizeBreakpoints(finalConfig)
1892
+
1893
+ // Generate responsive modifier (would be applied by modifier system)
1894
+ const responsiveModifier = createResponsiveGridModifier(finalConfig)
1895
+
1896
+ // For Phase 2, we'll apply base styles and let the modifier system handle responsive styles
1897
+ if (finalConfig.rows && typeof finalConfig.rows === 'object' && 'base' in finalConfig.rows && finalConfig.rows.base) {
1898
+ gridTemplateRows = this.generateRowsFromConfig(finalConfig.rows.base)
1899
+ } else if (Array.isArray(rows)) {
1900
+ gridTemplateRows = GridCSSGenerator.generateRows(rows)
1901
+ } else {
1902
+ gridTemplateRows = 'auto'
1903
+ }
1904
+
1905
+ // Add responsive modifier to component metadata for processing
1906
+ baseStyles._responsiveModifier = responsiveModifier
1907
+ } finally {
1908
+ endMeasurement()
1909
+ }
1910
+ } else {
1911
+ // Phase 1: Basic responsive support (backward compatibility)
1912
+ const alignmentStyles = GridCSSGenerator.generateAlignment(alignment)
1913
+ const gapValue = GridCSSGenerator.generateSpacing(spacing)
1914
+
1915
+ if (Array.isArray(rows)) {
1916
+ // Simple row configuration
1917
+ gridTemplateRows = GridCSSGenerator.generateRows(rows)
1918
+ } else {
1919
+ // Responsive row configuration (legacy)
1920
+ const responsiveCSS = GridCSSGenerator.generateResponsiveGridCSS(rows, 'grid-template-rows')
1921
+ const templateValue = responsiveCSS['grid-template-rows']
1922
+ gridTemplateRows = (typeof templateValue === 'string' ? templateValue : 'auto')
1923
+ }
1924
+
1925
+ baseStyles = {
1926
+ ...baseStyles,
1927
+ gap: gapValue,
1928
+ ...alignmentStyles,
1929
+ }
1930
+ }
1931
+
1932
+ baseStyles.gridTemplateRows = gridTemplateRows
1933
+
1934
+ // Phase 3: Apply animation styles
1935
+ const animationStyles = this.generateAnimationStyles(animations)
1936
+ Object.assign(baseStyles, animationStyles)
1937
+
1938
+ // Phase 3: Generate accessibility attributes
1939
+ const rowCount = this.getRowCount()
1940
+ const accessibilityAttrs = this.generateAccessibilityAttributes(accessibility, undefined, rowCount)
1941
+
1942
+ // Phase 3: Generate reduced motion CSS
1943
+ const reducedMotionCSS = GridCSSGenerator.generateReducedMotionCSS(accessibility)
1944
+ Object.assign(baseStyles, reducedMotionCSS)
1945
+
1946
+ // Phase 3: Generate advanced styling CSS
1947
+ const advancedStylingCSS = this.generateStylingCSS(styling)
1948
+ Object.assign(baseStyles, advancedStylingCSS)
1949
+
1950
+ const element = {
1951
+ type: 'element' as const,
1952
+ tag: this.effectiveTag,
1953
+ props: {
1954
+ className: classString,
1955
+ style: baseStyles,
1956
+ ...accessibilityAttrs,
1957
+ // Add debug attributes
1958
+ ...(debug.isEnabled() && {
1959
+ 'data-tachui-component': 'LazyHGrid',
1960
+ ...(debugLabel && { 'data-tachui-label': debugLabel })
1961
+ })
1962
+ },
1963
+ children: renderedChildren,
1964
+ // Add component metadata
1965
+ componentMetadata: {
1966
+ originalType: 'LazyHGrid',
1967
+ overriddenTo: this.effectiveTag !== 'div' ? this.effectiveTag : undefined,
1968
+ validationResult: this.validationResult,
1969
+ // Phase 2: Include responsive modifier for processing
1970
+ ...(responsive && baseStyles._responsiveModifier && {
1971
+ responsiveModifier: baseStyles._responsiveModifier
1972
+ })
1973
+ }
1974
+ }
1975
+
1976
+ // Clean up internal responsive modifier from styles
1977
+ if (baseStyles._responsiveModifier) {
1978
+ delete baseStyles._responsiveModifier
1979
+ }
1980
+
1981
+ return [element]
1982
+ }
1983
+
1984
+ /**
1985
+ * Render sectioned data with headers and footers (Phase 3)
1986
+ */
1987
+ private renderSections(sections: GridSection[], pinnedViews?: ('sectionHeaders' | 'sectionFooters')[]): any[] {
1988
+ const renderedElements: any[] = []
1989
+ const rowCount = this.getRowCount()
1990
+ const isPinnedHeaders = pinnedViews?.includes('sectionHeaders')
1991
+ const isPinnedFooters = pinnedViews?.includes('sectionFooters')
1992
+
1993
+ sections.forEach((section) => {
1994
+ // Render section header
1995
+ if (section.header) {
1996
+ const headerStyle = section.headerStyle || (isPinnedHeaders ? 'sticky' : 'automatic')
1997
+ const headerComponent = new GridSectionHeaderComponent({
1998
+ content: section.header,
1999
+ sectionId: section.id,
2000
+ type: 'header',
2001
+ style: headerStyle
2002
+ })
2003
+
2004
+ const headerResult = headerComponent.render()
2005
+ if (Array.isArray(headerResult)) {
2006
+ // Update grid-row style to span all rows for horizontal grid
2007
+ headerResult.forEach(element => {
2008
+ if (element.props && element.props.style) {
2009
+ element.props.style.gridRow = `1 / span ${rowCount}`
2010
+ element.props.style.gridColumn = 'auto'
2011
+ }
2012
+ })
2013
+ renderedElements.push(...headerResult)
2014
+ }
2015
+ }
2016
+
2017
+ // Render section items
2018
+ section.items.forEach((item) => {
2019
+ const itemResult = item.render()
2020
+ const flatResult = Array.isArray(itemResult) ? itemResult : [itemResult]
2021
+ renderedElements.push(...flatResult)
2022
+ })
2023
+
2024
+ // Render section footer
2025
+ if (section.footer) {
2026
+ const footerStyle = section.footerStyle || (isPinnedFooters ? 'sticky' : 'automatic')
2027
+ const footerComponent = new GridSectionHeaderComponent({
2028
+ content: section.footer,
2029
+ sectionId: section.id,
2030
+ type: 'footer',
2031
+ style: footerStyle
2032
+ })
2033
+
2034
+ const footerResult = footerComponent.render()
2035
+ if (Array.isArray(footerResult)) {
2036
+ // Update grid-row style to span all rows for horizontal grid
2037
+ footerResult.forEach(element => {
2038
+ if (element.props && element.props.style) {
2039
+ element.props.style.gridRow = `1 / span ${rowCount}`
2040
+ element.props.style.gridColumn = 'auto'
2041
+ }
2042
+ })
2043
+ renderedElements.push(...footerResult)
2044
+ }
2045
+ }
2046
+ })
2047
+
2048
+ return renderedElements
2049
+ }
2050
+
2051
+ /**
2052
+ * Get the number of rows in the grid (Phase 3 helper)
2053
+ */
2054
+ private getRowCount(): number {
2055
+ const { rows } = this.props
2056
+
2057
+ if (Array.isArray(rows)) {
2058
+ return rows.length
2059
+ }
2060
+
2061
+ // For responsive configurations, use the base or first available
2062
+ if (typeof rows === 'object' && rows !== null) {
2063
+ const responsiveConfig = rows as any
2064
+ const baseRows = responsiveConfig.base || responsiveConfig.sm || responsiveConfig.md || responsiveConfig.lg || responsiveConfig.xl || responsiveConfig.xxl
2065
+ return Array.isArray(baseRows) ? baseRows.length : 1
2066
+ }
2067
+
2068
+ return 1
2069
+ }
2070
+
2071
+ /**
2072
+ * Generate rows from GridItemConfig array (Phase 2 helper)
2073
+ */
2074
+ private generateRowsFromConfig(items: GridItemConfig[]): string {
2075
+ return items.map(item => {
2076
+ switch (item.type) {
2077
+ case 'fixed':
2078
+ return `${item.size}px`
2079
+ case 'flexible':
2080
+ const minSize = item.minimum || 0
2081
+ const maxSize = item.maximum ? `${item.maximum}px` : '1fr'
2082
+ return minSize > 0 ? `minmax(${minSize}px, ${maxSize})` : '1fr'
2083
+ case 'adaptive':
2084
+ const adaptiveMin = item.minimum
2085
+ const adaptiveMax = item.maximum ? `${item.maximum}px` : '1fr'
2086
+ return `minmax(${adaptiveMin}px, ${adaptiveMax})`
2087
+ default:
2088
+ return 'auto'
2089
+ }
2090
+ }).join(' ')
2091
+ }
2092
+ }
2093
+
2094
+ /**
2095
+ * Grid component factory function with modifier support
2096
+ */
2097
+ export function Grid(props: GridProps = {}): ModifiableComponent<GridProps> & { modifier: ModifierBuilder<ModifiableComponent<GridProps>> } {
2098
+ const { children = [], ...gridProps } = props
2099
+ const component = new GridComponent(gridProps, children)
2100
+ return withModifiers(component)
2101
+ }
2102
+
2103
+ /**
2104
+ * GridRow component factory function with modifier support
2105
+ */
2106
+ export function GridRow(children: ComponentInstance[] = [], props: Omit<GridRowProps, 'children'> = {}): ModifiableComponent<GridRowProps> & { modifier: ModifierBuilder<ModifiableComponent<GridRowProps>> } {
2107
+ const gridRowProps: GridRowProps = { ...props, children }
2108
+ const component = new GridRowComponent(gridRowProps, children)
2109
+ return withModifiers(component)
2110
+ }
2111
+
2112
+ /**
2113
+ * LazyVGrid component factory function with modifier support
2114
+ */
2115
+ export function LazyVGrid(props: LazyVGridProps): ModifiableComponent<LazyVGridProps> & { modifier: ModifierBuilder<ModifiableComponent<LazyVGridProps>> } {
2116
+ const { children = [], ...vgridProps } = props
2117
+ const component = new LazyVGridComponent({ ...vgridProps, children }, children)
2118
+ return withModifiers(component)
2119
+ }
2120
+
2121
+ /**
2122
+ * LazyHGrid component factory function with modifier support
2123
+ */
2124
+ export function LazyHGrid(props: LazyHGridProps): ModifiableComponent<LazyHGridProps> & { modifier: ModifierBuilder<ModifiableComponent<LazyHGridProps>> } {
2125
+ const { children = [], ...hgridProps } = props
2126
+ const component = new LazyHGridComponent({ ...hgridProps, children }, children)
2127
+ return withModifiers(component)
2128
+ }
2129
+
2130
+ /**
2131
+ * Create a grid section with header, footer, and items (Phase 3)
2132
+ */
2133
+ export function createGridSection(config: {
2134
+ id: string
2135
+ header?: ComponentInstance | string
2136
+ footer?: ComponentInstance | string
2137
+ items: ComponentInstance[]
2138
+ headerStyle?: 'automatic' | 'grouped' | 'plain' | 'sticky'
2139
+ footerStyle?: 'automatic' | 'grouped' | 'plain' | 'sticky'
2140
+ }): GridSection {
2141
+ return {
2142
+ id: config.id,
2143
+ header: config.header,
2144
+ footer: config.footer,
2145
+ items: config.items,
2146
+ headerStyle: config.headerStyle || 'automatic',
2147
+ footerStyle: config.footerStyle || 'automatic'
2148
+ }
2149
+ }
2150
+
2151
+ /**
2152
+ * Grid section header factory (Phase 3)
2153
+ */
2154
+ export function GridSectionHeader(props: GridSectionHeaderProps): ModifiableComponent<GridSectionHeaderProps> & { modifier: ModifierBuilder<ModifiableComponent<GridSectionHeaderProps>> } {
2155
+ const component = new GridSectionHeaderComponent(props)
2156
+ return withModifiers(component)
2157
+ }
2158
+
2159
+ /**
2160
+ * Grid animation preset functions (Phase 3)
2161
+ */
2162
+ export const GridAnimations = {
2163
+ /**
2164
+ * Basic fade-in animation for new items
2165
+ */
2166
+ fadeIn(duration: number = 250, delay: number = 0): GridAnimationConfig {
2167
+ return {
2168
+ itemChanges: {
2169
+ enter: {
2170
+ duration,
2171
+ delay,
2172
+ easing: 'ease-out',
2173
+ from: 'fade'
2174
+ }
2175
+ }
2176
+ }
2177
+ },
2178
+
2179
+ /**
2180
+ * Scale animation for new items
2181
+ */
2182
+ scaleIn(duration: number = 300, delay: number = 0): GridAnimationConfig {
2183
+ return {
2184
+ itemChanges: {
2185
+ enter: {
2186
+ duration,
2187
+ delay,
2188
+ easing: 'cubic-bezier(0.34, 1.56, 0.64, 1)',
2189
+ from: 'scale'
2190
+ }
2191
+ }
2192
+ }
2193
+ },
2194
+
2195
+ /**
2196
+ * Slide animation for new items
2197
+ */
2198
+ slideIn(direction: 'up' | 'down' | 'left' | 'right' = 'up', duration: number = 250): GridAnimationConfig {
2199
+ return {
2200
+ itemChanges: {
2201
+ enter: {
2202
+ duration,
2203
+ easing: 'ease-out',
2204
+ from: `slide-${direction}` as any
2205
+ }
2206
+ }
2207
+ }
2208
+ },
2209
+
2210
+ /**
2211
+ * Smooth layout changes when grid structure changes
2212
+ */
2213
+ smoothLayout(duration: number = 300): GridAnimationConfig {
2214
+ return {
2215
+ layoutChanges: {
2216
+ duration,
2217
+ easing: 'ease-out'
2218
+ }
2219
+ }
2220
+ },
2221
+
2222
+ /**
2223
+ * Responsive breakpoint animations
2224
+ */
2225
+ smoothResponsive(duration: number = 250): GridAnimationConfig {
2226
+ return {
2227
+ responsive: {
2228
+ duration,
2229
+ easing: 'ease-out'
2230
+ }
2231
+ }
2232
+ },
2233
+
2234
+ /**
2235
+ * Comprehensive animation configuration
2236
+ */
2237
+ comprehensive(itemDuration: number = 250, layoutDuration: number = 300): GridAnimationConfig {
2238
+ return {
2239
+ itemChanges: {
2240
+ enter: {
2241
+ duration: itemDuration,
2242
+ easing: 'ease-out',
2243
+ from: 'fade'
2244
+ }
2245
+ },
2246
+ layoutChanges: {
2247
+ duration: layoutDuration,
2248
+ easing: 'ease-out'
2249
+ },
2250
+ responsive: {
2251
+ duration: layoutDuration,
2252
+ easing: 'ease-out'
2253
+ },
2254
+ sections: {
2255
+ duration: itemDuration,
2256
+ easing: 'ease-out'
2257
+ }
2258
+ }
2259
+ },
2260
+
2261
+ /**
2262
+ * Staggered entrance animation for multiple items
2263
+ */
2264
+ staggered(itemDuration: number = 250): GridAnimationConfig {
2265
+ return {
2266
+ itemChanges: {
2267
+ enter: {
2268
+ duration: itemDuration,
2269
+ delay: 0, // Stagger delay is calculated per-item in applyItemAnimations
2270
+ easing: 'ease-out',
2271
+ from: 'fade'
2272
+ }
2273
+ }
2274
+ }
2275
+ }
2276
+ }
2277
+
2278
+ /**
2279
+ * Grid accessibility preset functions (Phase 3)
2280
+ */
2281
+ export const GridAccessibility = {
2282
+ /**
2283
+ * Full accessibility support with keyboard navigation and screen reader optimizations
2284
+ */
2285
+ full(label: string, description?: string): GridAccessibilityConfig {
2286
+ return {
2287
+ label,
2288
+ description,
2289
+ keyboardNavigation: {
2290
+ enabled: true,
2291
+ mode: 'grid',
2292
+ pageNavigation: true,
2293
+ homeEndNavigation: true
2294
+ },
2295
+ focusManagement: {
2296
+ enabled: true,
2297
+ skipLinks: true
2298
+ },
2299
+ screenReader: {
2300
+ enabled: true,
2301
+ announceChanges: true,
2302
+ announceStructure: true,
2303
+ announcePositions: true
2304
+ },
2305
+ reducedMotion: {
2306
+ respectPreference: true,
2307
+ fallbackBehavior: 'disable'
2308
+ }
2309
+ }
2310
+ },
2311
+
2312
+ /**
2313
+ * Basic accessibility support for simple grids
2314
+ */
2315
+ basic(label: string): GridAccessibilityConfig {
2316
+ return {
2317
+ label,
2318
+ keyboardNavigation: true,
2319
+ reducedMotion: true
2320
+ }
2321
+ },
2322
+
2323
+ /**
2324
+ * Screen reader focused accessibility
2325
+ */
2326
+ screenReader(label: string, description?: string): GridAccessibilityConfig {
2327
+ return {
2328
+ label,
2329
+ description,
2330
+ role: 'grid',
2331
+ screenReader: {
2332
+ enabled: true,
2333
+ announceStructure: true,
2334
+ announceChanges: true
2335
+ },
2336
+ reducedMotion: true
2337
+ }
2338
+ },
2339
+
2340
+ /**
2341
+ * Keyboard navigation focused accessibility
2342
+ */
2343
+ keyboardOnly(label: string): GridAccessibilityConfig {
2344
+ return {
2345
+ label,
2346
+ keyboardNavigation: {
2347
+ enabled: true,
2348
+ mode: 'grid',
2349
+ pageNavigation: true,
2350
+ homeEndNavigation: true
2351
+ },
2352
+ focusManagement: {
2353
+ enabled: true
2354
+ }
2355
+ }
2356
+ }
2357
+ }
2358
+
2359
+ /**
2360
+ * Grid styling preset functions (Phase 3)
2361
+ */
2362
+ export const GridStyling = {
2363
+ /**
2364
+ * Debug grid with visible lines and areas
2365
+ */
2366
+ debug(options?: { lineColor?: string; showAreas?: boolean }): GridStylingConfig {
2367
+ return {
2368
+ debug: {
2369
+ enabled: true,
2370
+ showLines: true,
2371
+ showAreas: options?.showAreas || false,
2372
+ lineColor: options?.lineColor || '#ff0000',
2373
+ lineStyle: 'dashed'
2374
+ }
2375
+ }
2376
+ },
2377
+
2378
+ /**
2379
+ * Interactive grid with hover and focus effects
2380
+ */
2381
+ interactive(hoverTransform: 'scale' | 'lift' | 'glow' | 'highlight' = 'scale'): GridStylingConfig {
2382
+ return {
2383
+ itemStates: {
2384
+ hover: {
2385
+ enabled: true,
2386
+ transform: hoverTransform,
2387
+ transition: 'all 0.2s ease'
2388
+ },
2389
+ focus: {
2390
+ enabled: true,
2391
+ style: 'ring',
2392
+ color: '#3b82f6'
2393
+ },
2394
+ active: {
2395
+ enabled: true,
2396
+ transform: 'scale'
2397
+ }
2398
+ }
2399
+ }
2400
+ },
2401
+
2402
+ /**
2403
+ * Card-style grid with background and borders
2404
+ */
2405
+ card(options?: { shadow?: string; borderRadius?: number; padding?: number }): GridStylingConfig {
2406
+ return {
2407
+ container: {
2408
+ background: '#ffffff',
2409
+ border: '1px solid #e0e0e0',
2410
+ borderRadius: options?.borderRadius || 8,
2411
+ boxShadow: options?.shadow || '0 2px 4px rgba(0,0,0,0.1)',
2412
+ padding: options?.padding || 16
2413
+ },
2414
+ itemStates: {
2415
+ hover: {
2416
+ enabled: true,
2417
+ transform: 'lift'
2418
+ }
2419
+ }
2420
+ }
2421
+ },
2422
+
2423
+ /**
2424
+ * Custom template areas grid
2425
+ */
2426
+ templateAreas(areas: string[]): GridStylingConfig {
2427
+ return {
2428
+ templateAreas: areas
2429
+ }
2430
+ },
2431
+
2432
+ /**
2433
+ * Grid with background pattern
2434
+ */
2435
+ backgroundPattern(pattern: 'dots' | 'lines' | 'grid', color?: string, opacity?: number): GridStylingConfig {
2436
+ return {
2437
+ container: {
2438
+ background: {
2439
+ pattern,
2440
+ color: color || '#e0e0e0',
2441
+ opacity: opacity || 0.5
2442
+ }
2443
+ }
2444
+ }
2445
+ },
2446
+
2447
+ /**
2448
+ * Comprehensive styling with multiple features
2449
+ */
2450
+ comprehensive(options?: {
2451
+ debug?: boolean
2452
+ interactive?: boolean
2453
+ card?: boolean
2454
+ pattern?: 'dots' | 'lines' | 'grid'
2455
+ }): GridStylingConfig {
2456
+ const config: GridStylingConfig = {}
2457
+
2458
+ if (options?.debug) {
2459
+ config.debug = { enabled: true, showLines: true }
2460
+ }
2461
+
2462
+ if (options?.interactive) {
2463
+ config.itemStates = {
2464
+ hover: { enabled: true, transform: 'scale' },
2465
+ focus: { enabled: true, style: 'ring' },
2466
+ active: { enabled: true, transform: 'scale' }
2467
+ }
2468
+ }
2469
+
2470
+ if (options?.card) {
2471
+ config.container = {
2472
+ background: '#ffffff',
2473
+ border: '1px solid #e0e0e0',
2474
+ borderRadius: 8,
2475
+ boxShadow: '0 2px 4px rgba(0,0,0,0.1)',
2476
+ padding: 16
2477
+ }
2478
+ }
2479
+
2480
+ if (options?.pattern) {
2481
+ config.container = {
2482
+ ...config.container,
2483
+ background: {
2484
+ pattern: options.pattern,
2485
+ color: '#e0e0e0',
2486
+ opacity: 0.3
2487
+ }
2488
+ }
2489
+ }
2490
+
2491
+ return config
2492
+ }
2493
+ }
2494
+
2495
+ // Export all the types and components (including component classes for testing)
2496
+ export {
2497
+ BaseGridComponent,
2498
+ GridComponent as EnhancedGrid,
2499
+ GridRowComponent as EnhancedGridRow,
2500
+ LazyVGridComponent as EnhancedLazyVGrid,
2501
+ LazyHGridComponent as EnhancedLazyHGrid,
2502
+ GridCSSGenerator,
2503
+ GridSectionHeaderComponent,
2504
+ // Phase 2: Enhanced debugging and performance utilities
2505
+ GridDebugger,
2506
+ GridPerformanceMonitor
2507
+ }