diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,20 @@
+Copyright (c) 2016 David Reaver
+Copyright (c) 2022 Markus Schirp
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of
+this software and associated documentation files (the "Software"), to deal in
+the Software without restriction, including without limitation the rights to
+use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
+of the Software, and to permit persons to whom the Software is furnished to do
+so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component.hs b/gen/Stratosphere/AmplifyUIBuilder/Component.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component.hs
@@ -0,0 +1,153 @@
+module Stratosphere.AmplifyUIBuilder.Component (
+        module Exports, Component(..), mkComponent
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.ComponentBindingPropertiesValueProperty as Exports
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.ComponentChildProperty as Exports
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.ComponentDataConfigurationProperty as Exports
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.ComponentEventProperty as Exports
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.ComponentPropertyProperty as Exports
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.ComponentVariantProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Component
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-component.html>
+    Component {haddock_workaround_ :: (),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-component.html#cfn-amplifyuibuilder-component-appid>
+               appId :: (Prelude.Maybe (Value Prelude.Text)),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-component.html#cfn-amplifyuibuilder-component-bindingproperties>
+               bindingProperties :: (Prelude.Maybe (Prelude.Map Prelude.Text ComponentBindingPropertiesValueProperty)),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-component.html#cfn-amplifyuibuilder-component-children>
+               children :: (Prelude.Maybe [ComponentChildProperty]),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-component.html#cfn-amplifyuibuilder-component-collectionproperties>
+               collectionProperties :: (Prelude.Maybe (Prelude.Map Prelude.Text ComponentDataConfigurationProperty)),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-component.html#cfn-amplifyuibuilder-component-componenttype>
+               componentType :: (Prelude.Maybe (Value Prelude.Text)),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-component.html#cfn-amplifyuibuilder-component-environmentname>
+               environmentName :: (Prelude.Maybe (Value Prelude.Text)),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-component.html#cfn-amplifyuibuilder-component-events>
+               events :: (Prelude.Maybe (Prelude.Map Prelude.Text ComponentEventProperty)),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-component.html#cfn-amplifyuibuilder-component-name>
+               name :: (Prelude.Maybe (Value Prelude.Text)),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-component.html#cfn-amplifyuibuilder-component-overrides>
+               overrides :: (Prelude.Maybe JSON.Object),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-component.html#cfn-amplifyuibuilder-component-properties>
+               properties :: (Prelude.Maybe (Prelude.Map Prelude.Text ComponentPropertyProperty)),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-component.html#cfn-amplifyuibuilder-component-schemaversion>
+               schemaVersion :: (Prelude.Maybe (Value Prelude.Text)),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-component.html#cfn-amplifyuibuilder-component-sourceid>
+               sourceId :: (Prelude.Maybe (Value Prelude.Text)),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-component.html#cfn-amplifyuibuilder-component-tags>
+               tags :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
+               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-component.html#cfn-amplifyuibuilder-component-variants>
+               variants :: (Prelude.Maybe [ComponentVariantProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkComponent :: Component
+mkComponent
+  = Component
+      {haddock_workaround_ = (), appId = Prelude.Nothing,
+       bindingProperties = Prelude.Nothing, children = Prelude.Nothing,
+       collectionProperties = Prelude.Nothing,
+       componentType = Prelude.Nothing, environmentName = Prelude.Nothing,
+       events = Prelude.Nothing, name = Prelude.Nothing,
+       overrides = Prelude.Nothing, properties = Prelude.Nothing,
+       schemaVersion = Prelude.Nothing, sourceId = Prelude.Nothing,
+       tags = Prelude.Nothing, variants = Prelude.Nothing}
+instance ToResourceProperties Component where
+  toResourceProperties Component {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Component",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AppId" Prelude.<$> appId,
+                            (JSON..=) "BindingProperties" Prelude.<$> bindingProperties,
+                            (JSON..=) "Children" Prelude.<$> children,
+                            (JSON..=) "CollectionProperties" Prelude.<$> collectionProperties,
+                            (JSON..=) "ComponentType" Prelude.<$> componentType,
+                            (JSON..=) "EnvironmentName" Prelude.<$> environmentName,
+                            (JSON..=) "Events" Prelude.<$> events,
+                            (JSON..=) "Name" Prelude.<$> name,
+                            (JSON..=) "Overrides" Prelude.<$> overrides,
+                            (JSON..=) "Properties" Prelude.<$> properties,
+                            (JSON..=) "SchemaVersion" Prelude.<$> schemaVersion,
+                            (JSON..=) "SourceId" Prelude.<$> sourceId,
+                            (JSON..=) "Tags" Prelude.<$> tags,
+                            (JSON..=) "Variants" Prelude.<$> variants])}
+instance JSON.ToJSON Component where
+  toJSON Component {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AppId" Prelude.<$> appId,
+               (JSON..=) "BindingProperties" Prelude.<$> bindingProperties,
+               (JSON..=) "Children" Prelude.<$> children,
+               (JSON..=) "CollectionProperties" Prelude.<$> collectionProperties,
+               (JSON..=) "ComponentType" Prelude.<$> componentType,
+               (JSON..=) "EnvironmentName" Prelude.<$> environmentName,
+               (JSON..=) "Events" Prelude.<$> events,
+               (JSON..=) "Name" Prelude.<$> name,
+               (JSON..=) "Overrides" Prelude.<$> overrides,
+               (JSON..=) "Properties" Prelude.<$> properties,
+               (JSON..=) "SchemaVersion" Prelude.<$> schemaVersion,
+               (JSON..=) "SourceId" Prelude.<$> sourceId,
+               (JSON..=) "Tags" Prelude.<$> tags,
+               (JSON..=) "Variants" Prelude.<$> variants]))
+instance Property "AppId" Component where
+  type PropertyType "AppId" Component = Value Prelude.Text
+  set newValue Component {..}
+    = Component {appId = Prelude.pure newValue, ..}
+instance Property "BindingProperties" Component where
+  type PropertyType "BindingProperties" Component = Prelude.Map Prelude.Text ComponentBindingPropertiesValueProperty
+  set newValue Component {..}
+    = Component {bindingProperties = Prelude.pure newValue, ..}
+instance Property "Children" Component where
+  type PropertyType "Children" Component = [ComponentChildProperty]
+  set newValue Component {..}
+    = Component {children = Prelude.pure newValue, ..}
+instance Property "CollectionProperties" Component where
+  type PropertyType "CollectionProperties" Component = Prelude.Map Prelude.Text ComponentDataConfigurationProperty
+  set newValue Component {..}
+    = Component {collectionProperties = Prelude.pure newValue, ..}
+instance Property "ComponentType" Component where
+  type PropertyType "ComponentType" Component = Value Prelude.Text
+  set newValue Component {..}
+    = Component {componentType = Prelude.pure newValue, ..}
+instance Property "EnvironmentName" Component where
+  type PropertyType "EnvironmentName" Component = Value Prelude.Text
+  set newValue Component {..}
+    = Component {environmentName = Prelude.pure newValue, ..}
+instance Property "Events" Component where
+  type PropertyType "Events" Component = Prelude.Map Prelude.Text ComponentEventProperty
+  set newValue Component {..}
+    = Component {events = Prelude.pure newValue, ..}
+instance Property "Name" Component where
+  type PropertyType "Name" Component = Value Prelude.Text
+  set newValue Component {..}
+    = Component {name = Prelude.pure newValue, ..}
+instance Property "Overrides" Component where
+  type PropertyType "Overrides" Component = JSON.Object
+  set newValue Component {..}
+    = Component {overrides = Prelude.pure newValue, ..}
+instance Property "Properties" Component where
+  type PropertyType "Properties" Component = Prelude.Map Prelude.Text ComponentPropertyProperty
+  set newValue Component {..}
+    = Component {properties = Prelude.pure newValue, ..}
+instance Property "SchemaVersion" Component where
+  type PropertyType "SchemaVersion" Component = Value Prelude.Text
+  set newValue Component {..}
+    = Component {schemaVersion = Prelude.pure newValue, ..}
+instance Property "SourceId" Component where
+  type PropertyType "SourceId" Component = Value Prelude.Text
+  set newValue Component {..}
+    = Component {sourceId = Prelude.pure newValue, ..}
+instance Property "Tags" Component where
+  type PropertyType "Tags" Component = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue Component {..}
+    = Component {tags = Prelude.pure newValue, ..}
+instance Property "Variants" Component where
+  type PropertyType "Variants" Component = [ComponentVariantProperty]
+  set newValue Component {..}
+    = Component {variants = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ActionParametersProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Component/ActionParametersProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ActionParametersProperty.hs
@@ -0,0 +1,105 @@
+module Stratosphere.AmplifyUIBuilder.Component.ActionParametersProperty (
+        module Exports, ActionParametersProperty(..),
+        mkActionParametersProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.ComponentPropertyProperty as Exports
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.MutationActionSetStateParameterProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ActionParametersProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-actionparameters.html>
+    ActionParametersProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-actionparameters.html#cfn-amplifyuibuilder-component-actionparameters-anchor>
+                              anchor :: (Prelude.Maybe ComponentPropertyProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-actionparameters.html#cfn-amplifyuibuilder-component-actionparameters-fields>
+                              fields :: (Prelude.Maybe (Prelude.Map Prelude.Text ComponentPropertyProperty)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-actionparameters.html#cfn-amplifyuibuilder-component-actionparameters-global>
+                              global :: (Prelude.Maybe ComponentPropertyProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-actionparameters.html#cfn-amplifyuibuilder-component-actionparameters-id>
+                              id :: (Prelude.Maybe ComponentPropertyProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-actionparameters.html#cfn-amplifyuibuilder-component-actionparameters-model>
+                              model :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-actionparameters.html#cfn-amplifyuibuilder-component-actionparameters-state>
+                              state :: (Prelude.Maybe MutationActionSetStateParameterProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-actionparameters.html#cfn-amplifyuibuilder-component-actionparameters-target>
+                              target :: (Prelude.Maybe ComponentPropertyProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-actionparameters.html#cfn-amplifyuibuilder-component-actionparameters-type>
+                              type' :: (Prelude.Maybe ComponentPropertyProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-actionparameters.html#cfn-amplifyuibuilder-component-actionparameters-url>
+                              url :: (Prelude.Maybe ComponentPropertyProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkActionParametersProperty :: ActionParametersProperty
+mkActionParametersProperty
+  = ActionParametersProperty
+      {haddock_workaround_ = (), anchor = Prelude.Nothing,
+       fields = Prelude.Nothing, global = Prelude.Nothing,
+       id = Prelude.Nothing, model = Prelude.Nothing,
+       state = Prelude.Nothing, target = Prelude.Nothing,
+       type' = Prelude.Nothing, url = Prelude.Nothing}
+instance ToResourceProperties ActionParametersProperty where
+  toResourceProperties ActionParametersProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Component.ActionParameters",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Anchor" Prelude.<$> anchor,
+                            (JSON..=) "Fields" Prelude.<$> fields,
+                            (JSON..=) "Global" Prelude.<$> global,
+                            (JSON..=) "Id" Prelude.<$> id, (JSON..=) "Model" Prelude.<$> model,
+                            (JSON..=) "State" Prelude.<$> state,
+                            (JSON..=) "Target" Prelude.<$> target,
+                            (JSON..=) "Type" Prelude.<$> type',
+                            (JSON..=) "Url" Prelude.<$> url])}
+instance JSON.ToJSON ActionParametersProperty where
+  toJSON ActionParametersProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Anchor" Prelude.<$> anchor,
+               (JSON..=) "Fields" Prelude.<$> fields,
+               (JSON..=) "Global" Prelude.<$> global,
+               (JSON..=) "Id" Prelude.<$> id, (JSON..=) "Model" Prelude.<$> model,
+               (JSON..=) "State" Prelude.<$> state,
+               (JSON..=) "Target" Prelude.<$> target,
+               (JSON..=) "Type" Prelude.<$> type',
+               (JSON..=) "Url" Prelude.<$> url]))
+instance Property "Anchor" ActionParametersProperty where
+  type PropertyType "Anchor" ActionParametersProperty = ComponentPropertyProperty
+  set newValue ActionParametersProperty {..}
+    = ActionParametersProperty {anchor = Prelude.pure newValue, ..}
+instance Property "Fields" ActionParametersProperty where
+  type PropertyType "Fields" ActionParametersProperty = Prelude.Map Prelude.Text ComponentPropertyProperty
+  set newValue ActionParametersProperty {..}
+    = ActionParametersProperty {fields = Prelude.pure newValue, ..}
+instance Property "Global" ActionParametersProperty where
+  type PropertyType "Global" ActionParametersProperty = ComponentPropertyProperty
+  set newValue ActionParametersProperty {..}
+    = ActionParametersProperty {global = Prelude.pure newValue, ..}
+instance Property "Id" ActionParametersProperty where
+  type PropertyType "Id" ActionParametersProperty = ComponentPropertyProperty
+  set newValue ActionParametersProperty {..}
+    = ActionParametersProperty {id = Prelude.pure newValue, ..}
+instance Property "Model" ActionParametersProperty where
+  type PropertyType "Model" ActionParametersProperty = Value Prelude.Text
+  set newValue ActionParametersProperty {..}
+    = ActionParametersProperty {model = Prelude.pure newValue, ..}
+instance Property "State" ActionParametersProperty where
+  type PropertyType "State" ActionParametersProperty = MutationActionSetStateParameterProperty
+  set newValue ActionParametersProperty {..}
+    = ActionParametersProperty {state = Prelude.pure newValue, ..}
+instance Property "Target" ActionParametersProperty where
+  type PropertyType "Target" ActionParametersProperty = ComponentPropertyProperty
+  set newValue ActionParametersProperty {..}
+    = ActionParametersProperty {target = Prelude.pure newValue, ..}
+instance Property "Type" ActionParametersProperty where
+  type PropertyType "Type" ActionParametersProperty = ComponentPropertyProperty
+  set newValue ActionParametersProperty {..}
+    = ActionParametersProperty {type' = Prelude.pure newValue, ..}
+instance Property "Url" ActionParametersProperty where
+  type PropertyType "Url" ActionParametersProperty = ComponentPropertyProperty
+  set newValue ActionParametersProperty {..}
+    = ActionParametersProperty {url = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ActionParametersProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Component/ActionParametersProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ActionParametersProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Component.ActionParametersProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ActionParametersProperty :: Prelude.Type
+instance ToResourceProperties ActionParametersProperty
+instance Prelude.Eq ActionParametersProperty
+instance Prelude.Show ActionParametersProperty
+instance JSON.ToJSON ActionParametersProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentBindingPropertiesValuePropertiesProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentBindingPropertiesValuePropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentBindingPropertiesValuePropertiesProperty.hs
@@ -0,0 +1,109 @@
+module Stratosphere.AmplifyUIBuilder.Component.ComponentBindingPropertiesValuePropertiesProperty (
+        module Exports,
+        ComponentBindingPropertiesValuePropertiesProperty(..),
+        mkComponentBindingPropertiesValuePropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.PredicateProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ComponentBindingPropertiesValuePropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentbindingpropertiesvalueproperties.html>
+    ComponentBindingPropertiesValuePropertiesProperty {haddock_workaround_ :: (),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentbindingpropertiesvalueproperties.html#cfn-amplifyuibuilder-component-componentbindingpropertiesvalueproperties-bucket>
+                                                       bucket :: (Prelude.Maybe (Value Prelude.Text)),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentbindingpropertiesvalueproperties.html#cfn-amplifyuibuilder-component-componentbindingpropertiesvalueproperties-defaultvalue>
+                                                       defaultValue :: (Prelude.Maybe (Value Prelude.Text)),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentbindingpropertiesvalueproperties.html#cfn-amplifyuibuilder-component-componentbindingpropertiesvalueproperties-field>
+                                                       field :: (Prelude.Maybe (Value Prelude.Text)),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentbindingpropertiesvalueproperties.html#cfn-amplifyuibuilder-component-componentbindingpropertiesvalueproperties-key>
+                                                       key :: (Prelude.Maybe (Value Prelude.Text)),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentbindingpropertiesvalueproperties.html#cfn-amplifyuibuilder-component-componentbindingpropertiesvalueproperties-model>
+                                                       model :: (Prelude.Maybe (Value Prelude.Text)),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentbindingpropertiesvalueproperties.html#cfn-amplifyuibuilder-component-componentbindingpropertiesvalueproperties-predicates>
+                                                       predicates :: (Prelude.Maybe [PredicateProperty]),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentbindingpropertiesvalueproperties.html#cfn-amplifyuibuilder-component-componentbindingpropertiesvalueproperties-slotname>
+                                                       slotName :: (Prelude.Maybe (Value Prelude.Text)),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentbindingpropertiesvalueproperties.html#cfn-amplifyuibuilder-component-componentbindingpropertiesvalueproperties-userattribute>
+                                                       userAttribute :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkComponentBindingPropertiesValuePropertiesProperty ::
+  ComponentBindingPropertiesValuePropertiesProperty
+mkComponentBindingPropertiesValuePropertiesProperty
+  = ComponentBindingPropertiesValuePropertiesProperty
+      {haddock_workaround_ = (), bucket = Prelude.Nothing,
+       defaultValue = Prelude.Nothing, field = Prelude.Nothing,
+       key = Prelude.Nothing, model = Prelude.Nothing,
+       predicates = Prelude.Nothing, slotName = Prelude.Nothing,
+       userAttribute = Prelude.Nothing}
+instance ToResourceProperties ComponentBindingPropertiesValuePropertiesProperty where
+  toResourceProperties
+    ComponentBindingPropertiesValuePropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Component.ComponentBindingPropertiesValueProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Bucket" Prelude.<$> bucket,
+                            (JSON..=) "DefaultValue" Prelude.<$> defaultValue,
+                            (JSON..=) "Field" Prelude.<$> field,
+                            (JSON..=) "Key" Prelude.<$> key,
+                            (JSON..=) "Model" Prelude.<$> model,
+                            (JSON..=) "Predicates" Prelude.<$> predicates,
+                            (JSON..=) "SlotName" Prelude.<$> slotName,
+                            (JSON..=) "UserAttribute" Prelude.<$> userAttribute])}
+instance JSON.ToJSON ComponentBindingPropertiesValuePropertiesProperty where
+  toJSON ComponentBindingPropertiesValuePropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Bucket" Prelude.<$> bucket,
+               (JSON..=) "DefaultValue" Prelude.<$> defaultValue,
+               (JSON..=) "Field" Prelude.<$> field,
+               (JSON..=) "Key" Prelude.<$> key,
+               (JSON..=) "Model" Prelude.<$> model,
+               (JSON..=) "Predicates" Prelude.<$> predicates,
+               (JSON..=) "SlotName" Prelude.<$> slotName,
+               (JSON..=) "UserAttribute" Prelude.<$> userAttribute]))
+instance Property "Bucket" ComponentBindingPropertiesValuePropertiesProperty where
+  type PropertyType "Bucket" ComponentBindingPropertiesValuePropertiesProperty = Value Prelude.Text
+  set newValue ComponentBindingPropertiesValuePropertiesProperty {..}
+    = ComponentBindingPropertiesValuePropertiesProperty
+        {bucket = Prelude.pure newValue, ..}
+instance Property "DefaultValue" ComponentBindingPropertiesValuePropertiesProperty where
+  type PropertyType "DefaultValue" ComponentBindingPropertiesValuePropertiesProperty = Value Prelude.Text
+  set newValue ComponentBindingPropertiesValuePropertiesProperty {..}
+    = ComponentBindingPropertiesValuePropertiesProperty
+        {defaultValue = Prelude.pure newValue, ..}
+instance Property "Field" ComponentBindingPropertiesValuePropertiesProperty where
+  type PropertyType "Field" ComponentBindingPropertiesValuePropertiesProperty = Value Prelude.Text
+  set newValue ComponentBindingPropertiesValuePropertiesProperty {..}
+    = ComponentBindingPropertiesValuePropertiesProperty
+        {field = Prelude.pure newValue, ..}
+instance Property "Key" ComponentBindingPropertiesValuePropertiesProperty where
+  type PropertyType "Key" ComponentBindingPropertiesValuePropertiesProperty = Value Prelude.Text
+  set newValue ComponentBindingPropertiesValuePropertiesProperty {..}
+    = ComponentBindingPropertiesValuePropertiesProperty
+        {key = Prelude.pure newValue, ..}
+instance Property "Model" ComponentBindingPropertiesValuePropertiesProperty where
+  type PropertyType "Model" ComponentBindingPropertiesValuePropertiesProperty = Value Prelude.Text
+  set newValue ComponentBindingPropertiesValuePropertiesProperty {..}
+    = ComponentBindingPropertiesValuePropertiesProperty
+        {model = Prelude.pure newValue, ..}
+instance Property "Predicates" ComponentBindingPropertiesValuePropertiesProperty where
+  type PropertyType "Predicates" ComponentBindingPropertiesValuePropertiesProperty = [PredicateProperty]
+  set newValue ComponentBindingPropertiesValuePropertiesProperty {..}
+    = ComponentBindingPropertiesValuePropertiesProperty
+        {predicates = Prelude.pure newValue, ..}
+instance Property "SlotName" ComponentBindingPropertiesValuePropertiesProperty where
+  type PropertyType "SlotName" ComponentBindingPropertiesValuePropertiesProperty = Value Prelude.Text
+  set newValue ComponentBindingPropertiesValuePropertiesProperty {..}
+    = ComponentBindingPropertiesValuePropertiesProperty
+        {slotName = Prelude.pure newValue, ..}
+instance Property "UserAttribute" ComponentBindingPropertiesValuePropertiesProperty where
+  type PropertyType "UserAttribute" ComponentBindingPropertiesValuePropertiesProperty = Value Prelude.Text
+  set newValue ComponentBindingPropertiesValuePropertiesProperty {..}
+    = ComponentBindingPropertiesValuePropertiesProperty
+        {userAttribute = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentBindingPropertiesValuePropertiesProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentBindingPropertiesValuePropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentBindingPropertiesValuePropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Component.ComponentBindingPropertiesValuePropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ComponentBindingPropertiesValuePropertiesProperty :: Prelude.Type
+instance ToResourceProperties ComponentBindingPropertiesValuePropertiesProperty
+instance Prelude.Eq ComponentBindingPropertiesValuePropertiesProperty
+instance Prelude.Show ComponentBindingPropertiesValuePropertiesProperty
+instance JSON.ToJSON ComponentBindingPropertiesValuePropertiesProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentBindingPropertiesValueProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentBindingPropertiesValueProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentBindingPropertiesValueProperty.hs
@@ -0,0 +1,59 @@
+module Stratosphere.AmplifyUIBuilder.Component.ComponentBindingPropertiesValueProperty (
+        module Exports, ComponentBindingPropertiesValueProperty(..),
+        mkComponentBindingPropertiesValueProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.ComponentBindingPropertiesValuePropertiesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ComponentBindingPropertiesValueProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentbindingpropertiesvalue.html>
+    ComponentBindingPropertiesValueProperty {haddock_workaround_ :: (),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentbindingpropertiesvalue.html#cfn-amplifyuibuilder-component-componentbindingpropertiesvalue-bindingproperties>
+                                             bindingProperties :: (Prelude.Maybe ComponentBindingPropertiesValuePropertiesProperty),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentbindingpropertiesvalue.html#cfn-amplifyuibuilder-component-componentbindingpropertiesvalue-defaultvalue>
+                                             defaultValue :: (Prelude.Maybe (Value Prelude.Text)),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentbindingpropertiesvalue.html#cfn-amplifyuibuilder-component-componentbindingpropertiesvalue-type>
+                                             type' :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkComponentBindingPropertiesValueProperty ::
+  ComponentBindingPropertiesValueProperty
+mkComponentBindingPropertiesValueProperty
+  = ComponentBindingPropertiesValueProperty
+      {haddock_workaround_ = (), bindingProperties = Prelude.Nothing,
+       defaultValue = Prelude.Nothing, type' = Prelude.Nothing}
+instance ToResourceProperties ComponentBindingPropertiesValueProperty where
+  toResourceProperties ComponentBindingPropertiesValueProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Component.ComponentBindingPropertiesValue",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "BindingProperties" Prelude.<$> bindingProperties,
+                            (JSON..=) "DefaultValue" Prelude.<$> defaultValue,
+                            (JSON..=) "Type" Prelude.<$> type'])}
+instance JSON.ToJSON ComponentBindingPropertiesValueProperty where
+  toJSON ComponentBindingPropertiesValueProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "BindingProperties" Prelude.<$> bindingProperties,
+               (JSON..=) "DefaultValue" Prelude.<$> defaultValue,
+               (JSON..=) "Type" Prelude.<$> type']))
+instance Property "BindingProperties" ComponentBindingPropertiesValueProperty where
+  type PropertyType "BindingProperties" ComponentBindingPropertiesValueProperty = ComponentBindingPropertiesValuePropertiesProperty
+  set newValue ComponentBindingPropertiesValueProperty {..}
+    = ComponentBindingPropertiesValueProperty
+        {bindingProperties = Prelude.pure newValue, ..}
+instance Property "DefaultValue" ComponentBindingPropertiesValueProperty where
+  type PropertyType "DefaultValue" ComponentBindingPropertiesValueProperty = Value Prelude.Text
+  set newValue ComponentBindingPropertiesValueProperty {..}
+    = ComponentBindingPropertiesValueProperty
+        {defaultValue = Prelude.pure newValue, ..}
+instance Property "Type" ComponentBindingPropertiesValueProperty where
+  type PropertyType "Type" ComponentBindingPropertiesValueProperty = Value Prelude.Text
+  set newValue ComponentBindingPropertiesValueProperty {..}
+    = ComponentBindingPropertiesValueProperty
+        {type' = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentBindingPropertiesValueProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentBindingPropertiesValueProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentBindingPropertiesValueProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Component.ComponentBindingPropertiesValueProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ComponentBindingPropertiesValueProperty :: Prelude.Type
+instance ToResourceProperties ComponentBindingPropertiesValueProperty
+instance Prelude.Eq ComponentBindingPropertiesValueProperty
+instance Prelude.Show ComponentBindingPropertiesValueProperty
+instance JSON.ToJSON ComponentBindingPropertiesValueProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentChildProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentChildProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentChildProperty.hs
@@ -0,0 +1,85 @@
+module Stratosphere.AmplifyUIBuilder.Component.ComponentChildProperty (
+        module Exports, ComponentChildProperty(..),
+        mkComponentChildProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.ComponentEventProperty as Exports
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.ComponentPropertyProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ComponentChildProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentchild.html>
+    ComponentChildProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentchild.html#cfn-amplifyuibuilder-component-componentchild-children>
+                            children :: (Prelude.Maybe [ComponentChildProperty]),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentchild.html#cfn-amplifyuibuilder-component-componentchild-componenttype>
+                            componentType :: (Value Prelude.Text),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentchild.html#cfn-amplifyuibuilder-component-componentchild-events>
+                            events :: (Prelude.Maybe (Prelude.Map Prelude.Text ComponentEventProperty)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentchild.html#cfn-amplifyuibuilder-component-componentchild-name>
+                            name :: (Value Prelude.Text),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentchild.html#cfn-amplifyuibuilder-component-componentchild-properties>
+                            properties :: (Prelude.Map Prelude.Text ComponentPropertyProperty),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentchild.html#cfn-amplifyuibuilder-component-componentchild-sourceid>
+                            sourceId :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkComponentChildProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> Prelude.Map Prelude.Text ComponentPropertyProperty
+        -> ComponentChildProperty
+mkComponentChildProperty componentType name properties
+  = ComponentChildProperty
+      {haddock_workaround_ = (), componentType = componentType,
+       name = name, properties = properties, children = Prelude.Nothing,
+       events = Prelude.Nothing, sourceId = Prelude.Nothing}
+instance ToResourceProperties ComponentChildProperty where
+  toResourceProperties ComponentChildProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Component.ComponentChild",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["ComponentType" JSON..= componentType, "Name" JSON..= name,
+                            "Properties" JSON..= properties]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Children" Prelude.<$> children,
+                               (JSON..=) "Events" Prelude.<$> events,
+                               (JSON..=) "SourceId" Prelude.<$> sourceId]))}
+instance JSON.ToJSON ComponentChildProperty where
+  toJSON ComponentChildProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["ComponentType" JSON..= componentType, "Name" JSON..= name,
+               "Properties" JSON..= properties]
+              (Prelude.catMaybes
+                 [(JSON..=) "Children" Prelude.<$> children,
+                  (JSON..=) "Events" Prelude.<$> events,
+                  (JSON..=) "SourceId" Prelude.<$> sourceId])))
+instance Property "Children" ComponentChildProperty where
+  type PropertyType "Children" ComponentChildProperty = [ComponentChildProperty]
+  set newValue ComponentChildProperty {..}
+    = ComponentChildProperty {children = Prelude.pure newValue, ..}
+instance Property "ComponentType" ComponentChildProperty where
+  type PropertyType "ComponentType" ComponentChildProperty = Value Prelude.Text
+  set newValue ComponentChildProperty {..}
+    = ComponentChildProperty {componentType = newValue, ..}
+instance Property "Events" ComponentChildProperty where
+  type PropertyType "Events" ComponentChildProperty = Prelude.Map Prelude.Text ComponentEventProperty
+  set newValue ComponentChildProperty {..}
+    = ComponentChildProperty {events = Prelude.pure newValue, ..}
+instance Property "Name" ComponentChildProperty where
+  type PropertyType "Name" ComponentChildProperty = Value Prelude.Text
+  set newValue ComponentChildProperty {..}
+    = ComponentChildProperty {name = newValue, ..}
+instance Property "Properties" ComponentChildProperty where
+  type PropertyType "Properties" ComponentChildProperty = Prelude.Map Prelude.Text ComponentPropertyProperty
+  set newValue ComponentChildProperty {..}
+    = ComponentChildProperty {properties = newValue, ..}
+instance Property "SourceId" ComponentChildProperty where
+  type PropertyType "SourceId" ComponentChildProperty = Value Prelude.Text
+  set newValue ComponentChildProperty {..}
+    = ComponentChildProperty {sourceId = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentChildProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentChildProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentChildProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Component.ComponentChildProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ComponentChildProperty :: Prelude.Type
+instance ToResourceProperties ComponentChildProperty
+instance Prelude.Eq ComponentChildProperty
+instance Prelude.Show ComponentChildProperty
+instance JSON.ToJSON ComponentChildProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentConditionPropertyProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentConditionPropertyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentConditionPropertyProperty.hs
@@ -0,0 +1,97 @@
+module Stratosphere.AmplifyUIBuilder.Component.ComponentConditionPropertyProperty (
+        module Exports, ComponentConditionPropertyProperty(..),
+        mkComponentConditionPropertyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.ComponentPropertyProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ComponentConditionPropertyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentconditionproperty.html>
+    ComponentConditionPropertyProperty {haddock_workaround_ :: (),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentconditionproperty.html#cfn-amplifyuibuilder-component-componentconditionproperty-else>
+                                        else' :: (Prelude.Maybe ComponentPropertyProperty),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentconditionproperty.html#cfn-amplifyuibuilder-component-componentconditionproperty-field>
+                                        field :: (Prelude.Maybe (Value Prelude.Text)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentconditionproperty.html#cfn-amplifyuibuilder-component-componentconditionproperty-operand>
+                                        operand :: (Prelude.Maybe (Value Prelude.Text)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentconditionproperty.html#cfn-amplifyuibuilder-component-componentconditionproperty-operandtype>
+                                        operandType :: (Prelude.Maybe (Value Prelude.Text)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentconditionproperty.html#cfn-amplifyuibuilder-component-componentconditionproperty-operator>
+                                        operator :: (Prelude.Maybe (Value Prelude.Text)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentconditionproperty.html#cfn-amplifyuibuilder-component-componentconditionproperty-property>
+                                        property :: (Prelude.Maybe (Value Prelude.Text)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentconditionproperty.html#cfn-amplifyuibuilder-component-componentconditionproperty-then>
+                                        then' :: (Prelude.Maybe ComponentPropertyProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkComponentConditionPropertyProperty ::
+  ComponentConditionPropertyProperty
+mkComponentConditionPropertyProperty
+  = ComponentConditionPropertyProperty
+      {haddock_workaround_ = (), else' = Prelude.Nothing,
+       field = Prelude.Nothing, operand = Prelude.Nothing,
+       operandType = Prelude.Nothing, operator = Prelude.Nothing,
+       property = Prelude.Nothing, then' = Prelude.Nothing}
+instance ToResourceProperties ComponentConditionPropertyProperty where
+  toResourceProperties ComponentConditionPropertyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Component.ComponentConditionProperty",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Else" Prelude.<$> else',
+                            (JSON..=) "Field" Prelude.<$> field,
+                            (JSON..=) "Operand" Prelude.<$> operand,
+                            (JSON..=) "OperandType" Prelude.<$> operandType,
+                            (JSON..=) "Operator" Prelude.<$> operator,
+                            (JSON..=) "Property" Prelude.<$> property,
+                            (JSON..=) "Then" Prelude.<$> then'])}
+instance JSON.ToJSON ComponentConditionPropertyProperty where
+  toJSON ComponentConditionPropertyProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Else" Prelude.<$> else',
+               (JSON..=) "Field" Prelude.<$> field,
+               (JSON..=) "Operand" Prelude.<$> operand,
+               (JSON..=) "OperandType" Prelude.<$> operandType,
+               (JSON..=) "Operator" Prelude.<$> operator,
+               (JSON..=) "Property" Prelude.<$> property,
+               (JSON..=) "Then" Prelude.<$> then']))
+instance Property "Else" ComponentConditionPropertyProperty where
+  type PropertyType "Else" ComponentConditionPropertyProperty = ComponentPropertyProperty
+  set newValue ComponentConditionPropertyProperty {..}
+    = ComponentConditionPropertyProperty
+        {else' = Prelude.pure newValue, ..}
+instance Property "Field" ComponentConditionPropertyProperty where
+  type PropertyType "Field" ComponentConditionPropertyProperty = Value Prelude.Text
+  set newValue ComponentConditionPropertyProperty {..}
+    = ComponentConditionPropertyProperty
+        {field = Prelude.pure newValue, ..}
+instance Property "Operand" ComponentConditionPropertyProperty where
+  type PropertyType "Operand" ComponentConditionPropertyProperty = Value Prelude.Text
+  set newValue ComponentConditionPropertyProperty {..}
+    = ComponentConditionPropertyProperty
+        {operand = Prelude.pure newValue, ..}
+instance Property "OperandType" ComponentConditionPropertyProperty where
+  type PropertyType "OperandType" ComponentConditionPropertyProperty = Value Prelude.Text
+  set newValue ComponentConditionPropertyProperty {..}
+    = ComponentConditionPropertyProperty
+        {operandType = Prelude.pure newValue, ..}
+instance Property "Operator" ComponentConditionPropertyProperty where
+  type PropertyType "Operator" ComponentConditionPropertyProperty = Value Prelude.Text
+  set newValue ComponentConditionPropertyProperty {..}
+    = ComponentConditionPropertyProperty
+        {operator = Prelude.pure newValue, ..}
+instance Property "Property" ComponentConditionPropertyProperty where
+  type PropertyType "Property" ComponentConditionPropertyProperty = Value Prelude.Text
+  set newValue ComponentConditionPropertyProperty {..}
+    = ComponentConditionPropertyProperty
+        {property = Prelude.pure newValue, ..}
+instance Property "Then" ComponentConditionPropertyProperty where
+  type PropertyType "Then" ComponentConditionPropertyProperty = ComponentPropertyProperty
+  set newValue ComponentConditionPropertyProperty {..}
+    = ComponentConditionPropertyProperty
+        {then' = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentConditionPropertyProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentConditionPropertyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentConditionPropertyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Component.ComponentConditionPropertyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ComponentConditionPropertyProperty :: Prelude.Type
+instance ToResourceProperties ComponentConditionPropertyProperty
+instance Prelude.Eq ComponentConditionPropertyProperty
+instance Prelude.Show ComponentConditionPropertyProperty
+instance JSON.ToJSON ComponentConditionPropertyProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentDataConfigurationProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentDataConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentDataConfigurationProperty.hs
@@ -0,0 +1,71 @@
+module Stratosphere.AmplifyUIBuilder.Component.ComponentDataConfigurationProperty (
+        module Exports, ComponentDataConfigurationProperty(..),
+        mkComponentDataConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.PredicateProperty as Exports
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.SortPropertyProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ComponentDataConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentdataconfiguration.html>
+    ComponentDataConfigurationProperty {haddock_workaround_ :: (),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentdataconfiguration.html#cfn-amplifyuibuilder-component-componentdataconfiguration-identifiers>
+                                        identifiers :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentdataconfiguration.html#cfn-amplifyuibuilder-component-componentdataconfiguration-model>
+                                        model :: (Value Prelude.Text),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentdataconfiguration.html#cfn-amplifyuibuilder-component-componentdataconfiguration-predicate>
+                                        predicate :: (Prelude.Maybe PredicateProperty),
+                                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentdataconfiguration.html#cfn-amplifyuibuilder-component-componentdataconfiguration-sort>
+                                        sort :: (Prelude.Maybe [SortPropertyProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkComponentDataConfigurationProperty ::
+  Value Prelude.Text -> ComponentDataConfigurationProperty
+mkComponentDataConfigurationProperty model
+  = ComponentDataConfigurationProperty
+      {haddock_workaround_ = (), model = model,
+       identifiers = Prelude.Nothing, predicate = Prelude.Nothing,
+       sort = Prelude.Nothing}
+instance ToResourceProperties ComponentDataConfigurationProperty where
+  toResourceProperties ComponentDataConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Component.ComponentDataConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Model" JSON..= model]
+                           (Prelude.catMaybes
+                              [(JSON..=) "Identifiers" Prelude.<$> identifiers,
+                               (JSON..=) "Predicate" Prelude.<$> predicate,
+                               (JSON..=) "Sort" Prelude.<$> sort]))}
+instance JSON.ToJSON ComponentDataConfigurationProperty where
+  toJSON ComponentDataConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Model" JSON..= model]
+              (Prelude.catMaybes
+                 [(JSON..=) "Identifiers" Prelude.<$> identifiers,
+                  (JSON..=) "Predicate" Prelude.<$> predicate,
+                  (JSON..=) "Sort" Prelude.<$> sort])))
+instance Property "Identifiers" ComponentDataConfigurationProperty where
+  type PropertyType "Identifiers" ComponentDataConfigurationProperty = ValueList Prelude.Text
+  set newValue ComponentDataConfigurationProperty {..}
+    = ComponentDataConfigurationProperty
+        {identifiers = Prelude.pure newValue, ..}
+instance Property "Model" ComponentDataConfigurationProperty where
+  type PropertyType "Model" ComponentDataConfigurationProperty = Value Prelude.Text
+  set newValue ComponentDataConfigurationProperty {..}
+    = ComponentDataConfigurationProperty {model = newValue, ..}
+instance Property "Predicate" ComponentDataConfigurationProperty where
+  type PropertyType "Predicate" ComponentDataConfigurationProperty = PredicateProperty
+  set newValue ComponentDataConfigurationProperty {..}
+    = ComponentDataConfigurationProperty
+        {predicate = Prelude.pure newValue, ..}
+instance Property "Sort" ComponentDataConfigurationProperty where
+  type PropertyType "Sort" ComponentDataConfigurationProperty = [SortPropertyProperty]
+  set newValue ComponentDataConfigurationProperty {..}
+    = ComponentDataConfigurationProperty
+        {sort = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentDataConfigurationProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentDataConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentDataConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Component.ComponentDataConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ComponentDataConfigurationProperty :: Prelude.Type
+instance ToResourceProperties ComponentDataConfigurationProperty
+instance Prelude.Eq ComponentDataConfigurationProperty
+instance Prelude.Show ComponentDataConfigurationProperty
+instance JSON.ToJSON ComponentDataConfigurationProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentEventProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentEventProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentEventProperty.hs
@@ -0,0 +1,55 @@
+module Stratosphere.AmplifyUIBuilder.Component.ComponentEventProperty (
+        module Exports, ComponentEventProperty(..),
+        mkComponentEventProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.ActionParametersProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ComponentEventProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentevent.html>
+    ComponentEventProperty {haddock_workaround_ :: (),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentevent.html#cfn-amplifyuibuilder-component-componentevent-action>
+                            action :: (Prelude.Maybe (Value Prelude.Text)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentevent.html#cfn-amplifyuibuilder-component-componentevent-bindingevent>
+                            bindingEvent :: (Prelude.Maybe (Value Prelude.Text)),
+                            -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentevent.html#cfn-amplifyuibuilder-component-componentevent-parameters>
+                            parameters :: (Prelude.Maybe ActionParametersProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkComponentEventProperty :: ComponentEventProperty
+mkComponentEventProperty
+  = ComponentEventProperty
+      {haddock_workaround_ = (), action = Prelude.Nothing,
+       bindingEvent = Prelude.Nothing, parameters = Prelude.Nothing}
+instance ToResourceProperties ComponentEventProperty where
+  toResourceProperties ComponentEventProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Component.ComponentEvent",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Action" Prelude.<$> action,
+                            (JSON..=) "BindingEvent" Prelude.<$> bindingEvent,
+                            (JSON..=) "Parameters" Prelude.<$> parameters])}
+instance JSON.ToJSON ComponentEventProperty where
+  toJSON ComponentEventProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Action" Prelude.<$> action,
+               (JSON..=) "BindingEvent" Prelude.<$> bindingEvent,
+               (JSON..=) "Parameters" Prelude.<$> parameters]))
+instance Property "Action" ComponentEventProperty where
+  type PropertyType "Action" ComponentEventProperty = Value Prelude.Text
+  set newValue ComponentEventProperty {..}
+    = ComponentEventProperty {action = Prelude.pure newValue, ..}
+instance Property "BindingEvent" ComponentEventProperty where
+  type PropertyType "BindingEvent" ComponentEventProperty = Value Prelude.Text
+  set newValue ComponentEventProperty {..}
+    = ComponentEventProperty {bindingEvent = Prelude.pure newValue, ..}
+instance Property "Parameters" ComponentEventProperty where
+  type PropertyType "Parameters" ComponentEventProperty = ActionParametersProperty
+  set newValue ComponentEventProperty {..}
+    = ComponentEventProperty {parameters = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentEventProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentEventProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentEventProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Component.ComponentEventProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ComponentEventProperty :: Prelude.Type
+instance ToResourceProperties ComponentEventProperty
+instance Prelude.Eq ComponentEventProperty
+instance Prelude.Show ComponentEventProperty
+instance JSON.ToJSON ComponentEventProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentPropertyBindingPropertiesProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentPropertyBindingPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentPropertyBindingPropertiesProperty.hs
@@ -0,0 +1,50 @@
+module Stratosphere.AmplifyUIBuilder.Component.ComponentPropertyBindingPropertiesProperty (
+        ComponentPropertyBindingPropertiesProperty(..),
+        mkComponentPropertyBindingPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ComponentPropertyBindingPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentpropertybindingproperties.html>
+    ComponentPropertyBindingPropertiesProperty {haddock_workaround_ :: (),
+                                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentpropertybindingproperties.html#cfn-amplifyuibuilder-component-componentpropertybindingproperties-field>
+                                                field :: (Prelude.Maybe (Value Prelude.Text)),
+                                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentpropertybindingproperties.html#cfn-amplifyuibuilder-component-componentpropertybindingproperties-property>
+                                                property :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkComponentPropertyBindingPropertiesProperty ::
+  Value Prelude.Text -> ComponentPropertyBindingPropertiesProperty
+mkComponentPropertyBindingPropertiesProperty property
+  = ComponentPropertyBindingPropertiesProperty
+      {haddock_workaround_ = (), property = property,
+       field = Prelude.Nothing}
+instance ToResourceProperties ComponentPropertyBindingPropertiesProperty where
+  toResourceProperties
+    ComponentPropertyBindingPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Component.ComponentPropertyBindingProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Property" JSON..= property]
+                           (Prelude.catMaybes [(JSON..=) "Field" Prelude.<$> field]))}
+instance JSON.ToJSON ComponentPropertyBindingPropertiesProperty where
+  toJSON ComponentPropertyBindingPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Property" JSON..= property]
+              (Prelude.catMaybes [(JSON..=) "Field" Prelude.<$> field])))
+instance Property "Field" ComponentPropertyBindingPropertiesProperty where
+  type PropertyType "Field" ComponentPropertyBindingPropertiesProperty = Value Prelude.Text
+  set newValue ComponentPropertyBindingPropertiesProperty {..}
+    = ComponentPropertyBindingPropertiesProperty
+        {field = Prelude.pure newValue, ..}
+instance Property "Property" ComponentPropertyBindingPropertiesProperty where
+  type PropertyType "Property" ComponentPropertyBindingPropertiesProperty = Value Prelude.Text
+  set newValue ComponentPropertyBindingPropertiesProperty {..}
+    = ComponentPropertyBindingPropertiesProperty
+        {property = newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentPropertyBindingPropertiesProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentPropertyBindingPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentPropertyBindingPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Component.ComponentPropertyBindingPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ComponentPropertyBindingPropertiesProperty :: Prelude.Type
+instance ToResourceProperties ComponentPropertyBindingPropertiesProperty
+instance Prelude.Eq ComponentPropertyBindingPropertiesProperty
+instance Prelude.Show ComponentPropertyBindingPropertiesProperty
+instance JSON.ToJSON ComponentPropertyBindingPropertiesProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentPropertyProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentPropertyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentPropertyProperty.hs
@@ -0,0 +1,169 @@
+module Stratosphere.AmplifyUIBuilder.Component.ComponentPropertyProperty (
+        module Exports, ComponentPropertyProperty(..),
+        mkComponentPropertyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.ComponentConditionPropertyProperty as Exports
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.ComponentPropertyBindingPropertiesProperty as Exports
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.FormBindingElementProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ComponentPropertyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentproperty.html>
+    ComponentPropertyProperty {haddock_workaround_ :: (),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentproperty.html#cfn-amplifyuibuilder-component-componentproperty-bindingproperties>
+                               bindingProperties :: (Prelude.Maybe ComponentPropertyBindingPropertiesProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentproperty.html#cfn-amplifyuibuilder-component-componentproperty-bindings>
+                               bindings :: (Prelude.Maybe (Prelude.Map Prelude.Text FormBindingElementProperty)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentproperty.html#cfn-amplifyuibuilder-component-componentproperty-collectionbindingproperties>
+                               collectionBindingProperties :: (Prelude.Maybe ComponentPropertyBindingPropertiesProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentproperty.html#cfn-amplifyuibuilder-component-componentproperty-componentname>
+                               componentName :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentproperty.html#cfn-amplifyuibuilder-component-componentproperty-concat>
+                               concat :: (Prelude.Maybe [ComponentPropertyProperty]),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentproperty.html#cfn-amplifyuibuilder-component-componentproperty-condition>
+                               condition :: (Prelude.Maybe ComponentConditionPropertyProperty),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentproperty.html#cfn-amplifyuibuilder-component-componentproperty-configured>
+                               configured :: (Prelude.Maybe (Value Prelude.Bool)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentproperty.html#cfn-amplifyuibuilder-component-componentproperty-defaultvalue>
+                               defaultValue :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentproperty.html#cfn-amplifyuibuilder-component-componentproperty-event>
+                               event :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentproperty.html#cfn-amplifyuibuilder-component-componentproperty-importedvalue>
+                               importedValue :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentproperty.html#cfn-amplifyuibuilder-component-componentproperty-model>
+                               model :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentproperty.html#cfn-amplifyuibuilder-component-componentproperty-property>
+                               property :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentproperty.html#cfn-amplifyuibuilder-component-componentproperty-type>
+                               type' :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentproperty.html#cfn-amplifyuibuilder-component-componentproperty-userattribute>
+                               userAttribute :: (Prelude.Maybe (Value Prelude.Text)),
+                               -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentproperty.html#cfn-amplifyuibuilder-component-componentproperty-value>
+                               value :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkComponentPropertyProperty :: ComponentPropertyProperty
+mkComponentPropertyProperty
+  = ComponentPropertyProperty
+      {haddock_workaround_ = (), bindingProperties = Prelude.Nothing,
+       bindings = Prelude.Nothing,
+       collectionBindingProperties = Prelude.Nothing,
+       componentName = Prelude.Nothing, concat = Prelude.Nothing,
+       condition = Prelude.Nothing, configured = Prelude.Nothing,
+       defaultValue = Prelude.Nothing, event = Prelude.Nothing,
+       importedValue = Prelude.Nothing, model = Prelude.Nothing,
+       property = Prelude.Nothing, type' = Prelude.Nothing,
+       userAttribute = Prelude.Nothing, value = Prelude.Nothing}
+instance ToResourceProperties ComponentPropertyProperty where
+  toResourceProperties ComponentPropertyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Component.ComponentProperty",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "BindingProperties" Prelude.<$> bindingProperties,
+                            (JSON..=) "Bindings" Prelude.<$> bindings,
+                            (JSON..=) "CollectionBindingProperties"
+                              Prelude.<$> collectionBindingProperties,
+                            (JSON..=) "ComponentName" Prelude.<$> componentName,
+                            (JSON..=) "Concat" Prelude.<$> concat,
+                            (JSON..=) "Condition" Prelude.<$> condition,
+                            (JSON..=) "Configured" Prelude.<$> configured,
+                            (JSON..=) "DefaultValue" Prelude.<$> defaultValue,
+                            (JSON..=) "Event" Prelude.<$> event,
+                            (JSON..=) "ImportedValue" Prelude.<$> importedValue,
+                            (JSON..=) "Model" Prelude.<$> model,
+                            (JSON..=) "Property" Prelude.<$> property,
+                            (JSON..=) "Type" Prelude.<$> type',
+                            (JSON..=) "UserAttribute" Prelude.<$> userAttribute,
+                            (JSON..=) "Value" Prelude.<$> value])}
+instance JSON.ToJSON ComponentPropertyProperty where
+  toJSON ComponentPropertyProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "BindingProperties" Prelude.<$> bindingProperties,
+               (JSON..=) "Bindings" Prelude.<$> bindings,
+               (JSON..=) "CollectionBindingProperties"
+                 Prelude.<$> collectionBindingProperties,
+               (JSON..=) "ComponentName" Prelude.<$> componentName,
+               (JSON..=) "Concat" Prelude.<$> concat,
+               (JSON..=) "Condition" Prelude.<$> condition,
+               (JSON..=) "Configured" Prelude.<$> configured,
+               (JSON..=) "DefaultValue" Prelude.<$> defaultValue,
+               (JSON..=) "Event" Prelude.<$> event,
+               (JSON..=) "ImportedValue" Prelude.<$> importedValue,
+               (JSON..=) "Model" Prelude.<$> model,
+               (JSON..=) "Property" Prelude.<$> property,
+               (JSON..=) "Type" Prelude.<$> type',
+               (JSON..=) "UserAttribute" Prelude.<$> userAttribute,
+               (JSON..=) "Value" Prelude.<$> value]))
+instance Property "BindingProperties" ComponentPropertyProperty where
+  type PropertyType "BindingProperties" ComponentPropertyProperty = ComponentPropertyBindingPropertiesProperty
+  set newValue ComponentPropertyProperty {..}
+    = ComponentPropertyProperty
+        {bindingProperties = Prelude.pure newValue, ..}
+instance Property "Bindings" ComponentPropertyProperty where
+  type PropertyType "Bindings" ComponentPropertyProperty = Prelude.Map Prelude.Text FormBindingElementProperty
+  set newValue ComponentPropertyProperty {..}
+    = ComponentPropertyProperty {bindings = Prelude.pure newValue, ..}
+instance Property "CollectionBindingProperties" ComponentPropertyProperty where
+  type PropertyType "CollectionBindingProperties" ComponentPropertyProperty = ComponentPropertyBindingPropertiesProperty
+  set newValue ComponentPropertyProperty {..}
+    = ComponentPropertyProperty
+        {collectionBindingProperties = Prelude.pure newValue, ..}
+instance Property "ComponentName" ComponentPropertyProperty where
+  type PropertyType "ComponentName" ComponentPropertyProperty = Value Prelude.Text
+  set newValue ComponentPropertyProperty {..}
+    = ComponentPropertyProperty
+        {componentName = Prelude.pure newValue, ..}
+instance Property "Concat" ComponentPropertyProperty where
+  type PropertyType "Concat" ComponentPropertyProperty = [ComponentPropertyProperty]
+  set newValue ComponentPropertyProperty {..}
+    = ComponentPropertyProperty {concat = Prelude.pure newValue, ..}
+instance Property "Condition" ComponentPropertyProperty where
+  type PropertyType "Condition" ComponentPropertyProperty = ComponentConditionPropertyProperty
+  set newValue ComponentPropertyProperty {..}
+    = ComponentPropertyProperty {condition = Prelude.pure newValue, ..}
+instance Property "Configured" ComponentPropertyProperty where
+  type PropertyType "Configured" ComponentPropertyProperty = Value Prelude.Bool
+  set newValue ComponentPropertyProperty {..}
+    = ComponentPropertyProperty
+        {configured = Prelude.pure newValue, ..}
+instance Property "DefaultValue" ComponentPropertyProperty where
+  type PropertyType "DefaultValue" ComponentPropertyProperty = Value Prelude.Text
+  set newValue ComponentPropertyProperty {..}
+    = ComponentPropertyProperty
+        {defaultValue = Prelude.pure newValue, ..}
+instance Property "Event" ComponentPropertyProperty where
+  type PropertyType "Event" ComponentPropertyProperty = Value Prelude.Text
+  set newValue ComponentPropertyProperty {..}
+    = ComponentPropertyProperty {event = Prelude.pure newValue, ..}
+instance Property "ImportedValue" ComponentPropertyProperty where
+  type PropertyType "ImportedValue" ComponentPropertyProperty = Value Prelude.Text
+  set newValue ComponentPropertyProperty {..}
+    = ComponentPropertyProperty
+        {importedValue = Prelude.pure newValue, ..}
+instance Property "Model" ComponentPropertyProperty where
+  type PropertyType "Model" ComponentPropertyProperty = Value Prelude.Text
+  set newValue ComponentPropertyProperty {..}
+    = ComponentPropertyProperty {model = Prelude.pure newValue, ..}
+instance Property "Property" ComponentPropertyProperty where
+  type PropertyType "Property" ComponentPropertyProperty = Value Prelude.Text
+  set newValue ComponentPropertyProperty {..}
+    = ComponentPropertyProperty {property = Prelude.pure newValue, ..}
+instance Property "Type" ComponentPropertyProperty where
+  type PropertyType "Type" ComponentPropertyProperty = Value Prelude.Text
+  set newValue ComponentPropertyProperty {..}
+    = ComponentPropertyProperty {type' = Prelude.pure newValue, ..}
+instance Property "UserAttribute" ComponentPropertyProperty where
+  type PropertyType "UserAttribute" ComponentPropertyProperty = Value Prelude.Text
+  set newValue ComponentPropertyProperty {..}
+    = ComponentPropertyProperty
+        {userAttribute = Prelude.pure newValue, ..}
+instance Property "Value" ComponentPropertyProperty where
+  type PropertyType "Value" ComponentPropertyProperty = Value Prelude.Text
+  set newValue ComponentPropertyProperty {..}
+    = ComponentPropertyProperty {value = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentPropertyProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentPropertyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentPropertyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Component.ComponentPropertyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ComponentPropertyProperty :: Prelude.Type
+instance ToResourceProperties ComponentPropertyProperty
+instance Prelude.Eq ComponentPropertyProperty
+instance Prelude.Show ComponentPropertyProperty
+instance JSON.ToJSON ComponentPropertyProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentVariantProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentVariantProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentVariantProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.AmplifyUIBuilder.Component.ComponentVariantProperty (
+        ComponentVariantProperty(..), mkComponentVariantProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ComponentVariantProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentvariant.html>
+    ComponentVariantProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentvariant.html#cfn-amplifyuibuilder-component-componentvariant-overrides>
+                              overrides :: (Prelude.Maybe JSON.Object),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-componentvariant.html#cfn-amplifyuibuilder-component-componentvariant-variantvalues>
+                              variantValues :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text)))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkComponentVariantProperty :: ComponentVariantProperty
+mkComponentVariantProperty
+  = ComponentVariantProperty
+      {haddock_workaround_ = (), overrides = Prelude.Nothing,
+       variantValues = Prelude.Nothing}
+instance ToResourceProperties ComponentVariantProperty where
+  toResourceProperties ComponentVariantProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Component.ComponentVariant",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Overrides" Prelude.<$> overrides,
+                            (JSON..=) "VariantValues" Prelude.<$> variantValues])}
+instance JSON.ToJSON ComponentVariantProperty where
+  toJSON ComponentVariantProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Overrides" Prelude.<$> overrides,
+               (JSON..=) "VariantValues" Prelude.<$> variantValues]))
+instance Property "Overrides" ComponentVariantProperty where
+  type PropertyType "Overrides" ComponentVariantProperty = JSON.Object
+  set newValue ComponentVariantProperty {..}
+    = ComponentVariantProperty {overrides = Prelude.pure newValue, ..}
+instance Property "VariantValues" ComponentVariantProperty where
+  type PropertyType "VariantValues" ComponentVariantProperty = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue ComponentVariantProperty {..}
+    = ComponentVariantProperty
+        {variantValues = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentVariantProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentVariantProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/ComponentVariantProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Component.ComponentVariantProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ComponentVariantProperty :: Prelude.Type
+instance ToResourceProperties ComponentVariantProperty
+instance Prelude.Eq ComponentVariantProperty
+instance Prelude.Show ComponentVariantProperty
+instance JSON.ToJSON ComponentVariantProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/FormBindingElementProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Component/FormBindingElementProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/FormBindingElementProperty.hs
@@ -0,0 +1,41 @@
+module Stratosphere.AmplifyUIBuilder.Component.FormBindingElementProperty (
+        FormBindingElementProperty(..), mkFormBindingElementProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FormBindingElementProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-formbindingelement.html>
+    FormBindingElementProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-formbindingelement.html#cfn-amplifyuibuilder-component-formbindingelement-element>
+                                element :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-formbindingelement.html#cfn-amplifyuibuilder-component-formbindingelement-property>
+                                property :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFormBindingElementProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> FormBindingElementProperty
+mkFormBindingElementProperty element property
+  = FormBindingElementProperty
+      {haddock_workaround_ = (), element = element, property = property}
+instance ToResourceProperties FormBindingElementProperty where
+  toResourceProperties FormBindingElementProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Component.FormBindingElement",
+         supportsTags = Prelude.False,
+         properties = ["Element" JSON..= element,
+                       "Property" JSON..= property]}
+instance JSON.ToJSON FormBindingElementProperty where
+  toJSON FormBindingElementProperty {..}
+    = JSON.object
+        ["Element" JSON..= element, "Property" JSON..= property]
+instance Property "Element" FormBindingElementProperty where
+  type PropertyType "Element" FormBindingElementProperty = Value Prelude.Text
+  set newValue FormBindingElementProperty {..}
+    = FormBindingElementProperty {element = newValue, ..}
+instance Property "Property" FormBindingElementProperty where
+  type PropertyType "Property" FormBindingElementProperty = Value Prelude.Text
+  set newValue FormBindingElementProperty {..}
+    = FormBindingElementProperty {property = newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/FormBindingElementProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Component/FormBindingElementProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/FormBindingElementProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Component.FormBindingElementProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FormBindingElementProperty :: Prelude.Type
+instance ToResourceProperties FormBindingElementProperty
+instance Prelude.Eq FormBindingElementProperty
+instance Prelude.Show FormBindingElementProperty
+instance JSON.ToJSON FormBindingElementProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/MutationActionSetStateParameterProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Component/MutationActionSetStateParameterProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/MutationActionSetStateParameterProperty.hs
@@ -0,0 +1,57 @@
+module Stratosphere.AmplifyUIBuilder.Component.MutationActionSetStateParameterProperty (
+        module Exports, MutationActionSetStateParameterProperty(..),
+        mkMutationActionSetStateParameterProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Component.ComponentPropertyProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data MutationActionSetStateParameterProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-mutationactionsetstateparameter.html>
+    MutationActionSetStateParameterProperty {haddock_workaround_ :: (),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-mutationactionsetstateparameter.html#cfn-amplifyuibuilder-component-mutationactionsetstateparameter-componentname>
+                                             componentName :: (Value Prelude.Text),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-mutationactionsetstateparameter.html#cfn-amplifyuibuilder-component-mutationactionsetstateparameter-property>
+                                             property :: (Value Prelude.Text),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-mutationactionsetstateparameter.html#cfn-amplifyuibuilder-component-mutationactionsetstateparameter-set>
+                                             set' :: ComponentPropertyProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkMutationActionSetStateParameterProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text
+     -> ComponentPropertyProperty
+        -> MutationActionSetStateParameterProperty
+mkMutationActionSetStateParameterProperty
+  componentName
+  property
+  set'
+  = MutationActionSetStateParameterProperty
+      {haddock_workaround_ = (), componentName = componentName,
+       property = property, set' = set'}
+instance ToResourceProperties MutationActionSetStateParameterProperty where
+  toResourceProperties MutationActionSetStateParameterProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Component.MutationActionSetStateParameter",
+         supportsTags = Prelude.False,
+         properties = ["ComponentName" JSON..= componentName,
+                       "Property" JSON..= property, "Set" JSON..= set']}
+instance JSON.ToJSON MutationActionSetStateParameterProperty where
+  toJSON MutationActionSetStateParameterProperty {..}
+    = JSON.object
+        ["ComponentName" JSON..= componentName,
+         "Property" JSON..= property, "Set" JSON..= set']
+instance Property "ComponentName" MutationActionSetStateParameterProperty where
+  type PropertyType "ComponentName" MutationActionSetStateParameterProperty = Value Prelude.Text
+  set newValue MutationActionSetStateParameterProperty {..}
+    = MutationActionSetStateParameterProperty
+        {componentName = newValue, ..}
+instance Property "Property" MutationActionSetStateParameterProperty where
+  type PropertyType "Property" MutationActionSetStateParameterProperty = Value Prelude.Text
+  set newValue MutationActionSetStateParameterProperty {..}
+    = MutationActionSetStateParameterProperty {property = newValue, ..}
+instance Property "Set" MutationActionSetStateParameterProperty where
+  type PropertyType "Set" MutationActionSetStateParameterProperty = ComponentPropertyProperty
+  set newValue MutationActionSetStateParameterProperty {..}
+    = MutationActionSetStateParameterProperty {set' = newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/MutationActionSetStateParameterProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Component/MutationActionSetStateParameterProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/MutationActionSetStateParameterProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Component.MutationActionSetStateParameterProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data MutationActionSetStateParameterProperty :: Prelude.Type
+instance ToResourceProperties MutationActionSetStateParameterProperty
+instance Prelude.Eq MutationActionSetStateParameterProperty
+instance Prelude.Show MutationActionSetStateParameterProperty
+instance JSON.ToJSON MutationActionSetStateParameterProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/PredicateProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Component/PredicateProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/PredicateProperty.hs
@@ -0,0 +1,79 @@
+module Stratosphere.AmplifyUIBuilder.Component.PredicateProperty (
+        PredicateProperty(..), mkPredicateProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data PredicateProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-predicate.html>
+    PredicateProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-predicate.html#cfn-amplifyuibuilder-component-predicate-and>
+                       and :: (Prelude.Maybe [PredicateProperty]),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-predicate.html#cfn-amplifyuibuilder-component-predicate-field>
+                       field :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-predicate.html#cfn-amplifyuibuilder-component-predicate-operand>
+                       operand :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-predicate.html#cfn-amplifyuibuilder-component-predicate-operandtype>
+                       operandType :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-predicate.html#cfn-amplifyuibuilder-component-predicate-operator>
+                       operator :: (Prelude.Maybe (Value Prelude.Text)),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-predicate.html#cfn-amplifyuibuilder-component-predicate-or>
+                       or :: (Prelude.Maybe [PredicateProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkPredicateProperty :: PredicateProperty
+mkPredicateProperty
+  = PredicateProperty
+      {haddock_workaround_ = (), and = Prelude.Nothing,
+       field = Prelude.Nothing, operand = Prelude.Nothing,
+       operandType = Prelude.Nothing, operator = Prelude.Nothing,
+       or = Prelude.Nothing}
+instance ToResourceProperties PredicateProperty where
+  toResourceProperties PredicateProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Component.Predicate",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "And" Prelude.<$> and,
+                            (JSON..=) "Field" Prelude.<$> field,
+                            (JSON..=) "Operand" Prelude.<$> operand,
+                            (JSON..=) "OperandType" Prelude.<$> operandType,
+                            (JSON..=) "Operator" Prelude.<$> operator,
+                            (JSON..=) "Or" Prelude.<$> or])}
+instance JSON.ToJSON PredicateProperty where
+  toJSON PredicateProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "And" Prelude.<$> and,
+               (JSON..=) "Field" Prelude.<$> field,
+               (JSON..=) "Operand" Prelude.<$> operand,
+               (JSON..=) "OperandType" Prelude.<$> operandType,
+               (JSON..=) "Operator" Prelude.<$> operator,
+               (JSON..=) "Or" Prelude.<$> or]))
+instance Property "And" PredicateProperty where
+  type PropertyType "And" PredicateProperty = [PredicateProperty]
+  set newValue PredicateProperty {..}
+    = PredicateProperty {and = Prelude.pure newValue, ..}
+instance Property "Field" PredicateProperty where
+  type PropertyType "Field" PredicateProperty = Value Prelude.Text
+  set newValue PredicateProperty {..}
+    = PredicateProperty {field = Prelude.pure newValue, ..}
+instance Property "Operand" PredicateProperty where
+  type PropertyType "Operand" PredicateProperty = Value Prelude.Text
+  set newValue PredicateProperty {..}
+    = PredicateProperty {operand = Prelude.pure newValue, ..}
+instance Property "OperandType" PredicateProperty where
+  type PropertyType "OperandType" PredicateProperty = Value Prelude.Text
+  set newValue PredicateProperty {..}
+    = PredicateProperty {operandType = Prelude.pure newValue, ..}
+instance Property "Operator" PredicateProperty where
+  type PropertyType "Operator" PredicateProperty = Value Prelude.Text
+  set newValue PredicateProperty {..}
+    = PredicateProperty {operator = Prelude.pure newValue, ..}
+instance Property "Or" PredicateProperty where
+  type PropertyType "Or" PredicateProperty = [PredicateProperty]
+  set newValue PredicateProperty {..}
+    = PredicateProperty {or = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/PredicateProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Component/PredicateProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/PredicateProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Component.PredicateProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data PredicateProperty :: Prelude.Type
+instance ToResourceProperties PredicateProperty
+instance Prelude.Eq PredicateProperty
+instance Prelude.Show PredicateProperty
+instance JSON.ToJSON PredicateProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/SortPropertyProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Component/SortPropertyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/SortPropertyProperty.hs
@@ -0,0 +1,40 @@
+module Stratosphere.AmplifyUIBuilder.Component.SortPropertyProperty (
+        SortPropertyProperty(..), mkSortPropertyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SortPropertyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-sortproperty.html>
+    SortPropertyProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-sortproperty.html#cfn-amplifyuibuilder-component-sortproperty-direction>
+                          direction :: (Value Prelude.Text),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-component-sortproperty.html#cfn-amplifyuibuilder-component-sortproperty-field>
+                          field :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSortPropertyProperty ::
+  Value Prelude.Text -> Value Prelude.Text -> SortPropertyProperty
+mkSortPropertyProperty direction field
+  = SortPropertyProperty
+      {haddock_workaround_ = (), direction = direction, field = field}
+instance ToResourceProperties SortPropertyProperty where
+  toResourceProperties SortPropertyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Component.SortProperty",
+         supportsTags = Prelude.False,
+         properties = ["Direction" JSON..= direction,
+                       "Field" JSON..= field]}
+instance JSON.ToJSON SortPropertyProperty where
+  toJSON SortPropertyProperty {..}
+    = JSON.object
+        ["Direction" JSON..= direction, "Field" JSON..= field]
+instance Property "Direction" SortPropertyProperty where
+  type PropertyType "Direction" SortPropertyProperty = Value Prelude.Text
+  set newValue SortPropertyProperty {..}
+    = SortPropertyProperty {direction = newValue, ..}
+instance Property "Field" SortPropertyProperty where
+  type PropertyType "Field" SortPropertyProperty = Value Prelude.Text
+  set newValue SortPropertyProperty {..}
+    = SortPropertyProperty {field = newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Component/SortPropertyProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Component/SortPropertyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Component/SortPropertyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Component.SortPropertyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SortPropertyProperty :: Prelude.Type
+instance ToResourceProperties SortPropertyProperty
+instance Prelude.Eq SortPropertyProperty
+instance Prelude.Show SortPropertyProperty
+instance JSON.ToJSON SortPropertyProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form.hs b/gen/Stratosphere/AmplifyUIBuilder/Form.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form.hs
@@ -0,0 +1,129 @@
+module Stratosphere.AmplifyUIBuilder.Form (
+        module Exports, Form(..), mkForm
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.FieldConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.FormCTAProperty as Exports
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.FormDataTypeConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.FormStyleProperty as Exports
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.SectionalElementProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Form
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-form.html>
+    Form {haddock_workaround_ :: (),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-form.html#cfn-amplifyuibuilder-form-appid>
+          appId :: (Prelude.Maybe (Value Prelude.Text)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-form.html#cfn-amplifyuibuilder-form-cta>
+          cta :: (Prelude.Maybe FormCTAProperty),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-form.html#cfn-amplifyuibuilder-form-datatype>
+          dataType :: (Prelude.Maybe FormDataTypeConfigProperty),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-form.html#cfn-amplifyuibuilder-form-environmentname>
+          environmentName :: (Prelude.Maybe (Value Prelude.Text)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-form.html#cfn-amplifyuibuilder-form-fields>
+          fields :: (Prelude.Maybe (Prelude.Map Prelude.Text FieldConfigProperty)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-form.html#cfn-amplifyuibuilder-form-formactiontype>
+          formActionType :: (Prelude.Maybe (Value Prelude.Text)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-form.html#cfn-amplifyuibuilder-form-labeldecorator>
+          labelDecorator :: (Prelude.Maybe (Value Prelude.Text)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-form.html#cfn-amplifyuibuilder-form-name>
+          name :: (Prelude.Maybe (Value Prelude.Text)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-form.html#cfn-amplifyuibuilder-form-schemaversion>
+          schemaVersion :: (Prelude.Maybe (Value Prelude.Text)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-form.html#cfn-amplifyuibuilder-form-sectionalelements>
+          sectionalElements :: (Prelude.Maybe (Prelude.Map Prelude.Text SectionalElementProperty)),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-form.html#cfn-amplifyuibuilder-form-style>
+          style :: (Prelude.Maybe FormStyleProperty),
+          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-form.html#cfn-amplifyuibuilder-form-tags>
+          tags :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text)))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkForm :: Form
+mkForm
+  = Form
+      {haddock_workaround_ = (), appId = Prelude.Nothing,
+       cta = Prelude.Nothing, dataType = Prelude.Nothing,
+       environmentName = Prelude.Nothing, fields = Prelude.Nothing,
+       formActionType = Prelude.Nothing, labelDecorator = Prelude.Nothing,
+       name = Prelude.Nothing, schemaVersion = Prelude.Nothing,
+       sectionalElements = Prelude.Nothing, style = Prelude.Nothing,
+       tags = Prelude.Nothing}
+instance ToResourceProperties Form where
+  toResourceProperties Form {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Form",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AppId" Prelude.<$> appId,
+                            (JSON..=) "Cta" Prelude.<$> cta,
+                            (JSON..=) "DataType" Prelude.<$> dataType,
+                            (JSON..=) "EnvironmentName" Prelude.<$> environmentName,
+                            (JSON..=) "Fields" Prelude.<$> fields,
+                            (JSON..=) "FormActionType" Prelude.<$> formActionType,
+                            (JSON..=) "LabelDecorator" Prelude.<$> labelDecorator,
+                            (JSON..=) "Name" Prelude.<$> name,
+                            (JSON..=) "SchemaVersion" Prelude.<$> schemaVersion,
+                            (JSON..=) "SectionalElements" Prelude.<$> sectionalElements,
+                            (JSON..=) "Style" Prelude.<$> style,
+                            (JSON..=) "Tags" Prelude.<$> tags])}
+instance JSON.ToJSON Form where
+  toJSON Form {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AppId" Prelude.<$> appId,
+               (JSON..=) "Cta" Prelude.<$> cta,
+               (JSON..=) "DataType" Prelude.<$> dataType,
+               (JSON..=) "EnvironmentName" Prelude.<$> environmentName,
+               (JSON..=) "Fields" Prelude.<$> fields,
+               (JSON..=) "FormActionType" Prelude.<$> formActionType,
+               (JSON..=) "LabelDecorator" Prelude.<$> labelDecorator,
+               (JSON..=) "Name" Prelude.<$> name,
+               (JSON..=) "SchemaVersion" Prelude.<$> schemaVersion,
+               (JSON..=) "SectionalElements" Prelude.<$> sectionalElements,
+               (JSON..=) "Style" Prelude.<$> style,
+               (JSON..=) "Tags" Prelude.<$> tags]))
+instance Property "AppId" Form where
+  type PropertyType "AppId" Form = Value Prelude.Text
+  set newValue Form {..} = Form {appId = Prelude.pure newValue, ..}
+instance Property "Cta" Form where
+  type PropertyType "Cta" Form = FormCTAProperty
+  set newValue Form {..} = Form {cta = Prelude.pure newValue, ..}
+instance Property "DataType" Form where
+  type PropertyType "DataType" Form = FormDataTypeConfigProperty
+  set newValue Form {..}
+    = Form {dataType = Prelude.pure newValue, ..}
+instance Property "EnvironmentName" Form where
+  type PropertyType "EnvironmentName" Form = Value Prelude.Text
+  set newValue Form {..}
+    = Form {environmentName = Prelude.pure newValue, ..}
+instance Property "Fields" Form where
+  type PropertyType "Fields" Form = Prelude.Map Prelude.Text FieldConfigProperty
+  set newValue Form {..} = Form {fields = Prelude.pure newValue, ..}
+instance Property "FormActionType" Form where
+  type PropertyType "FormActionType" Form = Value Prelude.Text
+  set newValue Form {..}
+    = Form {formActionType = Prelude.pure newValue, ..}
+instance Property "LabelDecorator" Form where
+  type PropertyType "LabelDecorator" Form = Value Prelude.Text
+  set newValue Form {..}
+    = Form {labelDecorator = Prelude.pure newValue, ..}
+instance Property "Name" Form where
+  type PropertyType "Name" Form = Value Prelude.Text
+  set newValue Form {..} = Form {name = Prelude.pure newValue, ..}
+instance Property "SchemaVersion" Form where
+  type PropertyType "SchemaVersion" Form = Value Prelude.Text
+  set newValue Form {..}
+    = Form {schemaVersion = Prelude.pure newValue, ..}
+instance Property "SectionalElements" Form where
+  type PropertyType "SectionalElements" Form = Prelude.Map Prelude.Text SectionalElementProperty
+  set newValue Form {..}
+    = Form {sectionalElements = Prelude.pure newValue, ..}
+instance Property "Style" Form where
+  type PropertyType "Style" Form = FormStyleProperty
+  set newValue Form {..} = Form {style = Prelude.pure newValue, ..}
+instance Property "Tags" Form where
+  type PropertyType "Tags" Form = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue Form {..} = Form {tags = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FieldConfigProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Form/FieldConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FieldConfigProperty.hs
@@ -0,0 +1,73 @@
+module Stratosphere.AmplifyUIBuilder.Form.FieldConfigProperty (
+        module Exports, FieldConfigProperty(..), mkFieldConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.FieldInputConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.FieldPositionProperty as Exports
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.FieldValidationConfigurationProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FieldConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldconfig.html>
+    FieldConfigProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldconfig.html#cfn-amplifyuibuilder-form-fieldconfig-excluded>
+                         excluded :: (Prelude.Maybe (Value Prelude.Bool)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldconfig.html#cfn-amplifyuibuilder-form-fieldconfig-inputtype>
+                         inputType :: (Prelude.Maybe FieldInputConfigProperty),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldconfig.html#cfn-amplifyuibuilder-form-fieldconfig-label>
+                         label :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldconfig.html#cfn-amplifyuibuilder-form-fieldconfig-position>
+                         position :: (Prelude.Maybe FieldPositionProperty),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldconfig.html#cfn-amplifyuibuilder-form-fieldconfig-validations>
+                         validations :: (Prelude.Maybe [FieldValidationConfigurationProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFieldConfigProperty :: FieldConfigProperty
+mkFieldConfigProperty
+  = FieldConfigProperty
+      {haddock_workaround_ = (), excluded = Prelude.Nothing,
+       inputType = Prelude.Nothing, label = Prelude.Nothing,
+       position = Prelude.Nothing, validations = Prelude.Nothing}
+instance ToResourceProperties FieldConfigProperty where
+  toResourceProperties FieldConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Form.FieldConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Excluded" Prelude.<$> excluded,
+                            (JSON..=) "InputType" Prelude.<$> inputType,
+                            (JSON..=) "Label" Prelude.<$> label,
+                            (JSON..=) "Position" Prelude.<$> position,
+                            (JSON..=) "Validations" Prelude.<$> validations])}
+instance JSON.ToJSON FieldConfigProperty where
+  toJSON FieldConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Excluded" Prelude.<$> excluded,
+               (JSON..=) "InputType" Prelude.<$> inputType,
+               (JSON..=) "Label" Prelude.<$> label,
+               (JSON..=) "Position" Prelude.<$> position,
+               (JSON..=) "Validations" Prelude.<$> validations]))
+instance Property "Excluded" FieldConfigProperty where
+  type PropertyType "Excluded" FieldConfigProperty = Value Prelude.Bool
+  set newValue FieldConfigProperty {..}
+    = FieldConfigProperty {excluded = Prelude.pure newValue, ..}
+instance Property "InputType" FieldConfigProperty where
+  type PropertyType "InputType" FieldConfigProperty = FieldInputConfigProperty
+  set newValue FieldConfigProperty {..}
+    = FieldConfigProperty {inputType = Prelude.pure newValue, ..}
+instance Property "Label" FieldConfigProperty where
+  type PropertyType "Label" FieldConfigProperty = Value Prelude.Text
+  set newValue FieldConfigProperty {..}
+    = FieldConfigProperty {label = Prelude.pure newValue, ..}
+instance Property "Position" FieldConfigProperty where
+  type PropertyType "Position" FieldConfigProperty = FieldPositionProperty
+  set newValue FieldConfigProperty {..}
+    = FieldConfigProperty {position = Prelude.pure newValue, ..}
+instance Property "Validations" FieldConfigProperty where
+  type PropertyType "Validations" FieldConfigProperty = [FieldValidationConfigurationProperty]
+  set newValue FieldConfigProperty {..}
+    = FieldConfigProperty {validations = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FieldConfigProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Form/FieldConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FieldConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Form.FieldConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FieldConfigProperty :: Prelude.Type
+instance ToResourceProperties FieldConfigProperty
+instance Prelude.Eq FieldConfigProperty
+instance Prelude.Show FieldConfigProperty
+instance JSON.ToJSON FieldConfigProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FieldInputConfigProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Form/FieldInputConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FieldInputConfigProperty.hs
@@ -0,0 +1,178 @@
+module Stratosphere.AmplifyUIBuilder.Form.FieldInputConfigProperty (
+        module Exports, FieldInputConfigProperty(..),
+        mkFieldInputConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.FileUploaderFieldConfigProperty as Exports
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.ValueMappingsProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FieldInputConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldinputconfig.html>
+    FieldInputConfigProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldinputconfig.html#cfn-amplifyuibuilder-form-fieldinputconfig-defaultchecked>
+                              defaultChecked :: (Prelude.Maybe (Value Prelude.Bool)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldinputconfig.html#cfn-amplifyuibuilder-form-fieldinputconfig-defaultcountrycode>
+                              defaultCountryCode :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldinputconfig.html#cfn-amplifyuibuilder-form-fieldinputconfig-defaultvalue>
+                              defaultValue :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldinputconfig.html#cfn-amplifyuibuilder-form-fieldinputconfig-descriptivetext>
+                              descriptiveText :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldinputconfig.html#cfn-amplifyuibuilder-form-fieldinputconfig-fileuploaderconfig>
+                              fileUploaderConfig :: (Prelude.Maybe FileUploaderFieldConfigProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldinputconfig.html#cfn-amplifyuibuilder-form-fieldinputconfig-isarray>
+                              isArray :: (Prelude.Maybe (Value Prelude.Bool)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldinputconfig.html#cfn-amplifyuibuilder-form-fieldinputconfig-maxvalue>
+                              maxValue :: (Prelude.Maybe (Value Prelude.Double)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldinputconfig.html#cfn-amplifyuibuilder-form-fieldinputconfig-minvalue>
+                              minValue :: (Prelude.Maybe (Value Prelude.Double)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldinputconfig.html#cfn-amplifyuibuilder-form-fieldinputconfig-name>
+                              name :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldinputconfig.html#cfn-amplifyuibuilder-form-fieldinputconfig-placeholder>
+                              placeholder :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldinputconfig.html#cfn-amplifyuibuilder-form-fieldinputconfig-readonly>
+                              readOnly :: (Prelude.Maybe (Value Prelude.Bool)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldinputconfig.html#cfn-amplifyuibuilder-form-fieldinputconfig-required>
+                              required :: (Prelude.Maybe (Value Prelude.Bool)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldinputconfig.html#cfn-amplifyuibuilder-form-fieldinputconfig-step>
+                              step :: (Prelude.Maybe (Value Prelude.Double)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldinputconfig.html#cfn-amplifyuibuilder-form-fieldinputconfig-type>
+                              type' :: (Value Prelude.Text),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldinputconfig.html#cfn-amplifyuibuilder-form-fieldinputconfig-value>
+                              value :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldinputconfig.html#cfn-amplifyuibuilder-form-fieldinputconfig-valuemappings>
+                              valueMappings :: (Prelude.Maybe ValueMappingsProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFieldInputConfigProperty ::
+  Value Prelude.Text -> FieldInputConfigProperty
+mkFieldInputConfigProperty type'
+  = FieldInputConfigProperty
+      {haddock_workaround_ = (), type' = type',
+       defaultChecked = Prelude.Nothing,
+       defaultCountryCode = Prelude.Nothing,
+       defaultValue = Prelude.Nothing, descriptiveText = Prelude.Nothing,
+       fileUploaderConfig = Prelude.Nothing, isArray = Prelude.Nothing,
+       maxValue = Prelude.Nothing, minValue = Prelude.Nothing,
+       name = Prelude.Nothing, placeholder = Prelude.Nothing,
+       readOnly = Prelude.Nothing, required = Prelude.Nothing,
+       step = Prelude.Nothing, value = Prelude.Nothing,
+       valueMappings = Prelude.Nothing}
+instance ToResourceProperties FieldInputConfigProperty where
+  toResourceProperties FieldInputConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Form.FieldInputConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "DefaultChecked" Prelude.<$> defaultChecked,
+                               (JSON..=) "DefaultCountryCode" Prelude.<$> defaultCountryCode,
+                               (JSON..=) "DefaultValue" Prelude.<$> defaultValue,
+                               (JSON..=) "DescriptiveText" Prelude.<$> descriptiveText,
+                               (JSON..=) "FileUploaderConfig" Prelude.<$> fileUploaderConfig,
+                               (JSON..=) "IsArray" Prelude.<$> isArray,
+                               (JSON..=) "MaxValue" Prelude.<$> maxValue,
+                               (JSON..=) "MinValue" Prelude.<$> minValue,
+                               (JSON..=) "Name" Prelude.<$> name,
+                               (JSON..=) "Placeholder" Prelude.<$> placeholder,
+                               (JSON..=) "ReadOnly" Prelude.<$> readOnly,
+                               (JSON..=) "Required" Prelude.<$> required,
+                               (JSON..=) "Step" Prelude.<$> step,
+                               (JSON..=) "Value" Prelude.<$> value,
+                               (JSON..=) "ValueMappings" Prelude.<$> valueMappings]))}
+instance JSON.ToJSON FieldInputConfigProperty where
+  toJSON FieldInputConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "DefaultChecked" Prelude.<$> defaultChecked,
+                  (JSON..=) "DefaultCountryCode" Prelude.<$> defaultCountryCode,
+                  (JSON..=) "DefaultValue" Prelude.<$> defaultValue,
+                  (JSON..=) "DescriptiveText" Prelude.<$> descriptiveText,
+                  (JSON..=) "FileUploaderConfig" Prelude.<$> fileUploaderConfig,
+                  (JSON..=) "IsArray" Prelude.<$> isArray,
+                  (JSON..=) "MaxValue" Prelude.<$> maxValue,
+                  (JSON..=) "MinValue" Prelude.<$> minValue,
+                  (JSON..=) "Name" Prelude.<$> name,
+                  (JSON..=) "Placeholder" Prelude.<$> placeholder,
+                  (JSON..=) "ReadOnly" Prelude.<$> readOnly,
+                  (JSON..=) "Required" Prelude.<$> required,
+                  (JSON..=) "Step" Prelude.<$> step,
+                  (JSON..=) "Value" Prelude.<$> value,
+                  (JSON..=) "ValueMappings" Prelude.<$> valueMappings])))
+instance Property "DefaultChecked" FieldInputConfigProperty where
+  type PropertyType "DefaultChecked" FieldInputConfigProperty = Value Prelude.Bool
+  set newValue FieldInputConfigProperty {..}
+    = FieldInputConfigProperty
+        {defaultChecked = Prelude.pure newValue, ..}
+instance Property "DefaultCountryCode" FieldInputConfigProperty where
+  type PropertyType "DefaultCountryCode" FieldInputConfigProperty = Value Prelude.Text
+  set newValue FieldInputConfigProperty {..}
+    = FieldInputConfigProperty
+        {defaultCountryCode = Prelude.pure newValue, ..}
+instance Property "DefaultValue" FieldInputConfigProperty where
+  type PropertyType "DefaultValue" FieldInputConfigProperty = Value Prelude.Text
+  set newValue FieldInputConfigProperty {..}
+    = FieldInputConfigProperty
+        {defaultValue = Prelude.pure newValue, ..}
+instance Property "DescriptiveText" FieldInputConfigProperty where
+  type PropertyType "DescriptiveText" FieldInputConfigProperty = Value Prelude.Text
+  set newValue FieldInputConfigProperty {..}
+    = FieldInputConfigProperty
+        {descriptiveText = Prelude.pure newValue, ..}
+instance Property "FileUploaderConfig" FieldInputConfigProperty where
+  type PropertyType "FileUploaderConfig" FieldInputConfigProperty = FileUploaderFieldConfigProperty
+  set newValue FieldInputConfigProperty {..}
+    = FieldInputConfigProperty
+        {fileUploaderConfig = Prelude.pure newValue, ..}
+instance Property "IsArray" FieldInputConfigProperty where
+  type PropertyType "IsArray" FieldInputConfigProperty = Value Prelude.Bool
+  set newValue FieldInputConfigProperty {..}
+    = FieldInputConfigProperty {isArray = Prelude.pure newValue, ..}
+instance Property "MaxValue" FieldInputConfigProperty where
+  type PropertyType "MaxValue" FieldInputConfigProperty = Value Prelude.Double
+  set newValue FieldInputConfigProperty {..}
+    = FieldInputConfigProperty {maxValue = Prelude.pure newValue, ..}
+instance Property "MinValue" FieldInputConfigProperty where
+  type PropertyType "MinValue" FieldInputConfigProperty = Value Prelude.Double
+  set newValue FieldInputConfigProperty {..}
+    = FieldInputConfigProperty {minValue = Prelude.pure newValue, ..}
+instance Property "Name" FieldInputConfigProperty where
+  type PropertyType "Name" FieldInputConfigProperty = Value Prelude.Text
+  set newValue FieldInputConfigProperty {..}
+    = FieldInputConfigProperty {name = Prelude.pure newValue, ..}
+instance Property "Placeholder" FieldInputConfigProperty where
+  type PropertyType "Placeholder" FieldInputConfigProperty = Value Prelude.Text
+  set newValue FieldInputConfigProperty {..}
+    = FieldInputConfigProperty
+        {placeholder = Prelude.pure newValue, ..}
+instance Property "ReadOnly" FieldInputConfigProperty where
+  type PropertyType "ReadOnly" FieldInputConfigProperty = Value Prelude.Bool
+  set newValue FieldInputConfigProperty {..}
+    = FieldInputConfigProperty {readOnly = Prelude.pure newValue, ..}
+instance Property "Required" FieldInputConfigProperty where
+  type PropertyType "Required" FieldInputConfigProperty = Value Prelude.Bool
+  set newValue FieldInputConfigProperty {..}
+    = FieldInputConfigProperty {required = Prelude.pure newValue, ..}
+instance Property "Step" FieldInputConfigProperty where
+  type PropertyType "Step" FieldInputConfigProperty = Value Prelude.Double
+  set newValue FieldInputConfigProperty {..}
+    = FieldInputConfigProperty {step = Prelude.pure newValue, ..}
+instance Property "Type" FieldInputConfigProperty where
+  type PropertyType "Type" FieldInputConfigProperty = Value Prelude.Text
+  set newValue FieldInputConfigProperty {..}
+    = FieldInputConfigProperty {type' = newValue, ..}
+instance Property "Value" FieldInputConfigProperty where
+  type PropertyType "Value" FieldInputConfigProperty = Value Prelude.Text
+  set newValue FieldInputConfigProperty {..}
+    = FieldInputConfigProperty {value = Prelude.pure newValue, ..}
+instance Property "ValueMappings" FieldInputConfigProperty where
+  type PropertyType "ValueMappings" FieldInputConfigProperty = ValueMappingsProperty
+  set newValue FieldInputConfigProperty {..}
+    = FieldInputConfigProperty
+        {valueMappings = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FieldInputConfigProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Form/FieldInputConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FieldInputConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Form.FieldInputConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FieldInputConfigProperty :: Prelude.Type
+instance ToResourceProperties FieldInputConfigProperty
+instance Prelude.Eq FieldInputConfigProperty
+instance Prelude.Show FieldInputConfigProperty
+instance JSON.ToJSON FieldInputConfigProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FieldPositionProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Form/FieldPositionProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FieldPositionProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.AmplifyUIBuilder.Form.FieldPositionProperty (
+        FieldPositionProperty(..), mkFieldPositionProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FieldPositionProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldposition.html>
+    FieldPositionProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldposition.html#cfn-amplifyuibuilder-form-fieldposition-below>
+                           below :: (Prelude.Maybe (Value Prelude.Text)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldposition.html#cfn-amplifyuibuilder-form-fieldposition-fixed>
+                           fixed :: (Prelude.Maybe (Value Prelude.Text)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldposition.html#cfn-amplifyuibuilder-form-fieldposition-rightof>
+                           rightOf :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFieldPositionProperty :: FieldPositionProperty
+mkFieldPositionProperty
+  = FieldPositionProperty
+      {haddock_workaround_ = (), below = Prelude.Nothing,
+       fixed = Prelude.Nothing, rightOf = Prelude.Nothing}
+instance ToResourceProperties FieldPositionProperty where
+  toResourceProperties FieldPositionProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Form.FieldPosition",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Below" Prelude.<$> below,
+                            (JSON..=) "Fixed" Prelude.<$> fixed,
+                            (JSON..=) "RightOf" Prelude.<$> rightOf])}
+instance JSON.ToJSON FieldPositionProperty where
+  toJSON FieldPositionProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Below" Prelude.<$> below,
+               (JSON..=) "Fixed" Prelude.<$> fixed,
+               (JSON..=) "RightOf" Prelude.<$> rightOf]))
+instance Property "Below" FieldPositionProperty where
+  type PropertyType "Below" FieldPositionProperty = Value Prelude.Text
+  set newValue FieldPositionProperty {..}
+    = FieldPositionProperty {below = Prelude.pure newValue, ..}
+instance Property "Fixed" FieldPositionProperty where
+  type PropertyType "Fixed" FieldPositionProperty = Value Prelude.Text
+  set newValue FieldPositionProperty {..}
+    = FieldPositionProperty {fixed = Prelude.pure newValue, ..}
+instance Property "RightOf" FieldPositionProperty where
+  type PropertyType "RightOf" FieldPositionProperty = Value Prelude.Text
+  set newValue FieldPositionProperty {..}
+    = FieldPositionProperty {rightOf = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FieldPositionProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Form/FieldPositionProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FieldPositionProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Form.FieldPositionProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FieldPositionProperty :: Prelude.Type
+instance ToResourceProperties FieldPositionProperty
+instance Prelude.Eq FieldPositionProperty
+instance Prelude.Show FieldPositionProperty
+instance JSON.ToJSON FieldPositionProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FieldValidationConfigurationProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Form/FieldValidationConfigurationProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FieldValidationConfigurationProperty.hs
@@ -0,0 +1,69 @@
+module Stratosphere.AmplifyUIBuilder.Form.FieldValidationConfigurationProperty (
+        FieldValidationConfigurationProperty(..),
+        mkFieldValidationConfigurationProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FieldValidationConfigurationProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldvalidationconfiguration.html>
+    FieldValidationConfigurationProperty {haddock_workaround_ :: (),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldvalidationconfiguration.html#cfn-amplifyuibuilder-form-fieldvalidationconfiguration-numvalues>
+                                          numValues :: (Prelude.Maybe (ValueList Prelude.Double)),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldvalidationconfiguration.html#cfn-amplifyuibuilder-form-fieldvalidationconfiguration-strvalues>
+                                          strValues :: (Prelude.Maybe (ValueList Prelude.Text)),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldvalidationconfiguration.html#cfn-amplifyuibuilder-form-fieldvalidationconfiguration-type>
+                                          type' :: (Value Prelude.Text),
+                                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fieldvalidationconfiguration.html#cfn-amplifyuibuilder-form-fieldvalidationconfiguration-validationmessage>
+                                          validationMessage :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFieldValidationConfigurationProperty ::
+  Value Prelude.Text -> FieldValidationConfigurationProperty
+mkFieldValidationConfigurationProperty type'
+  = FieldValidationConfigurationProperty
+      {haddock_workaround_ = (), type' = type',
+       numValues = Prelude.Nothing, strValues = Prelude.Nothing,
+       validationMessage = Prelude.Nothing}
+instance ToResourceProperties FieldValidationConfigurationProperty where
+  toResourceProperties FieldValidationConfigurationProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Form.FieldValidationConfiguration",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "NumValues" Prelude.<$> numValues,
+                               (JSON..=) "StrValues" Prelude.<$> strValues,
+                               (JSON..=) "ValidationMessage" Prelude.<$> validationMessage]))}
+instance JSON.ToJSON FieldValidationConfigurationProperty where
+  toJSON FieldValidationConfigurationProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "NumValues" Prelude.<$> numValues,
+                  (JSON..=) "StrValues" Prelude.<$> strValues,
+                  (JSON..=) "ValidationMessage" Prelude.<$> validationMessage])))
+instance Property "NumValues" FieldValidationConfigurationProperty where
+  type PropertyType "NumValues" FieldValidationConfigurationProperty = ValueList Prelude.Double
+  set newValue FieldValidationConfigurationProperty {..}
+    = FieldValidationConfigurationProperty
+        {numValues = Prelude.pure newValue, ..}
+instance Property "StrValues" FieldValidationConfigurationProperty where
+  type PropertyType "StrValues" FieldValidationConfigurationProperty = ValueList Prelude.Text
+  set newValue FieldValidationConfigurationProperty {..}
+    = FieldValidationConfigurationProperty
+        {strValues = Prelude.pure newValue, ..}
+instance Property "Type" FieldValidationConfigurationProperty where
+  type PropertyType "Type" FieldValidationConfigurationProperty = Value Prelude.Text
+  set newValue FieldValidationConfigurationProperty {..}
+    = FieldValidationConfigurationProperty {type' = newValue, ..}
+instance Property "ValidationMessage" FieldValidationConfigurationProperty where
+  type PropertyType "ValidationMessage" FieldValidationConfigurationProperty = Value Prelude.Text
+  set newValue FieldValidationConfigurationProperty {..}
+    = FieldValidationConfigurationProperty
+        {validationMessage = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FieldValidationConfigurationProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Form/FieldValidationConfigurationProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FieldValidationConfigurationProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Form.FieldValidationConfigurationProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FieldValidationConfigurationProperty :: Prelude.Type
+instance ToResourceProperties FieldValidationConfigurationProperty
+instance Prelude.Eq FieldValidationConfigurationProperty
+instance Prelude.Show FieldValidationConfigurationProperty
+instance JSON.ToJSON FieldValidationConfigurationProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FileUploaderFieldConfigProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Form/FileUploaderFieldConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FileUploaderFieldConfigProperty.hs
@@ -0,0 +1,89 @@
+module Stratosphere.AmplifyUIBuilder.Form.FileUploaderFieldConfigProperty (
+        FileUploaderFieldConfigProperty(..),
+        mkFileUploaderFieldConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FileUploaderFieldConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fileuploaderfieldconfig.html>
+    FileUploaderFieldConfigProperty {haddock_workaround_ :: (),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fileuploaderfieldconfig.html#cfn-amplifyuibuilder-form-fileuploaderfieldconfig-acceptedfiletypes>
+                                     acceptedFileTypes :: (ValueList Prelude.Text),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fileuploaderfieldconfig.html#cfn-amplifyuibuilder-form-fileuploaderfieldconfig-accesslevel>
+                                     accessLevel :: (Value Prelude.Text),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fileuploaderfieldconfig.html#cfn-amplifyuibuilder-form-fileuploaderfieldconfig-isresumable>
+                                     isResumable :: (Prelude.Maybe (Value Prelude.Bool)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fileuploaderfieldconfig.html#cfn-amplifyuibuilder-form-fileuploaderfieldconfig-maxfilecount>
+                                     maxFileCount :: (Prelude.Maybe (Value Prelude.Double)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fileuploaderfieldconfig.html#cfn-amplifyuibuilder-form-fileuploaderfieldconfig-maxsize>
+                                     maxSize :: (Prelude.Maybe (Value Prelude.Double)),
+                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-fileuploaderfieldconfig.html#cfn-amplifyuibuilder-form-fileuploaderfieldconfig-showthumbnails>
+                                     showThumbnails :: (Prelude.Maybe (Value Prelude.Bool))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFileUploaderFieldConfigProperty ::
+  ValueList Prelude.Text
+  -> Value Prelude.Text -> FileUploaderFieldConfigProperty
+mkFileUploaderFieldConfigProperty acceptedFileTypes accessLevel
+  = FileUploaderFieldConfigProperty
+      {haddock_workaround_ = (), acceptedFileTypes = acceptedFileTypes,
+       accessLevel = accessLevel, isResumable = Prelude.Nothing,
+       maxFileCount = Prelude.Nothing, maxSize = Prelude.Nothing,
+       showThumbnails = Prelude.Nothing}
+instance ToResourceProperties FileUploaderFieldConfigProperty where
+  toResourceProperties FileUploaderFieldConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Form.FileUploaderFieldConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["AcceptedFileTypes" JSON..= acceptedFileTypes,
+                            "AccessLevel" JSON..= accessLevel]
+                           (Prelude.catMaybes
+                              [(JSON..=) "IsResumable" Prelude.<$> isResumable,
+                               (JSON..=) "MaxFileCount" Prelude.<$> maxFileCount,
+                               (JSON..=) "MaxSize" Prelude.<$> maxSize,
+                               (JSON..=) "ShowThumbnails" Prelude.<$> showThumbnails]))}
+instance JSON.ToJSON FileUploaderFieldConfigProperty where
+  toJSON FileUploaderFieldConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["AcceptedFileTypes" JSON..= acceptedFileTypes,
+               "AccessLevel" JSON..= accessLevel]
+              (Prelude.catMaybes
+                 [(JSON..=) "IsResumable" Prelude.<$> isResumable,
+                  (JSON..=) "MaxFileCount" Prelude.<$> maxFileCount,
+                  (JSON..=) "MaxSize" Prelude.<$> maxSize,
+                  (JSON..=) "ShowThumbnails" Prelude.<$> showThumbnails])))
+instance Property "AcceptedFileTypes" FileUploaderFieldConfigProperty where
+  type PropertyType "AcceptedFileTypes" FileUploaderFieldConfigProperty = ValueList Prelude.Text
+  set newValue FileUploaderFieldConfigProperty {..}
+    = FileUploaderFieldConfigProperty
+        {acceptedFileTypes = newValue, ..}
+instance Property "AccessLevel" FileUploaderFieldConfigProperty where
+  type PropertyType "AccessLevel" FileUploaderFieldConfigProperty = Value Prelude.Text
+  set newValue FileUploaderFieldConfigProperty {..}
+    = FileUploaderFieldConfigProperty {accessLevel = newValue, ..}
+instance Property "IsResumable" FileUploaderFieldConfigProperty where
+  type PropertyType "IsResumable" FileUploaderFieldConfigProperty = Value Prelude.Bool
+  set newValue FileUploaderFieldConfigProperty {..}
+    = FileUploaderFieldConfigProperty
+        {isResumable = Prelude.pure newValue, ..}
+instance Property "MaxFileCount" FileUploaderFieldConfigProperty where
+  type PropertyType "MaxFileCount" FileUploaderFieldConfigProperty = Value Prelude.Double
+  set newValue FileUploaderFieldConfigProperty {..}
+    = FileUploaderFieldConfigProperty
+        {maxFileCount = Prelude.pure newValue, ..}
+instance Property "MaxSize" FileUploaderFieldConfigProperty where
+  type PropertyType "MaxSize" FileUploaderFieldConfigProperty = Value Prelude.Double
+  set newValue FileUploaderFieldConfigProperty {..}
+    = FileUploaderFieldConfigProperty
+        {maxSize = Prelude.pure newValue, ..}
+instance Property "ShowThumbnails" FileUploaderFieldConfigProperty where
+  type PropertyType "ShowThumbnails" FileUploaderFieldConfigProperty = Value Prelude.Bool
+  set newValue FileUploaderFieldConfigProperty {..}
+    = FileUploaderFieldConfigProperty
+        {showThumbnails = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FileUploaderFieldConfigProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Form/FileUploaderFieldConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FileUploaderFieldConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Form.FileUploaderFieldConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FileUploaderFieldConfigProperty :: Prelude.Type
+instance ToResourceProperties FileUploaderFieldConfigProperty
+instance Prelude.Eq FileUploaderFieldConfigProperty
+instance Prelude.Show FileUploaderFieldConfigProperty
+instance JSON.ToJSON FileUploaderFieldConfigProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FormButtonProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Form/FormButtonProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FormButtonProperty.hs
@@ -0,0 +1,54 @@
+module Stratosphere.AmplifyUIBuilder.Form.FormButtonProperty (
+        module Exports, FormButtonProperty(..), mkFormButtonProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.FieldPositionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FormButtonProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formbutton.html>
+    FormButtonProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formbutton.html#cfn-amplifyuibuilder-form-formbutton-children>
+                        children :: (Prelude.Maybe (Value Prelude.Text)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formbutton.html#cfn-amplifyuibuilder-form-formbutton-excluded>
+                        excluded :: (Prelude.Maybe (Value Prelude.Bool)),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formbutton.html#cfn-amplifyuibuilder-form-formbutton-position>
+                        position :: (Prelude.Maybe FieldPositionProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFormButtonProperty :: FormButtonProperty
+mkFormButtonProperty
+  = FormButtonProperty
+      {haddock_workaround_ = (), children = Prelude.Nothing,
+       excluded = Prelude.Nothing, position = Prelude.Nothing}
+instance ToResourceProperties FormButtonProperty where
+  toResourceProperties FormButtonProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Form.FormButton",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Children" Prelude.<$> children,
+                            (JSON..=) "Excluded" Prelude.<$> excluded,
+                            (JSON..=) "Position" Prelude.<$> position])}
+instance JSON.ToJSON FormButtonProperty where
+  toJSON FormButtonProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Children" Prelude.<$> children,
+               (JSON..=) "Excluded" Prelude.<$> excluded,
+               (JSON..=) "Position" Prelude.<$> position]))
+instance Property "Children" FormButtonProperty where
+  type PropertyType "Children" FormButtonProperty = Value Prelude.Text
+  set newValue FormButtonProperty {..}
+    = FormButtonProperty {children = Prelude.pure newValue, ..}
+instance Property "Excluded" FormButtonProperty where
+  type PropertyType "Excluded" FormButtonProperty = Value Prelude.Bool
+  set newValue FormButtonProperty {..}
+    = FormButtonProperty {excluded = Prelude.pure newValue, ..}
+instance Property "Position" FormButtonProperty where
+  type PropertyType "Position" FormButtonProperty = FieldPositionProperty
+  set newValue FormButtonProperty {..}
+    = FormButtonProperty {position = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FormButtonProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Form/FormButtonProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FormButtonProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Form.FormButtonProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FormButtonProperty :: Prelude.Type
+instance ToResourceProperties FormButtonProperty
+instance Prelude.Eq FormButtonProperty
+instance Prelude.Show FormButtonProperty
+instance JSON.ToJSON FormButtonProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FormCTAProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Form/FormCTAProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FormCTAProperty.hs
@@ -0,0 +1,63 @@
+module Stratosphere.AmplifyUIBuilder.Form.FormCTAProperty (
+        module Exports, FormCTAProperty(..), mkFormCTAProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.FormButtonProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FormCTAProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formcta.html>
+    FormCTAProperty {haddock_workaround_ :: (),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formcta.html#cfn-amplifyuibuilder-form-formcta-cancel>
+                     cancel :: (Prelude.Maybe FormButtonProperty),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formcta.html#cfn-amplifyuibuilder-form-formcta-clear>
+                     clear :: (Prelude.Maybe FormButtonProperty),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formcta.html#cfn-amplifyuibuilder-form-formcta-position>
+                     position :: (Prelude.Maybe (Value Prelude.Text)),
+                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formcta.html#cfn-amplifyuibuilder-form-formcta-submit>
+                     submit :: (Prelude.Maybe FormButtonProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFormCTAProperty :: FormCTAProperty
+mkFormCTAProperty
+  = FormCTAProperty
+      {haddock_workaround_ = (), cancel = Prelude.Nothing,
+       clear = Prelude.Nothing, position = Prelude.Nothing,
+       submit = Prelude.Nothing}
+instance ToResourceProperties FormCTAProperty where
+  toResourceProperties FormCTAProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Form.FormCTA",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Cancel" Prelude.<$> cancel,
+                            (JSON..=) "Clear" Prelude.<$> clear,
+                            (JSON..=) "Position" Prelude.<$> position,
+                            (JSON..=) "Submit" Prelude.<$> submit])}
+instance JSON.ToJSON FormCTAProperty where
+  toJSON FormCTAProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Cancel" Prelude.<$> cancel,
+               (JSON..=) "Clear" Prelude.<$> clear,
+               (JSON..=) "Position" Prelude.<$> position,
+               (JSON..=) "Submit" Prelude.<$> submit]))
+instance Property "Cancel" FormCTAProperty where
+  type PropertyType "Cancel" FormCTAProperty = FormButtonProperty
+  set newValue FormCTAProperty {..}
+    = FormCTAProperty {cancel = Prelude.pure newValue, ..}
+instance Property "Clear" FormCTAProperty where
+  type PropertyType "Clear" FormCTAProperty = FormButtonProperty
+  set newValue FormCTAProperty {..}
+    = FormCTAProperty {clear = Prelude.pure newValue, ..}
+instance Property "Position" FormCTAProperty where
+  type PropertyType "Position" FormCTAProperty = Value Prelude.Text
+  set newValue FormCTAProperty {..}
+    = FormCTAProperty {position = Prelude.pure newValue, ..}
+instance Property "Submit" FormCTAProperty where
+  type PropertyType "Submit" FormCTAProperty = FormButtonProperty
+  set newValue FormCTAProperty {..}
+    = FormCTAProperty {submit = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FormCTAProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Form/FormCTAProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FormCTAProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Form.FormCTAProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FormCTAProperty :: Prelude.Type
+instance ToResourceProperties FormCTAProperty
+instance Prelude.Eq FormCTAProperty
+instance Prelude.Show FormCTAProperty
+instance JSON.ToJSON FormCTAProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FormDataTypeConfigProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Form/FormDataTypeConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FormDataTypeConfigProperty.hs
@@ -0,0 +1,43 @@
+module Stratosphere.AmplifyUIBuilder.Form.FormDataTypeConfigProperty (
+        FormDataTypeConfigProperty(..), mkFormDataTypeConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FormDataTypeConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formdatatypeconfig.html>
+    FormDataTypeConfigProperty {haddock_workaround_ :: (),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formdatatypeconfig.html#cfn-amplifyuibuilder-form-formdatatypeconfig-datasourcetype>
+                                dataSourceType :: (Value Prelude.Text),
+                                -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formdatatypeconfig.html#cfn-amplifyuibuilder-form-formdatatypeconfig-datatypename>
+                                dataTypeName :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFormDataTypeConfigProperty ::
+  Value Prelude.Text
+  -> Value Prelude.Text -> FormDataTypeConfigProperty
+mkFormDataTypeConfigProperty dataSourceType dataTypeName
+  = FormDataTypeConfigProperty
+      {haddock_workaround_ = (), dataSourceType = dataSourceType,
+       dataTypeName = dataTypeName}
+instance ToResourceProperties FormDataTypeConfigProperty where
+  toResourceProperties FormDataTypeConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Form.FormDataTypeConfig",
+         supportsTags = Prelude.False,
+         properties = ["DataSourceType" JSON..= dataSourceType,
+                       "DataTypeName" JSON..= dataTypeName]}
+instance JSON.ToJSON FormDataTypeConfigProperty where
+  toJSON FormDataTypeConfigProperty {..}
+    = JSON.object
+        ["DataSourceType" JSON..= dataSourceType,
+         "DataTypeName" JSON..= dataTypeName]
+instance Property "DataSourceType" FormDataTypeConfigProperty where
+  type PropertyType "DataSourceType" FormDataTypeConfigProperty = Value Prelude.Text
+  set newValue FormDataTypeConfigProperty {..}
+    = FormDataTypeConfigProperty {dataSourceType = newValue, ..}
+instance Property "DataTypeName" FormDataTypeConfigProperty where
+  type PropertyType "DataTypeName" FormDataTypeConfigProperty = Value Prelude.Text
+  set newValue FormDataTypeConfigProperty {..}
+    = FormDataTypeConfigProperty {dataTypeName = newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FormDataTypeConfigProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Form/FormDataTypeConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FormDataTypeConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Form.FormDataTypeConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FormDataTypeConfigProperty :: Prelude.Type
+instance ToResourceProperties FormDataTypeConfigProperty
+instance Prelude.Eq FormDataTypeConfigProperty
+instance Prelude.Show FormDataTypeConfigProperty
+instance JSON.ToJSON FormDataTypeConfigProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputBindingPropertiesValuePropertiesProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputBindingPropertiesValuePropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputBindingPropertiesValuePropertiesProperty.hs
@@ -0,0 +1,38 @@
+module Stratosphere.AmplifyUIBuilder.Form.FormInputBindingPropertiesValuePropertiesProperty (
+        FormInputBindingPropertiesValuePropertiesProperty(..),
+        mkFormInputBindingPropertiesValuePropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FormInputBindingPropertiesValuePropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-forminputbindingpropertiesvalueproperties.html>
+    FormInputBindingPropertiesValuePropertiesProperty {haddock_workaround_ :: (),
+                                                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-forminputbindingpropertiesvalueproperties.html#cfn-amplifyuibuilder-form-forminputbindingpropertiesvalueproperties-model>
+                                                       model :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFormInputBindingPropertiesValuePropertiesProperty ::
+  FormInputBindingPropertiesValuePropertiesProperty
+mkFormInputBindingPropertiesValuePropertiesProperty
+  = FormInputBindingPropertiesValuePropertiesProperty
+      {haddock_workaround_ = (), model = Prelude.Nothing}
+instance ToResourceProperties FormInputBindingPropertiesValuePropertiesProperty where
+  toResourceProperties
+    FormInputBindingPropertiesValuePropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Form.FormInputBindingPropertiesValueProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes [(JSON..=) "Model" Prelude.<$> model])}
+instance JSON.ToJSON FormInputBindingPropertiesValuePropertiesProperty where
+  toJSON FormInputBindingPropertiesValuePropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes [(JSON..=) "Model" Prelude.<$> model]))
+instance Property "Model" FormInputBindingPropertiesValuePropertiesProperty where
+  type PropertyType "Model" FormInputBindingPropertiesValuePropertiesProperty = Value Prelude.Text
+  set newValue FormInputBindingPropertiesValuePropertiesProperty {..}
+    = FormInputBindingPropertiesValuePropertiesProperty
+        {model = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputBindingPropertiesValuePropertiesProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputBindingPropertiesValuePropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputBindingPropertiesValuePropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Form.FormInputBindingPropertiesValuePropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FormInputBindingPropertiesValuePropertiesProperty :: Prelude.Type
+instance ToResourceProperties FormInputBindingPropertiesValuePropertiesProperty
+instance Prelude.Eq FormInputBindingPropertiesValuePropertiesProperty
+instance Prelude.Show FormInputBindingPropertiesValuePropertiesProperty
+instance JSON.ToJSON FormInputBindingPropertiesValuePropertiesProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputBindingPropertiesValueProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputBindingPropertiesValueProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputBindingPropertiesValueProperty.hs
@@ -0,0 +1,50 @@
+module Stratosphere.AmplifyUIBuilder.Form.FormInputBindingPropertiesValueProperty (
+        module Exports, FormInputBindingPropertiesValueProperty(..),
+        mkFormInputBindingPropertiesValueProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.FormInputBindingPropertiesValuePropertiesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FormInputBindingPropertiesValueProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-forminputbindingpropertiesvalue.html>
+    FormInputBindingPropertiesValueProperty {haddock_workaround_ :: (),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-forminputbindingpropertiesvalue.html#cfn-amplifyuibuilder-form-forminputbindingpropertiesvalue-bindingproperties>
+                                             bindingProperties :: (Prelude.Maybe FormInputBindingPropertiesValuePropertiesProperty),
+                                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-forminputbindingpropertiesvalue.html#cfn-amplifyuibuilder-form-forminputbindingpropertiesvalue-type>
+                                             type' :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFormInputBindingPropertiesValueProperty ::
+  FormInputBindingPropertiesValueProperty
+mkFormInputBindingPropertiesValueProperty
+  = FormInputBindingPropertiesValueProperty
+      {haddock_workaround_ = (), bindingProperties = Prelude.Nothing,
+       type' = Prelude.Nothing}
+instance ToResourceProperties FormInputBindingPropertiesValueProperty where
+  toResourceProperties FormInputBindingPropertiesValueProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Form.FormInputBindingPropertiesValue",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "BindingProperties" Prelude.<$> bindingProperties,
+                            (JSON..=) "Type" Prelude.<$> type'])}
+instance JSON.ToJSON FormInputBindingPropertiesValueProperty where
+  toJSON FormInputBindingPropertiesValueProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "BindingProperties" Prelude.<$> bindingProperties,
+               (JSON..=) "Type" Prelude.<$> type']))
+instance Property "BindingProperties" FormInputBindingPropertiesValueProperty where
+  type PropertyType "BindingProperties" FormInputBindingPropertiesValueProperty = FormInputBindingPropertiesValuePropertiesProperty
+  set newValue FormInputBindingPropertiesValueProperty {..}
+    = FormInputBindingPropertiesValueProperty
+        {bindingProperties = Prelude.pure newValue, ..}
+instance Property "Type" FormInputBindingPropertiesValueProperty where
+  type PropertyType "Type" FormInputBindingPropertiesValueProperty = Value Prelude.Text
+  set newValue FormInputBindingPropertiesValueProperty {..}
+    = FormInputBindingPropertiesValueProperty
+        {type' = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputBindingPropertiesValueProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputBindingPropertiesValueProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputBindingPropertiesValueProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Form.FormInputBindingPropertiesValueProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FormInputBindingPropertiesValueProperty :: Prelude.Type
+instance ToResourceProperties FormInputBindingPropertiesValueProperty
+instance Prelude.Eq FormInputBindingPropertiesValueProperty
+instance Prelude.Show FormInputBindingPropertiesValueProperty
+instance JSON.ToJSON FormInputBindingPropertiesValueProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputValuePropertyBindingPropertiesProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputValuePropertyBindingPropertiesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputValuePropertyBindingPropertiesProperty.hs
@@ -0,0 +1,51 @@
+module Stratosphere.AmplifyUIBuilder.Form.FormInputValuePropertyBindingPropertiesProperty (
+        FormInputValuePropertyBindingPropertiesProperty(..),
+        mkFormInputValuePropertyBindingPropertiesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FormInputValuePropertyBindingPropertiesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-forminputvaluepropertybindingproperties.html>
+    FormInputValuePropertyBindingPropertiesProperty {haddock_workaround_ :: (),
+                                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-forminputvaluepropertybindingproperties.html#cfn-amplifyuibuilder-form-forminputvaluepropertybindingproperties-field>
+                                                     field :: (Prelude.Maybe (Value Prelude.Text)),
+                                                     -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-forminputvaluepropertybindingproperties.html#cfn-amplifyuibuilder-form-forminputvaluepropertybindingproperties-property>
+                                                     property :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFormInputValuePropertyBindingPropertiesProperty ::
+  Value Prelude.Text
+  -> FormInputValuePropertyBindingPropertiesProperty
+mkFormInputValuePropertyBindingPropertiesProperty property
+  = FormInputValuePropertyBindingPropertiesProperty
+      {haddock_workaround_ = (), property = property,
+       field = Prelude.Nothing}
+instance ToResourceProperties FormInputValuePropertyBindingPropertiesProperty where
+  toResourceProperties
+    FormInputValuePropertyBindingPropertiesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Form.FormInputValuePropertyBindingProperties",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Property" JSON..= property]
+                           (Prelude.catMaybes [(JSON..=) "Field" Prelude.<$> field]))}
+instance JSON.ToJSON FormInputValuePropertyBindingPropertiesProperty where
+  toJSON FormInputValuePropertyBindingPropertiesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Property" JSON..= property]
+              (Prelude.catMaybes [(JSON..=) "Field" Prelude.<$> field])))
+instance Property "Field" FormInputValuePropertyBindingPropertiesProperty where
+  type PropertyType "Field" FormInputValuePropertyBindingPropertiesProperty = Value Prelude.Text
+  set newValue FormInputValuePropertyBindingPropertiesProperty {..}
+    = FormInputValuePropertyBindingPropertiesProperty
+        {field = Prelude.pure newValue, ..}
+instance Property "Property" FormInputValuePropertyBindingPropertiesProperty where
+  type PropertyType "Property" FormInputValuePropertyBindingPropertiesProperty = Value Prelude.Text
+  set newValue FormInputValuePropertyBindingPropertiesProperty {..}
+    = FormInputValuePropertyBindingPropertiesProperty
+        {property = newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputValuePropertyBindingPropertiesProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputValuePropertyBindingPropertiesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputValuePropertyBindingPropertiesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Form.FormInputValuePropertyBindingPropertiesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FormInputValuePropertyBindingPropertiesProperty :: Prelude.Type
+instance ToResourceProperties FormInputValuePropertyBindingPropertiesProperty
+instance Prelude.Eq FormInputValuePropertyBindingPropertiesProperty
+instance Prelude.Show FormInputValuePropertyBindingPropertiesProperty
+instance JSON.ToJSON FormInputValuePropertyBindingPropertiesProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputValuePropertyProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputValuePropertyProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputValuePropertyProperty.hs
@@ -0,0 +1,58 @@
+module Stratosphere.AmplifyUIBuilder.Form.FormInputValuePropertyProperty (
+        module Exports, FormInputValuePropertyProperty(..),
+        mkFormInputValuePropertyProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.FormInputValuePropertyBindingPropertiesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FormInputValuePropertyProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-forminputvalueproperty.html>
+    FormInputValuePropertyProperty {haddock_workaround_ :: (),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-forminputvalueproperty.html#cfn-amplifyuibuilder-form-forminputvalueproperty-bindingproperties>
+                                    bindingProperties :: (Prelude.Maybe FormInputValuePropertyBindingPropertiesProperty),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-forminputvalueproperty.html#cfn-amplifyuibuilder-form-forminputvalueproperty-concat>
+                                    concat :: (Prelude.Maybe [FormInputValuePropertyProperty]),
+                                    -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-forminputvalueproperty.html#cfn-amplifyuibuilder-form-forminputvalueproperty-value>
+                                    value :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFormInputValuePropertyProperty :: FormInputValuePropertyProperty
+mkFormInputValuePropertyProperty
+  = FormInputValuePropertyProperty
+      {haddock_workaround_ = (), bindingProperties = Prelude.Nothing,
+       concat = Prelude.Nothing, value = Prelude.Nothing}
+instance ToResourceProperties FormInputValuePropertyProperty where
+  toResourceProperties FormInputValuePropertyProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Form.FormInputValueProperty",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "BindingProperties" Prelude.<$> bindingProperties,
+                            (JSON..=) "Concat" Prelude.<$> concat,
+                            (JSON..=) "Value" Prelude.<$> value])}
+instance JSON.ToJSON FormInputValuePropertyProperty where
+  toJSON FormInputValuePropertyProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "BindingProperties" Prelude.<$> bindingProperties,
+               (JSON..=) "Concat" Prelude.<$> concat,
+               (JSON..=) "Value" Prelude.<$> value]))
+instance Property "BindingProperties" FormInputValuePropertyProperty where
+  type PropertyType "BindingProperties" FormInputValuePropertyProperty = FormInputValuePropertyBindingPropertiesProperty
+  set newValue FormInputValuePropertyProperty {..}
+    = FormInputValuePropertyProperty
+        {bindingProperties = Prelude.pure newValue, ..}
+instance Property "Concat" FormInputValuePropertyProperty where
+  type PropertyType "Concat" FormInputValuePropertyProperty = [FormInputValuePropertyProperty]
+  set newValue FormInputValuePropertyProperty {..}
+    = FormInputValuePropertyProperty
+        {concat = Prelude.pure newValue, ..}
+instance Property "Value" FormInputValuePropertyProperty where
+  type PropertyType "Value" FormInputValuePropertyProperty = Value Prelude.Text
+  set newValue FormInputValuePropertyProperty {..}
+    = FormInputValuePropertyProperty
+        {value = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputValuePropertyProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputValuePropertyProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FormInputValuePropertyProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Form.FormInputValuePropertyProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FormInputValuePropertyProperty :: Prelude.Type
+instance ToResourceProperties FormInputValuePropertyProperty
+instance Prelude.Eq FormInputValuePropertyProperty
+instance Prelude.Show FormInputValuePropertyProperty
+instance JSON.ToJSON FormInputValuePropertyProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FormStyleConfigProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Form/FormStyleConfigProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FormStyleConfigProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.AmplifyUIBuilder.Form.FormStyleConfigProperty (
+        FormStyleConfigProperty(..), mkFormStyleConfigProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data FormStyleConfigProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formstyleconfig.html>
+    FormStyleConfigProperty {haddock_workaround_ :: (),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formstyleconfig.html#cfn-amplifyuibuilder-form-formstyleconfig-tokenreference>
+                             tokenReference :: (Prelude.Maybe (Value Prelude.Text)),
+                             -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formstyleconfig.html#cfn-amplifyuibuilder-form-formstyleconfig-value>
+                             value :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFormStyleConfigProperty :: FormStyleConfigProperty
+mkFormStyleConfigProperty
+  = FormStyleConfigProperty
+      {haddock_workaround_ = (), tokenReference = Prelude.Nothing,
+       value = Prelude.Nothing}
+instance ToResourceProperties FormStyleConfigProperty where
+  toResourceProperties FormStyleConfigProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Form.FormStyleConfig",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "TokenReference" Prelude.<$> tokenReference,
+                            (JSON..=) "Value" Prelude.<$> value])}
+instance JSON.ToJSON FormStyleConfigProperty where
+  toJSON FormStyleConfigProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "TokenReference" Prelude.<$> tokenReference,
+               (JSON..=) "Value" Prelude.<$> value]))
+instance Property "TokenReference" FormStyleConfigProperty where
+  type PropertyType "TokenReference" FormStyleConfigProperty = Value Prelude.Text
+  set newValue FormStyleConfigProperty {..}
+    = FormStyleConfigProperty
+        {tokenReference = Prelude.pure newValue, ..}
+instance Property "Value" FormStyleConfigProperty where
+  type PropertyType "Value" FormStyleConfigProperty = Value Prelude.Text
+  set newValue FormStyleConfigProperty {..}
+    = FormStyleConfigProperty {value = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FormStyleConfigProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Form/FormStyleConfigProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FormStyleConfigProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Form.FormStyleConfigProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FormStyleConfigProperty :: Prelude.Type
+instance ToResourceProperties FormStyleConfigProperty
+instance Prelude.Eq FormStyleConfigProperty
+instance Prelude.Show FormStyleConfigProperty
+instance JSON.ToJSON FormStyleConfigProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FormStyleProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Form/FormStyleProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FormStyleProperty.hs
@@ -0,0 +1,53 @@
+module Stratosphere.AmplifyUIBuilder.Form.FormStyleProperty (
+        module Exports, FormStyleProperty(..), mkFormStyleProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.FormStyleConfigProperty as Exports
+import Stratosphere.ResourceProperties
+data FormStyleProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formstyle.html>
+    FormStyleProperty {haddock_workaround_ :: (),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formstyle.html#cfn-amplifyuibuilder-form-formstyle-horizontalgap>
+                       horizontalGap :: (Prelude.Maybe FormStyleConfigProperty),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formstyle.html#cfn-amplifyuibuilder-form-formstyle-outerpadding>
+                       outerPadding :: (Prelude.Maybe FormStyleConfigProperty),
+                       -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-formstyle.html#cfn-amplifyuibuilder-form-formstyle-verticalgap>
+                       verticalGap :: (Prelude.Maybe FormStyleConfigProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkFormStyleProperty :: FormStyleProperty
+mkFormStyleProperty
+  = FormStyleProperty
+      {haddock_workaround_ = (), horizontalGap = Prelude.Nothing,
+       outerPadding = Prelude.Nothing, verticalGap = Prelude.Nothing}
+instance ToResourceProperties FormStyleProperty where
+  toResourceProperties FormStyleProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Form.FormStyle",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "HorizontalGap" Prelude.<$> horizontalGap,
+                            (JSON..=) "OuterPadding" Prelude.<$> outerPadding,
+                            (JSON..=) "VerticalGap" Prelude.<$> verticalGap])}
+instance JSON.ToJSON FormStyleProperty where
+  toJSON FormStyleProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "HorizontalGap" Prelude.<$> horizontalGap,
+               (JSON..=) "OuterPadding" Prelude.<$> outerPadding,
+               (JSON..=) "VerticalGap" Prelude.<$> verticalGap]))
+instance Property "HorizontalGap" FormStyleProperty where
+  type PropertyType "HorizontalGap" FormStyleProperty = FormStyleConfigProperty
+  set newValue FormStyleProperty {..}
+    = FormStyleProperty {horizontalGap = Prelude.pure newValue, ..}
+instance Property "OuterPadding" FormStyleProperty where
+  type PropertyType "OuterPadding" FormStyleProperty = FormStyleConfigProperty
+  set newValue FormStyleProperty {..}
+    = FormStyleProperty {outerPadding = Prelude.pure newValue, ..}
+instance Property "VerticalGap" FormStyleProperty where
+  type PropertyType "VerticalGap" FormStyleProperty = FormStyleConfigProperty
+  set newValue FormStyleProperty {..}
+    = FormStyleProperty {verticalGap = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/FormStyleProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Form/FormStyleProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/FormStyleProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Form.FormStyleProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data FormStyleProperty :: Prelude.Type
+instance ToResourceProperties FormStyleProperty
+instance Prelude.Eq FormStyleProperty
+instance Prelude.Show FormStyleProperty
+instance JSON.ToJSON FormStyleProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/SectionalElementProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Form/SectionalElementProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/SectionalElementProperty.hs
@@ -0,0 +1,85 @@
+module Stratosphere.AmplifyUIBuilder.Form.SectionalElementProperty (
+        module Exports, SectionalElementProperty(..),
+        mkSectionalElementProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.FieldPositionProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data SectionalElementProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-sectionalelement.html>
+    SectionalElementProperty {haddock_workaround_ :: (),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-sectionalelement.html#cfn-amplifyuibuilder-form-sectionalelement-excluded>
+                              excluded :: (Prelude.Maybe (Value Prelude.Bool)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-sectionalelement.html#cfn-amplifyuibuilder-form-sectionalelement-level>
+                              level :: (Prelude.Maybe (Value Prelude.Double)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-sectionalelement.html#cfn-amplifyuibuilder-form-sectionalelement-orientation>
+                              orientation :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-sectionalelement.html#cfn-amplifyuibuilder-form-sectionalelement-position>
+                              position :: (Prelude.Maybe FieldPositionProperty),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-sectionalelement.html#cfn-amplifyuibuilder-form-sectionalelement-text>
+                              text :: (Prelude.Maybe (Value Prelude.Text)),
+                              -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-sectionalelement.html#cfn-amplifyuibuilder-form-sectionalelement-type>
+                              type' :: (Value Prelude.Text)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkSectionalElementProperty ::
+  Value Prelude.Text -> SectionalElementProperty
+mkSectionalElementProperty type'
+  = SectionalElementProperty
+      {haddock_workaround_ = (), type' = type',
+       excluded = Prelude.Nothing, level = Prelude.Nothing,
+       orientation = Prelude.Nothing, position = Prelude.Nothing,
+       text = Prelude.Nothing}
+instance ToResourceProperties SectionalElementProperty where
+  toResourceProperties SectionalElementProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Form.SectionalElement",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Type" JSON..= type']
+                           (Prelude.catMaybes
+                              [(JSON..=) "Excluded" Prelude.<$> excluded,
+                               (JSON..=) "Level" Prelude.<$> level,
+                               (JSON..=) "Orientation" Prelude.<$> orientation,
+                               (JSON..=) "Position" Prelude.<$> position,
+                               (JSON..=) "Text" Prelude.<$> text]))}
+instance JSON.ToJSON SectionalElementProperty where
+  toJSON SectionalElementProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Type" JSON..= type']
+              (Prelude.catMaybes
+                 [(JSON..=) "Excluded" Prelude.<$> excluded,
+                  (JSON..=) "Level" Prelude.<$> level,
+                  (JSON..=) "Orientation" Prelude.<$> orientation,
+                  (JSON..=) "Position" Prelude.<$> position,
+                  (JSON..=) "Text" Prelude.<$> text])))
+instance Property "Excluded" SectionalElementProperty where
+  type PropertyType "Excluded" SectionalElementProperty = Value Prelude.Bool
+  set newValue SectionalElementProperty {..}
+    = SectionalElementProperty {excluded = Prelude.pure newValue, ..}
+instance Property "Level" SectionalElementProperty where
+  type PropertyType "Level" SectionalElementProperty = Value Prelude.Double
+  set newValue SectionalElementProperty {..}
+    = SectionalElementProperty {level = Prelude.pure newValue, ..}
+instance Property "Orientation" SectionalElementProperty where
+  type PropertyType "Orientation" SectionalElementProperty = Value Prelude.Text
+  set newValue SectionalElementProperty {..}
+    = SectionalElementProperty
+        {orientation = Prelude.pure newValue, ..}
+instance Property "Position" SectionalElementProperty where
+  type PropertyType "Position" SectionalElementProperty = FieldPositionProperty
+  set newValue SectionalElementProperty {..}
+    = SectionalElementProperty {position = Prelude.pure newValue, ..}
+instance Property "Text" SectionalElementProperty where
+  type PropertyType "Text" SectionalElementProperty = Value Prelude.Text
+  set newValue SectionalElementProperty {..}
+    = SectionalElementProperty {text = Prelude.pure newValue, ..}
+instance Property "Type" SectionalElementProperty where
+  type PropertyType "Type" SectionalElementProperty = Value Prelude.Text
+  set newValue SectionalElementProperty {..}
+    = SectionalElementProperty {type' = newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/SectionalElementProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Form/SectionalElementProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/SectionalElementProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Form.SectionalElementProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data SectionalElementProperty :: Prelude.Type
+instance ToResourceProperties SectionalElementProperty
+instance Prelude.Eq SectionalElementProperty
+instance Prelude.Show SectionalElementProperty
+instance JSON.ToJSON SectionalElementProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/ValueMappingProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Form/ValueMappingProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/ValueMappingProperty.hs
@@ -0,0 +1,48 @@
+module Stratosphere.AmplifyUIBuilder.Form.ValueMappingProperty (
+        module Exports, ValueMappingProperty(..), mkValueMappingProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.FormInputValuePropertyProperty as Exports
+import Stratosphere.ResourceProperties
+data ValueMappingProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-valuemapping.html>
+    ValueMappingProperty {haddock_workaround_ :: (),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-valuemapping.html#cfn-amplifyuibuilder-form-valuemapping-displayvalue>
+                          displayValue :: (Prelude.Maybe FormInputValuePropertyProperty),
+                          -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-valuemapping.html#cfn-amplifyuibuilder-form-valuemapping-value>
+                          value :: FormInputValuePropertyProperty}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkValueMappingProperty ::
+  FormInputValuePropertyProperty -> ValueMappingProperty
+mkValueMappingProperty value
+  = ValueMappingProperty
+      {haddock_workaround_ = (), value = value,
+       displayValue = Prelude.Nothing}
+instance ToResourceProperties ValueMappingProperty where
+  toResourceProperties ValueMappingProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Form.ValueMapping",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Value" JSON..= value]
+                           (Prelude.catMaybes
+                              [(JSON..=) "DisplayValue" Prelude.<$> displayValue]))}
+instance JSON.ToJSON ValueMappingProperty where
+  toJSON ValueMappingProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Value" JSON..= value]
+              (Prelude.catMaybes
+                 [(JSON..=) "DisplayValue" Prelude.<$> displayValue])))
+instance Property "DisplayValue" ValueMappingProperty where
+  type PropertyType "DisplayValue" ValueMappingProperty = FormInputValuePropertyProperty
+  set newValue ValueMappingProperty {..}
+    = ValueMappingProperty {displayValue = Prelude.pure newValue, ..}
+instance Property "Value" ValueMappingProperty where
+  type PropertyType "Value" ValueMappingProperty = FormInputValuePropertyProperty
+  set newValue ValueMappingProperty {..}
+    = ValueMappingProperty {value = newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/ValueMappingProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Form/ValueMappingProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/ValueMappingProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Form.ValueMappingProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ValueMappingProperty :: Prelude.Type
+instance ToResourceProperties ValueMappingProperty
+instance Prelude.Eq ValueMappingProperty
+instance Prelude.Show ValueMappingProperty
+instance JSON.ToJSON ValueMappingProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/ValueMappingsProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Form/ValueMappingsProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/ValueMappingsProperty.hs
@@ -0,0 +1,50 @@
+module Stratosphere.AmplifyUIBuilder.Form.ValueMappingsProperty (
+        module Exports, ValueMappingsProperty(..), mkValueMappingsProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.FormInputBindingPropertiesValueProperty as Exports
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Form.ValueMappingProperty as Exports
+import Stratosphere.ResourceProperties
+data ValueMappingsProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-valuemappings.html>
+    ValueMappingsProperty {haddock_workaround_ :: (),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-valuemappings.html#cfn-amplifyuibuilder-form-valuemappings-bindingproperties>
+                           bindingProperties :: (Prelude.Maybe (Prelude.Map Prelude.Text FormInputBindingPropertiesValueProperty)),
+                           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-form-valuemappings.html#cfn-amplifyuibuilder-form-valuemappings-values>
+                           values :: [ValueMappingProperty]}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkValueMappingsProperty ::
+  [ValueMappingProperty] -> ValueMappingsProperty
+mkValueMappingsProperty values
+  = ValueMappingsProperty
+      {haddock_workaround_ = (), values = values,
+       bindingProperties = Prelude.Nothing}
+instance ToResourceProperties ValueMappingsProperty where
+  toResourceProperties ValueMappingsProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Form.ValueMappings",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        ((Prelude.<>)
+                           ["Values" JSON..= values]
+                           (Prelude.catMaybes
+                              [(JSON..=) "BindingProperties" Prelude.<$> bindingProperties]))}
+instance JSON.ToJSON ValueMappingsProperty where
+  toJSON ValueMappingsProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           ((Prelude.<>)
+              ["Values" JSON..= values]
+              (Prelude.catMaybes
+                 [(JSON..=) "BindingProperties" Prelude.<$> bindingProperties])))
+instance Property "BindingProperties" ValueMappingsProperty where
+  type PropertyType "BindingProperties" ValueMappingsProperty = Prelude.Map Prelude.Text FormInputBindingPropertiesValueProperty
+  set newValue ValueMappingsProperty {..}
+    = ValueMappingsProperty
+        {bindingProperties = Prelude.pure newValue, ..}
+instance Property "Values" ValueMappingsProperty where
+  type PropertyType "Values" ValueMappingsProperty = [ValueMappingProperty]
+  set newValue ValueMappingsProperty {..}
+    = ValueMappingsProperty {values = newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Form/ValueMappingsProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Form/ValueMappingsProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Form/ValueMappingsProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Form.ValueMappingsProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ValueMappingsProperty :: Prelude.Type
+instance ToResourceProperties ValueMappingsProperty
+instance Prelude.Eq ValueMappingsProperty
+instance Prelude.Show ValueMappingsProperty
+instance JSON.ToJSON ValueMappingsProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Theme.hs b/gen/Stratosphere/AmplifyUIBuilder/Theme.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Theme.hs
@@ -0,0 +1,77 @@
+module Stratosphere.AmplifyUIBuilder.Theme (
+        module Exports, Theme(..), mkTheme
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Theme.ThemeValuesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data Theme
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-theme.html>
+    Theme {haddock_workaround_ :: (),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-theme.html#cfn-amplifyuibuilder-theme-appid>
+           appId :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-theme.html#cfn-amplifyuibuilder-theme-environmentname>
+           environmentName :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-theme.html#cfn-amplifyuibuilder-theme-name>
+           name :: (Prelude.Maybe (Value Prelude.Text)),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-theme.html#cfn-amplifyuibuilder-theme-overrides>
+           overrides :: (Prelude.Maybe [ThemeValuesProperty]),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-theme.html#cfn-amplifyuibuilder-theme-tags>
+           tags :: (Prelude.Maybe (Prelude.Map Prelude.Text (Value Prelude.Text))),
+           -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-amplifyuibuilder-theme.html#cfn-amplifyuibuilder-theme-values>
+           values :: (Prelude.Maybe [ThemeValuesProperty])}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkTheme :: Theme
+mkTheme
+  = Theme
+      {haddock_workaround_ = (), appId = Prelude.Nothing,
+       environmentName = Prelude.Nothing, name = Prelude.Nothing,
+       overrides = Prelude.Nothing, tags = Prelude.Nothing,
+       values = Prelude.Nothing}
+instance ToResourceProperties Theme where
+  toResourceProperties Theme {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Theme",
+         supportsTags = Prelude.True,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "AppId" Prelude.<$> appId,
+                            (JSON..=) "EnvironmentName" Prelude.<$> environmentName,
+                            (JSON..=) "Name" Prelude.<$> name,
+                            (JSON..=) "Overrides" Prelude.<$> overrides,
+                            (JSON..=) "Tags" Prelude.<$> tags,
+                            (JSON..=) "Values" Prelude.<$> values])}
+instance JSON.ToJSON Theme where
+  toJSON Theme {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "AppId" Prelude.<$> appId,
+               (JSON..=) "EnvironmentName" Prelude.<$> environmentName,
+               (JSON..=) "Name" Prelude.<$> name,
+               (JSON..=) "Overrides" Prelude.<$> overrides,
+               (JSON..=) "Tags" Prelude.<$> tags,
+               (JSON..=) "Values" Prelude.<$> values]))
+instance Property "AppId" Theme where
+  type PropertyType "AppId" Theme = Value Prelude.Text
+  set newValue Theme {..} = Theme {appId = Prelude.pure newValue, ..}
+instance Property "EnvironmentName" Theme where
+  type PropertyType "EnvironmentName" Theme = Value Prelude.Text
+  set newValue Theme {..}
+    = Theme {environmentName = Prelude.pure newValue, ..}
+instance Property "Name" Theme where
+  type PropertyType "Name" Theme = Value Prelude.Text
+  set newValue Theme {..} = Theme {name = Prelude.pure newValue, ..}
+instance Property "Overrides" Theme where
+  type PropertyType "Overrides" Theme = [ThemeValuesProperty]
+  set newValue Theme {..}
+    = Theme {overrides = Prelude.pure newValue, ..}
+instance Property "Tags" Theme where
+  type PropertyType "Tags" Theme = Prelude.Map Prelude.Text (Value Prelude.Text)
+  set newValue Theme {..} = Theme {tags = Prelude.pure newValue, ..}
+instance Property "Values" Theme where
+  type PropertyType "Values" Theme = [ThemeValuesProperty]
+  set newValue Theme {..}
+    = Theme {values = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Theme/ThemeValueProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Theme/ThemeValueProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Theme/ThemeValueProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.AmplifyUIBuilder.Theme.ThemeValueProperty (
+        module Exports, ThemeValueProperty(..), mkThemeValueProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Theme.ThemeValuesProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ThemeValueProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-theme-themevalue.html>
+    ThemeValueProperty {haddock_workaround_ :: (),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-theme-themevalue.html#cfn-amplifyuibuilder-theme-themevalue-children>
+                        children :: (Prelude.Maybe [ThemeValuesProperty]),
+                        -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-theme-themevalue.html#cfn-amplifyuibuilder-theme-themevalue-value>
+                        value :: (Prelude.Maybe (Value Prelude.Text))}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkThemeValueProperty :: ThemeValueProperty
+mkThemeValueProperty
+  = ThemeValueProperty
+      {haddock_workaround_ = (), children = Prelude.Nothing,
+       value = Prelude.Nothing}
+instance ToResourceProperties ThemeValueProperty where
+  toResourceProperties ThemeValueProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Theme.ThemeValue",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Children" Prelude.<$> children,
+                            (JSON..=) "Value" Prelude.<$> value])}
+instance JSON.ToJSON ThemeValueProperty where
+  toJSON ThemeValueProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Children" Prelude.<$> children,
+               (JSON..=) "Value" Prelude.<$> value]))
+instance Property "Children" ThemeValueProperty where
+  type PropertyType "Children" ThemeValueProperty = [ThemeValuesProperty]
+  set newValue ThemeValueProperty {..}
+    = ThemeValueProperty {children = Prelude.pure newValue, ..}
+instance Property "Value" ThemeValueProperty where
+  type PropertyType "Value" ThemeValueProperty = Value Prelude.Text
+  set newValue ThemeValueProperty {..}
+    = ThemeValueProperty {value = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Theme/ThemeValueProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Theme/ThemeValueProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Theme/ThemeValueProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Theme.ThemeValueProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ThemeValueProperty :: Prelude.Type
+instance ToResourceProperties ThemeValueProperty
+instance Prelude.Eq ThemeValueProperty
+instance Prelude.Show ThemeValueProperty
+instance JSON.ToJSON ThemeValueProperty
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Theme/ThemeValuesProperty.hs b/gen/Stratosphere/AmplifyUIBuilder/Theme/ThemeValuesProperty.hs
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Theme/ThemeValuesProperty.hs
@@ -0,0 +1,46 @@
+module Stratosphere.AmplifyUIBuilder.Theme.ThemeValuesProperty (
+        module Exports, ThemeValuesProperty(..), mkThemeValuesProperty
+    ) where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.Property
+import {-# SOURCE #-} Stratosphere.AmplifyUIBuilder.Theme.ThemeValueProperty as Exports
+import Stratosphere.ResourceProperties
+import Stratosphere.Value
+data ThemeValuesProperty
+  = -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-theme-themevalues.html>
+    ThemeValuesProperty {haddock_workaround_ :: (),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-theme-themevalues.html#cfn-amplifyuibuilder-theme-themevalues-key>
+                         key :: (Prelude.Maybe (Value Prelude.Text)),
+                         -- | See: <http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-amplifyuibuilder-theme-themevalues.html#cfn-amplifyuibuilder-theme-themevalues-value>
+                         value :: (Prelude.Maybe ThemeValueProperty)}
+  deriving stock (Prelude.Eq, Prelude.Show)
+mkThemeValuesProperty :: ThemeValuesProperty
+mkThemeValuesProperty
+  = ThemeValuesProperty
+      {haddock_workaround_ = (), key = Prelude.Nothing,
+       value = Prelude.Nothing}
+instance ToResourceProperties ThemeValuesProperty where
+  toResourceProperties ThemeValuesProperty {..}
+    = ResourceProperties
+        {awsType = "AWS::AmplifyUIBuilder::Theme.ThemeValues",
+         supportsTags = Prelude.False,
+         properties = Prelude.fromList
+                        (Prelude.catMaybes
+                           [(JSON..=) "Key" Prelude.<$> key,
+                            (JSON..=) "Value" Prelude.<$> value])}
+instance JSON.ToJSON ThemeValuesProperty where
+  toJSON ThemeValuesProperty {..}
+    = JSON.object
+        (Prelude.fromList
+           (Prelude.catMaybes
+              [(JSON..=) "Key" Prelude.<$> key,
+               (JSON..=) "Value" Prelude.<$> value]))
+instance Property "Key" ThemeValuesProperty where
+  type PropertyType "Key" ThemeValuesProperty = Value Prelude.Text
+  set newValue ThemeValuesProperty {..}
+    = ThemeValuesProperty {key = Prelude.pure newValue, ..}
+instance Property "Value" ThemeValuesProperty where
+  type PropertyType "Value" ThemeValuesProperty = ThemeValueProperty
+  set newValue ThemeValuesProperty {..}
+    = ThemeValuesProperty {value = Prelude.pure newValue, ..}
diff --git a/gen/Stratosphere/AmplifyUIBuilder/Theme/ThemeValuesProperty.hs-boot b/gen/Stratosphere/AmplifyUIBuilder/Theme/ThemeValuesProperty.hs-boot
new file mode 100644
--- /dev/null
+++ b/gen/Stratosphere/AmplifyUIBuilder/Theme/ThemeValuesProperty.hs-boot
@@ -0,0 +1,9 @@
+module Stratosphere.AmplifyUIBuilder.Theme.ThemeValuesProperty where
+import qualified Data.Aeson as JSON
+import qualified Stratosphere.Prelude as Prelude
+import Stratosphere.ResourceProperties
+data ThemeValuesProperty :: Prelude.Type
+instance ToResourceProperties ThemeValuesProperty
+instance Prelude.Eq ThemeValuesProperty
+instance Prelude.Show ThemeValuesProperty
+instance JSON.ToJSON ThemeValuesProperty
diff --git a/stratosphere-amplifyuibuilder.cabal b/stratosphere-amplifyuibuilder.cabal
new file mode 100644
--- /dev/null
+++ b/stratosphere-amplifyuibuilder.cabal
@@ -0,0 +1,108 @@
+cabal-version: 1.12
+
+-- This file has been generated from package.yaml by hpack version 0.38.2.
+--
+-- see: https://github.com/sol/hpack
+
+name:           stratosphere-amplifyuibuilder
+version:        1.0.0
+synopsis:       Stratosphere integration for AWS AmplifyUIBuilder.
+description:    Integration into stratosphere to generate resources and properties for AWS AmplifyUIBuilder
+category:       AWS, Cloud, AmplifyUIBuilder
+stability:      experimental
+homepage:       https://github.com/mbj/stratosphere#readme
+bug-reports:    https://github.com/mbj/stratosphere/issues
+maintainer:     Markus Schirp
+license:        MIT
+license-file:   LICENSE.md
+build-type:     Simple
+
+source-repository head
+  type: git
+  location: https://github.com/mbj/stratosphere
+
+flag development
+  description: Run GHC with development flags
+  manual: True
+  default: False
+
+library
+  exposed-modules:
+      Stratosphere.AmplifyUIBuilder.Component
+      Stratosphere.AmplifyUIBuilder.Component.ActionParametersProperty
+      Stratosphere.AmplifyUIBuilder.Component.ComponentBindingPropertiesValuePropertiesProperty
+      Stratosphere.AmplifyUIBuilder.Component.ComponentBindingPropertiesValueProperty
+      Stratosphere.AmplifyUIBuilder.Component.ComponentChildProperty
+      Stratosphere.AmplifyUIBuilder.Component.ComponentConditionPropertyProperty
+      Stratosphere.AmplifyUIBuilder.Component.ComponentDataConfigurationProperty
+      Stratosphere.AmplifyUIBuilder.Component.ComponentEventProperty
+      Stratosphere.AmplifyUIBuilder.Component.ComponentPropertyBindingPropertiesProperty
+      Stratosphere.AmplifyUIBuilder.Component.ComponentPropertyProperty
+      Stratosphere.AmplifyUIBuilder.Component.ComponentVariantProperty
+      Stratosphere.AmplifyUIBuilder.Component.FormBindingElementProperty
+      Stratosphere.AmplifyUIBuilder.Component.MutationActionSetStateParameterProperty
+      Stratosphere.AmplifyUIBuilder.Component.PredicateProperty
+      Stratosphere.AmplifyUIBuilder.Component.SortPropertyProperty
+      Stratosphere.AmplifyUIBuilder.Form
+      Stratosphere.AmplifyUIBuilder.Form.FieldConfigProperty
+      Stratosphere.AmplifyUIBuilder.Form.FieldInputConfigProperty
+      Stratosphere.AmplifyUIBuilder.Form.FieldPositionProperty
+      Stratosphere.AmplifyUIBuilder.Form.FieldValidationConfigurationProperty
+      Stratosphere.AmplifyUIBuilder.Form.FileUploaderFieldConfigProperty
+      Stratosphere.AmplifyUIBuilder.Form.FormButtonProperty
+      Stratosphere.AmplifyUIBuilder.Form.FormCTAProperty
+      Stratosphere.AmplifyUIBuilder.Form.FormDataTypeConfigProperty
+      Stratosphere.AmplifyUIBuilder.Form.FormInputBindingPropertiesValuePropertiesProperty
+      Stratosphere.AmplifyUIBuilder.Form.FormInputBindingPropertiesValueProperty
+      Stratosphere.AmplifyUIBuilder.Form.FormInputValuePropertyBindingPropertiesProperty
+      Stratosphere.AmplifyUIBuilder.Form.FormInputValuePropertyProperty
+      Stratosphere.AmplifyUIBuilder.Form.FormStyleConfigProperty
+      Stratosphere.AmplifyUIBuilder.Form.FormStyleProperty
+      Stratosphere.AmplifyUIBuilder.Form.SectionalElementProperty
+      Stratosphere.AmplifyUIBuilder.Form.ValueMappingProperty
+      Stratosphere.AmplifyUIBuilder.Form.ValueMappingsProperty
+      Stratosphere.AmplifyUIBuilder.Theme
+      Stratosphere.AmplifyUIBuilder.Theme.ThemeValueProperty
+      Stratosphere.AmplifyUIBuilder.Theme.ThemeValuesProperty
+  other-modules:
+      Paths_stratosphere_amplifyuibuilder
+  hs-source-dirs:
+      gen
+  default-extensions:
+      DataKinds
+      DeriveGeneric
+      DerivingStrategies
+      DerivingVia
+      DuplicateRecordFields
+      FlexibleContexts
+      FlexibleInstances
+      GADTs
+      GeneralizedNewtypeDeriving
+      InstanceSigs
+      LambdaCase
+      MultiParamTypeClasses
+      NoFieldSelectors
+      NoImplicitPrelude
+      NumericUnderscores
+      OverloadedLists
+      OverloadedRecordDot
+      OverloadedStrings
+      PolyKinds
+      RecordWildCards
+      ScopedTypeVariables
+      StandaloneDeriving
+      Strict
+      TemplateHaskell
+      TupleSections
+      TypeApplications
+      TypeFamilies
+  ghc-options: -Wall -Wcompat -Widentities -Wimplicit-prelude -Wincomplete-record-updates -Wincomplete-uni-patterns -Wmissing-local-signatures -Wmissing-signatures -Wmonomorphism-restriction -Wredundant-constraints -fhide-source-paths -funbox-strict-fields -optP-Wno-nonportable-include-path -Wno-unused-imports
+  build-depends:
+      aeson ==2.*
+    , base >=4.8 && <4.22
+    , stratosphere ==1.0.0
+  default-language: Haskell2010
+  if flag(development)
+    ghc-options: -Werror
+  else
+    ghc-options: -Wwarn
