Category Navigation in the store front done with few style touch ups left

This commit is contained in:
prashant-webkul 2018-08-01 11:52:13 +05:30
commit 42848e7476
126 changed files with 805 additions and 122546 deletions

3
.gitignore vendored
View File

@ -1,6 +1,9 @@
/node_modules
/public/hot
/public/storage
/public/css
/public/js
/public/vendor
/storage/*.key
/vendor
/.idea

View File

@ -34,7 +34,8 @@
"webkul/laravel-customer": "self.version",
"webkul/laravel-category": "self.version",
"webkul/laravel-channel": "self.version",
"webkul/laravel-product": "self.version"
"webkul/laravel-product": "self.version",
"webkul/laravel-shop": "self.version"
},
"autoload": {
"classmap": [

View File

@ -181,7 +181,9 @@ return [
Webkul\Customer\Providers\CustomerServiceProvider::class,
Webkul\Channel\Providers\ChannelServiceProvider::class,
Webkul\Inventory\Providers\InventoryServiceProvider::class,
Webkul\Product\Providers\ProductServiceProvider::class
Webkul\Product\Providers\ProductServiceProvider::class,
Webkul\Shop\Providers\ShopServiceProvider::class,
Webkul\Customer\Providers\CustomerServiceProvider::class
],
/*

View File

@ -53,6 +53,19 @@ Route::group(['middleware' => ['web']], function () {
'view' => 'admin::catalog.products.create'
])->name('admin.catalog.products.create');
Route::post('/products/create', 'Webkul\Product\Http\Controllers\ProductController@store')->defaults('_config', [
'redirect' => 'admin.catalog.products.edit'
])->name('admin.catalog.products.store');
Route::get('/products/edit/{id}', 'Webkul\Product\Http\Controllers\ProductController@edit')->defaults('_config', [
'view' => 'admin::catalog.products.edit'
])->name('admin.catalog.products.edit');
Route::put('/products/edit/{id}', 'Webkul\Product\Http\Controllers\ProductController@update')->defaults('_config', [
'redirect' => 'admin.catalog.products.index'
])->name('admin.catalog.products.update');
// Catalog Category Routes
Route::get('/categories', 'Webkul\Category\Http\Controllers\CategoryController@index')->defaults('_config', [
'view' => 'admin::catalog.categories.index'

View File

@ -0,0 +1,58 @@
<?php
namespace Webkul\Admin;
class ProductFormAccordian {
public $items = [];
/**
* Shortcut method for create a Product Form Accordian with a callback.
* This will allow you to do things like fire an event on creation.
*
* @param callable $callback Callback to use after the accordian creation
* @return object
*/
public static function create($callback) {
$accordian = new ProductFormAccordian();
$callback($accordian);
$accordian->items = $accordian->sortItems($accordian->items);
return $accordian;
}
/**
* Add a accordian item to the item stack
*
* @param string $key Dot seperated heirarchy
* @param string $name Text for the anchor
* @param string $view Blade file for accordian
* @param integer $sort Sorting index for the items
*/
public function add($key, $name, $view, $sort = 0)
{
array_push($this->items, [
'key' => $key,
'name' => $name,
'view' => $view,
'sort' => $sort
]);
}
/**
* Method to sort through the acl items and put them in order
*
* @return void
*/
public function sortItems($items) {
usort($items, function($a, $b) {
if ($a['sort'] == $b['sort']) {
return 0;
}
return ($a['sort'] < $b['sort']) ? -1 : 1;
});
return $items;
}
}

View File

