@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.
- package/README.md +195 -0
- package/dist/ScrollView-h-6wYMAm.js +515 -0
- package/dist/Spacer-BbteDQ9I.js +5337 -0
- package/dist/binding-CmdpowkI.js +2276 -0
- package/dist/bundles/minimal.d.ts +30 -4
- package/dist/bundles/minimal.d.ts.map +1 -1
- package/dist/common.js +825 -954
- package/dist/compiler/index.js +1386 -10
- package/dist/components/index.js +4166 -101
- package/dist/concatenated-component-DPcl2TEO.js +6779 -0
- package/dist/{runtime/context.js → context--zQFIImS.js} +65 -71
- package/dist/debug.js +0 -1
- package/dist/dom-bridge-Cx-s6Ihx.js +406 -0
- package/dist/effect-CytAc9em.js +66 -0
- package/dist/essential.js +825 -954
- package/dist/index-Nfi2SBQh.js +3268 -0
- package/dist/index.js +825 -954
- package/dist/minimal-prod.js +162 -191
- package/dist/minimal.js +183 -957
- package/dist/modifiers/responsive/index.d.ts +10 -9
- package/dist/modifiers/responsive/index.d.ts.map +1 -1
- package/dist/plugins/index.js +543 -32
- package/dist/reactive/index.js +490 -93
- package/dist/runtime/dom-bridge.js +12 -239
- package/dist/runtime/renderer.js +8 -388
- package/dist/scheduler-7SvC3a21.js +814 -0
- package/dist/validation/index.js +6614 -198
- package/dist/viewport/index.js +2002 -83
- package/package.json +3 -4
- package/dist/assets/Asset.cjs +0 -2
- package/dist/assets/Asset.cjs.map +0 -1
- package/dist/assets/Asset.js +0 -9
- package/dist/assets/Asset.js.map +0 -1
- package/dist/assets/AssetCollection.cjs +0 -2
- package/dist/assets/AssetCollection.cjs.map +0 -1
- package/dist/assets/AssetCollection.js +0 -44
- package/dist/assets/AssetCollection.js.map +0 -1
- package/dist/assets/ColorAsset.cjs +0 -2
- package/dist/assets/ColorAsset.cjs.map +0 -1
- package/dist/assets/ColorAsset.js +0 -114
- package/dist/assets/ColorAsset.js.map +0 -1
- package/dist/assets/FontAsset.cjs +0 -9
- package/dist/assets/FontAsset.cjs.map +0 -1
- package/dist/assets/FontAsset.js +0 -173
- package/dist/assets/FontAsset.js.map +0 -1
- package/dist/assets/ImageAsset.cjs +0 -2
- package/dist/assets/ImageAsset.cjs.map +0 -1
- package/dist/assets/ImageAsset.js +0 -39
- package/dist/assets/ImageAsset.js.map +0 -1
- package/dist/assets/index.cjs +0 -2
- package/dist/assets/index.cjs.map +0 -1
- package/dist/assets/index.js +0 -119
- package/dist/assets/index.js.map +0 -1
- package/dist/common.cjs +0 -2
- package/dist/common.cjs.map +0 -1
- package/dist/common.js.map +0 -1
- package/dist/compiler/advanced-parser.cjs +0 -5
- package/dist/compiler/advanced-parser.cjs.map +0 -1
- package/dist/compiler/advanced-parser.js +0 -440
- package/dist/compiler/advanced-parser.js.map +0 -1
- package/dist/compiler/codegen.cjs +0 -6
- package/dist/compiler/codegen.cjs.map +0 -1
- package/dist/compiler/codegen.js +0 -241
- package/dist/compiler/codegen.js.map +0 -1
- package/dist/compiler/enhanced-codegen.cjs +0 -6
- package/dist/compiler/enhanced-codegen.cjs.map +0 -1
- package/dist/compiler/enhanced-codegen.js +0 -347
- package/dist/compiler/enhanced-codegen.js.map +0 -1
- package/dist/compiler/index.cjs +0 -2
- package/dist/compiler/index.cjs.map +0 -1
- package/dist/compiler/index.js.map +0 -1
- package/dist/compiler/parser.cjs +0 -5
- package/dist/compiler/parser.cjs.map +0 -1
- package/dist/compiler/parser.js +0 -275
- package/dist/compiler/parser.js.map +0 -1
- package/dist/compiler/plugin.cjs +0 -33
- package/dist/compiler/plugin.cjs.map +0 -1
- package/dist/compiler/plugin.js +0 -103
- package/dist/compiler/plugin.js.map +0 -1
- package/dist/components/BasicInput.cjs +0 -2
- package/dist/components/BasicInput.cjs.map +0 -1
- package/dist/components/BasicInput.js +0 -182
- package/dist/components/BasicInput.js.map +0 -1
- package/dist/components/Button.cjs +0 -7
- package/dist/components/Button.cjs.map +0 -1
- package/dist/components/Button.js +0 -408
- package/dist/components/Button.js.map +0 -1
- package/dist/components/Divider.cjs +0 -2
- package/dist/components/Divider.cjs.map +0 -1
- package/dist/components/Divider.js +0 -187
- package/dist/components/Divider.js.map +0 -1
- package/dist/components/EnhancedLink.cjs +0 -2
- package/dist/components/EnhancedLink.cjs.map +0 -1
- package/dist/components/EnhancedLink.js +0 -345
- package/dist/components/EnhancedLink.js.map +0 -1
- package/dist/components/Form.cjs +0 -2
- package/dist/components/Form.cjs.map +0 -1
- package/dist/components/Form.js +0 -244
- package/dist/components/Form.js.map +0 -1
- package/dist/components/Grid.cjs +0 -2
- package/dist/components/Grid.cjs.map +0 -1
- package/dist/components/Grid.js +0 -1045
- package/dist/components/Grid.js.map +0 -1
- package/dist/components/GridResponsive.cjs +0 -2
- package/dist/components/GridResponsive.cjs.map +0 -1
- package/dist/components/GridResponsive.js +0 -382
- package/dist/components/GridResponsive.js.map +0 -1
- package/dist/components/Image.cjs +0 -2
- package/dist/components/Image.cjs.map +0 -1
- package/dist/components/Image.js +0 -212
- package/dist/components/Image.js.map +0 -1
- package/dist/components/List.cjs +0 -2
- package/dist/components/List.cjs.map +0 -1
- package/dist/components/List.js +0 -561
- package/dist/components/List.js.map +0 -1
- package/dist/components/Menu.cjs +0 -2
- package/dist/components/Menu.cjs.map +0 -1
- package/dist/components/Menu.js +0 -443
- package/dist/components/Menu.js.map +0 -1
- package/dist/components/Picker.cjs +0 -2
- package/dist/components/Picker.cjs.map +0 -1
- package/dist/components/Picker.js +0 -478
- package/dist/components/Picker.js.map +0 -1
- package/dist/components/ScrollView.cjs +0 -6
- package/dist/components/ScrollView.cjs.map +0 -1
- package/dist/components/ScrollView.js +0 -363
- package/dist/components/ScrollView.js.map +0 -1
- package/dist/components/Section.cjs +0 -2
- package/dist/components/Section.cjs.map +0 -1
- package/dist/components/Section.js +0 -323
- package/dist/components/Section.js.map +0 -1
- package/dist/components/Show.cjs +0 -2
- package/dist/components/Show.cjs.map +0 -1
- package/dist/components/Show.js +0 -112
- package/dist/components/Show.js.map +0 -1
- package/dist/components/Spacer.cjs +0 -2
- package/dist/components/Spacer.cjs.map +0 -1
- package/dist/components/Spacer.js +0 -53
- package/dist/components/Spacer.js.map +0 -1
- package/dist/components/Text.cjs +0 -2
- package/dist/components/Text.cjs.map +0 -1
- package/dist/components/Text.js +0 -193
- package/dist/components/Text.js.map +0 -1
- package/dist/components/Toggle.cjs +0 -2
- package/dist/components/Toggle.cjs.map +0 -1
- package/dist/components/Toggle.js +0 -477
- package/dist/components/Toggle.js.map +0 -1
- package/dist/components/index.cjs +0 -2
- package/dist/components/index.cjs.map +0 -1
- package/dist/components/index.js.map +0 -1
- package/dist/components/wrapper.cjs +0 -2
- package/dist/components/wrapper.cjs.map +0 -1
- package/dist/components/wrapper.js +0 -484
- package/dist/components/wrapper.js.map +0 -1
- package/dist/concatenation/concatenatable.cjs +0 -2
- package/dist/concatenation/concatenatable.cjs.map +0 -1
- package/dist/concatenation/concatenatable.js +0 -118
- package/dist/concatenation/concatenatable.js.map +0 -1
- package/dist/concatenation/concatenated-component.cjs +0 -2
- package/dist/concatenation/concatenated-component.cjs.map +0 -1
- package/dist/concatenation/concatenated-component.js +0 -276
- package/dist/concatenation/concatenated-component.js.map +0 -1
- package/dist/concatenation/text-optimizer.cjs +0 -2
- package/dist/concatenation/text-optimizer.cjs.map +0 -1
- package/dist/concatenation/text-optimizer.js +0 -236
- package/dist/concatenation/text-optimizer.js.map +0 -1
- package/dist/concatenation/types.cjs +0 -2
- package/dist/concatenation/types.cjs.map +0 -1
- package/dist/concatenation/types.js +0 -13
- package/dist/concatenation/types.js.map +0 -1
- package/dist/constants/frame-utils.cjs +0 -2
- package/dist/constants/frame-utils.cjs.map +0 -1
- package/dist/constants/frame-utils.js +0 -116
- package/dist/constants/frame-utils.js.map +0 -1
- package/dist/constants/layout.cjs +0 -2
- package/dist/constants/layout.cjs.map +0 -1
- package/dist/constants/layout.js +0 -46
- package/dist/constants/layout.js.map +0 -1
- package/dist/css-classes/component-base.cjs +0 -2
- package/dist/css-classes/component-base.cjs.map +0 -1
- package/dist/css-classes/component-base.js +0 -62
- package/dist/css-classes/component-base.js.map +0 -1
- package/dist/css-classes/css-class-manager.cjs +0 -2
- package/dist/css-classes/css-class-manager.cjs.map +0 -1
- package/dist/css-classes/css-class-manager.js +0 -209
- package/dist/css-classes/css-class-manager.js.map +0 -1
- package/dist/css-classes/dom-integration.cjs +0 -2
- package/dist/css-classes/dom-integration.cjs.map +0 -1
- package/dist/css-classes/dom-integration.js +0 -67
- package/dist/css-classes/dom-integration.js.map +0 -1
- package/dist/css-classes/enhanced-renderer.cjs +0 -2
- package/dist/css-classes/enhanced-renderer.cjs.map +0 -1
- package/dist/css-classes/enhanced-renderer.js +0 -73
- package/dist/css-classes/enhanced-renderer.js.map +0 -1
- package/dist/css-classes/utilities.cjs +0 -2
- package/dist/css-classes/utilities.cjs.map +0 -1
- package/dist/css-classes/utilities.js +0 -41
- package/dist/css-classes/utilities.js.map +0 -1
- package/dist/debug.cjs +0 -52
- package/dist/debug.cjs.map +0 -1
- package/dist/debug.js.map +0 -1
- package/dist/essential.cjs +0 -2
- package/dist/essential.cjs.map +0 -1
- package/dist/essential.js.map +0 -1
- package/dist/gradients/css-generator.cjs +0 -2
- package/dist/gradients/css-generator.cjs.map +0 -1
- package/dist/gradients/css-generator.js +0 -100
- package/dist/gradients/css-generator.js.map +0 -1
- package/dist/gradients/examples.cjs +0 -2
- package/dist/gradients/examples.cjs.map +0 -1
- package/dist/gradients/examples.js +0 -555
- package/dist/gradients/examples.js.map +0 -1
- package/dist/gradients/gradient-asset.cjs +0 -2
- package/dist/gradients/gradient-asset.cjs.map +0 -1
- package/dist/gradients/gradient-asset.js +0 -22
- package/dist/gradients/gradient-asset.js.map +0 -1
- package/dist/gradients/index.cjs +0 -2
- package/dist/gradients/index.cjs.map +0 -1
- package/dist/gradients/index.js +0 -78
- package/dist/gradients/index.js.map +0 -1
- package/dist/gradients/performance.cjs +0 -2
- package/dist/gradients/performance.cjs.map +0 -1
- package/dist/gradients/performance.js +0 -237
- package/dist/gradients/performance.js.map +0 -1
- package/dist/gradients/presets.cjs +0 -2
- package/dist/gradients/presets.cjs.map +0 -1
- package/dist/gradients/presets.js +0 -254
- package/dist/gradients/presets.js.map +0 -1
- package/dist/gradients/reactive.cjs +0 -2
- package/dist/gradients/reactive.cjs.map +0 -1
- package/dist/gradients/reactive.js +0 -239
- package/dist/gradients/reactive.js.map +0 -1
- package/dist/gradients/state-gradient-asset.cjs +0 -2
- package/dist/gradients/state-gradient-asset.cjs.map +0 -1
- package/dist/gradients/state-gradient-asset.js +0 -111
- package/dist/gradients/state-gradient-asset.js.map +0 -1
- package/dist/gradients/utils.cjs +0 -2
- package/dist/gradients/utils.cjs.map +0 -1
- package/dist/gradients/utils.js +0 -385
- package/dist/gradients/utils.js.map +0 -1
- package/dist/gradients/validation.cjs +0 -2
- package/dist/gradients/validation.cjs.map +0 -1
- package/dist/gradients/validation.js +0 -209
- package/dist/gradients/validation.js.map +0 -1
- package/dist/index.cjs +0 -2
- package/dist/index.cjs.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/index2.cjs +0 -2
- package/dist/index2.cjs.map +0 -1
- package/dist/index2.js +0 -293
- package/dist/index2.js.map +0 -1
- package/dist/lifecycle/hooks.cjs +0 -2
- package/dist/lifecycle/hooks.cjs.map +0 -1
- package/dist/lifecycle/hooks.js +0 -159
- package/dist/lifecycle/hooks.js.map +0 -1
- package/dist/minimal-prod.cjs +0 -2
- package/dist/minimal-prod.cjs.map +0 -1
- package/dist/minimal-prod.js.map +0 -1
- package/dist/minimal.cjs +0 -2
- package/dist/minimal.cjs.map +0 -1
- package/dist/minimal.js.map +0 -1
- package/dist/modifiers/as-html-validator.cjs +0 -2
- package/dist/modifiers/as-html-validator.cjs.map +0 -1
- package/dist/modifiers/as-html-validator.js +0 -47
- package/dist/modifiers/as-html-validator.js.map +0 -1
- package/dist/modifiers/as-html.cjs +0 -2
- package/dist/modifiers/as-html.cjs.map +0 -1
- package/dist/modifiers/as-html.js +0 -71
- package/dist/modifiers/as-html.js.map +0 -1
- package/dist/modifiers/attributes.cjs +0 -2
- package/dist/modifiers/attributes.cjs.map +0 -1
- package/dist/modifiers/attributes.js +0 -272
- package/dist/modifiers/attributes.js.map +0 -1
- package/dist/modifiers/backdrop.cjs +0 -2
- package/dist/modifiers/backdrop.cjs.map +0 -1
- package/dist/modifiers/backdrop.js +0 -109
- package/dist/modifiers/backdrop.js.map +0 -1
- package/dist/modifiers/background.cjs +0 -2
- package/dist/modifiers/background.cjs.map +0 -1
- package/dist/modifiers/background.js +0 -67
- package/dist/modifiers/background.js.map +0 -1
- package/dist/modifiers/base.cjs +0 -25
- package/dist/modifiers/base.cjs.map +0 -1
- package/dist/modifiers/base.js +0 -745
- package/dist/modifiers/base.js.map +0 -1
- package/dist/modifiers/basic-sanitizer.cjs +0 -2
- package/dist/modifiers/basic-sanitizer.cjs.map +0 -1
- package/dist/modifiers/basic-sanitizer.js +0 -162
- package/dist/modifiers/basic-sanitizer.js.map +0 -1
- package/dist/modifiers/border.cjs +0 -2
- package/dist/modifiers/border.cjs.map +0 -1
- package/dist/modifiers/border.js +0 -160
- package/dist/modifiers/border.js.map +0 -1
- package/dist/modifiers/builder.cjs +0 -2
- package/dist/modifiers/builder.cjs.map +0 -1
- package/dist/modifiers/builder.js +0 -930
- package/dist/modifiers/builder.js.map +0 -1
- package/dist/modifiers/core.cjs +0 -2
- package/dist/modifiers/core.cjs.map +0 -1
- package/dist/modifiers/core.js +0 -398
- package/dist/modifiers/core.js.map +0 -1
- package/dist/modifiers/css.cjs +0 -2
- package/dist/modifiers/css.cjs.map +0 -1
- package/dist/modifiers/css.js +0 -50
- package/dist/modifiers/css.js.map +0 -1
- package/dist/modifiers/effects.cjs +0 -2
- package/dist/modifiers/effects.cjs.map +0 -1
- package/dist/modifiers/effects.js +0 -178
- package/dist/modifiers/effects.js.map +0 -1
- package/dist/modifiers/elements.cjs +0 -2
- package/dist/modifiers/elements.cjs.map +0 -1
- package/dist/modifiers/elements.js +0 -216
- package/dist/modifiers/elements.js.map +0 -1
- package/dist/modifiers/filters.cjs +0 -2
- package/dist/modifiers/filters.cjs.map +0 -1
- package/dist/modifiers/filters.js +0 -223
- package/dist/modifiers/filters.js.map +0 -1
- package/dist/modifiers/flexbox.cjs +0 -2
- package/dist/modifiers/flexbox.cjs.map +0 -1
- package/dist/modifiers/flexbox.js +0 -56
- package/dist/modifiers/flexbox.js.map +0 -1
- package/dist/modifiers/font.cjs +0 -2
- package/dist/modifiers/font.cjs.map +0 -1
- package/dist/modifiers/font.js +0 -60
- package/dist/modifiers/font.js.map +0 -1
- package/dist/modifiers/grid.cjs +0 -2
- package/dist/modifiers/grid.cjs.map +0 -1
- package/dist/modifiers/grid.js +0 -92
- package/dist/modifiers/grid.js.map +0 -1
- package/dist/modifiers/margin.cjs +0 -2
- package/dist/modifiers/margin.cjs.map +0 -1
- package/dist/modifiers/margin.js +0 -65
- package/dist/modifiers/margin.js.map +0 -1
- package/dist/modifiers/padding.cjs +0 -2
- package/dist/modifiers/padding.cjs.map +0 -1
- package/dist/modifiers/padding.js +0 -109
- package/dist/modifiers/padding.js.map +0 -1
- package/dist/modifiers/registry.cjs +0 -2
- package/dist/modifiers/registry.cjs.map +0 -1
- package/dist/modifiers/registry.js +0 -163
- package/dist/modifiers/registry.js.map +0 -1
- package/dist/modifiers/responsive/advanced-utilities.cjs +0 -2
- package/dist/modifiers/responsive/advanced-utilities.cjs.map +0 -1
- package/dist/modifiers/responsive/advanced-utilities.js +0 -291
- package/dist/modifiers/responsive/advanced-utilities.js.map +0 -1
- package/dist/modifiers/responsive/breakpoints.cjs +0 -2
- package/dist/modifiers/responsive/breakpoints.cjs.map +0 -1
- package/dist/modifiers/responsive/breakpoints.js +0 -168
- package/dist/modifiers/responsive/breakpoints.js.map +0 -1
- package/dist/modifiers/responsive/css-generator.cjs +0 -5
- package/dist/modifiers/responsive/css-generator.cjs.map +0 -1
- package/dist/modifiers/responsive/css-generator.js +0 -261
- package/dist/modifiers/responsive/css-generator.js.map +0 -1
- package/dist/modifiers/responsive/dev-tools.cjs +0 -77
- package/dist/modifiers/responsive/dev-tools.cjs.map +0 -1
- package/dist/modifiers/responsive/dev-tools.js +0 -380
- package/dist/modifiers/responsive/dev-tools.js.map +0 -1
- package/dist/modifiers/responsive/layout-patterns.cjs +0 -2
- package/dist/modifiers/responsive/layout-patterns.cjs.map +0 -1
- package/dist/modifiers/responsive/layout-patterns.js +0 -254
- package/dist/modifiers/responsive/layout-patterns.js.map +0 -1
- package/dist/modifiers/responsive/performance.cjs +0 -3
- package/dist/modifiers/responsive/performance.cjs.map +0 -1
- package/dist/modifiers/responsive/performance.js +0 -212
- package/dist/modifiers/responsive/performance.js.map +0 -1
- package/dist/modifiers/responsive/responsive-builder.cjs +0 -2
- package/dist/modifiers/responsive/responsive-builder.cjs.map +0 -1
- package/dist/modifiers/responsive/responsive-builder.js +0 -272
- package/dist/modifiers/responsive/responsive-builder.js.map +0 -1
- package/dist/modifiers/responsive/responsive-modifier.cjs +0 -3
- package/dist/modifiers/responsive/responsive-modifier.cjs.map +0 -1
- package/dist/modifiers/responsive/responsive-modifier.js +0 -204
- package/dist/modifiers/responsive/responsive-modifier.js.map +0 -1
- package/dist/modifiers/responsive/types.cjs +0 -2
- package/dist/modifiers/responsive/types.cjs.map +0 -1
- package/dist/modifiers/responsive/types.js +0 -26
- package/dist/modifiers/responsive/types.js.map +0 -1
- package/dist/modifiers/responsive/utilities.cjs +0 -16
- package/dist/modifiers/responsive/utilities.cjs.map +0 -1
- package/dist/modifiers/responsive/utilities.js +0 -273
- package/dist/modifiers/responsive/utilities.js.map +0 -1
- package/dist/modifiers/scroll.cjs +0 -2
- package/dist/modifiers/scroll.cjs.map +0 -1
- package/dist/modifiers/scroll.js +0 -82
- package/dist/modifiers/scroll.js.map +0 -1
- package/dist/modifiers/shadows.cjs +0 -2
- package/dist/modifiers/shadows.cjs.map +0 -1
- package/dist/modifiers/shadows.js +0 -147
- package/dist/modifiers/shadows.js.map +0 -1
- package/dist/modifiers/size.cjs +0 -2
- package/dist/modifiers/size.cjs.map +0 -1
- package/dist/modifiers/size.js +0 -74
- package/dist/modifiers/size.js.map +0 -1
- package/dist/modifiers/text.cjs +0 -2
- package/dist/modifiers/text.cjs.map +0 -1
- package/dist/modifiers/text.js +0 -166
- package/dist/modifiers/text.js.map +0 -1
- package/dist/modifiers/transformations.cjs +0 -2
- package/dist/modifiers/transformations.cjs.map +0 -1
- package/dist/modifiers/transformations.js +0 -216
- package/dist/modifiers/transformations.js.map +0 -1
- package/dist/modifiers/transitions.cjs +0 -2
- package/dist/modifiers/transitions.cjs.map +0 -1
- package/dist/modifiers/transitions.js +0 -102
- package/dist/modifiers/transitions.js.map +0 -1
- package/dist/modifiers/types.cjs +0 -2
- package/dist/modifiers/types.cjs.map +0 -1
- package/dist/modifiers/types.js +0 -5
- package/dist/modifiers/types.js.map +0 -1
- package/dist/modifiers/typography.cjs +0 -2
- package/dist/modifiers/typography.cjs.map +0 -1
- package/dist/modifiers/typography.js +0 -76
- package/dist/modifiers/typography.js.map +0 -1
- package/dist/modifiers/utility.cjs +0 -2
- package/dist/modifiers/utility.cjs.map +0 -1
- package/dist/modifiers/utility.js +0 -71
- package/dist/modifiers/utility.js.map +0 -1
- package/dist/modifiers/utils.cjs +0 -2
- package/dist/modifiers/utils.cjs.map +0 -1
- package/dist/modifiers/utils.js +0 -250
- package/dist/modifiers/utils.js.map +0 -1
- package/dist/plugins/index.cjs +0 -2
- package/dist/plugins/index.cjs.map +0 -1
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/legacy-adapter.cjs +0 -2
- package/dist/plugins/legacy-adapter.cjs.map +0 -1
- package/dist/plugins/legacy-adapter.js +0 -30
- package/dist/plugins/legacy-adapter.js.map +0 -1
- package/dist/plugins/simplified-component-registry.cjs +0 -2
- package/dist/plugins/simplified-component-registry.cjs.map +0 -1
- package/dist/plugins/simplified-component-registry.js +0 -71
- package/dist/plugins/simplified-component-registry.js.map +0 -1
- package/dist/plugins/simplified-error-handler.cjs +0 -2
- package/dist/plugins/simplified-error-handler.cjs.map +0 -1
- package/dist/plugins/simplified-error-handler.js +0 -154
- package/dist/plugins/simplified-error-handler.js.map +0 -1
- package/dist/plugins/simplified-lazy-loader.cjs +0 -2
- package/dist/plugins/simplified-lazy-loader.cjs.map +0 -1
- package/dist/plugins/simplified-lazy-loader.js +0 -129
- package/dist/plugins/simplified-lazy-loader.js.map +0 -1
- package/dist/plugins/simplified-plugin-manager.cjs +0 -2
- package/dist/plugins/simplified-plugin-manager.cjs.map +0 -1
- package/dist/plugins/simplified-plugin-manager.js +0 -51
- package/dist/plugins/simplified-plugin-manager.js.map +0 -1
- package/dist/plugins/simplified-tachui-instance.cjs +0 -2
- package/dist/plugins/simplified-tachui-instance.cjs.map +0 -1
- package/dist/plugins/simplified-tachui-instance.js +0 -88
- package/dist/plugins/simplified-tachui-instance.js.map +0 -1
- package/dist/plugins/simplified-types.cjs +0 -2
- package/dist/plugins/simplified-types.cjs.map +0 -1
- package/dist/plugins/simplified-types.js +0 -9
- package/dist/plugins/simplified-types.js.map +0 -1
- package/dist/plugins/simplified-utils.cjs +0 -2
- package/dist/plugins/simplified-utils.cjs.map +0 -1
- package/dist/plugins/simplified-utils.js +0 -40
- package/dist/plugins/simplified-utils.js.map +0 -1
- package/dist/reactive/cleanup.cjs +0 -2
- package/dist/reactive/cleanup.cjs.map +0 -1
- package/dist/reactive/cleanup.js +0 -62
- package/dist/reactive/cleanup.js.map +0 -1
- package/dist/reactive/computed.cjs +0 -2
- package/dist/reactive/computed.cjs.map +0 -1
- package/dist/reactive/computed.js +0 -121
- package/dist/reactive/computed.js.map +0 -1
- package/dist/reactive/context.cjs +0 -2
- package/dist/reactive/context.cjs.map +0 -1
- package/dist/reactive/context.js +0 -143
- package/dist/reactive/context.js.map +0 -1
- package/dist/reactive/effect.cjs +0 -2
- package/dist/reactive/effect.cjs.map +0 -1
- package/dist/reactive/effect.js +0 -67
- package/dist/reactive/effect.js.map +0 -1
- package/dist/reactive/enhanced-effect.cjs +0 -2
- package/dist/reactive/enhanced-effect.cjs.map +0 -1
- package/dist/reactive/enhanced-effect.js +0 -153
- package/dist/reactive/enhanced-effect.js.map +0 -1
- package/dist/reactive/enhanced-signal.cjs +0 -2
- package/dist/reactive/enhanced-signal.cjs.map +0 -1
- package/dist/reactive/enhanced-signal.js +0 -117
- package/dist/reactive/enhanced-signal.js.map +0 -1
- package/dist/reactive/equality.cjs +0 -2
- package/dist/reactive/equality.cjs.map +0 -1
- package/dist/reactive/equality.js +0 -66
- package/dist/reactive/equality.js.map +0 -1
- package/dist/reactive/index.cjs +0 -2
- package/dist/reactive/index.cjs.map +0 -1
- package/dist/reactive/index.js.map +0 -1
- package/dist/reactive/migration.cjs +0 -18
- package/dist/reactive/migration.cjs.map +0 -1
- package/dist/reactive/migration.js +0 -164
- package/dist/reactive/migration.js.map +0 -1
- package/dist/reactive/ownership.cjs +0 -2
- package/dist/reactive/ownership.cjs.map +0 -1
- package/dist/reactive/ownership.js +0 -34
- package/dist/reactive/ownership.js.map +0 -1
- package/dist/reactive/scheduler.cjs +0 -2
- package/dist/reactive/scheduler.cjs.map +0 -1
- package/dist/reactive/scheduler.js +0 -111
- package/dist/reactive/scheduler.js.map +0 -1
- package/dist/reactive/signal.cjs +0 -2
- package/dist/reactive/signal.cjs.map +0 -1
- package/dist/reactive/signal.js +0 -96
- package/dist/reactive/signal.js.map +0 -1
- package/dist/reactive/theme.cjs +0 -2
- package/dist/reactive/theme.cjs.map +0 -1
- package/dist/reactive/theme.js +0 -27
- package/dist/reactive/theme.js.map +0 -1
- package/dist/reactive/types.cjs +0 -2
- package/dist/reactive/types.cjs.map +0 -1
- package/dist/reactive/types.js +0 -5
- package/dist/reactive/types.js.map +0 -1
- package/dist/reactive/unified-scheduler.cjs +0 -2
- package/dist/reactive/unified-scheduler.cjs.map +0 -1
- package/dist/reactive/unified-scheduler.js +0 -219
- package/dist/reactive/unified-scheduler.js.map +0 -1
- package/dist/runtime/component-context.cjs +0 -2
- package/dist/runtime/component-context.cjs.map +0 -1
- package/dist/runtime/component-context.js +0 -177
- package/dist/runtime/component-context.js.map +0 -1
- package/dist/runtime/component.cjs +0 -2
- package/dist/runtime/component.cjs.map +0 -1
- package/dist/runtime/component.js +0 -238
- package/dist/runtime/component.js.map +0 -1
- package/dist/runtime/context.cjs +0 -2
- package/dist/runtime/context.cjs.map +0 -1
- package/dist/runtime/context.js.map +0 -1
- package/dist/runtime/dev-tools.cjs +0 -2
- package/dist/runtime/dev-tools.cjs.map +0 -1
- package/dist/runtime/dev-tools.js +0 -391
- package/dist/runtime/dev-tools.js.map +0 -1
- package/dist/runtime/development-warnings.cjs +0 -2
- package/dist/runtime/development-warnings.cjs.map +0 -1
- package/dist/runtime/development-warnings.js +0 -69
- package/dist/runtime/development-warnings.js.map +0 -1
- package/dist/runtime/dom-bridge.cjs +0 -2
- package/dist/runtime/dom-bridge.cjs.map +0 -1
- package/dist/runtime/dom-bridge.js.map +0 -1
- package/dist/runtime/element-override.cjs +0 -2
- package/dist/runtime/element-override.cjs.map +0 -1
- package/dist/runtime/element-override.js +0 -214
- package/dist/runtime/element-override.js.map +0 -1
- package/dist/runtime/error-boundary.cjs +0 -2
- package/dist/runtime/error-boundary.cjs.map +0 -1
- package/dist/runtime/error-boundary.js +0 -559
- package/dist/runtime/error-boundary.js.map +0 -1
- package/dist/runtime/error-recovery.cjs +0 -2
- package/dist/runtime/error-recovery.cjs.map +0 -1
- package/dist/runtime/error-recovery.js +0 -385
- package/dist/runtime/error-recovery.js.map +0 -1
- package/dist/runtime/error-reporting.cjs +0 -3
- package/dist/runtime/error-reporting.cjs.map +0 -1
- package/dist/runtime/error-reporting.js +0 -479
- package/dist/runtime/error-reporting.js.map +0 -1
- package/dist/runtime/error-utils.cjs +0 -3
- package/dist/runtime/error-utils.cjs.map +0 -1
- package/dist/runtime/error-utils.js +0 -352
- package/dist/runtime/error-utils.js.map +0 -1
- package/dist/runtime/lazy-component.cjs +0 -2
- package/dist/runtime/lazy-component.cjs.map +0 -1
- package/dist/runtime/lazy-component.js +0 -129
- package/dist/runtime/lazy-component.js.map +0 -1
- package/dist/runtime/lifecycle.cjs +0 -2
- package/dist/runtime/lifecycle.cjs.map +0 -1
- package/dist/runtime/lifecycle.js +0 -7
- package/dist/runtime/lifecycle.js.map +0 -1
- package/dist/runtime/mounting.cjs +0 -2
- package/dist/runtime/mounting.cjs.map +0 -1
- package/dist/runtime/mounting.js +0 -12
- package/dist/runtime/mounting.js.map +0 -1
- package/dist/runtime/optimization.cjs +0 -2
- package/dist/runtime/optimization.cjs.map +0 -1
- package/dist/runtime/optimization.js +0 -6
- package/dist/runtime/optimization.js.map +0 -1
- package/dist/runtime/performance.cjs +0 -2
- package/dist/runtime/performance.cjs.map +0 -1
- package/dist/runtime/performance.js +0 -399
- package/dist/runtime/performance.js.map +0 -1
- package/dist/runtime/props.cjs +0 -2
- package/dist/runtime/props.cjs.map +0 -1
- package/dist/runtime/props.js +0 -265
- package/dist/runtime/props.js.map +0 -1
- package/dist/runtime/renderer.cjs +0 -2
- package/dist/runtime/renderer.cjs.map +0 -1
- package/dist/runtime/renderer.js.map +0 -1
- package/dist/runtime/semantic-role-manager.cjs +0 -2
- package/dist/runtime/semantic-role-manager.cjs.map +0 -1
- package/dist/runtime/semantic-role-manager.js +0 -82
- package/dist/runtime/semantic-role-manager.js.map +0 -1
- package/dist/state/binding.cjs +0 -2
- package/dist/state/binding.cjs.map +0 -1
- package/dist/state/binding.js +0 -155
- package/dist/state/binding.js.map +0 -1
- package/dist/state/environment.cjs +0 -2
- package/dist/state/environment.cjs.map +0 -1
- package/dist/state/environment.js +0 -115
- package/dist/state/environment.js.map +0 -1
- package/dist/state/index.cjs +0 -2
- package/dist/state/index.cjs.map +0 -1
- package/dist/state/index.js +0 -63
- package/dist/state/index.js.map +0 -1
- package/dist/state/observed-object.cjs +0 -2
- package/dist/state/observed-object.cjs.map +0 -1
- package/dist/state/observed-object.js +0 -163
- package/dist/state/observed-object.js.map +0 -1
- package/dist/state/state-manager.cjs +0 -2
- package/dist/state/state-manager.cjs.map +0 -1
- package/dist/state/state-manager.js +0 -233
- package/dist/state/state-manager.js.map +0 -1
- package/dist/state/state.cjs +0 -2
- package/dist/state/state.cjs.map +0 -1
- package/dist/state/state.js +0 -159
- package/dist/state/state.js.map +0 -1
- package/dist/sui-compat.cjs +0 -2
- package/dist/sui-compat.cjs.map +0 -1
- package/dist/sui-compat.js +0 -88
- package/dist/sui-compat.js.map +0 -1
- package/dist/validation/advanced-debugging.cjs +0 -44
- package/dist/validation/advanced-debugging.cjs.map +0 -1
- package/dist/validation/advanced-debugging.js +0 -455
- package/dist/validation/advanced-debugging.js.map +0 -1
- package/dist/validation/build-time/detection.cjs +0 -2
- package/dist/validation/build-time/detection.cjs.map +0 -1
- package/dist/validation/build-time/detection.js +0 -199
- package/dist/validation/build-time/detection.js.map +0 -1
- package/dist/validation/build-time/index.cjs +0 -2
- package/dist/validation/build-time/index.cjs.map +0 -1
- package/dist/validation/build-time/index.js +0 -122
- package/dist/validation/build-time/index.js.map +0 -1
- package/dist/validation/build-time/plugins.cjs +0 -3
- package/dist/validation/build-time/plugins.cjs.map +0 -1
- package/dist/validation/build-time/plugins.js +0 -282
- package/dist/validation/build-time/plugins.js.map +0 -1
- package/dist/validation/build-time/rules.cjs +0 -2
- package/dist/validation/build-time/rules.cjs.map +0 -1
- package/dist/validation/build-time/rules.js +0 -576
- package/dist/validation/build-time/rules.js.map +0 -1
- package/dist/validation/build-time/transformer.cjs +0 -3
- package/dist/validation/build-time/transformer.cjs.map +0 -1
- package/dist/validation/build-time/transformer.js +0 -177
- package/dist/validation/build-time/transformer.js.map +0 -1
- package/dist/validation/comprehensive.cjs +0 -9
- package/dist/validation/comprehensive.cjs.map +0 -1
- package/dist/validation/comprehensive.js +0 -916
- package/dist/validation/comprehensive.js.map +0 -1
- package/dist/validation/debug-tools.cjs +0 -16
- package/dist/validation/debug-tools.cjs.map +0 -1
- package/dist/validation/debug-tools.js +0 -405
- package/dist/validation/debug-tools.js.map +0 -1
- package/dist/validation/developer-experience.cjs +0 -17
- package/dist/validation/developer-experience.cjs.map +0 -1
- package/dist/validation/developer-experience.js +0 -433
- package/dist/validation/developer-experience.js.map +0 -1
- package/dist/validation/documentation-integration.cjs +0 -7
- package/dist/validation/documentation-integration.cjs.map +0 -1
- package/dist/validation/documentation-integration.js +0 -440
- package/dist/validation/documentation-integration.js.map +0 -1
- package/dist/validation/enhanced-runtime.cjs +0 -6
- package/dist/validation/enhanced-runtime.cjs.map +0 -1
- package/dist/validation/enhanced-runtime.js +0 -465
- package/dist/validation/enhanced-runtime.js.map +0 -1
- package/dist/validation/error-reporting.cjs +0 -32
- package/dist/validation/error-reporting.cjs.map +0 -1
- package/dist/validation/error-reporting.js +0 -370
- package/dist/validation/error-reporting.js.map +0 -1
- package/dist/validation/ide-integration.cjs +0 -85
- package/dist/validation/ide-integration.cjs.map +0 -1
- package/dist/validation/ide-integration.js +0 -557
- package/dist/validation/ide-integration.js.map +0 -1
- package/dist/validation/index.cjs +0 -6
- package/dist/validation/index.cjs.map +0 -1
- package/dist/validation/index.js.map +0 -1
- package/dist/validation/lifecycle-validation.cjs +0 -2
- package/dist/validation/lifecycle-validation.cjs.map +0 -1
- package/dist/validation/lifecycle-validation.js +0 -314
- package/dist/validation/lifecycle-validation.js.map +0 -1
- package/dist/validation/performance-optimizer.cjs +0 -2
- package/dist/validation/performance-optimizer.cjs.map +0 -1
- package/dist/validation/performance-optimizer.js +0 -338
- package/dist/validation/performance-optimizer.js.map +0 -1
- package/dist/validation/plugin-registration.cjs +0 -2
- package/dist/validation/plugin-registration.cjs.map +0 -1
- package/dist/validation/plugin-registration.js +0 -126
- package/dist/validation/plugin-registration.js.map +0 -1
- package/dist/validation/production-bypass.cjs +0 -2
- package/dist/validation/production-bypass.cjs.map +0 -1
- package/dist/validation/production-bypass.js +0 -218
- package/dist/validation/production-bypass.js.map +0 -1
- package/dist/validation/simple.cjs +0 -9
- package/dist/validation/simple.cjs.map +0 -1
- package/dist/validation/simple.js +0 -146
- package/dist/validation/simple.js.map +0 -1
- package/dist/viewport/adapters/web-adapter.cjs +0 -70
- package/dist/viewport/adapters/web-adapter.cjs.map +0 -1
- package/dist/viewport/adapters/web-adapter.js +0 -823
- package/dist/viewport/adapters/web-adapter.js.map +0 -1
- package/dist/viewport/components.cjs +0 -2
- package/dist/viewport/components.cjs.map +0 -1
- package/dist/viewport/components.js +0 -298
- package/dist/viewport/components.js.map +0 -1
- package/dist/viewport/environment.cjs +0 -2
- package/dist/viewport/environment.cjs.map +0 -1
- package/dist/viewport/environment.js +0 -86
- package/dist/viewport/environment.js.map +0 -1
- package/dist/viewport/index.cjs +0 -2
- package/dist/viewport/index.cjs.map +0 -1
- package/dist/viewport/index.js.map +0 -1
- package/dist/viewport/platform-detection.cjs +0 -2
- package/dist/viewport/platform-detection.cjs.map +0 -1
- package/dist/viewport/platform-detection.js +0 -205
- package/dist/viewport/platform-detection.js.map +0 -1
- package/dist/viewport/types.cjs +0 -2
- package/dist/viewport/types.cjs.map +0 -1
- package/dist/viewport/types.js +0 -13
- package/dist/viewport/types.js.map +0 -1
- package/dist/viewport/viewport-manager.cjs +0 -2
- package/dist/viewport/viewport-manager.cjs.map +0 -1
- package/dist/viewport/viewport-manager.js +0 -524
- package/dist/viewport/viewport-manager.js.map +0 -1
- package/src/assets/Asset.ts +0 -11
- package/src/assets/AssetCollection.ts +0 -99
- package/src/assets/ColorAsset.ts +0 -210
- package/src/assets/FontAsset.ts +0 -380
- package/src/assets/ImageAsset.ts +0 -91
- package/src/assets/README.md +0 -190
- package/src/assets/index.ts +0 -175
- package/src/assets/test-assets.ts +0 -69
- package/src/assets/test-integration.ts +0 -46
- package/src/assets/test-simple.ts +0 -28
- package/src/assets/types.ts +0 -79
- package/src/bundles/common.ts +0 -30
- package/src/bundles/complete.ts +0 -29
- package/src/bundles/essential.ts +0 -26
- package/src/bundles/minimal.ts +0 -26
- package/src/bundles/production-minimal.ts +0 -67
- package/src/compiler/advanced-parser.ts +0 -871
- package/src/compiler/codegen.ts +0 -450
- package/src/compiler/enhanced-codegen.ts +0 -729
- package/src/compiler/index.ts +0 -25
- package/src/compiler/parser.ts +0 -461
- package/src/compiler/plugin.ts +0 -181
- package/src/compiler/types.ts +0 -177
- package/src/components/BasicInput.ts +0 -352
- package/src/components/Button.ts +0 -963
- package/src/components/Divider.ts +0 -341
- package/src/components/EnhancedLink.ts +0 -676
- package/src/components/Form.ts +0 -414
- package/src/components/Grid.ts +0 -2507
- package/src/components/GridResponsive.ts +0 -637
- package/src/components/Image.ts +0 -426
- package/src/components/List.ts +0 -1084
- package/src/components/Menu.ts +0 -807
- package/src/components/Picker.ts +0 -678
- package/src/components/ScrollView.ts +0 -725
- package/src/components/Section.ts +0 -472
- package/src/components/Show.ts +0 -205
- package/src/components/Spacer.ts +0 -93
- package/src/components/Text.ts +0 -447
- package/src/components/Toggle.ts +0 -700
- package/src/components/index.ts +0 -231
- package/src/components/wrapper.ts +0 -828
- package/src/concatenation/concatenatable.ts +0 -211
- package/src/concatenation/concatenated-component.ts +0 -471
- package/src/concatenation/index.ts +0 -41
- package/src/concatenation/styles.css +0 -120
- package/src/concatenation/text-optimizer.ts +0 -440
- package/src/concatenation/types.ts +0 -116
- package/src/constants/README.md +0 -339
- package/src/constants/__tests__/frame-utils.test.ts +0 -276
- package/src/constants/__tests__/layout.test.ts +0 -215
- package/src/constants/frame-utils.ts +0 -174
- package/src/constants/index.ts +0 -8
- package/src/constants/layout.ts +0 -120
- package/src/css-classes/component-base.ts +0 -117
- package/src/css-classes/css-class-manager.ts +0 -372
- package/src/css-classes/dom-integration.ts +0 -162
- package/src/css-classes/enhanced-renderer.ts +0 -166
- package/src/css-classes/index.ts +0 -45
- package/src/css-classes/types.ts +0 -73
- package/src/css-classes/utilities.ts +0 -175
- package/src/debug/index.ts +0 -267
- package/src/developer-experience/enhanced-errors.ts +0 -556
- package/src/developer-experience/enhanced-types.ts +0 -427
- package/src/developer-experience/index.ts +0 -220
- package/src/globals.d.ts +0 -43
- package/src/gradients/__tests__/angular-gradient.test.ts +0 -111
- package/src/gradients/__tests__/background-modifier.test.ts +0 -81
- package/src/gradients/__tests__/comprehensive-gradients.test.ts +0 -296
- package/src/gradients/__tests__/gradient-asset.test.ts +0 -144
- package/src/gradients/__tests__/linear-gradient.test.ts +0 -92
- package/src/gradients/__tests__/phase4-features.test.ts +0 -386
- package/src/gradients/__tests__/radial-gradient.test.ts +0 -110
- package/src/gradients/__tests__/repeating-gradients.test.ts +0 -125
- package/src/gradients/__tests__/state-background-modifier.test.ts +0 -340
- package/src/gradients/__tests__/state-gradient-asset.test.ts +0 -262
- package/src/gradients/__tests__/state-gradient-integration.test.ts +0 -277
- package/src/gradients/css-generator.ts +0 -158
- package/src/gradients/examples.ts +0 -632
- package/src/gradients/gradient-asset.ts +0 -30
- package/src/gradients/index.ts +0 -85
- package/src/gradients/performance.ts +0 -521
- package/src/gradients/presets.ts +0 -422
- package/src/gradients/reactive.ts +0 -470
- package/src/gradients/state-gradient-asset.ts +0 -179
- package/src/gradients/types.ts +0 -148
- package/src/gradients/utils.ts +0 -579
- package/src/gradients/validation.ts +0 -489
- package/src/index.ts +0 -168
- package/src/lifecycle/hooks.ts +0 -332
- package/src/modifiers/__tests__/as-html-integration.test.ts +0 -204
- package/src/modifiers/__tests__/as-html.test.ts +0 -437
- package/src/modifiers/__tests__/basic-sanitizer-security.test.ts +0 -294
- package/src/modifiers/__tests__/border.test.ts +0 -371
- package/src/modifiers/__tests__/margin-string-support.test.ts +0 -41
- package/src/modifiers/__tests__/padding-string-support.test.ts +0 -41
- package/src/modifiers/as-html-validator.ts +0 -68
- package/src/modifiers/as-html.ts +0 -216
- package/src/modifiers/attributes.ts +0 -574
- package/src/modifiers/backdrop.ts +0 -290
- package/src/modifiers/background.ts +0 -165
- package/src/modifiers/base.ts +0 -1815
- package/src/modifiers/basic-sanitizer.ts +0 -227
- package/src/modifiers/border.ts +0 -574
- package/src/modifiers/builder.ts +0 -1747
- package/src/modifiers/core.ts +0 -521
- package/src/modifiers/css.ts +0 -148
- package/src/modifiers/effects.ts +0 -412
- package/src/modifiers/elements.ts +0 -541
- package/src/modifiers/filters.ts +0 -501
- package/src/modifiers/flexbox.ts +0 -180
- package/src/modifiers/font.ts +0 -149
- package/src/modifiers/grid.ts +0 -238
- package/src/modifiers/index.ts +0 -481
- package/src/modifiers/margin.ts +0 -218
- package/src/modifiers/padding.ts +0 -318
- package/src/modifiers/registry.ts +0 -444
- package/src/modifiers/responsive/__tests__/advanced-media-queries.test.ts +0 -392
- package/src/modifiers/responsive/__tests__/advanced-utilities.test.ts +0 -368
- package/src/modifiers/responsive/__tests__/comprehensive-browser-tests.test.ts +0 -556
- package/src/modifiers/responsive/__tests__/layout-patterns.test.ts +0 -558
- package/src/modifiers/responsive/advanced-utilities.ts +0 -562
- package/src/modifiers/responsive/breakpoints.ts +0 -330
- package/src/modifiers/responsive/css-generator.ts +0 -432
- package/src/modifiers/responsive/dev-tools.ts +0 -650
- package/src/modifiers/responsive/index.ts +0 -119
- package/src/modifiers/responsive/layout-patterns.ts +0 -592
- package/src/modifiers/responsive/performance.ts +0 -385
- package/src/modifiers/responsive/responsive-builder.ts +0 -620
- package/src/modifiers/responsive/responsive-modifier.ts +0 -410
- package/src/modifiers/responsive/types.ts +0 -226
- package/src/modifiers/responsive/utilities.ts +0 -478
- package/src/modifiers/scroll.ts +0 -297
- package/src/modifiers/shadows.ts +0 -321
- package/src/modifiers/size.ts +0 -208
- package/src/modifiers/text.ts +0 -416
- package/src/modifiers/transformations.ts +0 -640
- package/src/modifiers/transitions.ts +0 -218
- package/src/modifiers/types.ts +0 -889
- package/src/modifiers/typography.ts +0 -341
- package/src/modifiers/utility.ts +0 -209
- package/src/modifiers/utils.ts +0 -413
- package/src/plugins/__tests__/simplified-plugin-system.test.ts +0 -190
- package/src/plugins/component-loader-registry.ts +0 -371
- package/src/plugins/index.ts +0 -61
- package/src/plugins/legacy-adapter.ts +0 -84
- package/src/plugins/simplified-component-registry.ts +0 -130
- package/src/plugins/simplified-error-handler.ts +0 -372
- package/src/plugins/simplified-index.ts +0 -61
- package/src/plugins/simplified-lazy-loader.ts +0 -242
- package/src/plugins/simplified-plugin-manager.ts +0 -93
- package/src/plugins/simplified-tachui-instance.ts +0 -142
- package/src/plugins/simplified-types.ts +0 -79
- package/src/plugins/simplified-utils.ts +0 -118
- package/src/reactive/cleanup.ts +0 -241
- package/src/reactive/computed.ts +0 -281
- package/src/reactive/context.ts +0 -287
- package/src/reactive/effect.ts +0 -194
- package/src/reactive/enhanced-effect.ts +0 -318
- package/src/reactive/enhanced-signal.ts +0 -227
- package/src/reactive/equality.ts +0 -188
- package/src/reactive/globals.d.ts +0 -5
- package/src/reactive/index.ts +0 -150
- package/src/reactive/migration.ts +0 -335
- package/src/reactive/ownership.ts +0 -182
- package/src/reactive/scheduler.ts +0 -300
- package/src/reactive/signal.ts +0 -201
- package/src/reactive/theme.ts +0 -49
- package/src/reactive/types.ts +0 -103
- package/src/reactive/unified-scheduler.ts +0 -357
- package/src/runtime/component-context.ts +0 -343
- package/src/runtime/component.ts +0 -499
- package/src/runtime/context.ts +0 -527
- package/src/runtime/dev-tools.ts +0 -752
- package/src/runtime/development-warnings.ts +0 -114
- package/src/runtime/dom-bridge.ts +0 -570
- package/src/runtime/element-override.ts +0 -282
- package/src/runtime/error-boundary.ts +0 -955
- package/src/runtime/error-recovery.ts +0 -638
- package/src/runtime/error-reporting.ts +0 -808
- package/src/runtime/error-utils.ts +0 -698
- package/src/runtime/index.ts +0 -202
- package/src/runtime/lazy-component.ts +0 -268
- package/src/runtime/lifecycle.ts +0 -10
- package/src/runtime/mounting.ts +0 -17
- package/src/runtime/optimization.ts +0 -13
- package/src/runtime/performance.ts +0 -693
- package/src/runtime/props.ts +0 -434
- package/src/runtime/refs.ts +0 -13
- package/src/runtime/renderer.ts +0 -674
- package/src/runtime/semantic-role-manager.ts +0 -140
- package/src/runtime/types.ts +0 -282
- package/src/state/binding.ts +0 -381
- package/src/state/environment-object.ts +0 -444
- package/src/state/environment.ts +0 -351
- package/src/state/index.ts +0 -179
- package/src/state/observed-object.ts +0 -405
- package/src/state/state-manager.ts +0 -366
- package/src/state/state.ts +0 -339
- package/src/state/types.ts +0 -192
- package/src/sui-compat.ts +0 -163
- package/src/validation/__tests__/phase-1d-integration.test.ts +0 -558
- package/src/validation/advanced-debugging.ts +0 -860
- package/src/validation/build-time/detection.ts +0 -373
- package/src/validation/build-time/index.ts +0 -222
- package/src/validation/build-time/plugins.ts +0 -515
- package/src/validation/build-time/rules.ts +0 -624
- package/src/validation/build-time/transformer.ts +0 -372
- package/src/validation/build-time/types.ts +0 -232
- package/src/validation/comprehensive.ts +0 -1272
- package/src/validation/debug-tools.ts +0 -724
- package/src/validation/developer-experience.ts +0 -712
- package/src/validation/documentation-integration.ts +0 -835
- package/src/validation/enhanced-runtime.ts +0 -765
- package/src/validation/error-reporting.ts +0 -587
- package/src/validation/ide-integration.ts +0 -845
- package/src/validation/index.ts +0 -353
- package/src/validation/lifecycle-validation.ts +0 -636
- package/src/validation/performance-optimizer.ts +0 -599
- package/src/validation/plugin-registration.ts +0 -249
- package/src/validation/production-bypass.ts +0 -466
- package/src/validation/simple.ts +0 -465
- package/src/viewport/adapters/web-adapter.ts +0 -1385
- package/src/viewport/components.ts +0 -505
- package/src/viewport/environment.ts +0 -173
- package/src/viewport/index.ts +0 -290
- package/src/viewport/platform-detection.ts +0 -431
- package/src/viewport/types.ts +0 -371
- package/src/viewport/viewport-manager.ts +0 -979
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
import "../reactive/cleanup.js";
|
|
2
|
-
import "../reactive/unified-scheduler.js";
|
|
3
|
-
import { createEffect as a } from "../reactive/effect.js";
|
|
4
|
-
import { isSignal as r } from "../reactive/signal.js";
|
|
5
|
-
import "../reactive/scheduler.js";
|
|
6
|
-
import "../reactive/theme.js";
|
|
7
|
-
import "../runtime/component.js";
|
|
8
|
-
import "../runtime/context.js";
|
|
9
|
-
import "../runtime/dev-tools.js";
|
|
10
|
-
import "../runtime/dom-bridge.js";
|
|
11
|
-
import "../runtime/error-boundary.js";
|
|
12
|
-
import "../runtime/error-reporting.js";
|
|
13
|
-
import "../runtime/performance.js";
|
|
14
|
-
import { h as m } from "../runtime/renderer.js";
|
|
15
|
-
import "../runtime/element-override.js";
|
|
16
|
-
import "../runtime/semantic-role-manager.js";
|
|
17
|
-
import "../runtime/development-warnings.js";
|
|
18
|
-
import { withModifiers as b } from "./wrapper.js";
|
|
19
|
-
import "../css-classes/css-class-manager.js";
|
|
20
|
-
import { ComponentWithCSSClasses as f } from "../css-classes/component-base.js";
|
|
21
|
-
var g = Object.defineProperty, y = (e, t, s) => t in e ? g(e, t, { enumerable: !0, configurable: !0, writable: !0, value: s }) : e[t] = s, i = (e, t, s) => y(e, typeof t != "symbol" ? t + "" : t, s);
|
|
22
|
-
const n = {
|
|
23
|
-
colors: {
|
|
24
|
-
background: "#FFFFFF",
|
|
25
|
-
border: "#D1D1D6",
|
|
26
|
-
text: "#000000",
|
|
27
|
-
placeholder: "#8E8E93",
|
|
28
|
-
focusBorder: "#007AFF",
|
|
29
|
-
disabledBackground: "#F2F2F7",
|
|
30
|
-
disabledText: "#8E8E93"
|
|
31
|
-
},
|
|
32
|
-
spacing: {
|
|
33
|
-
padding: 8,
|
|
34
|
-
borderWidth: 1
|
|
35
|
-
},
|
|
36
|
-
borderRadius: 4,
|
|
37
|
-
fontSize: 16,
|
|
38
|
-
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif',
|
|
39
|
-
transition: "border-color 0.2s ease, background-color 0.2s ease"
|
|
40
|
-
};
|
|
41
|
-
class T extends f {
|
|
42
|
-
constructor(t) {
|
|
43
|
-
super(), i(this, "type", "component"), i(this, "id"), i(this, "props"), i(this, "theme", n), i(this, "inputElement", null), i(this, "handleInput", (s) => {
|
|
44
|
-
const o = s.target.value;
|
|
45
|
-
this.setText(o), this.props.onChange && this.props.onChange(o);
|
|
46
|
-
}), i(this, "handleKeyDown", (s) => {
|
|
47
|
-
s.key === "Enter" && this.props.onSubmit && (s.preventDefault(), this.props.onSubmit(this.getText()));
|
|
48
|
-
}), i(this, "handleFocus", () => {
|
|
49
|
-
this.props.onFocus && this.props.onFocus(), this.inputElement && (this.inputElement.style.borderColor = this.theme.colors.focusBorder);
|
|
50
|
-
}), i(this, "handleBlur", () => {
|
|
51
|
-
this.props.onBlur && this.props.onBlur(), this.inputElement && (this.inputElement.style.borderColor = this.theme.colors.border);
|
|
52
|
-
}), this.props = t, this.id = `basicinput-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
53
|
-
}
|
|
54
|
-
resolveValue(t) {
|
|
55
|
-
return r(t) ? t() : t;
|
|
56
|
-
}
|
|
57
|
-
getText() {
|
|
58
|
-
return this.resolveValue(this.props.text);
|
|
59
|
-
}
|
|
60
|
-
setText(t) {
|
|
61
|
-
this.props.setText && this.props.setText(t);
|
|
62
|
-
}
|
|
63
|
-
getPlaceholder() {
|
|
64
|
-
return this.resolveValue(this.props.placeholder || "");
|
|
65
|
-
}
|
|
66
|
-
getInputType() {
|
|
67
|
-
return this.resolveValue(this.props.inputType || "text");
|
|
68
|
-
}
|
|
69
|
-
isDisabled() {
|
|
70
|
-
return this.resolveValue(this.props.disabled || !1);
|
|
71
|
-
}
|
|
72
|
-
isReadonly() {
|
|
73
|
-
return this.resolveValue(this.props.readonly || !1);
|
|
74
|
-
}
|
|
75
|
-
getInputStyles() {
|
|
76
|
-
const t = this.isDisabled();
|
|
77
|
-
return {
|
|
78
|
-
width: "100%",
|
|
79
|
-
padding: `${this.theme.spacing.padding}px`,
|
|
80
|
-
border: `${this.theme.spacing.borderWidth}px solid ${this.theme.colors.border}`,
|
|
81
|
-
borderRadius: `${this.theme.borderRadius}px`,
|
|
82
|
-
backgroundColor: t ? this.theme.colors.disabledBackground : this.theme.colors.background,
|
|
83
|
-
color: t ? this.theme.colors.disabledText : this.theme.colors.text,
|
|
84
|
-
fontSize: `${this.theme.fontSize}px`,
|
|
85
|
-
fontFamily: this.theme.fontFamily,
|
|
86
|
-
outline: "none",
|
|
87
|
-
transition: this.theme.transition,
|
|
88
|
-
cursor: t ? "not-allowed" : "text"
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
render() {
|
|
92
|
-
const t = this.getText(), s = this.getPlaceholder(), p = this.getInputType(), o = this.isDisabled(), d = this.isReadonly(), u = ["tachui-basic-input"], c = this.createClassString(this.props, u), l = m("input", {
|
|
93
|
-
id: this.id,
|
|
94
|
-
className: c,
|
|
95
|
-
type: p,
|
|
96
|
-
value: t,
|
|
97
|
-
placeholder: s,
|
|
98
|
-
disabled: o,
|
|
99
|
-
readonly: d,
|
|
100
|
-
"aria-label": this.props.accessibilityLabel,
|
|
101
|
-
"aria-describedby": this.props.accessibilityHint ? `${this.id}-hint` : void 0,
|
|
102
|
-
style: this.getInputStyles(),
|
|
103
|
-
oninput: this.handleInput,
|
|
104
|
-
onkeydown: this.handleKeyDown,
|
|
105
|
-
onfocus: this.handleFocus,
|
|
106
|
-
onblur: this.handleBlur
|
|
107
|
-
});
|
|
108
|
-
return this.inputElement = l.element, a(() => {
|
|
109
|
-
if (this.inputElement && r(this.props.text)) {
|
|
110
|
-
const h = this.getText();
|
|
111
|
-
this.inputElement.value !== h && (this.inputElement.value = h);
|
|
112
|
-
}
|
|
113
|
-
}), a(() => {
|
|
114
|
-
this.inputElement && (r(this.props.placeholder) || r(this.props.inputType) || r(this.props.disabled)) && (r(this.props.placeholder) && (this.inputElement.placeholder = this.getPlaceholder()), r(this.props.inputType) && (this.inputElement.type = this.getInputType()), r(this.props.disabled) && (this.inputElement.disabled = this.isDisabled()));
|
|
115
|
-
}), [l];
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
function N(e) {
|
|
119
|
-
return b(new T(e));
|
|
120
|
-
}
|
|
121
|
-
const U = {
|
|
122
|
-
/**
|
|
123
|
-
* Create a search input
|
|
124
|
-
*/
|
|
125
|
-
search(e, t, s) {
|
|
126
|
-
return {
|
|
127
|
-
text: e,
|
|
128
|
-
setText: t,
|
|
129
|
-
inputType: "search",
|
|
130
|
-
placeholder: "Search...",
|
|
131
|
-
onSubmit: s
|
|
132
|
-
};
|
|
133
|
-
},
|
|
134
|
-
/**
|
|
135
|
-
* Create an email input
|
|
136
|
-
*/
|
|
137
|
-
email(e, t) {
|
|
138
|
-
return {
|
|
139
|
-
text: e,
|
|
140
|
-
setText: t,
|
|
141
|
-
inputType: "email",
|
|
142
|
-
placeholder: "Enter email address"
|
|
143
|
-
};
|
|
144
|
-
},
|
|
145
|
-
/**
|
|
146
|
-
* Create a password input
|
|
147
|
-
*/
|
|
148
|
-
password(e, t) {
|
|
149
|
-
return {
|
|
150
|
-
text: e,
|
|
151
|
-
setText: t,
|
|
152
|
-
inputType: "password",
|
|
153
|
-
placeholder: "Enter password"
|
|
154
|
-
};
|
|
155
|
-
},
|
|
156
|
-
/**
|
|
157
|
-
* Create a phone number input
|
|
158
|
-
*/
|
|
159
|
-
phone(e, t) {
|
|
160
|
-
return {
|
|
161
|
-
text: e,
|
|
162
|
-
setText: t,
|
|
163
|
-
inputType: "tel",
|
|
164
|
-
placeholder: "Enter phone number"
|
|
165
|
-
};
|
|
166
|
-
}
|
|
167
|
-
}, A = {
|
|
168
|
-
theme: n,
|
|
169
|
-
/**
|
|
170
|
-
* Create a custom theme
|
|
171
|
-
*/
|
|
172
|
-
createTheme(e) {
|
|
173
|
-
return { ...n, ...e };
|
|
174
|
-
}
|
|
175
|
-
};
|
|
176
|
-
export {
|
|
177
|
-
N as BasicInput,
|
|
178
|
-
T as BasicInputComponent,
|
|
179
|
-
A as BasicInputStyles,
|
|
180
|
-
U as BasicInputUtils
|
|
181
|
-
};
|
|
182
|
-
//# sourceMappingURL=BasicInput.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BasicInput.js","sources":["../../src/components/BasicInput.ts"],"sourcesContent":["/**\n * BasicInput Component (Phase 1)\n *\n * Lightweight text input component for Core-only applications.\n * Provides SwiftUI-style reactive binding without the complexity\n * of the Forms plugin validation and formatting system.\n */\n\nimport type { ModifiableComponent, ModifierBuilder } from '../modifiers/types'\nimport { createEffect, isSignal } from '../reactive'\nimport type { Signal } from '../reactive/types'\nimport { h } from '../runtime'\nimport type { ComponentInstance, ComponentProps, DOMNode } from '../runtime/types'\nimport { withModifiers } from './wrapper'\nimport {\n ComponentWithCSSClasses,\n type CSSClassesProps\n} from '../css-classes'\n\n/**\n * BasicInput supported input types\n */\nexport type BasicInputType = 'text' | 'email' | 'password' | 'search' | 'tel' | 'url'\n\n/**\n * BasicInput component properties with CSS classes support\n */\nexport interface BasicInputProps extends ComponentProps, CSSClassesProps {\n // Core reactive binding\n text: Signal<string>\n setText?: (value: string) => void\n\n // Input configuration\n placeholder?: string | Signal<string>\n inputType?: BasicInputType | Signal<BasicInputType>\n disabled?: boolean | Signal<boolean>\n readonly?: boolean | Signal<boolean>\n\n // Behavior\n onChange?: (text: string) => void\n onSubmit?: (text: string) => void\n onFocus?: () => void\n onBlur?: () => void\n\n // Accessibility\n accessibilityLabel?: string\n accessibilityHint?: string\n}\n\n/**\n * BasicInput theme configuration\n */\nexport interface BasicInputTheme {\n colors: {\n background: string\n border: string\n text: string\n placeholder: string\n focusBorder: string\n disabledBackground: string\n disabledText: string\n }\n spacing: {\n padding: number\n borderWidth: number\n }\n borderRadius: number\n fontSize: number\n fontFamily: string\n transition: string\n}\n\n/**\n * Default BasicInput theme\n */\nconst defaultBasicInputTheme: BasicInputTheme = {\n colors: {\n background: '#FFFFFF',\n border: '#D1D1D6',\n text: '#000000',\n placeholder: '#8E8E93',\n focusBorder: '#007AFF',\n disabledBackground: '#F2F2F7',\n disabledText: '#8E8E93',\n },\n spacing: {\n padding: 8,\n borderWidth: 1,\n },\n borderRadius: 4,\n fontSize: 16,\n fontFamily: '-apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n transition: 'border-color 0.2s ease, background-color 0.2s ease',\n}\n\n/**\n * BasicInput component implementation with CSS classes support\n */\nexport class BasicInputComponent extends ComponentWithCSSClasses implements ComponentInstance<BasicInputProps> {\n public readonly type = 'component' as const\n public readonly id: string\n public readonly props: BasicInputProps\n private theme: BasicInputTheme = defaultBasicInputTheme\n private inputElement: HTMLInputElement | null = null\n\n constructor(props: BasicInputProps) {\n super()\n this.props = props\n this.id = `basicinput-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n }\n\n private resolveValue<T>(value: T | Signal<T>): T {\n return isSignal(value) ? value() : value\n }\n\n private getText(): string {\n return this.resolveValue(this.props.text)\n }\n\n private setText(value: string): void {\n if (this.props.setText) {\n this.props.setText(value)\n }\n }\n\n private getPlaceholder(): string {\n return this.resolveValue(this.props.placeholder || '')\n }\n\n private getInputType(): BasicInputType {\n return this.resolveValue(this.props.inputType || 'text')\n }\n\n private isDisabled(): boolean {\n return this.resolveValue(this.props.disabled || false)\n }\n\n private isReadonly(): boolean {\n return this.resolveValue(this.props.readonly || false)\n }\n\n private handleInput = (e: Event): void => {\n const target = e.target as HTMLInputElement\n const value = target.value\n\n // Update reactive signal\n this.setText(value)\n\n // Call onChange callback\n if (this.props.onChange) {\n this.props.onChange(value)\n }\n }\n\n private handleKeyDown = (e: KeyboardEvent): void => {\n if (e.key === 'Enter' && this.props.onSubmit) {\n e.preventDefault()\n this.props.onSubmit(this.getText())\n }\n }\n\n private handleFocus = (): void => {\n if (this.props.onFocus) {\n this.props.onFocus()\n }\n\n // Update focus border color\n if (this.inputElement) {\n this.inputElement.style.borderColor = this.theme.colors.focusBorder\n }\n }\n\n private handleBlur = (): void => {\n if (this.props.onBlur) {\n this.props.onBlur()\n }\n\n // Reset border color\n if (this.inputElement) {\n this.inputElement.style.borderColor = this.theme.colors.border\n }\n }\n\n private getInputStyles(): Record<string, string> {\n const disabled = this.isDisabled()\n\n return {\n width: '100%',\n padding: `${this.theme.spacing.padding}px`,\n border: `${this.theme.spacing.borderWidth}px solid ${this.theme.colors.border}`,\n borderRadius: `${this.theme.borderRadius}px`,\n backgroundColor: disabled\n ? this.theme.colors.disabledBackground\n : this.theme.colors.background,\n color: disabled ? this.theme.colors.disabledText : this.theme.colors.text,\n fontSize: `${this.theme.fontSize}px`,\n fontFamily: this.theme.fontFamily,\n outline: 'none',\n transition: this.theme.transition,\n cursor: disabled ? 'not-allowed' : 'text',\n }\n }\n\n render(): DOMNode[] {\n const currentText = this.getText()\n const placeholder = this.getPlaceholder()\n const inputType = this.getInputType()\n const disabled = this.isDisabled()\n const readonly = this.isReadonly()\n\n // Process CSS classes for this component\n const baseClasses = ['tachui-basic-input']\n const classString = this.createClassString(this.props, baseClasses)\n \n const input = h('input', {\n id: this.id,\n className: classString,\n type: inputType,\n value: currentText,\n placeholder: placeholder,\n disabled: disabled,\n readonly: readonly,\n 'aria-label': this.props.accessibilityLabel,\n 'aria-describedby': this.props.accessibilityHint ? `${this.id}-hint` : undefined,\n style: this.getInputStyles(),\n oninput: this.handleInput,\n onkeydown: this.handleKeyDown,\n onfocus: this.handleFocus,\n onblur: this.handleBlur,\n })\n\n // Store reference to input element\n this.inputElement = input.element as HTMLInputElement\n\n // Set up reactive effects for dynamic updates\n createEffect(() => {\n if (this.inputElement && isSignal(this.props.text)) {\n const newValue = this.getText()\n if (this.inputElement.value !== newValue) {\n this.inputElement.value = newValue\n }\n }\n })\n\n createEffect(() => {\n if (\n this.inputElement &&\n (isSignal(this.props.placeholder) ||\n isSignal(this.props.inputType) ||\n isSignal(this.props.disabled))\n ) {\n // Update placeholder\n if (isSignal(this.props.placeholder)) {\n this.inputElement.placeholder = this.getPlaceholder()\n }\n\n // Update input type\n if (isSignal(this.props.inputType)) {\n this.inputElement.type = this.getInputType()\n }\n\n // Update disabled state\n if (isSignal(this.props.disabled)) {\n this.inputElement.disabled = this.isDisabled()\n }\n }\n })\n\n return [input]\n }\n}\n\n/**\n * Create a BasicInput component\n */\nexport function BasicInput(props: BasicInputProps): ModifiableComponent<BasicInputProps> & {\n modifier: ModifierBuilder<ModifiableComponent<BasicInputProps>>\n} {\n return withModifiers(new BasicInputComponent(props))\n}\n\n/**\n * BasicInput utility functions and presets\n */\nexport const BasicInputUtils = {\n /**\n * Create a search input\n */\n search(\n text: Signal<string>,\n setText: (value: string) => void,\n onSearch?: (query: string) => void\n ): BasicInputProps {\n return {\n text,\n setText,\n inputType: 'search',\n placeholder: 'Search...',\n onSubmit: onSearch,\n }\n },\n\n /**\n * Create an email input\n */\n email(text: Signal<string>, setText: (value: string) => void): BasicInputProps {\n return {\n text,\n setText,\n inputType: 'email',\n placeholder: 'Enter email address',\n }\n },\n\n /**\n * Create a password input\n */\n password(text: Signal<string>, setText: (value: string) => void): BasicInputProps {\n return {\n text,\n setText,\n inputType: 'password',\n placeholder: 'Enter password',\n }\n },\n\n /**\n * Create a phone number input\n */\n phone(text: Signal<string>, setText: (value: string) => void): BasicInputProps {\n return {\n text,\n setText,\n inputType: 'tel',\n placeholder: 'Enter phone number',\n }\n },\n}\n\n/**\n * BasicInput styles and theming\n */\nexport const BasicInputStyles = {\n theme: defaultBasicInputTheme,\n\n /**\n * Create a custom theme\n */\n createTheme(overrides: Partial<BasicInputTheme>): BasicInputTheme {\n return { ...defaultBasicInputTheme, ...overrides }\n },\n}\n"],"names":["defaultBasicInputTheme","BasicInputComponent","ComponentWithCSSClasses","props","__publicField","e","value","isSignal","disabled","currentText","placeholder","inputType","readonly","baseClasses","classString","input","h","createEffect","newValue","BasicInput","withModifiers","BasicInputUtils","text","setText","onSearch","BasicInputStyles","overrides"],"mappings":"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"}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});require("../reactive/cleanup.cjs");require("../reactive/unified-scheduler.cjs");const $=require("../reactive/effect.cjs"),u=require("../reactive/signal.cjs");require("../reactive/scheduler.cjs");require("../reactive/theme.cjs");const L=require("../runtime/renderer.cjs"),z=require("./wrapper.cjs"),O=require("../lifecycle/hooks.cjs"),F=require("../assets/ColorAsset.cjs"),k=require("../concatenation/concatenated-component.cjs");require("../css-classes/css-class-manager.cjs");const V=require("../css-classes/component-base.cjs");var H=Object.defineProperty,I=(i,e,t)=>e in i?H(i,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):i[e]=t,p=(i,e,t)=>I(i,typeof e!="symbol"?e+"":e,t);const P={colors:{primary:"#007AFF",secondary:"#5856D6",destructive:"#FF3B30",background:"#F2F2F7",surface:"#FFFFFF",onPrimary:"#FFFFFF",onSecondary:"#FFFFFF",onSurface:"#000000",border:"#C7C7CC",disabled:"#8E8E93"},spacing:{small:8,medium:12,large:16},borderRadius:{small:6,medium:8,large:12},typography:{small:{size:14,weight:"500"},medium:{size:16,weight:"500"},large:{size:18,weight:"600"}}};class R extends V.ComponentWithCSSClasses{constructor(e,t=P){super(),this.props=e,p(this,"type","component"),p(this,"id"),p(this,"mounted",!1),p(this,"cleanup",[]),p(this,"stateSignal"),p(this,"setState"),p(this,"theme"),this.id=`button-${Date.now()}-${Math.random().toString(36).substr(2,9)}`,this.theme=t;const[s,o]=u.createSignal("normal");this.stateSignal=s,this.setState=o,this.setupDOMEventListeners()}setupDOMEventListeners(){O.useLifecycle(this,{onDOMReady:(e,t)=>{t instanceof HTMLButtonElement&&(this.attachInteractionEvents(t),this.setupReactiveStyles(t))}})}setupReactiveStyles(e){const t=$.createEffect(()=>{this.stateSignal(),this.isEnabled(),this.isLoading();const{tint:s,backgroundColor:o,foregroundColor:r}=this.props;s&&u.isSignal(s)?s():s instanceof F.ColorAsset&&s.resolve(),o&&u.isSignal(o)?o():o instanceof F.ColorAsset&&o.resolve(),r&&u.isSignal(r)?r():r instanceof F.ColorAsset&&r.resolve();const n=this.getButtonStyles();this.applyStylesToElement(e,n)});this.cleanup.push(()=>{t&&typeof t.dispose=="function"&&t.dispose()})}applyStylesToElement(e,t){Object.entries(t).forEach(([s,o])=>{const r=this.camelToKebabCase(s);if(typeof o=="string"||typeof o=="number"){const n=e.style.getPropertyValue(r);r==="transform"?e.style.setProperty(r,String(o)):n&&n!==""&&n!=="inherit"||e.style.setProperty(r,String(o))}})}camelToKebabCase(e){return e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}resolveColorValue(e){if(e){if(typeof e=="string")return e;if(u.isSignal(e))return e();if(e instanceof F.ColorAsset)return e.resolve()}}attachInteractionEvents(e){const t=()=>{const a=this.isEnabled();return typeof a=="boolean"?a:a()};let s=null;const o=a=>{t()&&a.button===0&&(this.setState("pressed"),s=()=>{this.stateSignal()==="pressed"&&this.setState("normal"),s&&(document.removeEventListener("mouseup",s),s=null)},document.addEventListener("mouseup",s))},r=()=>{t()&&this.stateSignal()==="pressed"&&(this.setState("normal"),s&&(document.removeEventListener("mouseup",s),s=null))},n=()=>{t()&&(this.setState("normal"),s&&(document.removeEventListener("mouseup",s),s=null))},d=()=>{t()&&this.stateSignal()!=="pressed"&&this.setState("focused")},v=()=>{t()&&this.stateSignal()==="focused"&&this.setState("normal")},b=a=>{t()&&(a.key===" "||a.key==="Enter")&&(a.preventDefault(),this.setState("pressed"))},S=a=>{t()&&(a.key===" "||a.key==="Enter")&&(a.preventDefault(),this.setState("normal"),this.props.action?.())};e.addEventListener("mousedown",o),e.addEventListener("mouseup",r),e.addEventListener("mouseleave",n),e.addEventListener("focus",d),e.addEventListener("blur",v),e.addEventListener("keydown",b),e.addEventListener("keyup",S),this.cleanup.push(()=>{e.removeEventListener("mousedown",o),e.removeEventListener("mouseup",r),e.removeEventListener("mouseleave",n),e.removeEventListener("focus",d),e.removeEventListener("blur",v),e.removeEventListener("keydown",b),e.removeEventListener("keyup",S),s&&(document.removeEventListener("mouseup",s),s=null)})}isEnabled(){const{isEnabled:e}=this.props;return e===void 0?!0:typeof e=="boolean"||u.isSignal(e)?e:!0}render(){const e=this.isEnabled(),t=[];this.props.systemImage&&t.push(L.h("span",{class:"button-icon",style:{marginRight:"8px",fontSize:"1.2em"}},L.text(this.props.systemImage))),t.push(L.h("span",{class:"button-title"},L.text(this.props.title||"")));const s=["tachui-button"];return[{type:"element",tag:"button",props:{className:this.createClassString(this.props,s),type:"button",disabled:typeof e=="boolean"?!e:()=>!e(),onClick:this.props.action?()=>{try{this.props.action?.()}catch(n){console.error("Button action error:",n)}}:void 0,...this.props.debugLabel&&{debugLabel:this.props.debugLabel}},children:t,componentMetadata:{id:this.id,type:"Button"}}]}isLoading(){const{isLoading:e}=this.props;return e===void 0?!1:typeof e=="boolean"?e:u.isSignal(e)?e():!1}hasColorModifiers(){let e=this.modifiers;return!e&&this.modifierBuilder&&(e=this.modifierBuilder.modifiers),!e&&this.modifiableComponent&&(e=this.modifiableComponent.modifiers),!e||!Array.isArray(e)?!1:e.some(t=>t.type==="appearance"||t.constructor?.name==="AppearanceModifier"?t.properties&&(t.properties.foregroundColor!==void 0||t.properties.color!==void 0):t.properties?["foregroundColor","color","textColor"].some(o=>t.properties[o]!==void 0):!1)}hasTypographyModifiers(){let e=this.modifiers;return!e&&this.modifierBuilder&&(e=this.modifierBuilder.modifiers),!e&&this.modifiableComponent&&(e=this.modifiableComponent.modifiers),!e||!Array.isArray(e)?!1:e.some(s=>s.type==="typography"||s.constructor?.name==="TypographyModifier"?s.properties&&(s.properties.transform!==void 0||s.properties.textTransform!==void 0):!1)}getButtonStyles(){const{variant:e,size:t,role:s="none",tint:o,backgroundColor:r,foregroundColor:n}=this.props,d=this.stateSignal(),v=this.isLoading(),b=this.isEnabled(),S=this.hasColorModifiers(),a=this.hasTypographyModifiers(),m={...!S&&!n&&!e&&{color:"inherit"},...!a&&{fontStyle:"inherit",lineHeight:"inherit",textTransform:"inherit",textDecoration:"inherit",textIndent:"inherit",textShadow:"inherit",wordSpacing:"inherit",textOrientation:"inherit",writingMode:"inherit",direction:"inherit"}};if(t){const y=this.theme.spacing[t]||this.theme.spacing.medium,D=this.theme.borderRadius[t]||this.theme.borderRadius.medium,A=this.theme.typography[t]||this.theme.typography.medium,_={small:"32px",medium:"40px",large:"48px"};m.padding=`${y}px ${y*2}px`,m.borderRadius=`${D}px`,m.fontSize=`${A.size}px`,m.fontWeight=A.weight,m.minHeight=_[t]}let c="transparent",h="transparent",B="1px",g;const q=this.resolveColorValue(o),C=this.resolveColorValue(r),E=this.resolveColorValue(n);if(e){const y=q||this.theme.colors.primary;switch(e){case"filled":s==="destructive"?c=this.theme.colors.destructive:s==="cancel"?c=this.theme.colors.secondary:c=y,g=this.theme.colors.onPrimary;break;case"outlined":h=s==="destructive"?this.theme.colors.destructive:y,g=s==="destructive"?this.theme.colors.destructive:y;break;case"bordered":c=this.theme.colors.background,h=this.theme.colors.border;break;case"borderedProminent":c=this.theme.colors.surface,h=this.theme.colors.primary,B="2px";break}}C&&(c=C),E&&(g=E);let w="1",x="auto",M,T="none";b?v?(w="0.6",x="none"):d==="pressed"?(c=this.darkenColor(c,.1),h=this.darkenColor(h,.1),M="scale(0.95)"):d==="focused"&&(T="0 0 0 3px #007AFF40"):(c=this.theme.colors.disabled,h=this.theme.colors.disabled,g=this.theme.colors.disabled,w="0.6",x="none");const l={...m};return e&&(l.backgroundColor=c,l.borderColor=h,l.borderWidth=B,g!==void 0&&(l.color=g)),C&&(l.backgroundColor=C),E&&(l.color=E),l.cursor=b?"pointer":"not-allowed",l.opacity=w,l.pointerEvents=x,l.transform=M!==void 0?M:"none",l.boxShadow=T,l.transition="all 0.2s ease",l}async handlePress(){if(!(!this.isEnabled()||this.isLoading())&&(this.triggerHapticFeedback(),this.setState("pressed"),setTimeout(()=>{this.isEnabled()&&this.setState("normal")},150),this.props.action))try{const e=this.props.action();e&&typeof e.then=="function"&&await e}catch(e){console.error("Button action failed:",e)}}triggerHapticFeedback(){if(this.props.hapticFeedback!==!1&&typeof window<"u"&&"navigator"in window){const e=window.navigator;e.vibrate&&e.vibrate(10)}}darkenColor(e,t){if(e==="transparent")return e;if(e.startsWith("#")){const s=e.slice(1),o=parseInt(s,16),r=Math.max(0,Math.floor((o>>16)*(1-t))),n=Math.max(0,Math.floor((o>>8&255)*(1-t))),d=Math.max(0,Math.floor((o&255)*(1-t)));return`#${(r<<16|n<<8|d).toString(16).padStart(6,"0")}`}return e}concat(e){const t=this.toSegment(),s=e.toSegment(),o={totalSegments:e instanceof k.ConcatenatedComponent?e.segments.length+1:2,accessibilityRole:e instanceof k.ConcatenatedComponent?this.mergeAccessibilityRoles("composite",e.metadata.accessibilityRole):this.determineAccessibilityRole(e),semanticStructure:"inline"};return new k.ConcatenatedComponent([t,s],o)}toSegment(){return{id:this.id,component:this,modifiers:[],render:()=>{const e=this.render();return Array.isArray(e)?e[0]:e}}}isConcatenatable(){return!0}determineAccessibilityRole(e){switch(e.constructor.name){case"EnhancedText":return"composite";case"EnhancedImage":return"composite";case"EnhancedButton":case"EnhancedLink":return"composite";default:return"composite"}}mergeAccessibilityRoles(e,t){return"composite"}}function f(i,e,t={}){const s={...t,title:i,...e&&{action:e}},o=new R(s);return z.withModifiers(o)}const W={Filled:(i,e,t={})=>f(i,e,{...t,variant:"filled"}),Outlined:(i,e,t={})=>f(i,e,{...t,variant:"outlined"}),Plain:(i,e,t={})=>f(i,e,{...t,variant:"plain"}),Bordered:(i,e,t={})=>f(i,e,{...t,variant:"bordered"}),Destructive:(i,e,t={})=>f(i,e,{...t,role:"destructive"}),Cancel:(i,e,t={})=>f(i,e,{...t,role:"cancel"})},K=`
|
|
2
|
-
@keyframes spin {
|
|
3
|
-
from { transform: rotate(0deg); }
|
|
4
|
-
to { transform: rotate(360deg); }
|
|
5
|
-
}
|
|
6
|
-
`;if(typeof document<"u"){const i=document.createElement("style");i.textContent=K,document.head.appendChild(i)}exports.Button=f;exports.ButtonStyles=W;exports.EnhancedButton=R;exports.defaultButtonTheme=P;
|
|
7
|
-
//# sourceMappingURL=Button.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"Button.cjs","sources":["../../src/components/Button.ts"],"sourcesContent":["/**\n * Enhanced Button Component (Phase 5.2)\n *\n * SwiftUI-inspired Button component with press states, variants,\n * and advanced interaction handling.\n */\n\nimport type { ModifiableComponent, ModifierBuilder } from '../modifiers/types'\nimport { createSignal, isSignal, createEffect } from '../reactive'\nimport type { Signal } from '../reactive/types'\nimport type { ComponentInstance, ComponentProps } from '../runtime/types'\nimport { text, h } from '../runtime/renderer'\nimport { withModifiers } from './wrapper'\nimport { useLifecycle } from '../lifecycle/hooks'\nimport { ColorAsset } from '../assets/ColorAsset'\nimport type { Concatenatable, ComponentSegment, ConcatenationMetadata } from '../concatenation/types'\nimport { ConcatenatedComponent } from '../concatenation/concatenated-component'\nimport {\n ComponentWithCSSClasses,\n type CSSClassesProps\n} from '../css-classes'\n\n/**\n * Button role types following SwiftUI patterns\n */\nexport type ButtonRole = 'destructive' | 'cancel' | 'none'\n\n/**\n * Button variants\n */\nexport type ButtonVariant =\n | 'filled' // Solid background (primary)\n | 'outlined' // Border with transparent background\n | 'plain' // No background or border\n | 'bordered' // Subtle border with light background\n | 'borderedProminent' // Prominent border style\n\n/**\n * Button size presets\n */\nexport type ButtonSize = 'small' | 'medium' | 'large'\n\n/**\n * Button state\n */\nexport type ButtonState = 'normal' | 'pressed' | 'disabled' | 'focused'\n\n/**\n * Button component properties with CSS classes support\n */\nexport interface ButtonProps extends ComponentProps, CSSClassesProps {\n // Content\n title?: string | (() => string) | Signal<string>\n systemImage?: string\n\n // Behavior\n action?: () => void | Promise<void>\n role?: ButtonRole\n isEnabled?: boolean | Signal<boolean>\n\n // Appearance\n variant?: ButtonVariant\n size?: ButtonSize\n tint?: string | Signal<string> | ColorAsset\n backgroundColor?: string | Signal<string> | ColorAsset\n foregroundColor?: string | Signal<string> | ColorAsset\n\n // State management\n isPressed?: Signal<boolean>\n isLoading?: boolean | Signal<boolean>\n\n // Accessibility\n accessibilityLabel?: string\n accessibilityHint?: string\n\n // Advanced\n controlSize?: ButtonSize\n hapticFeedback?: boolean\n}\n\n/**\n * Button theme configuration\n */\nexport interface ButtonTheme {\n colors: {\n primary: string\n secondary: string\n destructive: string\n background: string\n surface: string\n onPrimary: string\n onSecondary: string\n onSurface: string\n border: string\n disabled: string\n }\n spacing: {\n small: number\n medium: number\n large: number\n }\n borderRadius: {\n small: number\n medium: number\n large: number\n }\n typography: {\n small: { size: number; weight: string }\n medium: { size: number; weight: string }\n large: { size: number; weight: string }\n }\n}\n\n/**\n * Default button theme\n */\nexport const defaultButtonTheme: ButtonTheme = {\n colors: {\n primary: '#007AFF',\n secondary: '#5856D6',\n destructive: '#FF3B30',\n background: '#F2F2F7',\n surface: '#FFFFFF',\n onPrimary: '#FFFFFF',\n onSecondary: '#FFFFFF',\n onSurface: '#000000',\n border: '#C7C7CC',\n disabled: '#8E8E93',\n },\n spacing: {\n small: 8,\n medium: 12,\n large: 16,\n },\n borderRadius: {\n small: 6,\n medium: 8,\n large: 12,\n },\n typography: {\n small: { size: 14, weight: '500' },\n medium: { size: 16, weight: '500' },\n large: { size: 18, weight: '600' },\n },\n}\n\n/**\n * Enhanced Button component class with CSS classes support\n */\nexport class EnhancedButton extends ComponentWithCSSClasses implements ComponentInstance<ButtonProps>, Concatenatable<ButtonProps> {\n public readonly type = 'component' as const\n public readonly id: string\n public mounted = false\n public cleanup: (() => void)[] = []\n public stateSignal: () => ButtonState\n private setState: (value: ButtonState) => void\n public theme: ButtonTheme\n\n constructor(\n public props: ButtonProps,\n theme: ButtonTheme = defaultButtonTheme\n ) {\n super()\n this.id = `button-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`\n this.theme = theme\n\n // Create reactive state signals\n const [stateSignal, setState] = createSignal<ButtonState>('normal')\n this.stateSignal = stateSignal\n this.setState = setState\n\n // Set up DOM event listeners when component is ready\n this.setupDOMEventListeners()\n }\n\n /**\n * Set up DOM event listeners for button interactions\n */\n private setupDOMEventListeners(): void {\n useLifecycle(this, {\n onDOMReady: (_elements, primaryElement) => {\n if (primaryElement instanceof HTMLButtonElement) {\n this.attachInteractionEvents(primaryElement)\n this.setupReactiveStyles(primaryElement)\n }\n }\n })\n }\n\n /**\n * Set up reactive style updates based on state changes\n */\n private setupReactiveStyles(button: HTMLButtonElement): void {\n // Create a reactive effect that updates styles when state changes\n const effect = createEffect(() => {\n // Reading the state signal makes this effect reactive to state changes\n this.stateSignal()\n\n // Also watch for changes in enabled/loading states if they're reactive\n this.isEnabled()\n this.isLoading()\n\n // Watch color properties for reactivity\n const { tint, backgroundColor, foregroundColor } = this.props\n\n // Make reactive to tint changes\n if (tint && isSignal(tint)) {\n (tint as () => string)() // Read the signal to make effect reactive to it\n } else if (tint instanceof ColorAsset) {\n tint.resolve() // Make effect reactive to theme changes\n }\n\n // Make reactive to backgroundColor changes\n if (backgroundColor && isSignal(backgroundColor)) {\n (backgroundColor as () => string)()\n } else if (backgroundColor instanceof ColorAsset) {\n backgroundColor.resolve()\n }\n\n // Make reactive to foregroundColor changes\n if (foregroundColor && isSignal(foregroundColor)) {\n (foregroundColor as () => string)()\n } else if (foregroundColor instanceof ColorAsset) {\n foregroundColor.resolve()\n }\n\n // Trigger style update whenever any dependency changes\n const styles = this.getButtonStyles()\n this.applyStylesToElement(button, styles)\n })\n\n // Store the effect cleanup function\n this.cleanup.push(() => {\n // Clean up the reactive effect when component unmounts\n if (effect && typeof effect.dispose === 'function') {\n effect.dispose()\n }\n })\n }\n\n /**\n * Apply computed styles to the button element, respecting modifier-applied styles\n */\n private applyStylesToElement(element: HTMLButtonElement, styles: Record<string, any>): void {\n // Apply each style property to the element, but only if not already set by modifiers\n Object.entries(styles).forEach(([property, value]) => {\n const cssProperty = this.camelToKebabCase(property)\n if (typeof value === 'string' || typeof value === 'number') {\n // Check if this property is already set by a modifier\n const currentValue = element.style.getPropertyValue(cssProperty)\n const hasModifierValue = currentValue && currentValue !== '' && currentValue !== 'inherit'\n \n // Special handling for transform: Button state transforms should override modifier transforms\n if (cssProperty === 'transform') {\n element.style.setProperty(cssProperty, String(value))\n } else if (!hasModifierValue) {\n // For other properties, only apply Button styles if no modifier has set this property\n element.style.setProperty(cssProperty, String(value))\n }\n }\n })\n }\n\n /**\n * Convert camelCase to kebab-case for CSS properties\n */\n private camelToKebabCase(str: string): string {\n return str.replace(/([a-z0-9])([A-Z])/g, '$1-$2').toLowerCase()\n }\n\n /**\n * Resolve color value from string, signal, or asset\n */\n private resolveColorValue(color: string | Signal<string> | ColorAsset | undefined): string | undefined {\n if (!color) return undefined\n\n if (typeof color === 'string') {\n return color\n } else if (isSignal(color)) {\n return (color as () => string)()\n } else if (color instanceof ColorAsset) {\n return color.resolve()\n }\n\n return undefined\n }\n\n /**\n * Attach interaction event listeners to the button element\n */\n private attachInteractionEvents(button: HTMLButtonElement): void {\n // Helper to check if button is currently enabled\n const isCurrentlyEnabled = (): boolean => {\n const enabled = this.isEnabled()\n return typeof enabled === 'boolean' ? enabled : enabled()\n }\n\n // Store global mouseup handler reference for cleanup\n let globalMouseUpHandler: ((event: MouseEvent) => void) | null = null\n\n // Mouse/pointer events for press states\n const handleMouseDown = (event: MouseEvent) => {\n if (isCurrentlyEnabled() && event.button === 0) { // Only left click\n this.setState('pressed')\n \n // Add global mouseup listener to handle mouseup outside the button\n globalMouseUpHandler = () => {\n if (this.stateSignal() === 'pressed') {\n this.setState('normal')\n }\n // Remove the global listener after handling\n if (globalMouseUpHandler) {\n document.removeEventListener('mouseup', globalMouseUpHandler)\n globalMouseUpHandler = null\n }\n }\n document.addEventListener('mouseup', globalMouseUpHandler)\n }\n }\n\n const handleMouseUp = () => {\n if (isCurrentlyEnabled() && this.stateSignal() === 'pressed') {\n this.setState('normal')\n // Clean up global listener if it exists\n if (globalMouseUpHandler) {\n document.removeEventListener('mouseup', globalMouseUpHandler)\n globalMouseUpHandler = null\n }\n }\n }\n\n const handleMouseLeave = () => {\n if (isCurrentlyEnabled()) {\n this.setState('normal')\n // Clean up global listener if it exists\n if (globalMouseUpHandler) {\n document.removeEventListener('mouseup', globalMouseUpHandler)\n globalMouseUpHandler = null\n }\n }\n }\n\n // Focus events\n const handleFocus = () => {\n if (isCurrentlyEnabled() && this.stateSignal() !== 'pressed') {\n this.setState('focused')\n }\n }\n\n const handleBlur = () => {\n if (isCurrentlyEnabled() && this.stateSignal() === 'focused') {\n this.setState('normal')\n }\n }\n\n // Keyboard events\n const handleKeyDown = (event: KeyboardEvent) => {\n if (isCurrentlyEnabled() && (event.key === ' ' || event.key === 'Enter')) {\n event.preventDefault()\n this.setState('pressed')\n }\n }\n\n const handleKeyUp = (event: KeyboardEvent) => {\n if (isCurrentlyEnabled() && (event.key === ' ' || event.key === 'Enter')) {\n event.preventDefault()\n this.setState('normal')\n // Trigger the action for keyboard activation\n this.props.action?.()\n }\n }\n\n // Add event listeners\n button.addEventListener('mousedown', handleMouseDown)\n button.addEventListener('mouseup', handleMouseUp)\n button.addEventListener('mouseleave', handleMouseLeave)\n button.addEventListener('focus', handleFocus)\n button.addEventListener('blur', handleBlur)\n button.addEventListener('keydown', handleKeyDown)\n button.addEventListener('keyup', handleKeyUp)\n\n // Store cleanup functions\n this.cleanup.push(() => {\n button.removeEventListener('mousedown', handleMouseDown)\n button.removeEventListener('mouseup', handleMouseUp)\n button.removeEventListener('mouseleave', handleMouseLeave)\n button.removeEventListener('focus', handleFocus)\n button.removeEventListener('blur', handleBlur)\n button.removeEventListener('keydown', handleKeyDown)\n button.removeEventListener('keyup', handleKeyUp)\n \n // Clean up global mouseup listener if it exists\n if (globalMouseUpHandler) {\n document.removeEventListener('mouseup', globalMouseUpHandler)\n globalMouseUpHandler = null\n }\n })\n }\n\n /**\n * Check if button is enabled\n */\n isEnabled(): boolean | (() => boolean) {\n const { isEnabled } = this.props\n\n if (isEnabled === undefined) return true\n if (typeof isEnabled === 'boolean') return isEnabled\n if (isSignal(isEnabled)) return isEnabled as () => boolean\n return true\n }\n\n\n /**\n * Render the button component\n */\n render() {\n // Use reactive pattern - pass signals/functions directly to runtime\n const enabled = this.isEnabled() // Get signal/value for enabled state\n\n // Create button content - always include title\n const children = []\n\n // System image (icon) - only if specified\n if (this.props.systemImage) {\n children.push(h('span', {\n class: 'button-icon',\n style: {\n marginRight: '8px',\n fontSize: '1.2em',\n },\n }, text(this.props.systemImage)))\n }\n\n // Button title - use h() helper for proper text node handling\n children.push(h('span', {\n class: 'button-title'\n }, text(this.props.title || '')))\n\n // Process CSS classes for this component\n const baseClasses = ['tachui-button']\n const classString = this.createClassString(this.props, baseClasses)\n\n // Create button element as DOMNode object with modifier metadata\n const buttonElement = {\n type: 'element' as const,\n tag: 'button',\n props: {\n className: classString,\n type: 'button',\n disabled: typeof enabled === 'boolean' ? !enabled : () => !enabled(), // Invert enabled to disabled\n onClick: this.props.action\n ? () => {\n try {\n this.props.action?.()\n } catch (error) {\n console.error('Button action error:', error)\n }\n }\n : undefined,\n // Pass through debug label for debug system\n ...(this.props.debugLabel && { debugLabel: this.props.debugLabel }),\n },\n children,\n // Attach component metadata for modifier processing\n componentMetadata: {\n id: this.id,\n type: 'Button',\n // Note: modifiers are attached automatically by the modifier system\n },\n }\n\n return [buttonElement]\n }\n\n /**\n * Check if button is in loading state\n */\n isLoading(): boolean {\n const { isLoading } = this.props\n\n if (isLoading === undefined) return false\n if (typeof isLoading === 'boolean') return isLoading\n if (isSignal(isLoading)) return (isLoading as () => boolean)()\n return false\n }\n\n /**\n * Check if the button has color-related modifiers applied\n */\n private hasColorModifiers(): boolean {\n // Try to get modifiers from the wrapper component first\n let modifiers = (this as any).modifiers\n\n // If not found on this component, check if we're wrapped and get from wrapper\n if (!modifiers && (this as any).modifierBuilder) {\n modifiers = (this as any).modifierBuilder.modifiers\n }\n\n // Also check if we're part of a modifiable component structure\n if (!modifiers && (this as any).modifiableComponent) {\n modifiers = (this as any).modifiableComponent.modifiers\n }\n\n if (!modifiers || !Array.isArray(modifiers)) {\n return false\n }\n\n // Check for any modifier that affects color\n return modifiers.some((modifier: any) => {\n // Check AppearanceModifier\n if (modifier.type === 'appearance' || modifier.constructor?.name === 'AppearanceModifier') {\n return modifier.properties &&\n (modifier.properties.foregroundColor !== undefined ||\n modifier.properties.color !== undefined)\n }\n\n // Check for any other modifiers that might affect color\n if (modifier.properties) {\n const colorProps = ['foregroundColor', 'color', 'textColor']\n return colorProps.some(prop => modifier.properties[prop] !== undefined)\n }\n\n return false\n })\n }\n\n /**\n * Check if the button has typography-related modifiers applied\n */\n private hasTypographyModifiers(): boolean {\n // Try to get modifiers from the wrapper component first\n let modifiers = (this as any).modifiers\n\n // If not found on this component, check if we're wrapped and get from wrapper\n if (!modifiers && (this as any).modifierBuilder) {\n modifiers = (this as any).modifierBuilder.modifiers\n }\n\n // Also check if we're part of a modifiable component structure\n if (!modifiers && (this as any).modifiableComponent) {\n modifiers = (this as any).modifiableComponent.modifiers\n }\n\n if (!modifiers || !Array.isArray(modifiers)) {\n return false\n }\n\n // Check for any modifier that affects text transformation\n const hasTypography = modifiers.some((modifier: any) => {\n // Check TypographyModifier\n if (modifier.type === 'typography' || modifier.constructor?.name === 'TypographyModifier') {\n return modifier.properties &&\n (modifier.properties.transform !== undefined ||\n modifier.properties.textTransform !== undefined)\n }\n\n return false\n })\n\n return hasTypography\n }\n\n /**\n * Get computed button styles based on variant, size, role, and state\n */\n // biome-ignore lint/suspicious/noExplicitAny: CSS styles require flexible property types\n getButtonStyles(): Record<string, any> {\n const { variant, size, role = 'none', tint, backgroundColor: bgColorProp, foregroundColor: fgColorProp } = this.props\n const state = this.stateSignal()\n const isLoading = this.isLoading()\n const isEnabled = this.isEnabled()\n\n // Check if the component has color-related or typography modifiers applied\n const hasColorModifiers = this.hasColorModifiers()\n const hasTypographyModifiers = this.hasTypographyModifiers()\n\n // Base styles - minimal defaults, inherit from parent but allow modifiers to override\n const baseStyles: Record<string, any> = {\n // Only set color property if no modifiers will handle it\n // This prevents conflicts between Button styles and AppearanceModifier\n ...((!hasColorModifiers && !fgColorProp && !variant) && { color: 'inherit' }),\n // Only set text-related properties if no typography modifiers will handle them\n // This prevents conflicts between Button styles and TypographyModifier\n ...(!hasTypographyModifiers && {\n fontStyle: 'inherit',\n lineHeight: 'inherit',\n textTransform: 'inherit',\n textDecoration: 'inherit',\n textIndent: 'inherit',\n textShadow: 'inherit',\n wordSpacing: 'inherit',\n textOrientation: 'inherit',\n writingMode: 'inherit',\n direction: 'inherit',\n }),\n // Let modifiers control: fontFamily, fontSize, fontWeight, letterSpacing, textAlign\n }\n\n // Only apply size-based styles if size is explicitly provided\n if (size) {\n const sizeConfig = this.theme.spacing[size] || this.theme.spacing.medium\n const borderRadius = this.theme.borderRadius[size] || this.theme.borderRadius.medium\n const typography = this.theme.typography[size] || this.theme.typography.medium\n\n const minHeights = {\n small: '32px',\n medium: '40px',\n large: '48px',\n }\n\n baseStyles.padding = `${sizeConfig}px ${sizeConfig * 2}px`\n baseStyles.borderRadius = `${borderRadius}px`\n baseStyles.fontSize = `${typography.size}px`\n baseStyles.fontWeight = typography.weight\n baseStyles.minHeight = minHeights[size]\n }\n\n let backgroundColor = 'transparent'\n let borderColor = 'transparent'\n let borderWidth = '1px'\n let color = undefined // Will be set by variant or remain undefined to use baseStyles.color\n\n // Resolve color values using helper method\n const tintColor = this.resolveColorValue(tint)\n const customBackgroundColor = this.resolveColorValue(bgColorProp)\n const customForegroundColor = this.resolveColorValue(fgColorProp)\n\n // Apply variant styles ONLY if variant is explicitly provided\n if (variant) {\n const fallbackTintColor = tintColor || this.theme.colors.primary\n\n switch (variant) {\n case 'filled':\n if (role === 'destructive') {\n backgroundColor = this.theme.colors.destructive\n } else if (role === 'cancel') {\n backgroundColor = this.theme.colors.secondary\n } else {\n backgroundColor = fallbackTintColor\n }\n color = this.theme.colors.onPrimary\n break\n case 'outlined':\n borderColor = role === 'destructive' ? this.theme.colors.destructive : fallbackTintColor\n color = role === 'destructive' ? this.theme.colors.destructive : fallbackTintColor\n break\n case 'bordered':\n backgroundColor = this.theme.colors.background\n borderColor = this.theme.colors.border\n break\n case 'borderedProminent':\n backgroundColor = this.theme.colors.surface\n borderColor = this.theme.colors.primary\n borderWidth = '2px'\n break\n case 'plain':\n // Keep defaults (transparent)\n break\n }\n }\n\n // Apply custom colors if provided (override variant defaults)\n if (customBackgroundColor) {\n backgroundColor = customBackgroundColor\n }\n if (customForegroundColor) {\n color = customForegroundColor\n }\n\n // Apply state modifications\n let opacity = '1'\n let pointerEvents = 'auto'\n let transform = undefined // Only set when needed\n let boxShadow = 'none'\n\n if (!isEnabled) {\n backgroundColor = this.theme.colors.disabled\n borderColor = this.theme.colors.disabled\n color = this.theme.colors.disabled\n opacity = '0.6'\n pointerEvents = 'none'\n } else if (isLoading) {\n opacity = '0.6'\n pointerEvents = 'none'\n } else if (state === 'pressed') {\n // Darken colors for pressed state\n backgroundColor = this.darkenColor(backgroundColor, 0.1)\n borderColor = this.darkenColor(borderColor, 0.1)\n transform = 'scale(0.95)'\n } else if (state === 'focused') {\n boxShadow = '0 0 0 3px #007AFF40'\n }\n\n // Build final styles object - only include styles when explicitly needed\n const finalStyles: Record<string, any> = {\n ...baseStyles, // Size-based styles (only if size provided)\n }\n\n // Only apply variant/color styles if variant is provided\n if (variant) {\n finalStyles.backgroundColor = backgroundColor\n finalStyles.borderColor = borderColor\n finalStyles.borderWidth = borderWidth\n if (color !== undefined) {\n finalStyles.color = color\n }\n }\n\n // Apply custom color overrides even without variant\n if (customBackgroundColor) {\n finalStyles.backgroundColor = customBackgroundColor\n }\n if (customForegroundColor) {\n finalStyles.color = customForegroundColor\n }\n\n // Always apply interaction and state styles\n finalStyles.cursor = isEnabled ? 'pointer' : 'not-allowed'\n finalStyles.opacity = opacity\n finalStyles.pointerEvents = pointerEvents\n\n // Always apply transform - use 'none' when not needed to properly clear previous values\n finalStyles.transform = transform !== undefined ? transform : 'none'\n finalStyles.boxShadow = boxShadow\n\n finalStyles.transition = 'all 0.2s ease'\n\n return finalStyles\n }\n\n /**\n * Handle button press with proper state management\n */\n async handlePress(): Promise<void> {\n if (!this.isEnabled() || this.isLoading()) return\n\n // Trigger haptic feedback (if available)\n this.triggerHapticFeedback()\n\n this.setState('pressed')\n\n // Reset state after animation\n setTimeout(() => {\n if (this.isEnabled()) {\n this.setState('normal')\n }\n }, 150)\n\n // Execute action if provided\n if (this.props.action) {\n try {\n const result = this.props.action()\n // Handle if action returns a Promise\n if (result && typeof result.then === 'function') {\n await result\n }\n } catch (error) {\n console.error('Button action failed:', error)\n }\n }\n }\n\n /**\n * Trigger haptic feedback (mobile Safari support)\n */\n private triggerHapticFeedback(): void {\n // Check if haptic feedback is disabled\n if (this.props.hapticFeedback === false) return\n\n if (typeof window !== 'undefined' && 'navigator' in window) {\n // biome-ignore lint/suspicious/noExplicitAny: Navigator API requires dynamic access\n const navigator = window.navigator as any\n if (navigator.vibrate) {\n navigator.vibrate(10) // Short vibration\n }\n }\n }\n\n /**\n * Helper to darken a color for pressed states\n */\n private darkenColor(color: string, amount: number): string {\n if (color === 'transparent') return color\n\n // Simple darkening for hex colors\n if (color.startsWith('#')) {\n const hex = color.slice(1)\n const num = parseInt(hex, 16)\n const r = Math.max(0, Math.floor((num >> 16) * (1 - amount)))\n const g = Math.max(0, Math.floor(((num >> 8) & 0x00ff) * (1 - amount)))\n const b = Math.max(0, Math.floor((num & 0x0000ff) * (1 - amount)))\n return `#${((r << 16) | (g << 8) | b).toString(16).padStart(6, '0')}`\n }\n\n return color\n }\n\n // ============================================================================\n // Concatenation Support (Phase 3.1)\n // ============================================================================\n\n /**\n * Concatenate this button with another concatenatable component\n */\n concat<U extends Concatenatable<any>>(other: U): ConcatenatedComponent<ButtonProps | U> {\n const thisSegment = this.toSegment()\n const otherSegment = other.toSegment()\n\n const metadata: ConcatenationMetadata = {\n totalSegments: other instanceof ConcatenatedComponent ? other.segments.length + 1 : 2,\n accessibilityRole: other instanceof ConcatenatedComponent\n ? this.mergeAccessibilityRoles('composite', other.metadata.accessibilityRole)\n : this.determineAccessibilityRole(other),\n semanticStructure: 'inline' // Buttons are typically inline in concatenation\n }\n\n return new ConcatenatedComponent([thisSegment, otherSegment], metadata)\n }\n\n /**\n * Convert this button to a segment for concatenation\n */\n toSegment(): ComponentSegment {\n return {\n id: this.id,\n component: this,\n modifiers: [], // Buttons don't typically have concatenation-specific modifiers\n render: () => {\n const rendered = this.render()\n return Array.isArray(rendered) ? rendered[0] : rendered\n }\n }\n }\n\n /**\n * Check if this component supports concatenation\n */\n isConcatenatable(): boolean {\n return true\n }\n\n /**\n * Determine accessibility role for concatenation\n */\n private determineAccessibilityRole(other: Concatenatable): 'text' | 'group' | 'composite' {\n const componentType = (other as any).constructor.name\n\n switch (componentType) {\n case 'EnhancedText':\n return 'composite' // Button + Text = composite (interactive content)\n case 'EnhancedImage':\n return 'composite' // Button + Image = composite (interactive content)\n case 'EnhancedButton':\n case 'EnhancedLink':\n return 'composite' // Button + Interactive = composite\n default:\n return 'composite'\n }\n }\n\n /**\n * Merge accessibility roles when combining components\n */\n private mergeAccessibilityRoles(\n _thisRole: 'text' | 'group' | 'composite',\n _existingRole: 'text' | 'group' | 'composite'\n ): 'text' | 'group' | 'composite' {\n // Buttons always contribute as 'composite' (interactive), so result is always composite\n return 'composite'\n }\n}\n\n/**\n * Create enhanced Button component with modifier support\n */\nexport function Button(\n title: string | (() => string) | Signal<string>,\n action?: () => void | Promise<void>,\n props: Omit<ButtonProps, 'title' | 'action'> = {}\n): ModifiableComponent<ButtonProps> & {\n modifier: ModifierBuilder<ModifiableComponent<ButtonProps>>\n} {\n const buttonProps: ButtonProps = { ...props, title, ...(action && { action }) }\n const component = new EnhancedButton(buttonProps)\n return withModifiers(component)\n}\n\n\n/**\n * Button variant shortcuts\n */\nexport const ButtonStyles = {\n /**\n * Filled button (primary)\n */\n Filled: (\n title: string | (() => string) | Signal<string>,\n action?: () => void | Promise<void>,\n props: Omit<ButtonProps, 'title' | 'action' | 'variant'> = {}\n ) => Button(title, action, { ...props, variant: 'filled' }),\n\n /**\n * Outlined button\n */\n Outlined: (\n title: string | (() => string) | Signal<string>,\n action?: () => void | Promise<void>,\n props: Omit<ButtonProps, 'title' | 'action' | 'variant'> = {}\n ) => Button(title, action, { ...props, variant: 'outlined' }),\n\n /**\n * Plain button (text only)\n */\n Plain: (\n title: string | (() => string) | Signal<string>,\n action?: () => void | Promise<void>,\n props: Omit<ButtonProps, 'title' | 'action' | 'variant'> = {}\n ) => Button(title, action, { ...props, variant: 'plain' }),\n\n /**\n * Bordered button\n */\n Bordered: (\n title: string | (() => string) | Signal<string>,\n action?: () => void | Promise<void>,\n props: Omit<ButtonProps, 'title' | 'action' | 'variant'> = {}\n ) => Button(title, action, { ...props, variant: 'bordered' }),\n\n /**\n * Destructive button\n */\n Destructive: (\n title: string | (() => string) | Signal<string>,\n action?: () => void | Promise<void>,\n props: Omit<ButtonProps, 'title' | 'action' | 'role'> = {}\n ) => Button(title, action, { ...props, role: 'destructive' }),\n\n /**\n * Cancel button\n */\n Cancel: (\n title: string | (() => string) | Signal<string>,\n action?: () => void | Promise<void>,\n props: Omit<ButtonProps, 'title' | 'action' | 'role'> = {}\n ) => Button(title, action, { ...props, role: 'cancel' }),\n}\n\n/**\n * CSS animations for button loading spinner\n */\nconst buttonAnimations = `\n@keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n}\n`\n\n// Inject animations into document head\nif (typeof document !== 'undefined') {\n const style = document.createElement('style')\n style.textContent = buttonAnimations\n document.head.appendChild(style)\n}\n"],"names":["defaultButtonTheme","EnhancedButton","ComponentWithCSSClasses","props","theme","__publicField","stateSignal","setState","createSignal","useLifecycle","_elements","primaryElement","button","effect","createEffect","tint","backgroundColor","foregroundColor","isSignal","ColorAsset","styles","element","property","value","cssProperty","currentValue","str","color","isCurrentlyEnabled","enabled","globalMouseUpHandler","handleMouseDown","event","handleMouseUp","handleMouseLeave","handleFocus","handleBlur","handleKeyDown","handleKeyUp","isEnabled","children","h","text","baseClasses","error","isLoading","modifiers","modifier","prop","variant","size","role","bgColorProp","fgColorProp","state","hasColorModifiers","hasTypographyModifiers","baseStyles","sizeConfig","borderRadius","typography","minHeights","borderColor","borderWidth","tintColor","customBackgroundColor","customForegroundColor","fallbackTintColor","opacity","pointerEvents","transform","boxShadow","finalStyles","result","navigator","amount","hex","num","g","b","other","thisSegment","otherSegment","metadata","ConcatenatedComponent","rendered","_thisRole","_existingRole","Button","title","action","buttonProps","component","withModifiers","ButtonStyles","buttonAnimations","style"],"mappings":"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"}
|