Frontend version: Material Dashboard v2.1.0. More info at https://www.creative-tim.com/product/material-dashboard-pro Frontend version: Material UI Kit v2.1.0. More info at https://www.creative-tim.com/product/material-kit-pro
Material Blog PRO with Laravel has all the core features you need in a blog, right out of the box and with a fresh, new design inspired by Google's Material Design.
If you don't already have an Apache local environment with PHP and MySQL, use one of the following links:
- Windows: How to install WAMP on Windows
- Linux & Mac: How to install LAMP on Linux & Mac
Also, you will need to install Composer: https://getcomposer.org/doc/00-intro.md
- Unzip the downloaded archive
- Copy and paste material-blog-pro-laravel folder in your projects folder. Rename the folder to your project's name
- In your terminal run
composer install
- Copy
.env.example
to.env
and updated the configurations (mainly the database configuration) - In your terminal run
php artisan key:generate
- Run
php artisan migrate --seed
to create the database tables and seed the roles and users tables - Run
php artisan storage:link
to create the storage symlink (if you are using Vagrant with Homestead for development, remember to ssh into your virtual machine and run the command from there).
The Material Blog PRO with Laravel has all the core features a proper blog should have. A homepage with lists of featured and latest articles, also a section with the most popular authors in the platform. Pages with lists of articles, filtered by category, tag, author and also a search results page. And, last but not least, the article page, which also includes a list of related articles and a comments section, in order to comment you need to login with a member type account:
- member type - member@material.com with the password secret
All the articles, categories and tags are managed by the Material Dashboard PRO interface, which you can access by logging in as an admin or author role:
- admin role - admin@material.com with the password secret
- author type - author@material.com with the password secret
To start testing the Material Dashboard PRO, register as a user or log in using one of the default users:
- admin role - admin@material.com with the password secret
- author type - author@material.com with the password secret
- member type - member@material.com with the password secret
Make sure to run the migrations and seeders for the above credentials to be available.
The Material Dashboard PRO theme had user and role management examples, as well as tag management, category management and article management examples. All the necessary files (controllers, requests, views) are installed out of the box and all the needed routes are added to routes/web.php
. Keep in mind that all the features can be viewed once you log in using the credentials provided above or by registering your own user.
Each role has a different privilege level and can perform a certain number of actions according to this level. A member type user can log in, update his profile and view a list of added articles. A author type user can log in, update his profile and perform actions on categories, tags and articles. A admin type user can log in, update his profile and perform actions on categories, tags, articles, roles and users.
You have the option to edit the current logged in user's profile information (name, email, profile picture) and password. To access this page, just click the "Examples/Profile" link in the left sidebar or add /profile in the URL.
The App\Http\Controllers\ProfileController
handles the update of the user information and password.
public function update(ProfileRequest $request)
{
auth()->user()->update(
$request->merge(['picture' => $request->photo ? $request->photo->store('profile', 'public') : null])
->except([$request->hasFile('photo') ? '' : 'picture'])
);
return back()->withStatus(__('Profile successfully updated.'));
}
/**
* Change the password
*
* @param \App\Http\Requests\PasswordRequest $request
* @return \Illuminate\Http\RedirectResponse
*/
public function password(PasswordRequest $request)
{
auth()->user()->update(['password' => Hash::make($request->get('password'))]);
return back()->withStatus(__('Password successfully updated.'));
}
If you input the wrong data when editing the profile, dont worry. Validation rules have been added to prevent this (see
App\Http\Requests\ProfileRequest). If you try to change the password, you will see that additional validation rules have been added in
App\Http\Requests\PasswordRequest. You also have a custom validation rule that can be found in
App\Rules\CurrentPasswordCheckRule`.
public function rules()
{
return [
'old_password' => ['required', 'min:6', new CurrentPasswordCheckRule],
'password' => ['required', 'min:6', 'confirmed', 'different:old_password'],
'password_confirmation' => ['required', 'min:6'],
];
}
The Pro theme allows you to add user roles. By default, the theme comes with Admin, Author and Member roles. To access the role management example click the "Examples/Role Management" link in the left sidebar or add /role to the URL. Here you can add/edit new roles. Deletion is not allowed in this section. To add a new role, click the "Add role" button. To edit an existing role, click the dotted menu (available on every table row) and then click "Edit". In both cases, you will be directed to a form which allows you to modify the name and description of a role.
The policy which authorizes the user to access the role management option is implemented in App\Policies\RolePolicy.php
.``
You can find this functionality in App\Http\RoleController.php
.
Also, validation rules were added so you will know exactly what to input in the form fields (see App\Http\Requests\RoleRequest
). Note that these validation rules also apply for the role edit option.
public function rules()
{
return [
'name' => [
'required', 'min:3', Rule::unique((new Role)->getTable())->ignore($this->route()->role->id ?? null)
],
'description' => [
'nullable', 'min:5'
]
];
}
The theme comes with an out of the box user management option. To access this option ,click the "Examples/User Management" link in the left sidebar or add /user to the URL. The first thing you will see is a list of existing users. You can add new ones by clicking the "Add user" button (above the table on the right). On the Add user page, you will find a form which allows you to fill out the user`s name, email, role and password. All pages are generated using blade templates:
<div class="row">
<label class="col-sm-2 col-form-label">{{ __('Name') }}</label>
<div class="col-sm-7">
<div class="form-group{{ $errors->has('name') ? ' has-danger' : '' }}">
<input class="form-control{{ $errors->has('name') ? ' is-invalid' : '' }}" name="name" id="input-name" type="text" placeholder="{{ __('Name') }}" value="{{ old('name') }}" required="true" aria-required="true"/>
@include('dashboard.alerts.feedback', ['field' => 'name'])
</div>
</div>
</div>
Validation rules were added to prevent errors in the form fields (see App\Http\Requests\UserRequest
). Note that these validation rules also apply for the user edit option.
public function rules()
{
return [
'name' => [
'required', 'min:3'
],
'email' => [
'required', 'email', Rule::unique((new User)->getTable())->ignore($this->route()->user->id ?? null)
],
'role_id' => [
'required', 'exists:'.(new Role)->getTable().',id'
],
'password' => [
$this->route()->user ? 'nullable' : 'required', 'confirmed', 'min:6'
]
];
}
/**
* Get the validation attributes that apply to the request.
*
* @return array
*/
public function attributes()
{
return [
'role_id' => 'role',
];
}
The policy which authorizes the user to access the user management pages is implemented in App\Policies\UserPolicy.php
.``
Once you add more users, the list will grow and for every user you will have edit and delete options (access these options by clicking the three dotted menu that appears at the end of every row).
All the sample code for the user management can be found in App\Http\Controllers\UserController
. See store method example bellow:
public function store(UserRequest $request, User $model)
{
$model->create($request->merge([
'picture' => $request->photo ? $request->photo->store('profile', 'public') : null,
'password' => Hash::make($request->get('password'))
])->all());
return redirect()->route('user.index')->withStatus(__('User successfully created.'));
}
The Pro theme also comes with a tag management option. To access this example, click the "Examples/Tag Management" link in the left sidebar or add /tag to the URL. In this section you can add and edit tags, but you can only delete them if they are not attached to any articles. You can add new ones by clicking the "Add tag" button (above the table on the right). You will then be directed to a form which allows you to add new tags. Although you can add in the form only the name and color of a tag, you can write your own migrations to extend this functionality.
public function destroy(Tag $tag)
{
if (!$tag->articles->isEmpty()) {
return redirect()->route('tag.index')->withErrors(__('This tag has articles attached and can\'t be deleted.'));
}
$tag->delete();
return redirect()->route('tag.index')->withStatus(__('Tag successfully deleted.'));
}
The policy which authorizes the user to access tags management pages is implemented in App\Policies\TagPolicy.php
.
Out of the box you will have an example of category management (for the cases in which you are developing a blog or a shop). To access this example, click the "Examples/Category Management" link in the left sidebar or add /category to the URL. You can add and edit categories here, but you can only delete them if they are not attached to any articles.
@if ($category->articles->isEmpty() && auth()->user()->can('delete', $category))
<button type="button" class="btn btn-danger btn-link" data-original-title="" title="" onclick="confirm('{{ __("Are you sure you want to delete this category?") }}') ? this.parentElement.submit() : ''">
<i class="material-icons">close</i>
<div class="ripple-container"></div>
</button>
@endif
The policy which authorizes the user on categories management pages is implemented in App\Policies\CategoryPolicy.php
.
Article management is the most advanced example included in the Pro theme, because every article has a picture, belongs to a category and has multiple tags. To access this example click the "Examples/Article Management" link in the left sidebar or add /article to the URL. Here you can manage the articles. A list of articles will appear once you start adding them (to access the add page click "Add article"). On the add page, besides the Name and Description fields (which are present in most of the CRUD examples) you can see a category dropdown, which contains the categories you added, a file input and a tag multi select. If you did not add any categories or tags, please go to the corresponding sections (category management, tag management) and add some.
The code for saving a new article is a bit different than before (see snippet bellow):
public function store(ArticleRequest $request, Article $model)
{
$article = $model->create($request->merge([
'picture' => $request->photo->store('pictures', 'public'),
'status' => $request->status ? 'published' : 'draft',
'show_on_homepage' => $request->show_on_homepage ? 1 : 0,
'publish_date' => $request->publish_date ? Carbon::parse($request->publish_date)->format('Y-m-d') : null,
'author_id' => auth()->user()->id
])->all());
$article->tags()->sync($request->get('tags'));
return redirect()->route('article.index')->withStatus(__('Article successfully created.'));
}
Notice how the picture and tags are easily saved in the database and on the disk.
Similar to all the examples included in the theme, this one also has validation rules in place. Note that the picture is mandatory only on the article creation. On the edit page, if no new picture is added, the old picture will not be modified.
public function rules()
{
return [
'title' => [
'required', 'min:3', Rule::unique((new Article)->getTable())->ignore($this->route()->article->id ?? null)
],
'category_id' => [
'required', 'exists:'.(new Category)->getTable().',id'
],
'content' => [
'required'
],
'tags' => [
'required'
],
'tags.*' => [
'exists:'.(new Tag)->getTable().',id'
],
'photo' => [
$this->route()->article ? 'nullable' : 'required', 'image'
],
'publish_date' => [
'required',
'date_format:d-m-Y'
]
];
}
In the article management we have an observer (app\Observers\ArticleObserver
) example. This observer handles the deletion of the picture from the disk when the article is deleted or when the picture is changed via the edit form. The observer also removes the association between the article and the tags.
public function deleting(Article $article)
{
File::delete(storage_path("/app/public/{$article->picture}"));
$article->tags()->detach();
}
The policy which authorizes the user on article management pages is implemented in App\Policies\ArticlePolicy.php
.
Material Blog PRO with Laravel has all the core features you need in a blog, right out of the box:
- A homepage which lists featured and latest articles
- A top authors section
- Articles listed by category, tag or author
- A search results page
- Article page (complete with related articles and a comment section)
The homepage is structured in three sections:
- the featured articles section. Featured articles are selected by the admin from the Material Dashboard admin panel
- a list of the latest articles
- a section with the most popular authors
In the App\Http\HomeController
you can see how data gets added to the page . "published", "publishedUntilToday" and "showHomepage" are local scopes and can be found in Article model. "userIsAuthor" is also a local scope which can be found in the User model.
public function index() { $featured_articles = \App\Article::published()->showHomepage()->publishedUntilToday()->take(4)->get(); $latest_articles = \App\Article::published()->publishedUntilToday()->orderBy('publish_date', 'desc')->take(3)->get(); $authors = \App\User::userIsAuthor()->take(4)->get();
return view('blog.home', compact(['featured_articles', 'latest_articles', 'authors']));
}
The Resources\Views\Blog\Home.blade.php
holds the information about featured articles, latest articles and top authors.
<h2 class="title">{{ __('Featured Articles') }}</h2> <div class="card card-plain card-blog"> @foreach ($featured_articles as $article) @include('blog._partials.featured_articles') @endforeach </div> </h2>
<div class="section"> <h2 class="title text-center">{{ __('Latest articles') }}</h2> <div class="row justify-content-center"> @foreach ($latest_articles as $article) @include('blog._partials.latest_articles') @endforeach <a href="{{ route('blog.article.index') }}" class="btn btn-rose btn-raised btn-round"> {{ __('View All') }} </a> </div> </div> @include('blog._partials.authors')
In this page you will find all the published articles in paginated display. To access the page you can click the button "ALL ARTICLES" from the category nav bar or you can access it directly by typing '/all_articles' in the URL.
For more information about this feature see App\Http\Blog\ArticleController.php
.
public function index(Article $model)
{
$articles = $model->with(['tags', 'category'])->paginate(10);
return view('blog.all_articles', ['articles' => $articles]);
}
In the Resources\Views\Blog\All_articles.blade.php
you can find all the articles.
<div class="container">
<div class="section">
<div class="container">
<div class="row">
<div class="col-md-10 ml-auto mr-auto">
<h2 class="title">{{ __('All Articles') }}</h2>
@include('blog._partials.article_full')
@include('blog._partials.pagination')
</div>
</div>
</div>
</div>
</div>
The article page has, besides the article content, a comment section and a more articles section.
In order to comment, you have to be logged in with a member type account. You can either go to the top menu and click on the "Login as" button or go directly to /login?role=1. To log in as a member, use the following credentials:
- member type - member@material.com with the password secret
The App\Http\Controllers\Blog\ArticleController
holds the show function, which handles the details about the article, the comments and the more articles section.
public function show(Article $article, Comment $modelComment) { $article = \App\Article::find($article->id); $moreArticles = \App\Article::published()->publishedUntilToday()->category($article->category_id)->orderBy('publish_date', 'desc')->take(3)->get();
return view('blog.show', compact(['article', 'moreArticles']));
}
The Resources\Views\Blog\Show.blade.php
holds the information about handling the details about the article, the comments and the more articles section.
You can filter pages by their author. You can find this functionality in App\Http\Blog\ArticlesAuthorController.php
.
public function index(Request $request, User $user) { $author = User::find($user->id); $articles = \App\Article::published()->publishedUntilToday()->author($user->id)->paginate(10);
return view('blog.articles_author', compact(['articles', 'author']));
}
The Resources\Views\Blog\Articles_author.blade.php
gets and shows the articles written by an author.
<div class="row">
<div class="col-md-9 text-left">
<h2 class="card-title"><span class="font-weight-light">{{ __('Articles by ') }}</span>{{ $user->name }}</h2>
<h4>{{ $user->about }}</h4>
</div>
<div class="col-md-3">
<div class="card-avatar">
<a href="{{ route('blog.author', $user->slug) }}">
<img class="img" src="{{ $user->profilePicture() }}">
</a>
<div class="ripple-container"></div>
</div>
</div>
</div>
The blog comes with a category filter option. To access this simply click on the category label next to a category.
You can find this functionality in App\Http\Blog\ArticlesCategoryController.php
.
public function index(Category $category) { $articles = \App\Article::published()->publishedUntilToday()->category($category->id)->paginate(10);
return view('blog.articles_category', compact(['articles', 'category']));
}
The Resources\Views\Blog\Articles_category.blade.php
gets and shows the articles that belong to a category.
<div class="row">
<div class="col-md-10 ml-auto mr-auto">
<h2 class="title">
{{ $category->name }}
</h2>
<h4>
{{ $category->description }}
</h4>
@include('blog._partials.article_full')
@include('blog._partials.pagination')
</div>
</div>
There is also an option to filter articles by tag. To access this simply click a tag label next to an article and it will take you to the articles filtered by tag page.
You can find this functionality in App\Http\Blog\ArticlesTagsController.php
.
public function index(Tag $tag) { $articles = \App\Article::published()->publishedUntilToday()->tag($tag->id)->paginate(10);
return view('blog.articles_tag', compact(['articles', 'tag']));
}
The Resources\Views\Blog\Articles_category.blade.php
gets and shows the articles that have a specified tag.
<div class="row">
<div class="col-md-10 ml-auto mr-auto">
<h2 class="card-title">{{ __('Articles by') }}<span style="background-color: {{ $tag->color }}; margin-left: 20px;" class="btn btn-round">{{ $tag->name }}</span></h2>
@include('blog._partials.article_full')
@include('blog._partials.pagination')
</div>
</div>
- Versions
- Demo
- Documentation
- File Structure
- Browser Support
- Resources
- Reporting Issues
- Licensing
- Useful Links
LARAVEL |
---|
Home Page | Category Page | Article Page |
---|---|---|
View More |
Register | Login | Dashboard |
---|---|---|
Profile Page | Users Page | Tables Page |
---|---|---|
The documentation for the Material Blog with Laravel is hosted at our website.
.
├── app
│ ├── Article.php
│ ├── Category.php
│ ├── Comment.php
│ ├── Console
│ │ └── Kernel.php
│ ├── Exceptions
│ │ └── Handler.php
│ ├── Http
│ │ ├── Controllers
│ │ │ ├── ArticleController.php
│ │ │ ├── Auth
│ │ │ │ ├── ForgotPasswordController.php
│ │ │ │ ├── LoginController.php
│ │ │ │ ├── RegisterController.php
│ │ │ │ ├── ResetPasswordController.php
│ │ │ │ └── VerificationController.php
│ │ │ ├── Blog
│ │ │ │ ├── ArticleController.php
│ │ │ │ ├── ArticlesAuthorController.php
│ │ │ │ ├── ArticlesCategoryController.php
│ │ │ │ ├── ArticlesSearchController.php
│ │ │ │ ├── ArticlesTagController.php
│ │ │ │ ├── BlogController.php
│ │ │ │ ├── CommentsController.php
│ │ │ │ └── NewsletterController.php
│ │ │ ├── CategoryController.php
│ │ │ ├── ComponentPagesController.php
│ │ │ ├── Controller.php
│ │ │ ├── ExamplePagesController.php
│ │ │ ├── FormPagesController.php
│ │ │ ├── HomeController.php
│ │ │ ├── MapPagesController.php
│ │ │ ├── ProfileController.php
│ │ │ ├── RoleController.php
│ │ │ ├── TablePagesController.php
│ │ │ ├── TagController.php
│ │ │ └── UserController.php
│ │ ├── Kernel.php
│ │ ├── Middleware
│ │ │ ├── Authenticate.php
│ │ │ ├── CheckForMaintenanceMode.php
│ │ │ ├── EncryptCookies.php
│ │ │ ├── RedirectIfAuthenticated.php
│ │ │ ├── TrimStrings.php
│ │ │ ├── TrustProxies.php
│ │ │ └── VerifyCsrfToken.php
│ │ └── Requests
│ │ ├── ArticleRequest.php
│ │ ├── CategoryRequest.php
│ │ ├── CommentsRequest.php
│ │ ├── NewsletterRequest.php
│ │ ├── PasswordRequest.php
│ │ ├── ProfileRequest.php
│ │ ├── RoleRequest.php
│ │ ├── TagRequest.php
│ │ └── UserRequest.php
│ ├── Observers
│ │ ├── ArticleObserver.php
│ │ └── UserObserver.php
│ ├── Policies
│ │ ├── ArticlePolicy.php
│ │ ├── CategoryPolicy.php
│ │ ├── RolePolicy.php
│ │ ├── TagPolicy.php
│ │ └── UserPolicy.php
│ ├── Providers
│ │ ├── AppServiceProvider.php
│ │ ├── AuthServiceProvider.php
│ │ ├── BroadcastServiceProvider.php
│ │ ├── EventServiceProvider.php
│ │ └── RouteServiceProvider.php
│ ├── Role.php
│ ├── Rules
│ │ └── CurrentPasswordCheckRule.php
│ ├── Tag.php
│ └── User.php
├── artisan
├── bootstrap
│ ├── app.php
│ └── cache
│ ├── config.php
│ ├── .gitignore
│ ├── packages.php
│ ├── routes.php
│ └── services.php
├── changelog.md
├── composer.json
├── composer.lock
├── config
│ ├── app.php
│ ├── articles.php
│ ├── auth.php
│ ├── broadcasting.php
│ ├── cache.php
│ ├── database.php
│ ├── filesystems.php
│ ├── hashing.php
│ ├── logging.php
│ ├── mail.php
│ ├── newsletter.php
│ ├── queue.php
│ ├── services.php
│ ├── session.php
│ └── view.php
├── database
│ ├── factories
│ │ └── UserFactory.php
│ ├── .gitignore
│ ├── migrations
│ │ ├── 2014_10_12_100000_create_password_resets_table.php
│ │ ├── 2019_01_15_100000_create_roles_table.php
│ │ ├── 2019_01_15_110000_create_users_table.php
│ │ ├── 2019_01_17_121504_create_categories_table.php
│ │ ├── 2019_01_21_130422_create_tags_table.php
│ │ ├── 2019_01_21_163402_create_article_table.php
│ │ ├── 2019_01_21_163414_create_article_tag_table.php
│ │ └── 2019_09_09_085054_create_comments_table.php
│ └── seeds
│ ├── ArticlesTableSeeder.php
│ ├── CategoriesTableSeeder.php
│ ├── DatabaseSeeder.php
│ ├── RolesTableSeeder.php
│ ├── TagsTableSeeder.php
│ └── UsersTableSeeder.php
├── .editorconfig
├── .env
├── .env.example
├── .git
│ ├── branches
│ ├── COMMIT_EDITMSG
│ ├── config
│ ├── description
│ ├── FETCH_HEAD
│ ├── HEAD
│ ├── hooks
│ │ ├── applypatch-msg.sample
│ │ ├── commit-msg.sample
│ │ ├── fsmonitor-watchman.sample
│ │ ├── post-update.sample
│ │ ├── pre-applypatch.sample
│ │ ├── pre-commit.sample
│ │ ├── prepare-commit-msg.sample
│ │ ├── pre-push.sample
│ │ ├── pre-rebase.sample
│ │ ├── pre-receive.sample
│ │ └── update.sample
│ ├── index
│ ├── info
│ │ └── exclude
│ ├── logs
│ │ ├── HEAD
│ │ └── refs
│ │ ├── heads
│ │ │ ├── demo
│ │ │ ├── develop
│ │ │ └── master
│ │ ├── remotes
│ │ │ └── origin
│ │ │ ├── demo
│ │ │ ├── develop
│ │ │ ├── HEAD
│ │ │ └── master
│ │ └── stash
│ ├── objects
│ │ ├── info
│ │ └── pack
│ ├── ORIG_HEAD
│ ├── packed-refs
│ └── refs
│ ├── heads
│ │ ├── demo
│ │ ├── develop
│ │ └── master
│ ├── remotes
│ │ └── origin
│ │ ├── demo
│ │ ├── develop
│ │ ├── HEAD
│ │ └── master
│ ├── stash
│ └── tags
├── .gitattributes
├── .gitignore
├── ISSUE_TEMPLATE.md
├── package.json
├── phpunit.xml
├── public
│ ├── css
│ │ └── app.css
│ ├── docs
│ │ └── documentation.html
│ ├── favicon.ico
│ ├── .htaccess
│ ├── index.php
│ ├── js
│ │ └── app.js
│ ├── material
│ │ ├── css
│ │ │ ├── material-dashboard.css
│ │ │ ├── material-dashboard.css.map
│ │ │ ├── material-dashboard.min.css
│ │ │ ├── material-kit.css
│ │ │ ├── material-kit.css.map
│ │ │ ├── material-kit.min.css
│ │ │ ├── partials
│ │ │ │ ├── dashboard
│ │ │ │ │ └── core
│ │ │ │ │ └── bootstrap
│ │ │ │ │ └── scss
│ │ │ │ │ ├── bootstrap.css
│ │ │ │ │ ├── bootstrap.css.map
│ │ │ │ │ ├── bootstrap-grid.css
│ │ │ │ │ ├── bootstrap-grid.css.map
│ │ │ │ │ ├── bootstrap-reboot.css
│ │ │ │ │ └── bootstrap-reboot.css.map
│ │ │ │ └── kit
│ │ │ │ └── core
│ │ │ │ └── bootstrap
│ │ │ │ └── scss
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── bootstrap.css.map
│ │ │ │ ├── bootstrap-grid.css
│ │ │ │ ├── bootstrap-grid.css.map
│ │ │ │ ├── bootstrap-reboot.css
│ │ │ │ └── bootstrap-reboot.css.map
│ │ │ ├── quill.core.css
│ │ │ └── quill.snow.css
│ │ ├── demo
│ │ │ ├── demo.css
│ │ │ ├── demo.js
│ │ │ ├── modernizr.js
│ │ │ ├── vertical-nav.css
│ │ │ └── vertical-nav.js
│ │ ├── .DS_Store
│ │ ├── img
│ │ │ ├── apple-icon.png
│ │ │ ├── arrow-left.cur
│ │ │ ├── arrow-left.png
│ │ │ ├── arrow-right.cur
│ │ │ ├── arrow-right.png
│ │ │ ├── bg0.jpg
│ │ │ ├── bg10.jpg
│ │ │ ├── bg11.jpg
│ │ │ ├── bg12.jpg
│ │ │ ├── bg2.jpg
│ │ │ ├── bg3.jpg
│ │ │ ├── bg5.jpg
│ │ │ ├── bg6.jpg
│ │ │ ├── bg7.jpg
│ │ │ ├── bg8.jpg
│ │ │ ├── bg9.jpg
│ │ │ ├── bg.jpg
│ │ │ ├── bg-pricing.jpg
│ │ │ ├── card-1.jpeg
│ │ │ ├── card-1.jpg
│ │ │ ├── card-2.jpeg
│ │ │ ├── card-2.jpg
│ │ │ ├── card-3.jpeg
│ │ │ ├── card-3.jpg
│ │ │ ├── cards-test.png
│ │ │ ├── city-profile.jpg
│ │ │ ├── clint-mckoy.jpg
│ │ │ ├── creative-logo.png
│ │ │ ├── Creative-TimLOGO2.png
│ │ │ ├── default-avatar.png
│ │ │ ├── dg10.jpg
│ │ │ ├── dg1.jpg
│ │ │ ├── dg2.jpg
│ │ │ ├── dg3.jpg
│ │ │ ├── dg6.jpg
│ │ │ ├── dg9.jpg
│ │ │ ├── example-pages
│ │ │ │ ├── ex-about-us.jpg
│ │ │ │ ├── ex-blog-post.jpg
│ │ │ │ ├── ex-blog-posts.jpg
│ │ │ │ ├── ex-contact.jpg
│ │ │ │ ├── ex-landing.jpg
│ │ │ │ ├── ex-login.jpg
│ │ │ │ ├── ex-pricing.jpg
│ │ │ │ ├── ex-product.jpg
│ │ │ │ ├── ex-profile.jpg
│ │ │ │ ├── ex-register.jpg
│ │ │ │ ├── harvard.jpg
│ │ │ │ ├── microsoft.jpg
│ │ │ │ ├── stanford.jpg
│ │ │ │ └── vodafone.jpg
│ │ │ ├── examples
│ │ │ │ ├── bg1.jpg
│ │ │ │ ├── bg2.jpg
│ │ │ │ ├── blog1.jpg
│ │ │ │ ├── blog2.jpg
│ │ │ │ ├── blog3.jpg
│ │ │ │ ├── blog4.jpg
│ │ │ │ ├── blog5.jpg
│ │ │ │ ├── blog6.jpg
│ │ │ │ ├── blog7.jpg
│ │ │ │ ├── blog8.jpg
│ │ │ │ ├── card-blog1.jpg
│ │ │ │ ├── card-blog2.jpg
│ │ │ │ ├── card-blog3.jpg
│ │ │ │ ├── card-blog4.jpg
│ │ │ │ ├── card-blog5.jpg
│ │ │ │ ├── card-blog6.jpg
│ │ │ │ ├── card-blog8.jpg
│ │ │ │ ├── card-product1.jpg
│ │ │ │ ├── card-product2.jpg
│ │ │ │ ├── card-product3.jpg
│ │ │ │ ├── card-product4.jpg
│ │ │ │ ├── card-profile1.jpg
│ │ │ │ ├── card-profile2.jpg
│ │ │ │ ├── card-profile4.jpg
│ │ │ │ ├── card-profile5.jpg
│ │ │ │ ├── card-profile6.jpg
│ │ │ │ ├── card-profile7.jpg
│ │ │ │ ├── card-project1.jpg
│ │ │ │ ├── card-project2.jpg
│ │ │ │ ├── card-project3.jpg
│ │ │ │ ├── card-project4.jpg
│ │ │ │ ├── card-project5.jpg
│ │ │ │ ├── card-project6.jpg
│ │ │ │ ├── city.jpg
│ │ │ │ ├── clark-street-merc.jpg
│ │ │ │ ├── clem-onojegaw.jpg
│ │ │ │ ├── clem-onojeghuo.jpg
│ │ │ │ ├── clem-onojeghuou.jpg
│ │ │ │ ├── color1.jpg
│ │ │ │ ├── color2.jpg
│ │ │ │ ├── color3.jpg
│ │ │ │ ├── cynthia-del-rio.jpg
│ │ │ │ ├── darren-coleshill.jpg
│ │ │ │ ├── dolce.jpg
│ │ │ │ ├── ecommerce-header.jpg
│ │ │ │ ├── ecommerce-tips2.jpg
│ │ │ │ ├── gucci.jpg
│ │ │ │ ├── mariya-georgieva.jpg
│ │ │ │ ├── office1.jpg
│ │ │ │ ├── office2.jpg
│ │ │ │ ├── office3.jpg
│ │ │ │ ├── office4.jpg
│ │ │ │ ├── office5.jpg
│ │ │ │ ├── olu-eletu.jpg
│ │ │ │ ├── product1.jpg
│ │ │ │ ├── product2.jpg
│ │ │ │ ├── product3.jpg
│ │ │ │ ├── product4.jpg
│ │ │ │ ├── profile_city.jpg
│ │ │ │ ├── slim-emcee-ug-the-poet-truth_from_africa_photography.jpg
│ │ │ │ ├── studio-1.jpg
│ │ │ │ ├── studio-2.jpg
│ │ │ │ ├── studio-3.jpg
│ │ │ │ ├── studio-4.jpg
│ │ │ │ ├── studio-5.jpg
│ │ │ │ ├── suit-1.jpg
│ │ │ │ ├── suit-2.jpg
│ │ │ │ ├── suit-3.jpg
│ │ │ │ ├── suit-4.jpg
│ │ │ │ ├── suit-5.jpg
│ │ │ │ ├── suit-6.jpg
│ │ │ │ └── tom-ford.jpg
│ │ │ ├── faces
│ │ │ │ ├── avatar.jpg
│ │ │ │ ├── camp.jpg
│ │ │ │ ├── card-profile1-square.jpg
│ │ │ │ ├── card-profile2-square.jpg
│ │ │ │ ├── card-profile4-square.jpg
│ │ │ │ ├── card-profile5-square.jpg
│ │ │ │ ├── card-profile6-square.jpg
│ │ │ │ ├── christian.jpg
│ │ │ │ ├── kendall.jpg
│ │ │ │ └── marc.jpg
│ │ │ ├── favicon.png
│ │ │ ├── features-5.jpg
│ │ │ ├── flags
│ │ │ │ ├── AD.png
│ │ │ │ ├── AE.png
│ │ │ │ ├── AG.png
│ │ │ │ ├── AM.png
│ │ │ │ ├── AR.png
│ │ │ │ ├── AT.png
│ │ │ │ ├── AU.png
│ │ │ │ ├── BE.png
│ │ │ │ ├── BF.png
│ │ │ │ ├── BG.png
│ │ │ │ ├── BO.png
│ │ │ │ ├── BR.png
│ │ │ │ ├── CA.png
│ │ │ │ ├── CD.png
│ │ │ │ ├── CG.png
│ │ │ │ ├── CH.png
│ │ │ │ ├── CL.png
│ │ │ │ ├── CM.png
│ │ │ │ ├── CN.png
│ │ │ │ ├── CO.png
│ │ │ │ ├── CZ.png
│ │ │ │ ├── DE.png
│ │ │ │ ├── DJ.png
│ │ │ │ ├── DK.png
│ │ │ │ ├── DZ.png
│ │ │ │ ├── EE.png
│ │ │ │ ├── EG.png
│ │ │ │ ├── ES.png
│ │ │ │ ├── FI.png
│ │ │ │ ├── FR.png
│ │ │ │ ├── GA.png
│ │ │ │ ├── GB.png
│ │ │ │ ├── GM.png
│ │ │ │ ├── GT.png
│ │ │ │ ├── HN.png
│ │ │ │ ├── HT.png
│ │ │ │ ├── HU.png
│ │ │ │ ├── ID.png
│ │ │ │ ├── IE.png
│ │ │ │ ├── IL.png
│ │ │ │ ├── IN.png
│ │ │ │ ├── IQ.png
│ │ │ │ ├── IR.png
│ │ │ │ ├── IT.png
│ │ │ │ ├── JM.png
│ │ │ │ ├── JO.png
│ │ │ │ ├── JP.png
│ │ │ │ ├── KG.png
│ │ │ │ ├── KN.png
│ │ │ │ ├── KP.png
│ │ │ │ ├── KR.png
│ │ │ │ ├── KW.png
│ │ │ │ ├── KZ.png
│ │ │ │ ├── LA.png
│ │ │ │ ├── LB.png
│ │ │ │ ├── LC.png
│ │ │ │ ├── LS.png
│ │ │ │ ├── LU.png
│ │ │ │ ├── LV.png
│ │ │ │ ├── MG.png
│ │ │ │ ├── MK.png
│ │ │ │ ├── ML.png
│ │ │ │ ├── MM.png
│ │ │ │ ├── MT.png
│ │ │ │ ├── MX.png
│ │ │ │ ├── NA.png
│ │ │ │ ├── NE.png
│ │ │ │ ├── NG.png
│ │ │ │ ├── NI.png
│ │ │ │ ├── NL.png
│ │ │ │ ├── NO.png
│ │ │ │ ├── OM.png
│ │ │ │ ├── PA.png
│ │ │ │ ├── PE.png
│ │ │ │ ├── PG.png
│ │ │ │ ├── PK.png
│ │ │ │ ├── PL.png
│ │ │ │ ├── PT.png
│ │ │ │ ├── PY.png
│ │ │ │ ├── QA.png
│ │ │ │ ├── RO.png
│ │ │ │ ├── RU.png
│ │ │ │ ├── RW.png
│ │ │ │ ├── SA.png
│ │ │ │ ├── SE.png
│ │ │ │ ├── SG.png
│ │ │ │ ├── SL.png
│ │ │ │ ├── SN.png
│ │ │ │ ├── SO.png
│ │ │ │ ├── SV.png
│ │ │ │ ├── TD.png
│ │ │ │ ├── TJ.png
│ │ │ │ ├── TL.png
│ │ │ │ ├── TR.png
│ │ │ │ ├── TZ.png
│ │ │ │ ├── UA.png
│ │ │ │ ├── US.png
│ │ │ │ ├── VE.png
│ │ │ │ ├── VN.png
│ │ │ │ └── YE.png
│ │ │ ├── header-doc.jpg
│ │ │ ├── image_placeholder.jpg
│ │ │ ├── laravel.svg
│ │ │ ├── loading-bubbles.svg
│ │ │ ├── lock.jpg
│ │ │ ├── login.jpg
│ │ │ ├── logo.png
│ │ │ ├── mask.png
│ │ │ ├── new_logo.png
│ │ │ ├── office2.jpg
│ │ │ ├── placeholder.jpg
│ │ │ ├── product1.jpg
│ │ │ ├── product2.jpg
│ │ │ ├── product3.jpg
│ │ │ ├── register.jpg
│ │ │ ├── responsive-nav.gif
│ │ │ ├── section-components
│ │ │ │ ├── coloured-card.jpg
│ │ │ │ ├── coloured-card-with-btn.jpg
│ │ │ │ ├── ipad-comments.jpg
│ │ │ │ ├── ipad-table.jpg
│ │ │ │ ├── laptop-basics.png
│ │ │ │ ├── pin-btn.jpg
│ │ │ │ ├── presentation-ipad.jpg
│ │ │ │ ├── responsive.png
│ │ │ │ ├── share-btn.jpg
│ │ │ │ ├── social-row.jpg
│ │ │ │ └── table.jpg
│ │ │ ├── sections
│ │ │ │ ├── b_1.jpg
│ │ │ │ ├── b_2.jpg
│ │ │ │ ├── b_3.jpg
│ │ │ │ ├── b_4.jpg
│ │ │ │ ├── f_1.jpg
│ │ │ │ ├── f_2.jpg
│ │ │ │ ├── f_3.jpg
│ │ │ │ ├── f_4.jpg
│ │ │ │ ├── f_5.jpg
│ │ │ │ ├── h_1.jpg
│ │ │ │ ├── h_2.jpg
│ │ │ │ ├── h_3.jpg
│ │ │ │ ├── h_4.jpg
│ │ │ │ ├── iphone2.png
│ │ │ │ ├── iphone.png
│ │ │ │ ├── m_1.jpg
│ │ │ │ ├── m_2.jpg
│ │ │ │ ├── p_1.jpg
│ │ │ │ ├── p_2.jpg
│ │ │ │ ├── p_3.jpg
│ │ │ │ ├── p_4.jpg
│ │ │ │ ├── p_5.jpg
│ │ │ │ ├── pro_1.jpg
│ │ │ │ ├── pro_2.jpg
│ │ │ │ ├── pro_3.jpg
│ │ │ │ ├── pro_4.jpg
│ │ │ │ ├── t_1.jpg
│ │ │ │ ├── t_2.jpg
│ │ │ │ ├── t_3.jpg
│ │ │ │ ├── team_1.jpg
│ │ │ │ ├── team_2.jpg
│ │ │ │ ├── team_3.jpg
│ │ │ │ ├── team_4.jpg
│ │ │ │ └── team_5.jpg
│ │ │ ├── sidebar-1.jpg
│ │ │ ├── sidebar-2.jpg
│ │ │ ├── sidebar-3.jpg
│ │ │ ├── sidebar-4.jpg
│ │ │ ├── test1.jpg
│ │ │ ├── test2.jpg
│ │ │ ├── test3.jpg
│ │ │ ├── tim-logo.png
│ │ │ └── world2.png
│ │ ├── index.html
│ │ ├── js
│ │ │ ├── application.js
│ │ │ ├── article.js
│ │ │ ├── core
│ │ │ │ ├── bootstrap-material-design.min.js
│ │ │ │ ├── jquery.min.js
│ │ │ │ └── popper.min.js
│ │ │ ├── material-dashboard.js
│ │ │ ├── material-dashboard.js.map
│ │ │ ├── material-dashboard.min.js
│ │ │ ├── material-kit.js
│ │ │ ├── material-kit.js.map
│ │ │ ├── material-kit.min.js
│ │ │ ├── plugins
│ │ │ │ ├── arrive.min.js
│ │ │ │ ├── bootstrap-datetimepicker.js
│ │ │ │ ├── bootstrap-datetimepicker.min.js
│ │ │ │ ├── bootstrap-notify.js
│ │ │ │ ├── bootstrap-selectpicker.js
│ │ │ │ ├── bootstrap-tagsinput.js
│ │ │ │ ├── chartist.min.js
│ │ │ │ ├── fullcalendar.min.js
│ │ │ │ ├── jasny-bootstrap.min.js
│ │ │ │ ├── jquery.bootstrap-wizard.js
│ │ │ │ ├── jquery.dataTables.min.js
│ │ │ │ ├── jquery.flexisel.js
│ │ │ │ ├── jquery-jvectormap.js
│ │ │ │ ├── jquery.sharrre.js
│ │ │ │ ├── jquery.tagsinput.js
│ │ │ │ ├── jquery.validate.min.js
│ │ │ │ ├── moment.min.js
│ │ │ │ ├── nouislider.min.js
│ │ │ │ ├── perfect-scrollbar.jquery.min.js
│ │ │ │ └── sweetalert2.js
│ │ │ └── quill.min.js
│ │ └── scss
│ │ ├── material-dashboard
│ │ │ ├── _alerts.scss
│ │ │ ├── _badges.scss
│ │ │ ├── bootstrap
│ │ │ │ └── scss
│ │ │ │ ├── _alert.scss
│ │ │ │ ├── _badge.scss
│ │ │ │ ├── bootstrap-grid.scss
│ │ │ │ ├── bootstrap-reboot.scss
│ │ │ │ ├── bootstrap.scss
│ │ │ │ ├── _breadcrumb.scss
│ │ │ │ ├── _button-group.scss
│ │ │ │ ├── _buttons.scss
│ │ │ │ ├── _card.scss
│ │ │ │ ├── _carousel.scss
│ │ │ │ ├── _close.scss
│ │ │ │ ├── _code.scss
│ │ │ │ ├── _custom-forms.scss
│ │ │ │ ├── _dropdown.scss
│ │ │ │ ├── _forms.scss
│ │ │ │ ├── _functions.scss
│ │ │ │ ├── _grid.scss
│ │ │ │ ├── _images.scss
│ │ │ │ ├── _input-group.scss
│ │ │ │ ├── _jumbotron.scss
│ │ │ │ ├── _list-group.scss
│ │ │ │ ├── _media.scss
│ │ │ │ ├── mixins
│ │ │ │ │ ├── _alert.scss
│ │ │ │ │ ├── _background-variant.scss
│ │ │ │ │ ├── _badge.scss
│ │ │ │ │ ├── _border-radius.scss
│ │ │ │ │ ├── _box-shadow.scss
│ │ │ │ │ ├── _breakpoints.scss
│ │ │ │ │ ├── _buttons.scss
│ │ │ │ │ ├── _caret.scss
│ │ │ │ │ ├── _clearfix.scss
│ │ │ │ │ ├── _float.scss
│ │ │ │ │ ├── _forms.scss
│ │ │ │ │ ├── _gradients.scss
│ │ │ │ │ ├── _grid-framework.scss
│ │ │ │ │ ├── _grid.scss
│ │ │ │ │ ├── _hover.scss
│ │ │ │ │ ├── _image.scss
│ │ │ │ │ ├── _list-group.scss
│ │ │ │ │ ├── _lists.scss
│ │ │ │ │ ├── _navbar-align.scss
│ │ │ │ │ ├── _nav-divider.scss
│ │ │ │ │ ├── _pagination.scss
│ │ │ │ │ ├── _reset-text.scss
│ │ │ │ │ ├── _resize.scss
│ │ │ │ │ ├── _screen-reader.scss
│ │ │ │ │ ├── _size.scss
│ │ │ │ │ ├── _table-row.scss
│ │ │ │ │ ├── _text-emphasis.scss
│ │ │ │ │ ├── _text-hide.scss
│ │ │ │ │ ├── _text-truncate.scss
│ │ │ │ │ ├── _transition.scss
│ │ │ │ │ └── _visibility.scss
│ │ │ │ ├── _mixins.scss
│ │ │ │ ├── _modal.scss
│ │ │ │ ├── _navbar.scss
│ │ │ │ ├── _nav.scss
│ │ │ │ ├── _pagination.scss
│ │ │ │ ├── _popover.scss
│ │ │ │ ├── _print.scss
│ │ │ │ ├── _progress.scss
│ │ │ │ ├── _reboot.scss
│ │ │ │ ├── _root.scss
│ │ │ │ ├── _tables.scss
│ │ │ │ ├── _tooltip.scss
│ │ │ │ ├── _transitions.scss
│ │ │ │ ├── _type.scss
│ │ │ │ ├── utilities
│ │ │ │ │ ├── _align.scss
│ │ │ │ │ ├── _background.scss
│ │ │ │ │ ├── _borders.scss
│ │ │ │ │ ├── _clearfix.scss
│ │ │ │ │ ├── _display.scss
│ │ │ │ │ ├── _embed.scss
│ │ │ │ │ ├── _flex.scss
│ │ │ │ │ ├── _float.scss
│ │ │ │ │ ├── _position.scss
│ │ │ │ │ ├── _screenreaders.scss
│ │ │ │ │ ├── _sizing.scss
│ │ │ │ │ ├── _spacing.scss
│ │ │ │ │ ├── _text.scss
│ │ │ │ │ └── _visibility.scss
│ │ │ │ ├── _utilities.scss
│ │ │ │ └── _variables.scss
│ │ │ ├── _buttons.scss
│ │ │ ├── cards
│ │ │ │ ├── _card-background.scss
│ │ │ │ ├── _card-blog.scss
│ │ │ │ ├── _card-collapse.scss
│ │ │ │ ├── _card-contact.scss
│ │ │ │ ├── _card-form-horizontal.scss
│ │ │ │ ├── _card-plain-extend.scss
│ │ │ │ ├── _card-plain.scss
│ │ │ │ ├── _card-pricing.scss
│ │ │ │ ├── _card-product.scss
│ │ │ │ ├── _card-profile.scss
│ │ │ │ ├── _card-rotate.scss
│ │ │ │ ├── _card-signup.scss
│ │ │ │ ├── _card-stats.scss
│ │ │ │ └── _card-testimonials.scss
│ │ │ ├── _cards.scss
│ │ │ ├── _checkboxes.scss
│ │ │ ├── _core-bootstrap.scss
│ │ │ ├── _dropdown.scss
│ │ │ ├── _example-pages.scss
│ │ │ ├── _fixed-plugin.scss
│ │ │ ├── _footers-extend.scss
│ │ │ ├── _footers.scss
│ │ │ ├── _forms-extend.scss
│ │ │ ├── _forms.scss
│ │ │ ├── _headers.scss
│ │ │ ├── _images.scss
│ │ │ ├── _info-areas.scss
│ │ │ ├── _input-group.scss
│ │ │ ├── _misc-extend.scss
│ │ │ ├── _misc.scss
│ │ │ ├── mixins
│ │ │ │ ├── _alert.scss
│ │ │ │ ├── _animations.scss
│ │ │ │ ├── _breakpoints.scss
│ │ │ │ ├── _buttons.scss
│ │ │ │ ├── _chartist.scss
│ │ │ │ ├── _colored-shadows.scss
│ │ │ │ ├── _drawer.scss
│ │ │ │ ├── _forms.scss
│ │ │ │ ├── _hover.scss
│ │ │ │ ├── _layout.scss
│ │ │ │ ├── _navbar-colors.scss
│ │ │ │ ├── _navs.scss
│ │ │ │ ├── _sidebar-color.scss
│ │ │ │ ├── _social-buttons.scss
│ │ │ │ ├── _transparency.scss
│ │ │ │ ├── _type.scss
│ │ │ │ ├── _utilities.scss
│ │ │ │ ├── _variables.scss
│ │ │ │ └── _vendor-prefixes.scss
│ │ │ ├── _mixins.scss
│ │ │ ├── _modal.scss
│ │ │ ├── _navbar.scss
│ │ │ ├── _pages.scss
│ │ │ ├── _pagination.scss
│ │ │ ├── _pills.scss
│ │ │ ├── plugins
│ │ │ │ ├── _animate.scss
│ │ │ │ ├── _chartist.scss
│ │ │ │ ├── _datatables.net.scss
│ │ │ │ ├── _fullcalendar.scss
│ │ │ │ ├── _jquery.jvectormap.scss
│ │ │ │ ├── _perfect-scrollbar.scss
│ │ │ │ ├── _plugin-bootstrap-select.scss
│ │ │ │ ├── _plugin-datetime-picker.scss
│ │ │ │ ├── _plugin-fileupload.scss
│ │ │ │ ├── _plugin-flexisel.scss
│ │ │ │ ├── _plugin-nouislider.scss
│ │ │ │ ├── _plugin-tagsinput.scss
│ │ │ │ ├── _sweetalert2.scss
│ │ │ │ └── _wizard-card.scss
│ │ │ ├── _popover.scss
│ │ │ ├── _popups.scss
│ │ │ ├── _progress.scss
│ │ │ ├── _radios.scss
│ │ │ ├── _responsive.scss
│ │ │ ├── _ripples.scss
│ │ │ ├── _rtl.scss
│ │ │ ├── _sidebar-and-main-panel.scss
│ │ │ ├── _social-buttons.scss
│ │ │ ├── _tables.scss
│ │ │ ├── _tabs.scss
│ │ │ ├── _timeline.scss
│ │ │ ├── _togglebutton.scss
│ │ │ ├── _tooltip.scss
│ │ │ ├── _type.scss
│ │ │ ├── variables
│ │ │ │ ├── _body.scss
│ │ │ │ ├── _bootstrap-material-design-base.scss
│ │ │ │ ├── _bootstrap-material-design.scss
│ │ │ │ ├── _brand.scss
│ │ │ │ ├── _buttons.scss
│ │ │ │ ├── _card.scss
│ │ │ │ ├── _code.scss
│ │ │ │ ├── _colors-map.scss
│ │ │ │ ├── _colors.scss
│ │ │ │ ├── _custom-forms.scss
│ │ │ │ ├── _drawer.scss
│ │ │ │ ├── _dropdown.scss
│ │ │ │ ├── _forms.scss
│ │ │ │ ├── _layout.scss
│ │ │ │ ├── _list-group.scss
│ │ │ │ ├── _menu.scss
│ │ │ │ ├── _modals.scss
│ │ │ │ ├── _nav.scss
│ │ │ │ ├── _pagination.scss
│ │ │ │ ├── _shadow.scss
│ │ │ │ ├── _snackbar.scss
│ │ │ │ ├── _spacing.scss
│ │ │ │ ├── _state.scss
│ │ │ │ ├── _tables.scss
│ │ │ │ ├── _tooltip.scss
│ │ │ │ └── _type.scss
│ │ │ └── _variables.scss
│ │ ├── material-dashboard.scss
│ │ ├── material-kit
│ │ │ ├── _alerts.scss
│ │ │ ├── _badges.scss
│ │ │ ├── bootstrap
│ │ │ │ └── scss
│ │ │ │ ├── _alert.scss
│ │ │ │ ├── _badge.scss
│ │ │ │ ├── bootstrap-grid.scss
│ │ │ │ ├── bootstrap-reboot.scss
│ │ │ │ ├── bootstrap.scss
│ │ │ │ ├── _breadcrumb.scss
│ │ │ │ ├── _button-group.scss
│ │ │ │ ├── _buttons.scss
│ │ │ │ ├── _card.scss
│ │ │ │ ├── _carousel.scss
│ │ │ │ ├── _close.scss
│ │ │ │ ├── _code.scss
│ │ │ │ ├── _custom-forms.scss
│ │ │ │ ├── _dropdown.scss
│ │ │ │ ├── _forms.scss
│ │ │ │ ├── _functions.scss
│ │ │ │ ├── _grid.scss
│ │ │ │ ├── _images.scss
│ │ │ │ ├── _input-group.scss
│ │ │ │ ├── _jumbotron.scss
│ │ │ │ ├── _list-group.scss
│ │ │ │ ├── _media.scss
│ │ │ │ ├── mixins
│ │ │ │ │ ├── _alert.scss
│ │ │ │ │ ├── _background-variant.scss
│ │ │ │ │ ├── _badge.scss
│ │ │ │ │ ├── _border-radius.scss
│ │ │ │ │ ├── _box-shadow.scss
│ │ │ │ │ ├── _breakpoints.scss
│ │ │ │ │ ├── _buttons.scss
│ │ │ │ │ ├── _caret.scss
│ │ │ │ │ ├── _clearfix.scss
│ │ │ │ │ ├── _float.scss
│ │ │ │ │ ├── _forms.scss
│ │ │ │ │ ├── _gradients.scss
│ │ │ │ │ ├── _grid-framework.scss
│ │ │ │ │ ├── _grid.scss
│ │ │ │ │ ├── _hover.scss
│ │ │ │ │ ├── _image.scss
│ │ │ │ │ ├── _list-group.scss
│ │ │ │ │ ├── _lists.scss
│ │ │ │ │ ├── _navbar-align.scss
│ │ │ │ │ ├── _nav-divider.scss
│ │ │ │ │ ├── _pagination.scss
│ │ │ │ │ ├── _reset-text.scss
│ │ │ │ │ ├── _resize.scss
│ │ │ │ │ ├── _screen-reader.scss
│ │ │ │ │ ├── _size.scss
│ │ │ │ │ ├── _table-row.scss
│ │ │ │ │ ├── _text-emphasis.scss
│ │ │ │ │ ├── _text-hide.scss
│ │ │ │ │ ├── _text-truncate.scss
│ │ │ │ │ ├── _transition.scss
│ │ │ │ │ └── _visibility.scss
│ │ │ │ ├── _mixins.scss
│ │ │ │ ├── _modal.scss
│ │ │ │ ├── _navbar.scss
│ │ │ │ ├── _nav.scss
│ │ │ │ ├── _pagination.scss
│ │ │ │ ├── _popover.scss
│ │ │ │ ├── _print.scss
│ │ │ │ ├── _progress.scss
│ │ │ │ ├── _reboot.scss
│ │ │ │ ├── _root.scss
│ │ │ │ ├── _tables.scss
│ │ │ │ ├── _tooltip.scss
│ │ │ │ ├── _transitions.scss
│ │ │ │ ├── _type.scss
│ │ │ │ ├── utilities
│ │ │ │ │ ├── _align.scss
│ │ │ │ │ ├── _background.scss
│ │ │ │ │ ├── _borders.scss
│ │ │ │ │ ├── _clearfix.scss
│ │ │ │ │ ├── _display.scss
│ │ │ │ │ ├── _embed.scss
│ │ │ │ │ ├── _flex.scss
│ │ │ │ │ ├── _float.scss
│ │ │ │ │ ├── _position.scss
│ │ │ │ │ ├── _screenreaders.scss
│ │ │ │ │ ├── _sizing.scss
│ │ │ │ │ ├── _spacing.scss
│ │ │ │ │ ├── _text.scss
│ │ │ │ │ └── _visibility.scss
│ │ │ │ ├── _utilities.scss
│ │ │ │ └── _variables.scss
│ │ │ ├── _buttons.scss
│ │ │ ├── cards
│ │ │ │ ├── _card-background.scss
│ │ │ │ ├── _card-blog.scss
│ │ │ │ ├── _card-carousel.scss
│ │ │ │ ├── _card-collapse.scss
│ │ │ │ ├── _card-contact.scss
│ │ │ │ ├── _card-form-horizontal.scss
│ │ │ │ ├── _card-login.scss
│ │ │ │ ├── _card-plain.scss
│ │ │ │ ├── _card-pricing.scss
│ │ │ │ ├── _card-product.scss
│ │ │ │ ├── _card-profile.scss
│ │ │ │ ├── _card-rotate.scss
│ │ │ │ └── _card-testimonials.scss
│ │ │ ├── _cards.scss
│ │ │ ├── _carousel.scss
│ │ │ ├── _checkboxes.scss
│ │ │ ├── _core-bootstrap.scss
│ │ │ ├── _custom-forms.scss
│ │ │ ├── _drawer.scss
│ │ │ ├── _dropdown.scss
│ │ │ ├── _example-pages-extend.scss
│ │ │ ├── _example-pages.scss
│ │ │ ├── _fileupload.scss
│ │ │ ├── _footers.scss
│ │ │ ├── _forms.scss
│ │ │ ├── _headers.scss
│ │ │ ├── _images.scss
│ │ │ ├── _info-areas.scss
│ │ │ ├── _input-group.scss
│ │ │ ├── _layout.scss
│ │ │ ├── _list-group.scss
│ │ │ ├── _media.scss
│ │ │ ├── _misc-extend.scss
│ │ │ ├── _misc.scss
│ │ │ ├── mixins
│ │ │ │ ├── _alert.scss
│ │ │ │ ├── _animations.scss
│ │ │ │ ├── _breakpoints.scss
│ │ │ │ ├── _buttons.scss
│ │ │ │ ├── _colored-shadows.scss
│ │ │ │ ├── _drawer.scss
│ │ │ │ ├── _forms.scss
│ │ │ │ ├── _hover.scss
│ │ │ │ ├── _layout.scss
│ │ │ │ ├── _navbar-colors.scss
│ │ │ │ ├── _navs.scss
│ │ │ │ ├── _type.scss
│ │ │ │ └── _utilities.scss
│ │ │ ├── _mixins.scss
│ │ │ ├── _modal-extend.scss
│ │ │ ├── _modal.scss
│ │ │ ├── _navbar.scss
│ │ │ ├── _nav.scss
│ │ │ ├── _pagination.scss
│ │ │ ├── _pills.scss
│ │ │ ├── plugins
│ │ │ │ ├── _plugin-bootstrap-select.scss
│ │ │ │ ├── _plugin-datetime-picker.scss
│ │ │ │ ├── _plugin-flexisel.scss
│ │ │ │ ├── _plugin-nouislider.scss
│ │ │ │ └── _plugin-tagsinput.scss
│ │ │ ├── _popover.scss
│ │ │ ├── _progress.scss
│ │ │ ├── _radios.scss
│ │ │ ├── _reboot.scss
│ │ │ ├── _responsive.scss
│ │ │ ├── _ripples.scss
│ │ │ ├── sections
│ │ │ │ ├── _blogs.scss
│ │ │ │ ├── _contactus.scss
│ │ │ │ ├── _features.scss
│ │ │ │ ├── _footers-extend.scss
│ │ │ │ ├── _headers-extend.scss
│ │ │ │ ├── _pricing.scss
│ │ │ │ ├── _projects.scss
│ │ │ │ ├── _social-subscribe-lines.scss
│ │ │ │ ├── _team.scss
│ │ │ │ └── _testimonials.scss
│ │ │ ├── _sections.scss
│ │ │ ├── _social-buttons.scss
│ │ │ ├── _switches.scss
│ │ │ ├── _tables.scss
│ │ │ ├── _tabs.scss
│ │ │ ├── _togglebutton.scss
│ │ │ ├── _tooltip.scss
│ │ │ ├── _type.scss
│ │ │ ├── variables
│ │ │ │ ├── _body.scss
│ │ │ │ ├── _bootstrap-material-design-base.scss
│ │ │ │ ├── _bootstrap-material-design.scss
│ │ │ │ ├── _brand.scss
│ │ │ │ ├── _buttons.scss
│ │ │ │ ├── _card.scss
│ │ │ │ ├── _carousel.scss
│ │ │ │ ├── _code.scss
│ │ │ │ ├── _colors-map.scss
│ │ │ │ ├── _colors.scss
│ │ │ │ ├── _custom-forms.scss
│ │ │ │ ├── _drawer.scss
│ │ │ │ ├── _dropdown.scss
│ │ │ │ ├── _forms.scss
│ │ │ │ ├── _layout.scss
│ │ │ │ ├── _list-group.scss
│ │ │ │ ├── _menu.scss
│ │ │ │ ├── _modals.scss
│ │ │ │ ├── _nav.scss
│ │ │ │ ├── _pagination.scss
│ │ │ │ ├── _shadow.scss
│ │ │ │ ├── _snackbar.scss
│ │ │ │ ├── _spacing.scss
│ │ │ │ ├── _state.scss
│ │ │ │ ├── _tables.scss
│ │ │ │ ├── _tooltip.scss
│ │ │ │ └── _type.scss
│ │ │ └── _variables.scss
│ │ └── material-kit.scss
│ ├── quill
│ │ └── dist
│ │ ├── quill.bubble.css
│ │ ├── quill.core.css
│ │ ├── quill.core.js
│ │ ├── quill.min.js
│ │ └── quill.snow.css
│ └── robots.txt
├── README.md
├── resources
│ ├── lang
│ │ └── en
│ │ ├── auth.php
│ │ ├── pagination.php
│ │ ├── passwords.php
│ │ └── validation.php
│ └── views
│ ├── auth
│ │ ├── login.blade.php
│ │ ├── passwords
│ │ │ ├── email.blade.php
│ │ │ └── reset.blade.php
│ │ ├── register.blade.php
│ │ └── verify.blade.php
│ ├── blog
│ │ ├── all_articles.blade.php
│ │ ├── app.blade.php
│ │ ├── articles_author.blade.php
│ │ ├── articles_category.blade.php
│ │ ├── articles_search.blade.php
│ │ ├── articles_tag.blade.php
│ │ ├── home.blade.php
│ │ ├── layouts
│ │ │ ├── footer.blade.php
│ │ │ ├── header.blade.php
│ │ │ └── navs
│ │ │ ├── nav.blade.php
│ │ │ └── nav_categories.blade.php
│ │ ├── _partials
│ │ │ ├── article_full.blade.php
│ │ │ ├── authors.blade.php
│ │ │ ├── comments.blade.php
│ │ │ ├── featured_articles.blade.php
│ │ │ ├── latest_articles.blade.php
│ │ │ ├── pagination.blade.php
│ │ │ └── reply_comments.blade.php
│ │ └── show.blade.php
│ ├── dashboard
│ │ ├── alerts
│ │ │ ├── errors.blade.php
│ │ │ ├── feedback.blade.php
│ │ │ └── migrations_check.blade.php
│ │ ├── articles
│ │ │ ├── create.blade.php
│ │ │ ├── edit.blade.php
│ │ │ └── index.blade.php
│ │ ├── categories
│ │ │ ├── create.blade.php
│ │ │ ├── edit.blade.php
│ │ │ └── index.blade.php
│ │ ├── errors
│ │ │ ├── 401.blade.php
│ │ │ ├── 403.blade.php
│ │ │ ├── 404.blade.php
│ │ │ ├── 419.blade.php
│ │ │ ├── 429.blade.php
│ │ │ ├── 500.blade.php
│ │ │ ├── 503.blade.php
│ │ │ └── layout.blade.php
│ │ ├── layouts
│ │ │ ├── app.blade.php
│ │ │ ├── footers
│ │ │ │ ├── auth.blade.php
│ │ │ │ └── guest.blade.php
│ │ │ ├── navbars
│ │ │ │ ├── navs
│ │ │ │ │ ├── auth.blade.php
│ │ │ │ │ └── guest.blade.php
│ │ │ │ └── sidebar.blade.php
│ │ │ ├── page_templates
│ │ │ │ ├── auth.blade.php
│ │ │ │ └── guest.blade.php
│ │ │ └── plugin
│ │ │ └── fixed-plugin.blade.php
│ │ ├── pages
│ │ │ ├── calendar.blade.php
│ │ │ ├── charts.blade.php
│ │ │ ├── components
│ │ │ │ ├── buttons.blade.php
│ │ │ │ ├── grid.blade.php
│ │ │ │ ├── icons.blade.php
│ │ │ │ ├── notifications.blade.php
│ │ │ │ ├── panels.blade.php
│ │ │ │ ├── sweet_alert.blade.php
│ │ │ │ └── typography.blade.php
│ │ │ ├── dashboard.blade.php
│ │ │ ├── example_pages
│ │ │ │ ├── error.blade.php
│ │ │ │ ├── language.blade.php
│ │ │ │ ├── lock.blade.php
│ │ │ │ ├── pricing.blade.php
│ │ │ │ └── timeline.blade.php
│ │ │ ├── forms
│ │ │ │ ├── form_extended.blade.php
│ │ │ │ ├── form_regular.blade.php
│ │ │ │ ├── form_validation.blade.php
│ │ │ │ └── form_wizard.blade.php
│ │ │ ├── maps
│ │ │ │ ├── maps_fullscreen.blade.php
│ │ │ │ ├── maps_google.blade.php
│ │ │ │ └── maps_vector.blade.php
│ │ │ ├── tables
│ │ │ │ ├── table_list.blade.php
│ │ │ │ ├── tables_datatable.blade.php
│ │ │ │ ├── tables_extended.blade.php
│ │ │ │ └── tables_regular.blade.php
│ │ │ ├── welcome.blade.php
│ │ │ └── widgets.blade.php
│ │ ├── profile
│ │ │ └── edit.blade.php
│ │ ├── roles
│ │ │ ├── create.blade.php
│ │ │ ├── edit.blade.php
│ │ │ └── index.blade.php
│ │ ├── tags
│ │ │ ├── create.blade.php
│ │ │ ├── edit.blade.php
│ │ │ └── index.blade.php
│ │ └── users
│ │ ├── create.blade.php
│ │ ├── edit.blade.php
│ │ └── index.blade.php
│ ├── home.blade.php
│ ├── page.html
│ └── vendor
│ └── pagination
│ ├── bootstrap-4.blade.php
│ ├── default.blade.php
│ ├── semantic-ui.blade.php
│ ├── simple-bootstrap-4.blade.php
│ └── simple-default.blade.php
├── routes
│ ├── api.php
│ ├── channels.php
│ ├── console.php
│ └── web.php
├── screens
│ ├── Dashboard.png
│ ├── Login.png
│ ├── Profile.png
│ ├── Register.png
│ ├── Tables.png
│ └── Users.png
├── server.php
├── storage
│ ├── app
│ │ ├── .gitignore
│ │ └── public
│ │ ├── .gitignore
│ │ ├── pictures
│ │ └── profile
│ ├── framework
│ │ ├── cache
│ │ │ ├── data
│ │ │ │ └── .gitignore
│ │ │ └── .gitignore
│ │ ├── .gitignore
│ │ ├── sessions
│ │ ├── testing
│ │ │ └── .gitignore
│ │ └── views
│ │ └── .gitignore
│ └── logs
│ ├── .gitignore
├── tests
│ ├── CreatesApplication.php
│ ├── Feature
│ │ └── ExampleTest.php
│ ├── TestCase.php
│ └── Unit
│ └── ExampleTest.php
├── .vscode
│ └── settings.json
├── webpack.mix.js
└── yarn.lock
At present, we officially aim to support the last two versions of the following browsers:
- Demo: https://material-blog-pro-laravel.creative-tim.com/?ref=mbl-readme
- Download Page: https://www.creative-tim.com/product/material-blog-pro-laravel?ref=mbl-readme
- Documentation: https://material-blog-pro-laravel.creative-tim.com/docs/material-blog-pro-laravel/docs/getting-started/laravel-setup.html?ref=mbl-readme
- License Agreement: https://www.creative-tim.com/license
- Support: https://www.creative-tim.com/contact-us
- Issues: Github Issues Page
- Dashboards:
LARAVEL |
---|
Please see the changelog for more information on what has changed recently.
We use GitHub Issues as the official bug tracker for the Material Blog PROLaravel. Here are some advices for our users that want to report an issue:
- Make sure that you are using the latest version of the Material Blog PRO Laravel. Check the CHANGELOG from your dashboard on our website.
- Providing us reproducible steps for the issue will shorten the time it takes for it to be fixed.
- Some issues may be browser specific, so specifying in what browser you encountered the issue might help.
- Copyright 2019 Creative Tim (https://www.creative-tim.com/?ref=mbl-readme)
- Creative Tim License (https://www.creative-tim.com/license).
- Tutorials
- Affiliate Program (earn money)
- Blog Creative Tim
- Free Products from Creative Tim
- Premium Products from Creative Tim
- React Products from Creative Tim
- Angular Products from Creative Tim
- VueJS Products from Creative Tim
- More products from Creative Tim
- Check our Bundles here
Twitter: https://twitter.com/CreativeTim?ref=mbl-readme
Facebook: https://www.facebook.com/CreativeTim?ref=mbl-readme
Dribbble: https://dribbble.com/creativetim?ref=mbl-readme
Instagram: https://www.instagram.com/CreativeTimOfficial?ref=mbl-readme
Twitter: https://twitter.com/updivision?ref=mbl-readme
Facebook: https://www.facebook.com/updivision?ref=mbl-readme
Linkedin: https://www.linkedin.com/company/updivision?ref=mbl-readme
Updivision Blog: https://updivision.com/blog/?ref=mbl-readme