├── .editorconfig ├── .env.example ├── .gitattributes ├── .gitignore ├── README.md ├── app ├── Classes │ └── RenderNavItem.php ├── Filament │ └── Resources │ │ ├── UserResource.php │ │ └── UserResource │ │ └── Pages │ │ ├── CreateUser.php │ │ ├── EditUser.php │ │ └── ListUsers.php ├── Http │ └── Controllers │ │ └── Controller.php ├── Models │ └── User.php ├── Policies │ ├── CategoryPolicy.php │ ├── CollectionPolicy.php │ ├── DepartmentPolicy.php │ ├── FaqPolicy.php │ ├── FormPolicy.php │ ├── LayoutPolicy.php │ ├── LetterPolicy.php │ ├── LibraryPolicy.php │ ├── NavigationPolicy.php │ ├── PostPolicy.php │ ├── ResponsePolicy.php │ ├── RolePolicy.php │ ├── TagPolicy.php │ └── UserPolicy.php ├── Providers │ ├── AppServiceProvider.php │ ├── AuthServiceProvider.php │ └── Filament │ │ └── AdminPanelProvider.php └── View │ └── Components │ ├── AppLayout.php │ └── GuestLayout.php ├── artisan ├── bootstrap ├── app.php ├── cache │ └── .gitignore └── providers.php ├── composer.json ├── composer.lock ├── config ├── app.php ├── auth.php ├── cache.php ├── database.php ├── filament-shield.php ├── filesystems.php ├── logging.php ├── mail.php ├── permission.php ├── queue.php ├── sanctum.php ├── services.php ├── session.php ├── zeus-bolt.php ├── zeus-dynamic-dashboard.php ├── zeus-sky.php └── zeus.php ├── database ├── .gitignore ├── factories │ ├── CategoryFactory.php │ ├── CollectionFactory.php │ ├── DepartmentFactory.php │ ├── FieldFactory.php │ ├── FieldResponseFactory.php │ ├── FormFactory.php │ ├── LetterFactory.php │ ├── LibraryFactory.php │ ├── PostFactory.php │ ├── ResponseFactory.php │ ├── SectionFactory.php │ └── UserFactory.php ├── migrations │ ├── 0001_01_01_000001_create_cache_table.php │ ├── 2014_10_12_000000_create_users_table.php │ ├── 2014_10_12_100000_create_password_reset_tokens_table.php │ ├── 2019_08_19_000000_create_failed_jobs_table.php │ ├── 2019_12_14_000001_create_personal_access_tokens_table.php │ ├── 2023_06_15_103253_create_department_table.php │ ├── 2023_06_15_103254_create_letters_table.php │ ├── 2023_06_15_104836_create_posts_table.php │ ├── 2023_06_15_104837_create_faqs_table.php │ ├── 2023_06_15_104838_modify_posts_columns.php │ ├── 2023_06_15_104931_create_tag_tables.php │ ├── 2023_06_15_104938_create_media_table.php │ ├── 2023_06_15_105351_create_categories_table.php │ ├── 2023_06_15_105352_create_collections_table.php │ ├── 2023_06_15_105353_create_forms_table.php │ ├── 2023_06_15_105354_create_sections_table.php │ ├── 2023_06_15_105355_create_fields_table.php │ ├── 2023_06_15_105356_create_responses_table.php │ ├── 2023_06_15_105357_create_field_responses_table.php │ ├── 2023_06_16_033341_create_layouts_table.php │ ├── 2023_06_16_161646_create_library_table.php │ ├── 2023_07_15_234105_create_permission_tables.php │ ├── 2023_08_22_124901_add_extensions_to_forms.php │ ├── 2023_08_22_124902_add_extension_item_responses.php │ ├── 2023_08_22_124903_alter_tables_constraints.php │ ├── 2023_10_15_212052_add_compact_to_section.php │ ├── 2024_01_23_150122_create_navigations_table.php │ ├── 2024_01_23_150126_add_is_active_to_layouts_table.php │ ├── 2024_01_23_150145_add_options_to_section.php │ ├── 2024_06_13_002805_add_grade_to_response.php │ ├── 2024_06_13_002806_add_grade_to_field_response.php │ └── 2025_01_19_013816_add_borderless_to_section.php └── seeders │ ├── BoltSeeder.php │ ├── DatabaseSeeder.php │ ├── RainSeeder.php │ ├── ShieldSeeder.php │ ├── SkySeeder.php │ └── WindSeeder.php ├── lang └── vendor │ ├── filament-shield │ └── en │ │ └── filament-shield.php │ ├── zeus-rain │ ├── ar.json │ └── en.json │ ├── zeus-sky │ ├── ar.json │ ├── en.json │ └── fr.json │ └── zeus-wind │ ├── ar.json │ └── en.json ├── package-lock.json ├── package.json ├── phpstan.neon ├── phpunit.xml ├── pint.json ├── postcss.config.js ├── public ├── .htaccess ├── build │ ├── assets │ │ ├── app-83f7ac21.js │ │ ├── app-a63846b1.css │ │ └── theme-675d2407.css │ └── manifest.json ├── css │ ├── app │ │ └── filament-export-0.3.0.css │ ├── filament-export │ │ └── filament-export-0.3.0.css │ ├── filament-navigation │ │ └── filament-navigation-styles.css │ ├── filament │ │ ├── filament │ │ │ └── app.css │ │ ├── forms │ │ │ └── forms.css │ │ └── support │ │ │ └── support.css │ ├── guava │ │ └── filament-icon-picker │ │ │ └── filament-icon-picker-stylesheet.css │ ├── lara-zeus │ │ └── filament-lara-zeus.css │ └── swisnl │ │ └── filament-backgrounds │ │ └── filament-backgrounds-styles.css ├── favicon.ico ├── images │ └── swisnl │ │ └── filament-backgrounds │ │ ├── curated-by-swis │ │ ├── 01.jpg │ │ ├── 02.jpg │ │ ├── 03.jpg │ │ ├── 04.jpg │ │ ├── 05.jpg │ │ ├── 06.jpg │ │ ├── 07.jpg │ │ ├── 08.jpg │ │ ├── 09.jpg │ │ ├── 10.jpg │ │ ├── 11.jpg │ │ ├── 12.jpg │ │ ├── 13.jpg │ │ ├── 14.jpg │ │ ├── 15.jpg │ │ ├── 16.jpg │ │ ├── 17.jpg │ │ ├── 18.jpg │ │ ├── 19.jpg │ │ ├── 20.jpg │ │ ├── 21.jpg │ │ ├── 22.jpg │ │ ├── 23.jpg │ │ ├── 24.jpg │ │ ├── 25.jpg │ │ ├── 26.jpg │ │ ├── 27.jpg │ │ ├── 28.jpg │ │ ├── 29.jpg │ │ ├── 30.jpg │ │ └── 31.jpg │ │ └── triangles │ │ ├── 01.svg │ │ ├── 02.svg │ │ ├── 03.svg │ │ ├── 04.svg │ │ ├── 05.svg │ │ ├── 06.svg │ │ ├── 07.svg │ │ ├── 08.svg │ │ ├── 09.svg │ │ ├── 10.svg │ │ ├── 11.svg │ │ ├── 12.svg │ │ ├── 13.svg │ │ ├── 14.svg │ │ ├── 15.svg │ │ ├── 16.svg │ │ ├── 17.svg │ │ ├── 18.svg │ │ ├── 19.svg │ │ ├── 20.svg │ │ ├── 21.svg │ │ ├── 22.svg │ │ ├── 23.svg │ │ ├── 24.svg │ │ └── 25.svg ├── index.php ├── js │ ├── app │ │ └── filament-export-0.3.0.js │ ├── awcodes │ │ └── tiptap-editor │ │ │ └── components │ │ │ └── tiptap.js │ ├── filament-export │ │ └── filament-export-0.3.0.js │ ├── filament-navigation │ │ └── filament-navigation-scripts.js │ ├── filament │ │ ├── filament │ │ │ ├── app.js │ │ │ └── echo.js │ │ ├── forms │ │ │ ├── components │ │ │ │ ├── color-picker.js │ │ │ │ ├── date-time-picker.js │ │ │ │ ├── file-upload.js │ │ │ │ ├── key-value.js │ │ │ │ ├── markdown-editor.js │ │ │ │ ├── rich-editor.js │ │ │ │ ├── select.js │ │ │ │ ├── tags-input.js │ │ │ │ └── textarea.js │ │ │ └── forms.js │ │ ├── notifications │ │ │ └── notifications.js │ │ ├── support │ │ │ ├── async-alpine.js │ │ │ └── support.js │ │ ├── tables │ │ │ ├── components │ │ │ │ └── table.js │ │ │ └── tables.js │ │ └── widgets │ │ │ └── components │ │ │ ├── chart.js │ │ │ └── stats-overview │ │ │ └── stat │ │ │ └── chart.js │ └── lara-zeus │ │ └── filament-lara-zeus.js ├── robots.txt └── vendor │ ├── filament-forms-tinyeditor │ ├── js │ │ └── app.js │ └── tinymce │ │ ├── icons │ │ └── default │ │ │ └── icons.min.js │ │ ├── jquery.tinymce.min.js │ │ ├── langs │ │ ├── README.md │ │ ├── ar.js │ │ ├── ca.js │ │ ├── cs.js │ │ ├── cs_CZ.js │ │ ├── cy.js │ │ ├── da.js │ │ ├── de.js │ │ ├── es_419.js │ │ ├── fa.js │ │ ├── fi.js │ │ ├── fr_FR.js │ │ ├── he_IL.js │ │ ├── hr.js │ │ ├── hu_HU.js │ │ ├── id.js │ │ ├── it_IT.js │ │ ├── ja.js │ │ ├── kab.js │ │ ├── nb_NO.js │ │ ├── nl.js │ │ ├── nl_BE.js │ │ ├── pl.js │ │ ├── pt_BR.js │ │ ├── pt_PT.js │ │ ├── ro.js │ │ ├── ru.js │ │ ├── ru_RU.js │ │ ├── sk.js │ │ ├── sl.js │ │ ├── sq.js │ │ ├── sv_SE.js │ │ ├── ta.js │ │ ├── ta_IN.js │ │ ├── th_TH.js │ │ ├── tr.js │ │ ├── tr_TR.js │ │ ├── ug.js │ │ ├── zh_CN.js │ │ └── zh_TW.js │ │ ├── license.txt │ │ ├── plugins │ │ ├── advlist │ │ │ └── plugin.min.js │ │ ├── anchor │ │ │ └── plugin.min.js │ │ ├── autolink │ │ │ └── plugin.min.js │ │ ├── autoresize │ │ │ └── plugin.min.js │ │ ├── autosave │ │ │ └── plugin.min.js │ │ ├── bbcode │ │ │ └── plugin.min.js │ │ ├── charmap │ │ │ └── plugin.min.js │ │ ├── code │ │ │ └── plugin.min.js │ │ ├── codesample │ │ │ └── plugin.min.js │ │ ├── colorpicker │ │ │ └── plugin.min.js │ │ ├── contextmenu │ │ │ └── plugin.min.js │ │ ├── directionality │ │ │ └── plugin.min.js │ │ ├── emoticons │ │ │ ├── js │ │ │ │ ├── emojiimages.js │ │ │ │ ├── emojiimages.min.js │ │ │ │ ├── emojis.js │ │ │ │ └── emojis.min.js │ │ │ └── plugin.min.js │ │ ├── fullpage │ │ │ └── plugin.min.js │ │ ├── fullscreen │ │ │ └── plugin.min.js │ │ ├── help │ │ │ └── plugin.min.js │ │ ├── hr │ │ │ └── plugin.min.js │ │ ├── image │ │ │ └── plugin.min.js │ │ ├── imagetools │ │ │ └── plugin.min.js │ │ ├── importcss │ │ │ └── plugin.min.js │ │ ├── insertdatetime │ │ │ └── plugin.min.js │ │ ├── legacyoutput │ │ │ └── plugin.min.js │ │ ├── link │ │ │ └── plugin.min.js │ │ ├── lists │ │ │ └── plugin.min.js │ │ ├── media │ │ │ └── plugin.min.js │ │ ├── nonbreaking │ │ │ └── plugin.min.js │ │ ├── noneditable │ │ │ └── plugin.min.js │ │ ├── pagebreak │ │ │ └── plugin.min.js │ │ ├── paste │ │ │ └── plugin.min.js │ │ ├── preview │ │ │ └── plugin.min.js │ │ ├── print │ │ │ └── plugin.min.js │ │ ├── quickbars │ │ │ └── plugin.min.js │ │ ├── save │ │ │ └── plugin.min.js │ │ ├── searchreplace │ │ │ └── plugin.min.js │ │ ├── spellchecker │ │ │ └── plugin.min.js │ │ ├── tabfocus │ │ │ └── plugin.min.js │ │ ├── table │ │ │ └── plugin.min.js │ │ ├── template │ │ │ └── plugin.min.js │ │ ├── textcolor │ │ │ └── plugin.min.js │ │ ├── textpattern │ │ │ └── plugin.min.js │ │ ├── toc │ │ │ └── plugin.min.js │ │ ├── visualblocks │ │ │ └── plugin.min.js │ │ ├── visualchars │ │ │ └── plugin.min.js │ │ └── wordcount │ │ │ └── plugin.min.js │ │ ├── skins │ │ ├── content │ │ │ ├── dark │ │ │ │ └── content.min.css │ │ │ ├── default │ │ │ │ └── content.min.css │ │ │ ├── document │ │ │ │ └── content.min.css │ │ │ └── writer │ │ │ │ └── content.min.css │ │ └── ui │ │ │ ├── dark │ │ │ ├── content.css │ │ │ ├── content.inline.css │ │ │ ├── content.inline.min.css │ │ │ ├── content.min.css │ │ │ ├── content.mobile.css │ │ │ ├── content.mobile.min.css │ │ │ ├── fonts │ │ │ │ └── tinymce-mobile.woff │ │ │ ├── skin.css │ │ │ ├── skin.min.css │ │ │ ├── skin.mobile.css │ │ │ └── skin.mobile.min.css │ │ │ ├── light │ │ │ ├── content.css │ │ │ ├── content.inline.css │ │ │ ├── content.inline.min.css │ │ │ ├── content.min.css │ │ │ ├── content.mobile.css │ │ │ ├── content.mobile.min.css │ │ │ ├── fonts │ │ │ │ └── tinymce-mobile.woff │ │ │ ├── skin.css │ │ │ ├── skin.min.css │ │ │ ├── skin.mobile.css │ │ │ └── skin.mobile.min.css │ │ │ ├── oxide-dark │ │ │ ├── content.inline.min.css │ │ │ ├── content.min.css │ │ │ ├── content.mobile.min.css │ │ │ ├── fonts │ │ │ │ └── tinymce-mobile.woff │ │ │ ├── skin.min.css │ │ │ ├── skin.mobile.min.css │ │ │ └── skin.shadowdom.min.css │ │ │ └── oxide │ │ │ ├── content.inline.min.css │ │ │ ├── content.min.css │ │ │ ├── content.mobile.min.css │ │ │ ├── fonts │ │ │ └── tinymce-mobile.woff │ │ │ ├── skin.min.css │ │ │ ├── skin.mobile.min.css │ │ │ └── skin.shadowdom.min.css │ │ ├── themes │ │ ├── mobile │ │ │ └── theme.min.js │ │ └── silver │ │ │ └── theme.min.js │ │ ├── tinymce.d.ts │ │ └── tinymce.min.js │ ├── livewire │ ├── livewire.esm.js │ ├── livewire.esm.js.map │ ├── livewire.js │ ├── livewire.js.map │ ├── livewire.min.js │ ├── livewire.min.js.map │ └── manifest.json │ ├── zeus-artemis │ ├── css │ │ ├── another-portfolio.css │ │ ├── app.css │ │ ├── breeze.css │ │ ├── daisy.css │ │ └── daisyui.css │ └── js │ │ ├── 826.js │ │ ├── 826.js.LICENSE.txt │ │ ├── another-portfolio.js │ │ ├── another-portfolio.js.LICENSE.txt │ │ └── node_modules_photoswipe_dist_photoswipe_esm_js.js │ └── zeus │ ├── app.js │ ├── app.js.LICENSE.txt │ ├── filament-tail.css │ ├── filament.css │ ├── filament.js │ ├── frontend.css │ ├── helen.js │ ├── lara-zeus.css │ ├── plugin.js │ └── plugin.js.LICENSE.txt ├── resources ├── css │ ├── app.css │ └── filament │ │ └── admin │ │ ├── tailwind.config.js │ │ └── theme.css ├── js │ └── app.js └── views │ ├── components │ ├── application-logo.blade.php │ ├── dropdown-link.blade.php │ ├── dropdown.blade.php │ ├── nav-link.blade.php │ └── zeus │ │ └── card.blade.php │ ├── layouts │ ├── app.blade.php │ ├── guest.blade.php │ └── navigation.blade.php │ └── vendor │ └── zeus │ ├── components │ └── app.blade.php │ └── themes │ ├── another-portfolio │ └── layouts │ │ └── navigation.blade.php │ └── daisy │ └── layouts │ └── navigation.blade.php ├── routes ├── console.php └── web.php ├── storage ├── app │ ├── .gitignore │ └── public │ │ └── .gitignore ├── framework │ ├── .gitignore │ ├── cache │ │ ├── .gitignore │ │ └── data │ │ │ └── .gitignore │ ├── sessions │ │ └── .gitignore │ ├── testing │ │ └── .gitignore │ └── views │ │ └── .gitignore └── logs │ └── .gitignore ├── tailwind.config.js ├── tests ├── CreatesApplication.php ├── Feature │ └── ExampleTest.php ├── Pest.php ├── TestCase.php └── Unit │ └── ExampleTest.php └── vite.config.js /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | indent_size = 4 7 | indent_style = space 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | trim_trailing_whitespace = false 13 | 14 | [*.{yml,yaml}] 15 | indent_size = 2 16 | 17 | [docker-compose.yml] 18 | indent_size = 4 19 | -------------------------------------------------------------------------------- /.env.example: -------------------------------------------------------------------------------- 1 | APP_NAME=Laravel 2 | APP_ENV=local 3 | APP_KEY= 4 | APP_DEBUG=true 5 | APP_URL=http://localhost 6 | 7 | LOG_CHANNEL=stack 8 | LOG_DEPRECATIONS_CHANNEL=null 9 | LOG_LEVEL=debug 10 | 11 | DB_CONNECTION=mysql 12 | DB_HOST=127.0.0.1 13 | DB_PORT=3306 14 | DB_DATABASE=laravel 15 | DB_USERNAME=root 16 | DB_PASSWORD= 17 | 18 | BROADCAST_DRIVER=log 19 | CACHE_DRIVER=file 20 | FILESYSTEM_DISK=local 21 | QUEUE_CONNECTION=sync 22 | SESSION_DRIVER=file 23 | SESSION_LIFETIME=120 24 | 25 | MEMCACHED_HOST=127.0.0.1 26 | 27 | REDIS_HOST=127.0.0.1 28 | REDIS_PASSWORD=null 29 | REDIS_PORT=6379 30 | 31 | MAIL_MAILER=smtp 32 | MAIL_HOST=mailpit 33 | MAIL_PORT=1025 34 | MAIL_USERNAME=null 35 | MAIL_PASSWORD=null 36 | MAIL_ENCRYPTION=null 37 | MAIL_FROM_ADDRESS="hello@example.com" 38 | MAIL_FROM_NAME="${APP_NAME}" 39 | 40 | AWS_ACCESS_KEY_ID= 41 | AWS_SECRET_ACCESS_KEY= 42 | AWS_DEFAULT_REGION=us-east-1 43 | AWS_BUCKET= 44 | AWS_USE_PATH_STYLE_ENDPOINT=false 45 | 46 | PUSHER_APP_ID= 47 | PUSHER_APP_KEY= 48 | PUSHER_APP_SECRET= 49 | PUSHER_HOST= 50 | PUSHER_PORT=443 51 | PUSHER_SCHEME=https 52 | PUSHER_APP_CLUSTER=mt1 53 | 54 | VITE_PUSHER_APP_KEY="${PUSHER_APP_KEY}" 55 | VITE_PUSHER_HOST="${PUSHER_HOST}" 56 | VITE_PUSHER_PORT="${PUSHER_PORT}" 57 | VITE_PUSHER_SCHEME="${PUSHER_SCHEME}" 58 | VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" 59 | -------------------------------------------------------------------------------- /.gitattributes: -------------------------------------------------------------------------------- 1 | * text=auto eol=lf 2 | 3 | *.blade.php diff=html 4 | *.css diff=css 5 | *.html diff=html 6 | *.md diff=markdown 7 | *.php diff=php 8 | 9 | /.github export-ignore 10 | CHANGELOG.md export-ignore 11 | .styleci.yml export-ignore 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.phpunit.cache 2 | /node_modules 3 | /public/hot 4 | /public/storage 5 | /storage/*.key 6 | /vendor 7 | .env 8 | .env.backup 9 | .env.production 10 | .phpunit.result.cache 11 | Homestead.json 12 | Homestead.yaml 13 | auth.json 14 | npm-debug.log 15 | yarn-error.log 16 | /.fleet 17 | /.idea 18 | /.vscode 19 | -------------------------------------------------------------------------------- /app/Filament/Resources/UserResource/Pages/CreateUser.php: -------------------------------------------------------------------------------- 1 | 24 | */ 25 | protected $hidden = [ 26 | 'password', 27 | 'remember_token', 28 | ]; 29 | 30 | /** 31 | * The attributes that should be cast. 32 | * 33 | * @var array 34 | */ 35 | protected $casts = [ 36 | 'email_verified_at' => 'datetime', 37 | 'password' => 'hashed', 38 | ]; 39 | 40 | public function canAccessPanel(\Filament\Panel $panel): bool 41 | { 42 | return true; // str_ends_with($this->email, '@yourdomain.com') && $this->hasVerifiedEmail(); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /app/Policies/FaqPolicy.php: -------------------------------------------------------------------------------- 1 | can('view_any_faq'); 19 | } 20 | 21 | /** 22 | * Determine whether the user can view the model. 23 | */ 24 | public function view(User $user, Faq $faq): bool 25 | { 26 | return $user->can('view_faq'); 27 | } 28 | 29 | /** 30 | * Determine whether the user can create models. 31 | */ 32 | public function create(User $user): bool 33 | { 34 | return $user->can('create_faq'); 35 | } 36 | 37 | /** 38 | * Determine whether the user can update the model. 39 | */ 40 | public function update(User $user, Faq $faq): bool 41 | { 42 | return $user->can('update_faq'); 43 | } 44 | 45 | /** 46 | * Determine whether the user can delete the model. 47 | */ 48 | public function delete(User $user, Faq $faq): bool 49 | { 50 | return $user->can('delete_faq'); 51 | } 52 | 53 | /** 54 | * Determine whether the user can bulk delete. 55 | */ 56 | public function deleteAny(User $user): bool 57 | { 58 | return $user->can('delete_any_faq'); 59 | } 60 | 61 | /** 62 | * Determine whether the user can permanently delete. 63 | */ 64 | public function forceDelete(User $user, Faq $faq): bool 65 | { 66 | return $user->can('force_delete_faq'); 67 | } 68 | 69 | /** 70 | * Determine whether the user can permanently bulk delete. 71 | */ 72 | public function forceDeleteAny(User $user): bool 73 | { 74 | return $user->can('force_delete_any_faq'); 75 | } 76 | 77 | /** 78 | * Determine whether the user can restore. 79 | */ 80 | public function restore(User $user, Faq $faq): bool 81 | { 82 | return $user->can('restore_faq'); 83 | } 84 | 85 | /** 86 | * Determine whether the user can bulk restore. 87 | */ 88 | public function restoreAny(User $user): bool 89 | { 90 | return $user->can('restore_any_faq'); 91 | } 92 | 93 | /** 94 | * Determine whether the user can replicate. 95 | */ 96 | public function replicate(User $user, Faq $faq): bool 97 | { 98 | return $user->can('replicate_faq'); 99 | } 100 | 101 | /** 102 | * Determine whether the user can reorder. 103 | */ 104 | public function reorder(User $user): bool 105 | { 106 | return $user->can('reorder_faq'); 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /app/Policies/FormPolicy.php: -------------------------------------------------------------------------------- 1 | can('view_any_form'); 19 | } 20 | 21 | /** 22 | * Determine whether the user can view the model. 23 | */ 24 | public function view(User $user, Form $form): bool 25 | { 26 | return $user->can('view_form'); 27 | } 28 | 29 | /** 30 | * Determine whether the user can create models. 31 | */ 32 | public function create(User $user): bool 33 | { 34 | return $user->can('create_form'); 35 | } 36 | 37 | /** 38 | * Determine whether the user can update the model. 39 | */ 40 | public function update(User $user, Form $form): bool 41 | { 42 | return $user->can('update_form'); 43 | } 44 | 45 | /** 46 | * Determine whether the user can delete the model. 47 | */ 48 | public function delete(User $user, Form $form): bool 49 | { 50 | return $user->can('delete_form'); 51 | } 52 | 53 | /** 54 | * Determine whether the user can bulk delete. 55 | */ 56 | public function deleteAny(User $user): bool 57 | { 58 | return $user->can('delete_any_form'); 59 | } 60 | 61 | /** 62 | * Determine whether the user can permanently delete. 63 | */ 64 | public function forceDelete(User $user, Form $form): bool 65 | { 66 | return $user->can('force_delete_form'); 67 | } 68 | 69 | /** 70 | * Determine whether the user can permanently bulk delete. 71 | */ 72 | public function forceDeleteAny(User $user): bool 73 | { 74 | return $user->can('force_delete_any_form'); 75 | } 76 | 77 | /** 78 | * Determine whether the user can restore. 79 | */ 80 | public function restore(User $user, Form $form): bool 81 | { 82 | return $user->can('restore_form'); 83 | } 84 | 85 | /** 86 | * Determine whether the user can bulk restore. 87 | */ 88 | public function restoreAny(User $user): bool 89 | { 90 | return $user->can('restore_any_form'); 91 | } 92 | 93 | /** 94 | * Determine whether the user can replicate. 95 | */ 96 | public function replicate(User $user, Form $form): bool 97 | { 98 | return $user->can('replicate_form'); 99 | } 100 | 101 | /** 102 | * Determine whether the user can reorder. 103 | */ 104 | public function reorder(User $user): bool 105 | { 106 | return $user->can('reorder_form'); 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /app/Policies/LayoutPolicy.php: -------------------------------------------------------------------------------- 1 | can('view_any_layout'); 19 | } 20 | 21 | /** 22 | * Determine whether the user can view the model. 23 | */ 24 | public function view(User $user, Layout $layout): bool 25 | { 26 | return $user->can('view_layout'); 27 | } 28 | 29 | /** 30 | * Determine whether the user can create models. 31 | */ 32 | public function create(User $user): bool 33 | { 34 | return $user->can('create_layout'); 35 | } 36 | 37 | /** 38 | * Determine whether the user can update the model. 39 | */ 40 | public function update(User $user, Layout $layout): bool 41 | { 42 | return $user->can('update_layout'); 43 | } 44 | 45 | /** 46 | * Determine whether the user can delete the model. 47 | */ 48 | public function delete(User $user, Layout $layout): bool 49 | { 50 | return $user->can('delete_layout'); 51 | } 52 | 53 | /** 54 | * Determine whether the user can bulk delete. 55 | */ 56 | public function deleteAny(User $user): bool 57 | { 58 | return $user->can('delete_any_layout'); 59 | } 60 | 61 | /** 62 | * Determine whether the user can permanently delete. 63 | */ 64 | public function forceDelete(User $user, Layout $layout): bool 65 | { 66 | return $user->can('force_delete_layout'); 67 | } 68 | 69 | /** 70 | * Determine whether the user can permanently bulk delete. 71 | */ 72 | public function forceDeleteAny(User $user): bool 73 | { 74 | return $user->can('force_delete_any_layout'); 75 | } 76 | 77 | /** 78 | * Determine whether the user can restore. 79 | */ 80 | public function restore(User $user, Layout $layout): bool 81 | { 82 | return $user->can('restore_layout'); 83 | } 84 | 85 | /** 86 | * Determine whether the user can bulk restore. 87 | */ 88 | public function restoreAny(User $user): bool 89 | { 90 | return $user->can('restore_any_layout'); 91 | } 92 | 93 | /** 94 | * Determine whether the user can replicate. 95 | */ 96 | public function replicate(User $user, Layout $layout): bool 97 | { 98 | return $user->can('replicate_layout'); 99 | } 100 | 101 | /** 102 | * Determine whether the user can reorder. 103 | */ 104 | public function reorder(User $user): bool 105 | { 106 | return $user->can('reorder_layout'); 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /app/Policies/LetterPolicy.php: -------------------------------------------------------------------------------- 1 | can('view_any_letter'); 19 | } 20 | 21 | /** 22 | * Determine whether the user can view the model. 23 | */ 24 | public function view(User $user, Letter $letter): bool 25 | { 26 | return $user->can('view_letter'); 27 | } 28 | 29 | /** 30 | * Determine whether the user can create models. 31 | */ 32 | public function create(User $user): bool 33 | { 34 | return $user->can('create_letter'); 35 | } 36 | 37 | /** 38 | * Determine whether the user can update the model. 39 | */ 40 | public function update(User $user, Letter $letter): bool 41 | { 42 | return $user->can('update_letter'); 43 | } 44 | 45 | /** 46 | * Determine whether the user can delete the model. 47 | */ 48 | public function delete(User $user, Letter $letter): bool 49 | { 50 | return $user->can('delete_letter'); 51 | } 52 | 53 | /** 54 | * Determine whether the user can bulk delete. 55 | */ 56 | public function deleteAny(User $user): bool 57 | { 58 | return $user->can('delete_any_letter'); 59 | } 60 | 61 | /** 62 | * Determine whether the user can permanently delete. 63 | */ 64 | public function forceDelete(User $user, Letter $letter): bool 65 | { 66 | return $user->can('force_delete_letter'); 67 | } 68 | 69 | /** 70 | * Determine whether the user can permanently bulk delete. 71 | */ 72 | public function forceDeleteAny(User $user): bool 73 | { 74 | return $user->can('force_delete_any_letter'); 75 | } 76 | 77 | /** 78 | * Determine whether the user can restore. 79 | */ 80 | public function restore(User $user, Letter $letter): bool 81 | { 82 | return $user->can('restore_letter'); 83 | } 84 | 85 | /** 86 | * Determine whether the user can bulk restore. 87 | */ 88 | public function restoreAny(User $user): bool 89 | { 90 | return $user->can('restore_any_letter'); 91 | } 92 | 93 | /** 94 | * Determine whether the user can replicate. 95 | */ 96 | public function replicate(User $user, Letter $letter): bool 97 | { 98 | return $user->can('replicate_letter'); 99 | } 100 | 101 | /** 102 | * Determine whether the user can reorder. 103 | */ 104 | public function reorder(User $user): bool 105 | { 106 | return $user->can('reorder_letter'); 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /app/Policies/LibraryPolicy.php: -------------------------------------------------------------------------------- 1 | can('view_any_library'); 19 | } 20 | 21 | /** 22 | * Determine whether the user can view the model. 23 | */ 24 | public function view(User $user, Library $library): bool 25 | { 26 | return $user->can('view_library'); 27 | } 28 | 29 | /** 30 | * Determine whether the user can create models. 31 | */ 32 | public function create(User $user): bool 33 | { 34 | return $user->can('create_library'); 35 | } 36 | 37 | /** 38 | * Determine whether the user can update the model. 39 | */ 40 | public function update(User $user, Library $library): bool 41 | { 42 | return $user->can('update_library'); 43 | } 44 | 45 | /** 46 | * Determine whether the user can delete the model. 47 | */ 48 | public function delete(User $user, Library $library): bool 49 | { 50 | return $user->can('delete_library'); 51 | } 52 | 53 | /** 54 | * Determine whether the user can bulk delete. 55 | */ 56 | public function deleteAny(User $user): bool 57 | { 58 | return $user->can('delete_any_library'); 59 | } 60 | 61 | /** 62 | * Determine whether the user can permanently delete. 63 | */ 64 | public function forceDelete(User $user, Library $library): bool 65 | { 66 | return $user->can('force_delete_library'); 67 | } 68 | 69 | /** 70 | * Determine whether the user can permanently bulk delete. 71 | */ 72 | public function forceDeleteAny(User $user): bool 73 | { 74 | return $user->can('force_delete_any_library'); 75 | } 76 | 77 | /** 78 | * Determine whether the user can restore. 79 | */ 80 | public function restore(User $user, Library $library): bool 81 | { 82 | return $user->can('restore_library'); 83 | } 84 | 85 | /** 86 | * Determine whether the user can bulk restore. 87 | */ 88 | public function restoreAny(User $user): bool 89 | { 90 | return $user->can('restore_any_library'); 91 | } 92 | 93 | /** 94 | * Determine whether the user can replicate. 95 | */ 96 | public function replicate(User $user, Library $library): bool 97 | { 98 | return $user->can('replicate_library'); 99 | } 100 | 101 | /** 102 | * Determine whether the user can reorder. 103 | */ 104 | public function reorder(User $user): bool 105 | { 106 | return $user->can('reorder_library'); 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /app/Policies/PostPolicy.php: -------------------------------------------------------------------------------- 1 | can('view_any_post'); 19 | } 20 | 21 | /** 22 | * Determine whether the user can view the model. 23 | */ 24 | public function view(User $user, Post $post): bool 25 | { 26 | return $user->can('view_post'); 27 | } 28 | 29 | /** 30 | * Determine whether the user can create models. 31 | */ 32 | public function create(User $user): bool 33 | { 34 | return $user->can('create_post'); 35 | } 36 | 37 | /** 38 | * Determine whether the user can update the model. 39 | */ 40 | public function update(User $user, Post $post): bool 41 | { 42 | return $user->can('update_post'); 43 | } 44 | 45 | /** 46 | * Determine whether the user can delete the model. 47 | */ 48 | public function delete(User $user, Post $post): bool 49 | { 50 | return $user->can('delete_post'); 51 | } 52 | 53 | /** 54 | * Determine whether the user can bulk delete. 55 | */ 56 | public function deleteAny(User $user): bool 57 | { 58 | return $user->can('delete_any_post'); 59 | } 60 | 61 | /** 62 | * Determine whether the user can permanently delete. 63 | */ 64 | public function forceDelete(User $user, Post $post): bool 65 | { 66 | return $user->can('force_delete_post'); 67 | } 68 | 69 | /** 70 | * Determine whether the user can permanently bulk delete. 71 | */ 72 | public function forceDeleteAny(User $user): bool 73 | { 74 | return $user->can('force_delete_any_post'); 75 | } 76 | 77 | /** 78 | * Determine whether the user can restore. 79 | */ 80 | public function restore(User $user, Post $post): bool 81 | { 82 | return $user->can('restore_post'); 83 | } 84 | 85 | /** 86 | * Determine whether the user can bulk restore. 87 | */ 88 | public function restoreAny(User $user): bool 89 | { 90 | return $user->can('restore_any_post'); 91 | } 92 | 93 | /** 94 | * Determine whether the user can replicate. 95 | */ 96 | public function replicate(User $user, Post $post): bool 97 | { 98 | return $user->can('replicate_post'); 99 | } 100 | 101 | /** 102 | * Determine whether the user can reorder. 103 | */ 104 | public function reorder(User $user): bool 105 | { 106 | return $user->can('reorder_post'); 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /app/Policies/RolePolicy.php: -------------------------------------------------------------------------------- 1 | can('view_any_role'); 19 | } 20 | 21 | /** 22 | * Determine whether the user can view the model. 23 | */ 24 | public function view(User $user, Role $role): bool 25 | { 26 | return $user->can('view_role'); 27 | } 28 | 29 | /** 30 | * Determine whether the user can create models. 31 | */ 32 | public function create(User $user): bool 33 | { 34 | return $user->can('create_role'); 35 | } 36 | 37 | /** 38 | * Determine whether the user can update the model. 39 | */ 40 | public function update(User $user, Role $role): bool 41 | { 42 | return $user->can('update_role'); 43 | } 44 | 45 | /** 46 | * Determine whether the user can delete the model. 47 | */ 48 | public function delete(User $user, Role $role): bool 49 | { 50 | return $user->can('delete_role'); 51 | } 52 | 53 | /** 54 | * Determine whether the user can bulk delete. 55 | */ 56 | public function deleteAny(User $user): bool 57 | { 58 | return $user->can('delete_any_role'); 59 | } 60 | 61 | /** 62 | * Determine whether the user can permanently delete. 63 | */ 64 | public function forceDelete(User $user, Role $role): bool 65 | { 66 | return $user->can('{{ ForceDelete }}'); 67 | } 68 | 69 | /** 70 | * Determine whether the user can permanently bulk delete. 71 | */ 72 | public function forceDeleteAny(User $user): bool 73 | { 74 | return $user->can('{{ ForceDeleteAny }}'); 75 | } 76 | 77 | /** 78 | * Determine whether the user can restore. 79 | */ 80 | public function restore(User $user, Role $role): bool 81 | { 82 | return $user->can('{{ Restore }}'); 83 | } 84 | 85 | /** 86 | * Determine whether the user can bulk restore. 87 | */ 88 | public function restoreAny(User $user): bool 89 | { 90 | return $user->can('{{ RestoreAny }}'); 91 | } 92 | 93 | /** 94 | * Determine whether the user can replicate. 95 | */ 96 | public function replicate(User $user, Role $role): bool 97 | { 98 | return $user->can('{{ Replicate }}'); 99 | } 100 | 101 | /** 102 | * Determine whether the user can reorder. 103 | */ 104 | public function reorder(User $user): bool 105 | { 106 | return $user->can('{{ Reorder }}'); 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /app/Policies/TagPolicy.php: -------------------------------------------------------------------------------- 1 | can('view_any_tag'); 19 | } 20 | 21 | /** 22 | * Determine whether the user can view the model. 23 | */ 24 | public function view(User $user, Tag $tag): bool 25 | { 26 | return $user->can('view_tag'); 27 | } 28 | 29 | /** 30 | * Determine whether the user can create models. 31 | */ 32 | public function create(User $user): bool 33 | { 34 | return $user->can('create_tag'); 35 | } 36 | 37 | /** 38 | * Determine whether the user can update the model. 39 | */ 40 | public function update(User $user, Tag $tag): bool 41 | { 42 | return $user->can('update_tag'); 43 | } 44 | 45 | /** 46 | * Determine whether the user can delete the model. 47 | */ 48 | public function delete(User $user, Tag $tag): bool 49 | { 50 | return $user->can('delete_tag'); 51 | } 52 | 53 | /** 54 | * Determine whether the user can bulk delete. 55 | */ 56 | public function deleteAny(User $user): bool 57 | { 58 | return $user->can('delete_any_tag'); 59 | } 60 | 61 | /** 62 | * Determine whether the user can permanently delete. 63 | */ 64 | public function forceDelete(User $user, Tag $tag): bool 65 | { 66 | return $user->can('force_delete_tag'); 67 | } 68 | 69 | /** 70 | * Determine whether the user can permanently bulk delete. 71 | */ 72 | public function forceDeleteAny(User $user): bool 73 | { 74 | return $user->can('force_delete_any_tag'); 75 | } 76 | 77 | /** 78 | * Determine whether the user can restore. 79 | */ 80 | public function restore(User $user, Tag $tag): bool 81 | { 82 | return $user->can('restore_tag'); 83 | } 84 | 85 | /** 86 | * Determine whether the user can bulk restore. 87 | */ 88 | public function restoreAny(User $user): bool 89 | { 90 | return $user->can('restore_any_tag'); 91 | } 92 | 93 | /** 94 | * Determine whether the user can replicate. 95 | */ 96 | public function replicate(User $user, Tag $tag): bool 97 | { 98 | return $user->can('replicate_tag'); 99 | } 100 | 101 | /** 102 | * Determine whether the user can reorder. 103 | */ 104 | public function reorder(User $user): bool 105 | { 106 | return $user->can('reorder_tag'); 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /app/Policies/UserPolicy.php: -------------------------------------------------------------------------------- 1 | can('view_any_user'); 18 | } 19 | 20 | /** 21 | * Determine whether the user can view the model. 22 | */ 23 | public function view(User $user): bool 24 | { 25 | return $user->can('view_user'); 26 | } 27 | 28 | /** 29 | * Determine whether the user can create models. 30 | */ 31 | public function create(User $user): bool 32 | { 33 | return $user->can('create_user'); 34 | } 35 | 36 | /** 37 | * Determine whether the user can update the model. 38 | */ 39 | public function update(User $user): bool 40 | { 41 | return $user->can('update_user'); 42 | } 43 | 44 | /** 45 | * Determine whether the user can delete the model. 46 | */ 47 | public function delete(User $user): bool 48 | { 49 | return $user->can('delete_user'); 50 | } 51 | 52 | /** 53 | * Determine whether the user can bulk delete. 54 | */ 55 | public function deleteAny(User $user): bool 56 | { 57 | return $user->can('delete_any_user'); 58 | } 59 | 60 | /** 61 | * Determine whether the user can permanently delete. 62 | */ 63 | public function forceDelete(User $user): bool 64 | { 65 | return $user->can('force_delete_user'); 66 | } 67 | 68 | /** 69 | * Determine whether the user can permanently bulk delete. 70 | */ 71 | public function forceDeleteAny(User $user): bool 72 | { 73 | return $user->can('force_delete_any_user'); 74 | } 75 | 76 | /** 77 | * Determine whether the user can restore. 78 | */ 79 | public function restore(User $user): bool 80 | { 81 | return $user->can('restore_user'); 82 | } 83 | 84 | /** 85 | * Determine whether the user can bulk restore. 86 | */ 87 | public function restoreAny(User $user): bool 88 | { 89 | return $user->can('restore_any_user'); 90 | } 91 | 92 | /** 93 | * Determine whether the user can bulk restore. 94 | */ 95 | public function replicate(User $user): bool 96 | { 97 | return $user->can('replicate_user'); 98 | } 99 | 100 | /** 101 | * Determine whether the user can reorder. 102 | */ 103 | public function reorder(User $user): bool 104 | { 105 | return $user->can('reorder_user'); 106 | } 107 | } 108 | -------------------------------------------------------------------------------- /app/Providers/AppServiceProvider.php: -------------------------------------------------------------------------------- 1 | itemType( 28 | __('App link'), 29 | [ 30 | Select::make('app_code') 31 | ->label(__('Select App')) 32 | ->options([ 33 | 'blog' => __('Blog homepage'), 34 | 'contact' => __('Contact us page'), 35 | 'faq' => __('Faq page'), 36 | 'libraries' => __('Libraries page'), 37 | 'forms' => __('Forms page'), 38 | ]), 39 | ], 40 | 'app_link' 41 | ); 42 | }); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /app/Providers/AuthServiceProvider.php: -------------------------------------------------------------------------------- 1 | 14 | */ 15 | protected $policies = [ 16 | // 17 | ]; 18 | 19 | /** 20 | * Register any authentication / authorization services. 21 | */ 22 | public function boot(): void 23 | { 24 | // 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /app/View/Components/AppLayout.php: -------------------------------------------------------------------------------- 1 | make(Illuminate\Contracts\Console\Kernel::class); 34 | 35 | $status = $kernel->handle( 36 | $input = new Symfony\Component\Console\Input\ArgvInput, 37 | new Symfony\Component\Console\Output\ConsoleOutput 38 | ); 39 | 40 | /* 41 | |-------------------------------------------------------------------------- 42 | | Shutdown The Application 43 | |-------------------------------------------------------------------------- 44 | | 45 | | Once Artisan has finished running, we will fire off the shutdown events 46 | | so that any final work may be done by the application before we shut 47 | | down the process. This is the last thing to happen to the request. 48 | | 49 | */ 50 | 51 | $kernel->terminate($input, $status); 52 | 53 | exit($status); 54 | -------------------------------------------------------------------------------- /bootstrap/app.php: -------------------------------------------------------------------------------- 1 | withRouting( 9 | web: __DIR__.'/../routes/web.php', 10 | commands: __DIR__.'/../routes/console.php', 11 | health: '/up', 12 | ) 13 | ->withMiddleware(function (Middleware $middleware) { 14 | // 15 | }) 16 | ->withExceptions(function (Exceptions $exceptions) { 17 | // 18 | })->create(); 19 | -------------------------------------------------------------------------------- /bootstrap/cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore 3 | -------------------------------------------------------------------------------- /bootstrap/providers.php: -------------------------------------------------------------------------------- 1 | [ 5 | 'should_register_navigation' => true, 6 | 'slug' => 'shield/roles', 7 | 'navigation_sort' => 99, 8 | 'navigation_badge' => true, 9 | 'navigation_group' => true, 10 | 'is_globally_searchable' => false, 11 | 'show_model_path' => true, 12 | ], 13 | 14 | 'auth_provider_model' => [ 15 | 'fqcn' => App\Models\User::class, 16 | ], 17 | 18 | 'super_admin' => [ 19 | 'enabled' => true, 20 | 'name' => 'super_admin', 21 | 'define_via_gate' => false, 22 | 'intercept_gate' => 'before', // after 23 | ], 24 | 25 | 'panel_user' => [ 26 | 'enabled' => true, 27 | 'name' => 'panel_user', 28 | ], 29 | 30 | 'permission_prefixes' => [ 31 | 'resource' => [ 32 | 'view', 33 | 'view_any', 34 | 'create', 35 | 'update', 36 | 'restore', 37 | 'restore_any', 38 | 'replicate', 39 | 'reorder', 40 | 'delete', 41 | 'delete_any', 42 | 'force_delete', 43 | 'force_delete_any', 44 | ], 45 | 46 | 'page' => 'page', 47 | 'widget' => 'widget', 48 | ], 49 | 50 | 'entities' => [ 51 | 'pages' => true, 52 | 'widgets' => true, 53 | 'resources' => true, 54 | 'custom_permissions' => false, 55 | ], 56 | 57 | 'generator' => [ 58 | 'option' => 'policies_and_permissions', 59 | ], 60 | 61 | 'exclude' => [ 62 | 'enabled' => true, 63 | 64 | 'pages' => [ 65 | 'Dashboard', 66 | ], 67 | 68 | 'widgets' => [ 69 | 'AccountWidget', 'FilamentInfoWidget', 70 | ], 71 | 72 | 'resources' => [], 73 | ], 74 | 75 | 'discovery' => [ 76 | 'discover_all_resources' => true, 77 | 'discover_all_widgets' => true, 78 | 'discover_all_pages' => true, 79 | ], 80 | 81 | 'register_role_policy' => [ 82 | 'enabled' => true, 83 | ], 84 | 85 | ]; 86 | -------------------------------------------------------------------------------- /config/filesystems.php: -------------------------------------------------------------------------------- 1 | env('FILESYSTEM_DISK', 'local'), 17 | 18 | /* 19 | |-------------------------------------------------------------------------- 20 | | Filesystem Disks 21 | |-------------------------------------------------------------------------- 22 | | 23 | | Below you may configure as many filesystem disks as necessary, and you 24 | | may even configure multiple disks for the same driver. Examples for 25 | | most supported storage drivers are configured here for reference. 26 | | 27 | | Supported drivers: "local", "ftp", "sftp", "s3" 28 | | 29 | */ 30 | 31 | 'disks' => [ 32 | 33 | 'local' => [ 34 | 'driver' => 'local', 35 | 'root' => storage_path('app/private'), 36 | 'serve' => true, 37 | 'throw' => false, 38 | 'report' => false, 39 | ], 40 | 41 | 'public' => [ 42 | 'driver' => 'local', 43 | 'root' => storage_path('app/public'), 44 | 'url' => env('APP_URL').'/storage', 45 | 'visibility' => 'public', 46 | 'throw' => false, 47 | 'report' => false, 48 | ], 49 | 50 | 's3' => [ 51 | 'driver' => 's3', 52 | 'key' => env('AWS_ACCESS_KEY_ID'), 53 | 'secret' => env('AWS_SECRET_ACCESS_KEY'), 54 | 'region' => env('AWS_DEFAULT_REGION'), 55 | 'bucket' => env('AWS_BUCKET'), 56 | 'url' => env('AWS_URL'), 57 | 'endpoint' => env('AWS_ENDPOINT'), 58 | 'use_path_style_endpoint' => env('AWS_USE_PATH_STYLE_ENDPOINT', false), 59 | 'throw' => false, 60 | 'report' => false, 61 | ], 62 | 63 | ], 64 | 65 | /* 66 | |-------------------------------------------------------------------------- 67 | | Symbolic Links 68 | |-------------------------------------------------------------------------- 69 | | 70 | | Here you may configure the symbolic links that will be created when the 71 | | `storage:link` Artisan command is executed. The array keys should be 72 | | the locations of the links and the values should be their targets. 73 | | 74 | */ 75 | 76 | 'links' => [ 77 | public_path('storage') => storage_path('app/public'), 78 | ], 79 | 80 | ]; 81 | -------------------------------------------------------------------------------- /config/sanctum.php: -------------------------------------------------------------------------------- 1 | explode(',', env('SANCTUM_STATEFUL_DOMAINS', sprintf( 19 | '%s%s', 20 | 'localhost,localhost:3000,127.0.0.1,127.0.0.1:8000,::1', 21 | Sanctum::currentApplicationUrlWithPort() 22 | ))), 23 | 24 | /* 25 | |-------------------------------------------------------------------------- 26 | | Sanctum Guards 27 | |-------------------------------------------------------------------------- 28 | | 29 | | This array contains the authentication guards that will be checked when 30 | | Sanctum is trying to authenticate a request. If none of these guards 31 | | are able to authenticate the request, Sanctum will use the bearer 32 | | token that's present on an incoming request for authentication. 33 | | 34 | */ 35 | 36 | 'guard' => ['web'], 37 | 38 | /* 39 | |-------------------------------------------------------------------------- 40 | | Expiration Minutes 41 | |-------------------------------------------------------------------------- 42 | | 43 | | This value controls the number of minutes until an issued token will be 44 | | considered expired. If this value is null, personal access tokens do 45 | | not expire. This won't tweak the lifetime of first-party sessions. 46 | | 47 | */ 48 | 49 | 'expiration' => null, 50 | 51 | /* 52 | |-------------------------------------------------------------------------- 53 | | Sanctum Middleware 54 | |-------------------------------------------------------------------------- 55 | | 56 | | When authenticating your first-party SPA with Sanctum you may need to 57 | | customize some of the middleware Sanctum uses while processing the 58 | | request. You may change the middleware listed below as required. 59 | | 60 | */ 61 | 62 | 'middleware' => [ 63 | 'verify_csrf_token' => App\Http\Middleware\VerifyCsrfToken::class, 64 | 'encrypt_cookies' => App\Http\Middleware\EncryptCookies::class, 65 | ], 66 | 67 | ]; 68 | -------------------------------------------------------------------------------- /config/services.php: -------------------------------------------------------------------------------- 1 | [ 18 | 'token' => env('POSTMARK_TOKEN'), 19 | ], 20 | 21 | 'ses' => [ 22 | 'key' => env('AWS_ACCESS_KEY_ID'), 23 | 'secret' => env('AWS_SECRET_ACCESS_KEY'), 24 | 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), 25 | ], 26 | 27 | 'resend' => [ 28 | 'key' => env('RESEND_KEY'), 29 | ], 30 | 31 | 'slack' => [ 32 | 'notifications' => [ 33 | 'bot_user_oauth_token' => env('SLACK_BOT_USER_OAUTH_TOKEN'), 34 | 'channel' => env('SLACK_BOT_USER_DEFAULT_CHANNEL'), 35 | ], 36 | ], 37 | 38 | ]; 39 | -------------------------------------------------------------------------------- /config/zeus-bolt.php: -------------------------------------------------------------------------------- 1 | null, 8 | 9 | /** 10 | * set the default path for the blog homepage. 11 | */ 12 | 'prefix' => 'forms', 13 | 14 | /* 15 | * set database table prefix 16 | */ 17 | 'table-prefix' => '', 18 | 19 | /** 20 | * the middleware you want to apply on all the blog routes 21 | * for example if you want to make your blog for users only, add the middleware 'auth'. 22 | */ 23 | 'middleware' => ['web'], 24 | 25 | /** 26 | * you can overwrite any model and use your own 27 | * you can also configure the model per panel in your panel provider using: 28 | * ->models([ ... ]) 29 | */ 30 | 'models' => [ 31 | 'Category' => \LaraZeus\Bolt\Models\Category::class, 32 | 'Collection' => \LaraZeus\Bolt\Models\Collection::class, 33 | 'Field' => \LaraZeus\Bolt\Models\Field::class, 34 | 'FieldResponse' => \LaraZeus\Bolt\Models\FieldResponse::class, 35 | 'Form' => \LaraZeus\Bolt\Models\Form::class, 36 | 'FormsStatus' => \LaraZeus\Bolt\Models\FormsStatus::class, 37 | 'Response' => \LaraZeus\Bolt\Models\Response::class, 38 | 'Section' => \LaraZeus\Bolt\Models\Section::class, 39 | ], 40 | 41 | 'defaultMailable' => \LaraZeus\Bolt\Mail\FormSubmission::class, 42 | 43 | 'uploadDisk' => 'public', 44 | 45 | 'uploadDirectory' => 'forms', 46 | 47 | 'show_presets' => false, 48 | 49 | 'allow_design' => false, 50 | ]; 51 | -------------------------------------------------------------------------------- /config/zeus-dynamic-dashboard.php: -------------------------------------------------------------------------------- 1 | null, 5 | 6 | /** 7 | * set the default path for the blog homepage. 8 | */ 9 | 'prefix' => '/home', 10 | 11 | /** 12 | * the middleware you want to apply on all the blog routes 13 | * for example if you want to make your blog for users only, add the middleware 'auth'. 14 | */ 15 | 'middleware' => ['web'], 16 | 17 | /** 18 | * you can overwrite any model and use your own 19 | * you can also configure the model per panel in your panel provider using: 20 | * ->models([ ... ]) 21 | */ 22 | 'models' => [ 23 | 'Layout' => \LaraZeus\DynamicDashboard\Models\Layout::class, 24 | 'Columns' => \LaraZeus\DynamicDashboard\Models\Columns::class, 25 | ], 26 | 27 | 'defaultLayout' => 'new-page', 28 | ]; 29 | -------------------------------------------------------------------------------- /config/zeus-sky.php: -------------------------------------------------------------------------------- 1 | null, 5 | 6 | /** 7 | * set the default path for the blog homepage. 8 | */ 9 | 'prefix' => 'blog', 10 | 11 | /** 12 | * the middleware you want to apply on all the blog routes 13 | * for example if you want to make your blog for users only, add the middleware 'auth'. 14 | */ 15 | 'middleware' => ['web'], 16 | 17 | /** 18 | * URI prefix for each content type 19 | */ 20 | 'uri' => [ 21 | 'post' => 'post', 22 | 'page' => 'page', 23 | 'library' => 'library', 24 | 'faq' => 'faq', 25 | ], 26 | 27 | /** 28 | * you can overwrite any model and use your own 29 | * you can also configure the model per panel in your panel provider using: 30 | * ->models([ ... ]) 31 | */ 32 | 'models' => [ 33 | 'Faq' => \LaraZeus\Sky\Models\Faq::class, 34 | 'Post' => \LaraZeus\Sky\Models\Post::class, 35 | 'PostStatus' => \LaraZeus\Sky\Models\PostStatus::class, 36 | 'Tag' => \LaraZeus\Sky\Models\Tag::class, 37 | 'Library' => \LaraZeus\Sky\Models\Library::class, 38 | 'Navigation' => \LaraZeus\Sky\Models\Navigation::class, 39 | ], 40 | 41 | 'parsers' => [ 42 | \LaraZeus\Sky\Classes\BoltParser::class, 43 | ], 44 | 45 | 'recentPostsLimit' => 5, 46 | 47 | 'searchResultHighlightCssClass' => 'highlight', 48 | 49 | 'skipHighlightingTerms' => ['iframe'], 50 | 51 | 'defaultFeaturedImage' => null, 52 | 53 | /** 54 | * the default editor for pages and posts, Available: 55 | * \LaraZeus\Sky\Editors\TipTapEditor::class, 56 | * \LaraZeus\Sky\Editors\TinyEditor::class, 57 | * \LaraZeus\Sky\Editors\MarkdownEditor::class, 58 | * \LaraZeus\Sky\Editors\RichEditor::class, 59 | */ 60 | 'editor' => \LaraZeus\Sky\Editors\TipTapEditor::class, 61 | ]; 62 | -------------------------------------------------------------------------------- /config/zeus.php: -------------------------------------------------------------------------------- 1 | 'another-portfolio', 12 | 13 | /** 14 | * set the default layout component 15 | * 16 | * Available layouts with artemis: 17 | * 18 | * zeus::themes.breeze.layouts.app 19 | * zeus::themes.daisy.layouts.app 20 | * zeus::themes.another-portfolio.layouts.app 21 | */ 22 | // 'layout' => 'zeus::themes.another-portfolio.layouts.app', 23 | 24 | 'theme' => 'zeus', 25 | 'layout' => 'zeus::components.app', 26 | 27 | /** 28 | * this will be set up the default seo site title. read more about it in 'laravel-seo'. 29 | */ 30 | 'site_title' => config('app.name', 'Laravel'), 31 | 32 | /** 33 | * this will be setup the default seo site description. read more about it in 'laravel-seo'. 34 | */ 35 | 'site_description' => 'All about '.config('app.name', 'Laravel'), 36 | 37 | /** 38 | * this will be setup the default seo site color theme. read more about it in 'laravel-seo'. 39 | */ 40 | 'site_color' => '#F5F5F4', 41 | 42 | /** set the default menu to use in header nav */ 43 | 'header_menu' => 'home-nav', 44 | ]; 45 | -------------------------------------------------------------------------------- /database/.gitignore: -------------------------------------------------------------------------------- 1 | *.sqlite* 2 | -------------------------------------------------------------------------------- /database/factories/CategoryFactory.php: -------------------------------------------------------------------------------- 1 | $this->faker->words(3, true), 22 | 'ordering' => $this->faker->numberBetween(1, 10), 23 | 'is_active' => 1, 24 | 'description' => $this->faker->words(5, true), 25 | 'slug' => $this->faker->slug, 26 | ]; 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /database/factories/CollectionFactory.php: -------------------------------------------------------------------------------- 1 | $this->faker->words(3, true), 23 | 'user_id' => User::factory(), 24 | 'values' => 'abc', 25 | ]; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /database/factories/DepartmentFactory.php: -------------------------------------------------------------------------------- 1 | $this->faker->words(3, true), 27 | 'ordering' => $this->faker->numberBetween(1, 10), 28 | 'is_active' => $this->faker->numberBetween(0, 1), 29 | 'desc' => $this->faker->words(5, true), 30 | 'slug' => $this->faker->slug, 31 | 'logo' => 'https://picsum.photos/150/150?random='.$this->faker->randomNumber(), 32 | ]; 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /database/factories/FieldFactory.php: -------------------------------------------------------------------------------- 1 | $this->faker->words(3, true), 20 | 'type' => '\LaraZeus\Bolt\Fields\Classes\TextInput', 21 | 'section_id' => Section::factory(), 22 | 'ordering' => $this->faker->numberBetween(1, 20), 23 | ]; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /database/factories/FieldResponseFactory.php: -------------------------------------------------------------------------------- 1 | Form::factory(), 21 | 'field_id' => Field::factory(), 22 | 'response_id' => Response::factory(), 23 | 'response' => $this->faker->words(3, true), 24 | ]; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /database/factories/FormFactory.php: -------------------------------------------------------------------------------- 1 | $this->faker->words(3, true), 20 | 'user_id' => User::factory(), 21 | 'ordering' => $this->faker->numberBetween(1, 20), 22 | 'description' => $this->faker->text(), 23 | 'slug' => $this->faker->slug(), 24 | 'is_active' => 1, 25 | 'category_id' => Category::factory(), 26 | 'start_date' => $this->faker->dateTime(), 27 | 'end_date' => $this->faker->dateTime(), 28 | ]; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /database/factories/LetterFactory.php: -------------------------------------------------------------------------------- 1 | $this->faker->name, 28 | 'email' => $this->faker->email, 29 | 'department_id' => Department::factory(), 30 | 'title' => $this->faker->words(3, true), 31 | 'message' => $this->faker->words(5, true), 32 | 'status' => 'NEW', 33 | ]; 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /database/factories/LibraryFactory.php: -------------------------------------------------------------------------------- 1 | $this->faker->slug(2), 20 | 'title' => $this->faker->word, 21 | 'description' => $this->faker->sentence, 22 | 'type' => $this->faker->randomElement(array_keys(SkyPlugin::get()->getLibraryTypes())), 23 | 'file_path' => 'https://picsum.photos/1200/1200?random='.$this->faker->randomNumber(), 24 | ]; 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /database/factories/PostFactory.php: -------------------------------------------------------------------------------- 1 | 1, 19 | 'title' => $this->faker->sentence($nbWords = 6, $variableNbWords = true), 20 | 'slug' => $this->faker->slug(2), 21 | 'description' => $this->faker->paragraph($nbSentences = 3, $variableNbSentences = true), 22 | 'content' => $this->faker->paragraph($nbSentences = 12, $variableNbSentences = true), 23 | 'published_at' => now(), 24 | 'sticky_until' => $this->faker->randomElement([now()->addWeek(), null]), 25 | 'status' => $this->faker->randomElement(['publish']), // , 'future', 'draft', 'private' 26 | 'post_type' => $this->faker->randomElement(['page', 'post']), 27 | 'featured_image' => 'https://picsum.photos/1200/1200?random='.$this->faker->randomNumber(), 28 | ]; 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /database/factories/ResponseFactory.php: -------------------------------------------------------------------------------- 1 | Form::factory(), 20 | 'status' => 'NEW', 21 | 'user_id' => 1, 22 | 'notes' => $this->faker->text(), 23 | ]; 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /database/factories/SectionFactory.php: -------------------------------------------------------------------------------- 1 | $this->faker->words(3, true), 20 | 'form_id' => Form::factory(), 21 | 'ordering' => $this->faker->numberBetween(1, 10), 22 | ]; 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /database/factories/UserFactory.php: -------------------------------------------------------------------------------- 1 | $this->faker->name(), 18 | 'email' => $this->faker->unique()->safeEmail(), 19 | 'email_verified_at' => now(), 20 | 'password' => Hash::make('password'), 21 | 'remember_token' => Str::random(10), 22 | ]; 23 | } 24 | 25 | /** 26 | * Indicate that the model's email address should be unverified. 27 | */ 28 | public function unverified(): Factory 29 | { 30 | return $this->state(fn (array $attributes) => [ 31 | 'email_verified_at' => null, 32 | ]); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /database/migrations/0001_01_01_000001_create_cache_table.php: -------------------------------------------------------------------------------- 1 | string('key')->primary(); 16 | $table->mediumText('value'); 17 | $table->integer('expiration'); 18 | }); 19 | 20 | Schema::create('cache_locks', function (Blueprint $table) { 21 | $table->string('key')->primary(); 22 | $table->string('owner'); 23 | $table->integer('expiration'); 24 | }); 25 | } 26 | 27 | /** 28 | * Reverse the migrations. 29 | */ 30 | public function down(): void 31 | { 32 | Schema::dropIfExists('cache'); 33 | Schema::dropIfExists('cache_locks'); 34 | } 35 | }; 36 | -------------------------------------------------------------------------------- /database/migrations/2014_10_12_000000_create_users_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->string('name'); 17 | $table->string('email')->unique(); 18 | $table->timestamp('email_verified_at')->nullable(); 19 | $table->string('password'); 20 | $table->rememberToken(); 21 | $table->timestamps(); 22 | }); 23 | } 24 | 25 | /** 26 | * Reverse the migrations. 27 | */ 28 | public function down(): void 29 | { 30 | Schema::dropIfExists('users'); 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /database/migrations/2014_10_12_100000_create_password_reset_tokens_table.php: -------------------------------------------------------------------------------- 1 | string('email')->primary(); 16 | $table->string('token'); 17 | $table->timestamp('created_at')->nullable(); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | */ 24 | public function down(): void 25 | { 26 | Schema::dropIfExists('password_reset_tokens'); 27 | } 28 | }; 29 | -------------------------------------------------------------------------------- /database/migrations/2019_08_19_000000_create_failed_jobs_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->string('uuid')->unique(); 17 | $table->text('connection'); 18 | $table->text('queue'); 19 | $table->longText('payload'); 20 | $table->longText('exception'); 21 | $table->timestamp('failed_at')->useCurrent(); 22 | }); 23 | } 24 | 25 | /** 26 | * Reverse the migrations. 27 | */ 28 | public function down(): void 29 | { 30 | Schema::dropIfExists('failed_jobs'); 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php: -------------------------------------------------------------------------------- 1 | id(); 16 | $table->morphs('tokenable'); 17 | $table->string('name'); 18 | $table->string('token', 64)->unique(); 19 | $table->text('abilities')->nullable(); 20 | $table->timestamp('last_used_at')->nullable(); 21 | $table->timestamp('expires_at')->nullable(); 22 | $table->timestamps(); 23 | }); 24 | } 25 | 26 | /** 27 | * Reverse the migrations. 28 | */ 29 | public function down(): void 30 | { 31 | Schema::dropIfExists('personal_access_tokens'); 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /database/migrations/2023_06_15_103253_create_department_table.php: -------------------------------------------------------------------------------- 1 | id(); 18 | $table->string('name'); 19 | $table->integer('ordering')->default(1); 20 | $table->boolean('is_active')->default(0); 21 | $table->text('desc')->nullable(); 22 | $table->string('slug'); 23 | $table->string('logo')->nullable(); 24 | $table->timestamps(); 25 | $table->softDeletes(); 26 | }); 27 | } 28 | 29 | /** 30 | * Reverse the migrations. 31 | * 32 | * @return void 33 | */ 34 | public function down() 35 | { 36 | Schema::dropIfExists('departments'); 37 | } 38 | }; 39 | -------------------------------------------------------------------------------- /database/migrations/2023_06_15_103254_create_letters_table.php: -------------------------------------------------------------------------------- 1 | id(); 18 | $table->string('name'); 19 | $table->string('email'); 20 | $table->foreignId('department_id')->nullable()->constrained(); 21 | $table->string('title'); 22 | $table->text('message'); 23 | $table->string('status')->default('new'); 24 | $table->string('reply_title')->nullable(); 25 | $table->text('reply_message')->nullable(); 26 | $table->timestamps(); 27 | $table->softDeletes(); 28 | }); 29 | } 30 | 31 | /** 32 | * Reverse the migrations. 33 | * 34 | * @return void 35 | */ 36 | public function down() 37 | { 38 | Schema::dropIfExists('letters'); 39 | } 40 | }; 41 | -------------------------------------------------------------------------------- /database/migrations/2023_06_15_104836_create_posts_table.php: -------------------------------------------------------------------------------- 1 | id(); 18 | $table->foreignId('user_id')->index(); 19 | $table->string('title'); 20 | $table->string('slug'); 21 | $table->text('description')->nullable(); 22 | $table->text('content'); 23 | $table->string('featured_image')->nullable(); 24 | $table->string('post_type')->default('post'); 25 | $table->integer('parent_id')->nullable(); 26 | $table->integer('ordering')->default(1); 27 | $table->string('password')->nullable(); 28 | $table->string('status')->default('publish'); 29 | $table->dateTime('sticky_until')->nullable(); 30 | $table->dateTime('published_at')->nullable(); 31 | $table->timestamps(); 32 | $table->softDeletes(); 33 | }); 34 | } 35 | 36 | /** 37 | * Reverse the migrations. 38 | * 39 | * @return void 40 | */ 41 | public function down() 42 | { 43 | Schema::dropIfExists('posts'); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /database/migrations/2023_06_15_104837_create_faqs_table.php: -------------------------------------------------------------------------------- 1 | id(); 18 | $table->text('question'); 19 | $table->text('answer'); 20 | $table->timestamps(); 21 | }); 22 | } 23 | 24 | /** 25 | * Reverse the migrations. 26 | * 27 | * @return void 28 | */ 29 | public function down() 30 | { 31 | Schema::dropIfExists('faqs'); 32 | } 33 | }; 34 | -------------------------------------------------------------------------------- /database/migrations/2023_06_15_104838_modify_posts_columns.php: -------------------------------------------------------------------------------- 1 | text('title')->change(); 18 | $table->longText('description')->change(); 19 | $table->longText('content')->change(); 20 | }); 21 | } 22 | 23 | /** 24 | * Reverse the migrations. 25 | * 26 | * @return void 27 | */ 28 | public function down() 29 | { 30 | Schema::table('posts', function (Blueprint $table) { 31 | $table->string('title')->change(); 32 | $table->text('description')->change(); 33 | $table->text('content')->change(); 34 | }); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /database/migrations/2023_06_15_104931_create_tag_tables.php: -------------------------------------------------------------------------------- 1 | id(); 13 | 14 | $table->json('name'); 15 | $table->json('slug'); 16 | $table->string('type')->nullable(); 17 | $table->integer('order_column')->nullable(); 18 | 19 | $table->timestamps(); 20 | }); 21 | 22 | Schema::create('taggables', function (Blueprint $table) { 23 | $table->foreignId('tag_id')->constrained()->cascadeOnDelete(); 24 | 25 | $table->morphs('taggable'); 26 | 27 | $table->unique(['tag_id', 'taggable_id', 'taggable_type']); 28 | }); 29 | } 30 | 31 | public function down(): void 32 | { 33 | Schema::dropIfExists('taggables'); 34 | Schema::dropIfExists('tags'); 35 | } 36 | }; 37 | -------------------------------------------------------------------------------- /database/migrations/2023_06_15_104938_create_media_table.php: -------------------------------------------------------------------------------- 1 | id(); 13 | 14 | $table->morphs('model'); 15 | $table->uuid('uuid')->nullable()->unique(); 16 | $table->string('collection_name'); 17 | $table->string('name'); 18 | $table->string('file_name'); 19 | $table->string('mime_type')->nullable(); 20 | $table->string('disk'); 21 | $table->string('conversions_disk')->nullable(); 22 | $table->unsignedBigInteger('size'); 23 | $table->json('manipulations'); 24 | $table->json('custom_properties'); 25 | $table->json('generated_conversions'); 26 | $table->json('responsive_images'); 27 | $table->unsignedInteger('order_column')->nullable()->index(); 28 | 29 | $table->nullableTimestamps(); 30 | }); 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /database/migrations/2023_06_15_105351_create_categories_table.php: -------------------------------------------------------------------------------- 1 | id(); 18 | $table->text('name'); 19 | $table->integer('ordering')->default(1); 20 | $table->boolean('is_active')->default(1); 21 | $table->text('description')->nullable(); 22 | $table->string('slug'); 23 | $table->string('logo')->nullable(); 24 | $table->timestamps(); 25 | $table->softDeletes(); 26 | }); 27 | } 28 | 29 | /** 30 | * Reverse the migrations. 31 | * 32 | * @return void 33 | */ 34 | public function down() 35 | { 36 | Schema::dropIfExists('categories'); 37 | } 38 | }; 39 | -------------------------------------------------------------------------------- /database/migrations/2023_06_15_105352_create_collections_table.php: -------------------------------------------------------------------------------- 1 | id(); 18 | $table->text('name'); 19 | $table->longText('values')->nullable(); 20 | $table->timestamps(); 21 | $table->softDeletes(); 22 | }); 23 | } 24 | 25 | /** 26 | * Reverse the migrations. 27 | * 28 | * @return void 29 | */ 30 | public function down() 31 | { 32 | Schema::dropIfExists('collections'); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /database/migrations/2023_06_15_105353_create_forms_table.php: -------------------------------------------------------------------------------- 1 | id(); 18 | $table->foreignId('user_id')->constrained('users'); 19 | $table->foreignId('category_id')->nullable()->constrained('categories'); 20 | $table->text('name'); 21 | $table->text('description')->nullable(); 22 | $table->string('slug'); 23 | $table->integer('ordering')->default(1); 24 | $table->boolean('is_active'); 25 | $table->longText('details')->nullable(); 26 | $table->longText('options')->nullable(); 27 | $table->dateTime('start_date')->nullable(); 28 | $table->dateTime('end_date')->nullable(); 29 | $table->timestamps(); 30 | $table->softDeletes(); 31 | }); 32 | } 33 | 34 | /** 35 | * Reverse the migrations. 36 | * 37 | * @return void 38 | */ 39 | public function down() 40 | { 41 | Schema::dropIfExists('forms'); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /database/migrations/2023_06_15_105354_create_sections_table.php: -------------------------------------------------------------------------------- 1 | id(); 18 | $table->foreignId('form_id')->constrained('forms'); 19 | $table->text('name')->nullable(); 20 | $table->integer('ordering')->default(1); 21 | $table->integer('columns')->default(1); 22 | $table->text('description')->nullable(); 23 | $table->string('icon')->nullable(); 24 | $table->boolean('aside')->default(0); 25 | $table->timestamps(); 26 | $table->softDeletes(); 27 | }); 28 | } 29 | 30 | /** 31 | * Reverse the migrations. 32 | * 33 | * @return void 34 | */ 35 | public function down() 36 | { 37 | Schema::dropIfExists('sections'); 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /database/migrations/2023_06_15_105355_create_fields_table.php: -------------------------------------------------------------------------------- 1 | id(); 18 | $table->foreignId('section_id')->constrained('sections'); 19 | $table->text('name'); 20 | $table->text('description')->nullable(); 21 | $table->string('type'); 22 | $table->integer('ordering')->default(1); 23 | $table->text('options')->nullable(); 24 | $table->timestamps(); 25 | $table->softDeletes(); 26 | }); 27 | } 28 | 29 | /** 30 | * Reverse the migrations. 31 | * 32 | * @return void 33 | */ 34 | public function down() 35 | { 36 | Schema::dropIfExists('fields'); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /database/migrations/2023_06_15_105356_create_responses_table.php: -------------------------------------------------------------------------------- 1 | id(); 18 | $table->foreignId('form_id')->constrained('forms'); 19 | $table->foreignId('user_id')->nullable()->constrained('users'); 20 | $table->string('status')->default('NEW'); 21 | $table->text('notes')->nullable(); 22 | $table->timestamps(); 23 | $table->softDeletes(); 24 | }); 25 | } 26 | 27 | /** 28 | * Reverse the migrations. 29 | * 30 | * @return void 31 | */ 32 | public function down() 33 | { 34 | Schema::dropIfExists('responses'); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /database/migrations/2023_06_15_105357_create_field_responses_table.php: -------------------------------------------------------------------------------- 1 | id(); 18 | $table->foreignId('form_id')->constrained('forms'); 19 | $table->foreignId('field_id')->constrained('fields'); 20 | $table->foreignId('response_id')->constrained('responses'); 21 | $table->longText('response'); 22 | $table->timestamps(); 23 | $table->softDeletes(); 24 | }); 25 | } 26 | 27 | /** 28 | * Reverse the migrations. 29 | * 30 | * @return void 31 | */ 32 | public function down() 33 | { 34 | Schema::dropIfExists('field_responses'); 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /database/migrations/2023_06_16_033341_create_layouts_table.php: -------------------------------------------------------------------------------- 1 | id(); 18 | $table->string('user_id'); 19 | $table->string('layout_title'); 20 | $table->string('layout_slug'); 21 | $table->longText('widgets'); 22 | $table->timestamps(); 23 | $table->softDeletes(); 24 | }); 25 | } 26 | 27 | /** 28 | * Reverse the migrations. 29 | * 30 | * @return void 31 | */ 32 | public function down() 33 | { 34 | Schema::dropIfExists('layouts'); 35 | } 36 | }; 37 | -------------------------------------------------------------------------------- /database/migrations/2023_06_16_161646_create_library_table.php: -------------------------------------------------------------------------------- 1 | id(); 18 | $table->string('slug'); 19 | $table->text('title'); 20 | $table->text('description')->nullable(); 21 | $table->string('type')->nullable(); 22 | $table->string('file_path')->nullable(); 23 | $table->timestamps(); 24 | }); 25 | } 26 | 27 | /** 28 | * Reverse the migrations. 29 | * 30 | * @return void 31 | */ 32 | public function down() 33 | { 34 | Schema::dropIfExists('libraries'); 35 | } 36 | }; 37 | -------------------------------------------------------------------------------- /database/migrations/2023_08_22_124901_add_extensions_to_forms.php: -------------------------------------------------------------------------------- 1 | text('extensions')->nullable(); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | Schema::table('forms', function (Blueprint $table) { 29 | $table->dropColumn('extensions'); 30 | }); 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /database/migrations/2023_08_22_124902_add_extension_item_responses.php: -------------------------------------------------------------------------------- 1 | integer('extension_item_id')->nullable(); 16 | }); 17 | } 18 | 19 | /** 20 | * Reverse the migrations. 21 | */ 22 | public function down(): void 23 | { 24 | Schema::table('responses', function (Blueprint $table) { 25 | $table->dropColumn('extension_item_id'); 26 | }); 27 | } 28 | }; 29 | -------------------------------------------------------------------------------- /database/migrations/2023_08_22_124903_alter_tables_constraints.php: -------------------------------------------------------------------------------- 1 | runningUnitTests()) { 17 | Schema::table('forms', function (Blueprint $table) { 18 | Schema::disableForeignKeyConstraints(); 19 | $table->dropForeign(['user_id']); 20 | $table->dropForeign(['category_id']); 21 | 22 | $table->unsignedBigInteger('user_id')->nullable()->change(); 23 | Schema::enableForeignKeyConstraints(); 24 | 25 | $table->foreign('user_id') 26 | ->onUpdate('cascade') 27 | ->nullOnDelete() 28 | ->references('id') 29 | ->on('users'); 30 | 31 | $table->foreign('category_id') 32 | ->onUpdate('cascade') 33 | ->nullOnDelete() 34 | ->references('id') 35 | ->on('categories'); 36 | }); 37 | } 38 | } 39 | 40 | /** 41 | * Reverse the migrations. 42 | * 43 | * @return void 44 | */ 45 | public function down() {} 46 | }; 47 | -------------------------------------------------------------------------------- /database/migrations/2023_10_15_212052_add_compact_to_section.php: -------------------------------------------------------------------------------- 1 | boolean('compact')->default(0); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | Schema::table('sections', function (Blueprint $table) { 29 | $table->dropColumn('compact'); 30 | }); 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /database/migrations/2024_01_23_150122_create_navigations_table.php: -------------------------------------------------------------------------------- 1 | id(); 19 | $table->string('name'); 20 | $table->string('handle')->unique(); 21 | $table->longText('items')->nullable(); 22 | $table->timestamps(); 23 | }); 24 | } 25 | } 26 | 27 | /** 28 | * Reverse the migrations. 29 | * 30 | * @return void 31 | */ 32 | public function down() 33 | { 34 | Schema::dropIfExists('navigations'); 35 | } 36 | }; 37 | -------------------------------------------------------------------------------- /database/migrations/2024_01_23_150126_add_is_active_to_layouts_table.php: -------------------------------------------------------------------------------- 1 | boolean('is_active')->default(1); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | Schema::table('layouts', function (Blueprint $table) { 29 | $table->dropColumn('is_active'); 30 | }); 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /database/migrations/2024_01_23_150145_add_options_to_section.php: -------------------------------------------------------------------------------- 1 | text('options')->nullable(); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | Schema::table(config('zeus-bolt.table-prefix').'sections', function (Blueprint $table) { 29 | $table->dropColumn('options'); 30 | }); 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /database/migrations/2024_06_13_002805_add_grade_to_response.php: -------------------------------------------------------------------------------- 1 | integer('grades')->nullable(); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | Schema::table(config('zeus-bolt.table-prefix').'responses', function (Blueprint $table) { 29 | $table->dropColumn('grades'); 30 | }); 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /database/migrations/2024_06_13_002806_add_grade_to_field_response.php: -------------------------------------------------------------------------------- 1 | integer('grade')->nullable(); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | Schema::table(config('zeus-bolt.table-prefix').'field_responses', function (Blueprint $table) { 29 | $table->dropColumn('grade'); 30 | }); 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /database/migrations/2025_01_19_013816_add_borderless_to_section.php: -------------------------------------------------------------------------------- 1 | boolean('borderless')->default(0); 18 | }); 19 | } 20 | 21 | /** 22 | * Reverse the migrations. 23 | * 24 | * @return void 25 | */ 26 | public function down() 27 | { 28 | Schema::table(config('zeus-bolt.table-prefix').'sections', function (Blueprint $table) { 29 | $table->dropColumn('borderless'); 30 | }); 31 | } 32 | }; 33 | -------------------------------------------------------------------------------- /database/seeders/DatabaseSeeder.php: -------------------------------------------------------------------------------- 1 | insert([ 15 | 'name' => 'Zeus', 16 | 'email' => 'info@larazeus.com', 17 | 'password' => Hash::make('zeus#larazeus'), 18 | ]); 19 | 20 | DB::table('users') 21 | ->insert([ 22 | 'name' => 'spammer', 23 | 'email' => 'spammer@larazeus.com', 24 | 'password' => Hash::make('spammerspammerspammer'), 25 | ]); 26 | 27 | DB::table('users') 28 | ->insert([ 29 | 'name' => 'the printer magician', 30 | 'email' => 'printer-god@larazeus.com', 31 | 'password' => Hash::make('printerMagician'), 32 | ]); 33 | 34 | $this->call([ 35 | WindSeeder::class, 36 | SkySeeder::class, 37 | BoltSeeder::class, 38 | RainSeeder::class, 39 | ShieldSeeder::class, 40 | ]); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /database/seeders/SkySeeder.php: -------------------------------------------------------------------------------- 1 | getModel('Tag')::create(['name' => ['en' => 'laravel', 'ar' => 'لارافل'], 'type' => 'category']); 13 | SkyPlugin::get()->getModel('Tag')::create(['name' => ['en' => 'talks', 'ar' => 'اخبار'], 'type' => 'category']); 14 | SkyPlugin::get()->getModel('Tag')::create(['name' => ['en' => 'dev', 'ar' => 'تطوير'], 'type' => 'category']); 15 | 16 | SkyPlugin::get()->getModel('Post')::factory() 17 | ->count(15) 18 | ->create(); 19 | 20 | foreach (SkyPlugin::get()->getModel('Post')::all() as $post) { 21 | $random_tags = SkyPlugin::get()->getModel('Tag')::all()->random(1)->first()->name; 22 | $post->syncTagsWithType([$random_tags], 'category'); 23 | } 24 | 25 | SkyPlugin::get()->getModel('Faq')::create([ 26 | 'question' => [ 27 | 'en' => 'who is zeus', 28 | 'ar' => 'من هو زوس', 29 | ], 30 | 'answer' => [ 31 | 'en' => 'Zeus is the god of the sky in ancient Greek mythology. As the chief Greek deity, Zeus is considered the ruler, protector, and father of all gods and humans. Zeus is often depicted as an older man with a beard and is represented by symbols such as the lightning bolt and the eagle.', 32 | 'ar' => 'زيوس هو إله السماء والصاعقة في الميثولوجيا الإغريقية. نظيره الروماني هو جوبتير، ونظيره في الميثولوجيا الهندوسية هو إندرا وفي الإيتروسكانية الإله تينيا. تكمن قوة زيوس في حكمه لقوى الطبيعة الرهيبة التي كان الإغريق يخشونها كالبرق والرعد والسماء الواسعة.', 33 | ], 34 | ]); 35 | 36 | SkyPlugin::get()->getModel('Tag')::create(['name' => ['en' => 'support docs', 'ar' => 'الدعم الفني'], 'type' => 'library']); 37 | SkyPlugin::get()->getModel('Tag')::create(['name' => ['en' => 'how to', 'ar' => 'كيف'], 'type' => 'library']); 38 | 39 | SkyPlugin::get()->getModel('Library')::factory() 40 | ->count(8) 41 | ->create(); 42 | 43 | foreach (SkyPlugin::get()->getModel('Library')::all() as $library) { 44 | $random_tags = SkyPlugin::get()->getModel('Tag')::getWithType('library')->random(1)->first()->name; 45 | $library->syncTagsWithType([$random_tags], 'library'); 46 | } 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /database/seeders/WindSeeder.php: -------------------------------------------------------------------------------- 1 | insertGetId([ 15 | 'name' => 'Customer service', 16 | 'ordering' => 1, 17 | 'is_active' => 1, 18 | 'desc' => 'any help with Customer service', 19 | 'slug' => 'customer-service', 20 | 'logo' => 'https://picsum.photos/150/150?random=1', 21 | 'created_at' => now(), 22 | ]); 23 | 24 | $department_2 = DB::table('departments') 25 | ->insertGetId([ 26 | 'name' => 'Sales', 27 | 'ordering' => 2, 28 | 'is_active' => 1, 29 | 'desc' => 'any help with Sales', 30 | 'slug' => 'sales', 31 | 'logo' => 'https://picsum.photos/150/150?random=2', 32 | 'created_at' => now(), 33 | ]); 34 | 35 | Letter::factory() 36 | ->count(5) 37 | ->state(function (array $attributes) use ($department) { 38 | return [ 39 | 'department_id' => $department, 40 | ]; 41 | }) 42 | ->create(); 43 | 44 | Letter::factory() 45 | ->count(5) 46 | ->state(function (array $attributes) use ($department_2) { 47 | return [ 48 | 'department_id' => $department_2, 49 | ]; 50 | }) 51 | ->create(); 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /lang/vendor/filament-shield/en/filament-shield.php: -------------------------------------------------------------------------------- 1 | 'Name', 11 | 'column.guard_name' => 'Guard Name', 12 | 'column.roles' => 'Roles', 13 | 'column.permissions' => 'Permissions', 14 | 'column.updated_at' => 'Updated At', 15 | 16 | /* 17 | |-------------------------------------------------------------------------- 18 | | Form Fields 19 | |-------------------------------------------------------------------------- 20 | */ 21 | 22 | 'field.name' => 'Name', 23 | 'field.guard_name' => 'Guard Name', 24 | 'field.permissions' => 'Permissions', 25 | 'field.select_all.name' => 'Select All', 26 | 'field.select_all.message' => 'Enable all Permissions currently Enabled for this role', 27 | 28 | /* 29 | |-------------------------------------------------------------------------- 30 | | Navigation & Resource 31 | |-------------------------------------------------------------------------- 32 | */ 33 | 34 | 'nav.group' => 'Users', 35 | 'nav.role.label' => 'Roles', 36 | 'nav.role.icon' => 'heroicon-o-shield-check', 37 | 'resource.label.role' => 'Role', 38 | 'resource.label.roles' => 'Roles', 39 | 40 | /* 41 | |-------------------------------------------------------------------------- 42 | | Section & Tabs 43 | |-------------------------------------------------------------------------- 44 | */ 45 | 46 | 'section' => 'Entities', 47 | 'resources' => 'Resources', 48 | 'widgets' => 'Widgets', 49 | 'pages' => 'Pages', 50 | 'custom' => 'Custom Permissions', 51 | 52 | /* 53 | |-------------------------------------------------------------------------- 54 | | Messages 55 | |-------------------------------------------------------------------------- 56 | */ 57 | 58 | 'forbidden' => 'You do not have permission to access', 59 | 60 | /* 61 | |-------------------------------------------------------------------------- 62 | | Resource Permissions' Labels 63 | |-------------------------------------------------------------------------- 64 | */ 65 | 66 | 'resource_permission_prefixes_labels' => [ 67 | 'view' => 'View', 68 | 'view_any' => 'View Any', 69 | 'create' => 'Create', 70 | 'update' => 'Update', 71 | 'delete' => 'Delete', 72 | 'delete_any' => 'Delete Any', 73 | 'force_delete' => 'Force Delete', 74 | 'force_delete_any' => 'Force Delete Any', 75 | 'restore' => 'Restore', 76 | 'reorder' => 'Reorder', 77 | 'restore_any' => 'Restore Any', 78 | 'replicate' => 'Replicate', 79 | ], 80 | ]; 81 | -------------------------------------------------------------------------------- /lang/vendor/zeus-rain/ar.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "تسلسل", 3 | "user": "المستخدم", 4 | "Edit": "تعديل", 5 | "Delete": "حذف", 6 | "Layout": "القالب", 7 | "Layouts": "القوالب", 8 | "add widget": "اضافة قالب", 9 | "saved successfully": "تم الحفظ بنجاح", 10 | "top": "العمود العلوي", 11 | "right": "العمود الأيمن", 12 | "middle": "العمود الأوسط", 13 | "left": "العمود الأيسر", 14 | "bottom": "العمود السفلي", 15 | "title": "العنوان", 16 | "slug": "الرابط المختصر", 17 | "create layout": "اضافة قالب", 18 | "edit layout": "تعديل قالب" 19 | } 20 | -------------------------------------------------------------------------------- /lang/vendor/zeus-rain/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "id": "id", 3 | "user": "user name", 4 | "Edit": "Edit", 5 | "Delete": "Delete", 6 | "Layout": "Layout", 7 | "Layouts": "Layouts", 8 | "add widget": "add widget", 9 | "saved successfully": "saved successfully", 10 | "top": "top", 11 | "right": "right", 12 | "middle": "middle", 13 | "left": "left", 14 | "bottom": "bottom", 15 | "title": "title", 16 | "slug": "slug", 17 | "create layout": "create layout", 18 | "edit layout": "edit layout" 19 | } 20 | -------------------------------------------------------------------------------- /lang/vendor/zeus-sky/ar.json: -------------------------------------------------------------------------------- 1 | { 2 | "Posts": "التدوينات", 3 | "Post": "تدوينة", 4 | "CMS": "ادارة المحتوى", 5 | "Tag": "تصنيف", 6 | "Tags": "التصنيفات", 7 | "publish": "منشور", 8 | "Title": "العنوان", 9 | "Status": "الحالة", 10 | "Post Tags": "الأوسمة", 11 | "Post Category": "التصنيفات", 12 | "Password Protected": "محمي بكلمة المرور", 13 | "Sticky Until": "مثبت لغاية", 14 | "Still Sticky": "مازال مثبتا", 15 | "Sticky Only": "المثبت فقط", 16 | "Not Sticky": "الغير مثبتة", 17 | "Publish": "منشور", 18 | "Future": "للمستقبل", 19 | "Draft": "مسودة", 20 | "Auto draft": "مسودة تلقائية", 21 | "Pending": "بالانتظار", 22 | "Private": "خاص", 23 | "Trash": "محذوف", 24 | "Inherit": "موروث", 25 | "Post Title": "عنوان التدوينة", 26 | "Post Content": "محتوى التدوينة", 27 | "SEO": "تحسين محركات البحث", 28 | "SEO Settings": "الاعدادات لتحسين محركات البحث", 29 | "Tags and Categories": "التصنيفات والأوسمة", 30 | "Tags and Categories Options": "اعدادات التصنيفات والأوسمة", 31 | "Categories": "التصنيفات", 32 | "visibility": "المشاهدة", 33 | "Visibility Options": "خيارات المشاهدة والعرض", 34 | "status": "حالة التدوينة", 35 | "Password": "كلمة المرور", 36 | "published at": "منشور في", 37 | "Featured Image": "الصورة المميزة", 38 | "Pages": "الصفحات", 39 | "Page": "صفحة", 40 | "Description": "الوصف", 41 | "Parent Page": "الصفحة الأب", 42 | "Page Order": "ترتيب الصفحة", 43 | "Post Slug": "الرابط المختصر", 44 | "Write an excerpt for your post": "اكتب ملخص للمقالة", 45 | "Show All posts in": "هرض كافة المثالات في", 46 | "No posts found": "لاتوجد تدوينات حاليا", 47 | "FAQ": "الأسئلة الشائعة", 48 | "frequently asked questions": "الأسئلة الشائعة", 49 | "FAQs": "الأسئلة الشائعة", 50 | "Question": "السؤال", 51 | "Answer": "الإجابة", 52 | "Clear": "مسح", 53 | "Showing Search result of": "عرض نتائج البحث عن", 54 | "Related Posts": "مقالات ذات صلة", 55 | "upload": "رفع ملف", 56 | "url": "رابط", 57 | "featured image url": "رابط الصورة", 58 | "Navigations": "قوائم التنقل", 59 | "Navigation": "قائمة التنقل", 60 | "Select Post": "اختر التدوينة", 61 | "Select Page": "اختر الصفحة", 62 | "Recent Post": "أحدث التدوينات" 63 | } 64 | -------------------------------------------------------------------------------- /lang/vendor/zeus-sky/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "Posts": "Posts", 3 | "Post": "Post", 4 | "CMS": "CMS", 5 | "Tag": "Tag", 6 | "Tags": "Tags", 7 | "publish": "publish", 8 | "Title": "Title", 9 | "Status": "Status", 10 | "Post Tags": "Post Tags", 11 | "Post Category": "Post Category", 12 | "Password Protected": "Password Protected", 13 | "Sticky Until": "Sticky Until", 14 | "Still Sticky": "Still Sticky", 15 | "Sticky Only": "Sticky Only", 16 | "Not Sticky": "Not Sticky", 17 | "Publish": "Publish", 18 | "Future": "Future", 19 | "Draft": "Draft", 20 | "Auto draft": "Auto draft", 21 | "Pending": "Pending", 22 | "Private": "Private", 23 | "Trash": "Trash", 24 | "Inherit": "Inherit", 25 | "Post Title": "Post Title", 26 | "Post Content": "Post Content", 27 | "SEO": "SEO", 28 | "SEO Settings": "SEO Settings", 29 | "Tags and Categories": "Tags and Categories", 30 | "Tags and Categories Options": "Tags and Categories Options", 31 | "Categories": "Categories", 32 | "visibility": "visibility", 33 | "Visibility Options": "Visibility Options", 34 | "status": "status", 35 | "Password": "Password", 36 | "published at": "published at", 37 | "Featured Image": "Featured Image", 38 | "Pages": "Pages", 39 | "Page": "Page", 40 | "Description": "Description", 41 | "Parent Page": "Parent Page", 42 | "Page Order": "Page Order", 43 | "Post Slug": "Post Slug", 44 | "Write an excerpt for your post": "Write an excerpt for your post", 45 | "Show All posts in": "Show All posts in", 46 | "No posts found": "No posts found", 47 | "FAQ": "FAQ", 48 | "frequently asked questions": "frequently asked questions", 49 | "FAQs": "FAQs", 50 | "Question": "Question", 51 | "Answer": "Answer", 52 | "Clear": "Clear", 53 | "Showing Search result of": "Showing Search result of", 54 | "Related Posts": "Related Posts", 55 | "upload": "upload", 56 | "url": "url", 57 | "featured image url": "featured image url", 58 | "Navigations": "Navigations", 59 | "Navigation": "Navigation", 60 | "Select Post": "Select Post", 61 | "Select Page": "Select Page" 62 | } 63 | -------------------------------------------------------------------------------- /lang/vendor/zeus-sky/fr.json: -------------------------------------------------------------------------------- 1 | { 2 | "Posts": "Articles", 3 | "Post": "Article", 4 | "CMS": "CMS", 5 | "Tag": "Balise", 6 | "Tags": "Balises", 7 | "publish": "publier", 8 | "Title": "Titre", 9 | "Status": "Statut", 10 | "Post Tags": "Balises de publication", 11 | "Post Category": "Catégorie de l'article", 12 | "Password Protected": "Protégé par un mot de passe", 13 | "Sticky Until": "Sticky Until", 14 | "Still Sticky": "Still Sticky", 15 | "Sticky Only": "Sticky Only", 16 | "Not Sticky": "Not Sticky", 17 | "Publish": "Publier", 18 | "Future": "Futur", 19 | "Draft": "Brouillon", 20 | "Auto draft": "Brouillon automatique", 21 | "Pending": "En attente", 22 | "Private": "Privé", 23 | "Trash": "Poubelle", 24 | "Inherit": "Héritage", 25 | "Post Title": "Titre de l'article", 26 | "Post Content": "Contenu de l'article", 27 | "SEO": "SEO", 28 | "SEO Settings": "Paramètres SEO", 29 | "Tags and Categories": "Balises et catégories", 30 | "Tags and Categories Options": "Options de balises et de catégories", 31 | "Categories": "Catégories", 32 | "visibility": "visibilité", 33 | "Visibility Options": "Options de visibilité", 34 | "status": "statut", 35 | "Password": "Mot de passe", 36 | "published at": "Date de publication", 37 | "Featured Image": "Image sélectionnée", 38 | "Pages": "Pages", 39 | "Page": "Page", 40 | "Description": "Description", 41 | "Parent Page": "Page Parent", 42 | "Page Order": "Ordre de la page", 43 | "Post Slug": "Lien de l'article", 44 | "Write an excerpt for your post": "Rédigez un extrait de votre article", 45 | "Show All posts in": "Afficher tous les messages dans", 46 | "No posts found": "Aucun article trouvé", 47 | "FAQ": "FAQ", 48 | "frequently asked questions": "Questions fréquemment posées", 49 | "FAQs": "FAQs", 50 | "Question": "Question", 51 | "Answer": "Réponse", 52 | "Clear": "Vider", 53 | "Showing Search result of": "Affichage des résultats de recherche de", 54 | "Related Posts": "Articles Similaires\n", 55 | "upload": "upload", 56 | "url": "url", 57 | "featured image url": "featured image url", 58 | "Navigations": "Navigations", 59 | "Navigation": "Navigation", 60 | "Select Post": "Select Post", 61 | "Select Page": "Select Page" 62 | } 63 | -------------------------------------------------------------------------------- /lang/vendor/zeus-wind/ar.json: -------------------------------------------------------------------------------- 1 | { 2 | "Department": "قسم", 3 | "Departments": "الأقسام", 4 | "name": "الإسم", 5 | "desc": "الوصف", 6 | "ordering": "الترتيب", 7 | "is active": "مفعل؟", 8 | "Inactive": "غير مفعل؟", 9 | "slug": "الاختصار", 10 | "logo": "الشعار", 11 | "Letter": "رسالة", 12 | "Letters": "الرسائل", 13 | "from": "المرسل", 14 | "title": "عنوان الرسالة", 15 | "department": "القسم", 16 | "status": "الحالة", 17 | "status_NEW": "جديد", 18 | "status_READ": "مقروء", 19 | "status_REPLIED": "تم الرد", 20 | "reply_message": "نص الرد", 21 | "reply_title": "عنوان الرد", 22 | "message": "الرسالة", 23 | "email": "البريد", 24 | "re": "رد", 25 | "Contact us": "اتصل بنا", 26 | "feel free to contact us.": "نرحب بك في التواصل معنا.", 27 | "Send": "ارسال", 28 | "no departments available!": "لاتوجد اقسام متاحة!", 29 | "Select Department": "اختر القسم", 30 | "we received your message, and will get back to you shortly.": "تم استلام رسالتك وسيتم الرد عليها في اقرب وقت ممكن", 31 | "Edit": "تعديل", 32 | "Open": "فتح", 33 | "Delete": "حذف" 34 | } 35 | -------------------------------------------------------------------------------- /lang/vendor/zeus-wind/en.json: -------------------------------------------------------------------------------- 1 | { 2 | "Department": "Department", 3 | "Departments": "Departments", 4 | "name": "name", 5 | "desc": "desc", 6 | "ordering": "ordering", 7 | "is active": "is active", 8 | "slug": "slug", 9 | "logo": "logo", 10 | "Letter": "Letter", 11 | "Letters": "Letters", 12 | "from": "from", 13 | "title": "title", 14 | "department": "department", 15 | "status": "status", 16 | "status_NEW": "NEW", 17 | "status_READ": "READ", 18 | "status_REPLIED": "REPLIED", 19 | "reply_message": "reply message", 20 | "reply_title": "reply title", 21 | "message": "message", 22 | "email": "email", 23 | "re": "re", 24 | "Contact us": "Contact us", 25 | "feel free to contact us.": "feel free to contact us.", 26 | "Send": "Send", 27 | "no departments available!": "no departments available!", 28 | "Select Department": "Select Department", 29 | "we received your message, and will get back to you shortly.": "we received your message, and will get back to you shortly." 30 | } 31 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "private": true, 3 | "type": "module", 4 | "scripts": { 5 | "dev": "vite", 6 | "build": "vite build" 7 | }, 8 | "devDependencies": { 9 | "@alpinejs/collapse": "^3.12.0", 10 | "@alpinejs/focus": "^3.12.0", 11 | "@awcodes/filament-plugin-purge": "^1.1.0", 12 | "@ryangjchandler/alpine-tooltip": "^1.2.0", 13 | "@tailwindcss/forms": "^0.5.6", 14 | "@tailwindcss/typography": "^0.5.10", 15 | "alpinejs": "^3.12.2", 16 | "autoprefixer": "^10.4.16", 17 | "laravel-vite-plugin": "^0.7.5", 18 | "postcss": "^8.4.30", 19 | "postcss-import": "^15.1.0", 20 | "tailwindcss": "^3.3.3", 21 | "tailwindcss-debug-screens": "^2.2.1", 22 | "tippy.js": "^6.3.7", 23 | "vite": "^4.5.2" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /phpstan.neon: -------------------------------------------------------------------------------- 1 | includes: 2 | - ./vendor/larastan/larastan/extension.neon 3 | 4 | parameters: 5 | 6 | paths: 7 | - app/ 8 | 9 | # Level 9 is the highest level 10 | level: 5 11 | 12 | # ignoreErrors: 13 | # - '#PHPDoc tag @var#' 14 | # 15 | # excludePaths: 16 | # - ./*/*/FileToBeExcluded.php 17 | # 18 | # checkMissingIterableValueType: false -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 9 | ./tests/Unit 10 | 11 | 12 | ./tests/Feature 13 | 14 | 15 | 16 | 17 | ./app 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | -------------------------------------------------------------------------------- /pint.json: -------------------------------------------------------------------------------- 1 | { 2 | "preset": "laravel" 3 | } -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | export default { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | }; 7 | -------------------------------------------------------------------------------- /public/.htaccess: -------------------------------------------------------------------------------- 1 | 2 | 3 | Options -MultiViews -Indexes 4 | 5 | 6 | RewriteEngine On 7 | 8 | # Handle Authorization Header 9 | RewriteCond %{HTTP:Authorization} . 10 | RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] 11 | 12 | # Redirect Trailing Slashes If Not A Folder... 13 | RewriteCond %{REQUEST_FILENAME} !-d 14 | RewriteCond %{REQUEST_URI} (.+)/$ 15 | RewriteRule ^ %1 [L,R=301] 16 | 17 | # Send Requests To Front Controller... 18 | RewriteCond %{REQUEST_FILENAME} !-d 19 | RewriteCond %{REQUEST_FILENAME} !-f 20 | RewriteRule ^ index.php [L] 21 | 22 | -------------------------------------------------------------------------------- /public/build/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "resources/css/app.css": { 3 | "file": "assets/app-a63846b1.css", 4 | "isEntry": true, 5 | "src": "resources/css/app.css" 6 | }, 7 | "resources/css/filament/admin/theme.css": { 8 | "file": "assets/theme-675d2407.css", 9 | "isEntry": true, 10 | "src": "resources/css/filament/admin/theme.css" 11 | }, 12 | "resources/js/app.js": { 13 | "file": "assets/app-83f7ac21.js", 14 | "isEntry": true, 15 | "src": "resources/js/app.js" 16 | } 17 | } -------------------------------------------------------------------------------- /public/css/app/filament-export-0.3.0.css: -------------------------------------------------------------------------------- 1 | .preview-table { 2 | background: white; 3 | color: black; 4 | width: 100%; 5 | border-collapse: collapse; 6 | border-spacing: 0; 7 | } 8 | 9 | .preview-table td, 10 | .preview-table th { 11 | border-color: #ededed; 12 | border-style: solid; 13 | border-width: 1px; 14 | font-size: 13px; 15 | line-height: 2; 16 | overflow: hidden; 17 | padding-left: 6px; 18 | word-break: normal; 19 | } 20 | 21 | .preview-table th { 22 | font-weight: normal; 23 | } 24 | 25 | .preview-table-wrapper { 26 | max-height: min(500px, 80vh); 27 | overflow-y: auto; 28 | } 29 | 30 | 31 | -------------------------------------------------------------------------------- /public/css/filament-export/filament-export-0.3.0.css: -------------------------------------------------------------------------------- 1 | .preview-table { 2 | background: white; 3 | color: black; 4 | width: 100%; 5 | border-collapse: collapse; 6 | border-spacing: 0; 7 | } 8 | 9 | .preview-table td, 10 | .preview-table th { 11 | border-color: #ededed; 12 | border-style: solid; 13 | border-width: 1px; 14 | font-size: 13px; 15 | line-height: 2; 16 | overflow: hidden; 17 | padding-left: 6px; 18 | word-break: normal; 19 | } 20 | 21 | .preview-table th { 22 | font-weight: normal; 23 | } 24 | 25 | .preview-table-wrapper { 26 | max-height: min(500px, 80vh); 27 | overflow-y: auto; 28 | } 29 | 30 | 31 | -------------------------------------------------------------------------------- /public/css/swisnl/filament-backgrounds/filament-backgrounds-styles.css: -------------------------------------------------------------------------------- 1 | .fi-simple-layout{background-image:var(--filament-backgrounds-image);background-position:50%;background-repeat:no-repeat;background-size:cover;position:relative;z-index:0}.fi-simple-layout:before{background:linear-gradient(0deg,rgba(0,0,0,.6),transparent 25%) no-repeat;background-size:cover;content:var(--filament-backgrounds-attribution-backdrop);height:100%;left:0;position:fixed;top:0;width:100%}.fi-simple-layout:after{bottom:2rem;color:#fff;content:var(--filament-backgrounds-attribution);left:2rem;position:absolute;text-shadow:0 0 3px #000}.fi-simple-main.fi-simple-main.fi-simple-main{--tw-bg-opacity:0.9;--tw-ring-color:transparent;position:relative}.fi-simple-main.fi-simple-main.fi-simple-main:before{backdrop-filter:blur(3px);border-radius:inherit;content:"";inset:0;position:absolute;z-index:-1} -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/favicon.ico -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/01.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/01.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/02.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/02.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/03.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/03.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/04.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/04.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/05.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/05.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/06.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/06.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/07.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/07.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/08.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/08.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/09.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/09.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/10.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/10.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/11.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/11.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/12.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/12.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/13.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/13.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/14.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/14.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/15.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/15.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/16.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/16.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/17.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/17.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/18.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/18.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/19.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/19.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/20.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/20.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/21.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/21.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/22.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/22.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/23.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/23.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/24.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/24.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/25.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/25.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/26.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/26.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/27.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/27.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/28.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/28.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/29.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/29.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/30.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/30.jpg -------------------------------------------------------------------------------- /public/images/swisnl/filament-backgrounds/curated-by-swis/31.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/lara-zeus/zeus/4c0f6e0d3c9d40cb36e2041bbb150ea80515e31b/public/images/swisnl/filament-backgrounds/curated-by-swis/31.jpg -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | make(Kernel::class); 50 | 51 | $response = $kernel->handle( 52 | $request = Request::capture() 53 | )->send(); 54 | 55 | $kernel->terminate($request, $response); 56 | -------------------------------------------------------------------------------- /public/js/app/filament-export-0.3.0.js: -------------------------------------------------------------------------------- 1 | function onElementRemoved(element, callback) { 2 | new MutationObserver(function (mutations) { 3 | if (!document.body.contains(element)) { 4 | callback(); 5 | this.disconnect(); 6 | } 7 | }).observe(element.parentElement, { childList: true }); 8 | } 9 | 10 | function triggerInputEvent(statePath, value) { 11 | let input = document.getElementById(statePath); 12 | input.value = value; 13 | input.dispatchEvent(new Event('input', { bubbles: true })); 14 | } 15 | 16 | function printHTML(html, statePath, uniqueActionId) { 17 | let iframe = document.createElement("iframe"); 18 | 19 | let random = Math.floor(Math.random() * 99999); 20 | 21 | iframe.id = `print-${random}`; 22 | 23 | iframe.srcdoc = html; 24 | 25 | document.body.append(iframe); 26 | 27 | onElementRemoved(iframe, () => triggerInputEvent(statePath, `afterprint-${uniqueActionId}`)); 28 | 29 | iframe.contentWindow.onafterprint = () => document.getElementById(iframe.id).remove(); 30 | 31 | iframe.contentWindow.onload = () => iframe.contentWindow.print(); 32 | } 33 | 34 | window.triggerInputEvent = triggerInputEvent; 35 | 36 | window.printHTML = printHTML; -------------------------------------------------------------------------------- /public/js/filament-export/filament-export-0.3.0.js: -------------------------------------------------------------------------------- 1 | function onElementRemoved(element, callback) { 2 | new MutationObserver(function (mutations) { 3 | if (!document.body.contains(element)) { 4 | callback(); 5 | this.disconnect(); 6 | } 7 | }).observe(element.parentElement, { childList: true }); 8 | } 9 | 10 | function triggerInputEvent(statePath, value) { 11 | let input = document.getElementById(statePath); 12 | input.value = value; 13 | input.dispatchEvent(new Event('input', { bubbles: true })); 14 | } 15 | 16 | function printHTML(html, statePath, uniqueActionId) { 17 | let iframe = document.createElement("iframe"); 18 | 19 | let random = Math.floor(Math.random() * 99999); 20 | 21 | iframe.id = `print-${random}`; 22 | 23 | iframe.srcdoc = html; 24 | 25 | document.body.append(iframe); 26 | 27 | onElementRemoved(iframe, () => triggerInputEvent(statePath, `afterprint-${uniqueActionId}`)); 28 | 29 | iframe.contentWindow.onafterprint = () => document.getElementById(iframe.id).remove(); 30 | 31 | iframe.contentWindow.onload = () => iframe.contentWindow.print(); 32 | } 33 | 34 | window.triggerInputEvent = triggerInputEvent; 35 | 36 | window.printHTML = printHTML; -------------------------------------------------------------------------------- /public/js/filament/forms/components/key-value.js: -------------------------------------------------------------------------------- 1 | function r({state:o}){return{state:o,rows:[],shouldUpdateRows:!0,init:function(){this.updateRows(),this.rows.length<=0?this.rows.push({key:"",value:""}):this.updateState(),this.$watch("state",(t,e)=>{let s=i=>i===null?0:Array.isArray(i)?i.length:typeof i!="object"?0:Object.keys(i).length;s(t)===0&&s(e)===0||this.updateRows()})},addRow:function(){this.rows.push({key:"",value:""}),this.updateState()},deleteRow:function(t){this.rows.splice(t,1),this.rows.length<=0&&this.addRow(),this.updateState()},reorderRows:function(t){let e=Alpine.raw(this.rows);this.rows=[];let s=e.splice(t.oldIndex,1)[0];e.splice(t.newIndex,0,s),this.$nextTick(()=>{this.rows=e,this.updateState()})},updateRows:function(){if(!this.shouldUpdateRows){this.shouldUpdateRows=!0;return}let t=[];for(let[e,s]of Object.entries(this.state??{}))t.push({key:e,value:s});this.rows=t},updateState:function(){let t={};this.rows.forEach(e=>{e.key===""||e.key===null||(t[e.key]=e.value)}),this.shouldUpdateRows=!1,this.state=t}}}export{r as default}; 2 | -------------------------------------------------------------------------------- /public/js/filament/forms/components/tags-input.js: -------------------------------------------------------------------------------- 1 | function i({state:a,splitKeys:n}){return{newTag:"",state:a,createTag:function(){if(this.newTag=this.newTag.trim(),this.newTag!==""){if(this.state.includes(this.newTag)){this.newTag="";return}this.state.push(this.newTag),this.newTag=""}},deleteTag:function(t){this.state=this.state.filter(e=>e!==t)},reorderTags:function(t){let e=this.state.splice(t.oldIndex,1)[0];this.state.splice(t.newIndex,0,e),this.state=[...this.state]},input:{"x-on:blur":"createTag()","x-model":"newTag","x-on:keydown"(t){["Enter",...n].includes(t.key)&&(t.preventDefault(),t.stopPropagation(),this.createTag())},"x-on:paste"(){this.$nextTick(()=>{if(n.length===0){this.createTag();return}let t=n.map(e=>e.replace(/[/\-\\^$*+?.()|[\]{}]/g,"\\$&")).join("|");this.newTag.split(new RegExp(t,"g")).forEach(e=>{this.newTag=e,this.createTag()})})}}}}export{i as default}; 2 | -------------------------------------------------------------------------------- /public/js/filament/forms/components/textarea.js: -------------------------------------------------------------------------------- 1 | function r({initialHeight:t,shouldAutosize:i,state:s}){return{state:s,wrapperEl:null,init:function(){this.wrapperEl=this.$el.parentNode,this.setInitialHeight(),i?this.$watch("state",()=>{this.resize()}):this.setUpResizeObserver()},setInitialHeight:function(){this.$el.scrollHeight<=0||(this.wrapperEl.style.height=t+"rem")},resize:function(){if(this.setInitialHeight(),this.$el.scrollHeight<=0)return;let e=this.$el.scrollHeight+"px";this.wrapperEl.style.height!==e&&(this.wrapperEl.style.height=e)},setUpResizeObserver:function(){new ResizeObserver(()=>{this.wrapperEl.style.height=this.$el.style.height}).observe(this.$el)}}}export{r as default}; 2 | -------------------------------------------------------------------------------- /public/js/filament/forms/forms.js: -------------------------------------------------------------------------------- 1 | (()=>{function b(n){n.directive("mask",(e,{value:t,expression:u},{effect:f,evaluateLater:c})=>{let r=()=>u,l="";queueMicrotask(()=>{if(["function","dynamic"].includes(t)){let o=c(u);f(()=>{r=a=>{let s;return n.dontAutoEvaluateFunctions(()=>{o(d=>{s=typeof d=="function"?d(a):d},{scope:{$input:a,$money:I.bind({el:e})}})}),s},i(e,!1)})}else i(e,!1);e._x_model&&e._x_model.set(e.value)}),e.addEventListener("input",()=>i(e)),e.addEventListener("blur",()=>i(e,!1));function i(o,a=!0){let s=o.value,d=r(s);if(!d||d==="false")return!1;if(l.length-o.value.length===1)return l=o.value;let g=()=>{l=o.value=p(s,d)};a?k(o,d,()=>{g()}):g()}function p(o,a){if(o==="")return"";let s=h(a,o);return m(a,s)}}).before("model")}function k(n,e,t){let u=n.selectionStart,f=n.value;t();let c=f.slice(0,u),r=m(e,h(e,c)).length;n.setSelectionRange(r,r)}function h(n,e){let t=e,u="",f={9:/[0-9]/,a:/[a-zA-Z]/,"*":/[a-zA-Z0-9]/},c="";for(let r=0;r{let o="",a=0;for(let s=i.length-1;s>=0;s--)i[s]!==p&&(a===3?(o=i[s]+p+o,a=0):o=i[s]+o,a++);return o},c=n.startsWith("-")?"-":"",r=n.replaceAll(new RegExp(`[^0-9\\${e}]`,"g"),""),l=Array.from({length:r.split(e)[0].length}).fill("9").join("");return l=`${c}${f(l,t)}`,u>0&&n.includes(e)&&(l+=`${e}`+"9".repeat(u)),queueMicrotask(()=>{this.el.value.endsWith(e)||this.el.value[this.el.selectionStart-1]===e&&this.el.setSelectionRange(this.el.selectionStart-1,this.el.selectionStart-1)}),l}var v=b;document.addEventListener("alpine:init",()=>{window.Alpine.plugin(v)});})(); 2 | -------------------------------------------------------------------------------- /public/js/filament/tables/tables.js: -------------------------------------------------------------------------------- 1 | (()=>{})(); 2 | -------------------------------------------------------------------------------- /public/robots.txt: -------------------------------------------------------------------------------- 1 | User-agent: * 2 | Disallow: 3 | -------------------------------------------------------------------------------- /public/vendor/filament-forms-tinyeditor/js/app.js: -------------------------------------------------------------------------------- 1 | document.addEventListener('DOMContentLoaded', function () { 2 | const sortableClass = [ 3 | 'filament-forms-builder-component', 4 | 'filament-forms-repeater-component', 5 | ]; 6 | 7 | Livewire.hook('element.updated', (el) => { 8 | if (!window.tinySettingsCopy) { 9 | return; 10 | } 11 | 12 | const isModalOpen = document.body.classList.contains('tox-dialog__disable-scroll'); 13 | 14 | if (!isModalOpen && sortableClass.some(i => el.classList.contains(i))) { 15 | removeEditors(); 16 | setTimeout(reinitializeEditors, 1); 17 | } 18 | }) 19 | 20 | const removeEditors = debounce(() => { 21 | window.tinySettingsCopy.forEach(i => tinymce.execCommand('mceRemoveEditor', false, i.target.id)); 22 | }, 50); 23 | 24 | const reinitializeEditors = debounce(() => { 25 | window.tinySettingsCopy.forEach(settings => tinymce.init(settings)) 26 | }); 27 | 28 | function debounce(callback, timeout = 100) { 29 | let timer; 30 | return (...args) => { 31 | clearTimeout(timer); 32 | timer = setTimeout(() => { 33 | callback.apply(this, args); 34 | }, timeout); 35 | }; 36 | } 37 | }) 38 | -------------------------------------------------------------------------------- /public/vendor/filament-forms-tinyeditor/tinymce/langs/README.md: -------------------------------------------------------------------------------- 1 | This is where language files should be placed. 2 | 3 | Please DO NOT translate these directly use this service: https://www.transifex.com/projects/p/tinymce/ 4 | -------------------------------------------------------------------------------- /public/vendor/filament-forms-tinyeditor/tinymce/plugins/anchor/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.7 (2022-12-06) 8 | */ 9 | !function(){"use strict";function a(e){return e.getAttribute("id")||e.getAttribute("name")||""}function c(e){return e&&"a"===e.nodeName.toLowerCase()&&!e.getAttribute("href")&&""!==a(e)}function d(e){return e.dom.getParent(e.selection.getStart(),l)}function r(e,t){var o,a,n,r,i,l=d(e);l?(n=e,r=t,(i=l).removeAttribute("name"),i.id=r,n.addVisual(),n.undoManager.add()):(a=t,(o=e).undoManager.transact(function(){var e,n;o.getParam("allow_html_in_named_anchor",!1,"boolean")||o.selection.collapse(!0),o.selection.isCollapsed()?o.insertContent(o.dom.createHTML("a",{id:a})):(n=(e=o).dom,u(n).walk(e.selection.getRng(),function(e){s.each(e,function(e){var t;c(t=e)&&!t.firstChild&&n.remove(e,!1)})}),o.formatter.remove("namedAnchor",null,null,!0),o.formatter.apply("namedAnchor",{value:a}),o.addVisual())})),e.focus()}function i(r){return function(e){for(var t,n=0;n=(h="www.").length&&g.substr(0,0+h.length)===h?c=m+"://"+c:-1===c.indexOf("@")||/^([A-Za-z][A-Za-z\d.+-]*:\/\/)|mailto:/.test(c)||(c="mailto:"+c),o=e.selection.getBookmark(),e.selection.setRng(d),e.execCommand("createlink",!1,c),!1!==s&&e.dom.setAttrib(e.selection.getNode(),"target",s),e.selection.moveToBookmark(o),e.nodeChanged())}}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=tinymce.util.Tools.resolve("tinymce.Env"),A=new RegExp("^"+/(?:[A-Za-z][A-Za-z\d.+-]{0,14}:\/\/(?:[-.~*+=!&;:'%@?^${}(),\w]+@)?|www\.|[-;:&=+$,.\w]+@)[A-Za-z\d-]+(?:\.[A-Za-z\d-]+)*(?::\d+)?(?:\/(?:[-.~*+=!;:'%@$(),\/\w]*[-~*+=%@$()\/\w])?)?(?:\?(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?(?:#(?:[-.~*+=!&;:'%@?^${}(),\/\w]+))?/g.source+"$","i");e.add("autolink",function(e){var t,n;(t=e).on("keydown",function(e){if(13===e.keyCode)return r(t,-1)}),a.browser.isIE()?t.on("focus",function(){if(!n){n=!0;try{t.execCommand("AutoUrlDetect",!1,!0)}catch(e){}}}):(t.on("keypress",function(e){if(41===e.keyCode||93===e.keyCode||125===e.keyCode)return r(t,-1)}),t.on("keyup",function(e){if(32===e.keyCode)return r(t,0)}))})}(); -------------------------------------------------------------------------------- /public/vendor/filament-forms-tinyeditor/tinymce/plugins/autoresize/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.7 (2022-12-06) 8 | */ 9 | !function(){"use strict";function y(e){return e.getParam("min_height",e.getElement().offsetHeight,"number")}function p(e,t){var n=e.getBody();n&&(n.style.overflowY=t?"":"hidden",t||(n.scrollTop=0))}function v(e,t,n,i){var o=parseInt(e.getStyle(t,n,i),10);return isNaN(o)?0:o}var l=Object.hasOwnProperty,e=tinymce.util.Tools.resolve("tinymce.PluginManager"),b=tinymce.util.Tools.resolve("tinymce.Env"),r=tinymce.util.Tools.resolve("tinymce.util.Delay"),u=function(e,t,n,i,o){r.setEditorTimeout(e,function(){C(e,t),n--?u(e,t,n,i,o):o&&o()},i)},C=function(e,t,n){var i,o,r,s,a,l,u,g,c,m,f,d=e.dom,h=e.getDoc();h&&(e.plugins.fullscreen&&e.plugins.fullscreen.isFullscreen()?p(e,!0):(i=h.documentElement,o=e.getParam("autoresize_bottom_margin",50,"number"),r=y(e),s=v(d,i,"margin-top",!0),a=v(d,i,"margin-bottom",!0),(l=(l=i.offsetHeight+s+a+o)<0?0:l)+(u=e.getContainer().offsetHeight-e.getContentAreaContainer().offsetHeight)>y(e)&&(r=l+u),(g=e.getParam("max_height",0,"number"))&&go(t.getParam("autosave_retention"),"20m")&&(g(t,!1),1))}function s(t){var e=n(t);!i(t)&&t.isDirty()&&(v.setItem(e+"draft",t.getContent({format:"raw",no_events:!0})),v.setItem(e+"time",(new Date).getTime().toString()),t.fire("StoreDraft"))}function f(t){var e=n(t);u(t)&&(t.setContent(v.getItem(e+"draft"),{format:"raw"}),t.fire("RestoreDraft"))}function c(t){t.undoManager.transact(function(){f(t),g(t)}),t.focus()}function m(r){return function(t){function e(){return t.setDisabled(!u(r))}return t.setDisabled(!u(r)),r.on("StoreDraft RestoreDraft RemoveDraft",e),function(){return r.off("StoreDraft RestoreDraft RemoveDraft",e)}}}var t=tinymce.util.Tools.resolve("tinymce.PluginManager"),a=function(t){return void 0===t},l=tinymce.util.Tools.resolve("tinymce.util.Delay"),v=tinymce.util.Tools.resolve("tinymce.util.LocalStorage"),d=tinymce.util.Tools.resolve("tinymce.util.Tools"),g=function(t,e){var r=n(t);v.removeItem(r+"draft"),v.removeItem(r+"time"),!1!==e&&t.fire("RemoveDraft")},y=tinymce.util.Tools.resolve("tinymce.EditorManager");t.add("autosave",function(t){var e,r,n,a;return t.editorManager.on("BeforeUnload",function(t){var e;d.each(y.get(),function(t){t.plugins.autosave&&t.plugins.autosave.storeDraft(),!e&&t.isDirty()&&t.getParam("autosave_ask_before_unload",!0)&&(e=t.translate("You have unsaved changes are you sure you want to navigate away?"))}),e&&(t.preventDefault(),t.returnValue=e)}),n=e=t,a=o(n.getParam("autosave_interval"),"30s"),l.setEditorInterval(n,function(){s(n)},a),e.ui.registry.addButton("restoredraft",{tooltip:"Restore last draft",icon:"restore-draft",onAction:function(){c(e)},onSetup:m(e)}),e.ui.registry.addMenuItem("restoredraft",{text:"Restore last draft",icon:"restore-draft",onAction:function(){c(e)},onSetup:m(e)}),t.on("init",function(){t.getParam("autosave_restore_when_empty",!1)&&t.dom.isEmpty(t.getBody())&&f(t)}),r=t,{hasDraft:function(){return u(r)},storeDraft:function(){return s(r)},restoreDraft:function(){return f(r)},removeDraft:function(t){return g(r,t)},isEmpty:function(t){return i(r,t)}}})}(); -------------------------------------------------------------------------------- /public/vendor/filament-forms-tinyeditor/tinymce/plugins/code/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.7 (2022-12-06) 8 | */ 9 | !function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("code",function(e){var t,o;function n(){return o.execCommand("mceCodeEditor")}return(t=e).addCommand("mceCodeEditor",function(){var n,e;e=(n=t).getContent({source_view:!0}),n.windowManager.open({title:"Source Code",size:"large",body:{type:"panel",items:[{type:"textarea",name:"code"}]},buttons:[{type:"cancel",name:"cancel",text:"Cancel"},{type:"submit",name:"save",text:"Save",primary:!0}],initialData:{code:e},onSubmit:function(e){var t=n,o=e.getData().code;t.focus(),t.undoManager.transact(function(){t.setContent(o)}),t.selection.setCursorLocation(),t.nodeChanged(),e.close()}})}),(o=e).ui.registry.addButton("code",{icon:"sourcecode",tooltip:"Source code",onAction:n}),o.ui.registry.addMenuItem("code",{icon:"sourcecode",text:"Source code",onAction:n}),{}})}(); -------------------------------------------------------------------------------- /public/vendor/filament-forms-tinyeditor/tinymce/plugins/colorpicker/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.7 (2022-12-06) 8 | */ 9 | !function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("colorpicker",function(){})}(); -------------------------------------------------------------------------------- /public/vendor/filament-forms-tinyeditor/tinymce/plugins/contextmenu/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.7 (2022-12-06) 8 | */ 9 | !function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("contextmenu",function(){})}(); -------------------------------------------------------------------------------- /public/vendor/filament-forms-tinyeditor/tinymce/plugins/hr/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.7 (2022-12-06) 8 | */ 9 | !function(){"use strict";tinymce.util.Tools.resolve("tinymce.PluginManager").add("hr",function(n){var o,t;function e(){return t.execCommand("InsertHorizontalRule")}(o=n).addCommand("InsertHorizontalRule",function(){o.execCommand("mceInsertContent",!1,"
")}),(t=n).ui.registry.addButton("hr",{icon:"horizontal-rule",tooltip:"Horizontal line",onAction:e}),t.ui.registry.addMenuItem("hr",{icon:"horizontal-rule",text:"Horizontal line",onAction:e})})}(); -------------------------------------------------------------------------------- /public/vendor/filament-forms-tinyeditor/tinymce/plugins/legacyoutput/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.7 (2022-12-06) 8 | */ 9 | !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),l=tinymce.util.Tools.resolve("tinymce.util.Tools");e.add("legacyoutput",function(e){var s,t;(t=s=e).settings.inline_styles=!1,t.getParam("fontsize_formats")||(t.settings.fontsize_formats="8pt=1 10pt=2 12pt=3 14pt=4 18pt=5 24pt=6 36pt=7"),t.getParam("font_formats")||(t.settings.font_formats="Andale Mono=andale mono,monospace;Arial=arial,helvetica,sans-serif;Arial Black=arial black,sans-serif;Book Antiqua=book antiqua,palatino,serif;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier,monospace;Georgia=georgia,palatino,serif;Helvetica=helvetica,arial,sans-serif;Impact=impact,sans-serif;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco,monospace;Times New Roman=times new roman,times,serif;Trebuchet MS=trebuchet ms,geneva,sans-serif;Verdana=verdana,geneva,sans-serif;Webdings=webdings;Wingdings=wingdings,zapf dingbats"),s.on("PreInit",function(){var e=s,t="p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li,table",i=l.explode(e.getParam("font_size_style_values","xx-small,x-small,small,medium,large,x-large,xx-large")),a=e.schema;e.formatter.register({alignleft:{selector:t,attributes:{align:"left"}},aligncenter:{selector:t,attributes:{align:"center"}},alignright:{selector:t,attributes:{align:"right"}},alignjustify:{selector:t,attributes:{align:"justify"}},bold:[{inline:"b",remove:"all",preserve_attributes:["class","style"]},{inline:"strong",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{fontWeight:"bold"}}],italic:[{inline:"i",remove:"all",preserve_attributes:["class","style"]},{inline:"em",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{fontStyle:"italic"}}],underline:[{inline:"u",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{textDecoration:"underline"},exact:!0}],strikethrough:[{inline:"strike",remove:"all",preserve_attributes:["class","style"]},{inline:"span",styles:{textDecoration:"line-through"},exact:!0}],fontname:{inline:"font",toggle:!1,attributes:{face:"%value"}},fontsize:{inline:"font",toggle:!1,attributes:{size:function(e){return String(l.inArray(i,e.value)+1)}}},forecolor:{inline:"font",attributes:{color:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0},hilitecolor:{inline:"font",styles:{backgroundColor:"%value"},links:!0,remove_similar:!0,clear_child_styles:!0}}),l.each("b,i,u,strike".split(","),function(e){a.addValidElements(e+"[*]")}),a.getElementRule("font")||a.addValidElements("font[face|size|color|style]"),l.each(t.split(","),function(e){var t=a.getElementRule(e);t&&(t.attributes.align||(t.attributes.align={},t.attributesOrder.push("align")))})})})}(); -------------------------------------------------------------------------------- /public/vendor/filament-forms-tinyeditor/tinymce/plugins/nonbreaking/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.7 (2022-12-06) 8 | */ 9 | !function(){"use strict";function o(n,e){for(var a="",o=0;o'+o(" ",e)+"":o(" ",e);n.undoManager.transact(function(){return n.insertContent(a)})}var n=tinymce.util.Tools.resolve("tinymce.PluginManager"),c=tinymce.util.Tools.resolve("tinymce.util.VK");n.add("nonbreaking",function(n){var e,a,o,t,i;function r(){return a.execCommand("mceNonBreaking")}(e=n).addCommand("mceNonBreaking",function(){s(e,1)}),(a=n).ui.registry.addButton("nonbreaking",{icon:"non-breaking",tooltip:"Nonbreaking space",onAction:r}),a.ui.registry.addMenuItem("nonbreaking",{icon:"non-breaking",text:"Nonbreaking space",onAction:r}),0<(i="boolean"==typeof(t=(o=n).getParam("nonbreaking_force_tab",0))?!0===t?3:0:t)&&o.on("keydown",function(n){n.keyCode!==c.TAB||n.isDefaultPrevented()||n.shiftKey||(n.preventDefault(),n.stopImmediatePropagation(),s(o,i))})})}(); -------------------------------------------------------------------------------- /public/vendor/filament-forms-tinyeditor/tinymce/plugins/noneditable/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.7 (2022-12-06) 8 | */ 9 | !function(){"use strict";function l(t){return t.getParam("noneditable_noneditable_class","mceNonEditable")}function u(e){return function(t){return-1!==(" "+t.attr("class")+" ").indexOf(e)}}function e(e){var t,r="contenteditable",n=" "+f.trim(e.getParam("noneditable_editable_class","mceEditable"))+" ",a=" "+f.trim(l(e))+" ",i=u(n),o=u(a),c=(t=e.getParam("noneditable_regexp",[]))&&t.constructor===RegExp?[t]:t;e.on("PreInit",function(){0"===r){var a=o.lastIndexOf("<",n);if(-1!==a&&-1!==o.substring(a,n).indexOf('contenteditable="false"'))return t}return''+i.dom.encode("string"==typeof e[1]?e[1]:e[0])+""}}(t,a,l(t)));n.content=a}}(e,c,t)}),e.parser.addAttributeFilter("class",function(t){for(var e,n=t.length;n--;)e=t[n],i(e)?e.attr(r,"true"):o(e)&&e.attr(r,"false")}),e.serializer.addAttributeFilter(r,function(t){for(var e,n=t.length;n--;)e=t[n],(i(e)||o(e))&&(0';return e?"

"+a+"

":a}var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),n=tinymce.util.Tools.resolve("tinymce.Env"),m="mce-pagebreak";e.add("pagebreak",function(e){var a,n,o,i,t,r;function c(){return n.execCommand("mcePageBreak")}function g(){return u(o)}(a=e).addCommand("mcePageBreak",function(){a.insertContent(l(u(a)))}),(n=e).ui.registry.addButton("pagebreak",{icon:"page-break",tooltip:"Page break",onAction:c}),n.ui.registry.addMenuItem("pagebreak",{text:"Page break",icon:"page-break",onAction:c}),i=(o=e).getParam("pagebreak_separator","\x3c!-- pagebreak --\x3e"),t=new RegExp(i.replace(/[\?\.\*\[\]\(\)\{\}\+\^\$\:]/g,function(e){return"\\"+e}),"gi"),o.on("BeforeSetContent",function(e){e.content=e.content.replace(t,l(g()))}),o.on("PreInit",function(){o.serializer.addNodeFilter("img",function(e){for(var a,n,t,r=e.length;r--;)(t=(n=e[r]).attr("class"))&&-1!==t.indexOf(m)&&(a=n.parent,o.schema.getBlockElements()[a.name]&&g()?(a.type=3,a.value=i,a.raw=!0,n.remove()):(n.type=3,n.value=i,n.raw=!0))})}),(r=e).on("ResolveName",function(e){"IMG"===e.target.nodeName&&r.dom.hasClass(e.target,m)&&(e.name="pagebreak")})})}(); -------------------------------------------------------------------------------- /public/vendor/filament-forms-tinyeditor/tinymce/plugins/preview/plugin.min.js: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright (c) Tiny Technologies, Inc. All rights reserved. 3 | * Licensed under the LGPL or a commercial license. 4 | * For LGPL see License.txt in the project root for license information. 5 | * For commercial licenses see https://www.tiny.cloud/ 6 | * 7 | * Version: 5.10.7 (2022-12-06) 8 | */ 9 | !function(){"use strict";var e=tinymce.util.Tools.resolve("tinymce.PluginManager"),f=tinymce.util.Tools.resolve("tinymce.Env"),w=tinymce.util.Tools.resolve("tinymce.util.Tools");e.add("preview",function(e){var n,t;function i(){return t.execCommand("mcePreview")}(n=e).addCommand("mcePreview",function(){var e,t;t=function(t){var n="",i=t.dom.encode,e=t.getParam("content_style","","string");n+='';var o=t.getParam("content_css_cors",!1,"boolean")?' crossorigin="anonymous"':"";w.each(t.contentCSS,function(e){n+='"}),e&&(n+='");var a,r,s,c,d,l,m,y=-1===(c=(a=t).getParam("body_id","tinymce","string")).indexOf("=")?c:(s=(r=a).getParam("body_id","","hash"))[r.id]||s,u=-1===(m=(d=t).getParam("body_class","","string")).indexOf("=")?m:(l=d).getParam("body_class","","hash")[l.id]||"",v='