diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/floating_buttons/floating_action_button_component.dart b/packages/wyatt_ui_components/lib/src/domain/entities/floating_buttons/floating_action_button_component.dart
new file mode 100644
index 00000000..dc7ea461
--- /dev/null
+++ b/packages/wyatt_ui_components/lib/src/domain/entities/floating_buttons/floating_action_button_component.dart
@@ -0,0 +1,107 @@
+// Copyright (C) 2023 WYATT GROUP
+// Please see the AUTHORS file for details.
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+
+import 'package:flutter/material.dart';
+import 'package:wyatt_component_copy_with_extension/wyatt_component_copy_with_extension.dart';
+import 'package:wyatt_ui_components/wyatt_ui_components.dart';
+
+part 'floating_action_button_component.g.dart';
+
+@ComponentProxyExtension()
+abstract class FloatingActionButtonComponent extends Component
+ with CopyWithMixin<$FloatingActionButtonComponentCWProxy> {
+ const FloatingActionButtonComponent({
+ this.child,
+ this.tooltip,
+ this.foregroundColor,
+ this.backgroundColor,
+ this.focusColor,
+ this.hoverColor,
+ this.splashColor,
+ this.heroTag,
+ this.onPressed,
+ this.mouseCursor,
+ this.elevation,
+ this.focusElevation,
+ this.hoverElevation,
+ this.highlightElevation,
+ this.disabledElevation,
+ this.mini,
+ this.shape,
+ this.clipBehavior,
+ this.isExtended,
+ this.focusNode,
+ this.autofocus,
+ this.materialTapTargetSize,
+ this.enableFeedback,
+ this.extendedIconLabelSpacing,
+ this.extendedPadding,
+ this.extendedTextStyle,
+ super.key,
+ });
+
+ final Widget? child;
+
+ final String? tooltip;
+
+ final Color? foregroundColor;
+
+ final Color? backgroundColor;
+
+ final Color? focusColor;
+
+ final Color? hoverColor;
+
+ final Color? splashColor;
+
+ final Object? heroTag;
+
+ final VoidCallback? onPressed;
+
+ final MouseCursor? mouseCursor;
+
+ final double? elevation;
+
+ final double? focusElevation;
+
+ final double? hoverElevation;
+
+ final double? highlightElevation;
+
+ final double? disabledElevation;
+
+ final bool? mini;
+
+ final ShapeBorder? shape;
+
+ final Clip? clipBehavior;
+
+ final bool? isExtended;
+
+ final FocusNode? focusNode;
+
+ final bool? autofocus;
+
+ final MaterialTapTargetSize? materialTapTargetSize;
+
+ final bool? enableFeedback;
+
+ final double? extendedIconLabelSpacing;
+
+ final EdgeInsetsGeometry? extendedPadding;
+
+ final TextStyle? extendedTextStyle;
+}
diff --git a/packages/wyatt_ui_components/lib/src/domain/entities/floating_buttons/floating_action_button_component.g.dart b/packages/wyatt_ui_components/lib/src/domain/entities/floating_buttons/floating_action_button_component.g.dart
new file mode 100644
index 00000000..2982049f
--- /dev/null
+++ b/packages/wyatt_ui_components/lib/src/domain/entities/floating_buttons/floating_action_button_component.g.dart
@@ -0,0 +1,69 @@
+// GENERATED CODE - DO NOT MODIFY BY HAND
+
+part of 'floating_action_button_component.dart';
+
+// **************************************************************************
+// ComponentProxyGenerator
+// **************************************************************************
+
+abstract class $FloatingActionButtonComponentCWProxy {
+ FloatingActionButtonComponent child(Widget? child);
+ FloatingActionButtonComponent tooltip(String? tooltip);
+ FloatingActionButtonComponent foregroundColor(Color? foregroundColor);
+ FloatingActionButtonComponent backgroundColor(Color? backgroundColor);
+ FloatingActionButtonComponent focusColor(Color? focusColor);
+ FloatingActionButtonComponent hoverColor(Color? hoverColor);
+ FloatingActionButtonComponent splashColor(Color? splashColor);
+ FloatingActionButtonComponent heroTag(Object? heroTag);
+ FloatingActionButtonComponent onPressed(void Function()? onPressed);
+ FloatingActionButtonComponent mouseCursor(MouseCursor? mouseCursor);
+ FloatingActionButtonComponent elevation(double? elevation);
+ FloatingActionButtonComponent focusElevation(double? focusElevation);
+ FloatingActionButtonComponent hoverElevation(double? hoverElevation);
+ FloatingActionButtonComponent highlightElevation(double? highlightElevation);
+ FloatingActionButtonComponent disabledElevation(double? disabledElevation);
+ FloatingActionButtonComponent mini(bool? mini);
+ FloatingActionButtonComponent shape(ShapeBorder? shape);
+ FloatingActionButtonComponent clipBehavior(Clip? clipBehavior);
+ FloatingActionButtonComponent isExtended(bool? isExtended);
+ FloatingActionButtonComponent focusNode(FocusNode? focusNode);
+ FloatingActionButtonComponent autofocus(bool? autofocus);
+ FloatingActionButtonComponent materialTapTargetSize(
+ MaterialTapTargetSize? materialTapTargetSize);
+ FloatingActionButtonComponent enableFeedback(bool? enableFeedback);
+ FloatingActionButtonComponent extendedIconLabelSpacing(
+ double? extendedIconLabelSpacing);
+ FloatingActionButtonComponent extendedPadding(
+ EdgeInsetsGeometry? extendedPadding);
+ FloatingActionButtonComponent extendedTextStyle(TextStyle? extendedTextStyle);
+ FloatingActionButtonComponent key(Key? key);
+ FloatingActionButtonComponent call({
+ Widget? child,
+ String? tooltip,
+ Color? foregroundColor,
+ Color? backgroundColor,
+ Color? focusColor,
+ Color? hoverColor,
+ Color? splashColor,
+ Object? heroTag,
+ void Function()? onPressed,
+ MouseCursor? mouseCursor,
+ double? elevation,
+ double? focusElevation,
+ double? hoverElevation,
+ double? highlightElevation,
+ double? disabledElevation,
+ bool? mini,
+ ShapeBorder? shape,
+ Clip? clipBehavior,
+ bool? isExtended,
+ FocusNode? focusNode,
+ bool? autofocus,
+ MaterialTapTargetSize? materialTapTargetSize,
+ bool? enableFeedback,
+ double? extendedIconLabelSpacing,
+ EdgeInsetsGeometry? extendedPadding,
+ TextStyle? extendedTextStyle,
+ Key? key,
+ });
+}
diff --git a/packages/wyatt_ui_components/lib/src/features/component_theme_data.dart b/packages/wyatt_ui_components/lib/src/features/component_theme_data.dart
index 8e7b4de2..c0919ba9 100644
--- a/packages/wyatt_ui_components/lib/src/features/component_theme_data.dart
+++ b/packages/wyatt_ui_components/lib/src/features/component_theme_data.dart
@@ -17,6 +17,7 @@
import 'package:copy_with_extension/copy_with_extension.dart';
import 'package:flutter/material.dart';
import 'package:wyatt_ui_components/src/domain/entities/entities.dart';
+import 'package:wyatt_ui_components/src/domain/entities/floating_buttons/floating_action_button_component.dart';
part 'component_theme_data.g.dart';
/// {@template component_theme_data}
@@ -41,6 +42,7 @@ class ComponentThemeData {
PortfolioCardComponent? portfolioCard,
QuoteCardComponent? quoteCard,
SkillCardComponent? skillCard,
+ FloatingActionButtonComponent? floatingActionButton,
}) =>
ComponentThemeData.raw(
topAppBar: topAppBar,
@@ -58,6 +60,7 @@ class ComponentThemeData {
portfolioCard: portfolioCard,
quoteCard: quoteCard,
skillCard: skillCard,
+ floatingActionButton: floatingActionButton,
);
/// {@macro component_theme_data}
@@ -78,6 +81,7 @@ class ComponentThemeData {
portfolioCard: other.portfolioCard,
quoteCard: other.quoteCard,
skillCard: other.skillCard,
+ floatingActionButton: other.floatingActionButton,
);
/// Create a [ComponentThemeData] given a set of exact values. Most values
@@ -102,6 +106,7 @@ class ComponentThemeData {
this.portfolioCard,
this.quoteCard,
this.skillCard,
+ this.floatingActionButton,
});
R _get(T? component, R? returned) {
@@ -173,4 +178,8 @@ class ComponentThemeData {
final SymbolButtonComponent? symbolButton;
$SymbolButtonComponentCWProxy get symbolButtonComponent =>
_get(symbolButton, symbolButton?.copyWith);
+
+ final FloatingActionButtonComponent? floatingActionButton;
+ $FloatingActionButtonComponentCWProxy get floatingActionButtonComponent =>
+ _get(floatingActionButton, floatingActionButton?.copyWith);
}
diff --git a/packages/wyatt_ui_components/lib/src/features/component_theme_data.g.dart b/packages/wyatt_ui_components/lib/src/features/component_theme_data.g.dart
index 139076ce..501c2df1 100644
--- a/packages/wyatt_ui_components/lib/src/features/component_theme_data.g.dart
+++ b/packages/wyatt_ui_components/lib/src/features/component_theme_data.g.dart
@@ -41,6 +41,9 @@ abstract class _$ComponentThemeDataCWProxy {
ComponentThemeData skillCard(SkillCardComponent? skillCard);
+ ComponentThemeData floatingActionButton(
+ FloatingActionButtonComponent? floatingActionButton);
+
/// This function **does support** nullification of nullable fields. All `null` values passed to `non-nullable` fields will be ignored. You can also use `ComponentThemeData(...).copyWith.fieldName(...)` to override fields one at a time with nullification support.
///
/// Usage
@@ -63,6 +66,7 @@ abstract class _$ComponentThemeDataCWProxy {
PortfolioCardComponent? portfolioCard,
QuoteCardComponent? quoteCard,
SkillCardComponent? skillCard,
+ FloatingActionButtonComponent? floatingActionButton,
});
}
@@ -136,6 +140,11 @@ class _$ComponentThemeDataCWProxyImpl implements _$ComponentThemeDataCWProxy {
ComponentThemeData skillCard(SkillCardComponent? skillCard) =>
this(skillCard: skillCard);
+ @override
+ ComponentThemeData floatingActionButton(
+ FloatingActionButtonComponent? floatingActionButton) =>
+ this(floatingActionButton: floatingActionButton);
+
@override
/// This function **does support** nullification of nullable fields. All `null` values passed to `non-nullable` fields will be ignored. You can also use `ComponentThemeData(...).copyWith.fieldName(...)` to override fields one at a time with nullification support.
@@ -160,6 +169,7 @@ class _$ComponentThemeDataCWProxyImpl implements _$ComponentThemeDataCWProxy {
Object? portfolioCard = const $CopyWithPlaceholder(),
Object? quoteCard = const $CopyWithPlaceholder(),
Object? skillCard = const $CopyWithPlaceholder(),
+ Object? floatingActionButton = const $CopyWithPlaceholder(),
}) {
return ComponentThemeData(
topAppBar: topAppBar == const $CopyWithPlaceholder()
@@ -222,6 +232,10 @@ class _$ComponentThemeDataCWProxyImpl implements _$ComponentThemeDataCWProxy {
? _value.skillCard
// ignore: cast_nullable_to_non_nullable
: skillCard as SkillCardComponent?,
+ floatingActionButton: floatingActionButton == const $CopyWithPlaceholder()
+ ? _value.floatingActionButton
+ // ignore: cast_nullable_to_non_nullable
+ : floatingActionButton as FloatingActionButtonComponent?,
);
}
}