diff --git a/.env.example b/.env.example
index ce9481c5..cdd5e401 100644
--- a/.env.example
+++ b/.env.example
@@ -83,4 +83,6 @@ CADDY_AUTHORIZED_IPS=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET=
-GOOGLE_REDIRECT_URL=http://localhost:3000/settings/connections/callback/google
\ No newline at end of file
+GOOGLE_REDIRECT_URL=http://localhost:3000/settings/connections/callback/google
+
+GOOGLE_FONTS_API_KEY=
\ No newline at end of file
diff --git a/app/Http/Controllers/FontsController.php b/app/Http/Controllers/FontsController.php
new file mode 100644
index 00000000..cfff8532
--- /dev/null
+++ b/app/Http/Controllers/FontsController.php
@@ -0,0 +1,27 @@
+successful()) {
+ $fonts = collect($response->json()['items'])->filter(function ($font) {
+ return !in_array($font['category'], ['monospace']);
+ })->map(function ($font) {
+ return $font['family'];
+ })->toArray();
+ return response()->json($fonts);
+ }
+
+ return [];
+ });
+ }
+}
diff --git a/app/Http/Requests/UserFormRequest.php b/app/Http/Requests/UserFormRequest.php
index ded6a14b..c7ce75d6 100644
--- a/app/Http/Requests/UserFormRequest.php
+++ b/app/Http/Requests/UserFormRequest.php
@@ -29,6 +29,7 @@ abstract class UserFormRequest extends \Illuminate\Foundation\Http\FormRequest
'visibility' => ['required', Rule::in(Form::VISIBILITY)],
// Customization
+ 'font_family' => 'string|nullable',
'theme' => ['required', Rule::in(Form::THEMES)],
'width' => ['required', Rule::in(Form::WIDTHS)],
'size' => ['required', Rule::in(Form::SIZES)],
diff --git a/app/Models/Forms/Form.php b/app/Models/Forms/Form.php
index 2088a724..cbd5f34c 100644
--- a/app/Models/Forms/Form.php
+++ b/app/Models/Forms/Form.php
@@ -31,9 +31,9 @@ class Form extends Model implements CachableAttributes
public const DARK_MODE_VALUES = ['auto', 'light', 'dark'];
- public const SIZES = ['sm','md','lg'];
+ public const SIZES = ['sm', 'md', 'lg'];
- public const BORDER_RADIUS = ['none','small','full'];
+ public const BORDER_RADIUS = ['none', 'small', 'full'];
public const THEMES = ['default', 'simple', 'notion'];
@@ -53,6 +53,7 @@ class Form extends Model implements CachableAttributes
'visibility',
// Customization
+ 'font_family',
'custom_domain',
'size',
'border_radius',
diff --git a/client/components/open/editors/FontCard.vue b/client/components/open/editors/FontCard.vue
new file mode 100644
index 00000000..09a5c67b
--- /dev/null
+++ b/client/components/open/editors/FontCard.vue
@@ -0,0 +1,68 @@
+
+
+ {{ fontName }}
+