diff --git a/app/View/Components/Button.php b/app/View/Components/Button.php
new file mode 100644
index 0000000..0d8cfae
--- /dev/null
+++ b/app/View/Components/Button.php
@@ -0,0 +1,62 @@
+variant) {
+ self::VARIANT_SECONDARY => [
+ 'base' => 'bg-secondary text-text',
+ 'hover' => 'hover:bg-secondary-dark',
+ 'disabled' => 'disabled:bg-secondary',
+ ],
+ self::VARIANT_OUTLINE => [
+ 'base' => 'bg-surface border border-primary text-primary',
+ 'hover' => 'hover:bg-primary hover:text-text-inverted',
+ 'disabled' => 'disabled:bg-surface disabled:text-primary',
+ ],
+ default => [
+ 'base' => 'bg-primary text-text-inverted',
+ 'hover' => 'hover:bg-primary-dark',
+ 'disabled' => 'disabled:bg-primary'
+ ]
+ };
+
+ $baseDisabled = 'disabled:cursor-not-allowed disabled:opacity-60';
+
+ return trim(
+ $base . ' ' .
+ $classes['base'] . ' ' .
+ $classes['hover'] . ' ' .
+ $baseDisabled . ' ' .
+ $classes['disabled']
+ );
+ }
+
+ /**
+ * Get the view / contents that represent the component.
+ */
+ public function render(): View
+ {
+ return view('components.button');
+ }
+}
diff --git a/resources/views/components/button.blade.php b/resources/views/components/button.blade.php
new file mode 100644
index 0000000..4e20927
--- /dev/null
+++ b/resources/views/components/button.blade.php
@@ -0,0 +1,8 @@
+
diff --git a/resources/views/storybook/index.blade.php b/resources/views/storybook/index.blade.php
index 59b0a40..f1fdef6 100644
--- a/resources/views/storybook/index.blade.php
+++ b/resources/views/storybook/index.blade.php
@@ -27,33 +27,29 @@
Enabled
-
+ Default
-
+ Primary
-
+
+ Secondary
+
+
+ Outline
Disabled
-
+ Default
-
+ Primary
-
+
+ Secondary
+
+
+ Outline
diff --git a/tests/Feature/Component/ButtonTest.php b/tests/Feature/Component/ButtonTest.php
new file mode 100644
index 0000000..1366139
--- /dev/null
+++ b/tests/Feature/Component/ButtonTest.php
@@ -0,0 +1,43 @@
+blade('Click!');
+
+ $view->assertSeeHtml('