@ -29,10 +29,6 @@ class AdminServiceProvider extends ServiceProvider
$this->composeView();
Blade::directive('continue', function () {
return "<?php continue; ?>";
});
$this->app->register(EventServiceProvider::class);
$this->app->register(ComposerServiceProvider::class);
}
@ -44,6 +40,12 @@ class AdminServiceProvider extends ServiceProvider
*/
protected function composeView()
{
view()->composer(['admin::catalog.products.create', 'admin::catalog.products.edit'], function ($view) {
$accordians = current(Event::fire('admin.catalog.products.accordian.create'));
$view->with('form_accordians', $accordians);
});
view()->composer(['admin::layouts.nav-left', 'admin::layouts.nav-aside', 'admin::layouts.tabs'], function ($view) {
$menu = current(Event::fire('admin.menu.create'));
@ -74,13 +76,13 @@ class AdminServiceProvider extends ServiceProvider
*
* @return void
*/
// public function register()
// {
// $this->mergeConfigFrom(
// __DIR__ . '/../Config/auth.php',
// 'auth'
// );
// }
public function register()
{
// $this->mergeConfigFrom(
// __DIR__ . '/../Config/auth.php',
// 'auth'
// );
}
/**
* Merge the given configuration with the existing configuration.

View File

@ -6,6 +6,7 @@ use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\View;
use Webkul\Ui\Menu;
use Webkul\Admin\ProductFormAccordian;
class EventServiceProvider extends ServiceProvider
{
@ -21,6 +22,8 @@ class EventServiceProvider extends ServiceProvider
$this->buildACL();
$this->registerACL();
$this->createProductFormAccordian();
}
/**
@ -110,4 +113,22 @@ class EventServiceProvider extends ServiceProvider
View::share('acl', app('acl'));
}
/**
* This method fires an event for accordian creation, any package can add their accordian item by listening to the admin.catalog.products.accordian.build event
*
* @return void
*/
public function createProductFormAccordian()
{
Event::listen('admin.catalog.products.accordian.create', function() {
return ProductFormAccordian::create(function($accordian) {
Event::fire('admin.catalog.products.accordian.build', $accordian);
});
});
Event::listen('admin.catalog.products.accordian.build', function($accordian) {
$accordian->add('categories', 'Categories', 'admin::catalog.products.accordians.categories', 1);
});
}
}

View File

@ -4,8 +4,12 @@ window.VeeValidate = require("vee-validate");
Vue.use(VeeValidate);
$(document).ready(function() {
Vue.config.ignoredElements = ["option-wrapper", "group-form", "group-list"];
$(document).ready(function () {
Vue.config.ignoredElements = [
'option-wrapper',
'group-form',
'group-list'
];
var app = new Vue({
el: "#app",

View File

@ -69,6 +69,15 @@ return [
'add-title' => 'Add Product',
'edit-title' => 'Edit Product',
'save-btn-title' => 'Save Product',
'general' => 'General',
'product-type' => 'Product Type',
'simple' => 'Simple',
'configurable' => 'Configurable',
'familiy' => 'Attribute Family',
'sku' => 'SKU',
'configurable-attributes' => 'Configurable Attributes',
'attribute-header' => 'Attribute(s)',
'attribute-option-header' => 'Attribute Option(s)'
],
'attributes' => [
'add-title' => 'Add Attribute',
@ -86,7 +95,7 @@ return [
'checkbox' => 'Checkbox',
'datetime' => 'Datetime',
'date' => 'Date',
'label' => 'label',
'label' => 'Label',
'admin' => 'Admin',
'options' => 'Options',
'position' => 'Position',

View File

@ -6,7 +6,7 @@
@section('content')
<div class="content">
<?php $locale = request()->get('channel_locale') ?: channel()->getDefaultChannelLocaleCode(); ?>
<?php $locale = request()->get('locale') ?: app()->getLocale(); ?>
<form method="POST" action="" @submit.prevent="onSubmit">
@ -16,17 +16,11 @@
<div class="control-group">
<select class="control" id="locale-switcher" onChange="window.location.href = this.value">
@foreach(channel()->getChannelWithLocales() as $channel)
<optgroup label="{{ $channel->name }}">
@foreach(core()->allLocales() as $localeModel)
@foreach($channel->locales as $channelLocale)
<option value="{{ route('admin.catalog.categories.update', $category->id) . '?channel_locale=' . $channel->code . '-' . $channelLocale->code }}" {{ ($channel->code . '-' . $channelLocale->code) == $locale ? 'selected' : '' }}>
{{ $channelLocale->name }}
</option>
@endforeach
</optgroup>
<option value="{{ route('admin.catalog.categories.update', $category->id) . '?locale=' . $localeModel->code }}" {{ ($localeModel->code) == $locale ? 'selected' : '' }}>
{{ $localeModel->name }}
</option>
@endforeach
</select>

View File

@ -0,0 +1,6 @@
<accordian :title="'{{ __($accordian['name']) }}'" :active="true">
<div slot="body">
</div>
</accordian>

View File

@ -0,0 +1,4 @@
<div class="control-group">
<label for="sku">{{ $attribute->admin_name }}</label>
<input type="text" class="control" id="sku" name="sku"/>
</div>

View File

@ -0,0 +1,142 @@
@extends('admin::layouts.content')
@section('css')
<style>
.table td .label {
margin-right: 10px;
}
.table td .label:last-child {
margin-right: 0;
}
.table td .label .icon {
vertical-align: middle;
cursor: pointer;
}
</style>
@stop
@section('content')
<div class="content">
<form method="POST" action="" @submit.prevent="onSubmit">
<div class="page-header">
<div class="page-title">
<h1>{{ __('admin::app.catalog.products.add-title') }}</h1>
</div>
<div class="page-action">
<button type="submit" class="btn btn-lg btn-primary">
{{ __('admin::app.catalog.products.save-btn-title') }}
</button>
</div>
</div>
<div class="page-content">
@csrf()
<?php $familyId = app('request')->input('family') ?>
<?php $sku = app('request')->input('sku') ?>
<accordian :title="'{{ __('admin::app.catalog.products.general') }}'" :active="true">
<div slot="body">
<div class="control-group" :class="[errors.has('type') ? 'has-error' : '']">
<label for="type" class="required">{{ __('admin::app.catalog.products.product-type') }}</label>
<select class="control" v-validate="'required'" id="type" name="type" {{ $familyId ? 'disabled' : '' }}>
<option value="simple">{{ __('admin::app.catalog.products.simple') }}</option>
<option value="configurable" {{ $familyId ? 'selected' : '' }}>{{ __('admin::app.catalog.products.configurable') }}</option>
</select>
@if($familyId)
<input type="hidden" name="type" value="configurable"/>
@endif
<span class="control-error" v-if="errors.has('type')">@{{ errors.first('type') }}</span>
</div>
<div class="control-group" :class="[errors.has('attribute_family_id') ? 'has-error' : '']">
<label for="attribute_family_id" class="required">{{ __('admin::app.catalog.products.familiy') }}</label>
<select class="control" v-validate="'required'" id="attribute_family_id" name="attribute_family_id" {{ $familyId ? 'disabled' : '' }}>
<option value=""></option>
@foreach($families as $family)
<option value="{{ $family->id }}" {{ ($familyId == $family->id || old('attribute_family_id') == $family->id) ? 'selected' : '' }}>{{ $family->name }}</option>
@endforeach
</select>
@if($familyId)
<input type="hidden" name="attribute_family_id" value="{{ $familyId }}"/>
@endif
<span class="control-error" v-if="errors.has('attribute_family_id')">@{{ errors.first('attribute_family_id') }}</span>
</div>
<div class="control-group" :class="[errors.has('sku') ? 'has-error' : '']">
<label for="sku">{{ __('admin::app.catalog.products.sku') }}</label>
<input type="text" v-validate="'required'" class="control" id="sku" name="sku" value="{{ $sku ?: old('sku') }}"/>
<span class="control-error" v-if="errors.has('sku')">@{{ errors.first('sku') }}</span>
</div>
</div>
</accordian>
@if($familyId)
<accordian :title="'{{ __('admin::app.catalog.products.configurable-attributes') }}'" :active="true">
<div slot="body">
<div class="table">
<table>
<thead>
<tr>
<th>{{ __('admin::app.catalog.products.attribute-header') }}</th>
<th>{{ __('admin::app.catalog.products.attribute-option-header') }}</th>
<th></th>
</tr>
</thead>
<tbody>
@foreach($configurableFamily->configurable_attributes as $attribute)
<tr>
<td>
{{ $attribute->name }}
</td>
<td>
@foreach($attribute->options as $option)
<span class="label">
<input type="hidden" name="super_attributes[{{$attribute->id}}][options][]" value="{{ $option->id }}"/>
{{ $option->label }}
<i class="icon cross-icon"></i>
</span>
@endforeach
</td>
<td class="actions">
<i class="icon trash-icon"></i>
</td>
</tr>
@endforeach
</tbody>
</table>
</div>
</div>
</accordian>
@endif
</div>
</form>
</div>
@stop
@section('javascript')
<script>
$(document).ready(function () {
$('.label .cross-icon').on('click', function(e) {
$(e.target).parent().remove();
})
$('.actions .trash-icon').on('click', function(e) {
$(e.target).parents('tr').remove();
})
});
</script>
@stop

View File

@ -0,0 +1,51 @@
@extends('admin::layouts.content')
@section('content')
<div class="content">
<form method="POST" action="{{ route('admin.catalog.products.update', $product->id) }}" @submit.prevent="onSubmit">
<div class="page-header">
<div class="page-title">
<h1>{{ __('admin::app.catalog.products.edit-title') }}</h1>
</div>
<div class="page-action">
<button type="submit" class="btn btn-lg btn-primary">
{{ __('admin::app.catalog.products.save-btn-title') }}
</button>
</div>
</div>
<div class="page-content">
@csrf()
@foreach($product->attribute_family->attribute_groups as $attributeGroup)
@if(count($attributeGroup->attributes))
<accordian :title="'{{ __($attributeGroup->name) }}'" :active="true">
<div slot="body">
@foreach($attributeGroup->attributes as $attribute)
@if(view()->exists($typeView = 'admin::catalog.products.attribute-types.' . $attribute->type))
@include ($typeView)
@endif
@endforeach
</div>
</accordian>
@endif
@endforeach
@foreach($form_accordians->items as $accordian)
@include ($accordian['view'])
@endforeach
</div>
</form>
</div>
@stop

View File

@ -4,6 +4,7 @@ namespace Webkul\Attribute\Models;
use Webkul\Core\Eloquent\TranslatableModel;
use Webkul\Attribute\Models\AttributeOption;
use Webkul\Attribute\Models\AttributeGroup;
class Attribute extends TranslatableModel
{

View File

@ -3,7 +3,6 @@
namespace Webkul\Attribute\Models;
use Illuminate\Database\Eloquent\Model;
use Webkul\Attribute\Models\Attribute;
use Webkul\Attribute\Models\AttributeGroup;
class AttributeFamily extends Model
@ -17,7 +16,19 @@ class AttributeFamily extends Model
*/
public function attributes()
{
return $this->hasManyThrough(Attribute::class, AttributeGroup::class);
return Attribute::join('attribute_group_mappings', 'attributes.id', '=', 'attribute_group_mappings.attribute_id')
->join('attribute_groups', 'attribute_group_mappings.attribute_group_id', '=', 'attribute_groups.id')
->join('attribute_families', 'attribute_groups.attribute_family_id', '=', 'attribute_families.id')
->where('attribute_families.id', $this->id)
->select('attributes.*');
}
/**
* Get all of the attributes for the attribute groups.
*/
public function getAttributesAttribute()
{
return $this->attributes()->get();
}
/**
@ -27,4 +38,12 @@ class AttributeFamily extends Model
{
return $this->hasMany(AttributeGroup::class)->orderBy('position');
}
/**
* Get all of the attributes for the attribute groups.
*/
public function getConfigurableAttributesAttribute()
{
return $this->attributes()->where('attributes.is_configurable', 1)->where('attributes.type', 'select')->get();
}
}

View File

@ -128,7 +128,7 @@ class AttributeFamilyRepository extends Repository
}
if($attributeIds->count()) {
$attributeGroup->detach($attributeIds);
$attributeGroup->attributes()->detach($attributeIds);
}
}
}

View File

@ -106,7 +106,7 @@ class CategoryController extends Controller
*/
public function update(Request $request, $id)
{
$locale = request()->get('channel_locale') ?: channel()->getDefaultChannelLocaleCode();
$locale = request()->get('locale') ?: app()->getLocale();
$this->validate(request(), [
$locale . '.slug' => ['required', new \Webkul\Core\Contracts\Validations\Slug, function ($attribute, $value, $fail) use ($id) {
if (!$this->category->isSlugUnique($id, $value)) {

View File

@ -12,12 +12,4 @@ class Category extends TranslatableModel
public $translatedAttributes = ['name', 'description', 'slug', 'meta_title', 'meta_description', 'meta_keywords'];
protected $fillable = ['position', 'status', 'parent_id'];
/**
* @return boolean
*/
protected function isChannelBased()
{
return true;
}
}

View File

@ -44,14 +44,10 @@ class CategoryRepository extends Repository
if(isset($data['locale']) && $data['locale'] == 'all') {
$model = app()->make($this->model());
$channels = channel()->getChannelWithLocales();
foreach($channels as $channel) {
foreach($channel->locales as $locale) {
foreach ($model->translatedAttributes as $attribute) {
if(isset($data[$attribute])) {
$data[$channel->code . '.' . $locale->code][$attribute] = $data[$attribute];
}
foreach(core()->allLocales() as $locale) {
foreach ($model->translatedAttributes as $attribute) {
if(isset($data[$attribute])) {
$data[$locale->code][$attribute] = $data[$attribute];
}
}
}

View File

@ -30,13 +30,9 @@ class ChannelRepository extends Repository
{
$channel = $this->model->create($data);
foreach ($data['locales'] as $locale) {
$channel->locales()->attach($locale);
}
$channel->locales()->sync($data['locales']);
foreach ($data['currencies'] as $currency) {
$channel->currencies()->attach($currency);
}
$channel->currencies()->sync($data['currencies']);
return $channel;
}
@ -53,32 +49,9 @@ class ChannelRepository extends Repository
$channel->update($data);
$previousLocaleIds = $channel->locales()->pluck('id');
$channel->locales()->sync($data['locales']);
foreach ($data['locales'] as $locale) {
if(is_numeric($index = $previousLocaleIds->search($locale))) {
$previousLocaleIds->forget($index);
} else {
$channel->locales()->attach($locale);
}
}
if($previousLocaleIds->count()) {
$channel->locales()->detach($previousLocaleIds);
}
$previousCurrencyIds = $channel->currencies()->pluck('id');
foreach ($data['currencies'] as $currency) {
if(is_numeric($index = $previousCurrencyIds->search($currency))) {
$previousCurrencyIds->forget($index);
} else {
$channel->currencies()->attach($currency);
}
}
if($previousCurrencyIds->count()) {
$channel->currencies()->detach($previousCurrencyIds);
}
$channel->currencies()->sync($data['currencies']);
return $channel;
}

View File

@ -4,7 +4,7 @@ namespace Webkul\Core\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Webkul\Core\Models\Country;
use Webkul\Core\Repositories\CountryRepository as Country;
/**
* Country controller
@ -20,14 +20,24 @@ class CountryController extends Controller
* @var array
*/
protected $_config;
/**
* CountryRepository object
*
* @var array
*/
protected $country;
/**
* Create a new controller instance.
*
* @param Webkul\Core\Repositories\CountryRepository $country
* @return void
*/
public function __construct()
public function __construct(Country $country)
{
$this->country = $country;
$this->_config = request('_config');
}
@ -64,7 +74,7 @@ class CountryController extends Controller
'name' => 'required'
]);
Country::create(request(['code','name']));
$this->country->create(request()->all());
session()->flash('success', 'Country created successfully.');

View File

@ -31,7 +31,7 @@ class CurrencyController extends Controller
/**
* Create a new controller instance.
*
* @param Webkul\Core\Repositories\CurrencyRepository $currency
* @param Webkul\Core\Repositories\CurrencyRepository $currency
* @return void
*/
public function __construct(Currency $currency)

View File

@ -4,7 +4,7 @@ namespace Webkul\Core\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Webkul\Core\Models\Locale;
use Webkul\Core\Repositories\LocaleRepository as Locale;
/**
* Locale controller
@ -20,14 +20,24 @@ class LocaleController extends Controller
* @var array
*/
protected $_config;
/**
* LocaleRepository object
*
* @var array
*/
protected $locale;
/**
* Create a new controller instance.
*
* @param Webkul\Core\Repositories\LocaleRepository $locale
* @return void
*/
public function __construct()
public function __construct(Locale $locale)
{
$this->locale = $locale;
$this->_config = request('_config');
}
@ -64,7 +74,7 @@ class LocaleController extends Controller
'name' => 'required'
]);
Locale::create(request(['code','name']));
$this->locale->create(request()->all());
session()->flash('success', 'Locale created successfully.');

View File

@ -17,14 +17,23 @@ class CreateProductsTable extends Migration
$table->increments('id');
$table->string('sku')->unique();
$table->string('type');
$table->integer('parent_id')->unsigned()->nullable();
$table->timestamps();
$table->integer('parent_id')->unsigned()->nullable();
$table->integer('attribute_family_id')->unsigned()->nullable();
$table->foreign('attribute_family_id')->references('id')->on('attribute_families')->onDelete('cascade');
});
Schema::table('products', function (Blueprint $table) {
$table->foreign('parent_id')->references('id')->on('products')->onDelete('cascade');
});
Schema::create('product_inventories', function (Blueprint $table) {
$table->integer('product_id')->unsigned();
$table->integer('inventory_source_id')->unsigned();
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
$table->foreign('inventory_source_id')->references('id')->on('inventory_sources')->onDelete('cascade');
});
Schema::create('product_categories', function (Blueprint $table) {
$table->integer('product_id')->unsigned();
$table->integer('category_id')->unsigned();
@ -39,6 +48,13 @@ class CreateProductsTable extends Migration
$table->foreign('child_id')->references('id')->on('products')->onDelete('cascade');
});
Schema::create('product_super_attributes', function (Blueprint $table) {
$table->integer('product_id')->unsigned();
$table->integer('attribute_id')->unsigned();
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
$table->foreign('attribute_id')->references('id')->on('attributes')->onDelete('cascade');
});
Schema::create('product_up_sells', function (Blueprint $table) {
$table->integer('parent_id')->unsigned();
$table->integer('child_id')->unsigned();

View File

@ -15,6 +15,7 @@ class CreateProductAttributeValueTable extends Migration
{
Schema::create('product_attribute_value', function (Blueprint $table) {
$table->increments('id');
$table->string('locale')->nullable();
$table->text('text_value')->nullable();
$table->boolean('boolean_value')->nullable();
$table->integer('integer_value')->nullable();
@ -24,8 +25,11 @@ class CreateProductAttributeValueTable extends Migration
$table->json('json_value')->nullable();
$table->integer('product_id')->unsigned();
$table->integer('attribute_id')->unsigned();
$table->integer('channel_id')->unsigned();
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
$table->foreign('attribute_id')->references('id')->on('attributes')->onDelete('cascade');
$table->foreign('channel_id')->references('id')->on('channels')->onDelete('cascade');
$table->unique(['channel_id', 'locale', 'attribute_id', 'product_id'], 'chanel_locale_attribute_value_index_unique');
});
}

View File

@ -0,0 +1,34 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateProductImagesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('product_images', function (Blueprint $table) {
$table->increments('id');
$table->string('type');
$table->string('path');
$table->integer('product_id')->unsigned()->nullable();
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('product_images');
}
}

View File

@ -5,6 +5,7 @@ namespace Webkul\Product\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Webkul\Product\Repositories\ProductRepository as Product;
use Webkul\Attribute\Repositories\AttributeFamilyRepository as AttributeFamily;
/**
* Product controller
@ -21,6 +22,13 @@ class ProductController extends Controller
*/
protected $_config;
/**
* AttributeFamilyRepository object
*
* @var array
*/
protected $attributeFamily;
/**
* ProductRepository object
*
@ -31,11 +39,14 @@ class ProductController extends Controller
/**
* Create a new controller instance.
*
* @param Webkul\Product\Repositories\ProductRepository $product
* @param Webkul\Attribute\Repositories\AttributeFamilyRepository $attributeFamily
* @param Webkul\Product\Repositories\ProductRepository $product
* @return void
*/
public function __construct(Product $product)
public function __construct(AttributeFamily $attributeFamily, Product $product)
{
$this->attributeFamily = $attributeFamily;
$this->product = $product;
$this->_config = request('_config');
@ -58,7 +69,13 @@ class ProductController extends Controller
*/
public function create()
{
return view($this->_config['view']);
$families = $this->attributeFamily->all();
if($familyId = request()->get('family')) {
$configurableFamily = $this->attributeFamily->findOrFail($familyId);
}
return view($this->_config['view'], compact('families', 'configurableFamily'));
}
/**
@ -68,15 +85,27 @@ class ProductController extends Controller
*/
public function store()
{
if(!request()->get('family') && request()->input('type') == 'configurable' && request()->input('sku') != '') {
return redirect(url()->current() . '?family=' . request()->input('attribute_family_id') . '&sku=' . request()->input('sku'));
}
if(request()->input('type') == 'configurable' && (!request()->has('super_attributes') || !count(request()->get('super_attributes')))) {
session()->flash('error', 'Please select atleast one configurable attribute.');
return back();
}
$this->validate(request(), [
'name' => 'required'
'type' => 'required',
'attribute_family_id' => 'required',
'sku' => ['required', 'unique:products,sku', new \Webkul\Core\Contracts\Validations\Slug]
]);
$this->product->create(request()->all());
$product = $this->product->create(request()->all());
session()->flash('success', 'Product created successfully.');
return redirect()->route($this->_config['redirect']);
return redirect()->route($this->_config['redirect'], ['id' => $product->id]);
}
/**
@ -89,6 +118,8 @@ class ProductController extends Controller
{
$product = $this->product->findOrFail($id);
dd($product);
return view($this->_config['view'], compact('product'));
}

View File

@ -3,11 +3,24 @@
namespace Webkul\Product\Models;
use Illuminate\Database\Eloquent\Model;
use Webkul\Attribute\Models\Attribute;
use Webkul\Category\Models\Category;
use Webkul\Inventory\Models\InventorySource;
use Webkul\Attribute\Models\AttributeFamily;
class Product extends Model
{
protected $guarded = ['_token'];
protected $fillable = ['type', 'attribute_family_id', 'sku'];
protected $with = ['super_attributes'];
/**
* Get the product attribute family that owns the product.
*/
public function attribute_family()
{
return $this->belongsTo(AttributeFamily::class);
}
/**
* The categories that belong to the product.
@ -16,4 +29,52 @@ class Product extends Model
{
return $this->belongsToMany(Category::class, 'product_categories');
}
/**
* The inventories that belong to the product.
*/
public function inventories()
{
return $this->belongsToMany(InventorySource::class, 'product_inventories');
}
/**
* The super attributes that belong to the product.
*/
public function super_attributes()
{
return $this->belongsToMany(Attribute::class, 'product_super_attributes');
}
/**
* The related products that belong to the product.
*/
public function related_products()
{
return $this->belongsToMany(self::class, 'product_relations');
}
/**
* The up sells that belong to the product.
*/
public function up_sells()
{
return $this->belongsToMany(self::class, 'product_up_sells');
}
/**
* The cross sells that belong to the product.
*/
public function cross_sells()
{
return $this->belongsToMany(self::class, 'product_cross_sells');
}
public function __get($name) {
// if(array_key_exists($name, $this->data)) {
// return $this->data[$name];
// }
return null;
}
}

View File

@ -0,0 +1,26 @@
<?php
namespace Webkul\Product\Models;
use Illuminate\Database\Eloquent\Model;
use Webkul\Attribute\Models\Attribute;
use Webkul\Product\Models\Product;
class ProductAttributeValue extends Model
{
/**
* Get the attribue that owns the attribute value.
*/
public function attribue()
{
return $this->belongsTo(Attribue::class);
}
/**
* Get the product that owns the attribute value.
*/
public function product()
{
return $this->belongsTo(Product::class);
}
}

View File

@ -0,0 +1,41 @@
<?php
namespace Webkul\Product\Observers;
use Webkul\Product\Models\Product;
class ProductObserver
{
/**
* Handle to the product "created" event.
*
* @param \App\Product $product
* @return void
*/
public function created(Product $product)
{
}
/**
* Handle the product "updated" event.
*
* @param \App\Product $product
* @return void
*/
public function updated(Product $product)
{
//
}
/**
* Handle the product "deleted" event.
*
* @param \App\Product $product
* @return void
*/
public function deleted(Product $product)
{
//
}
}

View File

@ -4,6 +4,8 @@ namespace Webkul\Product\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Routing\Router;
use Webkul\Product\Models\Product;
use Webkul\Product\Observers\ProductObserver;
class ProductServiceProvider extends ServiceProvider
{
@ -15,6 +17,8 @@ class ProductServiceProvider extends ServiceProvider
public function boot(Router $router)
{
$this->loadMigrationsFrom(__DIR__ . '/../Database/Migrations');
Product::observe(ProductObserver::class);
}
/**

View File

@ -0,0 +1,39 @@
<?php
namespace Webkul\Product\Repositories;
use Webkul\Core\Eloquent\Repository;
/**
* Product Attribute Value Reposotory
*
* @author Jitendra Singh <jitendra@webkul.com>
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class ProductAttributeValueRepository extends Repository
{
/**
* Specify Model class name
*
* @return mixed
*/
function model()
{
return 'Webkul\Product\Models\ProductAttributeValue';
}
/**
* @param array $data
* @return mixed
*/
public function create(array $data)
{
$product = $this->model->create($data);
foreach ($data['super_attributes'] as $attributeId => $attribute) {
$product->super_attributes()->attach($attributeId);
}
return $product;
}
}

View File

@ -21,4 +21,21 @@ class ProductRepository extends Repository
{
return 'Webkul\Product\Models\Product';
}
/**
* @param array $data
* @return mixed
*/
public function create(array $data)
{
$product = $this->model->create($data);
if(isset($data['super_attributes'])) {
foreach ($data['super_attributes'] as $attributeId => $attribute) {
$product->super_attributes()->attach($attributeId);
}
}
return $product;
}
}

View File

@ -223,6 +223,7 @@ h2 {
.icon {
cursor: pointer;
vertical-align: middle;
}
}
}
@ -930,3 +931,28 @@ h2 {
}
}
}
.label {
background: #E7E7E7;
border-radius: 2px;
padding: 8px;
color: #000311;
display: inline-block;
&.label-sm {
padding: 5px;
}
&.label-md {
padding: 8px;
}
&.label-lg {
padding: 11px;
}
&.label-xl {
padding: 14px;
}
}

View File

@ -70,8 +70,8 @@
.cross-icon {
background-image: url("../images/Icon-Crossed.svg");
width: 24px;
height: 24px;
width: 18px;
height: 18px;
}
.trash-icon {

View File

@ -269,6 +269,14 @@
</div>
</div>
<label class="styleguide-label">Labels</label>
<div class="styleguide-wrapper">
<span class="label label-sm">Label Small</span>
<span class="label label-md">Label Medium</span>
<span class="label label-lg">Label Large</span>
<span class="label label-xl">Label Extra Large</span>
</div>
<label class="styleguide-label">Table</label>
<div class="styleguide-wrapper">
<div class="table">

View File

@ -4,7 +4,7 @@ namespace Webkul\User\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Webkul\User\Models\Role;
use Webkul\User\Repositories\RoleRepository as Role;
/**
* Admin user role controller
@ -20,14 +20,24 @@ class RoleController extends Controller
* @var array
*/
protected $_config;
/**
* RoleRepository object
*
* @var array
*/
protected $role;
/**
* Create a new controller instance.
*
* @param Webkul\User\Repositories\RoleRepository $role
* @return void
*/
public function __construct()
public function __construct(Role $role)
{
$this->role = $role;
$this->_config = request('_config');
}
@ -64,7 +74,7 @@ class RoleController extends Controller
'permission_type' => 'required',
]);
Role::create(request()->all());
$this->role->create(request()->all());
session()->flash('success', 'Role created successfully.');
@ -79,7 +89,7 @@ class RoleController extends Controller
*/
public function edit($id)
{
$role = Role::findOrFail($id);
$role = $this->role->findOrFail($id);
return view($this->_config['view'], compact('role'));
}
@ -98,9 +108,7 @@ class RoleController extends Controller
'permission_type' => 'required',
]);
$role = Role::findOrFail($id);
$role->update(request()->all());
$this->role->update(request()->all(), $id);
session()->flash('success', 'Role updated successfully.');

View File

@ -4,8 +4,8 @@ namespace Webkul\User\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use Webkul\User\Models\Admin;
use Webkul\User\Models\Role;
use Webkul\User\Repositories\AdminRepository as Admin;
use Webkul\User\Repositories\RoleRepository as Role;
use Webkul\User\Http\Requests\UserForm;
/**
@ -22,14 +22,34 @@ class UserController extends Controller
* @var array
*/
protected $_config;
/**
* AdminRepository object
*
* @var array
*/
protected $admin;
/**
* RoleRepository object
*
* @var array
*/
protected $role;
/**
* Create a new controller instance.
*
* @param Webkul\User\Repositories\AdminRepository $admin
* @param Webkul\User\Repositories\RoleRepository $role
* @return void
*/
public function __construct()
public function __construct(Admin $admin, Role $role)
{
$this->admin = $admin;
$this->role = $role;
$this->_config = request('_config');
$this->middleware('guest', ['except' => 'destroy']);
@ -52,7 +72,7 @@ class UserController extends Controller
*/
public function create()
{
$roles = Role::all();
$roles = $this->role->all();
return view($this->_config['view'], compact('roles'));
}
@ -65,7 +85,7 @@ class UserController extends Controller
*/
public function store(UserForm $request)
{
Admin::create(request()->all());
$this->admin->create(request()->all());
session()->flash('success', 'User created successfully.');
@ -80,8 +100,9 @@ class UserController extends Controller
*/
public function edit($id)
{
$user = Admin::findOrFail($id);
$roles = Role::all();
$user = $this->admin->findOrFail($id);
$roles = $this->role->all();
return view($this->_config['view'], compact('user', 'roles'));
}
@ -95,9 +116,7 @@ class UserController extends Controller
*/
public function update(UserForm $request, $id)
{
$user = Admin::findOrFail($id);
$user->update(request(['name', 'email', 'password']));
$this->admin->update(request()->all(), $id);
session()->flash('success', 'User updated successfully.');

View File

@ -0,0 +1,24 @@
<?php
namespace Webkul\User\Repositories;
use Webkul\Core\Eloquent\Repository;
/**
* Admin Reposotory
*
* @author Jitendra Singh <jitendra@webkul.com>
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class AdminRepository extends Repository
{
/**
* Specify Model class name
*
* @return mixed
*/
function model()
{
return 'Webkul\User\Models\Admin';
}
}

View File

@ -0,0 +1,24 @@
<?php
namespace Webkul\User\Repositories;
use Webkul\Core\Eloquent\Repository;
/**
* Role Reposotory
*
* @author Jitendra Singh <jitendra@webkul.com>
* @copyright 2018 Webkul Software Pvt Ltd (http://www.webkul.com)
*/
class RoleRepository extends Repository
{
/**
* Specify Model class name
*
* @return mixed
*/
function model()
{
return 'Webkul\User\Models\Role';
}
}

10419
public/css/app.css vendored

File diff suppressed because it is too large Load Diff

47387
public/js/app.js vendored

File diff suppressed because one or more lines are too long

View File

@ -1,191 +0,0 @@
@import url(https://fonts.googleapis.com/css?family=Montserrat:400,500);body {
margin: 0;
color: #3A3A3A;
font-family: "Montserrat", sans-serif;
font-size: 14px;
font-weight: 500;
position: static;
min-height: 100%;
}
.navbar-top {
height: 60px;
background: #ffffff;
font-size: 0;
-webkit-box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.05);
box-shadow: 0 3px 6px 0 rgba(0, 0, 0, 0.05);
border-bottom: 1px solid rgba(162, 162, 162, 0.2);
position: fixed;
left: 0;
right: 0;
z-index: 5;
}
.navbar-top .navbar-top-left {
width: 50%;
height: 60px;
display: inline-block;
vertical-align: middle;
}
.navbar-top .navbar-top-left .brand-logo {
padding: 10px;
}
.navbar-top .navbar-top-right {
width: 50%;
height: 60px;
text-align: right;
display: inline-block;
vertical-align: middle;
}
.navbar-top .navbar-top-right .profile-info {
display: inline-block;
vertical-align: middle;
text-align: left;
min-width: 50px;
position: relative;
padding: 12px 0px;
margin: 0px 25px 0px 30px;
font-size: 15px;
cursor: pointer;
position: relative;
}
.navbar-top .navbar-top-right .profile-info .dropdown-list {
top: 63px;
}
.navbar-top .navbar-top-right .profile-info .name {
color: #000311;
display: block;
text-align: left;
}
.navbar-top .navbar-top-right .profile-info .role {
font-size: 14px;
color: #8e8e8e;
display: block;
text-align: left;
}
.navbar-top .navbar-top-right .profile-info i.icon {
margin-left: 10px;
}
.navbar-left {
position: absolute;
top: 60px;
bottom: 0;
width: 90px;
padding-top: 20px;
height: auto;
border-right: 1px solid rgba(162, 162, 162, 0.2);
z-index: 2;
}
.navbar-left ul.menubar li.menu-item {
height: 90px;
padding: 10px 5px;
font-size: 11px;
text-align: center;
text-transform: uppercase;
}
.navbar-left ul.menubar li.menu-item a {
color: #a2a2a2;
}
.navbar-left ul.menubar li.menu-item.active a {
color: #0041ff;
}
.content-container {
padding-left: 90px;
position: absolute;
margin-top: 60px;
top: 0px;
right: 0;
left: 0;
bottom: 0px;
overflow-x: hidden;
overflow-y: auto;
}
.content-container .aside-nav {
width: 280px;
position: fixed;
top: 60px;
bottom: 0;
border-right: 1px solid rgba(162, 162, 162, 0.2);
background: #f8f9fa;
padding-top: 10px;
overflow-y: auto;
z-index: 4;
}
.content-container .aside-nav a {
padding: 15px;
display: block;
color: #000311;
}
.content-container .aside-nav .active a {
background: #ffffff;
border-top: 1px solid rgba(162, 162, 162, 0.2);
border-bottom: 1px solid rgba(162, 162, 162, 0.2);
}
.content-container .aside-nav .active i {
float: right;
}
.content-container .content-wrapper {
padding: 25px 25px 25px 305px;
}
.content-container .content {
padding: 25px 0;
}
.content-container .content.full-page {
padding: 25px;
}
.content-container .content .page-header {
display: inline-block;
margin-bottom: 20px;
width: 100%;
}
.content-container .content .page-header .page-title {
float: left;
}
.content-container .content .page-header .page-title h1 {
margin-bottom: 0;
vertical-align: middle;
display: inline-block;
}
.content-container .content .page-header .page-action {
float: right;
}
.content-container .content .page-header .control-group {
width: 180px;
display: inline-block;
margin-bottom: 0;
margin-left: 20px;
}
.content-container .content .page-header .control {
width: 100%;
margin: 0;
}
.content-container .content .page-content {
width: 100%;
display: inline-block;
}

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Icon-Dashboard-Active</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Icon-Dashboard-Active" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(10.000000, 1.000000)">
<rect id="Rectangle-2" stroke="#0041FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" x="0" y="9" width="28" height="28"></rect>
<circle id="Oval" fill="#FFFFFF" cx="28" cy="9" r="9"></circle>
<circle id="Oval" stroke="#0041FF" stroke-width="2" cx="28" cy="9" r="4"></circle>
<polyline id="Path-5" stroke="#0041FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" points="7 26.8225098 10.6303711 22.1315918 15.5270996 25.3210449 21.5498047 18"></polyline>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,15 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Icon-Dashboard</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Icon-Dashboard" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(10.000000, 1.000000)">
<rect id="Rectangle-2" stroke="#8E8E8E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" x="0" y="9" width="28" height="28"></rect>
<circle id="Oval" fill="#FFFFFF" cx="28" cy="9" r="9"></circle>
<circle id="Oval" stroke="#8E8E8E" stroke-width="2" cx="28" cy="9" r="4"></circle>
<polyline id="Path-5" stroke="#8E8E8E" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" points="7 26.8225098 10.6303711 22.1315918 15.5270996 25.3210449 21.5498047 18"></polyline>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.0 KiB

View File

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Icon-Settings-Active</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Icon-Settings-Active" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g transform="translate(8.000000, 8.000000)" stroke="#0041FF" stroke-width="2">
<path d="M21.6087486,26.3724154 C20.9023676,26.7551882 20.152486,27.0679078 19.3684211,27.301257 L19.3684211,32 L12.6315789,32 L12.6315789,27.301257 C11.847514,27.0679078 11.0976324,26.7551882 10.3912514,26.3724154 L7.06812487,29.6955419 L2.30445813,24.9318751 L5.62758462,21.6087486 C5.2448118,20.9023676 4.93209217,20.152486 4.69874304,19.3684211 L-3.55271368e-15,19.3684211 L-3.55271368e-15,12.6315789 L4.69874304,12.6315789 C4.93209217,11.847514 5.2448118,11.0976324 5.62758462,10.3912514 L2.30445813,7.06812487 L7.06812487,2.30445813 L10.3912514,5.62758462 C11.0976324,5.2448118 11.847514,4.93209217 12.6315789,4.69874304 L12.6315789,0 L19.3684211,0 L19.3684211,4.69874304 C20.152486,4.93209217 20.9023676,5.2448118 21.6087486,5.62758462 L24.9318751,2.30445813 L29.6955419,7.06812487 L26.3724154,10.3912514 C26.7551882,11.0976324 27.0679078,11.847514 27.301257,12.6315789 L32,12.6315789 L32,19.3684211 L27.301257,19.3684211 C27.0679078,20.152486 26.7551882,20.9023676 26.3724154,21.6087486 L29.6955419,24.9318751 L24.9318751,29.6955419 L21.6087486,26.3724154 Z" id="Combined-Shape"></path>
<circle id="Oval-6" cx="16" cy="16" r="5"></circle>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

View File

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Icon-Settings</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Icon-Settings" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g transform="translate(8.000000, 8.000000)" stroke="#8E8E8E" stroke-width="2">
<path d="M21.6087486,26.3724154 C20.9023676,26.7551882 20.152486,27.0679078 19.3684211,27.301257 L19.3684211,32 L12.6315789,32 L12.6315789,27.301257 C11.847514,27.0679078 11.0976324,26.7551882 10.3912514,26.3724154 L7.06812487,29.6955419 L2.30445813,24.9318751 L5.62758462,21.6087486 C5.2448118,20.9023676 4.93209217,20.152486 4.69874304,19.3684211 L-3.55271368e-15,19.3684211 L-3.55271368e-15,12.6315789 L4.69874304,12.6315789 C4.93209217,11.847514 5.2448118,11.0976324 5.62758462,10.3912514 L2.30445813,7.06812487 L7.06812487,2.30445813 L10.3912514,5.62758462 C11.0976324,5.2448118 11.847514,4.93209217 12.6315789,4.69874304 L12.6315789,0 L19.3684211,0 L19.3684211,4.69874304 C20.152486,4.93209217 20.9023676,5.2448118 21.6087486,5.62758462 L24.9318751,2.30445813 L29.6955419,7.06812487 L26.3724154,10.3912514 C26.7551882,11.0976324 27.0679078,11.847514 27.301257,12.6315789 L32,12.6315789 L32,19.3684211 L27.301257,19.3684211 C27.0679078,20.152486 26.7551882,20.9023676 26.3724154,21.6087486 L29.6955419,24.9318751 L24.9318751,29.6955419 L21.6087486,26.3724154 Z" id="Combined-Shape"></path>
<circle id="Oval-6" cx="16" cy="16" r="5"></circle>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="147px" height="60px" viewBox="0 0 147 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Logo+Text</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Sign-In" transform="translate(-726.000000, -100.000000)">
<g id="Paper" transform="translate(618.000000, 100.000000)">
<g id="Logo+Text-LG" transform="translate(108.000000, 0.000000)">
<g id="Logo+Text">
<g id="Logo">
<rect id="Rectangle" fill="#0041FF" x="0" y="16" width="44" height="44"></rect>
<rect id="Rectangle" fill="#000311" x="0" y="54" width="44" height="6"></rect>
<path d="M36,15.2214765 L36,25.557047 C36,26.9062527 34.9580948,28 33.6728395,28 C32.3875843,28 31.345679,26.9062527 31.345679,25.557047 L31.345679,15.2214765 C31.345679,9.51329856 26.9376184,4.88590604 21.5,4.88590604 C16.0623816,4.88590604 11.654321,9.51329856 11.654321,15.2214765 L11.654321,25.557047 C11.654321,26.9062527 10.6124157,28 9.32716049,28 C8.04190524,28 7,26.9062527 7,25.557047 L7,15.2214765 C7,6.81488716 13.4918711,0 21.5,0 C29.5081289,0 36,6.81488716 36,15.2214765 Z" id="Combined-Shape" fill="#000311"></path>
</g>
<text id="bagisto" font-family="Montserrat-SemiBold, Montserrat" font-size="24" font-weight="500" letter-spacing="-0.3839998" fill="#0041FF">
<tspan x="59" y="45">bagisto</tspan>
</text>
</g>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

View File

@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="147px" height="60px" viewBox="0 0 147 60" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Logo+Text</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Page-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="Sign-In" transform="translate(-726.000000, -100.000000)">
<g id="Paper" transform="translate(618.000000, 100.000000)">
<g id="Logo+Text-LG" transform="translate(108.000000, 0.000000)">
<g id="Logo+Text">
<g id="Logo">
<rect id="Rectangle" fill="#0041FF" x="0" y="16" width="44" height="44"></rect>
<rect id="Rectangle" fill="#000311" x="0" y="54" width="44" height="6"></rect>
<path d="M36,15.2214765 L36,25.557047 C36,26.9062527 34.9580948,28 33.6728395,28 C32.3875843,28 31.345679,26.9062527 31.345679,25.557047 L31.345679,15.2214765 C31.345679,9.51329856 26.9376184,4.88590604 21.5,4.88590604 C16.0623816,4.88590604 11.654321,9.51329856 11.654321,15.2214765 L11.654321,25.557047 C11.654321,26.9062527 10.6124157,28 9.32716049,28 C8.04190524,28 7,26.9062527 7,25.557047 L7,15.2214765 C7,6.81488716 13.4918711,0 21.5,0 C29.5081289,0 36,6.81488716 36,15.2214765 Z" id="Combined-Shape" fill="#000311"></path>
</g>
<text id="bagisto" font-family="Montserrat-SemiBold, Montserrat" font-size="24" font-weight="500" letter-spacing="-0.3839998" fill="#0041FF">
<tspan x="59" y="45">bagisto</tspan>
</text>
</g>
</g>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +0,0 @@
{
"/js/admin.js": "/js/admin.js",
"/css/admin.css": "/css/admin.css"
}

View File

@ -1,179 +0,0 @@
.content {
padding-top: 15%;
padding-bottom: 15%;
}
.content .sign-up-text {
margin-bottom: 2%;
margin-left: auto;
margin-right: auto;
text-align: center;
font-size: 18px;
color: #5e5e5e;
letter-spacing: -0.29px;
text-align: center;
}
.content .login-form {
margin-left: auto;
margin-right: auto;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
background: #ffffff;
border: 1px solid #ffe8e8e8;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
max-width: 530px;
min-width: 380px;
min-height: 345px;
padding-left: 25px;
padding-right: 25px;
}
.content .login-form .login-text {
font-size: 24px;
font-weight: bold;
color: #3a3a3a;
letter-spacing: -0.23px;
margin-top: 5%;
margin-bottom: 3%;
}
.content .login-form .control-group {
margin-bottom: 15px !important;
}
.content .login-form .control-group .control {
width: 100% !important;
}
.content .login-form .forgot-password-link {
font-size: 17px;
color: #0031f0;
letter-spacing: -0.11px;
margin-bottom: 5%;
}
.content .login-form .signup-confirm {
letter-spacing: -0.11px;
margin-bottom: 5%;
}
.content .login-form .btn-primary {
width: 100%;
text-transform: uppercase;
border-radius: 0px;
height: 45px;
margin-bottom: 4%;
}
.dashboard-content {
width: 100%;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
margin-top: 5.5%;
margin-bottom: 5.5%;
}
.dashboard-content .dashboard-side-menu {
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: vertical;
-webkit-box-direction: normal;
-ms-flex-direction: column;
flex-direction: column;
-ms-flex-line-pack: center;
align-content: center;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
border: 1px solid #e8e8e8;
background: #ffffff;
width: 25%;
height: 100%;
text-transform: capitalize;
font-size: 16px;
color: #5e5e5e;
}
.dashboard-content .dashboard-side-menu li {
font-size: 16px;
width: 100%;
height: 50px;
margin-left: 15px;
display: -webkit-box;
display: -ms-flexbox;
display: flex;
-webkit-box-orient: horizontal;
-webkit-box-direction: normal;
-ms-flex-direction: row;
flex-direction: row;
-webkit-box-pack: start;
-ms-flex-pack: start;
justify-content: flex-start;
-webkit-box-align: center;
-ms-flex-align: center;
align-items: center;
border-bottom: 1px solid #ffe8e8e8;
text-align: center;
}
.dashboard-content .dashboard-side-menu li:first-child {
border-top: none;
}
.dashboard-content .dashboard-side-menu li:last-child {
border-bottom: none;
}
.dashboard-content .profile {
margin-left: 5.5%;
margin-top: 1%;
width: 100%;
}
.dashboard-content .profile .section-head .profile-heading {
font-size: 28px;
color: #242424;
text-transform: capitalize;
text-align: left;
}
.dashboard-content .profile .section-head .profile-edit {
font-size: 17px;
margin-top: 1%;
color: #0031f0;
letter-spacing: -0.11px;
float: right;
}
.dashboard-content .profile .section-head .horizontal-rule {
margin-top: 1.1%;
width: 100%;
height: 1px;
vertical-align: middle;
background: #e8e8e8;
}
.dashboard-content .profile-content {
font-size: 16px;
color: #5e5e5e;
margin-top: 1.4%;
}
.dashboard-content .profile-content table tbody tr {
height: 45px;
}
.dashboard-content .profile-content table tbody tr td {
width: 250px;
}

View File

@ -1,81 +0,0 @@
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "/";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
(function webpackMissingModule() { throw new Error("Cannot find module \"/home/users/prashant.singh/www/html/bagisto/packages/Webkul/Customer/src/Resources/assets/js/app.js\""); }());
module.exports = __webpack_require__(1);
/***/ }),
/* 1 */
/***/ (function(module, exports) {
// removed by extract-text-webpack-plugin
/***/ })
/******/ ]);

View File

@ -1,4 +0,0 @@
{
"/js/ui.js": "/js/ui.js",
"/css/customer.css": "/css/customer.css"
}

View File

@ -1,21 +0,0 @@
/* Author: Prashant Singh */
.footer {
background-color: #f2f2f2;
font-family: Montserrat-Regular;
display: block;
max-width: 1600px;
max-height: 344px;
margin-bottom: 0%;
height: 344px;
color: #ff242424;
font-size: 14px;
letter-spacing: -0.22px;
line-height: 18px;
}
.footer .category-list {
font-size: 16px;
color: #a5a5a5;
letter-spacing: -0.26px;
line-height: 19px;
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 851 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 278 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 320 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 320 KiB

View File

@ -1,14 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="106px" height="16px" viewBox="0 0 106 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Star-5</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Star-5" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<polygon id="Star" fill="#242424" points="8.41169779 13.2668737 3.21298265 16 4.2058489 10.2111456 2.29816166e-14 6.11145618 5.81234022 5.26687371 8.41169779 0 11.0110554 5.26687371 16.8233956 6.11145618 12.6175467 10.2111456 13.6104129 16"></polygon>
<polygon id="Star" fill="#242424" points="31.4116978 13.2668737 26.2129827 16 27.2058489 10.2111456 23 6.11145618 28.8123402 5.26687371 31.4116978 0 34.0110554 5.26687371 39.8233956 6.11145618 35.6175467 10.2111456 36.6104129 16"></polygon>
<polygon id="Star" fill="#242424" points="53.4116978 13.2668737 48.2129827 16 49.2058489 10.2111456 45 6.11145618 50.8123402 5.26687371 53.4116978 0 56.0110554 5.26687371 61.8233956 6.11145618 57.6175467 10.2111456 58.6104129 16"></polygon>
<polygon id="Star" fill="#242424" points="75.4116978 13.2668737 70.2129827 16 71.2058489 10.2111456 67 6.11145618 72.8123402 5.26687371 75.4116978 0 78.0110554 5.26687371 83.8233956 6.11145618 79.6175467 10.2111456 80.6104129 16"></polygon>
<polygon id="Star" fill="#242424" points="97.4116978 13.2668737 92.2129827 16 93.2058489 10.2111456 89 6.11145618 94.8123402 5.26687371 97.4116978 0 100.011055 5.26687371 105.823396 6.11145618 101.617547 10.2111456 102.610413 16"></polygon>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>arrow-down</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="arrow-down" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<polygon id="Rectangle-2" fill="#A5A5A5" transform="translate(9.000000, 8.000000) rotate(-45.000000) translate(-9.000000, -8.000000) " points="6 5 12 11 6 11"></polygon>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 633 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 96 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 202 KiB

View File

@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>icon-menu</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="icon-menu" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round">
<g id="Group-2" transform="translate(4.000000, 5.000000)" stroke="#242424" stroke-width="3">
<g id="Group" transform="translate(0.000000, 6.000000)">
<path d="M1,1.5 L15,1.5" id="Line-2"></path>
</g>
<g id="Group-Copy">
<path d="M1,1.5 L15,1.5" id="Line-2"></path>
</g>
<g id="Group-Copy-2" transform="translate(0.000000, 12.000000)">
<path d="M1,1.5 L15,1.5" id="Line-2"></path>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1002 B

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>icon-search</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="icon-search" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<circle id="Oval-2" stroke="#242424" stroke-width="3" cx="10.5" cy="10.5" r="7"></circle>
<path d="M15.5,15.5 L21.5,21.5" id="Line" stroke="#242424" stroke-width="3" stroke-linecap="round" stroke-linejoin="round"></path>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 694 B

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 7.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

View File

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>icon-offer</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="icon-offer" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<polygon id="Star" fill="#FF6472" points="12 21.8341033 8.29179607 23.8299999 6.46471607 20.0352146 2.29179607 19.4698579 3.04372246 15.325663 0 12.415 3.04372246 9.50433697 2.29179607 5.360142 6.46471607 4.79478531 8.29179607 1 12 2.99589665 15.7082039 1 17.5352839 4.79478531 21.7082039 5.360142 20.9562775 9.50433697 24 12.415 20.9562775 15.325663 21.7082039 19.4698579 17.5352839 20.0352146 15.7082039 23.8299999"></polygon>
<text id="%" font-family="Montserrat-Regular, Montserrat" font-size="12" font-weight="normal" letter-spacing="-0.2879999" fill="#FFFFFF">
<tspan x="7.8559999" y="17">%</tspan>
</text>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.1 KiB

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Wishlist</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Wishlist" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round">
<path d="M15.9962711,26 C15.9962711,26 3.82641602,21.6804199 5.05062701,11.3846154 C5.38182072,8.59922485 8.45774362,6 11.3052808,6 C13.3974625,6 15.1753096,7.5626878 15.9962711,9.07692308 C16.9857769,7.57771184 18.5950798,6 20.6872614,6 C23.5347986,6 26.6121993,8.59909844 26.9419152,11.3846154 C28.2089844,22.0891113 15.9962711,26 15.9962711,26 Z" id="heart" stroke="#FF6472" stroke-width="3" fill-rule="nonzero"></path>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 905 B

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="32px" height="32px" viewBox="0 0 32 32" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Wishlist-Add</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Wishlist-Add" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round">
<path d="M15.9962711,26 C15.9962711,26 3.82641602,21.6804199 5.05062701,11.3846154 C5.38182072,8.59922485 8.45774362,6 11.3052808,6 C13.3974625,6 15.1753096,7.5626878 15.9962711,9.07692308 C16.9857769,7.57771184 18.5950798,6 20.6872614,6 C23.5347986,6 26.6121993,8.59909844 26.9419152,11.3846154 C28.2089844,22.0891113 15.9962711,26 15.9962711,26 Z" id="heart" stroke="#FF6472" stroke-width="3" fill="#FF6472" fill-rule="nonzero"></path>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 928 B

View File

@ -1,81 +0,0 @@
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "/";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
(function webpackMissingModule() { throw new Error("Cannot find module \"/home/users/prashant.singh/www/html/bagisto/packages/Webkul/Shop/src/Resources/assets/js/app.js\""); }());
module.exports = __webpack_require__(1);
/***/ }),
/* 1 */
/***/ (function(module, exports) {
// removed by extract-text-webpack-plugin
/***/ })
/******/ ]);

