def METHOD_NAME() -> Plugin:
    return Plugin(
        start=False,
        spec=Spec(
            module=__name__,
            className='ConsentUx',
            inputs=["payload"],
            outputs=["payload"],
            init={
                "endpoint": "http://localhost:8686",
                "uix_source": "http://localhost:8686",
                "event_type": "user-consent-pref",
                "agree_all_event_type": "agree-all-event-type",
                "position": "bottom",
                "expand_height": 400,
                "enabled": True
            },
            version='0.6.1',
            license="MIT",
            author="Risto Kowaczewski",
            form=Form(groups=[
                FormGroup(
                    name="Widget Configuration",
                    fields=[
                        FormField(
                            id="position",
                            name="Widget position",
                            description="Where would you like to place the widget.",
                            component=FormComponent(type="select", props={"label": "Position", "items": {
                                "top": "Top",
                                "bottom": "Bottom"
                            }})
                        ),
                        FormField(
                            id="expand_height",
                            name="Widget height",
                            description="Type height of the expanded widget",
                            component=FormComponent(type="text", props={"label": "Height"})
                        ),
                        FormField(
                            id="enabled",
                            name="Enable widget",
                            description="Only enabled widgets are show on the page",
                            component=FormComponent(type="bool", props={"label": "Enable"})
                        ),
                    ],
                ),
                FormGroup(
                    name="Widget Source Location",
                    fields=[
                        FormField(
                            id="uix_source",
                            name="Consent micro frontend location",
                            description="Provide URL where the micro frontend source is located. Usually it is the "
                                        "location of Tracardi API. Type different location if you use CDN.",
                            component=FormComponent(type="text", props={"label": "URL"})
                        ),
                        FormField(
                            id="endpoint",
                            name="Tracardi API endpoint URL",
                            description="Provide URL where the events from this widget will be send. Usually it is the "
                                        "location of Tracardi API. ",
                            component=FormComponent(type="text", props={"label": "URL"})
                        )
                    ])
            ]),
        ),
        metadata=MetaData(
            name='Show consent bar',
            desc='Shows consent pop-up on the front end.',
            icon='react',
            group=["UIX Widgets"],
            type="flowNodeWithEvents",
            documentation=Documentation(
                inputs={
                    "payload": PortDoc(desc="This port takes payload object.")
                },
                outputs={"payload": PortDoc(desc="This port returns input payload object.")}
            ),
            frontend=True
        )
    )