@tachui/core 0.7.0-alpha1 → 0.7.1-alpha

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 (947) hide show
  1. package/README.md +195 -0
  2. package/dist/ScrollView-h-6wYMAm.js +515 -0
  3. package/dist/Spacer-BbteDQ9I.js +5337 -0
  4. package/dist/binding-CmdpowkI.js +2276 -0
  5. package/dist/bundles/minimal.d.ts +30 -4
  6. package/dist/bundles/minimal.d.ts.map +1 -1
  7. package/dist/common.js +825 -954
  8. package/dist/compiler/index.js +1386 -10
  9. package/dist/components/index.js +4166 -101
  10. package/dist/concatenated-component-DPcl2TEO.js +6779 -0
  11. package/dist/{runtime/context.js → context--zQFIImS.js} +65 -71
  12. package/dist/debug.js +0 -1
  13. package/dist/dom-bridge-Cx-s6Ihx.js +406 -0
  14. package/dist/effect-CytAc9em.js +66 -0
  15. package/dist/essential.js +825 -954
  16. package/dist/index-Nfi2SBQh.js +3268 -0
  17. package/dist/index.js +825 -954
  18. package/dist/minimal-prod.js +162 -191
  19. package/dist/minimal.js +183 -957
  20. package/dist/modifiers/responsive/index.d.ts +10 -9
  21. package/dist/modifiers/responsive/index.d.ts.map +1 -1
  22. package/dist/plugins/index.js +543 -32
  23. package/dist/reactive/index.js +490 -93
  24. package/dist/runtime/dom-bridge.js +12 -239
  25. package/dist/runtime/renderer.js +8 -388
  26. package/dist/scheduler-7SvC3a21.js +814 -0
  27. package/dist/validation/index.js +6614 -198
  28. package/dist/viewport/index.js +2002 -83
  29. package/package.json +3 -4
  30. package/dist/assets/Asset.cjs +0 -2
  31. package/dist/assets/Asset.cjs.map +0 -1
  32. package/dist/assets/Asset.js +0 -9
  33. package/dist/assets/Asset.js.map +0 -1
  34. package/dist/assets/AssetCollection.cjs +0 -2
  35. package/dist/assets/AssetCollection.cjs.map +0 -1
  36. package/dist/assets/AssetCollection.js +0 -44
  37. package/dist/assets/AssetCollection.js.map +0 -1
  38. package/dist/assets/ColorAsset.cjs +0 -2
  39. package/dist/assets/ColorAsset.cjs.map +0 -1
  40. package/dist/assets/ColorAsset.js +0 -114
  41. package/dist/assets/ColorAsset.js.map +0 -1
  42. package/dist/assets/FontAsset.cjs +0 -9
  43. package/dist/assets/FontAsset.cjs.map +0 -1
  44. package/dist/assets/FontAsset.js +0 -173
  45. package/dist/assets/FontAsset.js.map +0 -1
  46. package/dist/assets/ImageAsset.cjs +0 -2
  47. package/dist/assets/ImageAsset.cjs.map +0 -1
  48. package/dist/assets/ImageAsset.js +0 -39
  49. package/dist/assets/ImageAsset.js.map +0 -1
  50. package/dist/assets/index.cjs +0 -2
  51. package/dist/assets/index.cjs.map +0 -1
  52. package/dist/assets/index.js +0 -119
  53. package/dist/assets/index.js.map +0 -1
  54. package/dist/common.cjs +0 -2
  55. package/dist/common.cjs.map +0 -1
  56. package/dist/common.js.map +0 -1
  57. package/dist/compiler/advanced-parser.cjs +0 -5
  58. package/dist/compiler/advanced-parser.cjs.map +0 -1
  59. package/dist/compiler/advanced-parser.js +0 -440
  60. package/dist/compiler/advanced-parser.js.map +0 -1
  61. package/dist/compiler/codegen.cjs +0 -6
  62. package/dist/compiler/codegen.cjs.map +0 -1
  63. package/dist/compiler/codegen.js +0 -241
  64. package/dist/compiler/codegen.js.map +0 -1
  65. package/dist/compiler/enhanced-codegen.cjs +0 -6
  66. package/dist/compiler/enhanced-codegen.cjs.map +0 -1
  67. package/dist/compiler/enhanced-codegen.js +0 -347
  68. package/dist/compiler/enhanced-codegen.js.map +0 -1
  69. package/dist/compiler/index.cjs +0 -2
  70. package/dist/compiler/index.cjs.map +0 -1
  71. package/dist/compiler/index.js.map +0 -1
  72. package/dist/compiler/parser.cjs +0 -5
  73. package/dist/compiler/parser.cjs.map +0 -1
  74. package/dist/compiler/parser.js +0 -275
  75. package/dist/compiler/parser.js.map +0 -1
  76. package/dist/compiler/plugin.cjs +0 -33
  77. package/dist/compiler/plugin.cjs.map +0 -1
  78. package/dist/compiler/plugin.js +0 -103
  79. package/dist/compiler/plugin.js.map +0 -1
  80. package/dist/components/BasicInput.cjs +0 -2
  81. package/dist/components/BasicInput.cjs.map +0 -1
  82. package/dist/components/BasicInput.js +0 -182
  83. package/dist/components/BasicInput.js.map +0 -1
  84. package/dist/components/Button.cjs +0 -7
  85. package/dist/components/Button.cjs.map +0 -1
  86. package/dist/components/Button.js +0 -408
  87. package/dist/components/Button.js.map +0 -1
  88. package/dist/components/Divider.cjs +0 -2
  89. package/dist/components/Divider.cjs.map +0 -1
  90. package/dist/components/Divider.js +0 -187
  91. package/dist/components/Divider.js.map +0 -1
  92. package/dist/components/EnhancedLink.cjs +0 -2
  93. package/dist/components/EnhancedLink.cjs.map +0 -1
  94. package/dist/components/EnhancedLink.js +0 -345
  95. package/dist/components/EnhancedLink.js.map +0 -1
  96. package/dist/components/Form.cjs +0 -2
  97. package/dist/components/Form.cjs.map +0 -1
  98. package/dist/components/Form.js +0 -244
  99. package/dist/components/Form.js.map +0 -1
  100. package/dist/components/Grid.cjs +0 -2
  101. package/dist/components/Grid.cjs.map +0 -1
  102. package/dist/components/Grid.js +0 -1045
  103. package/dist/components/Grid.js.map +0 -1
  104. package/dist/components/GridResponsive.cjs +0 -2
  105. package/dist/components/GridResponsive.cjs.map +0 -1
  106. package/dist/components/GridResponsive.js +0 -382
  107. package/dist/components/GridResponsive.js.map +0 -1
  108. package/dist/components/Image.cjs +0 -2
  109. package/dist/components/Image.cjs.map +0 -1
  110. package/dist/components/Image.js +0 -212
  111. package/dist/components/Image.js.map +0 -1
  112. package/dist/components/List.cjs +0 -2
  113. package/dist/components/List.cjs.map +0 -1
  114. package/dist/components/List.js +0 -561
  115. package/dist/components/List.js.map +0 -1
  116. package/dist/components/Menu.cjs +0 -2
  117. package/dist/components/Menu.cjs.map +0 -1
  118. package/dist/components/Menu.js +0 -443
  119. package/dist/components/Menu.js.map +0 -1
  120. package/dist/components/Picker.cjs +0 -2
  121. package/dist/components/Picker.cjs.map +0 -1
  122. package/dist/components/Picker.js +0 -478
  123. package/dist/components/Picker.js.map +0 -1
  124. package/dist/components/ScrollView.cjs +0 -6
  125. package/dist/components/ScrollView.cjs.map +0 -1
  126. package/dist/components/ScrollView.js +0 -363
  127. package/dist/components/ScrollView.js.map +0 -1
  128. package/dist/components/Section.cjs +0 -2
  129. package/dist/components/Section.cjs.map +0 -1
  130. package/dist/components/Section.js +0 -323
  131. package/dist/components/Section.js.map +0 -1
  132. package/dist/components/Show.cjs +0 -2
  133. package/dist/components/Show.cjs.map +0 -1
  134. package/dist/components/Show.js +0 -112
  135. package/dist/components/Show.js.map +0 -1
  136. package/dist/components/Spacer.cjs +0 -2
  137. package/dist/components/Spacer.cjs.map +0 -1
  138. package/dist/components/Spacer.js +0 -53
  139. package/dist/components/Spacer.js.map +0 -1
  140. package/dist/components/Text.cjs +0 -2
  141. package/dist/components/Text.cjs.map +0 -1
  142. package/dist/components/Text.js +0 -193
  143. package/dist/components/Text.js.map +0 -1
  144. package/dist/components/Toggle.cjs +0 -2
  145. package/dist/components/Toggle.cjs.map +0 -1
  146. package/dist/components/Toggle.js +0 -477
  147. package/dist/components/Toggle.js.map +0 -1
  148. package/dist/components/index.cjs +0 -2
  149. package/dist/components/index.cjs.map +0 -1
  150. package/dist/components/index.js.map +0 -1
  151. package/dist/components/wrapper.cjs +0 -2
  152. package/dist/components/wrapper.cjs.map +0 -1
  153. package/dist/components/wrapper.js +0 -484
  154. package/dist/components/wrapper.js.map +0 -1
  155. package/dist/concatenation/concatenatable.cjs +0 -2
  156. package/dist/concatenation/concatenatable.cjs.map +0 -1
  157. package/dist/concatenation/concatenatable.js +0 -118
  158. package/dist/concatenation/concatenatable.js.map +0 -1
  159. package/dist/concatenation/concatenated-component.cjs +0 -2
  160. package/dist/concatenation/concatenated-component.cjs.map +0 -1
  161. package/dist/concatenation/concatenated-component.js +0 -276
  162. package/dist/concatenation/concatenated-component.js.map +0 -1
  163. package/dist/concatenation/text-optimizer.cjs +0 -2
  164. package/dist/concatenation/text-optimizer.cjs.map +0 -1
  165. package/dist/concatenation/text-optimizer.js +0 -236
  166. package/dist/concatenation/text-optimizer.js.map +0 -1
  167. package/dist/concatenation/types.cjs +0 -2
  168. package/dist/concatenation/types.cjs.map +0 -1
  169. package/dist/concatenation/types.js +0 -13
  170. package/dist/concatenation/types.js.map +0 -1
  171. package/dist/constants/frame-utils.cjs +0 -2
  172. package/dist/constants/frame-utils.cjs.map +0 -1
  173. package/dist/constants/frame-utils.js +0 -116
  174. package/dist/constants/frame-utils.js.map +0 -1
  175. package/dist/constants/layout.cjs +0 -2
  176. package/dist/constants/layout.cjs.map +0 -1
  177. package/dist/constants/layout.js +0 -46
  178. package/dist/constants/layout.js.map +0 -1
  179. package/dist/css-classes/component-base.cjs +0 -2
  180. package/dist/css-classes/component-base.cjs.map +0 -1
  181. package/dist/css-classes/component-base.js +0 -62
  182. package/dist/css-classes/component-base.js.map +0 -1
  183. package/dist/css-classes/css-class-manager.cjs +0 -2
  184. package/dist/css-classes/css-class-manager.cjs.map +0 -1
  185. package/dist/css-classes/css-class-manager.js +0 -209
  186. package/dist/css-classes/css-class-manager.js.map +0 -1
  187. package/dist/css-classes/dom-integration.cjs +0 -2
  188. package/dist/css-classes/dom-integration.cjs.map +0 -1
  189. package/dist/css-classes/dom-integration.js +0 -67
  190. package/dist/css-classes/dom-integration.js.map +0 -1
  191. package/dist/css-classes/enhanced-renderer.cjs +0 -2
  192. package/dist/css-classes/enhanced-renderer.cjs.map +0 -1
  193. package/dist/css-classes/enhanced-renderer.js +0 -73
  194. package/dist/css-classes/enhanced-renderer.js.map +0 -1
  195. package/dist/css-classes/utilities.cjs +0 -2
  196. package/dist/css-classes/utilities.cjs.map +0 -1
  197. package/dist/css-classes/utilities.js +0 -41
  198. package/dist/css-classes/utilities.js.map +0 -1
  199. package/dist/debug.cjs +0 -52
  200. package/dist/debug.cjs.map +0 -1
  201. package/dist/debug.js.map +0 -1
  202. package/dist/essential.cjs +0 -2
  203. package/dist/essential.cjs.map +0 -1
  204. package/dist/essential.js.map +0 -1
  205. package/dist/gradients/css-generator.cjs +0 -2
  206. package/dist/gradients/css-generator.cjs.map +0 -1
  207. package/dist/gradients/css-generator.js +0 -100
  208. package/dist/gradients/css-generator.js.map +0 -1
  209. package/dist/gradients/examples.cjs +0 -2
  210. package/dist/gradients/examples.cjs.map +0 -1
  211. package/dist/gradients/examples.js +0 -555
  212. package/dist/gradients/examples.js.map +0 -1
  213. package/dist/gradients/gradient-asset.cjs +0 -2
  214. package/dist/gradients/gradient-asset.cjs.map +0 -1
  215. package/dist/gradients/gradient-asset.js +0 -22
  216. package/dist/gradients/gradient-asset.js.map +0 -1
  217. package/dist/gradients/index.cjs +0 -2
  218. package/dist/gradients/index.cjs.map +0 -1
  219. package/dist/gradients/index.js +0 -78
  220. package/dist/gradients/index.js.map +0 -1
  221. package/dist/gradients/performance.cjs +0 -2
  222. package/dist/gradients/performance.cjs.map +0 -1
  223. package/dist/gradients/performance.js +0 -237
  224. package/dist/gradients/performance.js.map +0 -1
  225. package/dist/gradients/presets.cjs +0 -2
  226. package/dist/gradients/presets.cjs.map +0 -1
  227. package/dist/gradients/presets.js +0 -254
  228. package/dist/gradients/presets.js.map +0 -1
  229. package/dist/gradients/reactive.cjs +0 -2
  230. package/dist/gradients/reactive.cjs.map +0 -1
  231. package/dist/gradients/reactive.js +0 -239
  232. package/dist/gradients/reactive.js.map +0 -1
  233. package/dist/gradients/state-gradient-asset.cjs +0 -2
  234. package/dist/gradients/state-gradient-asset.cjs.map +0 -1
  235. package/dist/gradients/state-gradient-asset.js +0 -111
  236. package/dist/gradients/state-gradient-asset.js.map +0 -1
  237. package/dist/gradients/utils.cjs +0 -2
  238. package/dist/gradients/utils.cjs.map +0 -1
  239. package/dist/gradients/utils.js +0 -385
  240. package/dist/gradients/utils.js.map +0 -1
  241. package/dist/gradients/validation.cjs +0 -2
  242. package/dist/gradients/validation.cjs.map +0 -1
  243. package/dist/gradients/validation.js +0 -209
  244. package/dist/gradients/validation.js.map +0 -1
  245. package/dist/index.cjs +0 -2
  246. package/dist/index.cjs.map +0 -1
  247. package/dist/index.js.map +0 -1
  248. package/dist/index2.cjs +0 -2
  249. package/dist/index2.cjs.map +0 -1
  250. package/dist/index2.js +0 -293
  251. package/dist/index2.js.map +0 -1
  252. package/dist/lifecycle/hooks.cjs +0 -2
  253. package/dist/lifecycle/hooks.cjs.map +0 -1
  254. package/dist/lifecycle/hooks.js +0 -159
  255. package/dist/lifecycle/hooks.js.map +0 -1
  256. package/dist/minimal-prod.cjs +0 -2
  257. package/dist/minimal-prod.cjs.map +0 -1
  258. package/dist/minimal-prod.js.map +0 -1
  259. package/dist/minimal.cjs +0 -2
  260. package/dist/minimal.cjs.map +0 -1
  261. package/dist/minimal.js.map +0 -1
  262. package/dist/modifiers/as-html-validator.cjs +0 -2
  263. package/dist/modifiers/as-html-validator.cjs.map +0 -1
  264. package/dist/modifiers/as-html-validator.js +0 -47
  265. package/dist/modifiers/as-html-validator.js.map +0 -1
  266. package/dist/modifiers/as-html.cjs +0 -2
  267. package/dist/modifiers/as-html.cjs.map +0 -1
  268. package/dist/modifiers/as-html.js +0 -71
  269. package/dist/modifiers/as-html.js.map +0 -1
  270. package/dist/modifiers/attributes.cjs +0 -2
  271. package/dist/modifiers/attributes.cjs.map +0 -1
  272. package/dist/modifiers/attributes.js +0 -272
  273. package/dist/modifiers/attributes.js.map +0 -1
  274. package/dist/modifiers/backdrop.cjs +0 -2
  275. package/dist/modifiers/backdrop.cjs.map +0 -1
  276. package/dist/modifiers/backdrop.js +0 -109
  277. package/dist/modifiers/backdrop.js.map +0 -1
  278. package/dist/modifiers/background.cjs +0 -2
  279. package/dist/modifiers/background.cjs.map +0 -1
  280. package/dist/modifiers/background.js +0 -67
  281. package/dist/modifiers/background.js.map +0 -1
  282. package/dist/modifiers/base.cjs +0 -25
  283. package/dist/modifiers/base.cjs.map +0 -1
  284. package/dist/modifiers/base.js +0 -745
  285. package/dist/modifiers/base.js.map +0 -1
  286. package/dist/modifiers/basic-sanitizer.cjs +0 -2
  287. package/dist/modifiers/basic-sanitizer.cjs.map +0 -1
  288. package/dist/modifiers/basic-sanitizer.js +0 -162
  289. package/dist/modifiers/basic-sanitizer.js.map +0 -1
  290. package/dist/modifiers/border.cjs +0 -2
  291. package/dist/modifiers/border.cjs.map +0 -1
  292. package/dist/modifiers/border.js +0 -160
  293. package/dist/modifiers/border.js.map +0 -1
  294. package/dist/modifiers/builder.cjs +0 -2
  295. package/dist/modifiers/builder.cjs.map +0 -1
  296. package/dist/modifiers/builder.js +0 -930
  297. package/dist/modifiers/builder.js.map +0 -1
  298. package/dist/modifiers/core.cjs +0 -2
  299. package/dist/modifiers/core.cjs.map +0 -1
  300. package/dist/modifiers/core.js +0 -398
  301. package/dist/modifiers/core.js.map +0 -1
  302. package/dist/modifiers/css.cjs +0 -2
  303. package/dist/modifiers/css.cjs.map +0 -1
  304. package/dist/modifiers/css.js +0 -50
  305. package/dist/modifiers/css.js.map +0 -1
  306. package/dist/modifiers/effects.cjs +0 -2
  307. package/dist/modifiers/effects.cjs.map +0 -1
  308. package/dist/modifiers/effects.js +0 -178
  309. package/dist/modifiers/effects.js.map +0 -1
  310. package/dist/modifiers/elements.cjs +0 -2
  311. package/dist/modifiers/elements.cjs.map +0 -1
  312. package/dist/modifiers/elements.js +0 -216
  313. package/dist/modifiers/elements.js.map +0 -1
  314. package/dist/modifiers/filters.cjs +0 -2
  315. package/dist/modifiers/filters.cjs.map +0 -1
  316. package/dist/modifiers/filters.js +0 -223
  317. package/dist/modifiers/filters.js.map +0 -1
  318. package/dist/modifiers/flexbox.cjs +0 -2
  319. package/dist/modifiers/flexbox.cjs.map +0 -1
  320. package/dist/modifiers/flexbox.js +0 -56
  321. package/dist/modifiers/flexbox.js.map +0 -1
  322. package/dist/modifiers/font.cjs +0 -2
  323. package/dist/modifiers/font.cjs.map +0 -1
  324. package/dist/modifiers/font.js +0 -60
  325. package/dist/modifiers/font.js.map +0 -1
  326. package/dist/modifiers/grid.cjs +0 -2
  327. package/dist/modifiers/grid.cjs.map +0 -1
  328. package/dist/modifiers/grid.js +0 -92
  329. package/dist/modifiers/grid.js.map +0 -1
  330. package/dist/modifiers/margin.cjs +0 -2
  331. package/dist/modifiers/margin.cjs.map +0 -1
  332. package/dist/modifiers/margin.js +0 -65
  333. package/dist/modifiers/margin.js.map +0 -1
  334. package/dist/modifiers/padding.cjs +0 -2
  335. package/dist/modifiers/padding.cjs.map +0 -1
  336. package/dist/modifiers/padding.js +0 -109
  337. package/dist/modifiers/padding.js.map +0 -1
  338. package/dist/modifiers/registry.cjs +0 -2
  339. package/dist/modifiers/registry.cjs.map +0 -1
  340. package/dist/modifiers/registry.js +0 -163
  341. package/dist/modifiers/registry.js.map +0 -1
  342. package/dist/modifiers/responsive/advanced-utilities.cjs +0 -2
  343. package/dist/modifiers/responsive/advanced-utilities.cjs.map +0 -1
  344. package/dist/modifiers/responsive/advanced-utilities.js +0 -291
  345. package/dist/modifiers/responsive/advanced-utilities.js.map +0 -1
  346. package/dist/modifiers/responsive/breakpoints.cjs +0 -2
  347. package/dist/modifiers/responsive/breakpoints.cjs.map +0 -1
  348. package/dist/modifiers/responsive/breakpoints.js +0 -168
  349. package/dist/modifiers/responsive/breakpoints.js.map +0 -1
  350. package/dist/modifiers/responsive/css-generator.cjs +0 -5
  351. package/dist/modifiers/responsive/css-generator.cjs.map +0 -1
  352. package/dist/modifiers/responsive/css-generator.js +0 -261
  353. package/dist/modifiers/responsive/css-generator.js.map +0 -1
  354. package/dist/modifiers/responsive/dev-tools.cjs +0 -77
  355. package/dist/modifiers/responsive/dev-tools.cjs.map +0 -1
  356. package/dist/modifiers/responsive/dev-tools.js +0 -380
  357. package/dist/modifiers/responsive/dev-tools.js.map +0 -1
  358. package/dist/modifiers/responsive/layout-patterns.cjs +0 -2
  359. package/dist/modifiers/responsive/layout-patterns.cjs.map +0 -1
  360. package/dist/modifiers/responsive/layout-patterns.js +0 -254
  361. package/dist/modifiers/responsive/layout-patterns.js.map +0 -1
  362. package/dist/modifiers/responsive/performance.cjs +0 -3
  363. package/dist/modifiers/responsive/performance.cjs.map +0 -1
  364. package/dist/modifiers/responsive/performance.js +0 -212
  365. package/dist/modifiers/responsive/performance.js.map +0 -1
  366. package/dist/modifiers/responsive/responsive-builder.cjs +0 -2
  367. package/dist/modifiers/responsive/responsive-builder.cjs.map +0 -1
  368. package/dist/modifiers/responsive/responsive-builder.js +0 -272
  369. package/dist/modifiers/responsive/responsive-builder.js.map +0 -1
  370. package/dist/modifiers/responsive/responsive-modifier.cjs +0 -3
  371. package/dist/modifiers/responsive/responsive-modifier.cjs.map +0 -1
  372. package/dist/modifiers/responsive/responsive-modifier.js +0 -204
  373. package/dist/modifiers/responsive/responsive-modifier.js.map +0 -1
  374. package/dist/modifiers/responsive/types.cjs +0 -2
  375. package/dist/modifiers/responsive/types.cjs.map +0 -1
  376. package/dist/modifiers/responsive/types.js +0 -26
  377. package/dist/modifiers/responsive/types.js.map +0 -1
  378. package/dist/modifiers/responsive/utilities.cjs +0 -16
  379. package/dist/modifiers/responsive/utilities.cjs.map +0 -1
  380. package/dist/modifiers/responsive/utilities.js +0 -273
  381. package/dist/modifiers/responsive/utilities.js.map +0 -1
  382. package/dist/modifiers/scroll.cjs +0 -2
  383. package/dist/modifiers/scroll.cjs.map +0 -1
  384. package/dist/modifiers/scroll.js +0 -82
  385. package/dist/modifiers/scroll.js.map +0 -1
  386. package/dist/modifiers/shadows.cjs +0 -2
  387. package/dist/modifiers/shadows.cjs.map +0 -1
  388. package/dist/modifiers/shadows.js +0 -147
  389. package/dist/modifiers/shadows.js.map +0 -1
  390. package/dist/modifiers/size.cjs +0 -2
  391. package/dist/modifiers/size.cjs.map +0 -1
  392. package/dist/modifiers/size.js +0 -74
  393. package/dist/modifiers/size.js.map +0 -1
  394. package/dist/modifiers/text.cjs +0 -2
  395. package/dist/modifiers/text.cjs.map +0 -1
  396. package/dist/modifiers/text.js +0 -166
  397. package/dist/modifiers/text.js.map +0 -1
  398. package/dist/modifiers/transformations.cjs +0 -2
  399. package/dist/modifiers/transformations.cjs.map +0 -1
  400. package/dist/modifiers/transformations.js +0 -216
  401. package/dist/modifiers/transformations.js.map +0 -1
  402. package/dist/modifiers/transitions.cjs +0 -2
  403. package/dist/modifiers/transitions.cjs.map +0 -1
  404. package/dist/modifiers/transitions.js +0 -102
  405. package/dist/modifiers/transitions.js.map +0 -1
  406. package/dist/modifiers/types.cjs +0 -2
  407. package/dist/modifiers/types.cjs.map +0 -1
  408. package/dist/modifiers/types.js +0 -5
  409. package/dist/modifiers/types.js.map +0 -1
  410. package/dist/modifiers/typography.cjs +0 -2
  411. package/dist/modifiers/typography.cjs.map +0 -1
  412. package/dist/modifiers/typography.js +0 -76
  413. package/dist/modifiers/typography.js.map +0 -1
  414. package/dist/modifiers/utility.cjs +0 -2
  415. package/dist/modifiers/utility.cjs.map +0 -1
  416. package/dist/modifiers/utility.js +0 -71
  417. package/dist/modifiers/utility.js.map +0 -1
  418. package/dist/modifiers/utils.cjs +0 -2
  419. package/dist/modifiers/utils.cjs.map +0 -1
  420. package/dist/modifiers/utils.js +0 -250
  421. package/dist/modifiers/utils.js.map +0 -1
  422. package/dist/plugins/index.cjs +0 -2
  423. package/dist/plugins/index.cjs.map +0 -1
  424. package/dist/plugins/index.js.map +0 -1
  425. package/dist/plugins/legacy-adapter.cjs +0 -2
  426. package/dist/plugins/legacy-adapter.cjs.map +0 -1
  427. package/dist/plugins/legacy-adapter.js +0 -30
  428. package/dist/plugins/legacy-adapter.js.map +0 -1
  429. package/dist/plugins/simplified-component-registry.cjs +0 -2
  430. package/dist/plugins/simplified-component-registry.cjs.map +0 -1
  431. package/dist/plugins/simplified-component-registry.js +0 -71
  432. package/dist/plugins/simplified-component-registry.js.map +0 -1
  433. package/dist/plugins/simplified-error-handler.cjs +0 -2
  434. package/dist/plugins/simplified-error-handler.cjs.map +0 -1
  435. package/dist/plugins/simplified-error-handler.js +0 -154
  436. package/dist/plugins/simplified-error-handler.js.map +0 -1
  437. package/dist/plugins/simplified-lazy-loader.cjs +0 -2
  438. package/dist/plugins/simplified-lazy-loader.cjs.map +0 -1
  439. package/dist/plugins/simplified-lazy-loader.js +0 -129
  440. package/dist/plugins/simplified-lazy-loader.js.map +0 -1
  441. package/dist/plugins/simplified-plugin-manager.cjs +0 -2
  442. package/dist/plugins/simplified-plugin-manager.cjs.map +0 -1
  443. package/dist/plugins/simplified-plugin-manager.js +0 -51
  444. package/dist/plugins/simplified-plugin-manager.js.map +0 -1
  445. package/dist/plugins/simplified-tachui-instance.cjs +0 -2
  446. package/dist/plugins/simplified-tachui-instance.cjs.map +0 -1
  447. package/dist/plugins/simplified-tachui-instance.js +0 -88
  448. package/dist/plugins/simplified-tachui-instance.js.map +0 -1
  449. package/dist/plugins/simplified-types.cjs +0 -2
  450. package/dist/plugins/simplified-types.cjs.map +0 -1
  451. package/dist/plugins/simplified-types.js +0 -9
  452. package/dist/plugins/simplified-types.js.map +0 -1
  453. package/dist/plugins/simplified-utils.cjs +0 -2
  454. package/dist/plugins/simplified-utils.cjs.map +0 -1
  455. package/dist/plugins/simplified-utils.js +0 -40
  456. package/dist/plugins/simplified-utils.js.map +0 -1
  457. package/dist/reactive/cleanup.cjs +0 -2
  458. package/dist/reactive/cleanup.cjs.map +0 -1
  459. package/dist/reactive/cleanup.js +0 -62
  460. package/dist/reactive/cleanup.js.map +0 -1
  461. package/dist/reactive/computed.cjs +0 -2
  462. package/dist/reactive/computed.cjs.map +0 -1
  463. package/dist/reactive/computed.js +0 -121
  464. package/dist/reactive/computed.js.map +0 -1
  465. package/dist/reactive/context.cjs +0 -2
  466. package/dist/reactive/context.cjs.map +0 -1
  467. package/dist/reactive/context.js +0 -143
  468. package/dist/reactive/context.js.map +0 -1
  469. package/dist/reactive/effect.cjs +0 -2
  470. package/dist/reactive/effect.cjs.map +0 -1
  471. package/dist/reactive/effect.js +0 -67
  472. package/dist/reactive/effect.js.map +0 -1
  473. package/dist/reactive/enhanced-effect.cjs +0 -2
  474. package/dist/reactive/enhanced-effect.cjs.map +0 -1
  475. package/dist/reactive/enhanced-effect.js +0 -153
  476. package/dist/reactive/enhanced-effect.js.map +0 -1
  477. package/dist/reactive/enhanced-signal.cjs +0 -2
  478. package/dist/reactive/enhanced-signal.cjs.map +0 -1
  479. package/dist/reactive/enhanced-signal.js +0 -117
  480. package/dist/reactive/enhanced-signal.js.map +0 -1
  481. package/dist/reactive/equality.cjs +0 -2
  482. package/dist/reactive/equality.cjs.map +0 -1
  483. package/dist/reactive/equality.js +0 -66
  484. package/dist/reactive/equality.js.map +0 -1
  485. package/dist/reactive/index.cjs +0 -2
  486. package/dist/reactive/index.cjs.map +0 -1
  487. package/dist/reactive/index.js.map +0 -1
  488. package/dist/reactive/migration.cjs +0 -18
  489. package/dist/reactive/migration.cjs.map +0 -1
  490. package/dist/reactive/migration.js +0 -164
  491. package/dist/reactive/migration.js.map +0 -1
  492. package/dist/reactive/ownership.cjs +0 -2
  493. package/dist/reactive/ownership.cjs.map +0 -1
  494. package/dist/reactive/ownership.js +0 -34
  495. package/dist/reactive/ownership.js.map +0 -1
  496. package/dist/reactive/scheduler.cjs +0 -2
  497. package/dist/reactive/scheduler.cjs.map +0 -1
  498. package/dist/reactive/scheduler.js +0 -111
  499. package/dist/reactive/scheduler.js.map +0 -1
  500. package/dist/reactive/signal.cjs +0 -2
  501. package/dist/reactive/signal.cjs.map +0 -1
  502. package/dist/reactive/signal.js +0 -96
  503. package/dist/reactive/signal.js.map +0 -1
  504. package/dist/reactive/theme.cjs +0 -2
  505. package/dist/reactive/theme.cjs.map +0 -1
  506. package/dist/reactive/theme.js +0 -27
  507. package/dist/reactive/theme.js.map +0 -1
  508. package/dist/reactive/types.cjs +0 -2
  509. package/dist/reactive/types.cjs.map +0 -1
  510. package/dist/reactive/types.js +0 -5
  511. package/dist/reactive/types.js.map +0 -1
  512. package/dist/reactive/unified-scheduler.cjs +0 -2
  513. package/dist/reactive/unified-scheduler.cjs.map +0 -1
  514. package/dist/reactive/unified-scheduler.js +0 -219
  515. package/dist/reactive/unified-scheduler.js.map +0 -1
  516. package/dist/runtime/component-context.cjs +0 -2
  517. package/dist/runtime/component-context.cjs.map +0 -1
  518. package/dist/runtime/component-context.js +0 -177
  519. package/dist/runtime/component-context.js.map +0 -1
  520. package/dist/runtime/component.cjs +0 -2
  521. package/dist/runtime/component.cjs.map +0 -1
  522. package/dist/runtime/component.js +0 -238
  523. package/dist/runtime/component.js.map +0 -1
  524. package/dist/runtime/context.cjs +0 -2
  525. package/dist/runtime/context.cjs.map +0 -1
  526. package/dist/runtime/context.js.map +0 -1
  527. package/dist/runtime/dev-tools.cjs +0 -2
  528. package/dist/runtime/dev-tools.cjs.map +0 -1
  529. package/dist/runtime/dev-tools.js +0 -391
  530. package/dist/runtime/dev-tools.js.map +0 -1
  531. package/dist/runtime/development-warnings.cjs +0 -2
  532. package/dist/runtime/development-warnings.cjs.map +0 -1
  533. package/dist/runtime/development-warnings.js +0 -69
  534. package/dist/runtime/development-warnings.js.map +0 -1
  535. package/dist/runtime/dom-bridge.cjs +0 -2
  536. package/dist/runtime/dom-bridge.cjs.map +0 -1
  537. package/dist/runtime/dom-bridge.js.map +0 -1
  538. package/dist/runtime/element-override.cjs +0 -2
  539. package/dist/runtime/element-override.cjs.map +0 -1
  540. package/dist/runtime/element-override.js +0 -214
  541. package/dist/runtime/element-override.js.map +0 -1
  542. package/dist/runtime/error-boundary.cjs +0 -2
  543. package/dist/runtime/error-boundary.cjs.map +0 -1
  544. package/dist/runtime/error-boundary.js +0 -559
  545. package/dist/runtime/error-boundary.js.map +0 -1
  546. package/dist/runtime/error-recovery.cjs +0 -2
  547. package/dist/runtime/error-recovery.cjs.map +0 -1
  548. package/dist/runtime/error-recovery.js +0 -385
  549. package/dist/runtime/error-recovery.js.map +0 -1
  550. package/dist/runtime/error-reporting.cjs +0 -3
  551. package/dist/runtime/error-reporting.cjs.map +0 -1
  552. package/dist/runtime/error-reporting.js +0 -479
  553. package/dist/runtime/error-reporting.js.map +0 -1
  554. package/dist/runtime/error-utils.cjs +0 -3
  555. package/dist/runtime/error-utils.cjs.map +0 -1
  556. package/dist/runtime/error-utils.js +0 -352
  557. package/dist/runtime/error-utils.js.map +0 -1
  558. package/dist/runtime/lazy-component.cjs +0 -2
  559. package/dist/runtime/lazy-component.cjs.map +0 -1
  560. package/dist/runtime/lazy-component.js +0 -129
  561. package/dist/runtime/lazy-component.js.map +0 -1
  562. package/dist/runtime/lifecycle.cjs +0 -2
  563. package/dist/runtime/lifecycle.cjs.map +0 -1
  564. package/dist/runtime/lifecycle.js +0 -7
  565. package/dist/runtime/lifecycle.js.map +0 -1
  566. package/dist/runtime/mounting.cjs +0 -2
  567. package/dist/runtime/mounting.cjs.map +0 -1
  568. package/dist/runtime/mounting.js +0 -12
  569. package/dist/runtime/mounting.js.map +0 -1
  570. package/dist/runtime/optimization.cjs +0 -2
  571. package/dist/runtime/optimization.cjs.map +0 -1
  572. package/dist/runtime/optimization.js +0 -6
  573. package/dist/runtime/optimization.js.map +0 -1
  574. package/dist/runtime/performance.cjs +0 -2
  575. package/dist/runtime/performance.cjs.map +0 -1
  576. package/dist/runtime/performance.js +0 -399
  577. package/dist/runtime/performance.js.map +0 -1
  578. package/dist/runtime/props.cjs +0 -2
  579. package/dist/runtime/props.cjs.map +0 -1
  580. package/dist/runtime/props.js +0 -265
  581. package/dist/runtime/props.js.map +0 -1
  582. package/dist/runtime/renderer.cjs +0 -2
  583. package/dist/runtime/renderer.cjs.map +0 -1
  584. package/dist/runtime/renderer.js.map +0 -1
  585. package/dist/runtime/semantic-role-manager.cjs +0 -2
  586. package/dist/runtime/semantic-role-manager.cjs.map +0 -1
  587. package/dist/runtime/semantic-role-manager.js +0 -82
  588. package/dist/runtime/semantic-role-manager.js.map +0 -1
  589. package/dist/state/binding.cjs +0 -2
  590. package/dist/state/binding.cjs.map +0 -1
  591. package/dist/state/binding.js +0 -155
  592. package/dist/state/binding.js.map +0 -1
  593. package/dist/state/environment.cjs +0 -2
  594. package/dist/state/environment.cjs.map +0 -1
  595. package/dist/state/environment.js +0 -115
  596. package/dist/state/environment.js.map +0 -1
  597. package/dist/state/index.cjs +0 -2
  598. package/dist/state/index.cjs.map +0 -1
  599. package/dist/state/index.js +0 -63
  600. package/dist/state/index.js.map +0 -1
  601. package/dist/state/observed-object.cjs +0 -2
  602. package/dist/state/observed-object.cjs.map +0 -1
  603. package/dist/state/observed-object.js +0 -163
  604. package/dist/state/observed-object.js.map +0 -1
  605. package/dist/state/state-manager.cjs +0 -2
  606. package/dist/state/state-manager.cjs.map +0 -1
  607. package/dist/state/state-manager.js +0 -233
  608. package/dist/state/state-manager.js.map +0 -1
  609. package/dist/state/state.cjs +0 -2
  610. package/dist/state/state.cjs.map +0 -1
  611. package/dist/state/state.js +0 -159
  612. package/dist/state/state.js.map +0 -1
  613. package/dist/sui-compat.cjs +0 -2
  614. package/dist/sui-compat.cjs.map +0 -1
  615. package/dist/sui-compat.js +0 -88
  616. package/dist/sui-compat.js.map +0 -1
  617. package/dist/validation/advanced-debugging.cjs +0 -44
  618. package/dist/validation/advanced-debugging.cjs.map +0 -1
  619. package/dist/validation/advanced-debugging.js +0 -455
  620. package/dist/validation/advanced-debugging.js.map +0 -1
  621. package/dist/validation/build-time/detection.cjs +0 -2
  622. package/dist/validation/build-time/detection.cjs.map +0 -1
  623. package/dist/validation/build-time/detection.js +0 -199
  624. package/dist/validation/build-time/detection.js.map +0 -1
  625. package/dist/validation/build-time/index.cjs +0 -2
  626. package/dist/validation/build-time/index.cjs.map +0 -1
  627. package/dist/validation/build-time/index.js +0 -122
  628. package/dist/validation/build-time/index.js.map +0 -1
  629. package/dist/validation/build-time/plugins.cjs +0 -3
  630. package/dist/validation/build-time/plugins.cjs.map +0 -1
  631. package/dist/validation/build-time/plugins.js +0 -282
  632. package/dist/validation/build-time/plugins.js.map +0 -1
  633. package/dist/validation/build-time/rules.cjs +0 -2
  634. package/dist/validation/build-time/rules.cjs.map +0 -1
  635. package/dist/validation/build-time/rules.js +0 -576
  636. package/dist/validation/build-time/rules.js.map +0 -1
  637. package/dist/validation/build-time/transformer.cjs +0 -3
  638. package/dist/validation/build-time/transformer.cjs.map +0 -1
  639. package/dist/validation/build-time/transformer.js +0 -177
  640. package/dist/validation/build-time/transformer.js.map +0 -1
  641. package/dist/validation/comprehensive.cjs +0 -9
  642. package/dist/validation/comprehensive.cjs.map +0 -1
  643. package/dist/validation/comprehensive.js +0 -916
  644. package/dist/validation/comprehensive.js.map +0 -1
  645. package/dist/validation/debug-tools.cjs +0 -16
  646. package/dist/validation/debug-tools.cjs.map +0 -1
  647. package/dist/validation/debug-tools.js +0 -405
  648. package/dist/validation/debug-tools.js.map +0 -1
  649. package/dist/validation/developer-experience.cjs +0 -17
  650. package/dist/validation/developer-experience.cjs.map +0 -1
  651. package/dist/validation/developer-experience.js +0 -433
  652. package/dist/validation/developer-experience.js.map +0 -1
  653. package/dist/validation/documentation-integration.cjs +0 -7
  654. package/dist/validation/documentation-integration.cjs.map +0 -1
  655. package/dist/validation/documentation-integration.js +0 -440
  656. package/dist/validation/documentation-integration.js.map +0 -1
  657. package/dist/validation/enhanced-runtime.cjs +0 -6
  658. package/dist/validation/enhanced-runtime.cjs.map +0 -1
  659. package/dist/validation/enhanced-runtime.js +0 -465
  660. package/dist/validation/enhanced-runtime.js.map +0 -1
  661. package/dist/validation/error-reporting.cjs +0 -32
  662. package/dist/validation/error-reporting.cjs.map +0 -1
  663. package/dist/validation/error-reporting.js +0 -370
  664. package/dist/validation/error-reporting.js.map +0 -1
  665. package/dist/validation/ide-integration.cjs +0 -85
  666. package/dist/validation/ide-integration.cjs.map +0 -1
  667. package/dist/validation/ide-integration.js +0 -557
  668. package/dist/validation/ide-integration.js.map +0 -1
  669. package/dist/validation/index.cjs +0 -6
  670. package/dist/validation/index.cjs.map +0 -1
  671. package/dist/validation/index.js.map +0 -1
  672. package/dist/validation/lifecycle-validation.cjs +0 -2
  673. package/dist/validation/lifecycle-validation.cjs.map +0 -1
  674. package/dist/validation/lifecycle-validation.js +0 -314
  675. package/dist/validation/lifecycle-validation.js.map +0 -1
  676. package/dist/validation/performance-optimizer.cjs +0 -2
  677. package/dist/validation/performance-optimizer.cjs.map +0 -1
  678. package/dist/validation/performance-optimizer.js +0 -338
  679. package/dist/validation/performance-optimizer.js.map +0 -1
  680. package/dist/validation/plugin-registration.cjs +0 -2
  681. package/dist/validation/plugin-registration.cjs.map +0 -1
  682. package/dist/validation/plugin-registration.js +0 -126
  683. package/dist/validation/plugin-registration.js.map +0 -1
  684. package/dist/validation/production-bypass.cjs +0 -2
  685. package/dist/validation/production-bypass.cjs.map +0 -1
  686. package/dist/validation/production-bypass.js +0 -218
  687. package/dist/validation/production-bypass.js.map +0 -1
  688. package/dist/validation/simple.cjs +0 -9
  689. package/dist/validation/simple.cjs.map +0 -1
  690. package/dist/validation/simple.js +0 -146
  691. package/dist/validation/simple.js.map +0 -1
  692. package/dist/viewport/adapters/web-adapter.cjs +0 -70
  693. package/dist/viewport/adapters/web-adapter.cjs.map +0 -1
  694. package/dist/viewport/adapters/web-adapter.js +0 -823
  695. package/dist/viewport/adapters/web-adapter.js.map +0 -1
  696. package/dist/viewport/components.cjs +0 -2
  697. package/dist/viewport/components.cjs.map +0 -1
  698. package/dist/viewport/components.js +0 -298
  699. package/dist/viewport/components.js.map +0 -1
  700. package/dist/viewport/environment.cjs +0 -2
  701. package/dist/viewport/environment.cjs.map +0 -1
  702. package/dist/viewport/environment.js +0 -86
  703. package/dist/viewport/environment.js.map +0 -1
  704. package/dist/viewport/index.cjs +0 -2
  705. package/dist/viewport/index.cjs.map +0 -1
  706. package/dist/viewport/index.js.map +0 -1
  707. package/dist/viewport/platform-detection.cjs +0 -2
  708. package/dist/viewport/platform-detection.cjs.map +0 -1
  709. package/dist/viewport/platform-detection.js +0 -205
  710. package/dist/viewport/platform-detection.js.map +0 -1
  711. package/dist/viewport/types.cjs +0 -2
  712. package/dist/viewport/types.cjs.map +0 -1
  713. package/dist/viewport/types.js +0 -13
  714. package/dist/viewport/types.js.map +0 -1
  715. package/dist/viewport/viewport-manager.cjs +0 -2
  716. package/dist/viewport/viewport-manager.cjs.map +0 -1
  717. package/dist/viewport/viewport-manager.js +0 -524
  718. package/dist/viewport/viewport-manager.js.map +0 -1
  719. package/src/assets/Asset.ts +0 -11
  720. package/src/assets/AssetCollection.ts +0 -99
  721. package/src/assets/ColorAsset.ts +0 -210
  722. package/src/assets/FontAsset.ts +0 -380
  723. package/src/assets/ImageAsset.ts +0 -91
  724. package/src/assets/README.md +0 -190
  725. package/src/assets/index.ts +0 -175
  726. package/src/assets/test-assets.ts +0 -69
  727. package/src/assets/test-integration.ts +0 -46
  728. package/src/assets/test-simple.ts +0 -28
  729. package/src/assets/types.ts +0 -79
  730. package/src/bundles/common.ts +0 -30
  731. package/src/bundles/complete.ts +0 -29
  732. package/src/bundles/essential.ts +0 -26
  733. package/src/bundles/minimal.ts +0 -26
  734. package/src/bundles/production-minimal.ts +0 -67
  735. package/src/compiler/advanced-parser.ts +0 -871
  736. package/src/compiler/codegen.ts +0 -450
  737. package/src/compiler/enhanced-codegen.ts +0 -729
  738. package/src/compiler/index.ts +0 -25
  739. package/src/compiler/parser.ts +0 -461
  740. package/src/compiler/plugin.ts +0 -181
  741. package/src/compiler/types.ts +0 -177
  742. package/src/components/BasicInput.ts +0 -352
  743. package/src/components/Button.ts +0 -963
  744. package/src/components/Divider.ts +0 -341
  745. package/src/components/EnhancedLink.ts +0 -676
  746. package/src/components/Form.ts +0 -414
  747. package/src/components/Grid.ts +0 -2507
  748. package/src/components/GridResponsive.ts +0 -637
  749. package/src/components/Image.ts +0 -426
  750. package/src/components/List.ts +0 -1084
  751. package/src/components/Menu.ts +0 -807
  752. package/src/components/Picker.ts +0 -678
  753. package/src/components/ScrollView.ts +0 -725
  754. package/src/components/Section.ts +0 -472
  755. package/src/components/Show.ts +0 -205
  756. package/src/components/Spacer.ts +0 -93
  757. package/src/components/Text.ts +0 -447
  758. package/src/components/Toggle.ts +0 -700
  759. package/src/components/index.ts +0 -231
  760. package/src/components/wrapper.ts +0 -828
  761. package/src/concatenation/concatenatable.ts +0 -211
  762. package/src/concatenation/concatenated-component.ts +0 -471
  763. package/src/concatenation/index.ts +0 -41
  764. package/src/concatenation/styles.css +0 -120
  765. package/src/concatenation/text-optimizer.ts +0 -440
  766. package/src/concatenation/types.ts +0 -116
  767. package/src/constants/README.md +0 -339
  768. package/src/constants/__tests__/frame-utils.test.ts +0 -276
  769. package/src/constants/__tests__/layout.test.ts +0 -215
  770. package/src/constants/frame-utils.ts +0 -174
  771. package/src/constants/index.ts +0 -8
  772. package/src/constants/layout.ts +0 -120
  773. package/src/css-classes/component-base.ts +0 -117
  774. package/src/css-classes/css-class-manager.ts +0 -372
  775. package/src/css-classes/dom-integration.ts +0 -162
  776. package/src/css-classes/enhanced-renderer.ts +0 -166
  777. package/src/css-classes/index.ts +0 -45
  778. package/src/css-classes/types.ts +0 -73
  779. package/src/css-classes/utilities.ts +0 -175
  780. package/src/debug/index.ts +0 -267
  781. package/src/developer-experience/enhanced-errors.ts +0 -556
  782. package/src/developer-experience/enhanced-types.ts +0 -427
  783. package/src/developer-experience/index.ts +0 -220
  784. package/src/globals.d.ts +0 -43
  785. package/src/gradients/__tests__/angular-gradient.test.ts +0 -111
  786. package/src/gradients/__tests__/background-modifier.test.ts +0 -81
  787. package/src/gradients/__tests__/comprehensive-gradients.test.ts +0 -296
  788. package/src/gradients/__tests__/gradient-asset.test.ts +0 -144
  789. package/src/gradients/__tests__/linear-gradient.test.ts +0 -92
  790. package/src/gradients/__tests__/phase4-features.test.ts +0 -386
  791. package/src/gradients/__tests__/radial-gradient.test.ts +0 -110
  792. package/src/gradients/__tests__/repeating-gradients.test.ts +0 -125
  793. package/src/gradients/__tests__/state-background-modifier.test.ts +0 -340
  794. package/src/gradients/__tests__/state-gradient-asset.test.ts +0 -262
  795. package/src/gradients/__tests__/state-gradient-integration.test.ts +0 -277
  796. package/src/gradients/css-generator.ts +0 -158
  797. package/src/gradients/examples.ts +0 -632
  798. package/src/gradients/gradient-asset.ts +0 -30
  799. package/src/gradients/index.ts +0 -85
  800. package/src/gradients/performance.ts +0 -521
  801. package/src/gradients/presets.ts +0 -422
  802. package/src/gradients/reactive.ts +0 -470
  803. package/src/gradients/state-gradient-asset.ts +0 -179
  804. package/src/gradients/types.ts +0 -148
  805. package/src/gradients/utils.ts +0 -579
  806. package/src/gradients/validation.ts +0 -489
  807. package/src/index.ts +0 -168
  808. package/src/lifecycle/hooks.ts +0 -332
  809. package/src/modifiers/__tests__/as-html-integration.test.ts +0 -204
  810. package/src/modifiers/__tests__/as-html.test.ts +0 -437
  811. package/src/modifiers/__tests__/basic-sanitizer-security.test.ts +0 -294
  812. package/src/modifiers/__tests__/border.test.ts +0 -371
  813. package/src/modifiers/__tests__/margin-string-support.test.ts +0 -41
  814. package/src/modifiers/__tests__/padding-string-support.test.ts +0 -41
  815. package/src/modifiers/as-html-validator.ts +0 -68
  816. package/src/modifiers/as-html.ts +0 -216
  817. package/src/modifiers/attributes.ts +0 -574
  818. package/src/modifiers/backdrop.ts +0 -290
  819. package/src/modifiers/background.ts +0 -165
  820. package/src/modifiers/base.ts +0 -1815
  821. package/src/modifiers/basic-sanitizer.ts +0 -227
  822. package/src/modifiers/border.ts +0 -574
  823. package/src/modifiers/builder.ts +0 -1747
  824. package/src/modifiers/core.ts +0 -521
  825. package/src/modifiers/css.ts +0 -148
  826. package/src/modifiers/effects.ts +0 -412
  827. package/src/modifiers/elements.ts +0 -541
  828. package/src/modifiers/filters.ts +0 -501
  829. package/src/modifiers/flexbox.ts +0 -180
  830. package/src/modifiers/font.ts +0 -149
  831. package/src/modifiers/grid.ts +0 -238
  832. package/src/modifiers/index.ts +0 -481
  833. package/src/modifiers/margin.ts +0 -218
  834. package/src/modifiers/padding.ts +0 -318
  835. package/src/modifiers/registry.ts +0 -444
  836. package/src/modifiers/responsive/__tests__/advanced-media-queries.test.ts +0 -392
  837. package/src/modifiers/responsive/__tests__/advanced-utilities.test.ts +0 -368
  838. package/src/modifiers/responsive/__tests__/comprehensive-browser-tests.test.ts +0 -556
  839. package/src/modifiers/responsive/__tests__/layout-patterns.test.ts +0 -558
  840. package/src/modifiers/responsive/advanced-utilities.ts +0 -562
  841. package/src/modifiers/responsive/breakpoints.ts +0 -330
  842. package/src/modifiers/responsive/css-generator.ts +0 -432
  843. package/src/modifiers/responsive/dev-tools.ts +0 -650
  844. package/src/modifiers/responsive/index.ts +0 -119
  845. package/src/modifiers/responsive/layout-patterns.ts +0 -592
  846. package/src/modifiers/responsive/performance.ts +0 -385
  847. package/src/modifiers/responsive/responsive-builder.ts +0 -620
  848. package/src/modifiers/responsive/responsive-modifier.ts +0 -410
  849. package/src/modifiers/responsive/types.ts +0 -226
  850. package/src/modifiers/responsive/utilities.ts +0 -478
  851. package/src/modifiers/scroll.ts +0 -297
  852. package/src/modifiers/shadows.ts +0 -321
  853. package/src/modifiers/size.ts +0 -208
  854. package/src/modifiers/text.ts +0 -416
  855. package/src/modifiers/transformations.ts +0 -640
  856. package/src/modifiers/transitions.ts +0 -218
  857. package/src/modifiers/types.ts +0 -889
  858. package/src/modifiers/typography.ts +0 -341
  859. package/src/modifiers/utility.ts +0 -209
  860. package/src/modifiers/utils.ts +0 -413
  861. package/src/plugins/__tests__/simplified-plugin-system.test.ts +0 -190
  862. package/src/plugins/component-loader-registry.ts +0 -371
  863. package/src/plugins/index.ts +0 -61
  864. package/src/plugins/legacy-adapter.ts +0 -84
  865. package/src/plugins/simplified-component-registry.ts +0 -130
  866. package/src/plugins/simplified-error-handler.ts +0 -372
  867. package/src/plugins/simplified-index.ts +0 -61
  868. package/src/plugins/simplified-lazy-loader.ts +0 -242
  869. package/src/plugins/simplified-plugin-manager.ts +0 -93
  870. package/src/plugins/simplified-tachui-instance.ts +0 -142
  871. package/src/plugins/simplified-types.ts +0 -79
  872. package/src/plugins/simplified-utils.ts +0 -118
  873. package/src/reactive/cleanup.ts +0 -241
  874. package/src/reactive/computed.ts +0 -281
  875. package/src/reactive/context.ts +0 -287
  876. package/src/reactive/effect.ts +0 -194
  877. package/src/reactive/enhanced-effect.ts +0 -318
  878. package/src/reactive/enhanced-signal.ts +0 -227
  879. package/src/reactive/equality.ts +0 -188
  880. package/src/reactive/globals.d.ts +0 -5
  881. package/src/reactive/index.ts +0 -150
  882. package/src/reactive/migration.ts +0 -335
  883. package/src/reactive/ownership.ts +0 -182
  884. package/src/reactive/scheduler.ts +0 -300
  885. package/src/reactive/signal.ts +0 -201
  886. package/src/reactive/theme.ts +0 -49
  887. package/src/reactive/types.ts +0 -103
  888. package/src/reactive/unified-scheduler.ts +0 -357
  889. package/src/runtime/component-context.ts +0 -343
  890. package/src/runtime/component.ts +0 -499
  891. package/src/runtime/context.ts +0 -527
  892. package/src/runtime/dev-tools.ts +0 -752
  893. package/src/runtime/development-warnings.ts +0 -114
  894. package/src/runtime/dom-bridge.ts +0 -570
  895. package/src/runtime/element-override.ts +0 -282
  896. package/src/runtime/error-boundary.ts +0 -955
  897. package/src/runtime/error-recovery.ts +0 -638
  898. package/src/runtime/error-reporting.ts +0 -808
  899. package/src/runtime/error-utils.ts +0 -698
  900. package/src/runtime/index.ts +0 -202
  901. package/src/runtime/lazy-component.ts +0 -268
  902. package/src/runtime/lifecycle.ts +0 -10
  903. package/src/runtime/mounting.ts +0 -17
  904. package/src/runtime/optimization.ts +0 -13
  905. package/src/runtime/performance.ts +0 -693
  906. package/src/runtime/props.ts +0 -434
  907. package/src/runtime/refs.ts +0 -13
  908. package/src/runtime/renderer.ts +0 -674
  909. package/src/runtime/semantic-role-manager.ts +0 -140
  910. package/src/runtime/types.ts +0 -282
  911. package/src/state/binding.ts +0 -381
  912. package/src/state/environment-object.ts +0 -444
  913. package/src/state/environment.ts +0 -351
  914. package/src/state/index.ts +0 -179
  915. package/src/state/observed-object.ts +0 -405
  916. package/src/state/state-manager.ts +0 -366
  917. package/src/state/state.ts +0 -339
  918. package/src/state/types.ts +0 -192
  919. package/src/sui-compat.ts +0 -163
  920. package/src/validation/__tests__/phase-1d-integration.test.ts +0 -558
  921. package/src/validation/advanced-debugging.ts +0 -860
  922. package/src/validation/build-time/detection.ts +0 -373
  923. package/src/validation/build-time/index.ts +0 -222
  924. package/src/validation/build-time/plugins.ts +0 -515
  925. package/src/validation/build-time/rules.ts +0 -624
  926. package/src/validation/build-time/transformer.ts +0 -372
  927. package/src/validation/build-time/types.ts +0 -232
  928. package/src/validation/comprehensive.ts +0 -1272
  929. package/src/validation/debug-tools.ts +0 -724
  930. package/src/validation/developer-experience.ts +0 -712
  931. package/src/validation/documentation-integration.ts +0 -835
  932. package/src/validation/enhanced-runtime.ts +0 -765
  933. package/src/validation/error-reporting.ts +0 -587
  934. package/src/validation/ide-integration.ts +0 -845
  935. package/src/validation/index.ts +0 -353
  936. package/src/validation/lifecycle-validation.ts +0 -636
  937. package/src/validation/performance-optimizer.ts +0 -599
  938. package/src/validation/plugin-registration.ts +0 -249
  939. package/src/validation/production-bypass.ts +0 -466
  940. package/src/validation/simple.ts +0 -465
  941. package/src/viewport/adapters/web-adapter.ts +0 -1385
  942. package/src/viewport/components.ts +0 -505
  943. package/src/viewport/environment.ts +0 -173
  944. package/src/viewport/index.ts +0 -290
  945. package/src/viewport/platform-detection.ts +0 -431
  946. package/src/viewport/types.ts +0 -371
  947. package/src/viewport/viewport-manager.ts +0 -979