File diff suppressed because it is too large Load Diff

View File

@ -1,80 +0,0 @@
/******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId]) {
/******/ return installedModules[moduleId].exports;
/******/ }
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ i: moduleId,
/******/ l: false,
/******/ exports: {}
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.l = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // define getter function for harmony exports
/******/ __webpack_require__.d = function(exports, name, getter) {
/******/ if(!__webpack_require__.o(exports, name)) {
/******/ Object.defineProperty(exports, name, {
/******/ configurable: false,
/******/ enumerable: true,
/******/ get: getter
/******/ });
/******/ }
/******/ };
/******/
/******/ // getDefaultExport function for compatibility with non-harmony modules
/******/ __webpack_require__.n = function(module) {
/******/ var getter = module && module.__esModule ?
/******/ function getDefault() { return module['default']; } :
/******/ function getModuleExports() { return module; };
/******/ __webpack_require__.d(getter, 'a', getter);
/******/ return getter;
/******/ };
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "/";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(__webpack_require__.s = 0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(1);
/***/ }),
/* 1 */
/***/ (function(module, exports) {
// removed by extract-text-webpack-plugin
/***/ })
/******/ ]);

View File

@ -1,8 +0,0 @@
{
"/js/footer.js": "/js/footer.js",
"/css/footer.css": "/css/footer.css",
"/js/ui.js": "/js/ui.js",
"/css/shop.css": "/css/shop.css",
"/js/shop.js": "/js/shop.js",
"/css/ui.css": "/css/ui.css"
}

