diff --git a/Database/factories/.gitkeep b/Database/Factories_/.gitkeep similarity index 100% rename from Database/factories/.gitkeep rename to Database/Factories_/.gitkeep diff --git a/Database/Migrations/2023_07_05_150102_create_menus_table.php b/Database/Migrations/2023_07_05_150102_create_menus_table.php new file mode 100644 index 00000000..e72b5977 --- /dev/null +++ b/Database/Migrations/2023_07_05_150102_create_menus_table.php @@ -0,0 +1,38 @@ +tableCreate( + static function (Blueprint $table): void { + $table->id(); + + $table->string('name'); + $table->text('items')->nullable(); + // $table->timestamps(); + } + ); + // -- UPDATE -- + $this->tableUpdate( + function (Blueprint $table): void { + // if (! $this->hasColumn('order_column')) { + // $table->integer('order_column')->nullable(); + // } + $this->updateTimestamps(table: $table, hasSoftDeletes: false); + } + ); + } +} diff --git a/Models/Menu.php b/Models/Menu.php new file mode 100644 index 00000000..e8267209 --- /dev/null +++ b/Models/Menu.php @@ -0,0 +1,19 @@ + 'array', + ]; +} diff --git a/Resources/views/components/menu/v1.blade.php b/Resources/views/components/menu/v1.blade.php new file mode 100644 index 00000000..77cc39cc --- /dev/null +++ b/Resources/views/components/menu/v1.blade.php @@ -0,0 +1,12 @@ + diff --git a/Resources/views/components/std/banner.blade.php b/Resources/views/components/std/banner.blade.php new file mode 100644 index 00000000..88cda241 --- /dev/null +++ b/Resources/views/components/std/banner.blade.php @@ -0,0 +1,18 @@ +@props(['image' => '']) + +@php + $background = $image ? 'bg-black' : 'bg-gray-100'; +@endphp + +
+ @if ($image) +
+ @endif + +
+ {!! $slot !!} +
+
diff --git a/Resources/views/components/std/button.blade.php b/Resources/views/components/std/button.blade.php new file mode 100644 index 00000000..0b0452b1 --- /dev/null +++ b/Resources/views/components/std/button.blade.php @@ -0,0 +1,9 @@ +@props(['label']) + + diff --git a/Resources/views/components/std/card.blade.php b/Resources/views/components/std/card.blade.php new file mode 100644 index 00000000..9076ca9c --- /dev/null +++ b/Resources/views/components/std/card.blade.php @@ -0,0 +1,16 @@ +@props(['post']) + +
+ + +

{{ $post->title }}

+
+
+ +
+
diff --git a/Resources/views/components/std/container.blade.php b/Resources/views/components/std/container.blade.php new file mode 100644 index 00000000..f4a9b533 --- /dev/null +++ b/Resources/views/components/std/container.blade.php @@ -0,0 +1,3 @@ +
merge(['class' => 'max-w-wide mx-auto p-2']) }}> + {!! $slot !!} +
diff --git a/Resources/views/components/std/input.blade.php b/Resources/views/components/std/input.blade.php new file mode 100644 index 00000000..eb16ce80 --- /dev/null +++ b/Resources/views/components/std/input.blade.php @@ -0,0 +1,26 @@ +@props([ + 'name', + 'label', + 'id' => '', + 'type' => 'text', +]) + +@php + $id = $id ?: "{$name}_input"; +@endphp + +
+ + + + + @error($name) +
{{ $message }}
+ @enderror +
diff --git a/Resources/views/components/std/menu.blade.php b/Resources/views/components/std/menu.blade.php new file mode 100644 index 00000000..465a74f2 --- /dev/null +++ b/Resources/views/components/std/menu.blade.php @@ -0,0 +1,16 @@ +@props(['name']) + +@if ($menu = \App\Models\Menu::whereName($name)->first()) + +@endif diff --git a/Resources/views/components/std/post-footer.blade.php b/Resources/views/components/std/post-footer.blade.php new file mode 100644 index 00000000..1a2c8ce6 --- /dev/null +++ b/Resources/views/components/std/post-footer.blade.php @@ -0,0 +1,11 @@ +@props(['blocks']) + +@if ($blocks) +
+

