diff --git a/resources/css/app.css b/resources/css/app.css
index 3f3c8d4..46a1e4b 100644
--- a/resources/css/app.css
+++ b/resources/css/app.css
@@ -14,3 +14,57 @@
[x-cloak] {
display: none !important;
}
+
+@layer components {
+ .btn-primary {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ gap: 0.5rem;
+ border-radius: 9999px;
+ background-image: linear-gradient(to right, rgb(79 70 229), rgb(124 58 237));
+ padding: 0.5rem 1rem;
+ font-size: 0.875rem;
+ line-height: 1.25rem;
+ font-weight: 600;
+ color: #fff;
+ box-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
+ transition: filter 0.15s ease;
+ }
+
+ .btn-primary:hover {
+ filter: brightness(0.92);
+ }
+
+ .btn-primary:disabled {
+ opacity: 0.6;
+ pointer-events: none;
+ }
+
+ .btn-primary-sm {
+ padding: 0.375rem 0.75rem;
+ font-size: 0.75rem;
+ line-height: 1rem;
+ }
+
+ .btn-primary-lg {
+ padding: 0.625rem 1.25rem;
+ }
+
+ .btn-fab {
+ display: inline-flex;
+ height: 2.75rem;
+ width: 2.75rem;
+ align-items: center;
+ justify-content: center;
+ border-radius: 9999px;
+ background-image: linear-gradient(to right, rgb(79 70 229), rgb(124 58 237));
+ color: #fff;
+ box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1);
+ transition: filter 0.15s ease;
+ }
+
+ .btn-fab:hover {
+ filter: brightness(0.92);
+ }
+}
diff --git a/resources/views/components/btn/create.blade.php b/resources/views/components/btn/create.blade.php
new file mode 100644
index 0000000..caa7d06
--- /dev/null
+++ b/resources/views/components/btn/create.blade.php
@@ -0,0 +1,17 @@
+@props([
+ 'href' => null,
+ 'type' => 'button',
+])
+
+@php
+ $tag = $href ? 'a' : 'button';
+@endphp
+
+<{{ $tag }}
+ @if ($href) href="{{ $href }}" @endif
+ @if ($tag === 'button') type="{{ $type }}" @endif
+ {{ $attributes->class(['btn-primary']) }}
+>
+
+ {{ $slot }}
+{{ $tag }}>
diff --git a/resources/views/components/btn/primary.blade.php b/resources/views/components/btn/primary.blade.php
new file mode 100644
index 0000000..b9cb905
--- /dev/null
+++ b/resources/views/components/btn/primary.blade.php
@@ -0,0 +1,16 @@
+@props([
+ 'href' => null,
+ 'type' => 'button',
+])
+
+@php
+ $tag = $href ? 'a' : 'button';
+@endphp
+
+<{{ $tag }}
+ @if ($href) href="{{ $href }}" @endif
+ @if ($tag === 'button') type="{{ $type }}" @endif
+ {{ $attributes->class(['btn-primary']) }}
+>
+ {{ $slot }}
+{{ $tag }}>
diff --git a/resources/views/email/account/developers.blade.php b/resources/views/email/account/developers.blade.php
index ea2649a..d7fa0cd 100644
--- a/resources/views/email/account/developers.blade.php
+++ b/resources/views/email/account/developers.blade.php
@@ -30,7 +30,7 @@
class="mt-1 w-full rounded-lg border border-slate-200 bg-slate-50 px-3 py-2 text-sm focus:border-indigo-300 focus:bg-white focus:outline-none focus:ring-2 focus:ring-indigo-100">
@error('name')
{{ $message }}
@enderror
-
+
diff --git a/resources/views/email/account/settings.blade.php b/resources/views/email/account/settings.blade.php
index 54b854a..8d4e4b1 100644
--- a/resources/views/email/account/settings.blade.php
+++ b/resources/views/email/account/settings.blade.php
@@ -63,7 +63,7 @@
@error('mailbox_address'){{ $message }}
@enderror
-
+
@endif
@@ -104,7 +104,7 @@
-
+
@endsection
diff --git a/resources/views/email/account/team.blade.php b/resources/views/email/account/team.blade.php
index 70c9fef..c1baeaa 100644
--- a/resources/views/email/account/team.blade.php
+++ b/resources/views/email/account/team.blade.php
@@ -23,7 +23,7 @@
-
+
Admins can manage mailboxes and the team. Members can manage mailboxes. Invitees join by signing in with that email.
diff --git a/resources/views/email/dashboard.blade.php b/resources/views/email/dashboard.blade.php
index d48d16b..34d9b43 100644
--- a/resources/views/email/dashboard.blade.php
+++ b/resources/views/email/dashboard.blade.php
@@ -7,7 +7,7 @@
Overview
Your mailboxes at a glance.
- New mailbox
+ New mailbox
@if($error){{ $error }}
@endif
diff --git a/resources/views/email/domains/index.blade.php b/resources/views/email/domains/index.blade.php
index 6ae7e6c..f77bd26 100644
--- a/resources/views/email/domains/index.blade.php
+++ b/resources/views/email/domains/index.blade.php
@@ -9,7 +9,7 @@
@if(!empty($domains))
diff --git a/resources/views/email/domains/show.blade.php b/resources/views/email/domains/show.blade.php
index 0d4c453..f1c75b5 100644
--- a/resources/views/email/domains/show.blade.php
+++ b/resources/views/email/domains/show.blade.php
@@ -40,7 +40,7 @@
@else
diff --git a/resources/views/email/mailboxes/create.blade.php b/resources/views/email/mailboxes/create.blade.php
index ec3f8ba..539c947 100644
--- a/resources/views/email/mailboxes/create.blade.php
+++ b/resources/views/email/mailboxes/create.blade.php
@@ -86,7 +86,7 @@
@error('password'){{ $message }}
@enderror
-
diff --git a/resources/views/email/mailboxes/index.blade.php b/resources/views/email/mailboxes/index.blade.php
index 284eeac..f3a9f24 100644
--- a/resources/views/email/mailboxes/index.blade.php
+++ b/resources/views/email/mailboxes/index.blade.php
@@ -4,7 +4,7 @@
@if($error)
{{ $error }}
@endif
@@ -12,7 +12,7 @@
No mailboxes yet
Verify a domain, then create a mailbox like you@yourdomain.com.
-
Create mailbox
+
Create mailbox
@else
diff --git a/resources/views/email/mailboxes/show.blade.php b/resources/views/email/mailboxes/show.blade.php
index e5ee875..6d6fc6a 100644
--- a/resources/views/email/mailboxes/show.blade.php
+++ b/resources/views/email/mailboxes/show.blade.php
@@ -20,7 +20,7 @@
IMAP{{ $host }}:993 (SSL)
SMTP{{ $host }}:587 (STARTTLS)
-
Open Webmail ↗
+
Open Webmail ↗
@php
@@ -46,7 +46,7 @@
@if($quotaMb < $maxMb)
- Upgrade
+ Upgrade
@else
Top plan
@endif
diff --git a/resources/views/email/mailboxes/upgrade.blade.php b/resources/views/email/mailboxes/upgrade.blade.php
index e6c6a4d..ef6211d 100644
--- a/resources/views/email/mailboxes/upgrade.blade.php
+++ b/resources/views/email/mailboxes/upgrade.blade.php
@@ -44,7 +44,7 @@
@error('quota_mb'){{ $message }}
@enderror
-
diff --git a/resources/views/hosting/account.blade.php b/resources/views/hosting/account.blade.php
index f2a9431..9cd2d28 100644
--- a/resources/views/hosting/account.blade.php
+++ b/resources/views/hosting/account.blade.php
@@ -176,7 +176,7 @@
@endif
@@ -557,7 +557,7 @@
@@ -624,7 +624,7 @@
-
+
Open Control Panel
diff --git a/resources/views/hosting/account/developers.blade.php b/resources/views/hosting/account/developers.blade.php
index 214f429..6b1dce9 100644
--- a/resources/views/hosting/account/developers.blade.php
+++ b/resources/views/hosting/account/developers.blade.php
@@ -27,7 +27,7 @@
class="mt-1 w-full rounded-lg border border-slate-200 bg-slate-50 px-3 py-2 text-sm focus:border-indigo-300 focus:bg-white focus:outline-none focus:ring-2 focus:ring-indigo-100">
@error('name')
{{ $message }}
@enderror
-
+
diff --git a/resources/views/hosting/account/settings.blade.php b/resources/views/hosting/account/settings.blade.php
index ac142d8..ce20254 100644
--- a/resources/views/hosting/account/settings.blade.php
+++ b/resources/views/hosting/account/settings.blade.php
@@ -28,7 +28,7 @@
-
+
@endsection
diff --git a/resources/views/hosting/account/team.blade.php b/resources/views/hosting/account/team.blade.php
index 1045ce8..fbd5732 100644
--- a/resources/views/hosting/account/team.blade.php
+++ b/resources/views/hosting/account/team.blade.php
@@ -21,7 +21,7 @@
-
+
Admins can manage hosting and the team. Members can manage hosting. Invitees join by signing in with that email.
diff --git a/resources/views/hosting/dashboard.blade.php b/resources/views/hosting/dashboard.blade.php
index a363eb7..7404d1d 100644
--- a/resources/views/hosting/dashboard.blade.php
+++ b/resources/views/hosting/dashboard.blade.php
@@ -7,7 +7,7 @@
Overview
Your shared hosting at a glance.
-
+
New hosting
diff --git a/resources/views/hosting/panel/apps.blade.php b/resources/views/hosting/panel/apps.blade.php
index c252e98..b306be9 100644
--- a/resources/views/hosting/panel/apps.blade.php
+++ b/resources/views/hosting/panel/apps.blade.php
@@ -310,7 +310,7 @@
Install in a subfolder instead of the domain root.
-