File diff suppressed because it is too large Load Diff

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Accordion-Arrow-Down</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Accordion-Arrow-Down" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect id="Rectangle-2" fill="#0041FF" x="0" y="0" width="24" height="24" rx="12"></rect>
<polyline id="Path-3" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" transform="translate(12.000000, 12.000000) scale(-1, -1) rotate(-90.000000) translate(-12.000000, -12.000000) " points="10 8 14 12 10 16"></polyline>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 833 B

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Accordion-Arrow-Up</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Accordion-Arrow-Up" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect id="Rectangle-2" fill="#0041FF" x="0" y="0" width="24" height="24" rx="12"></rect>
<polyline id="Path-3" stroke="#FFFFFF" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" transform="translate(12.000000, 11.000000) scale(-1, 1) rotate(-90.000000) translate(-12.000000, -11.000000) " points="10 7 14 11 10 15"></polyline>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 828 B

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Expand-Light-On</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Expand-Light-On" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(2.000000, 6.000000)" fill="#8E8E8E" id="Path-2">
<polygon points="0 0 13.3424655 0 6.67123275 7.3125"></polygon>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 635 B

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Expand-Light-On</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Expand-Light-On" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(2.000000, 6.000000)" fill="#8E8E8E" id="Path-2">
<polygon points="0 0 13.3424655 0 6.67123275 7.3125"></polygon>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 635 B

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Angle-Right</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Angle-Right" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<polyline id="Path-3" stroke="#A2A2A2" stroke-width="3" points="7 3 14 10.058476 7.11598308 17"></polyline>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 620 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 264 B

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="8px" viewBox="0 0 14 8" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Arrow-Down-Light</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Arrow-Down-Light" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<polygon id="Path-2" fill="#8E8E8E" points="0 0 13.3424655 0 6.67123275 7.3125"></polygon>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 564 B

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="14px" height="8px" viewBox="0 0 14 8" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Arrow-Down</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Arrow-Down" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<polygon id="Path-2" fill="#000311" points="0 0 13.3424655 0 6.67123275 7.3125"></polygon>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 552 B

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Expand-Light</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Expand-Light" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(9.000000, 9.000000) rotate(-90.000000) translate(-9.000000, -9.000000) translate(2.000000, 5.000000)" fill="#3A3A3A" id="Path-2">
<polygon points="0 0 13.3424655 0 6.67123275 7.3125"></polygon>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 710 B