See also

+ +
+ +
+
+@endif diff --git a/Resources/views/components/std/post-meta.blade.php b/Resources/views/components/std/post-meta.blade.php new file mode 100644 index 00000000..da3190e6 --- /dev/null +++ b/Resources/views/components/std/post-meta.blade.php @@ -0,0 +1,8 @@ +@props(['post']) + +@if ($post->published_at) + Published on {{ $post->published_at->format('M jS, Y') }} — + in {{ $post->category->name }} +@else + [Not published] +@endif diff --git a/Resources/views/components/std/render-block.blade.php b/Resources/views/components/std/render-block.blade.php new file mode 100644 index 00000000..28937e69 --- /dev/null +++ b/Resources/views/components/std/render-block.blade.php @@ -0,0 +1,3 @@ +@props(['block']) + +@component("components.blocks.{$block['type']}", $block['data'] ?? []) @endcomponent diff --git a/Resources/views/components/std/render-blocks.blade.php b/Resources/views/components/std/render-blocks.blade.php new file mode 100644 index 00000000..be50e6a2 --- /dev/null +++ b/Resources/views/components/std/render-blocks.blade.php @@ -0,0 +1,5 @@ +@props(['blocks']) + +@foreach ($blocks as $block) + +@endforeach diff --git a/Resources/views/components/std/select.blade.php b/Resources/views/components/std/select.blade.php new file mode 100644 index 00000000..35f33115 --- /dev/null +++ b/Resources/views/components/std/select.blade.php @@ -0,0 +1,24 @@ +@props([ + 'name', + 'label' => '', + 'id' => '', +]) + +@php + $id = $id ?: "{$name}_input"; +@endphp + +
+ @if ($label) + + @endif + + +
diff --git a/Resources/views/components/std/textarea.blade.php b/Resources/views/components/std/textarea.blade.php new file mode 100644 index 00000000..21f46709 --- /dev/null +++ b/Resources/views/components/std/textarea.blade.php @@ -0,0 +1,20 @@ +@props([ + 'name', + 'label', + 'id' => '', +]) + +@php + $id = $id ?: "{$name}_input"; +@endphp + +
+ + + +
diff --git a/View/Components/Menu.php b/View/Components/Menu.php new file mode 100644 index 00000000..42b0e43b --- /dev/null +++ b/View/Components/Menu.php @@ -0,0 +1,42 @@ +execute($this->tpl); + $menu = MenuModel::firstOrCreate(['name' => $this->name]); + $view_params = [ + 'menu' => $menu, + ]; + if (null === $menu->items) { + $menu->items = []; + $menu->save(); + } + + return view($view, $view_params); + } +} diff --git a/View/Components/Std.php b/View/Components/Std.php new file mode 100644 index 00000000..4bc69107 --- /dev/null +++ b/View/Components/Std.php @@ -0,0 +1,37 @@ +execute($this->tpl); + + $view_params = []; + + return view($view, $view_params); + } +} diff --git a/View/Components/_components.json b/View/Components/_components.json index 348f4853..25cfcc3f 100644 --- a/View/Components/_components.json +++ b/View/Components/_components.json @@ -1 +1 @@ -[{"class_name":"BreadLink","comp_name":"bread-link","comp_ns":"Modules\\UI\\View\\Components\\BreadLink"},{"class_name":"Svg","comp_name":"svg","comp_ns":"Modules\\UI\\View\\Components\\Svg"}] \ No newline at end of file +[{"class_name":"BreadLink","comp_name":"bread-link","comp_ns":"Modules\\UI\\View\\Components\\BreadLink"},{"class_name":"Menu","comp_name":"menu","comp_ns":"Modules\\UI\\View\\Components\\Menu"},{"class_name":"Std","comp_name":"std","comp_ns":"Modules\\UI\\View\\Components\\Std"},{"class_name":"Svg","comp_name":"svg","comp_ns":"Modules\\UI\\View\\Components\\Svg"}] \ No newline at end of file