@@ -1,963 +0,0 @@
1
- /**
2
- * Enhanced Button Component (Phase 5.2)
3
- *
4
- * SwiftUI-inspired Button component with press states, variants,
5
- * and advanced interaction handling.
6
- */
7
-
8
- import type { ModifiableComponent, ModifierBuilder } from '../modifiers/types'
9
- import { createSignal, isSignal, createEffect } from '../reactive'
10
- import type { Signal } from '../reactive/types'
11
- import type { ComponentInstance, ComponentProps } from '../runtime/types'
12
- import { text, h } from '../runtime/renderer'
13
- import { withModifiers } from './wrapper'
14
- import { useLifecycle } from '../lifecycle/hooks'
15
- import { ColorAsset } from '../assets/ColorAsset'
16
- import type { Concatenatable, ComponentSegment, ConcatenationMetadata } from '../concatenation/types'
17
- import { ConcatenatedComponent } from '../concatenation/concatenated-component'
18
- import {
19
- ComponentWithCSSClasses,
20
- type CSSClassesProps
21
- } from '../css-classes'
22
-
23
- /**
24
- * Button role types following SwiftUI patterns
25
- */
26
- export type ButtonRole = 'destructive' | 'cancel' | 'none'
27
-
28
- /**
29
- * Button variants
30
- */
31
- export type ButtonVariant =
32
- | 'filled' // Solid background (primary)
33
- | 'outlined' // Border with transparent background
34
- | 'plain' // No background or border
35
- | 'bordered' // Subtle border with light background
36
- | 'borderedProminent' // Prominent border style
37
-
38
- /**
39
- * Button size presets
40
- */
41
- export type ButtonSize = 'small' | 'medium' | 'large'
42
-
43
- /**
44
- * Button state
45
- */
46
- export type ButtonState = 'normal' | 'pressed' | 'disabled' | 'focused'
47
-
48
- /**
49
- * Button component properties with CSS classes support
50
- */
51
- export interface ButtonProps extends ComponentProps, CSSClassesProps {
52
- // Content
53
- title?: string | (() => string) | Signal<string>
54
- systemImage?: string
55
-
56
- // Behavior
57
- action?: () => void | Promise<void>
58
- role?: ButtonRole
59
- isEnabled?: boolean | Signal<boolean>
60
-
61
- // Appearance
62
- variant?: ButtonVariant
63
- size?: ButtonSize
64
- tint?: string | Signal<string> | ColorAsset
65
- backgroundColor?: string | Signal<string> | ColorAsset
66
- foregroundColor?: string | Signal<string> | ColorAsset
67
-
68
- // State management
69
- isPressed?: Signal<boolean>
70
- isLoading?: boolean | Signal<boolean>
71
-
72
- // Accessibility
73
- accessibilityLabel?: string
74
- accessibilityHint?: string
75
-
76
- // Advanced
77
- controlSize?: ButtonSize
78
- hapticFeedback?: boolean
79
- }
80
-
81
- /**
82
- * Button theme configuration
83
- */
84
- export interface ButtonTheme {
85
- colors: {
86
- primary: string
87
- secondary: string
88
- destructive: string
89
- background: string
90
- surface: string
91
- onPrimary: string
92
- onSecondary: string
93
- onSurface: string
94
- border: string
95
- disabled: string
96
- }
97
- spacing: {
98
- small: number
99
- medium: number
100
- large: number
101
- }
102
- borderRadius: {
103
- small: number
104
- medium: number
105
- large: number
106
- }
107
- typography: {
108
- small: { size: number; weight: string }
109
- medium: { size: number; weight: string }
110
- large: { size: number; weight: string }
111
- }
112
- }
113
-
114
- /**
115
- * Default button theme
116
- */
117
- export const defaultButtonTheme: ButtonTheme = {
118
- colors: {
119
- primary: '#007AFF',
120
- secondary: '#5856D6',
121
- destructive: '#FF3B30',
122
- background: '#F2F2F7',
123
- surface: '#FFFFFF',
124
- onPrimary: '#FFFFFF',
125
- onSecondary: '#FFFFFF',
126
- onSurface: '#000000',
127
- border: '#C7C7CC',
128
- disabled: '#8E8E93',
129
- },
130
- spacing: {
131
- small: 8,
132
- medium: 12,
133
- large: 16,
134
- },
135
- borderRadius: {
136
- small: 6,
137
- medium: 8,
138
- large: 12,
139
- },
140
- typography: {
141
- small: { size: 14, weight: '500' },
142
- medium: { size: 16, weight: '500' },
143
- large: { size: 18, weight: '600' },
144
- },
145
- }
146
-
147
- /**
148
- * Enhanced Button component class with CSS classes support
149
- */
150
- export class EnhancedButton extends ComponentWithCSSClasses implements ComponentInstance<ButtonProps>, Concatenatable<ButtonProps> {
151
- public readonly type = 'component' as const
152
- public readonly id: string
153
- public mounted = false
154
- public cleanup: (() => void)[] = []
155
- public stateSignal: () => ButtonState
156
- private setState: (value: ButtonState) => void
157
- public theme: ButtonTheme
158
-
159
- constructor(
160
- public props: ButtonProps,
161
- theme: ButtonTheme = defaultButtonTheme
162
- ) {
163
- super()
164
- this.id = `button-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`
165
- this.theme = theme
166
-
167
- // Create reactive state signals
168
- const [stateSignal, setState] = createSignal<ButtonState>('normal')
169
- this.stateSignal = stateSignal
170
- this.setState = setState
171
-
172
- // Set up DOM event listeners when component is ready
173
- this.setupDOMEventListeners()
174
- }
175
-
176
- /**
177
- * Set up DOM event listeners for button interactions
178
- */
179
- private setupDOMEventListeners(): void {
180
- useLifecycle(this, {
181
- onDOMReady: (_elements, primaryElement) => {
182
- if (primaryElement instanceof HTMLButtonElement) {
183
- this.attachInteractionEvents(primaryElement)
184
- this.setupReactiveStyles(primaryElement)
185
- }
186
- }
187
- })
188
- }
189
-
190
- /**
191
- * Set up reactive style updates based on state changes
192
- */
193
- private setupReactiveStyles(button: HTMLButtonElement): void {
194
- // Create a reactive effect that updates styles when state changes
195
- const effect = createEffect(() => {
196
- // Reading the state signal makes this effect reactive to state changes
197
- this.stateSignal()
198
-
199
- // Also watch for changes in enabled/loading states if they're reactive
200
- this.isEnabled()
201
- this.isLoading()
202
-
203
- // Watch color properties for reactivity
204
- const { tint, backgroundColor, foregroundColor } = this.props
205
-
206
- // Make reactive to tint changes
207
- if (tint && isSignal(tint)) {
208
- (tint as () => string)() // Read the signal to make effect reactive to it
209
- } else if (tint instanceof ColorAsset) {
210
- tint.resolve() // Make effect reactive to theme changes
211
- }
212
-
213
- // Make reactive to backgroundColor changes
214
- if (backgroundColor && isSignal(backgroundColor)) {
215
- (backgroundColor as () => string)()
216
- } else if (backgroundColor instanceof ColorAsset) {
217
- backgroundColor.resolve()
218
- }
219
-
220
- // Make reactive to foregroundColor changes
221
- if (foregroundColor && isSignal(foregroundColor)) {
222
- (foregroundColor as () => string)()
223
- } else if (foregroundColor instanceof ColorAsset) {
224
- foregroundColor.resolve()
225
- }
226
-
227
- // Trigger style update whenever any dependency changes
228
- const styles = this.getButtonStyles()
229
- this.applyStylesToElement(button, styles)
230
- })
231
-
232
- // Store the effect cleanup function
233
- this.cleanup.push(() => {
234
- // Clean up the reactive effect when component unmounts
235
- if (effect && typeof effect.dispose === 'function') {
236
- effect.dispose()
237
- }
238
- })
239
- }
240
-
241
- /**
242
- * Apply computed styles to the button element, respecting modifier-applied styles
243
- */
244
- private applyStylesToElement(element: HTMLButtonElement, styles: Record<string, any>): void {
245
- // Apply each style property to the element, but only if not already set by modifiers
246
- Object.entries(styles).forEach(([property, value]) => {
247
- const cssProperty = this.camelToKebabCase(property)
248
- if (typeof value === 'string' || typeof value === 'number') {
249
- // Check if this property is already set by a modifier
250
- const currentValue = element.style.getPropertyValue(cssProperty)
251
- const hasModifierValue = currentValue && currentValue !== '' && currentValue !== 'inherit'
252
-
253
- // Special handling for transform: Button state transforms should override modifier transforms
254
- if (cssProperty === 'transform') {
255
- element.style.setProperty(cssProperty, String(value))
256
- } else if (!hasModifierValue) {
257
- // For other properties, only apply Button styles if no modifier has set this property
258
- element.style.setProperty(cssProperty, String(value))
259
- }
260
- }
261
- })
262
- }
263
-
264
- /**
265
- * Convert camelCase to kebab-case for CSS properties
266
- */
267
- private camelToKebabCase(str: string): string {
268
- return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase()
269
- }
270
-
271
- /**
272
- * Resolve color value from string, signal, or asset
273
- */
274
- private resolveColorValue(color: string | Signal<string> | ColorAsset | undefined): string | undefined {
275
- if (!color) return undefined
276
-
277
- if (typeof color === 'string') {
278
- return color
279
- } else if (isSignal(color)) {
280
- return (color as () => string)()
281
- } else if (color instanceof ColorAsset) {
282
- return color.resolve()
283
- }
284
-
285
- return undefined
286
- }
287
-
288
- /**
289
- * Attach interaction event listeners to the button element
290
- */
291
- private attachInteractionEvents(button: HTMLButtonElement): void {
292
- // Helper to check if button is currently enabled
293
- const isCurrentlyEnabled = (): boolean => {
294
- const enabled = this.isEnabled()
295
- return typeof enabled === 'boolean' ? enabled : enabled()
296
- }
297
-
298
- // Store global mouseup handler reference for cleanup
299
- let globalMouseUpHandler: ((event: MouseEvent) => void) | null = null
300
-
301
- // Mouse/pointer events for press states
302
- const handleMouseDown = (event: MouseEvent) => {
303
- if (isCurrentlyEnabled() && event.button === 0) { // Only left click
304
- this.setState('pressed')
305
-
306
- // Add global mouseup listener to handle mouseup outside the button
307
- globalMouseUpHandler = () => {
308
- if (this.stateSignal() === 'pressed') {
309
- this.setState('normal')
310
- }
311
- // Remove the global listener after handling
312
- if (globalMouseUpHandler) {
313
- document.removeEventListener('mouseup', globalMouseUpHandler)
314
- globalMouseUpHandler = null
315
- }
316
- }
317
- document.addEventListener('mouseup', globalMouseUpHandler)
318
- }
319
- }
320
-
321
- const handleMouseUp = () => {
322
- if (isCurrentlyEnabled() && this.stateSignal() === 'pressed') {
323
- this.setState('normal')
324
- // Clean up global listener if it exists
325
- if (globalMouseUpHandler) {
326
- document.removeEventListener('mouseup', globalMouseUpHandler)
327
- globalMouseUpHandler = null
328
- }
329
- }
330
- }
331
-
332
- const handleMouseLeave = () => {
333
- if (isCurrentlyEnabled()) {
334
- this.setState('normal')
335
- // Clean up global listener if it exists
336
- if (globalMouseUpHandler) {
337
- document.removeEventListener('mouseup', globalMouseUpHandler)
338
- globalMouseUpHandler = null
339
- }
340
- }
341
- }
342
-
343
- // Focus events
344
- const handleFocus = () => {
345
- if (isCurrentlyEnabled() && this.stateSignal() !== 'pressed') {
346
- this.setState('focused')
347
- }
348
- }
349
-
350
- const handleBlur = () => {
351
- if (isCurrentlyEnabled() && this.stateSignal() === 'focused') {
352
- this.setState('normal')
353
- }
354
- }
355
-
356
- // Keyboard events
357
- const handleKeyDown = (event: KeyboardEvent) => {
358
- if (isCurrentlyEnabled() && (event.key === ' ' || event.key === 'Enter')) {
359
- event.preventDefault()
360
- this.setState('pressed')
361
- }
362
- }
363
-
364
- const handleKeyUp = (event: KeyboardEvent) => {
365
- if (isCurrentlyEnabled() && (event.key === ' ' || event.key === 'Enter')) {
366
- event.preventDefault()
367
- this.setState('normal')
368
- // Trigger the action for keyboard activation
369
- this.props.action?.()
370
- }
371
- }
372
-
373
- // Add event listeners
374
- button.addEventListener('mousedown', handleMouseDown)
375
- button.addEventListener('mouseup', handleMouseUp)
376
- button.addEventListener('mouseleave', handleMouseLeave)
377
- button.addEventListener('focus', handleFocus)
378
- button.addEventListener('blur', handleBlur)
379
- button.addEventListener('keydown', handleKeyDown)
380
- button.addEventListener('keyup', handleKeyUp)
381
-
382
- // Store cleanup functions
383
- this.cleanup.push(() => {
384
- button.removeEventListener('mousedown', handleMouseDown)
385
- button.removeEventListener('mouseup', handleMouseUp)
386
- button.removeEventListener('mouseleave', handleMouseLeave)
387
- button.removeEventListener('focus', handleFocus)
388
- button.removeEventListener('blur', handleBlur)
389
- button.removeEventListener('keydown', handleKeyDown)
390
- button.removeEventListener('keyup', handleKeyUp)
391
-
392
- // Clean up global mouseup listener if it exists
393
- if (globalMouseUpHandler) {
394
- document.removeEventListener('mouseup', globalMouseUpHandler)
395
- globalMouseUpHandler = null
396
- }
397
- })
398
- }
399
-
400
- /**
401
- * Check if button is enabled
402
- */
403
- isEnabled(): boolean | (() => boolean) {
404
- const { isEnabled } = this.props
405
-
406
- if (isEnabled === undefined) return true
407
- if (typeof isEnabled === 'boolean') return isEnabled
408
- if (isSignal(isEnabled)) return isEnabled as () => boolean
409
- return true
410
- }
411
-
412
-
413
- /**
414
- * Render the button component
415
- */
416
- render() {
417
- // Use reactive pattern - pass signals/functions directly to runtime
418
- const enabled = this.isEnabled() // Get signal/value for enabled state
419
-
420
- // Create button content - always include title
421
- const children = []
422
-
423
- // System image (icon) - only if specified
424
- if (this.props.systemImage) {
425
- children.push(h('span', {
426
- class: 'button-icon',
427
- style: {
428
- marginRight: '8px',
429
- fontSize: '1.2em',
430
- },
431
- }, text(this.props.systemImage)))
432
- }
433
-
434
- // Button title - use h() helper for proper text node handling
435
- children.push(h('span', {
436
- class: 'button-title'
437
- }, text(this.props.title || '')))
438
-
439
- // Process CSS classes for this component
440
- const baseClasses = ['tachui-button']
441
- const classString = this.createClassString(this.props, baseClasses)
442
-
443
- // Create button element as DOMNode object with modifier metadata
444
- const buttonElement = {
445
- type: 'element' as const,
446
- tag: 'button',
447
- props: {
448
- className: classString,
449
- type: 'button',
450
- disabled: typeof enabled === 'boolean' ? !enabled : () => !enabled(), // Invert enabled to disabled
451
- onClick: this.props.action
452
- ? () => {
453
- try {
454
- this.props.action?.()
455
- } catch (error) {
456
- console.error('Button action error:', error)
457
- }
458
- }
459
- : undefined,
460
- // Pass through debug label for debug system
461
- ...(this.props.debugLabel && { debugLabel: this.props.debugLabel }),
462
- },
463
- children,
464
- // Attach component metadata for modifier processing
465
- componentMetadata: {
466
- id: this.id,
467
- type: 'Button',
468
- // Note: modifiers are attached automatically by the modifier system
469
- },
470
- }
471
-
472
- return [buttonElement]
473
- }
474
-
475
- /**
476
- * Check if button is in loading state
477
- */
478
- isLoading(): boolean {
479
- const { isLoading } = this.props
480
-
481
- if (isLoading === undefined) return false
482
- if (typeof isLoading === 'boolean') return isLoading
483
- if (isSignal(isLoading)) return (isLoading as () => boolean)()
484
- return false
485
- }
486
-
487
- /**
488
- * Check if the button has color-related modifiers applied
489
- */
490
- private hasColorModifiers(): boolean {
491
- // Try to get modifiers from the wrapper component first
492
- let modifiers = (this as any).modifiers
493
-
494
- // If not found on this component, check if we're wrapped and get from wrapper
495
- if (!modifiers && (this as any).modifierBuilder) {
496
- modifiers = (this as any).modifierBuilder.modifiers
497
- }
498
-
499
- // Also check if we're part of a modifiable component structure
500
- if (!modifiers && (this as any).modifiableComponent) {
501
- modifiers = (this as any).modifiableComponent.modifiers
502
- }
503
-
504
- if (!modifiers || !Array.isArray(modifiers)) {
505
- return false
506
- }
507
-
508
- // Check for any modifier that affects color
509
- return modifiers.some((modifier: any) => {
510
- // Check AppearanceModifier
511
- if (modifier.type === 'appearance' || modifier.constructor?.name === 'AppearanceModifier') {
512
- return modifier.properties &&
513
- (modifier.properties.foregroundColor !== undefined ||
514
- modifier.properties.color !== undefined)
515
- }
516
-
517
- // Check for any other modifiers that might affect color
518
- if (modifier.properties) {
519
- const colorProps = ['foregroundColor', 'color', 'textColor']
520
- return colorProps.some(prop => modifier.properties[prop] !== undefined)
521
- }
522
-
523
- return false
524
- })
525
- }
526
-
527
- /**
528
- * Check if the button has typography-related modifiers applied
529
- */
530
- private hasTypographyModifiers(): boolean {
531
- // Try to get modifiers from the wrapper component first
532
- let modifiers = (this as any).modifiers
533
-
534
- // If not found on this component, check if we're wrapped and get from wrapper
535
- if (!modifiers && (this as any).modifierBuilder) {
536
- modifiers = (this as any).modifierBuilder.modifiers
537
- }
538
-
539
- // Also check if we're part of a modifiable component structure
540
- if (!modifiers && (this as any).modifiableComponent) {
541
- modifiers = (this as any).modifiableComponent.modifiers
542
- }
543
-
544
- if (!modifiers || !Array.isArray(modifiers)) {
545
- return false
546
- }
547
-
548
- // Check for any modifier that affects text transformation
549
- const hasTypography = modifiers.some((modifier: any) => {
550
- // Check TypographyModifier
551
- if (modifier.type === 'typography' || modifier.constructor?.name === 'TypographyModifier') {
552
- return modifier.properties &&
553
- (modifier.properties.transform !== undefined ||
554
- modifier.properties.textTransform !== undefined)
555
- }
556
-
557
- return false
558
- })
559
-
560
- return hasTypography
561
- }
562
-
563
- /**
564
- * Get computed button styles based on variant, size, role, and state
565
- */
566
- // biome-ignore lint/suspicious/noExplicitAny: CSS styles require flexible property types
567
- getButtonStyles(): Record<string, any> {
568
- const { variant, size, role = 'none', tint, backgroundColor: bgColorProp, foregroundColor: fgColorProp } = this.props
569
- const state = this.stateSignal()
570
- const isLoading = this.isLoading()
571
- const isEnabled = this.isEnabled()
572
-
573
- // Check if the component has color-related or typography modifiers applied
574
- const hasColorModifiers = this.hasColorModifiers()
575
- const hasTypographyModifiers = this.hasTypographyModifiers()
576
-
577
- // Base styles - minimal defaults, inherit from parent but allow modifiers to override
578
- const baseStyles: Record<string, any> = {
579
- // Only set color property if no modifiers will handle it
580
- // This prevents conflicts between Button styles and AppearanceModifier
581
- ...((!hasColorModifiers && !fgColorProp && !variant) && { color: 'inherit' }),
582
- // Only set text-related properties if no typography modifiers will handle them
583
- // This prevents conflicts between Button styles and TypographyModifier
584
- ...(!hasTypographyModifiers && {
585
- fontStyle: 'inherit',
586
- lineHeight: 'inherit',
587
- textTransform: 'inherit',
588
- textDecoration: 'inherit',
589
- textIndent: 'inherit',
590
- textShadow: 'inherit',
591
- wordSpacing: 'inherit',
592
- textOrientation: 'inherit',
593
- writingMode: 'inherit',
594
- direction: 'inherit',
595
- }),
596
- // Let modifiers control: fontFamily, fontSize, fontWeight, letterSpacing, textAlign
597
- }
598
-
599
- // Only apply size-based styles if size is explicitly provided
600
- if (size) {
601
- const sizeConfig = this.theme.spacing[size] || this.theme.spacing.medium
602
- const borderRadius = this.theme.borderRadius[size] || this.theme.borderRadius.medium
603
- const typography = this.theme.typography[size] || this.theme.typography.medium
604
-
605
- const minHeights = {
606
- small: '32px',
607
- medium: '40px',
608
- large: '48px',
609
- }
610
-
611
- baseStyles.padding = `${sizeConfig}px ${sizeConfig * 2}px`
612
- baseStyles.borderRadius = `${borderRadius}px`
613
- baseStyles.fontSize = `${typography.size}px`
614
- baseStyles.fontWeight = typography.weight
615
- baseStyles.minHeight = minHeights[size]
616
- }
617
-
618
- let backgroundColor = 'transparent'
619
- let borderColor = 'transparent'
620
- let borderWidth = '1px'
621
- let color = undefined // Will be set by variant or remain undefined to use baseStyles.color
622
-
623
- // Resolve color values using helper method
624
- const tintColor = this.resolveColorValue(tint)
625
- const customBackgroundColor = this.resolveColorValue(bgColorProp)
626
- const customForegroundColor = this.resolveColorValue(fgColorProp)
627
-
628
- // Apply variant styles ONLY if variant is explicitly provided
629
- if (variant) {
630
- const fallbackTintColor = tintColor || this.theme.colors.primary
631
-
632
- switch (variant) {
633
- case 'filled':
634
- if (role === 'destructive') {
635
- backgroundColor = this.theme.colors.destructive
636
- } else if (role === 'cancel') {
637
- backgroundColor = this.theme.colors.secondary
638
- } else {
639
- backgroundColor = fallbackTintColor
640
- }
641
- color = this.theme.colors.onPrimary
642
- break
643
- case 'outlined':
644
- borderColor = role === 'destructive' ? this.theme.colors.destructive : fallbackTintColor
645
- color = role === 'destructive' ? this.theme.colors.destructive : fallbackTintColor
646
- break
647
- case 'bordered':
648
- backgroundColor = this.theme.colors.background
649
- borderColor = this.theme.colors.border
650
- break
651
- case 'borderedProminent':
652
- backgroundColor = this.theme.colors.surface
653
- borderColor = this.theme.colors.primary
654
- borderWidth = '2px'
655
- break
656
- case 'plain':
657
- // Keep defaults (transparent)
658
- break
659
- }
660
- }
661
-
662
- // Apply custom colors if provided (override variant defaults)
663
- if (customBackgroundColor) {
664
- backgroundColor = customBackgroundColor
665
- }
666
- if (customForegroundColor) {
667
- color = customForegroundColor
668
- }
669
-
670
- // Apply state modifications
671
- let opacity = '1'
672
- let pointerEvents = 'auto'
673
- let transform = undefined // Only set when needed
674
- let boxShadow = 'none'
675
-
676
- if (!isEnabled) {
677
- backgroundColor = this.theme.colors.disabled
678
- borderColor = this.theme.colors.disabled
679
- color = this.theme.colors.disabled
680
- opacity = '0.6'
681
- pointerEvents = 'none'
682
- } else if (isLoading) {
683
- opacity = '0.6'
684
- pointerEvents = 'none'
685
- } else if (state === 'pressed') {
686
- // Darken colors for pressed state
687
- backgroundColor = this.darkenColor(backgroundColor, 0.1)
688
- borderColor = this.darkenColor(borderColor, 0.1)
689
- transform = 'scale(0.95)'
690
- } else if (state === 'focused') {
691
- boxShadow = '0 0 0 3px #007AFF40'
692
- }
693
-
694
- // Build final styles object - only include styles when explicitly needed
695
- const finalStyles: Record<string, any> = {
696
- ...baseStyles, // Size-based styles (only if size provided)
697
- }
698
-
699
- // Only apply variant/color styles if variant is provided
700
- if (variant) {
701
- finalStyles.backgroundColor = backgroundColor
702
- finalStyles.borderColor = borderColor
703
- finalStyles.borderWidth = borderWidth
704
- if (color !== undefined) {
705
- finalStyles.color = color
706
- }
707
- }
708
-
709
- // Apply custom color overrides even without variant
710
- if (customBackgroundColor) {
711
- finalStyles.backgroundColor = customBackgroundColor
712
- }
713
- if (customForegroundColor) {
714
- finalStyles.color = customForegroundColor
715
- }
716
-
717
- // Always apply interaction and state styles
718
- finalStyles.cursor = isEnabled ? 'pointer' : 'not-allowed'
719
- finalStyles.opacity = opacity
720
- finalStyles.pointerEvents = pointerEvents
721
-
722
- // Always apply transform - use 'none' when not needed to properly clear previous values
723
- finalStyles.transform = transform !== undefined ? transform : 'none'
724
- finalStyles.boxShadow = boxShadow
725
-
726
- finalStyles.transition = 'all 0.2s ease'
727
-
728
- return finalStyles
729
- }
730
-
731
- /**
732
- * Handle button press with proper state management
733
- */
734
- async handlePress(): Promise<void> {
735
- if (!this.isEnabled() || this.isLoading()) return
736
-
737
- // Trigger haptic feedback (if available)
738
- this.triggerHapticFeedback()
739
-
740
- this.setState('pressed')
741
-
742
- // Reset state after animation
743
- setTimeout(() => {
744
- if (this.isEnabled()) {
745
- this.setState('normal')
746
- }
747
- }, 150)
748
-
749
- // Execute action if provided
750
- if (this.props.action) {
751
- try {
752
- const result = this.props.action()
753
- // Handle if action returns a Promise
754
- if (result && typeof result.then === 'function') {
755
- await result
756
- }
757
- } catch (error) {
758
- console.error('Button action failed:', error)
759
- }
760
- }
761
- }
762
-
763
- /**
764
- * Trigger haptic feedback (mobile Safari support)
765
- */
766
- private triggerHapticFeedback(): void {
767
- // Check if haptic feedback is disabled
768
- if (this.props.hapticFeedback === false) return
769
-
770
- if (typeof window !== 'undefined' && 'navigator' in window) {
771
- // biome-ignore lint/suspicious/noExplicitAny: Navigator API requires dynamic access
772
- const navigator = window.navigator as any
773
- if (navigator.vibrate) {
774
- navigator.vibrate(10) // Short vibration
775
- }
776
- }
777
- }
778
-
779
- /**
780
- * Helper to darken a color for pressed states
781
- */
782
- private darkenColor(color: string, amount: number): string {
783
- if (color === 'transparent') return color
784
-
785
- // Simple darkening for hex colors
786
- if (color.startsWith('#')) {
787
- const hex = color.slice(1)
788
- const num = parseInt(hex, 16)
789
- const r = Math.max(0, Math.floor((num >> 16) * (1 - amount)))
790
- const g = Math.max(0, Math.floor(((num >> 8) & 0x00ff) * (1 - amount)))
791
- const b = Math.max(0, Math.floor((num & 0x0000ff) * (1 - amount)))
792
- return `#${((r << 16) | (g << 8) | b).toString(16).padStart(6, '0')}`
793
- }
794
-
795
- return color
796
- }
797
-
798
- // ============================================================================
799
- // Concatenation Support (Phase 3.1)
800
- // ============================================================================
801
-
802
- /**
803
- * Concatenate this button with another concatenatable component
804
- */
805
- concat<U extends Concatenatable<any>>(other: U): ConcatenatedComponent<ButtonProps | U> {
806
- const thisSegment = this.toSegment()
807
- const otherSegment = other.toSegment()
808
-
809
- const metadata: ConcatenationMetadata = {
810
- totalSegments: other instanceof ConcatenatedComponent ? other.segments.length + 1 : 2,
811
- accessibilityRole: other instanceof ConcatenatedComponent
812
- ? this.mergeAccessibilityRoles('composite', other.metadata.accessibilityRole)
813
- : this.determineAccessibilityRole(other),
814
- semanticStructure: 'inline' // Buttons are typically inline in concatenation
815
- }
816
-
817
- return new ConcatenatedComponent([thisSegment, otherSegment], metadata)
818
- }
819
-
820
- /**
821
- * Convert this button to a segment for concatenation
822
- */
823
- toSegment(): ComponentSegment {
824
- return {
825
- id: this.id,
826
- component: this,
827
- modifiers: [], // Buttons don't typically have concatenation-specific modifiers
828
- render: () => {
829
- const rendered = this.render()
830
- return Array.isArray(rendered) ? rendered[0] : rendered
831
- }
832
- }
833
- }
834
-
835
- /**
836
- * Check if this component supports concatenation
837
- */
838
- isConcatenatable(): boolean {
839
- return true
840
- }
841
-
842
- /**
843
- * Determine accessibility role for concatenation
844
- */
845
- private determineAccessibilityRole(other: Concatenatable): 'text' | 'group' | 'composite' {
846
- const componentType = (other as any).constructor.name
847
-
848
- switch (componentType) {
849
- case 'EnhancedText':
850
- return 'composite' // Button + Text = composite (interactive content)
851
- case 'EnhancedImage':
852
- return 'composite' // Button + Image = composite (interactive content)
853
- case 'EnhancedButton':
854
- case 'EnhancedLink':
855
- return 'composite' // Button + Interactive = composite
856
- default:
857
- return 'composite'
858
- }
859
- }
860
-
861
- /**
862
- * Merge accessibility roles when combining components
863
- */
864
- private mergeAccessibilityRoles(
865
- _thisRole: 'text' | 'group' | 'composite',
866
- _existingRole: 'text' | 'group' | 'composite'
867
- ): 'text' | 'group' | 'composite' {
868
- // Buttons always contribute as 'composite' (interactive), so result is always composite
869
- return 'composite'
870
- }
871
- }
872
-
873
- /**
874
- * Create enhanced Button component with modifier support
875
- */
876
- export function Button(
877
- title: string | (() => string) | Signal<string>,
878
- action?: () => void | Promise<void>,
879
- props: Omit<ButtonProps, 'title' | 'action'> = {}
880
- ): ModifiableComponent<ButtonProps> & {
881
- modifier: ModifierBuilder<ModifiableComponent<ButtonProps>>
882
- } {
883
- const buttonProps: ButtonProps = { ...props, title, ...(action && { action }) }
884
- const component = new EnhancedButton(buttonProps)
885
- return withModifiers(component)
886
- }
887
-
888
-
889
- /**
890
- * Button variant shortcuts
891
- */
892
- export const ButtonStyles = {
893
- /**
894
- * Filled button (primary)
895
- */
896
- Filled: (
897
- title: string | (() => string) | Signal<string>,
898
- action?: () => void | Promise<void>,
899
- props: Omit<ButtonProps, 'title' | 'action' | 'variant'> = {}
900
- ) => Button(title, action, { ...props, variant: 'filled' }),
901
-
902
- /**
903
- * Outlined button
904
- */
905
- Outlined: (
906
- title: string | (() => string) | Signal<string>,
907
- action?: () => void | Promise<void>,
908
- props: Omit<ButtonProps, 'title' | 'action' | 'variant'> = {}
909
- ) => Button(title, action, { ...props, variant: 'outlined' }),
910
-
911
- /**
912
- * Plain button (text only)
913
- */
914
- Plain: (
915
- title: string | (() => string) | Signal<string>,
916
- action?: () => void | Promise<void>,
917
- props: Omit<ButtonProps, 'title' | 'action' | 'variant'> = {}
918
- ) => Button(title, action, { ...props, variant: 'plain' }),
919
-
920
- /**
921
- * Bordered button
922
- */
923
- Bordered: (
924
- title: string | (() => string) | Signal<string>,
925
- action?: () => void | Promise<void>,
926
- props: Omit<ButtonProps, 'title' | 'action' | 'variant'> = {}
927
- ) => Button(title, action, { ...props, variant: 'bordered' }),
928
-
929
- /**
930
- * Destructive button
931
- */
932
- Destructive: (
933
- title: string | (() => string) | Signal<string>,
934
- action?: () => void | Promise<void>,
935
- props: Omit<ButtonProps, 'title' | 'action' | 'role'> = {}
936
- ) => Button(title, action, { ...props, role: 'destructive' }),
937
-
938
- /**
939
- * Cancel button
940
- */
941
- Cancel: (
942
- title: string | (() => string) | Signal<string>,
943
- action?: () => void | Promise<void>,
944
- props: Omit<ButtonProps, 'title' | 'action' | 'role'> = {}
945
- ) => Button(title, action, { ...props, role: 'cancel' }),
946
- }
947
-
948
- /**
949
- * CSS animations for button loading spinner
950
- */
951
- const buttonAnimations = `
952
- @keyframes spin {
953
- from { transform: rotate(0deg); }
954
- to { transform: rotate(360deg); }
955
- }
956
- `
957
-
958
- // Inject animations into document head
959
- if (typeof document !== 'undefined') {
960
- const style = document.createElement('style')
961
- style.textContent = buttonAnimations
962
- document.head.appendChild(style)
963
- }