View File

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Checkbox-Checked</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Checkbox-Checked" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect id="Base" stroke="#0041FF" stroke-width="2" fill="#0041FF" x="1" y="1" width="22" height="22" rx="2"></rect>
<g id="Check-Accent" transform="translate(6.000000, 7.000000)" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-width="3">
<polyline id="Path-2" points="0 5 4 9 13 0"></polyline>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 824 B

View File

@ -1,11 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 51 (57462) - http://www.bohemiancoding.com/sketch -->
<title>Checkbox-Dash</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Checkbox-Dash" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect id="Base" stroke="#0041FF" stroke-width="2" fill="#FFFFFF" x="1" y="1" width="22" height="22" rx="2"></rect>
<path d="M6,12 L17.215332,12" id="Path-8" stroke="#0041FF" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"></path>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 721 B

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Checkbox</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Checkbox" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<rect id="Base" stroke="#C7C7C7" stroke-width="2" fill="#FFFFFF" x="1" y="1" width="22" height="22" rx="2"></rect>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 574 B

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Expand-Light-On</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Expand-Light-On" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(2.000000, 6.000000)" fill="#8E8E8E" id="Path-2">
<polygon points="0 0 13.3424655 0 6.67123275 7.3125"></polygon>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 635 B

View File

@ -1,12 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Expand-Light</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Expand-Light" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(9.000000, 9.000000) rotate(-90.000000) translate(-9.000000, -9.000000) translate(2.000000, 5.000000)" fill="#3A3A3A" id="Path-2">
<polygon points="0 0 13.3424655 0 6.67123275 7.3125"></polygon>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 710 B

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 51 (57462) - http://www.bohemiancoding.com/sketch -->
<title>Folder-Icon</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Folder-Icon" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M7.9555323,3 L2,3 C1.44771525,3 1,3.44771525 1,4 L1,20 C1,20.5522847 1.44771525,21 2,21 L22,21 C22.5522847,21 23,20.5522847 23,20 L23,8 C23,7.44771525 22.5522847,7 22,7 L11.9438136,7 L7.9555323,3 Z" id="Base" stroke="#C7C7C7" stroke-width="2" fill="#FFFFFF"></path>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 738 B

