diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md
new file mode 100644
index 0000000..b0ee5d8
--- /dev/null
+++ b/.github/CONTRIBUTING.md
@@ -0,0 +1,55 @@
+# Contributing
+
+Contributions are **welcome** and will be fully **credited**.
+
+Please read and understand the contribution guide before creating an issue or pull request.
+
+## Etiquette
+
+This project is open source, and as such, the maintainers give their free time to build and maintain the source code
+held within. They make the code freely available in the hope that it will be of use to other developers. It would be
+extremely unfair for them to suffer abuse or anger for their hard work.
+
+Please be considerate towards maintainers when raising issues or presenting pull requests. Let's show the
+world that developers are civilized and selfless people.
+
+It's the duty of the maintainer to ensure that all submissions to the project are of sufficient
+quality to benefit the project. Many developers have different skills, strengths, and weaknesses. Respect the maintainer's decision, and do not be upset or abusive if your submission is not used.
+
+## Viability
+
+When requesting or submitting new features, first consider whether it might be useful to others. Open
+source projects are used by many developers, who may have entirely different needs to your own. Think about
+whether or not your feature is likely to be used by other users of the project.
+
+## Procedure
+
+Before filing an issue:
+
+- Attempt to replicate the problem, to ensure that it wasn't a coincidental incident.
+- Check to make sure your feature suggestion isn't already present within the project.
+- Check the pull requests tab to ensure that the bug doesn't have a fix in progress.
+- Check the pull requests tab to ensure that the feature isn't already in progress.
+
+Before submitting a pull request:
+
+- Check the codebase to ensure that your feature doesn't already exist.
+- Check the pull requests to ensure that another person hasn't already submitted the feature or fix.
+
+## Requirements
+
+If the project maintainer has any additional requirements, you will find them listed here.
+
+- **[PSR-2 Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)** - The easiest way to apply the conventions is to install [PHP Code Sniffer](https://pear.php.net/package/PHP_CodeSniffer).
+
+- **Add tests!** - Your patch won't be accepted if it doesn't have tests.
+
+- **Document any change in behaviour** - Make sure the `README.md` and any other relevant documentation are kept up-to-date.
+
+- **Consider our release cycle** - We try to follow [SemVer v2.0.0](https://semver.org/). Randomly breaking public APIs is not an option.
+
+- **One pull request per feature** - If you want to do more than one thing, send multiple pull requests.
+
+- **Send coherent history** - Make sure each individual commit in your pull request is meaningful. If you had to make multiple intermediate commits while developing, please [squash them](https://www.git-scm.com/book/en/v2/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages) before submitting.
+
+**Happy coding**!
diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml
new file mode 100644
index 0000000..892ba05
--- /dev/null
+++ b/.github/FUNDING.yml
@@ -0,0 +1 @@
+github: [3x1io]
diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml
new file mode 100644
index 0000000..8fa85ce
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug.yml
@@ -0,0 +1,66 @@
+name: Bug Report
+description: Report an Issue or Bug with the Package
+title: "[Bug]: "
+labels: ["bug"]
+body:
+ - type: markdown
+ attributes:
+ value: |
+ We're sorry to hear you have a problem. Can you help us solve it by providing the following details.
+ - type: textarea
+ id: what-happened
+ attributes:
+ label: What happened?
+ description: What did you expect to happen?
+ placeholder: I cannot currently do X thing because when I do, it breaks X thing.
+ validations:
+ required: true
+ - type: textarea
+ id: how-to-reproduce
+ attributes:
+ label: How to reproduce the bug
+ description: How did this occur, please add any config values used and provide a set of reliable steps if possible.
+ placeholder: When I do X I see Y.
+ validations:
+ required: true
+ - type: input
+ id: package-version
+ attributes:
+ label: Package Version
+ description: What version of our Package are you running? Please be as specific as possible
+ placeholder: 2.0.0
+ validations:
+ required: true
+ - type: input
+ id: php-version
+ attributes:
+ label: PHP Version
+ description: What version of PHP are you running? Please be as specific as possible
+ placeholder: 8.2.0
+ validations:
+ required: true
+ - type: input
+ id: laravel-version
+ attributes:
+ label: Laravel Version
+ description: What version of Laravel are you running? Please be as specific as possible
+ placeholder: 9.0.0
+ validations:
+ required: true
+ - type: dropdown
+ id: operating-systems
+ attributes:
+ label: Which operating systems does with happen with?
+ description: You may select more than one.
+ multiple: true
+ options:
+ - macOS
+ - Windows
+ - Linux
+ - type: textarea
+ id: notes
+ attributes:
+ label: Notes
+ description: Use this field to provide any other notes that you feel might be relevant to the issue.
+ validations:
+ required: false
diff --git a/.github/ISSUE_TEMPLATE/config.yaml b/.github/ISSUE_TEMPLATE/config.yaml
new file mode 100644
index 0000000..977406a
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yaml
@@ -0,0 +1,11 @@
+blank_issues_enabled: false
+contact_links:
+ - name: Ask a question
+ url: https://github.com/tomatophp/filament-themes-manager/discussions/new?category=q-a
+ about: Ask the community for help
+ - name: Request a feature
+ url: https://github.com/tomatophp/filament-themes-manager/discussions/new?category=ideas
+ about: Share ideas for new features
+ - name: Report a security issue
+ url: https://github.com/tomatophp/filament-themes-manager/security/policy
+ about: Learn how to notify us for sensitive bugs
diff --git a/.github/SECURITY.md b/.github/SECURITY.md
new file mode 100644
index 0000000..b2490a9
--- /dev/null
+++ b/.github/SECURITY.md
@@ -0,0 +1,3 @@
+# Security Policy
+
+If you discover any security related issues, please email info@3x1.io instead of using the issue tracker.
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 0000000..0bc378d
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,12 @@
+# Please see the documentation for all configuration options:
+# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
+
+version: 2
+updates:
+
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "weekly"
+ labels:
+ - "dependencies"
diff --git a/.github/workflows/dependabot-auto-merge.yml b/.github/workflows/dependabot-auto-merge.yml
new file mode 100644
index 0000000..27c23a4
--- /dev/null
+++ b/.github/workflows/dependabot-auto-merge.yml
@@ -0,0 +1,32 @@
+name: dependabot-auto-merge
+on: pull_request_target
+
+permissions:
+ pull-requests: write
+ contents: write
+
+jobs:
+ dependabot:
+ runs-on: ubuntu-latest
+ if: ${{ github.actor == 'dependabot[bot]' }}
+ steps:
+
+ - name: Dependabot metadata
+ id: metadata
+ uses: dependabot/fetch-metadata@v2.2.0
+ with:
+ github-token: "${{ secrets.GITHUB_TOKEN }}"
+
+ - name: Auto-merge Dependabot PRs for semver-minor updates
+ if: ${{steps.metadata.outputs.update-type == 'version-update:semver-minor'}}
+ run: gh pr merge --auto --merge "$PR_URL"
+ env:
+ PR_URL: ${{github.event.pull_request.html_url}}
+ GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
+
+ - name: Auto-merge Dependabot PRs for semver-patch updates
+ if: ${{steps.metadata.outputs.update-type == 'version-update:semver-patch'}}
+ run: gh pr merge --auto --merge "$PR_URL"
+ env:
+ PR_URL: ${{github.event.pull_request.html_url}}
+ GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}}
diff --git a/.github/workflows/fix-php-code-styling.yml b/.github/workflows/fix-php-code-styling.yml
new file mode 100644
index 0000000..e71024d
--- /dev/null
+++ b/.github/workflows/fix-php-code-styling.yml
@@ -0,0 +1,30 @@
+name: 'PHP Code Styling'
+
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - master
+ paths:
+ - '**.php'
+
+permissions:
+ contents: write
+
+jobs:
+ lint:
+ runs-on: ubuntu-latest
+ steps:
+ - name: Checkout code
+ uses: actions/checkout@v4
+ with:
+ ref: ${{ github.head_ref }}
+
+ - name: Fix PHP code style issues
+ uses: aglipanci/laravel-pint-action@v2
+
+ - name: Commit changes
+ uses: stefanzweifel/git-auto-commit-action@v5
+ with:
+ commit_message: "Format Code"
+ commit_user_name: 'GitHub Actions'
diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml
new file mode 100644
index 0000000..14a3ed3
--- /dev/null
+++ b/.github/workflows/tests.yml
@@ -0,0 +1,68 @@
+name: "Tests"
+
+on:
+ workflow_dispatch:
+ push:
+ branches:
+ - master
+ paths:
+ - '**.php'
+ pull_request:
+ types:
+ - opened
+ - synchronize
+ branches:
+ - master
+ paths:
+ - '**.php'
+ - '.github/workflows/tests.yml'
+ - 'phpunit.xml.dist'
+ - 'composer.json'
+ - 'composer.lock'
+
+jobs:
+ test:
+ runs-on: ${{ matrix.os }}
+ strategy:
+ fail-fast: true
+ matrix:
+ os: [ubuntu-latest]
+ php: [8.3, 8.2]
+ laravel: [11.*]
+ stability: [prefer-stable]
+ include:
+ - laravel: 11.*
+ testbench: 9.*
+ carbon: 3.*
+ collision: 8.*
+ name: P${{ matrix.php }} - L${{ matrix.laravel }} - ${{ matrix.stability }} - ${{ matrix.os }}
+ steps:
+ - name: Checkout Code
+ uses: actions/checkout@v4
+
+ - name: Cache Dependencies
+ uses: actions/cache@v4
+ with:
+ path: ~/.composer/cache/files
+ key: dependencies-laravel-${{ matrix.laravel }}-php-${{ matrix.php }}-composer-${{ hashFiles('composer.json') }}
+
+ - name: Setup PHP
+ uses: shivammathur/setup-php@v2
+ with:
+ php-version: ${{ matrix.php }}
+ extensions: dom, curl, libxml, mbstring, zip, pcntl, pdo, sqlite, pdo_sqlite, bcmath, soap, intl, gd, exif, iconv, imagick, fileinfo
+ coverage: none
+
+ - name: Install Dependencies
+ run: |
+ echo "::add-matcher::${{ runner.tool_cache }}/php.json"
+ echo "::add-matcher::${{ runner.tool_cache }}/phpunit.json"
+
+ - name: Install Dependencies
+ run: |
+ composer require "laravel/framework:${{ matrix.laravel }}" "orchestra/testbench:${{ matrix.testbench }}" "nesbot/carbon:${{ matrix.carbon }}" "nunomaduro/collision:${{ matrix.collision }}" --no-interaction --no-update
+ composer update --${{ matrix.stability }} --prefer-dist --no-interaction
+ composer db
+
+ - name: Execute tests
+ run: vendor/bin/pest
diff --git a/.php-cs-fixer.dist.php b/.php-cs-fixer.dist.php
new file mode 100644
index 0000000..4123157
--- /dev/null
+++ b/.php-cs-fixer.dist.php
@@ -0,0 +1,37 @@
+notPath('bootstrap/*')
+ ->notPath('storage/*')
+ ->notPath('resources/view/mail/*')
+ ->in([
+ __DIR__ . '/src',
+ __DIR__ . '/tests',
+ ])
+ ->name('*.php')
+ ->notName('*.blade.php')
+ ->ignoreDotFiles(true)
+ ->ignoreVCS(true);
+
+return (new PhpCsFixer\Config())
+ ->setRules([
+ '@PSR2' => true,
+ 'array_syntax' => ['syntax' => 'short'],
+ 'ordered_imports' => ['sort_algorithm' => 'alpha'],
+ 'no_unused_imports' => true,
+ 'not_operator_with_successor_space' => true,
+ 'trailing_comma_in_multiline' => true,
+ 'phpdoc_scalar' => true,
+ 'unary_operator_spaces' => true,
+ 'binary_operator_spaces' => true,
+ 'blank_line_before_statement' => [
+ 'statements' => ['break', 'continue', 'declare', 'return', 'throw', 'try'],
+ ],
+ 'phpdoc_single_line_var_spacing' => true,
+ 'phpdoc_var_without_name' => true,
+ 'method_argument_space' => [
+ 'on_multiline' => 'ensure_fully_multiline',
+ 'keep_multiple_spaces_after_comma' => true,
+ ]
+ ])
+ ->setFinder($finder);
diff --git a/3x1io-tomato-themes-manager.md b/3x1io-tomato-themes-manager.md
new file mode 100644
index 0000000..b10cafb
--- /dev/null
+++ b/3x1io-tomato-themes-manager.md
@@ -0,0 +1,14 @@
+---
+name: Themes Manager
+slug: 3x1io-tomato-themes-manager
+author_slug: 3x1io
+categories: [developer-tools]
+description: Manage your frontend themes using Modules HMVC Arch and easy to use settings and upload support for FilamentPHP
+discord_url:
+docs_url: https://raw.githubusercontent.com/tomatophp/filament-themes-manager/master/README.md
+github_repository: tomatophp/filament-themes-manager
+has_dark_theme: true
+has_translations: true
+versions: [3]
+publish_date: 2024-11-27
+---
diff --git a/CHANGELOG.md b/CHANGELOG.md
new file mode 100644
index 0000000..e0a5086
--- /dev/null
+++ b/CHANGELOG.md
@@ -0,0 +1,3 @@
+# V1.0.0
+
+First release of the package
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
new file mode 100644
index 0000000..18c9147
--- /dev/null
+++ b/CODE_OF_CONDUCT.md
@@ -0,0 +1,128 @@
+# Contributor Covenant Code of Conduct
+
+## Our Pledge
+
+We as members, contributors, and leaders pledge to make participation in our
+community a harassment-free experience for everyone, regardless of age, body
+size, visible or invisible disability, ethnicity, sex characteristics, gender
+identity and expression, level of experience, education, socio-economic status,
+nationality, personal appearance, race, religion, or sexual identity
+and orientation.
+
+We pledge to act and interact in ways that contribute to an open, welcoming,
+diverse, inclusive, and healthy community.
+
+## Our Standards
+
+Examples of behavior that contributes to a positive environment for our
+community include:
+
+* Demonstrating empathy and kindness toward other people
+* Being respectful of differing opinions, viewpoints, and experiences
+* Giving and gracefully accepting constructive feedback
+* Accepting responsibility and apologizing to those affected by our mistakes,
+ and learning from the experience
+* Focusing on what is best not just for us as individuals, but for the
+ overall community
+
+Examples of unacceptable behavior include:
+
+* The use of sexualized language or imagery, and sexual attention or
+ advances of any kind
+* Trolling, insulting or derogatory comments, and personal or political attacks
+* Public or private harassment
+* Publishing others' private information, such as a physical or email
+ address, without their explicit permission
+* Other conduct which could reasonably be considered inappropriate in a
+ professional setting
+
+## Enforcement Responsibilities
+
+Community leaders are responsible for clarifying and enforcing our standards of
+acceptable behavior and will take appropriate and fair corrective action in
+response to any behavior that they deem inappropriate, threatening, offensive,
+or harmful.
+
+Community leaders have the right and responsibility to remove, edit, or reject
+comments, commits, code, wiki edits, issues, and other contributions that are
+not aligned to this Code of Conduct, and will communicate reasons for moderation
+decisions when appropriate.
+
+## Scope
+
+This Code of Conduct applies within all community spaces, and also applies when
+an individual is officially representing the community in public spaces.
+Examples of representing our community include using an official e-mail address,
+posting via an official social media account, or acting as an appointed
+representative at an online or offline event.
+
+## Enforcement
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported to the community leaders responsible for enforcement at
+.
+All complaints will be reviewed and investigated promptly and fairly.
+
+All community leaders are obligated to respect the privacy and security of the
+reporter of any incident.
+
+## Enforcement Guidelines
+
+Community leaders will follow these Community Impact Guidelines in determining
+the consequences for any action they deem in violation of this Code of Conduct:
+
+### 1. Correction
+
+**Community Impact**: Use of inappropriate language or other behavior deemed
+unprofessional or unwelcome in the community.
+
+**Consequence**: A private, written warning from community leaders, providing
+clarity around the nature of the violation and an explanation of why the
+behavior was inappropriate. A public apology may be requested.
+
+### 2. Warning
+
+**Community Impact**: A violation through a single incident or series
+of actions.
+
+**Consequence**: A warning with consequences for continued behavior. No
+interaction with the people involved, including unsolicited interaction with
+those enforcing the Code of Conduct, for a specified period of time. This
+includes avoiding interactions in community spaces as well as external channels
+like social media. Violating these terms may lead to a temporary or
+permanent ban.
+
+### 3. Temporary Ban
+
+**Community Impact**: A serious violation of community standards, including
+sustained inappropriate behavior.
+
+**Consequence**: A temporary ban from any sort of interaction or public
+communication with the community for a specified period of time. No public or
+private interaction with the people involved, including unsolicited interaction
+with those enforcing the Code of Conduct, is allowed during this period.
+Violating these terms may lead to a permanent ban.
+
+### 4. Permanent Ban
+
+**Community Impact**: Demonstrating a pattern of violation of community
+standards, including sustained inappropriate behavior, harassment of an
+individual, or aggression toward or disparagement of classes of individuals.
+
+**Consequence**: A permanent ban from any sort of public interaction within
+the community.
+
+## Attribution
+
+This Code of Conduct is adapted from the [Contributor Covenant][homepage],
+version 2.0, available at
+https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.
+
+Community Impact Guidelines were inspired by [Mozilla's code of conduct
+enforcement ladder](https://github.com/mozilla/diversity).
+
+[homepage]: https://www.contributor-covenant.org
+
+For answers to common questions about this code of conduct, see the FAQ at
+https://www.contributor-covenant.org/faq. Translations are available at
+https://www.contributor-covenant.org/translations.
diff --git a/LICENSE.md b/LICENSE.md
new file mode 100644
index 0000000..e66364e
--- /dev/null
+++ b/LICENSE.md
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..bb1313c
--- /dev/null
+++ b/README.md
@@ -0,0 +1,69 @@
+
+
+# Filament themes manager
+
+[](https://packagist.org/packages/tomatophp/filament-themes-manager)
+[](https://packagist.org/packages/tomatophp/filament-themes-manager)
+[](https://packagist.org/packages/tomatophp/filament-themes-manager)
+
+Manage your frontend themes using Modules HMVC Arch and easy to use settings and upload support for FilamentPHP
+
+## Installation
+
+```bash
+composer require tomatophp/filament-themes-manager
+```
+after install your package please run this command
+
+```bash
+php artisan filament-themes-manager:install
+```
+
+finally register the plugin on `/app/Providers/Filament/AdminPanelProvider.php`
+
+```php
+->plugin(\TomatoPHP\FilamentThemesManager\FilamentThemesManagerPlugin::make())
+```
+
+
+## Publish Assets
+
+you can publish config file by use this command
+
+```bash
+php artisan vendor:publish --tag="filament-themes-manager-config"
+```
+
+you can publish views file by use this command
+
+```bash
+php artisan vendor:publish --tag="filament-themes-manager-views"
+```
+
+you can publish languages file by use this command
+
+```bash
+php artisan vendor:publish --tag="filament-themes-manager-lang"
+```
+
+you can publish migrations file by use this command
+
+```bash
+php artisan vendor:publish --tag="filament-themes-manager-migrations"
+```
+
+## Changelog
+
+Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.
+
+## Security
+
+Please see [SECURITY](SECURITY.md) for more information about security.
+
+## Credits
+
+- [Fady Mondy](mailto:info@3x1.io)
+
+## License
+
+The MIT License (MIT). Please see [License File](LICENSE.md) for more information.
diff --git a/SECURITY.md b/SECURITY.md
new file mode 100644
index 0000000..b2490a9
--- /dev/null
+++ b/SECURITY.md
@@ -0,0 +1,3 @@
+# Security Policy
+
+If you discover any security related issues, please email info@3x1.io instead of using the issue tracker.
diff --git a/arts/.gitkeep b/arts/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/composer.json b/composer.json
new file mode 100644
index 0000000..64cfcd8
--- /dev/null
+++ b/composer.json
@@ -0,0 +1,68 @@
+{
+ "name": "tomatophp/filament-themes-manager",
+ "type": "library",
+ "description": "Manage your frontend themes using Modules HMVC Arch and easy to use settings and upload support for FilamentPHP",
+ "keywords": [
+ "php",
+ "laravel",
+ "template"
+ ],
+ "license": "MIT",
+ "autoload": {
+ "psr-4": {
+ "TomatoPHP\\FilamentThemesManager\\": "src/"
+ }
+ },
+ "autoload-dev": {
+ "psr-4": {
+ "TomatoPHP\\FilamentThemesManager\\Tests\\": "tests/src/",
+ "TomatoPHP\\FilamentThemesManager\\Tests\\Database\\Factories\\": "tests/database/factories"
+ }
+ },
+ "extra": {
+ "laravel": {
+ "providers": [
+ "TomatoPHP\\FilamentThemesManager\\FilamentThemesManagerServiceProvider"
+ ]
+ }
+ },
+ "authors": [
+ {
+ "name": "Fady Mondy",
+ "email": "info@3x1.io"
+ }
+ ],
+ "config": {
+ "sort-packages": true,
+ "allow-plugins": {
+ "pestphp/pest-plugin": true,
+ "phpstan/extension-installer": true
+ }
+ },
+ "scripts": {
+ "testbench": "vendor/bin/testbench package:discover --ansi",
+ "db": "vendor/bin/testbench package:create-sqlite-db && vendor/bin/testbench migrate",
+ "analyse": "vendor/bin/phpstan analyse src tests",
+ "test": "vendor/bin/pest",
+ "test-coverage": "vendor/bin/pest --coverage",
+ "format": "vendor/bin/pint"
+ },
+ "require": {
+ "php": "^8.1|^8.2",
+ "tomatophp/console-helpers": "^1.1",
+ "filament/filament": "^3.2"
+ },
+ "require-dev": {
+ "laravel/pint": "^1.18",
+ "livewire/livewire": "^2.10|^3.0",
+ "nunomaduro/larastan": "^2.9",
+ "orchestra/testbench": "^9.5",
+ "pestphp/pest": "^2.36",
+ "pestphp/pest-plugin-laravel": "^2.4",
+ "pestphp/pest-plugin-livewire": "^2.1",
+ "phpstan/extension-installer": "^1.4",
+ "phpstan/phpstan-deprecation-rules": "^1.2",
+ "phpstan/phpstan-phpunit": "^1.4"
+ },
+ "version": "v1.0.0"
+}
diff --git a/config/.gitkeep b/config/.gitkeep
new file mode 100644
index 0000000..e69de29
diff --git a/config/filament-themes-manager.php b/config/filament-themes-manager.php
new file mode 100644
index 0000000..c5c1d6e
--- /dev/null
+++ b/config/filament-themes-manager.php
@@ -0,0 +1,10 @@
+ [
+ "scan" => true,
+ "sections" => [
+ "/vendor/tomatophp/filament-cms/src/Sections"
+ ]
+ ]
+];
diff --git a/database/migrations/2023_11_23_190637_themes_settings.php b/database/migrations/2023_11_23_190637_themes_settings.php
new file mode 100644
index 0000000..9414abf
--- /dev/null
+++ b/database/migrations/2023_11_23_190637_themes_settings.php
@@ -0,0 +1,40 @@
+migrator->add('themes.theme_name', 'main');
+ $this->migrator->add('themes.theme_path', 'themes.main');
+ $this->migrator->add('themes.theme_namespace', '');
+ $this->migrator->add('themes.theme_main_color', '');
+ $this->migrator->add('themes.theme_secandry_color', '');
+ $this->migrator->add('themes.theme_sub_color', '');
+ $this->migrator->add('themes.theme_css', '');
+ $this->migrator->add('themes.theme_js', '');
+ $this->migrator->add('themes.theme_header', '');
+ $this->migrator->add('themes.theme_footer', '');
+ $this->migrator->add('themes.theme_copyright', '');
+ }
+ }
+
+ public function down(): void
+ {
+ if(config('filament-cms.features.theme-manager')) {
+ $this->migrator->delete('themes.theme_name');
+ $this->migrator->delete('themes.theme_path');
+ $this->migrator->delete('themes.theme_namespace');
+ $this->migrator->delete('themes.theme_main_color');
+ $this->migrator->delete('themes.theme_secandry_color');
+ $this->migrator->delete('themes.theme_sub_color');
+ $this->migrator->delete('themes.theme_css');
+ $this->migrator->delete('themes.theme_js');
+ $this->migrator->delete('themes.theme_header');
+ $this->migrator->delete('themes.theme_footer');
+ $this->migrator->delete('themes.theme_copyright');
+ }
+ }
+};
diff --git a/module.json b/module.json
new file mode 100644
index 0000000..9d98a15
--- /dev/null
+++ b/module.json
@@ -0,0 +1,29 @@
+{
+ "name": "FilamentThemesManager",
+ "alias": "filament-themes-manager",
+ "description": {
+ "ar": "Manage your frontend themes using Modules HMVC Arch and easy to use settings and upload support for FilamentPHP",
+ "en": "Manage your frontend themes using Modules HMVC Arch and easy to use settings and upload support for FilamentPHP",
+ "gr": "Manage your frontend themes using Modules HMVC Arch and easy to use settings and upload support for FilamentPHP",
+ "sp": "Manage your frontend themes using Modules HMVC Arch and easy to use settings and upload support for FilamentPHP"
+ },
+ "keywords": [],
+ "priority": 0,
+ "providers": [
+ "TomatoPHP\\FilamentThemesManager\\FilamentThemesManagerServiceProvider"
+ ],
+ "files": [],
+ "title": {
+ "ar": "Filament themes manager",
+ "en": "Filament themes manager",
+ "gr": "Filament themes manager",
+ "sp": "Filament themes manager"
+ },
+ "color": "#cc1448",
+ "icon": "heroicon-c-users",
+ "placeholder": "https://raw.githubusercontent.com/tomatophp/filament-themes-manager/master/art/screenshot.jpg",
+ "type": "plugin",
+ "version": "v1.0.0",
+ "github" : "https://github.com/tomatophp/filament-themes-manager",
+ "docs" : "https://github.com/tomatophp/filament-themes-manager"
+}
diff --git a/phpunit.xml b/phpunit.xml
new file mode 100644
index 0000000..e542661
--- /dev/null
+++ b/phpunit.xml
@@ -0,0 +1,26 @@
+
+
+ {{ json_decode($item['description'])->{app()->getLocale()} }} +
+