View File

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Icon-Back-Primary</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Icon-Back-Primary" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g id="Icon-Sort-Down" transform="translate(12.000000, 12.000000) scale(-1, 1) translate(-12.000000, -12.000000) translate(3.000000, 6.000000)" stroke="#0041FF" stroke-width="2">
<path d="M1,6 L16.068125,6" id="Path-3"></path>
<polyline id="Path-4" points="12 0 18 6.08548298 12 12"></polyline>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 856 B

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Icon-Catalog-Active</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Icon-Catalog-Active" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g transform="translate(9.000000, 7.000000)" stroke="#0041FF" stroke-width="2">
<rect id="Rectangle-2" x="0" y="0" width="30" height="34"></rect>
<path d="M6,6 L24,6" id="Path-6"></path>
<path d="M6,13 L24,13" id="Path-6"></path>
<path d="M6,20 L24,20" id="Path-6"></path>
<path d="M6,27 L24,27" id="Path-6"></path>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 917 B

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Icon-Catalog</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Icon-Catalog" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round">
<g transform="translate(9.000000, 7.000000)" stroke-width="2">
<rect id="Rectangle-2" stroke="#8E8E8E" x="0" y="0" width="30" height="34"></rect>
<path d="M6,6 L24,6" id="Path-6" stroke="#979797"></path>
<path d="M6,13 L24,13" id="Path-6" stroke="#979797"></path>
<path d="M6,20 L24,20" id="Path-6" stroke="#979797"></path>
<path d="M6,27 L24,27" id="Path-6" stroke="#979797"></path>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 971 B

View File

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Icon-Configure-Active</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Icon-Configure-Active" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(4.000000, 4.000000)" stroke="#0041FF" stroke-width="2">
<path d="M40.4050208,8.4699204 C40.7912341,9.66642796 41,10.9436642 41,12.2700565 C41,19.0466216 35.550775,24.540113 28.8288153,24.540113 C27.4775452,24.540113 26.1777068,24.3181191 24.9632274,23.9083344 L10.7535471,38.1180147 C8.57547658,40.2960852 5.04412656,40.2960852 2.86605605,38.1180147 C0.687985545,35.9399442 0.687985545,32.4085941 2.86605605,30.2305236 L17.1984629,15.8981168 C16.8469212,14.7515067 16.6576305,13.5330668 16.6576305,12.2700565 C16.6576305,5.49349141 22.1068556,0 28.8288153,0 C29.7074376,0 30.5643153,0.0938557949 31.3901218,0.272164867 L24.8494942,6.81279245 L25.5405734,14.9969882 L33.4558215,15.4191197 L40.4050208,8.4699204 Z" id="Combined-Shape" stroke-linecap="round" stroke-linejoin="round"></path>
<circle id="Oval-8" cx="7.5" cy="33.5" r="1.5"></circle>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.4 KiB

View File

@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="48px" height="48px" viewBox="0 0 48 48" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Icon-Configure</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Icon-Configure" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g transform="translate(4.000000, 4.000000)" stroke="#979797" stroke-width="2">
<path d="M40.4050208,8.4699204 C40.7912341,9.66642796 41,10.9436642 41,12.2700565 C41,19.0466216 35.550775,24.540113 28.8288153,24.540113 C27.4775452,24.540113 26.1777068,24.3181191 24.9632274,23.9083344 L10.7535471,38.1180147 C8.57547658,40.2960852 5.04412656,40.2960852 2.86605605,38.1180147 C0.687985545,35.9399442 0.687985545,32.4085941 2.86605605,30.2305236 L17.1984629,15.8981168 C16.8469212,14.7515067 16.6576305,13.5330668 16.6576305,12.2700565 C16.6576305,5.49349141 22.1068556,0 28.8288153,0 C29.7074376,0 30.5643153,0.0938557949 31.3901218,0.272164867 L24.8494942,6.81279245 L25.5405734,14.9969882 L33.4558215,15.4191197 L40.4050208,8.4699204 Z" id="Combined-Shape" stroke-linecap="round" stroke-linejoin="round"></path>
<circle id="Oval-8" cx="7.5" cy="33.5" r="1.5"></circle>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.3 KiB

View File

@ -1,10 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<!-- Generator: Sketch 50.2 (55047) - http://www.bohemiancoding.com/sketch -->
<title>Icon-Crossed</title>
<desc>Created with Sketch.</desc>
<defs></defs>
<g id="Icon-Crossed" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<path d="M9,8.35557738 L12.2221131,5.13346429 C12.4000655,4.9555119 12.6885833,4.9555119 12.8665357,5.13346429 C13.0444881,5.31141669 13.0444881,5.59993452 12.8665357,5.77788691 L9.64442262,9 L12.8665357,12.2221131 C13.0444881,12.4000655 13.0444881,12.6885833 12.8665357,12.8665357 C12.6885833,13.0444881 12.4000655,13.0444881 12.2221131,12.8665357 L9,9.64442262 L5.77788691,12.8665357 C5.59993452,13.0444881 5.31141669,13.0444881 5.13346429,12.8665357 C4.9555119,12.6885833 4.9555119,12.4000655 5.13346429,12.2221131 L8.35557738,9 L5.13346429,5.77788691 C4.9555119,5.59993452 4.9555119,5.31141669 5.13346429,5.13346429 C5.31141669,4.9555119 5.59993452,4.9555119 5.77788691,5.13346429 L9,8.35557738 Z" id="Combined-Shape" fill="#8E8E8E"></path>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

Some files were not shown because too many files have changed in this diff Show More