diff --git a/.env.example b/.env.example deleted file mode 100644 index c06b4a2b..00000000 --- a/.env.example +++ /dev/null @@ -1,94 +0,0 @@ -APP_NAME=Laravel -APP_ENV=local -APP_KEY= -APP_DEBUG=true -APP_URL=http://127.0.0.1:8000 -DEBUGBAR_ENABLED=false - -LOG_CHANNEL=stack -LOG_LEVEL=debug - -DB_CONNECTION=mysql -DB_HOST=127.0.0.1 -DB_PORT=3306 -DB_DATABASE=database_name -DB_USERNAME=root -DB_PASSWORD= - -BROADCAST_DRIVER=log -CACHE_DRIVER=file -QUEUE_CONNECTION=database -SESSION_DRIVER=database -SESSION_LIFETIME=120 - -MEMCACHED_HOST=127.0.0.1 - -REDIS_HOST=127.0.0.1 -REDIS_PASSWORD=null -REDIS_PORT=6379 - -MAIL_MAILER=smtp -MAIL_HOST=mailhog -MAIL_PORT=1025 -MAIL_USERNAME=null -MAIL_PASSWORD=null -MAIL_ENCRYPTION=null -MAIL_FROM_ADDRESS=null -MAIL_FROM_NAME="${APP_NAME}" - -AWS_ACCESS_KEY_ID= -AWS_SECRET_ACCESS_KEY= -AWS_DEFAULT_REGION=us-east-1 -AWS_BUCKET= -AWS_URL="https://${AWS_BUCKET}.fra1.digitaloceanspaces.com" -AWS_ENDPOINT=https://fra1.digitaloceanspaces.com -#STORAGE_URL="${AWS_URL}"/public - -PUSHER_APP_ID= -PUSHER_APP_KEY= -PUSHER_APP_SECRET= -PUSHER_APP_CLUSTER=mt1 - -MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}" -MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" - - -######### - -FILESYSTEM_DRIVER=local -STORAGE_URL=/storage - - -DEFAULT_IMAGE="${APP_URL}/images/default/image.jpg" -DEFAULT_IMAGE_FAVICON="${APP_URL}/images/default/favicon.png" -DEFAULT_IMAGE_AVATAR="${APP_URL}/images/default/avatar.png" -DEFAULT_IMAGE_LOGO="${APP_URL}/images/default/logo.png" -DEFAULT_IMAGE_WIDELOGO="${APP_URL}/images/default/wide-logo.png" -DEFAULT_IMAGE_COVER="${APP_URL}/images/default/cover.png" -DEFAULT_IMAGE_NOTIFICATION="${APP_URL}/images/default/notification.png" - -DEFAULT_EMAIL=admin@admin.com -DEFAULT_PHONE=0123456 -DEFAULT_PASSWORD=password - - -#GET RECAPTHA FROM https://www.google.com/recaptcha/admin/ -RECAPTCHA_SITE_KEY= -RECAPTCHA_SECRET_KEY= -RECAPTCHA_SKIP_IP= - - -#GET ID & SECRET FROM https://console.cloud.google.com/apis/credentials & Create project then create OAuth 2.0 -GOOGLE_CLIENT_ID= -GOOGLE_CLIENT_SECRET= - -#GET ID & SECRET FROM https://developers.facebook.com/apps/create/ & get keys -FACEBOOK_CLIENT_ID= -FACEBOOK_CLIENT_SECRET= - - - -#ENABLED DDOS ATTACK FROM CLOUDFLARE -CLOUDFLARE_EMAIL= -CLOUDFLARE_AUTH_KEY= -CLOUDFLARE_ZONE= diff --git a/app/Http/Controllers/Backend/BackendArticleController.php b/app/Http/Controllers/Backend/BackendArticleController.php index a409cb65..b2d63f3a 100644 --- a/app/Http/Controllers/Backend/BackendArticleController.php +++ b/app/Http/Controllers/Backend/BackendArticleController.php @@ -5,6 +5,7 @@ use App\Http\Controllers\Controller; use App\Models\Article; use App\Models\Category; +use App\Models\Editor; use App\Models\Tag; use Illuminate\Http\Request; @@ -39,8 +40,9 @@ public function index(Request $request) public function create() { $tags = Tag::get(); - $categories= Category::orderBy('id','DESC')->get(); - return view('admin.articles.create',compact('categories','tags')); + $categories= Category::orderBy('title','DESC')->get(); + $editors=Editor::orderBy('name','DESC')->get(); + return view('admin.articles.create',compact('categories','tags','editors')); } /** @@ -56,22 +58,27 @@ public function store(Request $request) ]); $request->validate([ 'slug'=>"required|max:190|unique:articles,slug", - 'category_id'=>"required|array", - 'category_id.*'=>"required|exists:categories,id", + 'category_id'=>"required|exists:categories,id", + 'editor_id'=>"required|exists:editors,id", 'is_featured'=>"required|in:0,1", 'title'=>"required|max:190", + 'file_url'=>"max:400", 'description'=>"nullable|max:100000", 'meta_description'=>"nullable|max:10000", ]); $article = Article::create([ 'user_id'=>auth()->user()->id, + 'editor_id'=>$request->editor_id, + 'category_id'=>$request->category_id, + "slug"=>$request->slug, "is_featured"=>$request->is_featured==1?1:0, "title"=>$request->title, + "file_url"=>$request->file_url, + "description"=>$request->description, "meta_description"=>$request->meta_description, ]); - $article->categories()->sync($request->category_id); $article->tags()->sync($request->tag_id); \MainHelper::move_media_to_model_by_id($request->temp_file_selector,$article,"description"); if($request->hasFile('main_image')){ @@ -102,8 +109,9 @@ public function show(Article $article) public function edit(Article $article) { $tags = Tag::get(); - $categories= Category::orderBy('id','DESC')->get(); - return view('admin.articles.edit',compact('article','categories','tags')); + $categories= Category::orderBy('title','DESC')->get(); + $editors=Editor::orderBy('name','DESC')->get(); + return view('admin.articles.edit',compact('article','categories','tags','editors')); } /** @@ -121,22 +129,25 @@ public function update(Request $request, Article $article) $request->validate([ 'slug'=>"required|max:190|unique:articles,slug,".$article->id, - 'category_id'=>"required|array", - 'category_id.*'=>"required|exists:categories,id", + 'category_id'=>"required|exists:categories,id", + 'editor_id'=>"required|exists:editors,id", 'is_featured'=>"required|in:0,1", 'title'=>"required|max:190", + 'file_url'=>"max:400", 'description'=>"nullable|max:100000", 'meta_description'=>"nullable|max:10000", ]); $article->update([ 'user_id'=>auth()->user()->id, "slug"=>$request->slug, + "editor_id"=>$request->editor_id, + "category_id"=>$request->category_id, "is_featured"=>$request->is_featured==1?1:0, "title"=>$request->title, + "file_url"=>$request->file_url, "description"=>$request->description, "meta_description"=>$request->meta_description, ]); - $article->categories()->sync($request->category_id); $article->tags()->sync($request->tag_id); \MainHelper::move_media_to_model_by_id($request->temp_file_selector,$article,"description"); if($request->hasFile('main_image')){ diff --git a/app/Http/Controllers/Backend/BackendEditorController.php b/app/Http/Controllers/Backend/BackendEditorController.php new file mode 100644 index 00000000..c59f55a4 --- /dev/null +++ b/app/Http/Controllers/Backend/BackendEditorController.php @@ -0,0 +1,146 @@ +middleware('can:editors-create', ['only' => ['create','store']]); + $this->middleware('can:editors-read', ['only' => ['show', 'index']]); + $this->middleware('can:editors-update', ['only' => ['edit','update']]); + $this->middleware('can:editors-delete', ['only' => ['delete']]); + } + /** + * Display a listing of the resource. + * + * @return \Illuminate\Http\Response + */ + public function index(Request $request) + { + $editors = Editor::where(function($q)use($request){ + if($request->id!=null) + $q->where('id',$request->id); + if($request->q!=null) + $q->where('name','LIKE','%'.$request->q.'%')->orWhere('description','LIKE','%'.$request->q.'%'); + })->withCount(['articles'])->orderBy('id','DESC')->paginate(); + + return view('admin.editors.index',compact('editors')); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + return view('admin.editors.create'); + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + $request->merge([ + 'slug'=>\MainHelper::slug($request->slug) + ]); + + $request->validate([ + 'slug'=>"required|max:190|unique:editors,slug", + 'name'=>"required|max:190", + 'description'=>"nullable|max:10000", + 'meta_description'=>"nullable|max:10000", + ]); + $editor = Editor::create([ + "slug"=>$request->slug, + "name"=>$request->name, + "description"=>$request->description, + "meta_description"=>$request->meta_description, + ]); + if($request->hasFile('avatar')){ + $image = $editor->addMedia($request->avatar)->toMediaCollection('image'); + $editor->update(['avatar'=>$image->id.'/'.$image->file_name]); + } + \MainHelper::move_media_to_model_by_id($request->temp_file_selector,$editor,"description"); + toastr()->success(__('utils/toastr.editor_store_success_message'), __('utils/toastr.successful_process_message')); + return redirect()->route('admin.editors.index'); + } + + /** + * Display the specified resource. + * + * @param \App\Models\Editor $editor + * @return \Illuminate\Http\Response + */ + public function show(Editor $editor) + { + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\Editor $editor + * @return \Illuminate\Http\Response + */ + public function edit(Editor $editor) + { + return view('admin.editors.edit',compact('editor')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\Editor $editor + * @return \Illuminate\Http\Response + */ + public function update(Request $request, Editor $editor) + { + $request->merge([ + 'slug'=>\MainHelper::slug($request->slug) + ]); + + $request->validate([ + 'slug'=>"required|max:190|unique:editors,slug,".$editor->id, + 'name'=>"required|max:190", + 'description'=>"nullable|max:10000", + 'meta_description'=>"nullable|max:10000", + ]); + $editor->update([ + "slug"=>$request->slug, + "name"=>$request->name, + "description"=>$request->description, + "meta_description"=>$request->meta_description, + ]); + if($request->hasFile('avatar')){ + $image = $editor->addMedia($request->avatar)->toMediaCollection('avatar'); + $editor->update(['avatar'=>$image->id.'/'.$image->file_name]); + } + \MainHelper::move_media_to_model_by_id($request->temp_file_selector,$editor,"description"); + toastr()->success(__('utils/toastr.editor_update_success_message'), __('utils/toastr.successful_process_message')); + return redirect()->route('admin.editors.index'); + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\Editor $editor + * @return \Illuminate\Http\Response + */ + public function destroy(Editor $editor) + { + $editor->delete(); + toastr()->success(__('utils/toastr.editor_destroy_success_message'), __('utils/toastr.successful_process_message')); + return redirect()->route('admin.editors.index'); + } +} diff --git a/app/Http/Controllers/FrontController.php b/app/Http/Controllers/FrontController.php index edc82aca..6d564381 100644 --- a/app/Http/Controllers/FrontController.php +++ b/app/Http/Controllers/FrontController.php @@ -14,9 +14,22 @@ class FrontController extends Controller { - public function index(Request $request) + public function index() { - return view('front.index'); + $research=Article::research()->latest()->get()->take(5); + + $most_viewed_research=Article::research()->orderBy('views', 'desc')->get()->take(4); + + $latestposts=Article::article()->latest()->get()->take(5); + + $latestnews=Article::news()->latest()->get()->take(4); + + $discussions=Article::discussion()->latest()->get()->take(4); + $policies=Article::policies()->latest()->get()->take(4); + $booksReviews=Article::booksReview()->latest()->get()->take(4); + $books=Article::book()->latest()->get()->take(4); + + return view('front.index',compact('research','most_viewed_research','latestnews','latestposts','discussions','policies','booksReviews','books')); } public function comment_post(Request $request) @@ -94,7 +107,7 @@ public function tag(Request $request,Tag $tag){ } public function article(Request $request,Article $article) { - $article->load(['categories','comments'=>function($q){$q->where('reviewed',1);},'tags'])->loadCount(['comments'=>function($q){$q->where('reviewed',1);}]); + $article->load(['category','comments'=>function($q){$q->where('reviewed',1);},'tags'])->loadCount(['comments'=>function($q){$q->where('reviewed',1);}]); $this->views_increase_article($article); return view('front.pages.article',compact('article')); } diff --git a/app/Http/Controllers/Frontend/AjaxController.php b/app/Http/Controllers/Frontend/AjaxController.php new file mode 100644 index 00000000..13e9a4a6 --- /dev/null +++ b/app/Http/Controllers/Frontend/AjaxController.php @@ -0,0 +1,44 @@ +likes()->where('user_id', Auth::user()->id)->get()->isEmpty()){ + $like=new Like(); + $like->post_id=$id; + $like->user_id=Auth::user()->id; + $like->liked=1; + $like->save(); + } + else{ + Like::where(['post_id'=>$id],['user_id'=>Auth::user()->id])->delete(); + } + + + } + + public function favorites($id){ + if(Article::find($id)->favorites()->where('user_id', Auth::user()->id)->get()->isEmpty()){ + $favorite=new Favorite(); + $favorite->post_id=$id; + $favorite->user_id=Auth::user()->id; + $favorite->save(); + } + else{ + Favorite::where(['post_id'=>$id],['user_id'=>Auth::user()->id])->delete(); + } + + + } +} diff --git a/app/Http/Controllers/Frontend/DownloadController.php b/app/Http/Controllers/Frontend/DownloadController.php new file mode 100644 index 00000000..bf96204d --- /dev/null +++ b/app/Http/Controllers/Frontend/DownloadController.php @@ -0,0 +1,46 @@ +download_count += 1; + $model->save(); + } + } + + public function downloadIncrement($id,$type) + { + + switch ($type) { + case "post": + $this->incrementDownloadCount(Article::class, $id); + break; + + case "research": + $this->incrementDownloadCount(Research::class, $id); + break; + + case "subject": + $this->incrementDownloadCount(Subject::class, $id); + break; + + default: + return response()->json(['error' => 'Invalid type']); + } + + return response()->json(['success' => true]); + } + +} diff --git a/app/Http/Controllers/Frontend/HomeController.php b/app/Http/Controllers/Frontend/HomeController.php new file mode 100644 index 00000000..ed48e159 --- /dev/null +++ b/app/Http/Controllers/Frontend/HomeController.php @@ -0,0 +1,89 @@ +latest()->get()->take(5); + + $most_viewed_research=Article::research()->orderBy('views', 'desc')->get()->take(4); + + $latestposts=Article::article()->latest()->get()->take(5); + + $latestnews=Article::news()->latest()->get()->take(4); + + $discussions=Article::discussion()->latest()->get()->take(4); + $policies=Article::policies()->latest()->get()->take(4); + $booksReviews=Article::booksReview()->latest()->get()->take(4); + $books=Article::book()->latest()->get()->take(4); + $workshops_latest=Article::workshop()->latest()->get()->take(3); + $workshops_most=Article::workshop()->orderBy('views', 'desc')->get()->take(3); + $featured_posts=Article::featured()->latest()->get(); + $categories = Category::withCount(['articles'])->orderBy('articles_count','DESC')->get(); + + return view('front.index',compact('research','categories','most_viewed_research','featured_posts','latestnews','workshops_latest','workshops_most','latestposts','discussions','policies','booksReviews','books')); + } + + + public function category($category) + { + $latestnews=Article::news()->latest()->get()->take(4); + + $discussions=Article::discussion()->latest()->get()->take(4); + $policies=Article::policies()->latest()->get()->take(4); + $categories = Category::withCount(['articles'])->orderBy('articles_count','DESC')->get(); + + $category=Category::where('slug',$category)->firstOrFail(); + $posts=$category->articles()->paginate(6); + + return view('front.category',compact('category','categories','posts','latestnews','discussions','policies')); + } + + public function authors() + { + $latestnews=Article::news()->latest()->get()->take(4); + + $discussions=Article::discussion()->latest()->get()->take(4); + $policies=Article::policies()->latest()->get()->take(4); + $categories = Category::withCount(['articles'])->orderBy('articles_count','DESC')->get(); + + $authors=Editor::withCount(['articles'])->orderBy('articles_count','DESC')->paginate(6); + + return view('front.authors',compact('authors','categories','latestnews','discussions','policies')); + } + public function author($author) + { + $latestnews=Article::news()->latest()->get()->take(4); + + $discussions=Article::discussion()->latest()->get()->take(4); + $policies=Article::policies()->latest()->get()->take(4); + $categories = Category::withCount(['articles'])->orderBy('articles_count','DESC')->get(); + + $author=Editor::where('slug',$author)->firstOrFail(); + $posts=$author->articles()->paginate(6); + return view('front.author',compact('author','categories','posts','latestnews','discussions','policies')); + } + + public function page($page) + { + $latestnews=Article::news()->latest()->get()->take(4); + + $discussions=Article::discussion()->latest()->get()->take(4); + $policies=Article::policies()->latest()->get()->take(4); + $categories = Category::withCount(['articles'])->orderBy('articles_count','DESC')->get(); + + $page=Page::where('slug',$page)->firstOrFail(); + return view('front.page',compact('page','categories','latestnews','discussions','policies')); + } + +} diff --git a/app/Http/Controllers/Frontend/PostController.php b/app/Http/Controllers/Frontend/PostController.php new file mode 100644 index 00000000..ea3a67cc --- /dev/null +++ b/app/Http/Controllers/Frontend/PostController.php @@ -0,0 +1,153 @@ +latest()->paginate(3); + $cats=Category::all(); + $most_tags =Tag::withCount('post_tags')->orderBy('post_tags_count', 'desc')->get()->take(5); + $most_posts =Post::published()->withCount('likes')->orderBy('likes_count', 'desc')->get()->take(9); + $most_editors=Editor::withCount('likes')->orderBy('likes_count','desc')->get()->take(3); + $pinnednews=News::published()->wherePinned('1')->get(); + $latestnews=News::published()->latest()->get()->take(6); + $sorted='latest'; + $cated='all'; + //$most_editors=Editor::with('posts')->sum('visits_count')->orderBy('aggregate','desc')->get()->take(3); + + return view('articles',compact('posts','cats','most_tags','most_editors','pinnednews','latestnews','most_posts','sorted','cated')); + */ + } + + public function views_increase_article(Article $article) + { + $counter = $article->item_seens()->where('type',"ARTICLE")->where('ip',\UserSystemInfoHelper::get_ip())->whereDate('created_at', \Carbon::today())->count(); + if (!$counter) { + ItemSeen::create([ + 'type_id'=>$article->id, + 'type'=>"ARTICLE", + 'ip'=>\UserSystemInfoHelper::get_ip(), + 'prev_link'=>\UserSystemInfoHelper::prev_url(), + 'agent_name'=>request()->header('User-Agent'), + 'browser'=>\UserSystemInfoHelper::get_browsers(), + 'device'=>\UserSystemInfoHelper::get_device(), + 'operating_system'=>\UserSystemInfoHelper::get_os() + ]); + $article->update(['views' => $article->views + 1]); + } + } + + public function article($category,$post_slug) + { + + $latestnews=Article::news()->latest()->get()->take(4); + + $discussions=Article::discussion()->latest()->get()->take(4); + $policies=Article::policies()->latest()->get()->take(4); + $categories = Category::withCount(['articles'])->orderBy('articles_count','DESC')->get(); + + $article=Article::where('slug',$post_slug)->first(); + if($article) + $article->load(['category','tags']); + $this->views_increase_article($article); + return view('front.article',compact('article','categories','latestnews','discussions','policies')); + } + + public function filter($filter_type,$filter_para) + { + /* $cats=Category::all(); + $most_tags =Tag::withCount('post_tags')->orderBy('post_tags_count', 'desc')->get()->take(5); + $most_posts =Post::published()->withCount('likes')->orderBy('likes_count', 'desc')->get()->take(9); + $most_editors=Editor::withCount('likes')->orderBy('likes_count','desc')->get()->take(3); + $pinnednews=News::published()->wherePinned('1')->get(); + $latestnews=News::published()->latest()->get()->take(6); + $sorted='latest'; + $cated='all'; + + switch($filter_type){ + case 'tags': + $posts = Post::published()->whereHas('tags', function($query) use ($filter_para) { + $query->wheretag_text($filter_para); + })->paginate(3);break; + case 'editors': + $posts=Editor::find($filter_para)->posts()->published()->paginate(3); + break; + case 'categories': + $cated=$filter_para; + $posts=Category::find($filter_para)->posts()->published()->paginate(3); + break; + case 'search': + $posts=Post::published()->latest()->paginate(3); + break; + case 'sort': + $sorted=$filter_para; + if($filter_para=='latest') + $posts=Post::published()->latest()->paginate(3); + else if($filter_para=='most_liked') + $posts=Post::published()->withCount('likes')->orderBy('likes_count', 'desc')->paginate(3); + else if($filter_para=='most_visited') + $posts=Post::published()->orderBy('visits_count','desc')->paginate(3); + else if($filter_para=='favorited') + if(Auth::user()) + $posts=Auth::user()->favorites()->paginate(3); + else + return redirect('login'); + + } + + return view('articles',compact('posts','cats','most_tags','most_editors','pinnednews','latestnews','most_posts','sorted','cated')); + */ + } + + public function read_more($article_id){ + /* $cats=Category::all(); + $most_tags =Tag::withCount('post_tags')->orderBy('post_tags_count', 'desc')->get()->take(5); + $most_posts =Post::published()->withCount('likes')->orderBy('likes_count', 'desc')->get()->take(9); + $most_editors=Editor::withCount('likes')->orderBy('likes_count','desc')->get()->take(3); + $pinnednews=News::published()->wherePinned('1')->get(); + $latestnews=News::published()->latest()->get()->take(6); + $sorted='latest'; + $cated='all'; + + $post=Post::published()->find($article_id); + $post->increment('visits_count') ; + return view('article',compact('post','cats','most_tags','most_editors','pinnednews','latestnews','most_posts','sorted','cated')); + */ + } + + public function copyinc($id){ + $post=Article::find($id); + $post->increment('quotes_count') ; + } + public function search(Request $request) + { + /* $search_word= $request->get('search'); + $posts = Post::search($search_word ,null, true)->published()->paginate(Post::count()); + $cats=Category::all(); + $most_tags =Tag::withCount('post_tags')->orderBy('post_tags_count', 'desc')->get()->take(5); + $most_posts =Post::published()->withCount('likes')->orderBy('likes_count', 'desc')->get()->take(9); + $most_editors=Editor::withCount('likes')->orderBy('likes_count','desc')->get()->take(3); + $pinnednews=News::published()->wherePinned('1')->get(); + $latestnews=News::published()->latest()->get()->take(6); + $sorted='latest'; + $cated='all'; + //$most_editors=Editor::with('posts')->sum('visits_count')->orderBy('aggregate','desc')->get()->take(3); + + return view('articles',compact('search_word','posts','cats','most_tags','most_editors','pinnednews','latestnews','most_posts','sorted','cated')); + + */ + } +} diff --git a/app/Models/Article.php b/app/Models/Article.php index c6435eec..b73c5a16 100644 --- a/app/Models/Article.php +++ b/app/Models/Article.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Builder; use Spatie\MediaLibrary\MediaCollections\Models\Media; use Spatie\MediaLibrary\InteractsWithMedia; @@ -25,8 +26,13 @@ public function item_seens() public function user(){ return $this->belongsTo(\App\Models\User::class); } - public function categories(){ - return $this->belongsToMany(\App\Models\Category::class,'article_categories'); + + + public function category(){ + return $this->belongsTo(\App\Models\Category::class); + } + public function editor(){ + return $this->belongsTo(\App\Models\Editor::class); } public function comments(){ return $this->hasMany(\App\Models\ArticleComment::class,'article_id'); @@ -42,6 +48,59 @@ public function tags(){ } + public function scopeResearch(Builder $query) + { + $category=Category::where('title','الأبحاث')->limit(1)->get()[0]; + return $query->where('category_id', $category->id); + } + + public function scopeArticle(Builder $query) + { + $category=Category::where('title','المقالات البحثية')->limit(1)->get()[0]; + return $query->where('category_id', $category->id); + } + + public function scopeNews(Builder $query) + { + $category=Category::where('title','الأخبار')->limit(1)->get()[0]; + return $query->where('category_id', $category->id); + } + + public function scopeDiscussion(Builder $query) + { + $category=Category::where('title','الحوارات')->limit(1)->get()[0]; + return $query->where('category_id', $category->id); + } + + public function scopePolicies(Builder $query) + { + $category=Category::where('title','أوراق السياسات')->limit(1)->get()[0]; + return $query->where('category_id', $category->id); + } + + public function scopeBooksReview(Builder $query) + { + $category=Category::where('title','مراجعات الكتب')->limit(1)->get()[0]; + return $query->where('category_id', $category->id); + } + + public function scopeBook(Builder $query) + { + $category=Category::where('title','إصدارات المركز')->limit(1)->get()[0]; + return $query->where('category_id', $category->id); + } + + public function scopeWorkshop(Builder $query) + { + $category=Category::where('title','أوراق العمل')->limit(1)->get()[0]; + return $query->where('category_id', $category->id); + } + + public function scopeFeatured(Builder $query) + { + return $query->where('is_featured', 1); + } + public function registerMediaConversions(Media $media = null): void { $this diff --git a/app/Models/Category.php b/app/Models/Category.php index b03484e4..3ed87714 100644 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -27,7 +27,7 @@ public function getUrlAttribute(){ return route('category.show',$this); } public function articles(){ - return $this->belongsToMany(\App\Models\Article::class,'article_categories'); + return $this->hasMany(\App\Models\Article::class); } public function image($type='thumb'){ if($this->image==null) diff --git a/app/Models/Editor.php b/app/Models/Editor.php new file mode 100644 index 00000000..33189b32 --- /dev/null +++ b/app/Models/Editor.php @@ -0,0 +1,62 @@ +hasMany(\App\Models\Article::class); + } + + public function avatar($type='thumb'){ + if($this->avatar==null) + return env('DEFAULT_IMAGE'); + else + return env("STORAGE_URL").'/'.\MainHelper::get_conversion($this->avatar,$type); + } + public function registerMediaConversions(Media $media = null): void + { + $this + ->addMediaConversion('tiny') + ->fit(Manipulations::FIT_MAX, 120, 120) + ->width(120) + ->format(Manipulations::FORMAT_WEBP) + ->nonQueued(); + + $this + ->addMediaConversion('thumb') + ->fit(Manipulations::FIT_MAX, 350, 1000) + ->width(350) + ->format(Manipulations::FORMAT_WEBP) + ->nonQueued(); + + $this + ->addMediaConversion('original') + ->fit(Manipulations::FIT_MAX, 1200,10000) + ->width(1200) + ->format(Manipulations::FORMAT_WEBP) + ->nonQueued(); + } + +} diff --git a/app/Models/Post.php b/app/Models/Post.php new file mode 100644 index 00000000..f3e44740 --- /dev/null +++ b/app/Models/Post.php @@ -0,0 +1,151 @@ + [ + 'posts.title' => 10, + 'posts.excerpt'=>4, + 'posts.body' => 4, + 'editors.name'=>2, + 'tags.tag_text'=>5, + + ], + 'joins' => [ + 'editors' => ['posts.editor_id','editors.id'], + 'post_tag'=>['posts.id','post_id'], + 'tags'=>['tags.id','post_tag.tag_id'] + ], + + ]; + protected $guarded = []; + + + + + /** + * Scope a query to only published scopes. + * + * @param \Illuminate\Database\Eloquent\Builder $query + * + * @return \Illuminate\Database\Eloquent\Builder + */ + public function scopePublished(Builder $query) + { + return $query->where('created_at', '<=', \Carbon\Carbon::now()->toDateTimeString()); + } + + public function scopeResearch(Builder $query) + { + $category=Category::where('title','الأبحاث')->limit(1)->get()[0]; + return $query->where('category_id', $category->id); + } + + public function scopeArticle(Builder $query) + { + $category=Category::where('title','المقالات البحثية')->limit(1)->get()[0]; + return $query->where('category_id', $category->id); + } + + public function scopeNews(Builder $query) + { + $category=Category::where('title','الأخبار')->limit(1)->get()[0]; + return $query->where('category_id', $category->id); + } + + public function scopeDiscussion(Builder $query) + { + $category=Category::where('title','الحوارات')->limit(1)->get()[0]; + return $query->where('category_id', $category->id); + } + + public function scopePolicies(Builder $query) + { + $category=Category::where('title','أوراق السياسات')->limit(1)->get()[0]; + return $query->where('category_id', $category->id); + } + + public function scopeBooksReview(Builder $query) + { + $category=Category::where('title','مراجعات الكتب')->limit(1)->get()[0]; + return $query->where('category_id', $category->id); + } + + public function scopeBook(Builder $query) + { + $category=Category::where('title','إصدارات المركز')->limit(1)->get()[0]; + return $query->where('category_id', $category->id); + } + public function scopeWorkshop(Builder $query) + { + $category=Category::where('title','أوراق العمل')->limit(1)->get()[0]; + return $query->where('category_id', $category->id); + } + public function scopeFeatured(Builder $query) + { + return $query->where('is_featured', 1); + } + /** + * @return \Illuminate\Database\Eloquent\Relations\HasOne + */ + public function category() + { + return $this->belongsTo(Category::class); + } + + public function editor() + { + return $this->belongsTo(Editor::class); + } + + public function tags() + { + return $this->belongsToMany(Tag::class, 'article_tags', 'article_id', 'tag_id'); + } + + public function likes(){ + return $this->hasMany(Like::class); + } + + public function item_seens() + { + return $this->hasMany(\App\Models\ItemSeen::class,'type_id','id')->where('type',"ARTICLE"); + } + + public function favorites(){ + return $this->hasMany(Favorite::class); + } + + public function main_image($type='thumb'){ + if($this->main_image==null) + return env('DEFAULT_IMAGE'); + else + return env("STORAGE_DOMAIN").env("STORAGE_URL").'/'.\App\Helpers\MainHelper::get_conversion($this->main_image,$type); + } +} diff --git a/config/filesystems.php b/config/filesystems.php index b4bcae2a..b122fc06 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -33,6 +33,7 @@ 'local' => [ 'driver' => 'local', 'root' => storage_path('app'), + 'visibility' => 'public', ], 'public' => [ diff --git a/public/front/css/all.min.css b/public/front/css/all.min.css new file mode 100644 index 00000000..fd899f93 --- /dev/null +++ b/public/front/css/all.min.css @@ -0,0 +1,5 @@ +/*! + * Font Awesome Free 5.5.0 by @fontawesome - https://fontawesome.com + * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) + */ +.fa,.fab,.fal,.far,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-lg{font-size:1.33333em;line-height:.75em;vertical-align:-.0667em}.fa-xs{font-size:.75em}.fa-sm{font-size:.875em}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-fw{text-align:center;width:1.25em}.fa-ul{list-style-type:none;margin-right:2.5em;padding-right:0}.fa-ul>li{position:relative}.fa-li{right:-2em;position:absolute;text-align:center;width:2em;line-height:inherit}.fa-border{border:.08em solid #eee;border-radius:.1em;padding:.2em .25em .15em}.fa-pull-left{float:right}.fa-pull-right{float:left}.fa.fa-pull-left,.fab.fa-pull-left,.fal.fa-pull-left,.far.fa-pull-left,.fas.fa-pull-left{margin-left:.3em}.fa.fa-pull-right,.fab.fa-pull-right,.fal.fa-pull-right,.far.fa-pull-right,.fas.fa-pull-right{margin-right:.3em}.fa-spin{animation:fa-spin 2s infinite linear}.fa-pulse{animation:fa-spin 1s infinite steps(8)}@keyframes fa-spin{0%{transform:rotate(0deg)}to{transform:rotate(-1turn)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";transform:rotate(-90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";transform:rotate(-180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";transform:rotate(-270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";transform:scaleX(-1)}.fa-flip-vertical{transform:scaleY(-1)}.fa-flip-horizontal.fa-flip-vertical,.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)"}.fa-flip-horizontal.fa-flip-vertical{transform:scale(-1)}:root .fa-flip-horizontal,:root .fa-flip-vertical,:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270{-webkit-filter:none;filter:none}.fa-stack{display:inline-block;height:2em;line-height:2em;position:relative;vertical-align:middle;width:2.5em}.fa-stack-1x,.fa-stack-2x{right:0;position:absolute;text-align:center;width:100%}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-500px:before{content:"\f26e"}.fa-accessible-icon:before{content:"\f368"}.fa-accusoft:before{content:"\f369"}.fa-acquisitions-incorporated:before{content:"\f6af"}.fa-ad:before{content:"\f641"}.fa-address-book:before{content:"\f2b9"}.fa-address-card:before{content:"\f2bb"}.fa-adjust:before{content:"\f042"}.fa-adn:before{content:"\f170"}.fa-adversal:before{content:"\f36a"}.fa-affiliatetheme:before{content:"\f36b"}.fa-air-freshener:before{content:"\f5d0"}.fa-algolia:before{content:"\f36c"}.fa-align-center:before{content:"\f037"}.fa-align-justify:before{content:"\f039"}.fa-align-left:before{content:"\f036"}.fa-align-right:before{content:"\f038"}.fa-alipay:before{content:"\f642"}.fa-allergies:before{content:"\f461"}.fa-amazon:before{content:"\f270"}.fa-amazon-pay:before{content:"\f42c"}.fa-ambulance:before{content:"\f0f9"}.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-amilia:before{content:"\f36d"}.fa-anchor:before{content:"\f13d"}.fa-android:before{content:"\f17b"}.fa-angellist:before{content:"\f209"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-down:before{content:"\f107"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angry:before{content:"\f556"}.fa-angrycreative:before{content:"\f36e"}.fa-angular:before{content:"\f420"}.fa-ankh:before{content:"\f644"}.fa-app-store:before{content:"\f36f"}.fa-app-store-ios:before{content:"\f370"}.fa-apper:before{content:"\f371"}.fa-apple:before{content:"\f179"}.fa-apple-alt:before{content:"\f5d1"}.fa-apple-pay:before{content:"\f415"}.fa-archive:before{content:"\f187"}.fa-archway:before{content:"\f557"}.fa-arrow-alt-circle-down:before{content:"\f358"}.fa-arrow-alt-circle-left:before{content:"\f359"}.fa-arrow-alt-circle-right:before{content:"\f35a"}.fa-arrow-alt-circle-up:before{content:"\f35b"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-down:before{content:"\f063"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrows-alt:before{content:"\f0b2"}.fa-arrows-alt-h:before{content:"\f337"}.fa-arrows-alt-v:before{content:"\f338"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asterisk:before{content:"\f069"}.fa-asymmetrik:before{content:"\f372"}.fa-at:before{content:"\f1fa"}.fa-atlas:before{content:"\f558"}.fa-atom:before{content:"\f5d2"}.fa-audible:before{content:"\f373"}.fa-audio-description:before{content:"\f29e"}.fa-autoprefixer:before{content:"\f41c"}.fa-avianex:before{content:"\f374"}.fa-aviato:before{content:"\f421"}.fa-award:before{content:"\f559"}.fa-aws:before{content:"\f375"}.fa-backspace:before{content:"\f55a"}.fa-backward:before{content:"\f04a"}.fa-balance-scale:before{content:"\f24e"}.fa-ban:before{content:"\f05e"}.fa-band-aid:before{content:"\f462"}.fa-bandcamp:before{content:"\f2d5"}.fa-barcode:before{content:"\f02a"}.fa-bars:before{content:"\f0c9"}.fa-baseball-ball:before{content:"\f433"}.fa-basketball-ball:before{content:"\f434"}.fa-bath:before{content:"\f2cd"}.fa-battery-empty:before{content:"\f244"}.fa-battery-full:before{content:"\f240"}.fa-battery-half:before{content:"\f242"}.fa-battery-quarter:before{content:"\f243"}.fa-battery-three-quarters:before{content:"\f241"}.fa-bed:before{content:"\f236"}.fa-beer:before{content:"\f0fc"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-bell:before{content:"\f0f3"}.fa-bell-slash:before{content:"\f1f6"}.fa-bezier-curve:before{content:"\f55b"}.fa-bible:before{content:"\f647"}.fa-bicycle:before{content:"\f206"}.fa-bimobject:before{content:"\f378"}.fa-binoculars:before{content:"\f1e5"}.fa-birthday-cake:before{content:"\f1fd"}.fa-bitbucket:before{content:"\f171"}.fa-bitcoin:before{content:"\f379"}.fa-bity:before{content:"\f37a"}.fa-black-tie:before{content:"\f27e"}.fa-blackberry:before{content:"\f37b"}.fa-blender:before{content:"\f517"}.fa-blender-phone:before{content:"\f6b6"}.fa-blind:before{content:"\f29d"}.fa-blogger:before{content:"\f37c"}.fa-blogger-b:before{content:"\f37d"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-bold:before{content:"\f032"}.fa-bolt:before{content:"\f0e7"}.fa-bomb:before{content:"\f1e2"}.fa-bone:before{content:"\f5d7"}.fa-bong:before{content:"\f55c"}.fa-book:before{content:"\f02d"}.fa-book-dead:before{content:"\f6b7"}.fa-book-open:before{content:"\f518"}.fa-book-reader:before{content:"\f5da"}.fa-bookmark:before{content:"\f02e"}.fa-bowling-ball:before{content:"\f436"}.fa-box:before{content:"\f466"}.fa-box-open:before{content:"\f49e"}.fa-boxes:before{content:"\f468"}.fa-braille:before{content:"\f2a1"}.fa-brain:before{content:"\f5dc"}.fa-briefcase:before{content:"\f0b1"}.fa-briefcase-medical:before{content:"\f469"}.fa-broadcast-tower:before{content:"\f519"}.fa-broom:before{content:"\f51a"}.fa-brush:before{content:"\f55d"}.fa-btc:before{content:"\f15a"}.fa-bug:before{content:"\f188"}.fa-building:before{content:"\f1ad"}.fa-bullhorn:before{content:"\f0a1"}.fa-bullseye:before{content:"\f140"}.fa-burn:before{content:"\f46a"}.fa-buromobelexperte:before{content:"\f37f"}.fa-bus:before{content:"\f207"}.fa-bus-alt:before{content:"\f55e"}.fa-business-time:before{content:"\f64a"}.fa-buysellads:before{content:"\f20d"}.fa-calculator:before{content:"\f1ec"}.fa-calendar:before{content:"\f133"}.fa-calendar-alt:before{content:"\f073"}.fa-calendar-check:before{content:"\f274"}.fa-calendar-minus:before{content:"\f272"}.fa-calendar-plus:before{content:"\f271"}.fa-calendar-times:before{content:"\f273"}.fa-camera:before{content:"\f030"}.fa-camera-retro:before{content:"\f083"}.fa-campground:before{content:"\f6bb"}.fa-cannabis:before{content:"\f55f"}.fa-capsules:before{content:"\f46b"}.fa-car:before{content:"\f1b9"}.fa-car-alt:before{content:"\f5de"}.fa-car-battery:before{content:"\f5df"}.fa-car-crash:before{content:"\f5e1"}.fa-car-side:before{content:"\f5e4"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-caret-square-down:before{content:"\f150"}.fa-caret-square-left:before{content:"\f191"}.fa-caret-square-right:before{content:"\f152"}.fa-caret-square-up:before{content:"\f151"}.fa-caret-up:before{content:"\f0d8"}.fa-cart-arrow-down:before{content:"\f218"}.fa-cart-plus:before{content:"\f217"}.fa-cat:before{content:"\f6be"}.fa-cc-amazon-pay:before{content:"\f42d"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-apple-pay:before{content:"\f416"}.fa-cc-diners-club:before{content:"\f24c"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-cc-visa:before{content:"\f1f0"}.fa-centercode:before{content:"\f380"}.fa-certificate:before{content:"\f0a3"}.fa-chair:before{content:"\f6c0"}.fa-chalkboard:before{content:"\f51b"}.fa-chalkboard-teacher:before{content:"\f51c"}.fa-charging-station:before{content:"\f5e7"}.fa-chart-area:before{content:"\f1fe"}.fa-chart-bar:before{content:"\f080"}.fa-chart-line:before{content:"\f201"}.fa-chart-pie:before{content:"\f200"}.fa-check:before{content:"\f00c"}.fa-check-circle:before{content:"\f058"}.fa-check-double:before{content:"\f560"}.fa-check-square:before{content:"\f14a"}.fa-chess:before{content:"\f439"}.fa-chess-bishop:before{content:"\f43a"}.fa-chess-board:before{content:"\f43c"}.fa-chess-king:before{content:"\f43f"}.fa-chess-knight:before{content:"\f441"}.fa-chess-pawn:before{content:"\f443"}.fa-chess-queen:before{content:"\f445"}.fa-chess-rook:before{content:"\f447"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-down:before{content:"\f078"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-chevron-up:before{content:"\f077"}.fa-child:before{content:"\f1ae"}.fa-chrome:before{content:"\f268"}.fa-church:before{content:"\f51d"}.fa-circle:before{content:"\f111"}.fa-circle-notch:before{content:"\f1ce"}.fa-city:before{content:"\f64f"}.fa-clipboard:before{content:"\f328"}.fa-clipboard-check:before{content:"\f46c"}.fa-clipboard-list:before{content:"\f46d"}.fa-clock:before{content:"\f017"}.fa-clone:before{content:"\f24d"}.fa-closed-captioning:before{content:"\f20a"}.fa-cloud:before{content:"\f0c2"}.fa-cloud-download-alt:before{content:"\f381"}.fa-cloud-meatball:before{content:"\f73b"}.fa-cloud-moon:before{content:"\f6c3"}.fa-cloud-moon-rain:before{content:"\f73c"}.fa-cloud-rain:before{content:"\f73d"}.fa-cloud-showers-heavy:before{content:"\f740"}.fa-cloud-sun:before{content:"\f6c4"}.fa-cloud-sun-rain:before{content:"\f743"}.fa-cloud-upload-alt:before{content:"\f382"}.fa-cloudscale:before{content:"\f383"}.fa-cloudsmith:before{content:"\f384"}.fa-cloudversify:before{content:"\f385"}.fa-cocktail:before{content:"\f561"}.fa-code:before{content:"\f121"}.fa-code-branch:before{content:"\f126"}.fa-codepen:before{content:"\f1cb"}.fa-codiepie:before{content:"\f284"}.fa-coffee:before{content:"\f0f4"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-coins:before{content:"\f51e"}.fa-columns:before{content:"\f0db"}.fa-comment:before{content:"\f075"}.fa-comment-alt:before{content:"\f27a"}.fa-comment-dollar:before{content:"\f651"}.fa-comment-dots:before{content:"\f4ad"}.fa-comment-slash:before{content:"\f4b3"}.fa-comments:before{content:"\f086"}.fa-comments-dollar:before{content:"\f653"}.fa-compact-disc:before{content:"\f51f"}.fa-compass:before{content:"\f14e"}.fa-compress:before{content:"\f066"}.fa-concierge-bell:before{content:"\f562"}.fa-connectdevelop:before{content:"\f20e"}.fa-contao:before{content:"\f26d"}.fa-cookie:before{content:"\f563"}.fa-cookie-bite:before{content:"\f564"}.fa-copy:before{content:"\f0c5"}.fa-copyright:before{content:"\f1f9"}.fa-couch:before{content:"\f4b8"}.fa-cpanel:before{content:"\f388"}.fa-creative-commons:before{content:"\f25e"}.fa-creative-commons-by:before{content:"\f4e7"}.fa-creative-commons-nc:before{content:"\f4e8"}.fa-creative-commons-nc-eu:before{content:"\f4e9"}.fa-creative-commons-nc-jp:before{content:"\f4ea"}.fa-creative-commons-nd:before{content:"\f4eb"}.fa-creative-commons-pd:before{content:"\f4ec"}.fa-creative-commons-pd-alt:before{content:"\f4ed"}.fa-creative-commons-remix:before{content:"\f4ee"}.fa-creative-commons-sa:before{content:"\f4ef"}.fa-creative-commons-sampling:before{content:"\f4f0"}.fa-creative-commons-sampling-plus:before{content:"\f4f1"}.fa-creative-commons-share:before{content:"\f4f2"}.fa-creative-commons-zero:before{content:"\f4f3"}.fa-credit-card:before{content:"\f09d"}.fa-critical-role:before{content:"\f6c9"}.fa-crop:before{content:"\f125"}.fa-crop-alt:before{content:"\f565"}.fa-cross:before{content:"\f654"}.fa-crosshairs:before{content:"\f05b"}.fa-crow:before{content:"\f520"}.fa-crown:before{content:"\f521"}.fa-css3:before{content:"\f13c"}.fa-css3-alt:before{content:"\f38b"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-cut:before{content:"\f0c4"}.fa-cuttlefish:before{content:"\f38c"}.fa-d-and-d:before{content:"\f38d"}.fa-d-and-d-beyond:before{content:"\f6ca"}.fa-dashcube:before{content:"\f210"}.fa-database:before{content:"\f1c0"}.fa-deaf:before{content:"\f2a4"}.fa-delicious:before{content:"\f1a5"}.fa-democrat:before{content:"\f747"}.fa-deploydog:before{content:"\f38e"}.fa-deskpro:before{content:"\f38f"}.fa-desktop:before{content:"\f108"}.fa-dev:before{content:"\f6cc"}.fa-deviantart:before{content:"\f1bd"}.fa-dharmachakra:before{content:"\f655"}.fa-diagnoses:before{content:"\f470"}.fa-dice:before{content:"\f522"}.fa-dice-d20:before{content:"\f6cf"}.fa-dice-d6:before{content:"\f6d1"}.fa-dice-five:before{content:"\f523"}.fa-dice-four:before{content:"\f524"}.fa-dice-one:before{content:"\f525"}.fa-dice-six:before{content:"\f526"}.fa-dice-three:before{content:"\f527"}.fa-dice-two:before{content:"\f528"}.fa-digg:before{content:"\f1a6"}.fa-digital-ocean:before{content:"\f391"}.fa-digital-tachograph:before{content:"\f566"}.fa-directions:before{content:"\f5eb"}.fa-discord:before{content:"\f392"}.fa-discourse:before{content:"\f393"}.fa-divide:before{content:"\f529"}.fa-dizzy:before{content:"\f567"}.fa-dna:before{content:"\f471"}.fa-dochub:before{content:"\f394"}.fa-docker:before{content:"\f395"}.fa-dog:before{content:"\f6d3"}.fa-dollar-sign:before{content:"\f155"}.fa-dolly:before{content:"\f472"}.fa-dolly-flatbed:before{content:"\f474"}.fa-donate:before{content:"\f4b9"}.fa-door-closed:before{content:"\f52a"}.fa-door-open:before{content:"\f52b"}.fa-dot-circle:before{content:"\f192"}.fa-dove:before{content:"\f4ba"}.fa-download:before{content:"\f019"}.fa-draft2digital:before{content:"\f396"}.fa-drafting-compass:before{content:"\f568"}.fa-dragon:before{content:"\f6d5"}.fa-draw-polygon:before{content:"\f5ee"}.fa-dribbble:before{content:"\f17d"}.fa-dribbble-square:before{content:"\f397"}.fa-dropbox:before{content:"\f16b"}.fa-drum:before{content:"\f569"}.fa-drum-steelpan:before{content:"\f56a"}.fa-drumstick-bite:before{content:"\f6d7"}.fa-drupal:before{content:"\f1a9"}.fa-dumbbell:before{content:"\f44b"}.fa-dungeon:before{content:"\f6d9"}.fa-dyalog:before{content:"\f399"}.fa-earlybirds:before{content:"\f39a"}.fa-ebay:before{content:"\f4f4"}.fa-edge:before{content:"\f282"}.fa-edit:before{content:"\f044"}.fa-eject:before{content:"\f052"}.fa-elementor:before{content:"\f430"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-ello:before{content:"\f5f1"}.fa-ember:before{content:"\f423"}.fa-empire:before{content:"\f1d1"}.fa-envelope:before{content:"\f0e0"}.fa-envelope-open:before{content:"\f2b6"}.fa-envelope-open-text:before{content:"\f658"}.fa-envelope-square:before{content:"\f199"}.fa-envira:before{content:"\f299"}.fa-equals:before{content:"\f52c"}.fa-eraser:before{content:"\f12d"}.fa-erlang:before{content:"\f39d"}.fa-ethereum:before{content:"\f42e"}.fa-etsy:before{content:"\f2d7"}.fa-euro-sign:before{content:"\f153"}.fa-exchange-alt:before{content:"\f362"}.fa-exclamation:before{content:"\f12a"}.fa-exclamation-circle:before{content:"\f06a"}.fa-exclamation-triangle:before{content:"\f071"}.fa-expand:before{content:"\f065"}.fa-expand-arrows-alt:before{content:"\f31e"}.fa-expeditedssl:before{content:"\f23e"}.fa-external-link-alt:before{content:"\f35d"}.fa-external-link-square-alt:before{content:"\f360"}.fa-eye:before{content:"\f06e"}.fa-eye-dropper:before{content:"\f1fb"}.fa-eye-slash:before{content:"\f070"}.fa-facebook:before{content:"\f09a"}.fa-facebook-f:before{content:"\f39e"}.fa-facebook-messenger:before{content:"\f39f"}.fa-facebook-square:before{content:"\f082"}.fa-fantasy-flight-games:before{content:"\f6dc"}.fa-fast-backward:before{content:"\f049"}.fa-fast-forward:before{content:"\f050"}.fa-fax:before{content:"\f1ac"}.fa-feather:before{content:"\f52d"}.fa-feather-alt:before{content:"\f56b"}.fa-female:before{content:"\f182"}.fa-fighter-jet:before{content:"\f0fb"}.fa-file:before{content:"\f15b"}.fa-file-alt:before{content:"\f15c"}.fa-file-archive:before{content:"\f1c6"}.fa-file-audio:before{content:"\f1c7"}.fa-file-code:before{content:"\f1c9"}.fa-file-contract:before{content:"\f56c"}.fa-file-csv:before{content:"\f6dd"}.fa-file-download:before{content:"\f56d"}.fa-file-excel:before{content:"\f1c3"}.fa-file-export:before{content:"\f56e"}.fa-file-image:before{content:"\f1c5"}.fa-file-import:before{content:"\f56f"}.fa-file-invoice:before{content:"\f570"}.fa-file-invoice-dollar:before{content:"\f571"}.fa-file-medical:before{content:"\f477"}.fa-file-medical-alt:before{content:"\f478"}.fa-file-pdf:before{content:"\f1c1"}.fa-file-powerpoint:before{content:"\f1c4"}.fa-file-prescription:before{content:"\f572"}.fa-file-signature:before{content:"\f573"}.fa-file-upload:before{content:"\f574"}.fa-file-video:before{content:"\f1c8"}.fa-file-word:before{content:"\f1c2"}.fa-fill:before{content:"\f575"}.fa-fill-drip:before{content:"\f576"}.fa-film:before{content:"\f008"}.fa-filter:before{content:"\f0b0"}.fa-fingerprint:before{content:"\f577"}.fa-fire:before{content:"\f06d"}.fa-fire-extinguisher:before{content:"\f134"}.fa-firefox:before{content:"\f269"}.fa-first-aid:before{content:"\f479"}.fa-first-order:before{content:"\f2b0"}.fa-first-order-alt:before{content:"\f50a"}.fa-firstdraft:before{content:"\f3a1"}.fa-fish:before{content:"\f578"}.fa-fist-raised:before{content:"\f6de"}.fa-flag:before{content:"\f024"}.fa-flag-checkered:before{content:"\f11e"}.fa-flag-usa:before{content:"\f74d"}.fa-flask:before{content:"\f0c3"}.fa-flickr:before{content:"\f16e"}.fa-flipboard:before{content:"\f44d"}.fa-flushed:before{content:"\f579"}.fa-fly:before{content:"\f417"}.fa-folder:before{content:"\f07b"}.fa-folder-minus:before{content:"\f65d"}.fa-folder-open:before{content:"\f07c"}.fa-folder-plus:before{content:"\f65e"}.fa-font:before{content:"\f031"}.fa-font-awesome:before{content:"\f2b4"}.fa-font-awesome-alt:before{content:"\f35c"}.fa-font-awesome-flag:before{content:"\f425"}.fa-font-awesome-logo-full:before{content:"\f4e6"}.fa-fonticons:before{content:"\f280"}.fa-fonticons-fi:before{content:"\f3a2"}.fa-football-ball:before{content:"\f44e"}.fa-fort-awesome:before{content:"\f286"}.fa-fort-awesome-alt:before{content:"\f3a3"}.fa-forumbee:before{content:"\f211"}.fa-forward:before{content:"\f04e"}.fa-foursquare:before{content:"\f180"}.fa-free-code-camp:before{content:"\f2c5"}.fa-freebsd:before{content:"\f3a4"}.fa-frog:before{content:"\f52e"}.fa-frown:before{content:"\f119"}.fa-frown-open:before{content:"\f57a"}.fa-fulcrum:before{content:"\f50b"}.fa-funnel-dollar:before{content:"\f662"}.fa-futbol:before{content:"\f1e3"}.fa-galactic-republic:before{content:"\f50c"}.fa-galactic-senate:before{content:"\f50d"}.fa-gamepad:before{content:"\f11b"}.fa-gas-pump:before{content:"\f52f"}.fa-gavel:before{content:"\f0e3"}.fa-gem:before{content:"\f3a5"}.fa-genderless:before{content:"\f22d"}.fa-get-pocket:before{content:"\f265"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-ghost:before{content:"\f6e2"}.fa-gift:before{content:"\f06b"}.fa-git:before{content:"\f1d3"}.fa-git-square:before{content:"\f1d2"}.fa-github:before{content:"\f09b"}.fa-github-alt:before{content:"\f113"}.fa-github-square:before{content:"\f092"}.fa-gitkraken:before{content:"\f3a6"}.fa-gitlab:before{content:"\f296"}.fa-gitter:before{content:"\f426"}.fa-glass-martini:before{content:"\f000"}.fa-glass-martini-alt:before{content:"\f57b"}.fa-glasses:before{content:"\f530"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-globe:before{content:"\f0ac"}.fa-globe-africa:before{content:"\f57c"}.fa-globe-americas:before{content:"\f57d"}.fa-globe-asia:before{content:"\f57e"}.fa-gofore:before{content:"\f3a7"}.fa-golf-ball:before{content:"\f450"}.fa-goodreads:before{content:"\f3a8"}.fa-goodreads-g:before{content:"\f3a9"}.fa-google:before{content:"\f1a0"}.fa-google-drive:before{content:"\f3aa"}.fa-google-play:before{content:"\f3ab"}.fa-google-plus:before{content:"\f2b3"}.fa-google-plus-g:before{content:"\f0d5"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-wallet:before{content:"\f1ee"}.fa-gopuram:before{content:"\f664"}.fa-graduation-cap:before{content:"\f19d"}.fa-gratipay:before{content:"\f184"}.fa-grav:before{content:"\f2d6"}.fa-greater-than:before{content:"\f531"}.fa-greater-than-equal:before{content:"\f532"}.fa-grimace:before{content:"\f57f"}.fa-grin:before{content:"\f580"}.fa-grin-alt:before{content:"\f581"}.fa-grin-beam:before{content:"\f582"}.fa-grin-beam-sweat:before{content:"\f583"}.fa-grin-hearts:before{content:"\f584"}.fa-grin-squint:before{content:"\f585"}.fa-grin-squint-tears:before{content:"\f586"}.fa-grin-stars:before{content:"\f587"}.fa-grin-tears:before{content:"\f588"}.fa-grin-tongue:before{content:"\f589"}.fa-grin-tongue-squint:before{content:"\f58a"}.fa-grin-tongue-wink:before{content:"\f58b"}.fa-grin-wink:before{content:"\f58c"}.fa-grip-horizontal:before{content:"\f58d"}.fa-grip-vertical:before{content:"\f58e"}.fa-gripfire:before{content:"\f3ac"}.fa-grunt:before{content:"\f3ad"}.fa-gulp:before{content:"\f3ae"}.fa-h-square:before{content:"\f0fd"}.fa-hacker-news:before{content:"\f1d4"}.fa-hacker-news-square:before{content:"\f3af"}.fa-hackerrank:before{content:"\f5f7"}.fa-hammer:before{content:"\f6e3"}.fa-hamsa:before{content:"\f665"}.fa-hand-holding:before{content:"\f4bd"}.fa-hand-holding-heart:before{content:"\f4be"}.fa-hand-holding-usd:before{content:"\f4c0"}.fa-hand-lizard:before{content:"\f258"}.fa-hand-paper:before{content:"\f256"}.fa-hand-peace:before{content:"\f25b"}.fa-hand-point-down:before{content:"\f0a7"}.fa-hand-point-left:before{content:"\f0a5"}.fa-hand-point-right:before{content:"\f0a4"}.fa-hand-point-up:before{content:"\f0a6"}.fa-hand-pointer:before{content:"\f25a"}.fa-hand-rock:before{content:"\f255"}.fa-hand-scissors:before{content:"\f257"}.fa-hand-spock:before{content:"\f259"}.fa-hands:before{content:"\f4c2"}.fa-hands-helping:before{content:"\f4c4"}.fa-handshake:before{content:"\f2b5"}.fa-hanukiah:before{content:"\f6e6"}.fa-hashtag:before{content:"\f292"}.fa-hat-wizard:before{content:"\f6e8"}.fa-haykal:before{content:"\f666"}.fa-hdd:before{content:"\f0a0"}.fa-heading:before{content:"\f1dc"}.fa-headphones:before{content:"\f025"}.fa-headphones-alt:before{content:"\f58f"}.fa-headset:before{content:"\f590"}.fa-heart:before{content:"\f004"}.fa-heartbeat:before{content:"\f21e"}.fa-helicopter:before{content:"\f533"}.fa-highlighter:before{content:"\f591"}.fa-hiking:before{content:"\f6ec"}.fa-hippo:before{content:"\f6ed"}.fa-hips:before{content:"\f452"}.fa-hire-a-helper:before{content:"\f3b0"}.fa-history:before{content:"\f1da"}.fa-hockey-puck:before{content:"\f453"}.fa-home:before{content:"\f015"}.fa-hooli:before{content:"\f427"}.fa-hornbill:before{content:"\f592"}.fa-horse:before{content:"\f6f0"}.fa-hospital:before{content:"\f0f8"}.fa-hospital-alt:before{content:"\f47d"}.fa-hospital-symbol:before{content:"\f47e"}.fa-hot-tub:before{content:"\f593"}.fa-hotel:before{content:"\f594"}.fa-hotjar:before{content:"\f3b1"}.fa-hourglass:before{content:"\f254"}.fa-hourglass-end:before{content:"\f253"}.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-start:before{content:"\f251"}.fa-house-damage:before{content:"\f6f1"}.fa-houzz:before{content:"\f27c"}.fa-hryvnia:before{content:"\f6f2"}.fa-html5:before{content:"\f13b"}.fa-hubspot:before{content:"\f3b2"}.fa-i-cursor:before{content:"\f246"}.fa-id-badge:before{content:"\f2c1"}.fa-id-card:before{content:"\f2c2"}.fa-id-card-alt:before{content:"\f47f"}.fa-image:before{content:"\f03e"}.fa-images:before{content:"\f302"}.fa-imdb:before{content:"\f2d8"}.fa-inbox:before{content:"\f01c"}.fa-indent:before{content:"\f03c"}.fa-industry:before{content:"\f275"}.fa-infinity:before{content:"\f534"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-instagram:before{content:"\f16d"}.fa-internet-explorer:before{content:"\f26b"}.fa-ioxhost:before{content:"\f208"}.fa-italic:before{content:"\f033"}.fa-itunes:before{content:"\f3b4"}.fa-itunes-note:before{content:"\f3b5"}.fa-java:before{content:"\f4e4"}.fa-jedi:before{content:"\f669"}.fa-jedi-order:before{content:"\f50e"}.fa-jenkins:before{content:"\f3b6"}.fa-joget:before{content:"\f3b7"}.fa-joint:before{content:"\f595"}.fa-joomla:before{content:"\f1aa"}.fa-journal-whills:before{content:"\f66a"}.fa-js:before{content:"\f3b8"}.fa-js-square:before{content:"\f3b9"}.fa-jsfiddle:before{content:"\f1cc"}.fa-kaaba:before{content:"\f66b"}.fa-kaggle:before{content:"\f5fa"}.fa-key:before{content:"\f084"}.fa-keybase:before{content:"\f4f5"}.fa-keyboard:before{content:"\f11c"}.fa-keycdn:before{content:"\f3ba"}.fa-khanda:before{content:"\f66d"}.fa-kickstarter:before{content:"\f3bb"}.fa-kickstarter-k:before{content:"\f3bc"}.fa-kiss:before{content:"\f596"}.fa-kiss-beam:before{content:"\f597"}.fa-kiss-wink-heart:before{content:"\f598"}.fa-kiwi-bird:before{content:"\f535"}.fa-korvue:before{content:"\f42f"}.fa-landmark:before{content:"\f66f"}.fa-language:before{content:"\f1ab"}.fa-laptop:before{content:"\f109"}.fa-laptop-code:before{content:"\f5fc"}.fa-laravel:before{content:"\f3bd"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-laugh:before{content:"\f599"}.fa-laugh-beam:before{content:"\f59a"}.fa-laugh-squint:before{content:"\f59b"}.fa-laugh-wink:before{content:"\f59c"}.fa-layer-group:before{content:"\f5fd"}.fa-leaf:before{content:"\f06c"}.fa-leanpub:before{content:"\f212"}.fa-lemon:before{content:"\f094"}.fa-less:before{content:"\f41d"}.fa-less-than:before{content:"\f536"}.fa-less-than-equal:before{content:"\f537"}.fa-level-down-alt:before{content:"\f3be"}.fa-level-up-alt:before{content:"\f3bf"}.fa-life-ring:before{content:"\f1cd"}.fa-lightbulb:before{content:"\f0eb"}.fa-line:before{content:"\f3c0"}.fa-link:before{content:"\f0c1"}.fa-linkedin:before{content:"\f08c"}.fa-linkedin-in:before{content:"\f0e1"}.fa-linode:before{content:"\f2b8"}.fa-linux:before{content:"\f17c"}.fa-lira-sign:before{content:"\f195"}.fa-list:before{content:"\f03a"}.fa-list-alt:before{content:"\f022"}.fa-list-ol:before{content:"\f0cb"}.fa-list-ul:before{content:"\f0ca"}.fa-location-arrow:before{content:"\f124"}.fa-lock:before{content:"\f023"}.fa-lock-open:before{content:"\f3c1"}.fa-long-arrow-alt-down:before{content:"\f309"}.fa-long-arrow-alt-left:before{content:"\f30a"}.fa-long-arrow-alt-right:before{content:"\f30b"}.fa-long-arrow-alt-up:before{content:"\f30c"}.fa-low-vision:before{content:"\f2a8"}.fa-luggage-cart:before{content:"\f59d"}.fa-lyft:before{content:"\f3c3"}.fa-magento:before{content:"\f3c4"}.fa-magic:before{content:"\f0d0"}.fa-magnet:before{content:"\f076"}.fa-mail-bulk:before{content:"\f674"}.fa-mailchimp:before{content:"\f59e"}.fa-male:before{content:"\f183"}.fa-mandalorian:before{content:"\f50f"}.fa-map:before{content:"\f279"}.fa-map-marked:before{content:"\f59f"}.fa-map-marked-alt:before{content:"\f5a0"}.fa-map-marker:before{content:"\f041"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-markdown:before{content:"\f60f"}.fa-marker:before{content:"\f5a1"}.fa-mars:before{content:"\f222"}.fa-mars-double:before{content:"\f227"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mask:before{content:"\f6fa"}.fa-mastodon:before{content:"\f4f6"}.fa-maxcdn:before{content:"\f136"}.fa-medal:before{content:"\f5a2"}.fa-medapps:before{content:"\f3c6"}.fa-medium:before{content:"\f23a"}.fa-medium-m:before{content:"\f3c7"}.fa-medkit:before{content:"\f0fa"}.fa-medrt:before{content:"\f3c8"}.fa-meetup:before{content:"\f2e0"}.fa-megaport:before{content:"\f5a3"}.fa-meh:before{content:"\f11a"}.fa-meh-blank:before{content:"\f5a4"}.fa-meh-rolling-eyes:before{content:"\f5a5"}.fa-memory:before{content:"\f538"}.fa-menorah:before{content:"\f676"}.fa-mercury:before{content:"\f223"}.fa-meteor:before{content:"\f753"}.fa-microchip:before{content:"\f2db"}.fa-microphone:before{content:"\f130"}.fa-microphone-alt:before{content:"\f3c9"}.fa-microphone-alt-slash:before{content:"\f539"}.fa-microphone-slash:before{content:"\f131"}.fa-microscope:before{content:"\f610"}.fa-microsoft:before{content:"\f3ca"}.fa-minus:before{content:"\f068"}.fa-minus-circle:before{content:"\f056"}.fa-minus-square:before{content:"\f146"}.fa-mix:before{content:"\f3cb"}.fa-mixcloud:before{content:"\f289"}.fa-mizuni:before{content:"\f3cc"}.fa-mobile:before{content:"\f10b"}.fa-mobile-alt:before{content:"\f3cd"}.fa-modx:before{content:"\f285"}.fa-monero:before{content:"\f3d0"}.fa-money-bill:before{content:"\f0d6"}.fa-money-bill-alt:before{content:"\f3d1"}.fa-money-bill-wave:before{content:"\f53a"}.fa-money-bill-wave-alt:before{content:"\f53b"}.fa-money-check:before{content:"\f53c"}.fa-money-check-alt:before{content:"\f53d"}.fa-monument:before{content:"\f5a6"}.fa-moon:before{content:"\f186"}.fa-mortar-pestle:before{content:"\f5a7"}.fa-mosque:before{content:"\f678"}.fa-motorcycle:before{content:"\f21c"}.fa-mountain:before{content:"\f6fc"}.fa-mouse-pointer:before{content:"\f245"}.fa-music:before{content:"\f001"}.fa-napster:before{content:"\f3d2"}.fa-neos:before{content:"\f612"}.fa-network-wired:before{content:"\f6ff"}.fa-neuter:before{content:"\f22c"}.fa-newspaper:before{content:"\f1ea"}.fa-nimblr:before{content:"\f5a8"}.fa-nintendo-switch:before{content:"\f418"}.fa-node:before{content:"\f419"}.fa-node-js:before{content:"\f3d3"}.fa-not-equal:before{content:"\f53e"}.fa-notes-medical:before{content:"\f481"}.fa-npm:before{content:"\f3d4"}.fa-ns8:before{content:"\f3d5"}.fa-nutritionix:before{content:"\f3d6"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-oil-can:before{content:"\f613"}.fa-old-republic:before{content:"\f510"}.fa-om:before{content:"\f679"}.fa-opencart:before{content:"\f23d"}.fa-openid:before{content:"\f19b"}.fa-opera:before{content:"\f26a"}.fa-optin-monster:before{content:"\f23c"}.fa-osi:before{content:"\f41a"}.fa-otter:before{content:"\f700"}.fa-outdent:before{content:"\f03b"}.fa-page4:before{content:"\f3d7"}.fa-pagelines:before{content:"\f18c"}.fa-paint-brush:before{content:"\f1fc"}.fa-paint-roller:before{content:"\f5aa"}.fa-palette:before{content:"\f53f"}.fa-palfed:before{content:"\f3d8"}.fa-pallet:before{content:"\f482"}.fa-paper-plane:before{content:"\f1d8"}.fa-paperclip:before{content:"\f0c6"}.fa-parachute-box:before{content:"\f4cd"}.fa-paragraph:before{content:"\f1dd"}.fa-parking:before{content:"\f540"}.fa-passport:before{content:"\f5ab"}.fa-pastafarianism:before{content:"\f67b"}.fa-paste:before{content:"\f0ea"}.fa-patreon:before{content:"\f3d9"}.fa-pause:before{content:"\f04c"}.fa-pause-circle:before{content:"\f28b"}.fa-paw:before{content:"\f1b0"}.fa-paypal:before{content:"\f1ed"}.fa-peace:before{content:"\f67c"}.fa-pen:before{content:"\f304"}.fa-pen-alt:before{content:"\f305"}.fa-pen-fancy:before{content:"\f5ac"}.fa-pen-nib:before{content:"\f5ad"}.fa-pen-square:before{content:"\f14b"}.fa-pencil-alt:before{content:"\f303"}.fa-pencil-ruler:before{content:"\f5ae"}.fa-penny-arcade:before{content:"\f704"}.fa-people-carry:before{content:"\f4ce"}.fa-percent:before{content:"\f295"}.fa-percentage:before{content:"\f541"}.fa-periscope:before{content:"\f3da"}.fa-person-booth:before{content:"\f756"}.fa-phabricator:before{content:"\f3db"}.fa-phoenix-framework:before{content:"\f3dc"}.fa-phoenix-squadron:before{content:"\f511"}.fa-phone:before{content:"\f095"}.fa-phone-slash:before{content:"\f3dd"}.fa-phone-square:before{content:"\f098"}.fa-phone-volume:before{content:"\f2a0"}.fa-php:before{content:"\f457"}.fa-pied-piper:before{content:"\f2ae"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-pied-piper-hat:before{content:"\f4e5"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-piggy-bank:before{content:"\f4d3"}.fa-pills:before{content:"\f484"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-p:before{content:"\f231"}.fa-pinterest-square:before{content:"\f0d3"}.fa-place-of-worship:before{content:"\f67f"}.fa-plane:before{content:"\f072"}.fa-plane-arrival:before{content:"\f5af"}.fa-plane-departure:before{content:"\f5b0"}.fa-play:before{content:"\f04b"}.fa-play-circle:before{content:"\f144"}.fa-playstation:before{content:"\f3df"}.fa-plug:before{content:"\f1e6"}.fa-plus:before{content:"\f067"}.fa-plus-circle:before{content:"\f055"}.fa-plus-square:before{content:"\f0fe"}.fa-podcast:before{content:"\f2ce"}.fa-poll:before{content:"\f681"}.fa-poll-h:before{content:"\f682"}.fa-poo:before{content:"\f2fe"}.fa-poo-storm:before{content:"\f75a"}.fa-poop:before{content:"\f619"}.fa-portrait:before{content:"\f3e0"}.fa-pound-sign:before{content:"\f154"}.fa-power-off:before{content:"\f011"}.fa-pray:before{content:"\f683"}.fa-praying-hands:before{content:"\f684"}.fa-prescription:before{content:"\f5b1"}.fa-prescription-bottle:before{content:"\f485"}.fa-prescription-bottle-alt:before{content:"\f486"}.fa-print:before{content:"\f02f"}.fa-procedures:before{content:"\f487"}.fa-product-hunt:before{content:"\f288"}.fa-project-diagram:before{content:"\f542"}.fa-pushed:before{content:"\f3e1"}.fa-puzzle-piece:before{content:"\f12e"}.fa-python:before{content:"\f3e2"}.fa-qq:before{content:"\f1d6"}.fa-qrcode:before{content:"\f029"}.fa-question:before{content:"\f128"}.fa-question-circle:before{content:"\f059"}.fa-quidditch:before{content:"\f458"}.fa-quinscape:before{content:"\f459"}.fa-quora:before{content:"\f2c4"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-quran:before{content:"\f687"}.fa-r-project:before{content:"\f4f7"}.fa-rainbow:before{content:"\f75b"}.fa-random:before{content:"\f074"}.fa-ravelry:before{content:"\f2d9"}.fa-react:before{content:"\f41b"}.fa-reacteurope:before{content:"\f75d"}.fa-readme:before{content:"\f4d5"}.fa-rebel:before{content:"\f1d0"}.fa-receipt:before{content:"\f543"}.fa-recycle:before{content:"\f1b8"}.fa-red-river:before{content:"\f3e3"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-alien:before{content:"\f281"}.fa-reddit-square:before{content:"\f1a2"}.fa-redo:before{content:"\f01e"}.fa-redo-alt:before{content:"\f2f9"}.fa-registered:before{content:"\f25d"}.fa-renren:before{content:"\f18b"}.fa-reply:before{content:"\f3e5"}.fa-reply-all:before{content:"\f122"}.fa-replyd:before{content:"\f3e6"}.fa-republican:before{content:"\f75e"}.fa-researchgate:before{content:"\f4f8"}.fa-resolving:before{content:"\f3e7"}.fa-retweet:before{content:"\f079"}.fa-rev:before{content:"\f5b2"}.fa-ribbon:before{content:"\f4d6"}.fa-ring:before{content:"\f70b"}.fa-road:before{content:"\f018"}.fa-robot:before{content:"\f544"}.fa-rocket:before{content:"\f135"}.fa-rocketchat:before{content:"\f3e8"}.fa-rockrms:before{content:"\f3e9"}.fa-route:before{content:"\f4d7"}.fa-rss:before{content:"\f09e"}.fa-rss-square:before{content:"\f143"}.fa-ruble-sign:before{content:"\f158"}.fa-ruler:before{content:"\f545"}.fa-ruler-combined:before{content:"\f546"}.fa-ruler-horizontal:before{content:"\f547"}.fa-ruler-vertical:before{content:"\f548"}.fa-running:before{content:"\f70c"}.fa-rupee-sign:before{content:"\f156"}.fa-sad-cry:before{content:"\f5b3"}.fa-sad-tear:before{content:"\f5b4"}.fa-safari:before{content:"\f267"}.fa-sass:before{content:"\f41e"}.fa-save:before{content:"\f0c7"}.fa-schlix:before{content:"\f3ea"}.fa-school:before{content:"\f549"}.fa-screwdriver:before{content:"\f54a"}.fa-scribd:before{content:"\f28a"}.fa-scroll:before{content:"\f70e"}.fa-search:before{content:"\f002"}.fa-search-dollar:before{content:"\f688"}.fa-search-location:before{content:"\f689"}.fa-search-minus:before{content:"\f010"}.fa-search-plus:before{content:"\f00e"}.fa-searchengin:before{content:"\f3eb"}.fa-seedling:before{content:"\f4d8"}.fa-sellcast:before{content:"\f2da"}.fa-sellsy:before{content:"\f213"}.fa-server:before{content:"\f233"}.fa-servicestack:before{content:"\f3ec"}.fa-shapes:before{content:"\f61f"}.fa-share:before{content:"\f064"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-share-square:before{content:"\f14d"}.fa-shekel-sign:before{content:"\f20b"}.fa-shield-alt:before{content:"\f3ed"}.fa-ship:before{content:"\f21a"}.fa-shipping-fast:before{content:"\f48b"}.fa-shirtsinbulk:before{content:"\f214"}.fa-shoe-prints:before{content:"\f54b"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-shopping-cart:before{content:"\f07a"}.fa-shopware:before{content:"\f5b5"}.fa-shower:before{content:"\f2cc"}.fa-shuttle-van:before{content:"\f5b6"}.fa-sign:before{content:"\f4d9"}.fa-sign-in-alt:before{content:"\f2f6"}.fa-sign-language:before{content:"\f2a7"}.fa-sign-out-alt:before{content:"\f2f5"}.fa-signal:before{content:"\f012"}.fa-signature:before{content:"\f5b7"}.fa-simplybuilt:before{content:"\f215"}.fa-sistrix:before{content:"\f3ee"}.fa-sitemap:before{content:"\f0e8"}.fa-sith:before{content:"\f512"}.fa-skull:before{content:"\f54c"}.fa-skull-crossbones:before{content:"\f714"}.fa-skyatlas:before{content:"\f216"}.fa-skype:before{content:"\f17e"}.fa-slack:before{content:"\f198"}.fa-slack-hash:before{content:"\f3ef"}.fa-slash:before{content:"\f715"}.fa-sliders-h:before{content:"\f1de"}.fa-slideshare:before{content:"\f1e7"}.fa-smile:before{content:"\f118"}.fa-smile-beam:before{content:"\f5b8"}.fa-smile-wink:before{content:"\f4da"}.fa-smog:before{content:"\f75f"}.fa-smoking:before{content:"\f48d"}.fa-smoking-ban:before{content:"\f54d"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-snowflake:before{content:"\f2dc"}.fa-socks:before{content:"\f696"}.fa-solar-panel:before{content:"\f5ba"}.fa-sort:before{content:"\f0dc"}.fa-sort-alpha-down:before{content:"\f15d"}.fa-sort-alpha-up:before{content:"\f15e"}.fa-sort-amount-down:before{content:"\f160"}.fa-sort-amount-up:before{content:"\f161"}.fa-sort-down:before{content:"\f0dd"}.fa-sort-numeric-down:before{content:"\f162"}.fa-sort-numeric-up:before{content:"\f163"}.fa-sort-up:before{content:"\f0de"}.fa-soundcloud:before{content:"\f1be"}.fa-spa:before{content:"\f5bb"}.fa-space-shuttle:before{content:"\f197"}.fa-speakap:before{content:"\f3f3"}.fa-spider:before{content:"\f717"}.fa-spinner:before{content:"\f110"}.fa-splotch:before{content:"\f5bc"}.fa-spotify:before{content:"\f1bc"}.fa-spray-can:before{content:"\f5bd"}.fa-square:before{content:"\f0c8"}.fa-square-full:before{content:"\f45c"}.fa-square-root-alt:before{content:"\f698"}.fa-squarespace:before{content:"\f5be"}.fa-stack-exchange:before{content:"\f18d"}.fa-stack-overflow:before{content:"\f16c"}.fa-stamp:before{content:"\f5bf"}.fa-star:before{content:"\f005"}.fa-star-and-crescent:before{content:"\f699"}.fa-star-half:before{content:"\f089"}.fa-star-half-alt:before{content:"\f5c0"}.fa-star-of-david:before{content:"\f69a"}.fa-star-of-life:before{content:"\f621"}.fa-staylinked:before{content:"\f3f5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-steam-symbol:before{content:"\f3f6"}.fa-step-backward:before{content:"\f048"}.fa-step-forward:before{content:"\f051"}.fa-stethoscope:before{content:"\f0f1"}.fa-sticker-mule:before{content:"\f3f7"}.fa-sticky-note:before{content:"\f249"}.fa-stop:before{content:"\f04d"}.fa-stop-circle:before{content:"\f28d"}.fa-stopwatch:before{content:"\f2f2"}.fa-store:before{content:"\f54e"}.fa-store-alt:before{content:"\f54f"}.fa-strava:before{content:"\f428"}.fa-stream:before{content:"\f550"}.fa-street-view:before{content:"\f21d"}.fa-strikethrough:before{content:"\f0cc"}.fa-stripe:before{content:"\f429"}.fa-stripe-s:before{content:"\f42a"}.fa-stroopwafel:before{content:"\f551"}.fa-studiovinari:before{content:"\f3f8"}.fa-stumbleupon:before{content:"\f1a4"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-subscript:before{content:"\f12c"}.fa-subway:before{content:"\f239"}.fa-suitcase:before{content:"\f0f2"}.fa-suitcase-rolling:before{content:"\f5c1"}.fa-sun:before{content:"\f185"}.fa-superpowers:before{content:"\f2dd"}.fa-superscript:before{content:"\f12b"}.fa-supple:before{content:"\f3f9"}.fa-surprise:before{content:"\f5c2"}.fa-swatchbook:before{content:"\f5c3"}.fa-swimmer:before{content:"\f5c4"}.fa-swimming-pool:before{content:"\f5c5"}.fa-synagogue:before{content:"\f69b"}.fa-sync:before{content:"\f021"}.fa-sync-alt:before{content:"\f2f1"}.fa-syringe:before{content:"\f48e"}.fa-table:before{content:"\f0ce"}.fa-table-tennis:before{content:"\f45d"}.fa-tablet:before{content:"\f10a"}.fa-tablet-alt:before{content:"\f3fa"}.fa-tablets:before{content:"\f490"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-tape:before{content:"\f4db"}.fa-tasks:before{content:"\f0ae"}.fa-taxi:before{content:"\f1ba"}.fa-teamspeak:before{content:"\f4f9"}.fa-teeth:before{content:"\f62e"}.fa-teeth-open:before{content:"\f62f"}.fa-telegram:before{content:"\f2c6"}.fa-telegram-plane:before{content:"\f3fe"}.fa-temperature-high:before{content:"\f769"}.fa-temperature-low:before{content:"\f76b"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-terminal:before{content:"\f120"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-th:before{content:"\f00a"}.fa-th-large:before{content:"\f009"}.fa-th-list:before{content:"\f00b"}.fa-the-red-yeti:before{content:"\f69d"}.fa-theater-masks:before{content:"\f630"}.fa-themeco:before{content:"\f5c6"}.fa-themeisle:before{content:"\f2b2"}.fa-thermometer:before{content:"\f491"}.fa-thermometer-empty:before{content:"\f2cb"}.fa-thermometer-full:before{content:"\f2c7"}.fa-thermometer-half:before{content:"\f2c9"}.fa-thermometer-quarter:before{content:"\f2ca"}.fa-thermometer-three-quarters:before{content:"\f2c8"}.fa-think-peaks:before{content:"\f731"}.fa-thumbs-down:before{content:"\f165"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbtack:before{content:"\f08d"}.fa-ticket-alt:before{content:"\f3ff"}.fa-times:before{content:"\f00d"}.fa-times-circle:before{content:"\f057"}.fa-tint:before{content:"\f043"}.fa-tint-slash:before{content:"\f5c7"}.fa-tired:before{content:"\f5c8"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-toilet-paper:before{content:"\f71e"}.fa-toolbox:before{content:"\f552"}.fa-tooth:before{content:"\f5c9"}.fa-torah:before{content:"\f6a0"}.fa-torii-gate:before{content:"\f6a1"}.fa-tractor:before{content:"\f722"}.fa-trade-federation:before{content:"\f513"}.fa-trademark:before{content:"\f25c"}.fa-traffic-light:before{content:"\f637"}.fa-train:before{content:"\f238"}.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-trash:before{content:"\f1f8"}.fa-trash-alt:before{content:"\f2ed"}.fa-tree:before{content:"\f1bb"}.fa-trello:before{content:"\f181"}.fa-tripadvisor:before{content:"\f262"}.fa-trophy:before{content:"\f091"}.fa-truck:before{content:"\f0d1"}.fa-truck-loading:before{content:"\f4de"}.fa-truck-monster:before{content:"\f63b"}.fa-truck-moving:before{content:"\f4df"}.fa-truck-pickup:before{content:"\f63c"}.fa-tshirt:before{content:"\f553"}.fa-tty:before{content:"\f1e4"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-tv:before{content:"\f26c"}.fa-twitch:before{content:"\f1e8"}.fa-twitter:before{content:"\f099"}.fa-twitter-square:before{content:"\f081"}.fa-typo3:before{content:"\f42b"}.fa-uber:before{content:"\f402"}.fa-uikit:before{content:"\f403"}.fa-umbrella:before{content:"\f0e9"}.fa-umbrella-beach:before{content:"\f5ca"}.fa-underline:before{content:"\f0cd"}.fa-undo:before{content:"\f0e2"}.fa-undo-alt:before{content:"\f2ea"}.fa-uniregistry:before{content:"\f404"}.fa-universal-access:before{content:"\f29a"}.fa-university:before{content:"\f19c"}.fa-unlink:before{content:"\f127"}.fa-unlock:before{content:"\f09c"}.fa-unlock-alt:before{content:"\f13e"}.fa-untappd:before{content:"\f405"}.fa-upload:before{content:"\f093"}.fa-usb:before{content:"\f287"}.fa-user:before{content:"\f007"}.fa-user-alt:before{content:"\f406"}.fa-user-alt-slash:before{content:"\f4fa"}.fa-user-astronaut:before{content:"\f4fb"}.fa-user-check:before{content:"\f4fc"}.fa-user-circle:before{content:"\f2bd"}.fa-user-clock:before{content:"\f4fd"}.fa-user-cog:before{content:"\f4fe"}.fa-user-edit:before{content:"\f4ff"}.fa-user-friends:before{content:"\f500"}.fa-user-graduate:before{content:"\f501"}.fa-user-injured:before{content:"\f728"}.fa-user-lock:before{content:"\f502"}.fa-user-md:before{content:"\f0f0"}.fa-user-minus:before{content:"\f503"}.fa-user-ninja:before{content:"\f504"}.fa-user-plus:before{content:"\f234"}.fa-user-secret:before{content:"\f21b"}.fa-user-shield:before{content:"\f505"}.fa-user-slash:before{content:"\f506"}.fa-user-tag:before{content:"\f507"}.fa-user-tie:before{content:"\f508"}.fa-user-times:before{content:"\f235"}.fa-users:before{content:"\f0c0"}.fa-users-cog:before{content:"\f509"}.fa-ussunnah:before{content:"\f407"}.fa-utensil-spoon:before{content:"\f2e5"}.fa-utensils:before{content:"\f2e7"}.fa-vaadin:before{content:"\f408"}.fa-vector-square:before{content:"\f5cb"}.fa-venus:before{content:"\f221"}.fa-venus-double:before{content:"\f226"}.fa-venus-mars:before{content:"\f228"}.fa-viacoin:before{content:"\f237"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-vial:before{content:"\f492"}.fa-vials:before{content:"\f493"}.fa-viber:before{content:"\f409"}.fa-video:before{content:"\f03d"}.fa-video-slash:before{content:"\f4e2"}.fa-vihara:before{content:"\f6a7"}.fa-vimeo:before{content:"\f40a"}.fa-vimeo-square:before{content:"\f194"}.fa-vimeo-v:before{content:"\f27d"}.fa-vine:before{content:"\f1ca"}.fa-vk:before{content:"\f189"}.fa-vnv:before{content:"\f40b"}.fa-volleyball-ball:before{content:"\f45f"}.fa-volume-down:before{content:"\f027"}.fa-volume-mute:before{content:"\f6a9"}.fa-volume-off:before{content:"\f026"}.fa-volume-up:before{content:"\f028"}.fa-vote-yea:before{content:"\f772"}.fa-vr-cardboard:before{content:"\f729"}.fa-vuejs:before{content:"\f41f"}.fa-walking:before{content:"\f554"}.fa-wallet:before{content:"\f555"}.fa-warehouse:before{content:"\f494"}.fa-water:before{content:"\f773"}.fa-weebly:before{content:"\f5cc"}.fa-weibo:before{content:"\f18a"}.fa-weight:before{content:"\f496"}.fa-weight-hanging:before{content:"\f5cd"}.fa-weixin:before{content:"\f1d7"}.fa-whatsapp:before{content:"\f232"}.fa-whatsapp-square:before{content:"\f40c"}.fa-wheelchair:before{content:"\f193"}.fa-whmcs:before{content:"\f40d"}.fa-wifi:before{content:"\f1eb"}.fa-wikipedia-w:before{content:"\f266"}.fa-wind:before{content:"\f72e"}.fa-window-close:before{content:"\f410"}.fa-window-maximize:before{content:"\f2d0"}.fa-window-minimize:before{content:"\f2d1"}.fa-window-restore:before{content:"\f2d2"}.fa-windows:before{content:"\f17a"}.fa-wine-bottle:before{content:"\f72f"}.fa-wine-glass:before{content:"\f4e3"}.fa-wine-glass-alt:before{content:"\f5ce"}.fa-wix:before{content:"\f5cf"}.fa-wizards-of-the-coast:before{content:"\f730"}.fa-wolf-pack-battalion:before{content:"\f514"}.fa-won-sign:before{content:"\f159"}.fa-wordpress:before{content:"\f19a"}.fa-wordpress-simple:before{content:"\f411"}.fa-wpbeginner:before{content:"\f297"}.fa-wpexplorer:before{content:"\f2de"}.fa-wpforms:before{content:"\f298"}.fa-wpressr:before{content:"\f3e4"}.fa-wrench:before{content:"\f0ad"}.fa-x-ray:before{content:"\f497"}.fa-xbox:before{content:"\f412"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-y-combinator:before{content:"\f23b"}.fa-yahoo:before{content:"\f19e"}.fa-yandex:before{content:"\f413"}.fa-yandex-international:before{content:"\f414"}.fa-yelp:before{content:"\f1e9"}.fa-yen-sign:before{content:"\f157"}.fa-yin-yang:before{content:"\f6ad"}.fa-yoast:before{content:"\f2b1"}.fa-youtube:before{content:"\f167"}.fa-youtube-square:before{content:"\f431"}.fa-zhihu:before{content:"\f63f"}.sr-only{border:0;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.sr-only-focusable:active,.sr-only-focusable:focus{clip:auto;height:auto;margin:0;overflow:visible;position:static;width:auto}@font-face{font-family:"Font Awesome 5 Brands";font-style:normal;font-weight:normal;src:url(../webfonts/fa-brands-400.eot);src:url(../webfonts/fa-brands-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-brands-400.woff2) format("woff2"),url(../webfonts/fa-brands-400.woff) format("woff"),url(../webfonts/fa-brands-400.ttf) format("truetype"),url(../webfonts/fa-brands-400.svg#fontawesome) format("svg")}.fab{font-family:"Font Awesome 5 Brands"}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:400;src:url(../webfonts/fa-regular-400.eot);src:url(../webfonts/fa-regular-400.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-regular-400.woff2) format("woff2"),url(../webfonts/fa-regular-400.woff) format("woff"),url(../webfonts/fa-regular-400.ttf) format("truetype"),url(../webfonts/fa-regular-400.svg#fontawesome) format("svg")}.far{font-weight:400}@font-face{font-family:"Font Awesome 5 Free";font-style:normal;font-weight:900;src:url(../webfonts/fa-solid-900.eot);src:url(../webfonts/fa-solid-900.eot?#iefix) format("embedded-opentype"),url(../webfonts/fa-solid-900.woff2) format("woff2"),url(../webfonts/fa-solid-900.woff) format("woff"),url(../webfonts/fa-solid-900.ttf) format("truetype"),url(../webfonts/fa-solid-900.svg#fontawesome) format("svg")}.fa,.far,.fas{font-family:"Font Awesome 5 Free"}.fa,.fas{font-weight:900} \ No newline at end of file diff --git a/public/front/css/sass/base.scss b/public/front/css/sass/base.scss new file mode 100644 index 00000000..005edd65 --- /dev/null +++ b/public/front/css/sass/base.scss @@ -0,0 +1,269 @@ +/*=================================================================*/ +/* BASE +/*=================================================================*/ +body { + color: $colordefault; + background-color: #fff; + font-family: $fontstack; + font-size: 15px; + line-height: 1.7; + overflow-x: hidden; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +img { + max-width: 100%; + height: auto; +} + +.text-center { + text-align: center; +} + +.text-left { + text-align: left; +} + +.text-right { + text-align: right; +} + +.relative { + position: relative; +} + +/*=================================================================*/ +/* Preloader +/*=================================================================*/ +#preloader { + background: #FFF; + height: 100%; + position: fixed; + width: 100%; + top: 0; + z-index: 1031; +} + +.book { + --color: #1076BC; + --duration: 6.8s; + width: 32px; + height: 12px; + position: absolute; + left: 50%; + top: 50%; + @include transform(translate(-50%,-50%)); + .inner { + width: 32px; + height: 12px; + position: relative; + transform-origin: 2px 2px; + transform: rotateZ(-90deg); + animation: book var(--duration) ease infinite; + .left, + .right { + width: 60px; + height: 4px; + top: 0; + border-radius: 2px; + background: var(--color); + position: absolute; + &:before { + content: ''; + width: 48px; + height: 4px; + border-radius: 2px; + background: inherit; + position: absolute; + top: -10px; + left: 6px; + } + } + .left { + right: 28px; + transform-origin: 58px 2px; + transform: rotateZ(90deg); + animation: left var(--duration) ease infinite; + } + .right { + left: 28px; + transform-origin: 2px 2px; + transform: rotateZ(-90deg); + animation: right var(--duration) ease infinite; + } + .middle { + width: 32px; + height: 12px; + border: 4px solid var(--color); + border-top: 0; + border-radius: 0 0 9px 9px; + transform: translateY(2px); + } + } + ul { + margin: 0; + padding: 0; + list-style: none; + position: absolute; + left: 50%; + top: 0; + li { + height: 4px; + border-radius: 2px; + transform-origin: 100% 2px; + width: 48px; + right: 0; + top: -10px; + position: absolute; + background: var(--color); + transform: rotateZ(0deg) translateX(-18px); + animation-duration: var(--duration); + animation-timing-function: ease; + animation-iteration-count: infinite; + $i: 0; + @while $i < 19 { + &:nth-child(#{$i}) { + animation-name: page-#{$i}; + } + $i: $i + 1; + } + } + } +} + +$i: 0; +@while $i < 19 { + $delay: $i * 1.86; + $delay-after: $i * 1.74; + @keyframes page-#{$i} { + #{4 + $delay}% { + transform: rotateZ(0deg) translateX(-18px); + } + #{13 + $delay-after}%, + #{54 + $delay}% { + transform: rotateZ(180deg) translateX(-18px); + } + #{63 + $delay-after}% { + transform: rotateZ(0deg) translateX(-18px); + } + } + $i: $i + 1; +} + +@keyframes left { + 4% { + transform: rotateZ(90deg); + } + 10%, + 40% { + transform: rotateZ(0deg); + } + 46%, + 54% { + transform: rotateZ(90deg); + } + 60%, + 90% { + transform: rotateZ(0deg); + } + 96% { + transform: rotateZ(90deg); + } +} + +@keyframes right { + 4% { + transform: rotateZ(-90deg); + } + 10%, + 40% { + transform: rotateZ(0deg); + } + 46%, + 54% { + transform: rotateZ(-90deg); + } + 60%, + 90% { + transform: rotateZ(0deg); + } + 96% { + transform: rotateZ(-90deg); + } +} + +@keyframes book { + 4% { + transform: rotateZ(-90deg); + } + 10%, + 40% { + transform: rotateZ(0deg); + transform-origin: 2px 2px; + } + 40.01%, + 59.99% { + transform-origin: 30px 2px; + } + 46%, + 54% { + transform: rotateZ(90deg); + } + 60%, + 90% { + transform: rotateZ(0deg); + transform-origin: 2px 2px; + } + 96% { + transform: rotateZ(-90deg); + } +} + +/*=================================================================*/ +/* TYPOGRAPHY +/*=================================================================*/ +h1,h2,h3,h4,h5,h6 { + color: $colordark; + font-family: $fonthead; + font-weight: 700; + line-height: 1.4; + margin: 20px 0; +} + +a { + color: $colorpink; + outline: 0; + text-decoration: none; + @include transition(.2s); + &:hover { + color: $colordark; + } + &:focus { + outline: 0; + } +} + +.blockquote { + font-size: 18px; +} + +blockquote { + padding: 20px 20px; + margin: 0 0 20px; + background: #fff8fa; + border-left: solid 3px $colorpink; + border-radius: 5px; +} + +blockquote p { + line-height: 1.6; +} + +.blockquote-footer { + margin-top: 0; +} + +.table { + color: $colortext; +} \ No newline at end of file diff --git a/public/front/css/sass/buttons.scss b/public/front/css/sass/buttons.scss new file mode 100644 index 00000000..3e71689e --- /dev/null +++ b/public/front/css/sass/buttons.scss @@ -0,0 +1,124 @@ +/*=================================================================*/ +/* BUTTONS +/*=================================================================*/ +button { + @include transition(.3s); + &:focus { + outline: none; + box-shadow: none !important; + } +} + +.btn { + color: #FFF; + border: 0; + border-radius: 25px; + font-family: $fontstack; + font-size: 14px; + font-weight: 400; + overflow: hidden; + position: relative; + display: inline-block; + vertical-align: middle; + white-space: nowrap; + text-align: center; + @include transition(.3s); +} + +.btn:focus { + outline: 0; + @include shadow(none); +} + +.btn-default { + color: #FFF; + padding: 9.5px 36px; + @include linear-gradient(to right, $colorpink 0%, $colororange 51%, $colorpink 100%); + background-size: 200% auto; + &:hover { + color: #FFF; + background-position: right center; + } +} + +.btn-default-secondary{ + color: #FFF; + padding: 9.5px 36px; + @include linear-gradient(to right, $colorsecondary 0%, $colorsecondarygradient 51%, $colorsecondary 100%); + background-size: 200% auto; + &:hover { + color: #FFF; + background-position: right center; + } +} + +.btn-simple { + color: $colordefault; + padding: 9.5px 36px; + background: transparent; + border: solid 1px #EBEBEB; + &:hover { + color: $colorpink; + border-color: $colorpink; + } +} + +.btn-light { + color: #FFF; + padding: 9.5px 36px; + background: transparent; + border: solid 1px #FFF; + &:hover { + color: $colorpink; + border-color: #FFF; + } +} + +.btn-full { + padding: 9.5px 36px; + width: 100%; +} + +.btn-lg { + padding: 13px 40px; + font-size: 16px; +} + +.btn-sm { + padding: 7px 20px; + font-size: 12px; +} + +.btn-xs { + padding: 5px 10px; + font-size: 11px; +} + +.icon-button { + color: #FFF; + border: 0; + border-radius: 50%; + @include linear-gradient(to top, $colororange 0%, $colorpink 51%, $colororange 100%); + background-size: auto 200%; + display: inline-flex; + justify-content: center; + align-items: center; + height: 37px; + line-height: 39px; + text-align: center; + vertical-align: middle; + width: 37px; + @include shadow(0px 2px 4px 0px rgba(0,0,0,0.15)); + @include transition(.2s); + &:hover { + background-position: bottom center; + } +} + +.btn-instagram { + position: absolute; + top: 50%; + left: 50%; + @include transform(translate(-50%, -50%)); + z-index: 1; +} \ No newline at end of file diff --git a/public/front/css/sass/elements.scss b/public/front/css/sass/elements.scss new file mode 100644 index 00000000..8c827c8e --- /dev/null +++ b/public/front/css/sass/elements.scss @@ -0,0 +1,282 @@ +/*=================================================================*/ +/* BOOTSTRAP ELEMENTS +/*=================================================================*/ +.breadcrumb { + font-size: 14px; + padding: 0; + margin-bottom: 20px; + list-style: none; + background-color: transparent; + border-radius: 0; + .breadcrumb-item { + a { + color: $colorgray; + &:hover { + color: $colorpink; + } + } + &.active { + color: $colorgray; + } + } +} + +/* === Form Control === */ +.form-control { + display: block; + border-radius: 25px; + width: 100%; + padding: 8px 24px; + font-size: 14px; + line-height: 1.6; + color: $colordefault; + background-color: #FFF; + background-image: none; + border: solid 1px #EBEBEB; + -webkit-box-shadow: none; + box-shadow: none; +} + +.form-control:focus { + border-color: $colorpink; + outline: 0; + -webkit-box-shadow: none; + box-shadow: none; +} + +.form-group { + margin-bottom: 30px; +} + +.input-group-addon { + padding: 0; + font-size: 14px; + font-weight: 400; + line-height: 1; + color: #555; + text-align: center; + background-color: transparent; + border: 0; + border-radius: 0; +} + +.form-control::-webkit-input-placeholder { /* Chrome/Opera/Safari */ + color: $colorgray; +} +.form-control::-moz-placeholder { /* Firefox 19+ */ + color: $colorgray; +} +.form-control:-ms-input-placeholder { /* IE 10+ */ + color: $colorgray; +} +.form-control:-moz-placeholder { /* Firefox 18- */ + color: $colorgray; +} + +/* === Alert === */ +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 0; +} + +.alert-dismissable .close, .alert-dismissible .close { + position: relative; + top: 0; + right: 0; + color: inherit; +} + +/* === Nav Tabs === */ +.nav-tabs { + border-bottom: 0; +} + +.tab-content { + position: relative; +} + +.tab-pane { + opacity: 1; + @include transition(.2s); +} + +.tab-pane.loading { + opacity: 0.3; +} + +.lds-dual-ring { + display: inline-block; + position: absolute; + width: 40px; + height: 40px; + top: 50%; + left: 50%; + visibility: hidden; + opacity: 0; + transform: translate(-50%, -50%); + @include transition(.2s); + z-index: 1; + &.loading { + visibility: visible; + opacity: 1; + } +} +.lds-dual-ring:after { + content: " "; + display: block; + width: 40px; + height: 40px; + margin: 8px; + border-radius: 50%; + border: 3px solid; + border-color: $colorpink transparent $colorpink transparent; + animation: lds-dual-ring 1.2s linear infinite; +} + +@keyframes lds-dual-ring { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + + + +.nav-fill .nav-item, .nav-fill>.nav-link { + margin-right: 10px; + &:last-child { + margin-right: 0; + } +} + +.nav-fill .nav-item > .nav-link { + color: #8F9BAD !important; + margin-right: 10px; +} + +.nav-pills .nav-link.active, .nav-pills .show>.nav-link { + color: #fff !important; + @include linear-gradient(to right, $colorpink 0%, $colororange 51%, $colorpink 100%); + border-color: transparent; + background-size: 200% auto; +} + +.nav-pills .nav-link { + background: 0 0; + border: solid 1px #EBEBEB; + border-radius: 30px; +} + +/* === Pagination === */ +.pagination { + display: flex; + padding-left: 0; + list-style: none; + margin: 40px 0 0; + li { + list-style-type: none; + margin: 0 5px; + } +} + +.page-item.active .page-link { + z-index: 3; + color: #FFF; + border-color: transparent; + @include linear-gradient(to top, $colororange 0%, $colorpink 51%, $colororange 100%); + background-size: auto 200%; + @include shadow(0px 2px 4px 0px rgba(0,0,0,0.15)); + @include transition(.2s); +} + +.page-link { + position: relative; + display: block; + color: $colordefault; + border-radius: 50%; + font-size: 14px; + text-decoration: none; + border: solid 1px #EBEBEB; + height: 45px; + line-height: 45px; + text-align: center; + padding: 0; + width: 45px; + transition: color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out; +} + +.page-link:hover { + z-index: 2; + color: #FFF; + @include linear-gradient(to top, $colororange 0%, $colorpink 51%, $colororange 100%); + background-size: auto 200%; + border-color: transparent; +} + +.page-item:first-child .page-link { + border-top-left-radius: 50%; + border-bottom-left-radius: 50%; +} + +.page-item:last-child .page-link { + border-top-right-radius: 50%; + border-bottom-right-radius: 50%; +} + +/*=================================================================*/ +/* THEME ELEMENTS +/*=================================================================*/ +/* === Go to Top === */ +#return-to-top { + color: $colordefault; + font-size: 13px; + border: solid 1px #EBEBEB; + text-decoration: none; + -webkit-border-radius: 25px; + -moz-border-radius: 25px; + border-radius: 25px; + padding: 6px 20px; + z-index: 4; + @include transition(.3s); + i { + font-size: 11px; + vertical-align: middle; + margin-right: 10px; + } +} + +#return-to-top:hover { + color: $colorpink; + border-color: $colorpink; +} + +.videoWrapper { + position: relative; + padding-bottom: 56.25%; /* 16:9 */ + padding-top: 0; + height: 0; +} +.videoWrapper iframe { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.social-icons { + a { + font-size: 16px; + color: $colordark; + &:hover { + color: $colorpink; + } + } + li:not(:last-child) { + margin-right: 1rem; + } +} \ No newline at end of file diff --git a/public/front/css/sass/header.scss b/public/front/css/sass/header.scss new file mode 100644 index 00000000..7d1b9bc0 --- /dev/null +++ b/public/front/css/sass/header.scss @@ -0,0 +1,435 @@ +/*=================================================================*/ +/* HEADER +/*=================================================================*/ +.header-default { + padding: 40px 0; + position: relative; + width: 100%; + .navbar-nav { + margin-left: 50px; + } +} + +.header-default.clone { + position: fixed; + top: 0; + left: 0; + background: #FFF; + border-bottom: solid 1px #EBEBEB; + right: 0; + padding: 25px 0; + @include transform(translateY(-100%)); + transition: 0.2s transform cubic-bezier(0.3, 0.73, 0.3, 0.74); + z-index: 4; +} + +.header-personal nav.clone, .header-classic .header-bottom.clone { + position: fixed; + top: 0; + left: 0; + background: #FFF; + border-bottom: solid 1px #EBEBEB; + right: 0; + @include transform(translateY(-100%)); + transition: 0.2s transform cubic-bezier(0.3, 0.73, 0.3, 0.74); + z-index: 4; + .centered-nav { + border-top: 0; + } +} + +.header-classic { + .header-top { + padding-top: 35px; + padding-bottom: 35px; + border-bottom: solid 1px #EBEBEB; + } + .header-bottom { + padding: 20px 0; + } +} + +.header-minimal { + padding-top: 40px; + padding-bottom: 40px; + border-bottom: solid 1px #EBEBEB; +} + +body.down .header-default.clone, body.down .header-personal nav.clone, body.down .header-classic .header-bottom.clone { + @include transform(translateY(0)); +} + +.header-personal { + .header-top { + padding-top: 30px; + padding-bottom: 30px; + } + .centered-nav { + border-top: solid 1px #EBEBEB; + padding: 20px 0; + } + &.light { + left: 0; + right: 0; + top: 0; + position: absolute; + z-index: 2; + .centered-nav { + border-top-color: rgb(235 235 235 / 20%); + } + .text-logo { + color: #FFF; + } + .social-icons { + li { + a { + color: #FFF; + &:hover { + color: $colorpink; + } + } + } + } + .navbar { + .nav-link { + color: #FFF; + } + &.clone { + .nav-link { + color: $colormenu; + &:hover { + color: $colordark; + } + } + li.active { + .nav-link { + color: #FFF; + } + } + } + } + } +} + +.text-logo { + color: $colordark; + font-size: 30px; + font-weight: bold; + font-family: "Tajwal", sans-serif; + line-height: 1; + margin: 0px 0 5px; + .dot { + color: $colorpink; + font-size: 44px; + margin-left: 5px; + } +} + +.slogan { + font-family: $fonthead; + color: $colorgray; + font-size: 14px; +} + +.navbar { + padding: 0; +} + +.navbar-nav { + font-family: $fonthead; + font-size: 14px; + .nav-link { + padding: .439rem 1rem; + color: $colormenu; + &:hover { + color: $colordark; + } + } + li.active { + .nav-link { + color: #FFF; + border-radius: 25px; + @include linear-gradient(to right, $colorpink 0%, $colororange 100%); + } + } +} + +.navbar-brand { + padding-top: 0; + padding-bottom: 0; + margin-right: 0; +} + +.dropdown-menu { + position: absolute; + top: 100%; + z-index: 1000; + display: none; + min-width: 10rem; + padding: 0; + margin: 0; + color: #212529; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 0; + border-radius: .25rem; + @include shadow(0 8px 20px rgb(32 54 86 / 20%)); + &:after { + content: ''; + display: block; + height: 0; + width: 0; + position: absolute; + top: -10px; + left: 25%; + border-left: 8px solid transparent; + border-right: 8px solid transparent; + border-bottom: 10px solid #FFF; + } + li { + &:after { + content: ''; + background: #EBEBEB; + background: -webkit-linear-gradient(right, #EBEBEB 0%, transparent 100%); + background: linear-gradient(to right, #EBEBEB 0%, transparent 100%); + display: block; + height: 1px; + width: 100%; + } + &:last-child { + &:after { + content: ''; + display: none; + } + } + } +} + +.dropdown-item { + display: block; + width: 100%; + padding: 0.6rem 1.5rem; + clear: both; + font-weight: 400; + font-size: 13px; + color: $colormenu; + text-align: inherit; + text-decoration: none; + white-space: nowrap; + background-color: transparent; + border: 0; + &:hover { + margin-left: 5px; + } +} + +.dropdown-item:focus, .dropdown-item:hover { + color: $colorpink; + background-color: transparent; +} + +.dropdown-divider { + height: 0; + margin: .1rem 0; + overflow: hidden; + border-top: 1px solid #DDD; +} + +.dropdown-toggle::after { + display: inline-block; + margin-left: 5px; + vertical-align: middle; + content: "\e604"; + font-family: 'simple-line-icons'; + font-size: 8px; + border-top: transparent; + border-right: transparent; + border-bottom: 0; + border-left: transparent; +} + +.burger-icon { + &:before, &:after { + content: ''; + background: #FFF; + display: block; + margin: auto; + height: 1px; + width: 15px; + } + &:before { + margin-bottom: 6px; + } + &:after { + margin-top: 6px; + } +} + +.header-right { + .social-icons { + display: inline-block; + } + .header-buttons { + display: inline-block; + margin-left: 50px; + button { + margin-left: 10px; + &:first-child { + margin-left: 0; + } + } + } +} + +@media (min-width: 992px) { + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: 1.3rem; + padding-left: 1.3rem; + } +} + +.canvas-menu { + background: #FFF; + height: 100vh; + overflow-y: auto; + overflow-x: hidden; + padding: 40px; + position: fixed; + right: 0; + top: 0; + width: 300px; + z-index: 6; + @include shadow(-4px 0px 20px rgb(32 54 86 / 10%)); + @include transform(translateX(350px)); + @include transition(.3s); + &.open { + @include transform(translateX(0)); + } + &.position-left { + left: 0; + right: auto; + @include transform(translateX(-350px)); + &.open { + @include transform(translateX(0)); + } + } + .btn-close { + box-sizing: content-box; + width: 1em; + height: 1em; + position: absolute; + padding: .25em .25em; + color: #000; + border: 0; + border-radius: .25rem; + opacity: .4; + right: 30px; + top: 20px; + @include transition(.3s); + &:focus { + outline: none; + box-shadow: none; + } + &:hover { + opacity: 1; + } + } + .logo { + margin-bottom: 80px; + margin-top: 50px; + width: 100%; + } + nav { + width: 100%; + } + /* === Vertical Menu === */ + .vertical-menu { + list-style: none; + padding: 0; + margin-bottom: 0; + } + .vertical-menu li.openmenu>a { + color: $colordark; + } + .vertical-menu li.openmenu .switch { + @include transform(rotate(180deg)); + } + .vertical-menu li { + padding: 0; + position: relative; + list-style: none; + @include transition(.2s); + &:after { + content: ''; + display: block; + height: 1px; + margin-bottom: 10px; + margin-top: 10px; + width: 100%; + @include linear-gradient(to right, #EBEBEB 0%, transparent 100%); + } + &.active { + a { + color: $colorpink; + } + .submenu { + a { + color: $colormenu; + &:hover { + color: $colordark; + } + } + } + } + } + .vertical-menu li .switch { + border: solid 1px #EBEBEB; + border-radius: 5px; + font-size: 10px; + display: inline-block; + padding: 10px; + line-height: 1; + cursor: pointer; + color: $colorpink; + position: absolute; + top: 0px; + right: 0; + @include transform(rotate(0deg)); + @include transition(.2s); + -webkit-backface-visibility: hidden; + } + .vertical-menu li a { + color: $colordark; + font-family: $fonthead; + font-size: 14px; + font-weight: 400; + text-decoration: none; + position: relative; + } + .vertical-menu li .nav-link.active { + + } + /* === Submenu === */ + + .submenu { + display: none; + padding: 10px 20px; + } + .submenu li { + padding: 5px 0; + &:after { + content: ''; + display: none; + } + } + .submenu li a { + color: $colormenu; + font-size: 14px; + font-weight: 400; + } + .submenu li a:hover { + color: $colordark; + } +} \ No newline at end of file diff --git a/public/front/css/sass/helper.scss b/public/front/css/sass/helper.scss new file mode 100644 index 00000000..0e3125eb --- /dev/null +++ b/public/front/css/sass/helper.scss @@ -0,0 +1,128 @@ +/*=================================================================*/ +/* HELPER +/*=================================================================*/ +.rounded { + border-radius: 10px !important; +} + +.bordered { + border: solid 1px #EBEBEB; +} + +.padding-30 { + padding: 30px; +} + +.alignleft { + float: left; + margin: 0.375em 1.75em 1em 0; +} + +.alignright { + float: right; + margin: 0.375em 0 1em 1.75em; +} + +.newsletter-headline { + font-size: 15px; + font-weight: bold; + color: $colordark; + display: block; +} + +.newsletter-privacy { + font-size: 13px; + display: block; +} + +.ads-title { + color: #C0C0C0; + font-family: $fonthead; + font-size: 12px; + display: block; + margin-bottom: 10px; + text-align: center; + text-transform: uppercase; +} + +::selection { + color: #FFF; + background: $colorpink; + /* WebKit/Blink Browsers */ +} + +::-moz-selection { + color: #FFF; + background: $colorpink; + /* Gecko Browsers */ +} + +.tag { + color: $colordefault; + border: solid 1px #EBEBEB; + border-radius: 25px; + font-size: 13px; + display: inline-block; + padding: 3px 14px; + margin: 4px 0; + &:hover { + border-color: $colorpink; + color: $colorpink; + } +} + +.mouse { + border: solid 1px #FFF; + border-radius: 16px; + display: block; + height: 26px; + width: 20px; + left: 50%; + bottom: 100px; + position: absolute; + z-index: 1; + @include transform(translateX(-50%)); + } + +.mouse .wheel { + background: #FFF; + border-radius: 100%; + display: block; + position: absolute; + top: 8px; + left: 50%; + @include transform(translateX(-50%)); + height: 3px; + width: 3px; + -webkit-animation: animation-mouse 2s linear infinite; + animation: animation-mouse 2s linear infinite; +} + +@-webkit-keyframes animation-mouse { + 0% { + top: 29%; + } + 15% { + top: 50%; + } + 50% { + top: 50%; + } + 100% { + top: 29%; + } +} +@keyframes animation-mouse { + 0% { + top: 29%; + } + 15% { + top: 50%; + } + 50% { + top: 50%; + } + 100% { + top: 29%; + } +} \ No newline at end of file diff --git a/public/front/css/sass/main.scss b/public/front/css/sass/main.scss new file mode 100644 index 00000000..4090af19 --- /dev/null +++ b/public/front/css/sass/main.scss @@ -0,0 +1,1195 @@ +/*=================================================================*/ +/* SECTIONS +/*=================================================================*/ +.site-wrapper { + .main-overlay { + opacity: 0; + visibility: hidden; + filter: blur(2px); + background: #fff; + position: fixed; + height: 100vh; + width: 100%; + z-index: 5; + @include transition(.3s); + &.active { + opacity: 0.6; + visibility: visible; + } + } +} + +section { + position: relative; +} + +.main-content { + margin-top: 60px; +} + +.main-content-lg { + margin-top: 140px; + margin-bottom: 140px; +} + +.container-minimal { + max-width: 900px; + margin: auto; + padding-left: 15px; + padding-right: 15px; +} + +.section-header { + margin-bottom: 30px; + position: relative; + img.wave { + margin-top: 10px; + } +} +.section-title { + font-size: 24px; + margin: 0; +} + +.hero { + background-size: cover; + background-repeat: no-repeat; + background-attachment: fixed; + height: 1040px; + width: 100%; + &:after { + content: ''; + background: $coloroverlay; + display: block; + left: 0; + opacity: .8; + top: 0; + height: 100%; + position: absolute; + width: 100%; + } + .cta { + margin: auto; + max-width: 700px; + padding-top: 120px; + position: relative; + z-index: 1; + h2 { + color: #FFF; + font-size: 48px; + } + p { + color: #FFF; + font-size: 18px; + opacity: .7; + } + } + svg { + position: absolute; + bottom: 0px; + left: 0; + width: 100%; + z-index: 1; + } +} + +/*=================================================================*/ +/* POST +/*=================================================================*/ +.post { + .category-badge { + color: #FFF; + font-size: 13px; + border-radius: 25px; + display: inline-block; + padding: 6px 11px; + line-height: 1; + left: 20px; + top: 20px; + z-index: 1; + @include linear-gradient(to left, $colorpink 0%, $colororange 51%, $colorpink 100%); + background-size: 200% auto; + @include transition(.3s); + &.lg { + font-size: 14px; + padding: 8px 20px; + } + &:hover { + background-position: right center; + } + } + .post-format { + color: #FFF; + display: block; + border-radius: 50%; + font-size: 20px; + height: 50px; + line-height: 54px; + right: 20px; + text-align: center; + bottom: -25px; + position: absolute; + width: 50px; + -webkit-box-shadow: 0px 2px 4px 0px rgb(0 0 0 / 15%); + -moz-box-shadow: 0px 2px 4px 0px rgb(0 0 0 / 15%); + box-shadow: 0px 2px 4px 0px rgb(0 0 0 / 15%); + @include linear-gradient(to top, $colorpink 0%, $colororange 100%); + z-index: 1; + } + .post-format-sm { + color: #FFF; + display: block; + border-radius: 50%; + font-size: 14px; + height: 30px; + line-height: 34px; + left: 20px; + text-align: center; + top: 20px; + position: absolute; + width: 30px; + -webkit-box-shadow: 0px 2px 4px 0px rgb(0 0 0 / 15%); + -moz-box-shadow: 0px 2px 4px 0px rgb(0 0 0 / 15%); + box-shadow: 0px 2px 4px 0px rgb(0 0 0 / 15%); + @include linear-gradient(to top, $colorpink 0%, $colororange 100%); + z-index: 1; + } + .thumb { + position: relative; + &.rounded { + .inner { + border-radius: 10px; + overflow: hidden; + } + } + &.circle { + .inner { + overflow: hidden; + border-radius: 50%; + } + } + &.top-rounded { + .inner { + overflow: hidden; + border-top-left-radius: 10px; + border-top-right-radius: 10px; + } + } + img { + @include transform(scale(1)); + @include transition(.3s); + } + &:hover { + img { + @include transform(scale(1.07)); + } + } + } + .post-title { + a { + color: $colordark; + &:hover { + color: $colorpink; + } + } + } + .excerpt { + font-size: 16px; + } + .meta { + font-size: 14px; + color: $colorgray; + a { + color: $colorgray; + font-weight: 400; + &:hover { + color: $colorpink; + } + } + i { + vertical-align: middle; + } + li { + &:last-child { + &:after { + content: ''; + display: none; + } + } + &:after { + content: ''; + display: inline-block; + background-color: $colorpink; + border-radius: 50%; + margin-left: 1rem; + height: 3px; + vertical-align: middle; + position: relative; + top: -1px; + width: 3px; + } + &:not(:last-child) { + margin-right: .8rem; + } + img.author { + margin-right: 12px; + vertical-align: middle; + } + } + } + .post-bottom { + .social-share { + .toggle-button { + font-size: 16px; + color: $colorgray; + background-color: transparent; + border: 0; + padding: 0; + vertical-align: middle; + } + .icons { + display: inline; + vertical-align: middle; + li { + a { + color: $colorgray; + font-size: 14px; + &:hover { + color: $colordark; + } + } + &:not(:last-child) { + margin-right: .8rem; + } + } + &:before {} + } + } + .more-button { + a { + font-size: 16px; + font-weight: 700; + color: $colorgray; + i { + color: $colorgray; + font-size: 12px; + margin-left: 10px; + vertical-align: middle; + } + &:hover { + color: $colorpink; + } + } + } + .more-link { + color: $colordark; + font-size: 17px; + font-weight: bold; + i { + font-size: 12px; + color: $colorgray; + margin-left: 10px; + vertical-align: middle; + position: relative; + right: 0; + @include transition(.3s); + } + &:hover { + i { + right: -5px; + } + } + } + } + &.post-list-sm { + clear: both; + &.circle { + .thumb { + max-width: 60px; + } + .details { + margin-left: 80px; + } + } + &.square { + .thumb { + max-width: 110px; + } + .details { + margin-left: 130px; + } + } + .thumb { + float: left; + position: relative; + .number { + color: #FFF; + display: block; + border: solid 2px #FFF; + border-radius: 50%; + font-size: 12px; + font-family: $fonthead; + font-weight: 700; + height: 24px; + line-height: 22px; + left: 0; + text-align: center; + top: -10px; + position: absolute; + width: 24px; + -webkit-box-shadow: 0px 2px 4px 0px rgb(0 0 0 / 15%); + -moz-box-shadow: 0px 2px 4px 0px rgb(0 0 0 / 15%); + box-shadow: 0px 2px 4px 0px rgb(0 0 0 / 15%); + @include linear-gradient(to top, $colorpink 0%, $colororange 100%); + z-index: 1; + } + } + .post-title { + font-size: 15px; + } + &:after { + content: ''; + display: block; + height: 1px; + margin-bottom: 20px; + margin-top: 20px; + width: 100%; + @include linear-gradient(to left, #EBEBEB 0%, transparent 100%); + } + &.before-seperator { + &:before { + content: ''; + display: block; + height: 1px; + margin-bottom: 20px; + margin-top: 20px; + width: 100%; + @include linear-gradient(to left, #EBEBEB 0%, transparent 100%); + } + &:after { + content: ''; + display: none; + } + } + &:last-child { + &:after { + content: ''; + display: none; + } + } + } + &.post-list { + margin-bottom: 30px; + .thumb { + float: left; + max-width: 265px; + } + .details { + margin-left: 295px; + } + .post-title { + margin: 9px 0; + } + .post-bottom { + margin-top: 9px; + .social-share { + .icons { + opacity: 0; + visibility: hidden; + @include transition(.2s); + &:before { + content: ''; + background: #DDD; + display: inline-block; + height: 1px; + margin-left: 10px; + margin-right: 10px; + vertical-align: middle; + width: 30px; + } + &.visible { + opacity: 1; + visibility: visible; + } + } + } + } + &:after { + content: ''; + display: block; + height: 1px; + margin-bottom: 30px; + margin-top: 30px; + width: 100%; + @include linear-gradient(to left, #EBEBEB 0%, transparent 100%); + } + } + &.post-grid { + .thumb { + .inner { + margin-top: -1px; + margin-left: -1px; + margin-right: -1px; + } + } + .details { + padding: 30px; + } + .post-bottom { + border-top: solid 1px #EBEBEB; + margin: 0 30px; + padding: 20px 0; + .icons { + opacity: 0; + visibility: hidden; + @include transition(.2s); + &:before { + content: ''; + background: #DDD; + display: inline-block; + height: 1px; + margin-left: 10px; + margin-right: 10px; + vertical-align: middle; + width: 30px; + } + &.visible { + opacity: 1; + visibility: visible; + } + } + } + } + &.post-classic { + margin-bottom: 40px; + .thumb { + .inner { + margin-top: -1px; + margin-left: -1px; + margin-right: -1px; + } + } + .details { + padding: 50px 50px 40px; + .post-title { + font-size: 30px; + } + } + .post-bottom { + border-top: solid 1px #EBEBEB; + margin: 0 50px; + padding: 20px 0; + .social-share { + .toggle-button { + display: none; + } + } + } + .post-format { + font-size: 24px; + height: 60px; + line-height: 64px; + right: 50px; + bottom: -30px; + width: 60px; + } + } + &.post-xl { + margin-bottom: 140px; + &:last-of-type { + margin-bottom: 80px; + } + .thumb { + .inner { + margin-top: -1px; + margin-left: -1px; + margin-right: -1px; + } + } + .post-top { + padding: 0 100px; + margin-bottom: 40px; + .post-title { + font-size: 36px; + } + } + .details { + padding: 50px 100px 50px; + } + .post-bottom { + border-top: solid 1px #EBEBEB; + margin: 0 100px; + padding-top: 20px; + .social-share { + .toggle-button { + display: none; + } + } + } + .post-format { + font-size: 24px; + height: 60px; + line-height: 64px; + right: 50px; + bottom: -30px; + width: 60px; + } + } + &.post-over-content { + position: relative; + .thumb { + position: relative; + overflow: hidden; + &:after { + content: ''; + background: $coloroverlay; + display: block; + height: 100%; + left: 0; + opacity: .6; + top: 0; + position: absolute; + width: 100%; + } + } + .details { + bottom: 20px; + left: 20px; + right: 20px; + position: absolute; + z-index: 1; + } + .post-title { + font-size: 22px; + a { + color: #FFF; + &:hover { + color: #FFF; + } + } + } + .meta { + color: rgb(255 255 255 / 50%); + li { + &:after { + content: ''; + background: rgb(255 255 255 / 50%); + } + a { + color: rgb(255 255 255 / 50%); + } + } + } + } +} + +.post-single { + .post-header { + margin-bottom: 30px; + .title { + font-size: 36px; + } + } + .featured-image { + margin-bottom: 30px; + img { + border-radius: 10px; + } + } + .post-content { + color: $colortext; + font-size: 16px; + } + .post-bottom { + border-top: solid 1px #EBEBEB; + padding-top: 30px; + margin-top: 30px; + } + ul li { + list-style-type: circle; + } +} + +.single-cover { + background-size: cover; + background-attachment: fixed; + background-repeat: no-repeat; + height: 600px; + position: relative; + &:after { + content: ''; + background: $coloroverlay; + display: block; + height: 100%; + left: 0; + opacity: .6; + top: 0; + position: absolute; + width: 100%; + } + .cover-content { + bottom: 60px; + max-width: 720px; + position: absolute; + z-index: 1; + .title { + color: #FFF; + font-size: 36px; + } + .breadcrumb .breadcrumb-item a { + color: #FFF; + } + .breadcrumb-item+.breadcrumb-item::before { + color: #FFF; + } + .meta { + color: rgba(255, 255, 255, 0.6); + a { + color: rgba(255, 255, 255, 0.6); + } + } + .meta li:after { + content: ""; + background-color: #FFF; + } + } +} + +.featured-post-lg { + position: relative; + &:hover { + .thumb { + .inner { + @include transform(scale(1.05)); + } + } + } + .thumb { + position: relative; + overflow: hidden; + @include shadow(0 8px 20px rgb(32 54 86 / 30%)); + &:after { + content: ''; + background: $coloroverlay; + display: block; + height: 100%; + left: 0; + opacity: .6; + top: 0; + position: absolute; + width: 100%; + } + } + .details { + bottom: 50px; + left: 50px; + right: 50px; + position: absolute; + z-index: 1; + } + .post-title { + font-size: 32px; + a { + color: #FFF; + &:hover { + color: #FFF; + } + } + } + .meta { + color: rgb(255 255 255 / 60%); + li { + &:after { + content: ''; + background: rgb(255 255 255 / 60%); + } + a { + color: rgb(255 255 255 / 60%); + } + } + } + .thumb { + .inner { + background-size: cover; + background-position: center center; + height: 533px; + @include transition(.3s); + @include transform(scale(1)); + } + } +} + +.featured-post-md { + position: relative; + &:hover { + .thumb { + .inner { + @include transform(scale(1.05)); + } + } + } + .thumb { + position: relative; + overflow: hidden; + .inner { + background-size: cover; + background-position: center center; + height: 356px; + @include transition(.3s); + @include transform(scale(1)); + } + &:after { + content: ''; + background: $coloroverlay; + display: block; + height: 100%; + left: 0; + opacity: .6; + top: 0; + position: absolute; + width: 100%; + } + } + .details { + padding: 0 30px; + position: absolute; + text-align: center; + top: 50%; + width: 100%; + z-index: 1; + @include transform(translateY(-50%)); + } + .post-title { + font-size: 22px; + margin: 15px 0; + a { + color: #FFF; + &:hover { + color: #FFF; + } + } + } + .meta { + color: rgb(255 255 255 / 50%); + li { + &:after { + content: ''; + background: rgb(255 255 255 / 50%); + } + a { + color: rgb(255 255 255 / 50%); + } + } + } +} + +.featured-post-xl { + position: relative; + &:hover { + .thumb { + .inner { + @include transform(scale(1.05)); + } + } + } + .thumb { + position: relative; + overflow: hidden; + .inner { + background-size: cover; + background-position: center center; + height: 540px; + @include transition(.3s); + @include transform(scale(1)); + } + &:after { + content: ''; + background: $coloroverlay; + display: block; + height: 100%; + left: 0; + opacity: .6; + top: 0; + position: absolute; + width: 100%; + } + } + .details { + padding: 0 30px; + position: absolute; + text-align: center; + left: 50%; + top: 50%; + max-width: 650px; + z-index: 1; + @include transform(translate(-50%, -50%)); + } + .post-title { + font-size: 36px; + margin: 20px 0; + a { + color: #FFF; + &:hover { + color: #FFF; + } + } + } + .meta { + color: rgb(255 255 255 / 50%); + li { + &:after { + content: ''; + background: rgb(255 255 255 / 50%); + } + a { + color: rgb(255 255 255 / 50%); + } + } + } +} + +.post-carousel-lg { + @include shadow(0 8px 20px rgb(32 54 86 / 30%)); + overflow: hidden; + border-radius: 10px; + .slick-dots { + position: absolute; + bottom: 30px; + margin: 0; + } + .slick-prev { + left: 30px; + } + .slick-next { + right: 30px; + } + .slick-next, .slick-prev { + width: 50px; + height: 50px; + line-height: 65px; + background: rgb(255 255 255 / 30%); + border: 0; + } + .slick-prev:before, .slick-next:before { + color: #FFF; + font-size: 16px; + position: initial; + } + .slick-next:hover, .slick-prev:hover { + background: #fff; + } +} + +.post-carousel-featured { + padding: 0 15px; +} + +.post-carousel { + .slick-slide { + margin: 0 12px; + } +} + +.post-carousel-widget { + .post-carousel { + .thumb { + max-width: 300px; + } + } +} + +.post-tabs { + padding: 30px; + .tab-content { + margin-top: 30px; + } +} + +/*=================================================================*/ +/* ABOUT AUTHOR +/*=================================================================*/ +.about-author { + background: #F1F8FF; + &:last-child { + margin-bottom: 0; + } + &.child { + margin-left: 60px; + } + .thumb { + float: left; + height: 100px; + width: 100px; + border-radius: 50%; + overflow: hidden; + } + .details { + margin-left: 130px; + h4.name { + font-size: 20px; + margin: 0 0 10px; + a { + color: $colordark; + &:hover { + color: $colorpink; + } + } + } + p { + margin-bottom: 10px; + } + } + .author-link { + font-size: 16px; + font-weight: 700; + i { + font-size: 12px; + vertical-align: middle; + margin-left: 10px; + } + } +} + +/*=================================================================*/ +/* POST COMMENTS +/*=================================================================*/ +.comments { + padding: 0; + margin: 0; + li { + list-style: none; + &:after { + content: ''; + display: block; + height: 1px; + margin-top: 30px; + width: 100%; + @include linear-gradient(to left, #EBEBEB 0%, transparent 100%); + } + &.comment { + margin-bottom: 30px; + &:last-child { + margin-bottom: 0; + &:after { + content: ''; + display: none; + } + } + &.child { + margin-left: 60px; + } + .thumb { + float: left; + } + .details { + margin-left: 90px; + h4.name { + font-size: 18px; + margin: 0; + a { + color: $colordark; + &:hover { + color: $colorpink; + } + } + } + .date { + color: $colorgray; + font-size: 13px; + display: block; + margin-bottom: 10px; + } + } + } + } +} + +/*=================================================================*/ +/* PAGE +/*=================================================================*/ +.page-header { + background: #F1F8FF; + padding: 40px 0; + h1 { + font-size: 30px; + } +} + +.page-content { + color: $colortext; + font-size: 16px; +} + +/*=================================================================*/ +/* CONTACT +/*=================================================================*/ +.contact-item { + border-radius: 10px; + padding: 25px; + .icon { + color: #FFF; + float: left; + border-radius: 10px; + display: block; + font-size: 25px; + line-height: 50px; + height: 50px; + text-align: center; + width: 50px; + @include linear-gradient(to right, $colorpink 0%, $colororange 100%); + } + .details { + margin-left: 20px; + } + h3 { + font-size: 18px; + } +} + +/*=================================================================*/ +/* WIDGETS +/*=================================================================*/ +.widget { + border: solid 1px #EBEBEB; + padding: 35px 30px; + margin-bottom: 40px; + &:last-child { + margin-bottom: 0; + } + &.no-container { + padding: 0; + border: 0; + } + .widget-header { + margin-bottom: 30px; + img.wave { + margin-top: 10px; + } + } + .widget-title { + font-size: 20px; + margin: 0; + } + .widget-about { + background-size: cover; + background-position: center center; + background-repeat: no-repeat; + } + .widget-ads { + display: block; + text-align: center; + } + ul.list { + list-style: none; + padding: 0; + margin-bottom: 0; + li { + line-height: 2.8rem; + a { + color: $colordark; + font-weight: 700; + &:before { + content: "\e606"; + color: $colorpink; + font-family: 'simple-line-icons'; + font-size: 11px; + vertical-align: middle; + margin-right: 25px; + } + &:hover { + color: $colorpink; + } + } + &:after { + content: ''; + display: block; + height: 1px; + width: 100%; + @include linear-gradient(to right, #EBEBEB 0%, transparent 100%); + } + span { + float: right; + } + } + &.social-icons { + li { + a { + &:before { + content: ''; + margin-right: 0; + } + } + } + } + } +} + +/*=================================================================*/ +/* INSTAGRAM FEED +/*=================================================================*/ +.instagram { + margin: 60px 0 0; + position: relative; +} + +.instagram-feed { + margin-left: -2.5px; + margin-right: -2.5px; + .insta-item { + overflow: hidden; + padding-left: 2.5px; + padding-right: 2.5px; + img { + border-radius: 10px; + } + } +} + +/*=================================================================*/ +/* FOOTER +/*=================================================================*/ +footer{ + margin-top: 50px; + .footer-inner { + border-top: solid 1px #EBEBEB; + padding: 40px 0; + .copyright { + color: $colorgray; + } + } +} + +/*=================================================================*/ +/* SEARCH POPUP +/*=================================================================*/ +.search-popup { + background: rgba(255, 255, 255, 1); + position: fixed; + left: 0; + top: 0; + height: 100vh; + width: 100%; + z-index: 6; + opacity: 0; + visibility: hidden; + &.visible { + opacity: 1; + visibility: visible; + animation: growOut 500ms ease-in-out forwards; + } + .search-content { + position: absolute; + top: 40%; + left: 50%; + width: 650px; + @include transform(translate(-50%,-50%)); + input { + + } + } + .btn-close { + right: 30px; + top: 30px; + position: absolute; + } +} \ No newline at end of file diff --git a/public/front/css/sass/mixins.scss b/public/front/css/sass/mixins.scss new file mode 100644 index 00000000..79ac1777 --- /dev/null +++ b/public/front/css/sass/mixins.scss @@ -0,0 +1,113 @@ +//$fonthead: 'Poppins', sans-serif; +//$fontstack: 'Roboto', sans-serif; +$fonthead: 'Tajawal', sans-serif; +$fontstack: 'Tajawal', sans-serif; +$colordark: #203656; +$colordefault: #8F9BAD; +$colorpink: #1076BC; +$colororange: #4ca9df; +$colorgray: #9faabb; +$colorborder: #EBEBEB; +$colormenu: #79889e; +$coloroverlay: #203656; +$colortext: #707a88; + +$colorsecondary:#F1A352; +$colorsecondarygradient:#FAE0C5; + +@mixin transition($second) { + -webkit-transition: all $second ease-in-out; + -moz-transition: all $second ease-in-out; + transition: all $second ease-in-out; +} + +@mixin transform($option) { + -webkit-transform: $option; + -moz-transform: $option; + -ms-transform: $option; + -o-transform: $option; + transform: $option; +} + +@mixin shadow($option) { + -webkit-box-shadow: $option; + -moz-box-shadow: $option; + box-shadow: $option; +} + + + +/// Convert angle +/// @author Chris Eppstein +/// @param {Number} $value - Value to convert +/// @param {String} $unit - Unit to convert to +/// @return {Number} Converted angle +@function convert-angle($value, $unit) { + $convertable-units: deg grad turn rad; + $conversion-factors: 1 (10grad/9deg) (1turn/360deg) (3.1415926rad/180deg); + @if index($convertable-units, unit($value)) and index($convertable-units, $unit) { + @return $value + / nth($conversion-factors, index($convertable-units, unit($value))) + * nth($conversion-factors, index($convertable-units, $unit)); + } + + @warn "Cannot convert `#{unit($value)}` to `#{$unit}`."; +} + +/// Test if `$value` is an angle +/// @param {*} $value - Value to test +/// @return {Bool} +@function is-direction($value) { + $is-direction: index((to top, to top right, to right top, to right, to bottom right, to right bottom, to bottom, to bottom left, to left bottom, to left, to left top, to top left), $value); + $is-angle: type-of($value) == 'number' and index('deg' 'grad' 'turn' 'rad', unit($value)); + + @return $is-direction or $is-angle; +} + +/// Convert a direction to legacy syntax +/// @param {Keyword | Angle} $value - Value to convert +/// @require {function} is-direction +/// @require {function} convert-angle +@function legacy-direction($value) { + @if is-direction($value) == false { + @warn "Cannot convert `#{$value}` to legacy syntax because it doesn't seem to be an angle or a direction"; + } + + $conversion-map: ( + to top : bottom, + to top right : bottom left, + to right top : left bottom, + to right : left, + to bottom right : top left, + to right bottom : left top, + to bottom : top, + to bottom left : top right, + to left bottom : right top, + to left : right, + to left top : right bottom, + to top left : bottom right + ); + + @if map-has-key($conversion-map, $value) { + @return map-get($conversion-map, $value); + } + + @return 90deg - convert-angle($value, 'deg'); +} + +/// Mixin printing a linear-gradient +/// as well as a plain color fallback +/// and the `-webkit-` prefixed declaration +/// @access public +/// @param {String | List | Angle} $direction - Linear gradient direction +/// @param {Arglist} $color-stops - List of color-stops composing the gradient +@mixin linear-gradient($direction, $color-stops...) { + @if is-direction($direction) == false { + $color-stops: ($direction, $color-stops); + $direction: 180deg; + } + + background: nth(nth($color-stops, 1), 1); + background: -webkit-linear-gradient(legacy-direction($direction), $color-stops); + background: linear-gradient($direction, $color-stops); +} \ No newline at end of file diff --git a/public/front/css/sass/responsive.scss b/public/front/css/sass/responsive.scss new file mode 100644 index 00000000..0defc2cf --- /dev/null +++ b/public/front/css/sass/responsive.scss @@ -0,0 +1,248 @@ +/*=================================================================*/ +/* RESPONSIVE SETTINGS +/*=================================================================*/ +@media (min-width: 1200px) { + .container, .container-lg, .container-md, .container-sm, .container-xl { + max-width: 1140px; + } +} + +@media (min-width: 1400px) { + .container, .container-lg, .container-md, .container-sm, .container-xl, .container-xxl { + max-width: 1140px; + } +} + +@media only screen and (max-width: 1200px) { + .header-right .social-icons { + display: none; + } +} + +@media only screen and (max-width: 992px) { + .inner-wrapper-sticky { + transform: none !important; + position: relative !important; + top: 0 !important; + left: 0 !important; + width: auto !important; + } + .header-classic { + .header-buttons { + width: 100%; + } + } + .single-cover { + background-attachment: unset; + height: 400px; + .cover-content { + .title { + font-size: 26px; + } + } + } +} + +@media only screen and (min-width: 992px) { + .navbar .nav-item .dropdown-menu { + display: none; + animation: growOut 300ms ease-in-out forwards; + transform-origin: top center; + } + @keyframes growOut { + 0% { + transform: scale(0) + } + 80% { + transform: scale(1.1) + } + 100% { + transform: scale(1) + } + } + .navbar .nav-item:hover .nav-link {} + .navbar .nav-item:hover .dropdown-menu { + display: block; + } + .navbar .nav-item .dropdown-menu { + margin-top: 0; + } +} + +@media only screen and (max-width: 767px) { + .featured-post-lg .thumb .inner { + height: 425px; + } + .post.post-list .thumb { + float: none; + max-width: 550px; + } + .post.post-list .details { + margin-left: 0; + margin-top: 25px; + } + .post .meta li:after { + content: ""; + margin-left: .5rem; + } + .post .meta li:not(:last-child) { + margin-right: 0.3rem; + } + .instagram-feed .insta-item { + text-align: center; + margin: 2.5px 0; + } + .footer-inner { + text-align: center; + } + .featured-post-lg .post-title { + font-size: 26px; + } + .featured-post-lg .details { + bottom: 30px; + left: 30px; + right: 30px; + } + .search-popup .search-content { + padding: 0 20px; + width: 100%; + } + .post { + &.post-classic { + .post-bottom { + .social-share { + .toggle-button { + display: inline-block; + } + } + .icons { + opacity: 0; + visibility: hidden; + @include transition(.2s); + &:before { + content: ''; + background: #DDD; + display: inline-block; + height: 1px; + margin-left: 10px; + margin-right: 10px; + vertical-align: middle; + width: 30px; + } + &.visible { + opacity: 1; + visibility: visible; + } + } + } + } + } + .featured-post-xl .thumb .inner { + height: 350px; + } + .featured-post-xl .details { + padding: 0 30px; + left: 0; + top: 50%; + max-width: 100%; + @include transform(translate(0%, -50%)); + } + .featured-post-xl .post-title { + font-size: 24px; + } + .post.post-classic .details { + padding: 30px; + } + .post.post-classic .details .post-title { + font-size: 20px; + } + .post.post-classic .post-bottom { + margin: 0 30px; + } + .post.post-classic .post-format, .post.post-xl .post-format { + font-size: 20px; + height: 50px; + line-height: 54px; + right: 20px; + bottom: -25px; + width: 50px; + } + .post.post-xl .post-top { + padding: 0 20px; + } + .post.post-xl .details { + padding: 50px 20px 50px; + } + .post.post-xl .post-bottom { + margin: 0 20px; + } + .post.post-xl .post-top .post-title { + font-size: 24px; + } + .hero { + height: 740px; + } + .hero .cta h2 { + font-size: 30px; + } + .hero .cta p { + font-size: 16px; + } + .alignleft, .alignright { + float: none; + } + .post-single .post-header .title { + font-size: 26px; + } + .post-single .social-icons { + margin-top: 20px; + text-align: center; + } + .about-author .thumb { + float: none; + margin: auto; + } + .about-author .details { + margin-left: 0; + margin-top: 20px; + text-align: center; + } + .comments li.comment.child { + margin-left: 30px; + } + .breadcrumb .breadcrumb-item.active { + display: none; + } + .post-carousel-widget { + .post-carousel { + margin: 0 12px; + .post-title { + font-size: 16px; + } + } + } +} + +@media only screen and (min-width: 767px) { + +} + +@media only screen and (min-width: 576px) and (max-width: 767px) { + +} + +@media only screen and (max-width: 576px) { + .single-cover { + height: 300px; + } + .alignleft { + margin: 0.375em auto 1em; + clear: both; + display: block; + } + .alignright { + margin: 0.375em auto 1em; + clear: both; + display: block; + } +} \ No newline at end of file diff --git a/public/front/css/sass/slick.scss b/public/front/css/sass/slick.scss new file mode 100644 index 00000000..c1229e43 --- /dev/null +++ b/public/front/css/sass/slick.scss @@ -0,0 +1,142 @@ +/*=================================================================*/ +/* SLICK SETTINGS +/*=================================================================*/ +.slick-slide { + height: auto; + outline: none; +} + +.slick-next,.slick-prev { + width: 30px; + height: 30px; + line-height: 30px; + text-align: center; + background: transparent; + border-radius: 50%; + border: solid 1px #EBEBEB; + top: 50%; + @include transform(translateY(-50%)); + z-index: 1; + @include transition(.3s); +} + +.slick-next:hover,.slick-next:focus,.slick-prev:hover,.slick-prev:focus { + background: #FFF; + border-color: #EBEBEB; + &:before { + color: $colororange; + } +} + +.slick-prev { + left: -30px; + &:hover { + background: $colorpink; + } +} + +.slick-next { + right: -30px; + &:hover { + background: $colorpink; + } +} + +.slick-prev:before, .slick-next:before { + color: #909090; + font-size: 10px; + opacity: 1; +} + +.slick-prev:before { + content: "\e605"; + font-family: 'simple-line-icons'; + top: 9px; + left: 9px; + position: absolute; +} + +.slick-next:before { + content: "\e606"; + font-family: 'simple-line-icons'; + position: absolute; + top: 9px; + left: 9px; +} + +.slick-dotted.slick-slider { + margin-bottom: 0; +} + +.slick-dots { + position: relative; + bottom: 0; + padding: 0; + margin: 25px 0 0; +} + +.slick-dots li { + width: 8px; + height: 8px; + margin: 0 5px; +} + +.slick-dots li.slick-active { + width: 25px; + height: 8px; +} + +.slick-dots li button { + width: 20px; + height: 20px; + padding: 0; +} + +.slick-dots li.slick-active button:before { + @include linear-gradient(to right, $colorpink 0%, $colororange 100%); + border-radius: 5px; + opacity: 1; + width: 25px; +} + +.slick-dots li button:before { + content: ""; + background: #d4d4d4; + border-radius: 50%; + opacity: 1; + top: 8px; + left: 8px; + height: 8px; + width: 8px; +} + +.slick-arrows-top { + position: absolute; + top: 50%; + right: 0; + @include transform(translate(0px, -50%)); +} + +.slick-arrows-bot { + position: relative; + text-align: center; + margin-top: 20px; +} + +.slick-custom-buttons { + color: #909090; + font-size: 10px; + width: 30px; + height: 30px; + line-height: 30px; + text-align: center; + background: #FFF; + border-radius: 50%; + border: solid 1px #EBEBEB; + padding: 0; + @include transition(.3s); + &:hover { + color: $colorpink; + border-color: $colorpink; + } +} \ No newline at end of file diff --git a/public/front/css/simple-line-icons.css b/public/front/css/simple-line-icons.css new file mode 100644 index 00000000..a5e97e26 --- /dev/null +++ b/public/front/css/simple-line-icons.css @@ -0,0 +1,778 @@ +@font-face { + font-family: 'simple-line-icons'; + src: url('../fonts/Simple-Line-Icons.eot?v=2.4.0'); + src: url('../fonts/Simple-Line-Icons.eot?v=2.4.0#iefix') format('embedded-opentype'), url('../fonts/Simple-Line-Icons.woff2?v=2.4.0') format('woff2'), url('../fonts/Simple-Line-Icons.ttf?v=2.4.0') format('truetype'), url('../fonts/Simple-Line-Icons.woff?v=2.4.0') format('woff'), url('../fonts/Simple-Line-Icons.svg?v=2.4.0#simple-line-icons') format('svg'); + font-weight: normal; + font-style: normal; +} +/* + Use the following CSS code if you want to have a class per icon. + Instead of a list of all class selectors, you can use the generic [class*="icon-"] selector, but it's slower: +*/ +.icon-user, +.icon-people, +.icon-user-female, +.icon-user-follow, +.icon-user-following, +.icon-user-unfollow, +.icon-login, +.icon-logout, +.icon-emotsmile, +.icon-phone, +.icon-call-end, +.icon-call-in, +.icon-call-out, +.icon-map, +.icon-location-pin, +.icon-direction, +.icon-directions, +.icon-compass, +.icon-layers, +.icon-menu, +.icon-list, +.icon-options-vertical, +.icon-options, +.icon-arrow-down, +.icon-arrow-left, +.icon-arrow-right, +.icon-arrow-up, +.icon-arrow-up-circle, +.icon-arrow-left-circle, +.icon-arrow-right-circle, +.icon-arrow-down-circle, +.icon-check, +.icon-clock, +.icon-plus, +.icon-minus, +.icon-close, +.icon-event, +.icon-exclamation, +.icon-organization, +.icon-trophy, +.icon-screen-smartphone, +.icon-screen-desktop, +.icon-plane, +.icon-notebook, +.icon-mustache, +.icon-mouse, +.icon-magnet, +.icon-energy, +.icon-disc, +.icon-cursor, +.icon-cursor-move, +.icon-crop, +.icon-chemistry, +.icon-speedometer, +.icon-shield, +.icon-screen-tablet, +.icon-magic-wand, +.icon-hourglass, +.icon-graduation, +.icon-ghost, +.icon-game-controller, +.icon-fire, +.icon-eyeglass, +.icon-envelope-open, +.icon-envelope-letter, +.icon-bell, +.icon-badge, +.icon-anchor, +.icon-wallet, +.icon-vector, +.icon-speech, +.icon-puzzle, +.icon-printer, +.icon-present, +.icon-playlist, +.icon-pin, +.icon-picture, +.icon-handbag, +.icon-globe-alt, +.icon-globe, +.icon-folder-alt, +.icon-folder, +.icon-film, +.icon-feed, +.icon-drop, +.icon-drawer, +.icon-docs, +.icon-doc, +.icon-diamond, +.icon-cup, +.icon-calculator, +.icon-bubbles, +.icon-briefcase, +.icon-book-open, +.icon-basket-loaded, +.icon-basket, +.icon-bag, +.icon-action-undo, +.icon-action-redo, +.icon-wrench, +.icon-umbrella, +.icon-trash, +.icon-tag, +.icon-support, +.icon-frame, +.icon-size-fullscreen, +.icon-size-actual, +.icon-shuffle, +.icon-share-alt, +.icon-share, +.icon-rocket, +.icon-question, +.icon-pie-chart, +.icon-pencil, +.icon-note, +.icon-loop, +.icon-home, +.icon-grid, +.icon-graph, +.icon-microphone, +.icon-music-tone-alt, +.icon-music-tone, +.icon-earphones-alt, +.icon-earphones, +.icon-equalizer, +.icon-like, +.icon-dislike, +.icon-control-start, +.icon-control-rewind, +.icon-control-play, +.icon-control-pause, +.icon-control-forward, +.icon-control-end, +.icon-volume-1, +.icon-volume-2, +.icon-volume-off, +.icon-calendar, +.icon-bulb, +.icon-chart, +.icon-ban, +.icon-bubble, +.icon-camrecorder, +.icon-camera, +.icon-cloud-download, +.icon-cloud-upload, +.icon-envelope, +.icon-eye, +.icon-flag, +.icon-heart, +.icon-info, +.icon-key, +.icon-link, +.icon-lock, +.icon-lock-open, +.icon-magnifier, +.icon-magnifier-add, +.icon-magnifier-remove, +.icon-paper-clip, +.icon-paper-plane, +.icon-power, +.icon-refresh, +.icon-reload, +.icon-settings, +.icon-star, +.icon-symbol-female, +.icon-symbol-male, +.icon-target, +.icon-credit-card, +.icon-paypal, +.icon-social-tumblr, +.icon-social-twitter, +.icon-social-facebook, +.icon-social-instagram, +.icon-social-linkedin, +.icon-social-pinterest, +.icon-social-github, +.icon-social-google, +.icon-social-reddit, +.icon-social-skype, +.icon-social-dribbble, +.icon-social-behance, +.icon-social-foursqare, +.icon-social-soundcloud, +.icon-social-spotify, +.icon-social-stumbleupon, +.icon-social-youtube, +.icon-social-dropbox, +.icon-social-vkontakte, +.icon-social-steam { + font-family: 'simple-line-icons'; + speak: none; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + /* Better Font Rendering =========== */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.icon-user:before { + content: "\e005"; +} +.icon-people:before { + content: "\e001"; +} +.icon-user-female:before { + content: "\e000"; +} +.icon-user-follow:before { + content: "\e002"; +} +.icon-user-following:before { + content: "\e003"; +} +.icon-user-unfollow:before { + content: "\e004"; +} +.icon-login:before { + content: "\e066"; +} +.icon-logout:before { + content: "\e065"; +} +.icon-emotsmile:before { + content: "\e021"; +} +.icon-phone:before { + content: "\e600"; +} +.icon-call-end:before { + content: "\e048"; +} +.icon-call-in:before { + content: "\e047"; +} +.icon-call-out:before { + content: "\e046"; +} +.icon-map:before { + content: "\e033"; +} +.icon-location-pin:before { + content: "\e096"; +} +.icon-direction:before { + content: "\e042"; +} +.icon-directions:before { + content: "\e041"; +} +.icon-compass:before { + content: "\e045"; +} +.icon-layers:before { + content: "\e034"; +} +.icon-menu:before { + content: "\e601"; +} +.icon-list:before { + content: "\e067"; +} +.icon-options-vertical:before { + content: "\e602"; +} +.icon-options:before { + content: "\e603"; +} +.icon-arrow-down:before { + content: "\e604"; +} +.icon-arrow-left:before { + content: "\e605"; +} +.icon-arrow-right:before { + content: "\e606"; +} +.icon-arrow-up:before { + content: "\e607"; +} +.icon-arrow-up-circle:before { + content: "\e078"; +} +.icon-arrow-left-circle:before { + content: "\e07a"; +} +.icon-arrow-right-circle:before { + content: "\e079"; +} +.icon-arrow-down-circle:before { + content: "\e07b"; +} +.icon-check:before { + content: "\e080"; +} +.icon-clock:before { + content: "\e081"; +} +.icon-plus:before { + content: "\e095"; +} +.icon-minus:before { + content: "\e615"; +} +.icon-close:before { + content: "\e082"; +} +.icon-event:before { + content: "\e619"; +} +.icon-exclamation:before { + content: "\e617"; +} +.icon-organization:before { + content: "\e616"; +} +.icon-trophy:before { + content: "\e006"; +} +.icon-screen-smartphone:before { + content: "\e010"; +} +.icon-screen-desktop:before { + content: "\e011"; +} +.icon-plane:before { + content: "\e012"; +} +.icon-notebook:before { + content: "\e013"; +} +.icon-mustache:before { + content: "\e014"; +} +.icon-mouse:before { + content: "\e015"; +} +.icon-magnet:before { + content: "\e016"; +} +.icon-energy:before { + content: "\e020"; +} +.icon-disc:before { + content: "\e022"; +} +.icon-cursor:before { + content: "\e06e"; +} +.icon-cursor-move:before { + content: "\e023"; +} +.icon-crop:before { + content: "\e024"; +} +.icon-chemistry:before { + content: "\e026"; +} +.icon-speedometer:before { + content: "\e007"; +} +.icon-shield:before { + content: "\e00e"; +} +.icon-screen-tablet:before { + content: "\e00f"; +} +.icon-magic-wand:before { + content: "\e017"; +} +.icon-hourglass:before { + content: "\e018"; +} +.icon-graduation:before { + content: "\e019"; +} +.icon-ghost:before { + content: "\e01a"; +} +.icon-game-controller:before { + content: "\e01b"; +} +.icon-fire:before { + content: "\e01c"; +} +.icon-eyeglass:before { + content: "\e01d"; +} +.icon-envelope-open:before { + content: "\e01e"; +} +.icon-envelope-letter:before { + content: "\e01f"; +} +.icon-bell:before { + content: "\e027"; +} +.icon-badge:before { + content: "\e028"; +} +.icon-anchor:before { + content: "\e029"; +} +.icon-wallet:before { + content: "\e02a"; +} +.icon-vector:before { + content: "\e02b"; +} +.icon-speech:before { + content: "\e02c"; +} +.icon-puzzle:before { + content: "\e02d"; +} +.icon-printer:before { + content: "\e02e"; +} +.icon-present:before { + content: "\e02f"; +} +.icon-playlist:before { + content: "\e030"; +} +.icon-pin:before { + content: "\e031"; +} +.icon-picture:before { + content: "\e032"; +} +.icon-handbag:before { + content: "\e035"; +} +.icon-globe-alt:before { + content: "\e036"; +} +.icon-globe:before { + content: "\e037"; +} +.icon-folder-alt:before { + content: "\e039"; +} +.icon-folder:before { + content: "\e089"; +} +.icon-film:before { + content: "\e03a"; +} +.icon-feed:before { + content: "\e03b"; +} +.icon-drop:before { + content: "\e03e"; +} +.icon-drawer:before { + content: "\e03f"; +} +.icon-docs:before { + content: "\e040"; +} +.icon-doc:before { + content: "\e085"; +} +.icon-diamond:before { + content: "\e043"; +} +.icon-cup:before { + content: "\e044"; +} +.icon-calculator:before { + content: "\e049"; +} +.icon-bubbles:before { + content: "\e04a"; +} +.icon-briefcase:before { + content: "\e04b"; +} +.icon-book-open:before { + content: "\e04c"; +} +.icon-basket-loaded:before { + content: "\e04d"; +} +.icon-basket:before { + content: "\e04e"; +} +.icon-bag:before { + content: "\e04f"; +} +.icon-action-undo:before { + content: "\e050"; +} +.icon-action-redo:before { + content: "\e051"; +} +.icon-wrench:before { + content: "\e052"; +} +.icon-umbrella:before { + content: "\e053"; +} +.icon-trash:before { + content: "\e054"; +} +.icon-tag:before { + content: "\e055"; +} +.icon-support:before { + content: "\e056"; +} +.icon-frame:before { + content: "\e038"; +} +.icon-size-fullscreen:before { + content: "\e057"; +} +.icon-size-actual:before { + content: "\e058"; +} +.icon-shuffle:before { + content: "\e059"; +} +.icon-share-alt:before { + content: "\e05a"; +} +.icon-share:before { + content: "\e05b"; +} +.icon-rocket:before { + content: "\e05c"; +} +.icon-question:before { + content: "\e05d"; +} +.icon-pie-chart:before { + content: "\e05e"; +} +.icon-pencil:before { + content: "\e05f"; +} +.icon-note:before { + content: "\e060"; +} +.icon-loop:before { + content: "\e064"; +} +.icon-home:before { + content: "\e069"; +} +.icon-grid:before { + content: "\e06a"; +} +.icon-graph:before { + content: "\e06b"; +} +.icon-microphone:before { + content: "\e063"; +} +.icon-music-tone-alt:before { + content: "\e061"; +} +.icon-music-tone:before { + content: "\e062"; +} +.icon-earphones-alt:before { + content: "\e03c"; +} +.icon-earphones:before { + content: "\e03d"; +} +.icon-equalizer:before { + content: "\e06c"; +} +.icon-like:before { + content: "\e068"; +} +.icon-dislike:before { + content: "\e06d"; +} +.icon-control-start:before { + content: "\e06f"; +} +.icon-control-rewind:before { + content: "\e070"; +} +.icon-control-play:before { + content: "\e071"; +} +.icon-control-pause:before { + content: "\e072"; +} +.icon-control-forward:before { + content: "\e073"; +} +.icon-control-end:before { + content: "\e074"; +} +.icon-volume-1:before { + content: "\e09f"; +} +.icon-volume-2:before { + content: "\e0a0"; +} +.icon-volume-off:before { + content: "\e0a1"; +} +.icon-calendar:before { + content: "\e075"; +} +.icon-bulb:before { + content: "\e076"; +} +.icon-chart:before { + content: "\e077"; +} +.icon-ban:before { + content: "\e07c"; +} +.icon-bubble:before { + content: "\e07d"; +} +.icon-camrecorder:before { + content: "\e07e"; +} +.icon-camera:before { + content: "\e07f"; +} +.icon-cloud-download:before { + content: "\e083"; +} +.icon-cloud-upload:before { + content: "\e084"; +} +.icon-envelope:before { + content: "\e086"; +} +.icon-eye:before { + content: "\e087"; +} +.icon-flag:before { + content: "\e088"; +} +.icon-heart:before { + content: "\e08a"; +} +.icon-info:before { + content: "\e08b"; +} +.icon-key:before { + content: "\e08c"; +} +.icon-link:before { + content: "\e08d"; +} +.icon-lock:before { + content: "\e08e"; +} +.icon-lock-open:before { + content: "\e08f"; +} +.icon-magnifier:before { + content: "\e090"; +} +.icon-magnifier-add:before { + content: "\e091"; +} +.icon-magnifier-remove:before { + content: "\e092"; +} +.icon-paper-clip:before { + content: "\e093"; +} +.icon-paper-plane:before { + content: "\e094"; +} +.icon-power:before { + content: "\e097"; +} +.icon-refresh:before { + content: "\e098"; +} +.icon-reload:before { + content: "\e099"; +} +.icon-settings:before { + content: "\e09a"; +} +.icon-star:before { + content: "\e09b"; +} +.icon-symbol-female:before { + content: "\e09c"; +} +.icon-symbol-male:before { + content: "\e09d"; +} +.icon-target:before { + content: "\e09e"; +} +.icon-credit-card:before { + content: "\e025"; +} +.icon-paypal:before { + content: "\e608"; +} +.icon-social-tumblr:before { + content: "\e00a"; +} +.icon-social-twitter:before { + content: "\e009"; +} +.icon-social-facebook:before { + content: "\e00b"; +} +.icon-social-instagram:before { + content: "\e609"; +} +.icon-social-linkedin:before { + content: "\e60a"; +} +.icon-social-pinterest:before { + content: "\e60b"; +} +.icon-social-github:before { + content: "\e60c"; +} +.icon-social-google:before { + content: "\e60d"; +} +.icon-social-reddit:before { + content: "\e60e"; +} +.icon-social-skype:before { + content: "\e60f"; +} +.icon-social-dribbble:before { + content: "\e00d"; +} +.icon-social-behance:before { + content: "\e610"; +} +.icon-social-foursqare:before { + content: "\e611"; +} +.icon-social-soundcloud:before { + content: "\e612"; +} +.icon-social-spotify:before { + content: "\e613"; +} +.icon-social-stumbleupon:before { + content: "\e614"; +} +.icon-social-youtube:before { + content: "\e008"; +} +.icon-social-dropbox:before { + content: "\e00c"; +} +.icon-social-vkontakte:before { + content: "\e618"; +} +.icon-social-steam:before { + content: "\e620"; +} diff --git a/public/front/css/slick-old.css b/public/front/css/slick-old.css new file mode 100644 index 00000000..49df0797 --- /dev/null +++ b/public/front/css/slick-old.css @@ -0,0 +1,322 @@ +/* Slider */ +.slick-slider +{ + position: relative; + + display: block; + box-sizing: border-box; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + -webkit-touch-callout: none; + -khtml-user-select: none; + -ms-touch-action: pan-y; + touch-action: pan-y; + -webkit-tap-highlight-color: transparent; +} + +.slick-list +{ + position: relative; + + display: block; + overflow: hidden; + + margin: 0; + padding: 0; +} +.slick-list:focus +{ + outline: none; +} +.slick-list.dragging +{ + cursor: pointer; + cursor: hand; +} + +.slick-slider .slick-track, +.slick-slider .slick-list +{ + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +.slick-track +{ + position: relative; + top: 0; + right: 0; + + display: block; +} +.slick-track:before, +.slick-track:after +{ + display: table; + + content: ''; +} +.slick-track:after +{ + clear: both; +} +.slick-loading .slick-track +{ + visibility: hidden; +} + +.slick-slide +{ + display: none; + float: right; + + height: 100%; + min-height: 1px; +} +[dir='rtl'] .slick-slide +{ + float: left; +} +.slick-slide img +{ + display: block; +} +.slick-slide.slick-loading img +{ + display: none; +} +.slick-slide.dragging img +{ + pointer-events: none; +} +.slick-initialized .slick-slide +{ + display: block; +} +.slick-loading .slick-slide +{ + visibility: hidden; +} +.slick-vertical .slick-slide +{ + display: block; + + height: auto; + + border: 1px solid transparent; +} +.slick-arrow.slick-hidden { + display: none; +} + +@charset 'UTF-8'; +/* Slider */ +.slick-loading .slick-list +{ + background: #fff url('../images/ajax-loader.gif') center center no-repeat; +} + +/* Icons */ +@font-face +{ + font-family: 'slick'; + font-weight: normal; + font-style: normal; + + src: url('../fonts/slick.eot'); + src: url('../fonts/slick.eot?#iefix') format('embedded-opentype'), url('../fonts/slick.woff') format('woff'), url('../fonts/slick.ttf') format('truetype'), url('../fonts/slick.svg#slick') format('svg'); +} +/* Arrows */ +.slick-prev, +.slick-next +{ + font-size: 0; + line-height: 0; + + position: absolute; + top: 50%; + + display: block; + + width: 20px; + height: 20px; + padding: 0; + -webkit-transform: translate(0, -50%); + -ms-transform: translate(0, -50%); + transform: translate(0, -50%); + + cursor: pointer; + + color: transparent; + border: none; + outline: none; + background: transparent; +} +.slick-prev:hover, +.slick-prev:focus, +.slick-next:hover, +.slick-next:focus +{ + color: transparent; + outline: none; + background: transparent; +} +.slick-prev:hover:before, +.slick-prev:focus:before, +.slick-next:hover:before, +.slick-next:focus:before +{ + opacity: 1; +} +.slick-prev.slick-disabled:before, +.slick-next.slick-disabled:before +{ + opacity: .25; +} + +.slick-prev:before, +.slick-next:before +{ + font-family: 'slick'; + font-size: 20px; + line-height: 1; + + opacity: .75; + color: white; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.slick-prev +{ + right: -25px; +} +[dir='rtl'] .slick-prev +{ + left: -25px; + right: auto; +} +.slick-prev:before +{ + content: '←'; +} +[dir='rtl'] .slick-prev:before +{ + content: '→'; +} + +.slick-next +{ + left: -25px; +} +[dir='rtl'] .slick-next +{ + left: auto; + right: -25px; +} +.slick-next:before +{ + content: '→'; +} +[dir='rtl'] .slick-next:before +{ + content: '←'; +} + +/* Dots */ +.slick-dotted.slick-slider +{ + margin-bottom: 30px; +} + +.slick-dots +{ + position: absolute; + bottom: -25px; + + display: block; + + width: 100%; + padding: 0; + margin: 0; + + list-style: none; + + text-align: center; +} +.slick-dots li +{ + position: relative; + + display: inline-block; + + width: 20px; + height: 20px; + margin: 0 5px; + padding: 0; + + cursor: pointer; +} +.slick-dots li button +{ + font-size: 0; + line-height: 0; + + display: block; + + width: 20px; + height: 20px; + padding: 5px; + + cursor: pointer; + + color: transparent; + border: 0; + outline: none; + background: transparent; +} +.slick-dots li button:hover, +.slick-dots li button:focus +{ + outline: none; +} +.slick-dots li button:hover:before, +.slick-dots li button:focus:before +{ + opacity: 1; +} +.slick-dots li button:before +{ + font-family: 'slick'; + font-size: 6px; + line-height: 20px; + + position: absolute; + top: 0; + right: 0; + + width: 20px; + height: 20px; + + content: '•'; + text-align: center; + + opacity: .25; + color: black; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.slick-dots li.slick-active button:before +{ + opacity: .75; + color: black; +} \ No newline at end of file diff --git a/public/front/css/slick.css b/public/front/css/slick.css new file mode 100644 index 00000000..ae6f0b0b --- /dev/null +++ b/public/front/css/slick.css @@ -0,0 +1,322 @@ +/* Slider */ +.slick-slider +{ + position: relative; + + display: block; + box-sizing: border-box; + + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + + -webkit-touch-callout: none; + -khtml-user-select: none; + -ms-touch-action: pan-y; + touch-action: pan-y; + -webkit-tap-highlight-color: transparent; +} + +.slick-list +{ + position: relative; + + display: block; + overflow: hidden; + + margin: 0; + padding: 0; +} +.slick-list:focus +{ + outline: none; +} +.slick-list.dragging +{ + cursor: pointer; + cursor: hand; +} + +.slick-slider .slick-track, +.slick-slider .slick-list +{ + -webkit-transform: translate3d(0, 0, 0); + -moz-transform: translate3d(0, 0, 0); + -ms-transform: translate3d(0, 0, 0); + -o-transform: translate3d(0, 0, 0); + transform: translate3d(0, 0, 0); +} + +.slick-track +{ + position: relative; + top: 0; + left: 0; + + display: block; +} +.slick-track:before, +.slick-track:after +{ + display: table; + + content: ''; +} +.slick-track:after +{ + clear: both; +} +.slick-loading .slick-track +{ + visibility: hidden; +} + +.slick-slide +{ + display: none; + float: left; + + height: 100%; + min-height: 1px; +} +[dir='rtl'] .slick-slide +{ + float: right; +} +.slick-slide img +{ + display: block; +} +.slick-slide.slick-loading img +{ + display: none; +} +.slick-slide.dragging img +{ + pointer-events: none; +} +.slick-initialized .slick-slide +{ + display: block; +} +.slick-loading .slick-slide +{ + visibility: hidden; +} +.slick-vertical .slick-slide +{ + display: block; + + height: auto; + + border: 1px solid transparent; +} +.slick-arrow.slick-hidden { + display: none; +} + +@charset 'UTF-8'; +/* Slider */ +.slick-loading .slick-list +{ + background: #fff url('../images/ajax-loader.gif') center center no-repeat; +} + +/* Icons */ +@font-face +{ + font-family: 'slick'; + font-weight: normal; + font-style: normal; + + src: url('../fonts/slick.eot'); + src: url('../fonts/slick.eot?#iefix') format('embedded-opentype'), url('../fonts/slick.woff') format('woff'), url('../fonts/slick.ttf') format('truetype'), url('../fonts/slick.svg#slick') format('svg'); +} +/* Arrows */ +.slick-prev, +.slick-next +{ + font-size: 0; + line-height: 0; + + position: absolute; + top: 50%; + + display: block; + + width: 20px; + height: 20px; + padding: 0; + -webkit-transform: translate(0, -50%); + -ms-transform: translate(0, -50%); + transform: translate(0, -50%); + + cursor: pointer; + + color: transparent; + border: none; + outline: none; + background: transparent; +} +.slick-prev:hover, +.slick-prev:focus, +.slick-next:hover, +.slick-next:focus +{ + color: transparent; + outline: none; + background: transparent; +} +.slick-prev:hover:before, +.slick-prev:focus:before, +.slick-next:hover:before, +.slick-next:focus:before +{ + opacity: 1; +} +.slick-prev.slick-disabled:before, +.slick-next.slick-disabled:before +{ + opacity: .25; +} + +.slick-prev:before, +.slick-next:before +{ + font-family: 'slick'; + font-size: 20px; + line-height: 1; + + opacity: .75; + color: white; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.slick-prev +{ + left: -25px; +} +[dir='rtl'] .slick-prev +{ + right: -25px; + left: auto; +} +.slick-prev:before +{ + content: '←'; +} +[dir='rtl'] .slick-prev:before +{ + content: '→'; +} + +.slick-next +{ + right: -25px; +} +[dir='rtl'] .slick-next +{ + right: auto; + left: -25px; +} +.slick-next:before +{ + content: '→'; +} +[dir='rtl'] .slick-next:before +{ + content: '←'; +} + +/* Dots */ +.slick-dotted.slick-slider +{ + margin-bottom: 30px; +} + +.slick-dots +{ + position: absolute; + bottom: -25px; + + display: block; + + width: 100%; + padding: 0; + margin: 0; + + list-style: none; + + text-align: center; +} +.slick-dots li +{ + position: relative; + + display: inline-block; + + width: 20px; + height: 20px; + margin: 0 5px; + padding: 0; + + cursor: pointer; +} +.slick-dots li button +{ + font-size: 0; + line-height: 0; + + display: block; + + width: 20px; + height: 20px; + padding: 5px; + + cursor: pointer; + + color: transparent; + border: 0; + outline: none; + background: transparent; +} +.slick-dots li button:hover, +.slick-dots li button:focus +{ + outline: none; +} +.slick-dots li button:hover:before, +.slick-dots li button:focus:before +{ + opacity: 1; +} +.slick-dots li button:before +{ + font-family: 'slick'; + font-size: 6px; + line-height: 20px; + + position: absolute; + top: 0; + left: 0; + + width: 20px; + height: 20px; + + content: '•'; + text-align: center; + + opacity: .25; + color: black; + + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} +.slick-dots li.slick-active button:before +{ + opacity: .75; + color: black; +} \ No newline at end of file diff --git a/public/front/css/style.css b/public/front/css/style.css new file mode 100644 index 00000000..bcf2e001 --- /dev/null +++ b/public/front/css/style.css @@ -0,0 +1,3189 @@ +@charset "UTF-8"; +/* +Template Name: Katen +Version: 1.0 +Author: ThemeGer +Author URI: http://themeforest.net/user/themeger +Description: Minimal Blog and Magazine HTML Template + +[TABLE OF CONTENTS] + +01. Base +02. Preloader +03. Typography +04. Header +05. Sections +06. Post +07. About author +08. Post comments +09. Page +10. Contact +11. Widgets +12. Instagram feed +13. Footer +14. Search Popup +15. Helpers +16. Buttons +17. Bootstrap Elements +18. Theme Elements +19. Slick Settings +20. Responsive Settings + +*/ + +@import url('https://fonts.googleapis.com/css2?family=Noto+Kufi+Arabic&family=Tajawal:wght@200;300;400;500;700;800;900&display=swap'); +/*=================================================================*/ +/* BASE +/*=================================================================*/ +body { + color: #8F9BAD; + background-color: #fff; + font-family: "Tajawal", sans-serif; + font-size: 15px; + line-height: 1.7; + overflow-x: hidden; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +img { + max-width: 100%; + height: auto; +} + +.text-center { + text-align: center; +} + +.text-left { + text-align: right; +} + +.text-right { + text-align: left; +} + +.relative { + position: relative; +} + +/*=================================================================*/ +/* Preloader +/*=================================================================*/ +#preloader { + background: #FFF; + height: 100%; + position: fixed; + width: 100%; + top: 0; + z-index: 1031; +} + +.book { + --color: #1076BC; + --duration: 6.8s; + width: 32px; + height: 12px; + position: absolute; + right: 50%; + top: 50%; + -webkit-transform: translate(50%, -50%); + -moz-transform: translate(50%, -50%); + -ms-transform: translate(50%, -50%); + -o-transform: translate(50%, -50%); + transform: translate(50%, -50%); +} +.book .inner { + width: 32px; + height: 12px; + position: relative; + transform-origin: 2px 2px; + transform: rotateZ(90deg); + animation: book var(--duration) ease infinite; +} +.book .inner .left, +.book .inner .right { + width: 60px; + height: 4px; + top: 0; + border-radius: 2px; + background: var(--color); + position: absolute; +} +.book .inner .left:before, +.book .inner .right:before { + content: ""; + width: 48px; + height: 4px; + border-radius: 2px; + background: inherit; + position: absolute; + top: -10px; + right: 6px; +} +.book .inner .left { + left: 28px; + transform-origin: 58px 2px; + transform: rotateZ(-90deg); + animation: left var(--duration) ease infinite; +} +.book .inner .right { + right: 28px; + transform-origin: 2px 2px; + transform: rotateZ(90deg); + animation: right var(--duration) ease infinite; +} +.book .inner .middle { + width: 32px; + height: 12px; + border: 4px solid var(--color); + border-top: 0; + border-radius: 0 0 9px 9px; + transform: translateY(2px); +} +.book ul { + margin: 0; + padding: 0; + list-style: none; + position: absolute; + right: 50%; + top: 0; +} +.book ul li { + height: 4px; + border-radius: 2px; + transform-origin: 0% 2px; + width: 48px; + left: 0; + top: -10px; + position: absolute; + background: var(--color); + transform: rotateZ(0deg) translateX(18px); + animation-duration: var(--duration); + animation-timing-function: ease; + animation-iteration-count: infinite; +} +.book ul li:nth-child(0) { + animation-name: page-0; +} +.book ul li:nth-child(1) { + animation-name: page-1; +} +.book ul li:nth-child(2) { + animation-name: page-2; +} +.book ul li:nth-child(3) { + animation-name: page-3; +} +.book ul li:nth-child(4) { + animation-name: page-4; +} +.book ul li:nth-child(5) { + animation-name: page-5; +} +.book ul li:nth-child(6) { + animation-name: page-6; +} +.book ul li:nth-child(7) { + animation-name: page-7; +} +.book ul li:nth-child(8) { + animation-name: page-8; +} +.book ul li:nth-child(9) { + animation-name: page-9; +} +.book ul li:nth-child(10) { + animation-name: page-10; +} +.book ul li:nth-child(11) { + animation-name: page-11; +} +.book ul li:nth-child(12) { + animation-name: page-12; +} +.book ul li:nth-child(13) { + animation-name: page-13; +} +.book ul li:nth-child(14) { + animation-name: page-14; +} +.book ul li:nth-child(15) { + animation-name: page-15; +} +.book ul li:nth-child(16) { + animation-name: page-16; +} +.book ul li:nth-child(17) { + animation-name: page-17; +} +.book ul li:nth-child(18) { + animation-name: page-18; +} + +@keyframes page-0 { + 4% { + transform: rotateZ(0deg) translateX(18px); + } + 13%, 54% { + transform: rotateZ(-180deg) translateX(18px); + } + 63% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes page-1 { + 5.86% { + transform: rotateZ(0deg) translateX(18px); + } + 14.74%, 55.86% { + transform: rotateZ(-180deg) translateX(18px); + } + 64.74% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes page-2 { + 7.72% { + transform: rotateZ(0deg) translateX(18px); + } + 16.48%, 57.72% { + transform: rotateZ(-180deg) translateX(18px); + } + 66.48% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes page-3 { + 9.58% { + transform: rotateZ(0deg) translateX(18px); + } + 18.22%, 59.58% { + transform: rotateZ(-180deg) translateX(18px); + } + 68.22% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes page-4 { + 11.44% { + transform: rotateZ(0deg) translateX(18px); + } + 19.96%, 61.44% { + transform: rotateZ(-180deg) translateX(18px); + } + 69.96% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes page-5 { + 13.3% { + transform: rotateZ(0deg) translateX(18px); + } + 21.7%, 63.3% { + transform: rotateZ(-180deg) translateX(18px); + } + 71.7% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes page-6 { + 15.16% { + transform: rotateZ(0deg) translateX(18px); + } + 23.44%, 65.16% { + transform: rotateZ(-180deg) translateX(18px); + } + 73.44% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes page-7 { + 17.02% { + transform: rotateZ(0deg) translateX(18px); + } + 25.18%, 67.02% { + transform: rotateZ(-180deg) translateX(18px); + } + 75.18% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes page-8 { + 18.88% { + transform: rotateZ(0deg) translateX(18px); + } + 26.92%, 68.88% { + transform: rotateZ(-180deg) translateX(18px); + } + 76.92% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes page-9 { + 20.74% { + transform: rotateZ(0deg) translateX(18px); + } + 28.66%, 70.74% { + transform: rotateZ(-180deg) translateX(18px); + } + 78.66% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes page-10 { + 22.6% { + transform: rotateZ(0deg) translateX(18px); + } + 30.4%, 72.6% { + transform: rotateZ(-180deg) translateX(18px); + } + 80.4% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes page-11 { + 24.46% { + transform: rotateZ(0deg) translateX(18px); + } + 32.14%, 74.46% { + transform: rotateZ(-180deg) translateX(18px); + } + 82.14% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes page-12 { + 26.32% { + transform: rotateZ(0deg) translateX(18px); + } + 33.88%, 76.32% { + transform: rotateZ(-180deg) translateX(18px); + } + 83.88% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes page-13 { + 28.18% { + transform: rotateZ(0deg) translateX(18px); + } + 35.62%, 78.18% { + transform: rotateZ(-180deg) translateX(18px); + } + 85.62% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes page-14 { + 30.04% { + transform: rotateZ(0deg) translateX(18px); + } + 37.36%, 80.04% { + transform: rotateZ(-180deg) translateX(18px); + } + 87.36% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes page-15 { + 31.9% { + transform: rotateZ(0deg) translateX(18px); + } + 39.1%, 81.9% { + transform: rotateZ(-180deg) translateX(18px); + } + 89.1% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes page-16 { + 33.76% { + transform: rotateZ(0deg) translateX(18px); + } + 40.84%, 83.76% { + transform: rotateZ(-180deg) translateX(18px); + } + 90.84% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes page-17 { + 35.62% { + transform: rotateZ(0deg) translateX(18px); + } + 42.58%, 85.62% { + transform: rotateZ(-180deg) translateX(18px); + } + 92.58% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes page-18 { + 37.48% { + transform: rotateZ(0deg) translateX(18px); + } + 44.32%, 87.48% { + transform: rotateZ(-180deg) translateX(18px); + } + 94.32% { + transform: rotateZ(0deg) translateX(18px); + } +} +@keyframes left { + 4% { + transform: rotateZ(-90deg); + } + 10%, 40% { + transform: rotateZ(0deg); + } + 46%, 54% { + transform: rotateZ(-90deg); + } + 60%, 90% { + transform: rotateZ(0deg); + } + 96% { + transform: rotateZ(-90deg); + } +} +@keyframes right { + 4% { + transform: rotateZ(90deg); + } + 10%, 40% { + transform: rotateZ(0deg); + } + 46%, 54% { + transform: rotateZ(90deg); + } + 60%, 90% { + transform: rotateZ(0deg); + } + 96% { + transform: rotateZ(90deg); + } +} +@keyframes book { + 4% { + transform: rotateZ(90deg); + } + 10%, 40% { + transform: rotateZ(0deg); + transform-origin: 2px 2px; + } + 40.01%, 59.99% { + transform-origin: 30px 2px; + } + 46%, 54% { + transform: rotateZ(-90deg); + } + 60%, 90% { + transform: rotateZ(0deg); + transform-origin: 2px 2px; + } + 96% { + transform: rotateZ(90deg); + } +} +/*=================================================================*/ +/* TYPOGRAPHY +/*=================================================================*/ +h1, h2, h3, h4, h5, h6 { + color: #203656; + font-family: "Tajawal", sans-serif; + font-weight: 700; + line-height: 1.4; + margin: 20px 0; +} + +a { + color: #1076BC; + outline: 0; + text-decoration: none; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +a:hover { + color: #203656; +} +a:focus { + outline: 0; +} + +.blockquote { + font-size: 18px; +} + +blockquote { + padding: 20px 20px; + margin: 0 0 20px; + background: #fff8fa; + border-right: solid 3px #1076BC; + border-radius: 5px; +} + +blockquote p { + line-height: 1.6; +} + +.blockquote-footer { + margin-top: 0; +} + +.table { + color: #707a88; +} + +/*=================================================================*/ +/* HEADER +/*=================================================================*/ +.header-default { + padding: 40px 0; + position: relative; + width: 100%; +} +.header-default .navbar-nav { + margin-right: 50px; +} + +.header-default.clone { + position: fixed; + top: 0; + right: 0; + background: #FFF; + border-bottom: solid 1px #EBEBEB; + left: 0; + padding: 25px 0; + -webkit-transform: translateY(-100%); + -moz-transform: translateY(-100%); + -ms-transform: translateY(-100%); + -o-transform: translateY(-100%); + transform: translateY(-100%); + transition: 0.2s transform cubic-bezier(0.3, 0.73, 0.3, 0.74); + z-index: 4; +} + +.header-personal nav.clone, .header-classic .header-bottom.clone { + position: fixed; + top: 0; + right: 0; + background: #FFF; + border-bottom: solid 1px #EBEBEB; + left: 0; + -webkit-transform: translateY(-100%); + -moz-transform: translateY(-100%); + -ms-transform: translateY(-100%); + -o-transform: translateY(-100%); + transform: translateY(-100%); + transition: 0.2s transform cubic-bezier(0.3, 0.73, 0.3, 0.74); + z-index: 4; +} +.header-personal nav.clone .centered-nav, .header-classic .header-bottom.clone .centered-nav { + border-top: 0; +} + +.header-classic .header-top { + padding-top: 35px; + padding-bottom: 35px; + border-bottom: solid 1px #EBEBEB; +} +.header-classic .header-bottom { + padding: 20px 0; +} + +.header-minimal { + padding-top: 40px; + padding-bottom: 40px; + border-bottom: solid 1px #EBEBEB; +} + +body.down .header-default.clone, body.down .header-personal nav.clone, body.down .header-classic .header-bottom.clone { + -webkit-transform: translateY(0); + -moz-transform: translateY(0); + -ms-transform: translateY(0); + -o-transform: translateY(0); + transform: translateY(0); +} + +.header-personal .header-top { + padding-top: 30px; + padding-bottom: 30px; +} +.header-personal .centered-nav { + border-top: solid 1px #EBEBEB; + padding: 20px 0; +} +.header-personal.light { + right: 0; + left: 0; + top: 0; + position: absolute; + z-index: 2; +} +.header-personal.light .centered-nav { + border-top-color: rgba(235, 235, 235, 0.2); +} +.header-personal.light .text-logo { + color: #FFF; +} +.header-personal.light .social-icons li a { + color: #FFF; +} +.header-personal.light .social-icons li a:hover { + color: #1076BC; +} +.header-personal.light .navbar .nav-link { + color: #FFF; +} +.header-personal.light .navbar.clone .nav-link { + color: #79889e; +} +.header-personal.light .navbar.clone .nav-link:hover { + color: #203656; +} +.header-personal.light .navbar.clone li.active .nav-link { + color: #FFF; +} + +.text-logo { + color: #203656; + font-size: 30px; + font-weight: bold; + font-family: "Tajawal", sans-serif; + line-height: 1; + margin: 0px 0 5px; +} +.text-logo .dot { + color: #1076BC; + font-size: 44px; + margin-right: 5px; +} + +.slogan { + font-family: "Tajawal", sans-serif; + color: #9faabb; + font-size: 14px; +} + +.navbar { + padding: 0; +} + +.navbar-nav { + font-family: "Tajawal", sans-serif; + font-size: 14px; +} +.navbar-nav .nav-link { + padding: 0.439rem 1rem; + color: #79889e; +} +.navbar-nav .nav-link:hover { + color: #203656; +} +.navbar-nav li.active .nav-link { + color: #FFF; + border-radius: 25px; + background: #1076BC; + background: -webkit-linear-gradient(right, #1076BC 0%, #4ca9df 100%); + background: linear-gradient(to left, #1076BC 0%, #4ca9df 100%); +} + +.navbar-brand { + padding-top: 0; + padding-bottom: 0; + margin-left: 0; +} + +.dropdown-menu { + position: absolute; + top: 100%; + z-index: 1000; + display: none; + min-width: 10rem; + padding: 0; + margin: 0; + color: #212529; + text-align: right; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 0; + border-radius: 0.25rem; + -webkit-box-shadow: 0 8px 20px rgba(32, 54, 86, 0.2); + -moz-box-shadow: 0 8px 20px rgba(32, 54, 86, 0.2); + box-shadow: 0 8px 20px rgba(32, 54, 86, 0.2); +} +.dropdown-menu:after { + content: ""; + display: block; + height: 0; + width: 0; + position: absolute; + top: -10px; + right: 25%; + border-right: 8px solid transparent; + border-left: 8px solid transparent; + border-bottom: 10px solid #FFF; +} +.dropdown-menu li:after { + content: ""; + background: #EBEBEB; + background: -webkit-linear-gradient(left, #EBEBEB 0%, transparent 100%); + background: linear-gradient(to left, #EBEBEB 0%, transparent 100%); + display: block; + height: 1px; + width: 100%; +} +.dropdown-menu li:last-child:after { + content: ""; + display: none; +} + +.dropdown-item { + display: block; + width: 100%; + padding: 0.6rem 1.5rem; + clear: both; + font-weight: 400; + font-size: 13px; + color: #79889e; + text-align: inherit; + text-decoration: none; + white-space: nowrap; + background-color: transparent; + border: 0; +} +.dropdown-item:hover { + margin-right: 5px; +} + +.dropdown-item:focus, .dropdown-item:hover { + color: #1076BC; + background-color: transparent; +} + +.dropdown-divider { + height: 0; + margin: 0.1rem 0; + overflow: hidden; + border-top: 1px solid #DDD; +} + +.dropdown-toggle::after { + display: inline-block; + margin-right: 5px; + vertical-align: middle; + content: ""; + font-family: "simple-line-icons"; + font-size: 8px; + border-top: transparent; + border-left: transparent; + border-bottom: 0; + border-right: transparent; +} + +.burger-icon:before, .burger-icon:after { + content: ""; + background: #FFF; + display: block; + margin: auto; + height: 1px; + width: 15px; +} +.burger-icon:before { + margin-bottom: 6px; +} +.burger-icon:after { + margin-top: 6px; +} + +.header-right .social-icons { + display: inline-block; +} +.header-right .header-buttons { + display: inline-block; + margin-right: 50px; +} +.header-right .header-buttons button { + margin-right: 10px; +} +.header-right .header-buttons button:first-child { + margin-right: 0; +} + +@media (min-width: 992px) { + .navbar-expand-lg .navbar-nav .nav-link { + padding-left: 1.3rem; + padding-right: 1.3rem; + } +} +.canvas-menu { + background: #FFF; + height: 100vh; + overflow-y: auto; + overflow-x: hidden; + padding: 40px; + position: fixed; + left: 0; + top: 0; + width: 300px; + z-index: 6; + -webkit-box-shadow: 4px 0px 20px rgba(32, 54, 86, 0.1); + -moz-box-shadow: 4px 0px 20px rgba(32, 54, 86, 0.1); + box-shadow: 4px 0px 20px rgba(32, 54, 86, 0.1); + -webkit-transform: translateX(-350px); + -moz-transform: translateX(-350px); + -ms-transform: translateX(-350px); + -o-transform: translateX(-350px); + transform: translateX(-350px); + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + /* === Vertical Menu === */ + /* === Submenu === */ +} +.canvas-menu.open { + -webkit-transform: translateX(0); + -moz-transform: translateX(0); + -ms-transform: translateX(0); + -o-transform: translateX(0); + transform: translateX(0); +} +.canvas-menu.position-left { + right: 0; + left: auto; + -webkit-transform: translateX(350px); + -moz-transform: translateX(350px); + -ms-transform: translateX(350px); + -o-transform: translateX(350px); + transform: translateX(350px); +} +.canvas-menu.position-left.open { + -webkit-transform: translateX(0); + -moz-transform: translateX(0); + -ms-transform: translateX(0); + -o-transform: translateX(0); + transform: translateX(0); +} +.canvas-menu .btn-close { + box-sizing: content-box; + width: 1em; + height: 1em; + position: absolute; + padding: 0.25em 0.25em; + color: #000; + border: 0; + border-radius: 0.25rem; + opacity: 0.4; + left: 30px; + top: 20px; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +.canvas-menu .btn-close:focus { + outline: none; + box-shadow: none; +} +.canvas-menu .btn-close:hover { + opacity: 1; +} +.canvas-menu .logo { + margin-bottom: 50px; + width: 100%; +} +.canvas-menu nav { + width: 100%; +} +.canvas-menu .vertical-menu { + list-style: none; + padding: 0; + margin-bottom: 0; +} +.canvas-menu .vertical-menu li.openmenu > a { + color: #203656; +} +.canvas-menu .vertical-menu li.openmenu .switch { + -webkit-transform: rotate(-180deg); + -moz-transform: rotate(-180deg); + -ms-transform: rotate(-180deg); + -o-transform: rotate(-180deg); + transform: rotate(-180deg); +} +.canvas-menu .vertical-menu li { + padding: 0; + position: relative; + list-style: none; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.canvas-menu .vertical-menu li:after { + content: ""; + display: block; + height: 1px; + margin-bottom: 10px; + margin-top: 10px; + width: 100%; + background: #EBEBEB; + background: -webkit-linear-gradient(right, #EBEBEB 0%, transparent 100%); + background: linear-gradient(to left, #EBEBEB 0%, transparent 100%); +} +.canvas-menu .vertical-menu li.active a { + color: #1076BC; +} +.canvas-menu .vertical-menu li.active .submenu a { + color: #79889e; +} +.canvas-menu .vertical-menu li.active .submenu a:hover { + color: #203656; +} +.canvas-menu .vertical-menu li .switch { + border: solid 1px #EBEBEB; + border-radius: 5px; + font-size: 10px; + display: inline-block; + padding: 10px; + line-height: 1; + cursor: pointer; + color: #1076BC; + position: absolute; + top: 0px; + left: 0; + -webkit-transform: rotate(0deg); + -moz-transform: rotate(0deg); + -ms-transform: rotate(0deg); + -o-transform: rotate(0deg); + transform: rotate(0deg); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + -webkit-backface-visibility: hidden; +} +.canvas-menu .vertical-menu li a { + color: #203656; + font-family: "Tajawal", sans-serif; + font-size: 14px; + font-weight: 400; + text-decoration: none; + position: relative; +} +.canvas-menu .submenu { + display: none; + padding: 10px 20px; +} +.canvas-menu .submenu li { + padding: 5px 0; +} +.canvas-menu .submenu li:after { + content: ""; + display: none; +} +.canvas-menu .submenu li a { + color: #79889e; + font-size: 14px; + font-weight: 400; +} +.canvas-menu .submenu li a:hover { + color: #203656; +} + +/*=================================================================*/ +/* SECTIONS +/*=================================================================*/ +.site-wrapper .main-overlay { + opacity: 0; + visibility: hidden; + filter: blur(2px); + background: #fff; + position: fixed; + height: 100vh; + width: 100%; + z-index: 5; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +.site-wrapper .main-overlay.active { + opacity: 0.6; + visibility: visible; +} + +section { + position: relative; +} + +.main-content { + margin-top: 60px; +} + +.main-content-lg { + margin-top: 140px; + margin-bottom: 140px; +} + +.container-minimal { + max-width: 900px; + margin: auto; + padding-right: 15px; + padding-left: 15px; +} + +.section-header { + margin-bottom: 30px; + position: relative; +} +.section-header img.wave { + margin-top: 10px; +} + +.section-title { + font-size: 24px; + margin: 0; +} + +.hero { + background-size: cover; + background-repeat: no-repeat; + background-attachment: fixed; + height: 1040px; + width: 100%; +} +.hero:after { + content: ""; + background: #203656; + display: block; + right: 0; + opacity: 0.8; + top: 0; + height: 100%; + position: absolute; + width: 100%; +} +.hero .cta { + margin: auto; + max-width: 700px; + padding-top: 120px; + position: relative; + z-index: 1; +} +.hero .cta h2 { + color: #FFF; + font-size: 48px; +} +.hero .cta p { + color: #FFF; + font-size: 18px; + opacity: 0.7; +} +.hero svg { + position: absolute; + bottom: 0px; + right: 0; + width: 100%; + z-index: 1; +} + +/*=================================================================*/ +/* POST +/*=================================================================*/ +.post .category-badge { + color: #FFF; + font-size: 13px; + border-radius: 25px; + display: inline-block; + padding: 6px 11px; + line-height: 1; + right: 20px; + top: 20px; + z-index: 1; + background: #1076BC; + background: -webkit-linear-gradient(right, #1076BC 0%, #4ca9df 51%, #1076BC 100%); + background: linear-gradient(to left, #4ca9df 0%, #1076BC 51%, #4ca9df 100%); + background-size: 200% auto; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +.post .category-badge.lg { + font-size: 14px; + padding: 8px 20px; +} +.post .category-badge:hover { + background-position: left center; +} +.post .post-format { + color: #FFF; + display: block; + border-radius: 50%; + font-size: 20px; + height: 50px; + line-height: 54px; + left: 20px; + text-align: center; + bottom: -25px; + position: absolute; + width: 50px; + -webkit-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15); + box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15); + background: #1076BC; + background: -webkit-linear-gradient(bottom, #1076BC 0%, #4ca9df 100%); + background: linear-gradient(to top, #1076BC 0%, #4ca9df 100%); + z-index: 1; +} +.post .post-format-sm { + color: #FFF; + display: block; + border-radius: 50%; + font-size: 14px; + height: 30px; + line-height: 34px; + right: 20px; + text-align: center; + top: 20px; + position: absolute; + width: 30px; + -webkit-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15); + box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15); + background: #1076BC; + background: -webkit-linear-gradient(bottom, #1076BC 0%, #4ca9df 100%); + background: linear-gradient(to top, #1076BC 0%, #4ca9df 100%); + z-index: 1; +} +.post .thumb { + position: relative; +} +.post .thumb.rounded .inner { + border-radius: 10px; + overflow: hidden; +} +.post .thumb.circle .inner { + overflow: hidden; + border-radius: 50%; +} +.post .thumb.top-rounded .inner { + overflow: hidden; + border-top-right-radius: 10px; + border-top-left-radius: 10px; +} +.post .thumb img { + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +.post .thumb:hover img { + -webkit-transform: scale(1.07); + -moz-transform: scale(1.07); + -ms-transform: scale(1.07); + -o-transform: scale(1.07); + transform: scale(1.07); +} +.post .post-title a { + color: #203656; +} +.post .post-title a:hover { + color: #1076BC; +} +.post .excerpt { + font-size: 16px; +} +.post .meta { + font-size: 14px; + color: #9faabb; +} +.post .meta a { + color: #9faabb; + font-weight: 400; +} +.post .meta a:hover { + color: #1076BC; +} +.post .meta i { + vertical-align: middle; +} +.post .meta li:last-child:after { + content: ""; + display: none; +} +.post .meta li:after { + content: ""; + display: inline-block; + background-color: #1076BC; + border-radius: 50%; + margin-right: 1rem; + height: 3px; + vertical-align: middle; + position: relative; + top: -1px; + width: 3px; +} +.post .meta li:not(:last-child) { + margin-left: 0.8rem; +} +.post .meta li img.author { + margin-left: 12px; + vertical-align: middle; +} +.post .post-bottom .social-share .toggle-button { + font-size: 16px; + color: #9faabb; + background-color: transparent; + border: 0; + padding: 0; + vertical-align: middle; +} +.post .post-bottom .social-share .icons { + display: inline; + vertical-align: middle; +} +.post .post-bottom .social-share .icons li a { + color: #9faabb; + font-size: 14px; +} +.post .post-bottom .social-share .icons li a:hover { + color: #203656; +} +.post .post-bottom .social-share .icons li:not(:last-child) { + margin-left: 0.8rem; +} +.post .post-bottom .more-button a { + font-size: 16px; + font-weight: 700; + color: #9faabb; +} +.post .post-bottom .more-button a i { + color: #9faabb; + font-size: 12px; + margin-right: 10px; + vertical-align: middle; +} +.post .post-bottom .more-button a:hover { + color: #1076BC; +} +.post .post-bottom .more-link { + color: #203656; + font-size: 17px; + font-weight: bold; +} +.post .post-bottom .more-link i { + font-size: 12px; + color: #9faabb; + margin-right: 10px; + vertical-align: middle; + position: relative; + left: 0; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +.post .post-bottom .more-link:hover i { + left: -5px; +} +.post.post-list-sm { + clear: both; +} +.post.post-list-sm.circle .thumb { + max-width: 60px; +} +.post.post-list-sm.circle .details { + margin-right: 80px; +} +.post.post-list-sm.square .thumb { + max-width: 110px; +} +.post.post-list-sm.square .details { + margin-right: 130px; +} +.post.post-list-sm .thumb { + float: right; + position: relative; +} +.post.post-list-sm .thumb .number { + color: #FFF; + display: block; + border: solid 2px #FFF; + border-radius: 50%; + font-size: 12px; + font-family: "Tajawal", sans-serif; + font-weight: 700; + height: 24px; + line-height: 22px; + right: 0; + text-align: center; + top: -10px; + position: absolute; + width: 24px; + -webkit-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15); + box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15); + background: #1076BC; + background: -webkit-linear-gradient(bottom, #1076BC 0%, #4ca9df 100%); + background: linear-gradient(to top, #1076BC 0%, #4ca9df 100%); + z-index: 1; +} +.post.post-list-sm .post-title { + font-size: 15px; +} +.post.post-list-sm:after { + content: ""; + display: block; + height: 1px; + margin-bottom: 20px; + margin-top: 20px; + width: 100%; + background: #EBEBEB; + background: -webkit-linear-gradient(left, #EBEBEB 0%, transparent 100%); + background: linear-gradient(to right, #EBEBEB 0%, transparent 100%); +} +.post.post-list-sm.before-seperator:before { + content: ""; + display: block; + height: 1px; + margin-bottom: 20px; + margin-top: 20px; + width: 100%; + background: #EBEBEB; + background: -webkit-linear-gradient(left, #EBEBEB 0%, transparent 100%); + background: linear-gradient(to right, #EBEBEB 0%, transparent 100%); +} +.post.post-list-sm.before-seperator:after { + content: ""; + display: none; +} +.post.post-list-sm:last-child:after { + content: ""; + display: none; +} +.post.post-list { + margin-bottom: 30px; +} +.post.post-list .thumb { + float: right; + max-width: 265px; +} +.post.post-list .details { + margin-right: 295px; +} +.post.post-list .post-title { + margin: 9px 0; +} +.post.post-list .post-bottom { + margin-top: 9px; +} +.post.post-list .post-bottom .social-share .icons { + opacity: 0; + visibility: hidden; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.post.post-list .post-bottom .social-share .icons:before { + content: ""; + background: #DDD; + display: inline-block; + height: 1px; + margin-right: 10px; + margin-left: 10px; + vertical-align: middle; + width: 30px; +} +.post.post-list .post-bottom .social-share .icons.visible { + opacity: 1; + visibility: visible; +} +.post.post-list:after { + content: ""; + display: block; + height: 1px; + margin-bottom: 30px; + margin-top: 30px; + width: 100%; + background: #EBEBEB; + background: -webkit-linear-gradient(left, #EBEBEB 0%, transparent 100%); + background: linear-gradient(to right, #EBEBEB 0%, transparent 100%); +} +.post.post-grid .thumb .inner { + margin-top: -1px; + margin-right: -1px; + margin-left: -1px; +} +.post.post-grid .details { + padding: 30px; +} +.post.post-grid .post-bottom { + border-top: solid 1px #EBEBEB; + margin: 0 30px; + padding: 20px 0; +} +.post.post-grid .post-bottom .icons { + opacity: 0; + visibility: hidden; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.post.post-grid .post-bottom .icons:before { + content: ""; + background: #DDD; + display: inline-block; + height: 1px; + margin-right: 10px; + margin-left: 10px; + vertical-align: middle; + width: 30px; +} +.post.post-grid .post-bottom .icons.visible { + opacity: 1; + visibility: visible; +} +.post.post-classic { + margin-bottom: 40px; +} +.post.post-classic .thumb .inner { + margin-top: -1px; + margin-right: -1px; + margin-left: -1px; +} +.post.post-classic .details { + padding: 50px 50px 40px; +} +.post.post-classic .details .post-title { + font-size: 30px; +} +.post.post-classic .post-bottom { + border-top: solid 1px #EBEBEB; + margin: 0 50px; + padding: 20px 0; +} +.post.post-classic .post-bottom .social-share .toggle-button { + display: none; +} +.post.post-classic .post-format { + font-size: 24px; + height: 60px; + line-height: 64px; + left: 50px; + bottom: -30px; + width: 60px; +} +.post.post-xl { + margin-bottom: 140px; +} +.post.post-xl:last-of-type { + margin-bottom: 80px; +} +.post.post-xl .thumb .inner { + margin-top: -1px; + margin-right: -1px; + margin-left: -1px; +} +.post.post-xl .post-top { + padding: 0 100px; + margin-bottom: 40px; +} +.post.post-xl .post-top .post-title { + font-size: 36px; +} +.post.post-xl .details { + padding: 50px 100px 50px; +} +.post.post-xl .post-bottom { + border-top: solid 1px #EBEBEB; + margin: 0 100px; + padding-top: 20px; +} +.post.post-xl .post-bottom .social-share .toggle-button { + display: none; +} +.post.post-xl .post-format { + font-size: 24px; + height: 60px; + line-height: 64px; + left: 50px; + bottom: -30px; + width: 60px; +} +.post.post-over-content { + position: relative; +} +.post.post-over-content .thumb { + position: relative; + overflow: hidden; +} +.post.post-over-content .thumb:after { + content: ""; + background: #203656; + display: block; + height: 100%; + right: 0; + opacity: 0.6; + top: 0; + position: absolute; + width: 100%; +} +.post.post-over-content .details { + bottom: 20px; + right: 20px; + left: 20px; + position: absolute; + z-index: 1; +} +.post.post-over-content .post-title { + font-size: 22px; +} +.post.post-over-content .post-title a { + color: #FFF; +} +.post.post-over-content .post-title a:hover { + color: #FFF; +} +.post.post-over-content .meta { + color: rgba(255, 255, 255, 0.5); +} +.post.post-over-content .meta li:after { + content: ""; + background: rgba(255, 255, 255, 0.5); +} +.post.post-over-content .meta li a { + color: rgba(255, 255, 255, 0.5); +} + +.post-single .post-header { + margin-bottom: 30px; +} +.post-single .post-header .title { + font-size: 36px; +} +.post-single .featured-image { + margin-bottom: 30px; +} +.post-single .featured-image img { + border-radius: 10px; +} +.post-single .post-content { + color: #707a88; + font-size: 16px; +} +.post-single .post-bottom { + border-top: solid 1px #EBEBEB; + padding-top: 30px; + margin-top: 30px; +} +.post-single ul li { + list-style-type: circle; +} + +.single-cover { + background-size: cover; + background-attachment: fixed; + background-repeat: no-repeat; + height: 600px; + position: relative; +} +.single-cover:after { + content: ""; + background: #203656; + display: block; + height: 100%; + right: 0; + opacity: 0.6; + top: 0; + position: absolute; + width: 100%; +} +.single-cover .cover-content { + bottom: 60px; + max-width: 720px; + position: absolute; + z-index: 1; +} +.single-cover .cover-content .title { + color: #FFF; + font-size: 36px; +} +.single-cover .cover-content .breadcrumb .breadcrumb-item a { + color: #FFF; +} +.single-cover .cover-content .breadcrumb-item + .breadcrumb-item::before { + color: #FFF; +} +.single-cover .cover-content .meta { + color: rgba(255, 255, 255, 0.6); +} +.single-cover .cover-content .meta a { + color: rgba(255, 255, 255, 0.6); +} +.single-cover .cover-content .meta li:after { + content: ""; + background-color: #FFF; +} + +.featured-post-lg { + position: relative; +} +.featured-post-lg:hover .thumb .inner { + -webkit-transform: scale(1.05); + -moz-transform: scale(1.05); + -ms-transform: scale(1.05); + -o-transform: scale(1.05); + transform: scale(1.05); +} +.featured-post-lg .thumb { + position: relative; + overflow: hidden; + -webkit-box-shadow: 0 8px 20px rgba(32, 54, 86, 0.3); + -moz-box-shadow: 0 8px 20px rgba(32, 54, 86, 0.3); + box-shadow: 0 8px 20px rgba(32, 54, 86, 0.3); +} +.featured-post-lg .thumb:after { + content: ""; + background: #203656; + display: block; + height: 100%; + right: 0; + opacity: 0.6; + top: 0; + position: absolute; + width: 100%; +} +.featured-post-lg .details { + bottom: 50px; + right: 50px; + left: 50px; + position: absolute; + z-index: 1; +} +.featured-post-lg .post-title { + font-size: 32px; +} +.featured-post-lg .post-title a { + color: #FFF; +} +.featured-post-lg .post-title a:hover { + color: #FFF; +} +.featured-post-lg .meta { + color: rgba(255, 255, 255, 0.6); +} +.featured-post-lg .meta li:after { + content: ""; + background: rgba(255, 255, 255, 0.6); +} +.featured-post-lg .meta li a { + color: rgba(255, 255, 255, 0.6); +} +.featured-post-lg .thumb .inner { + background-size: cover; + background-position: center center; + height: 533px; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); +} + +.featured-post-md { + position: relative; +} +.featured-post-md:hover .thumb .inner { + -webkit-transform: scale(1.05); + -moz-transform: scale(1.05); + -ms-transform: scale(1.05); + -o-transform: scale(1.05); + transform: scale(1.05); +} +.featured-post-md .thumb { + position: relative; + overflow: hidden; +} +.featured-post-md .thumb .inner { + background-size: cover; + background-position: center center; + height: 356px; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); +} +.featured-post-md .thumb:after { + content: ""; + background: #203656; + display: block; + height: 100%; + right: 0; + opacity: 0.6; + top: 0; + position: absolute; + width: 100%; +} +.featured-post-md .details { + padding: 0 30px; + position: absolute; + text-align: center; + top: 50%; + width: 100%; + z-index: 1; + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + -ms-transform: translateY(-50%); + -o-transform: translateY(-50%); + transform: translateY(-50%); +} +.featured-post-md .post-title { + font-size: 22px; + margin: 15px 0; +} +.featured-post-md .post-title a { + color: #FFF; +} +.featured-post-md .post-title a:hover { + color: #FFF; +} +.featured-post-md .meta { + color: rgba(255, 255, 255, 0.5); +} +.featured-post-md .meta li:after { + content: ""; + background: rgba(255, 255, 255, 0.5); +} +.featured-post-md .meta li a { + color: rgba(255, 255, 255, 0.5); +} + +.featured-post-xl { + position: relative; +} +.featured-post-xl:hover .thumb .inner { + -webkit-transform: scale(1.05); + -moz-transform: scale(1.05); + -ms-transform: scale(1.05); + -o-transform: scale(1.05); + transform: scale(1.05); +} +.featured-post-xl .thumb { + position: relative; + overflow: hidden; +} +.featured-post-xl .thumb .inner { + background-size: cover; + background-position: center center; + height: 540px; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; + -webkit-transform: scale(1); + -moz-transform: scale(1); + -ms-transform: scale(1); + -o-transform: scale(1); + transform: scale(1); +} +.featured-post-xl .thumb:after { + content: ""; + background: #203656; + display: block; + height: 100%; + right: 0; + opacity: 0.6; + top: 0; + position: absolute; + width: 100%; +} +.featured-post-xl .details { + padding: 0 30px; + position: absolute; + text-align: center; + right: 50%; + top: 50%; + max-width: 650px; + z-index: 1; + -webkit-transform: translate(50%, -50%); + -moz-transform: translate(50%, -50%); + -ms-transform: translate(50%, -50%); + -o-transform: translate(50%, -50%); + transform: translate(50%, -50%); +} +.featured-post-xl .post-title { + font-size: 36px; + margin: 20px 0; +} +.featured-post-xl .post-title a { + color: #FFF; +} +.featured-post-xl .post-title a:hover { + color: #FFF; +} +.featured-post-xl .meta { + color: rgba(255, 255, 255, 0.5); +} +.featured-post-xl .meta li:after { + content: ""; + background: rgba(255, 255, 255, 0.5); +} +.featured-post-xl .meta li a { + color: rgba(255, 255, 255, 0.5); +} + +.post-carousel-lg { + -webkit-box-shadow: 0 8px 20px rgba(32, 54, 86, 0.3); + -moz-box-shadow: 0 8px 20px rgba(32, 54, 86, 0.3); + box-shadow: 0 8px 20px rgba(32, 54, 86, 0.3); + overflow: hidden; + border-radius: 10px; +} +.post-carousel-lg .slick-dots { + position: absolute; + bottom: 30px; + margin: 0; +} +.post-carousel-lg .slick-prev { + right: 30px; +} +.post-carousel-lg .slick-next { + left: 30px; +} +.post-carousel-lg .slick-next, .post-carousel-lg .slick-prev { + width: 50px; + height: 50px; + line-height: 65px; + background: rgba(255, 255, 255, 0.3); + border: 0; +} +.post-carousel-lg .slick-prev:before, .post-carousel-lg .slick-next:before { + color: #FFF; + font-size: 16px; + position: initial; +} +.post-carousel-lg .slick-next:hover, .post-carousel-lg .slick-prev:hover { + background: #fff; +} + +.post-carousel-featured { + padding: 0 15px; +} + +.post-carousel .slick-slide { + margin: 0 12px; +} + +.post-carousel-widget .post-carousel .thumb { + max-width: 300px; +} + +.post-tabs { + padding: 30px; +} +.post-tabs .tab-content { + margin-top: 30px; +} + +/*=================================================================*/ +/* ABOUT AUTHOR +/*=================================================================*/ +.about-author { + background: #F1F8FF; +} +.about-author:last-child { + margin-bottom: 0; +} +.about-author.child { + margin-right: 60px; +} +.about-author .thumb { + float: right; + height: 100px; + width: 100px; + border-radius: 50%; + overflow: hidden; +} +.about-author .details { + margin-right: 130px; +} +.about-author .details h4.name { + font-size: 20px; + margin: 0 0 10px; +} +.about-author .details h4.name a { + color: #203656; +} +.about-author .details h4.name a:hover { + color: #1076BC; +} +.about-author .details p { + margin-bottom: 10px; +} +.about-author .author-link { + font-size: 16px; + font-weight: 700; +} +.about-author .author-link i { + font-size: 12px; + vertical-align: middle; + margin-right: 10px; +} + +/*=================================================================*/ +/* POST COMMENTS +/*=================================================================*/ +.comments { + padding: 0; + margin: 0; +} +.comments li { + list-style: none; +} +.comments li:after { + content: ""; + display: block; + height: 1px; + margin-top: 30px; + width: 100%; + background: #EBEBEB; + background: -webkit-linear-gradient(left, #EBEBEB 0%, transparent 100%); + background: linear-gradient(to right, #EBEBEB 0%, transparent 100%); +} +.comments li.comment { + margin-bottom: 30px; +} +.comments li.comment:last-child { + margin-bottom: 0; +} +.comments li.comment:last-child:after { + content: ""; + display: none; +} +.comments li.comment.child { + margin-right: 60px; +} +.comments li.comment .thumb { + float: right; +} +.comments li.comment .details { + margin-right: 90px; +} +.comments li.comment .details h4.name { + font-size: 18px; + margin: 0; +} +.comments li.comment .details h4.name a { + color: #203656; +} +.comments li.comment .details h4.name a:hover { + color: #1076BC; +} +.comments li.comment .details .date { + color: #9faabb; + font-size: 13px; + display: block; + margin-bottom: 10px; +} + +/*=================================================================*/ +/* PAGE +/*=================================================================*/ +.page-header { + background: #F1F8FF; + padding: 40px 0; +} +.page-header h1 { + font-size: 30px; +} + +.page-content { + color: #707a88; + font-size: 16px; +} + +/*=================================================================*/ +/* CONTACT +/*=================================================================*/ +.contact-item { + border-radius: 10px; + padding: 25px; +} +.contact-item .icon { + color: #FFF; + float: right; + border-radius: 10px; + display: block; + font-size: 25px; + line-height: 50px; + height: 50px; + text-align: center; + width: 50px; + background: #1076BC; + background: -webkit-linear-gradient(right, #1076BC 0%, #4ca9df 100%); + background: linear-gradient(to left, #1076BC 0%, #4ca9df 100%); +} +.contact-item .details { + margin-right: 20px; +} +.contact-item h3 { + font-size: 18px; +} + +/*=================================================================*/ +/* WIDGETS +/*=================================================================*/ +.widget { + border: solid 1px #EBEBEB; + padding: 35px 30px; + margin-bottom: 40px; +} +.widget:last-child { + margin-bottom: 0; +} +.widget.no-container { + padding: 0; + border: 0; +} +.widget .widget-header { + margin-bottom: 30px; +} +.widget .widget-header img.wave { + margin-top: 10px; +} +.widget .widget-title { + font-size: 20px; + margin: 0; +} +.widget .widget-about { + background-size: cover; + background-position: center center; + background-repeat: no-repeat; +} +.widget .widget-ads { + display: block; + text-align: center; +} +.widget ul.list { + list-style: none; + padding: 0; + margin-bottom: 0; +} +.widget ul.list li { + line-height: 2.8rem; +} +.widget ul.list li a { + color: #203656; + font-weight: 700; +} +.widget ul.list li a:before { + content:'\e605'; + color: #1076BC; + font-family: "simple-line-icons"; + font-size: 11px; + vertical-align: middle; + margin-left: 25px; +} +.widget ul.list li a:hover { + color: #1076BC; +} +.widget ul.list li:after { + content: ""; + display: block; + height: 1px; + width: 100%; + background: #EBEBEB; + background: -webkit-linear-gradient(right, #EBEBEB 0%, transparent 100%); + background: linear-gradient(to left, #EBEBEB 0%, transparent 100%); +} +.widget ul.list li span { + float: left; +} +.widget ul.list.social-icons li a:before { + content: ""; + margin-left: 0; +} + +/*=================================================================*/ +/* INSTAGRAM FEED +/*=================================================================*/ +.instagram { + margin: 60px 0 0; + position: relative; +} + +.instagram-feed { + margin-right: -2.5px; + margin-left: -2.5px; +} +.instagram-feed .insta-item { + overflow: hidden; + padding-right: 2.5px; + padding-left: 2.5px; +} +.instagram-feed .insta-item img { + border-radius: 10px; +} + +/*=================================================================*/ +/* FOOTER +/*=================================================================*/ +footer { + margin-top: 50px; +} +footer .footer-inner { + border-top: solid 1px #EBEBEB; + padding: 40px 0; +} +footer .footer-inner .copyright { + color: #9faabb; +} + +/*=================================================================*/ +/* SEARCH POPUP +/*=================================================================*/ +.search-popup { + background: white; + position: fixed; + right: 0; + top: 0; + height: 100vh; + width: 100%; + z-index: 6; + opacity: 0; + visibility: hidden; +} +.search-popup.visible { + opacity: 1; + visibility: visible; + animation: growOut 500ms ease-in-out forwards; +} +.search-popup .search-content { + position: absolute; + top: 40%; + right: 50%; + width: 650px; + -webkit-transform: translate(50%, -50%); + -moz-transform: translate(50%, -50%); + -ms-transform: translate(50%, -50%); + -o-transform: translate(50%, -50%); + transform: translate(50%, -50%); +} +.search-popup .btn-close { + left: 30px; + top: 30px; + position: absolute; +} + +/*=================================================================*/ +/* HELPER +/*=================================================================*/ +.rounded { + border-radius: 10px !important; +} + +.bordered { + border: solid 1px #EBEBEB; +} + +.padding-30 { + padding: 30px; +} + +.alignleft { + float: right; + margin: 0.375em 0 1em 1.75em; +} + +.alignright { + float: left; + margin: 0.375em 1.75em 1em 0; +} + +.newsletter-headline { + font-size: 15px; + font-weight: bold; + color: #203656; + display: block; +} + +.newsletter-privacy { + font-size: 13px; + display: block; +} + +.ads-title { + color: #C0C0C0; + font-family: "Tajawal", sans-serif; + font-size: 12px; + display: block; + margin-bottom: 10px; + text-align: center; + text-transform: uppercase; +} + +::selection { + color: #FFF; + background: #1076BC; + /* WebKit/Blink Browsers */ +} + +::-moz-selection { + color: #FFF; + background: #1076BC; + /* Gecko Browsers */ +} + +.tag { + color: #8F9BAD; + border: solid 1px #EBEBEB; + border-radius: 25px; + font-size: 13px; + display: inline-block; + padding: 3px 14px; + margin: 4px 0; +} +.tag:hover { + border-color: #1076BC; + color: #1076BC; +} + +.mouse { + border: solid 1px #FFF; + border-radius: 16px; + display: block; + height: 26px; + width: 20px; + right: 50%; + bottom: 100px; + position: absolute; + z-index: 1; + -webkit-transform: translateX(50%); + -moz-transform: translateX(50%); + -ms-transform: translateX(50%); + -o-transform: translateX(50%); + transform: translateX(50%); +} + +.mouse .wheel { + background: #FFF; + border-radius: 100%; + display: block; + position: absolute; + top: 8px; + right: 50%; + -webkit-transform: translateX(50%); + -moz-transform: translateX(50%); + -ms-transform: translateX(50%); + -o-transform: translateX(50%); + transform: translateX(50%); + height: 3px; + width: 3px; + -webkit-animation: animation-mouse 2s linear infinite; + animation: animation-mouse 2s linear infinite; +} + +@-webkit-keyframes animation-mouse { + 0% { + top: 29%; + } + 15% { + top: 50%; + } + 50% { + top: 50%; + } + 100% { + top: 29%; + } +} +@keyframes animation-mouse { + 0% { + top: 29%; + } + 15% { + top: 50%; + } + 50% { + top: 50%; + } + 100% { + top: 29%; + } +} +/*=================================================================*/ +/* BUTTONS +/*=================================================================*/ +button { + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +button:focus { + outline: none; + box-shadow: none !important; +} + +.btn { + color: #FFF; + border: 0; + border-radius: 25px; + font-family: "Tajawal", sans-serif; + font-size: 14px; + font-weight: 400; + overflow: hidden; + position: relative; + display: inline-block; + vertical-align: middle; + white-space: nowrap; + text-align: center; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} + +.btn:focus { + outline: 0; + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; +} + +.btn-default { + color: #FFF; + padding: 9.5px 20px; + background: #1076BC; + background: -webkit-linear-gradient(to left, #1076BC 0%, #4ca9df 51%, #1076BC 100%); + background: linear-gradient(to left, #4ca9df 0%, #1076BC 51%, #4ca9df 100%); + background-size: 200% auto; +} + +.btn-default:hover { + color: #FFF; + background-position: left center; +} + +.btn-default-secondary{ + color: #FFF; + padding: 9.5px 20px; + background: linear-gradient(to left, #FAE0C5 0%, #F1A352 51%, #FAE0C5 100%); + background: -webkit-linear-gradient(to left, #FAE0C5 0%, #F1A352 51%, #FAE0C5 100%); + background-size: 200% auto; +} + +.btn-default-secondary:hover { + color: #FFF; + background-position: left center; +} + +.btn-simple { + color: #8F9BAD; + padding: 9.5px 36px; + background: transparent; + border: solid 1px #EBEBEB; +} +.btn-simple:hover { + color: #1076BC; + border-color: #1076BC; +} + +.btn-light { + color: #FFF; + padding: 9.5px 36px; + background: transparent; + border: solid 1px #FFF; +} +.btn-light:hover { + color: #1076BC; + border-color: #FFF; +} + +.btn-full { + padding: 9.5px 36px; + width: 100%; +} + +.btn-lg { + padding: 13px 40px; + font-size: 16px; +} + +.btn-sm { + padding: 7px 20px; + font-size: 12px; +} + +.btn-xs { + padding: 5px 10px; + font-size: 11px; +} + +.icon-button { + color: #FFF; + border: 0; + border-radius: 50%; + background: #4ca9df; + background: -webkit-linear-gradient(bottom, #4ca9df 0%, #1076BC 51%, #4ca9df 100%); + background: linear-gradient(to top, #4ca9df 0%, #1076BC 51%, #4ca9df 100%); + background-size: auto 200%; + display: inline-flex; + justify-content: center; + align-items: center; + height: 37px; + line-height: 39px; + text-align: center; + vertical-align: middle; + width: 37px; + -webkit-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15); + box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} +.icon-button:hover { + background-position: bottom center; +} + +.btn-instagram { + position: absolute; + top: 50%; + right: 50%; + -webkit-transform: translate(50%, -50%); + -moz-transform: translate(50%, -50%); + -ms-transform: translate(50%, -50%); + -o-transform: translate(50%, -50%); + transform: translate(50%, -50%); + z-index: 1; +} + +/*=================================================================*/ +/* BOOTSTRAP ELEMENTS +/*=================================================================*/ +.breadcrumb { + font-size: 14px; + padding: 0; + margin-bottom: 20px; + list-style: none; + background-color: transparent; + border-radius: 0; +} +.breadcrumb .breadcrumb-item a { + color: #9faabb; +} +.breadcrumb .breadcrumb-item a:hover { + color: #1076BC; +} +.breadcrumb .breadcrumb-item.active { + color: #9faabb; +} + +/* === Form Control === */ +.form-control { + display: block; + border-radius: 25px; + width: 100%; + padding: 8px 24px; + font-size: 14px; + line-height: 1.6; + color: #8F9BAD; + background-color: #FFF; + background-image: none; + border: solid 1px #EBEBEB; + -webkit-box-shadow: none; + box-shadow: none; +} + +.form-control:focus { + border-color: #1076BC; + outline: 0; + -webkit-box-shadow: none; + box-shadow: none; +} + +.form-group { + margin-bottom: 30px; +} + +.input-group-addon { + padding: 0; + font-size: 14px; + font-weight: 400; + line-height: 1; + color: #555; + text-align: center; + background-color: transparent; + border: 0; + border-radius: 0; +} + +.form-control::-webkit-input-placeholder { + /* Chrome/Opera/Safari */ + color: #9faabb; +} + +.form-control::-moz-placeholder { + /* Firefox 19+ */ + color: #9faabb; +} + +.form-control:-ms-input-placeholder { + /* IE 10+ */ + color: #9faabb; +} + +.form-control:-moz-placeholder { + /* Firefox 18- */ + color: #9faabb; +} + +/* === Alert === */ +.alert { + padding: 15px; + margin-bottom: 20px; + border: 1px solid transparent; + border-radius: 0; +} + +.alert-dismissable .close, .alert-dismissible .close { + position: relative; + top: 0; + left: 0; + color: inherit; +} + +/* === Nav Tabs === */ +.nav-tabs { + border-bottom: 0; +} + +.tab-content { + position: relative; +} + +.tab-pane { + opacity: 1; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +.tab-pane.loading { + opacity: 0.3; +} + +.lds-dual-ring { + display: inline-block; + position: absolute; + width: 40px; + height: 40px; + top: 50%; + right: 50%; + visibility: hidden; + opacity: 0; + transform: translate(50%, -50%); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + z-index: 1; +} +.lds-dual-ring.loading { + visibility: visible; + opacity: 1; +} + +.lds-dual-ring:after { + content: " "; + display: block; + width: 40px; + height: 40px; + margin: 8px; + border-radius: 50%; + border: 3px solid; + border-color: #1076BC transparent #1076BC transparent; + animation: lds-dual-ring 1.2s linear infinite; +} + +@keyframes lds-dual-ring { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(-360deg); + } +} +.nav-fill .nav-item, .nav-fill > .nav-link { + margin-left: 10px; +} +.nav-fill .nav-item:last-child, .nav-fill > .nav-link:last-child { + margin-left: 0; +} + +.nav-fill .nav-item > .nav-link { + color: #8F9BAD !important; + margin-left: 10px; +} + +.nav-pills .nav-link.active, .nav-pills .show > .nav-link { + color: #fff !important; + background: #1076BC; + background: -webkit-linear-gradient(right, #1076BC 0%, #4ca9df 51%, #1076BC 100%); + background: linear-gradient(to left, #4ca9df 0%, #1076BC 51%, #4ca9df 100%); + border-color: transparent; + background-size: 200% auto; +} + +.nav-pills .nav-link { + background: 100% 0; + border: solid 1px #EBEBEB; + border-radius: 30px; +} + +/* === Pagination === */ +.pagination { + display: flex; + padding-right: 0; + list-style: none; + margin: 40px 0 0; +} +.pagination li { + list-style-type: none; + margin: 0 5px; +} + +.page-item.active .page-link { + z-index: 3; + color: #FFF; + border-color: transparent; + background: #4ca9df; + background: -webkit-linear-gradient(bottom, #4ca9df 0%, #1076BC 51%, #4ca9df 100%); + background: linear-gradient(to top, #4ca9df 0%, #1076BC 51%, #4ca9df 100%); + background-size: auto 200%; + -webkit-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15); + -moz-box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15); + box-shadow: 0px 2px 4px 0px rgba(0, 0, 0, 0.15); + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; +} + +.page-link { + position: relative; + display: block; + color: #8F9BAD; + border-radius: 50%; + font-size: 14px; + text-decoration: none; + border: solid 1px #EBEBEB; + height: 45px; + line-height: 45px; + text-align: center; + padding: 0; + width: 45px; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} + +.page-link:hover { + z-index: 2; + color: #FFF; + background: #4ca9df; + background: -webkit-linear-gradient(bottom, #4ca9df 0%, #1076BC 51%, #4ca9df 100%); + background: linear-gradient(to top, #4ca9df 0%, #1076BC 51%, #4ca9df 100%); + background-size: auto 200%; + border-color: transparent; +} + +.page-item:first-child .page-link { + border-top-right-radius: 50%; + border-bottom-right-radius: 50%; +} + +.page-item:last-child .page-link { + border-top-left-radius: 50%; + border-bottom-left-radius: 50%; +} + +/*=================================================================*/ +/* THEME ELEMENTS +/*=================================================================*/ +/* === Go to Top === */ +#return-to-top { + color: #8F9BAD; + font-size: 13px; + border: solid 1px #EBEBEB; + text-decoration: none; + -webkit-border-radius: 25px; + -moz-border-radius: 25px; + border-radius: 25px; + padding: 6px 20px; + z-index: 4; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +#return-to-top i { + font-size: 11px; + vertical-align: middle; + margin-left: 10px; +} + +#return-to-top:hover { + color: #1076BC; + border-color: #1076BC; +} + +.videoWrapper { + position: relative; + padding-bottom: 56.25%; + /* 16:9 */ + padding-top: 0; + height: 0; +} + +.videoWrapper iframe { + position: absolute; + top: 0; + right: 0; + width: 100%; + height: 100%; +} + +.social-icons a { + font-size: 16px; + color: #203656; +} +.social-icons a:hover { + color: #1076BC; +} +.social-icons li:not(:last-child) { + margin-left: 1rem; +} + +/*=================================================================*/ +/* SLICK SETTINGS +/*=================================================================*/ +.slick-slide { + height: auto; + outline: none; +} + +.slick-next, .slick-prev { + width: 30px; + height: 30px; + line-height: 30px; + text-align: center; + background: transparent; + border-radius: 50%; + border: solid 1px #EBEBEB; + top: 50%; + -webkit-transform: translateY(-50%); + -moz-transform: translateY(-50%); + -ms-transform: translateY(-50%); + -o-transform: translateY(-50%); + transform: translateY(-50%); + z-index: 1; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} + +.slick-next:hover, .slick-next:focus, .slick-prev:hover, .slick-prev:focus { + background: #FFF; + border-color: #EBEBEB; +} +.slick-next:hover:before, .slick-next:focus:before, .slick-prev:hover:before, .slick-prev:focus:before { + color: #4ca9df; +} + +.slick-prev { + right: -30px; +} +.slick-prev:hover { + background: #1076BC; +} + +.slick-next { + left: -30px; +} +.slick-next:hover { + background: #1076BC; +} + +.slick-prev:before, .slick-next:before { + color: #909090; + font-size: 10px; + opacity: 1; +} + +.slick-prev:before { + content: ""; + font-family: "simple-line-icons"; + top: 9px; + right: 9px; + position: absolute; +} + +.slick-next:before { + content: ""; + font-family: "simple-line-icons"; + position: absolute; + top: 9px; + right: 9px; +} + +.slick-dotted.slick-slider { + margin-bottom: 0; +} + +.slick-dots { + position: relative; + bottom: 0; + padding: 0; + margin: 25px 0 0; +} + +.slick-dots li { + width: 8px; + height: 8px; + margin: 0 5px; +} + +.slick-dots li.slick-active { + width: 25px; + height: 8px; +} + +.slick-dots li button { + width: 20px; + height: 20px; + padding: 0; +} + +.slick-dots li.slick-active button:before { + background: #1076BC; + background: -webkit-linear-gradient(right, #1076BC 0%, #4ca9df 100%); + background: linear-gradient(to left, #1076BC 0%, #4ca9df 100%); + border-radius: 5px; + opacity: 1; + width: 25px; +} + +.slick-dots li button:before { + content: ""; + background: #d4d4d4; + border-radius: 50%; + opacity: 1; + top: 8px; + right: 8px; + height: 8px; + width: 8px; +} + +.slick-arrows-top { + position: absolute; + top: 50%; + left: 0; + -webkit-transform: translate(0px, -50%); + -moz-transform: translate(0px, -50%); + -ms-transform: translate(0px, -50%); + -o-transform: translate(0px, -50%); + transform: translate(0px, -50%); +} + +.slick-arrows-bot { + position: relative; + text-align: center; + margin-top: 20px; +} + +.slick-custom-buttons { + color: #909090; + font-size: 10px; + width: 30px; + height: 30px; + line-height: 30px; + text-align: center; + background: #FFF; + border-radius: 50%; + border: solid 1px #EBEBEB; + padding: 0; + -webkit-transition: all 0.3s ease-in-out; + -moz-transition: all 0.3s ease-in-out; + transition: all 0.3s ease-in-out; +} +.slick-custom-buttons:hover { + color: #1076BC; + border-color: #1076BC; +} + +/*=================================================================*/ +/* RESPONSIVE SETTINGS +/*=================================================================*/ +@media (min-width: 1200px) { + .container, .container-lg, .container-md, .container-sm, .container-xl { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .container, .container-lg, .container-md, .container-sm, .container-xl, .container-xxl { + max-width: 1140px; + } +} +@media only screen and (max-width: 1200px) { + .header-right .social-icons { + display: none; + } +} +@media only screen and (max-width: 992px) { + .inner-wrapper-sticky { + transform: none !important; + position: relative !important; + top: 0 !important; + right: 0 !important; + width: auto !important; + } + + .header-classic .header-buttons { + width: 100%; + } + + .single-cover { + background-attachment: unset; + height: 400px; + } + .single-cover .cover-content .title { + font-size: 26px; + } +} +@media only screen and (min-width: 992px) { + .navbar .nav-item .dropdown-menu { + display: none; + animation: growOut 300ms ease-in-out forwards; + transform-origin: top center; + } + + @keyframes growOut { + 0% { + transform: scale(0); + } + 80% { + transform: scale(1.1); + } + 100% { + transform: scale(1); + } + } + .navbar .nav-item:hover .dropdown-menu { + display: block; + } + + .navbar .nav-item .dropdown-menu { + margin-top: 0; + } +} +@media only screen and (max-width: 767px) { + .featured-post-lg .thumb .inner { + height: 425px; + } + + .post.post-list .thumb { + float: none; + max-width: 550px; + } + + .post.post-list .details { + margin-right: 0; + margin-top: 25px; + } + + .post .meta li:after { + content: ""; + margin-right: 0.5rem; + } + + .post .meta li:not(:last-child) { + margin-left: 0.3rem; + } + + .instagram-feed .insta-item { + text-align: center; + margin: 2.5px 0; + } + + .footer-inner { + text-align: center; + } + + .featured-post-lg .post-title { + font-size: 26px; + } + + .featured-post-lg .details { + bottom: 30px; + right: 30px; + left: 30px; + } + + .search-popup .search-content { + padding: 0 20px; + width: 100%; + } + + .post.post-classic .post-bottom .social-share .toggle-button { + display: inline-block; + } + .post.post-classic .post-bottom .icons { + opacity: 0; + visibility: hidden; + -webkit-transition: all 0.2s ease-in-out; + -moz-transition: all 0.2s ease-in-out; + transition: all 0.2s ease-in-out; + } + .post.post-classic .post-bottom .icons:before { + content: ""; + background: #DDD; + display: inline-block; + height: 1px; + margin-right: 10px; + margin-left: 10px; + vertical-align: middle; + width: 30px; + } + .post.post-classic .post-bottom .icons.visible { + opacity: 1; + visibility: visible; + } + + .featured-post-xl .thumb .inner { + height: 350px; + } + + .featured-post-xl .details { + padding: 0 30px; + right: 0; + top: 50%; + max-width: 100%; + -webkit-transform: translate(0%, -50%); + -moz-transform: translate(0%, -50%); + -ms-transform: translate(0%, -50%); + -o-transform: translate(0%, -50%); + transform: translate(0%, -50%); + } + + .featured-post-xl .post-title { + font-size: 24px; + } + + .post.post-classic .details { + padding: 30px; + } + + .post.post-classic .details .post-title { + font-size: 20px; + } + + .post.post-classic .post-bottom { + margin: 0 30px; + } + + .post.post-classic .post-format, .post.post-xl .post-format { + font-size: 20px; + height: 50px; + line-height: 54px; + left: 20px; + bottom: -25px; + width: 50px; + } + + .post.post-xl .post-top { + padding: 0 20px; + } + + .post.post-xl .details { + padding: 50px 20px 50px; + } + + .post.post-xl .post-bottom { + margin: 0 20px; + } + + .post.post-xl .post-top .post-title { + font-size: 24px; + } + + .hero { + height: 740px; + } + + .hero .cta h2 { + font-size: 30px; + } + + .hero .cta p { + font-size: 16px; + } + + .alignleft, .alignright { + float: none; + } + + .post-single .post-header .title { + font-size: 26px; + } + + .post-single .social-icons { + margin-top: 20px; + text-align: center; + } + + .about-author .thumb { + float: none; + margin: auto; + } + + .about-author .details { + margin-right: 0; + margin-top: 20px; + text-align: center; + } + + .comments li.comment.child { + margin-right: 30px; + } + + .breadcrumb .breadcrumb-item.active { + display: none; + } + + .post-carousel-widget .post-carousel { + margin: 0 12px; + } + .post-carousel-widget .post-carousel .post-title { + font-size: 16px; + } +} +@media only screen and (max-width: 576px) { + .single-cover { + height: 300px; + } + + .alignleft { + margin: 0.375em auto 1em; + clear: both; + display: block; + } + + .alignright { + margin: 0.375em auto 1em; + clear: both; + display: block; + } +} diff --git a/public/front/css/style.css.map b/public/front/css/style.css.map new file mode 100644 index 00000000..4c3ca204 --- /dev/null +++ b/public/front/css/style.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["style.scss","sass/base.scss","sass/mixins.scss","sass/header.scss","sass/main.scss","sass/helper.scss","sass/buttons.scss","sass/elements.scss","sass/slick.scss","sass/responsive.scss"],"names":[],"mappings":"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SqB;EACnB;EACA;;AACH;EACC;;;AAKD;EACC;EACA;EACA;;AAED;EACC;;;AAIF;EACC;EACA;EACA;;;AAGD;EDtCE,mBCuCkB;EDtClB,gBCsCkB;EDrClB,eCqCkB;EDpClB,cCoCkB;EDnClB,WCmCkB;;;AAInB;EACC;EACA;;AAED;EACC;EACA;;AAED;EACC;EACA;EACA;EACA;EACA;;AACA;EACC;;AAED;EACC;;AAIC;EACC;;AACA;EACC,ODnFM;;ACyFT;EACC;;AAGA;EACC,OD1FO;;AC2FP;EACC,ODlGM;;ACsGP;EACC;;;AAQN;EACC,ODhHW;ECiHX;EACG;EACA;EACA;EACA;;AACH;EACC,ODrHU;ECsHV;EACA;;;AAIF;EACC,aDhIU;ECiIV,OD3HW;EC4HX;;;AAGD;EACC;;;AAGD;EACC,aD1IU;EC2IV;;AACA;EACC;EACA,ODtIU;;ACuIV;EACC,OD9IS;;ACkJV;EACC;EACA;ED9CD;EACA;EACA;;;ACkDF;EACI;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EDrJF,oBCsJe;EDrJf,iBCqJe;EDpJf,YCoJe;;AAChB;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EACC;EACA;EACA;EACA;EACA;EACA;EACA;;AAGA;EACC;EACA;;;AAMJ;EACI;EACA;EACA;EACA;EACA;EACH;EACG,ODhNQ;ECiNR;EACA;EACA;EACA;EACA;;AACH;EACC;;;AAIF;EACI,ODhOQ;ECiOR;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACH;EACA;EACG;EACA;EACA;EACA;;;AAIH;EACC;EACA;EACA;EACA;EACA;EACA;;AAED;EACC;;AAED;EACC;;;AAKD;EACC;;AAED;EACC;EACA;;AACA;EACC;;AACA;EACC;;;AAMJ;EACC;IACI;IACA;;;AAIL;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EDnRC,oBCoRe;EDnRf,iBCmRe;EDlRf,YCkRe;ED5Rf,mBC6RkB;ED5RlB,gBC4RkB;ED3RlB,eC2RkB;ED1RlB,cC0RkB;EDzRlB,WCyRkB;EDnSlB;EACE;EACI;AC2UP;AAmEA;;AA3GA;ED/RC,mBCgSmB;ED/RnB,gBC+RmB;ED9RnB,eC8RmB;ED7RnB,cC6RmB;ED5RnB,WC4RmB;;AAEpB;EACC;EACA;EDpSA,mBCqSmB;EDpSnB,gBCoSmB;EDnSnB,eCmSmB;EDlSnB,cCkSmB;EDjSnB,WCiSmB;;AACnB;EDtSA,mBCuSoB;EDtSpB,gBCsSoB;EDrSpB,eCqSoB;EDpSpB,cCoSoB;EDnSpB,WCmSoB;;AAGrB;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ED3TA;EACE;EACI;;AC2TN;EACC;EACA;;AAED;EACC;;AAGF;EACC;EACA;EACA;;AAED;EACC;;AAGD;EACC;EACA;EACA;;AAED;EACC,OD/VU;;ACiWX;EDhVC,mBCiVmB;EDhVnB,gBCgVmB;ED/UnB,eC+UmB;ED9UnB,cC8UmB;ED7UnB,WC6UmB;;AAEpB;EACC;EACA;EACA;ED5VA;EACE;EACI;;AC4VN;EACC;EACA;EACA;EACA;EACA;EACA;EDzQD;EACA;EACA;;AC2QC;EACC,ODlXQ;;ACqXR;EACC,ODlXO;;ACmXP;EACC,OD1XM;;ACgYX;EACC;EACA;EACA;EACA;EACA;EACA;EACA;EACA,ODtYU;ECuYV;EACA;EACA;ED1XA,mBC2XmB;ED1XnB,gBC0XmB;EDzXnB,eCyXmB;EDxXnB,cCwXmB;EDvXnB,WCuXmB;EDjYnB;EACE;EACI;ECiYN;;AAED;EACC,ODjZU;ECkZV,aDpZS;ECqZT;EACA;EACA;EACA;;AAOD;EACC;EACA;;AAED;EACC;;AACA;EACC;EACA;;AAGF;EACC,ODnaU;ECoaV;EACG;;AAEJ;EACC,OD9aU;;;AEFZ;AACA;AAAA;AAGI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EFCN;EACE;EACI;;AEDA;EACI;EACA;;;AAKZ;EACI;;;AAGJ;EACI;;;AAGJ;EACI;EACA;;;AAGJ;EACI;EACA;EACA;EACA;;;AAGJ;EACI;EACA;;AACA;EACI;;;AAGR;EACI;EACA;;;AAGJ;EACI;EACA;EACA;EACA;EACA;;AACA;EACI;EACA,YFpDO;EEqDP;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EACA;;AACA;EACI;EACA;;AAEJ;EACI;EACA;EACA;;AAGR;EACI;EACA;EACA;EACA;EACA;;;AAIR;AACA;AAAA;AAGI;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EFJN;EACA;EACA;EEIM;EFjGN;EACE;EACI;;AEiGA;EACI;EACA;;AAEJ;EACI;;AAGR;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EF9BN;EACA;EACA;EE8BM;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EFhDN;EACA;EACA;EEgDM;;AAEJ;EACI;;AAEI;EACI;EACA;;AAIJ;EACI;EACA;;AAIJ;EACI;EACA;EACA;;AAGR;EF9JN,mBE+J6B;EF9J7B,gBE8J6B;EF7J7B,eE6J6B;EF5J7B,cE4J6B;EF3J7B,WE2J6B;EFrK7B;EACE;EACI;;AEuKI;EFnKV,mBEoKiC;EFnKjC,gBEmKiC;EFlKjC,eEkKiC;EFjKjC,cEiKiC;EFhKjC,WEgKiC;;AAK3B;EACI,OF3LA;;AE4LA;EACI,OF3LJ;;AE+LR;EACI;;AAEJ;EACI;EACA,OFlMI;;AEmMJ;EACI,OFpMA;EEqMA;;AACA;EACI,OFzMJ;;AE4MJ;EACI;;AAII;EACI;EACA;;AAGR;EACI;EACA;EACA,kBFzNJ;EE0NI;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;;AAEJ;EACI;EACA;;AAMJ;EACI;EACA,OF7OJ;EE8OI;EACA;EACA;EACA;;AAEJ;EACI;EACA;;AAEI;EACI,OFxPZ;EEyPY;;AACA;EACI,OF/PhB;;AEkQQ;EACI;;AAOZ;EACI;EACA;EACA,OFzQJ;;AE0QI;EACI,OF3QR;EE4QQ;EACA;EACA;;AAEJ;EACI,OFnRR;;AEuRJ;EACI,OF1RA;EE2RA;EACA;;AACA;EACI;EACA,OF3RJ;EE4RI;EACA;EACA;EACA;EFxRd;EACE;EACI;;AE0RQ;EACI;;AAKhB;EACI;;AAEI;EACI;;AAEJ;EACI;;AAIJ;EACI;;AAEJ;EACI;;AAGR;EACI;EACA;;AACA;EACI;EACA;EACA;EACA;EACA;EACA,aF1UL;EE2UK;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EF7Od;EACA;EACA;EE6Oc;;AAGR;EACI;;AAEJ;EACI;EACA;EACA;EACA;EACA;EACA;EF3PV;EACA;EACA;;AE6PU;EACI;EACA;EACA;EACA;EACA;EACA;EFrQd;EACA;EACA;;AEsQU;EACI;EACA;;AAIJ;EACI;EACA;;AAIZ;EACI;;AACA;EACI;EACA;;AAEJ;EACI;;AAEJ;EACI;;AAEJ;EACI;;AAEI;EACI;EACA;EFhYlB;EACE;EACI;;AEgYY;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;;AAKhB;EACI;EACA;EACA;EACA;EACA;EACA;EF9TV;EACA;EACA;;AEkUU;EACI;EACA;EACA;;AAGR;EACI;;AAEJ;EACI;EACA;EACA;;AACA;EACI;EACA;EF9ad;EACE;EACI;;AE8aQ;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AAEJ;EACI;EACA;;AAKhB;EACI;;AAEI;EACI;EACA;EACA;;AAGR;EACI;;AACA;EACI;;AAGR;EACI;EACA;EACA;;AAEI;EACI;;AAIZ;EACI;EACA;EACA;EACA;EACA;EACA;;AAGR;EACI;;AACA;EACI;;AAGA;EACI;EACA;EACA;;AAGR;EACI;EACA;;AACA;EACI;;AAGR;EACI;;AAEJ;EACI;EACA;EACA;;AAEI;EACI;;AAIZ;EACI;EACA;EACA;EACA;EACA;EACA;;AAGR;EACI;;AACA;EACI;EACA;;AACA;EACI;EACA,YFvhBD;EEwhBC;EACA;EACA;EACA;EACA;EACA;EACA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AAED;EACC;;AAED;EACC;;AACA;EACC;EACA;;AACA;EACC,OF39BM;;AE49BN;EACC,OF39BK;;AE+9BR;EACC,OF99BO;EE+9BP;EACA;EACA;;;AAOL;AACA;AAAA;AAEA;EACI;EACA;;AACA;EACI;;;AAIR;EACI,OFh/BQ;EEi/BR;;;AAGJ;AACA;AAAA;AAEA;EACC;EACA;;AACA;EACO;EACN;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EFr6BA;EACA;EACA;;AEs6BD;EACC;;AAED;EACC;;;AAIF;AACA;AAAA;AAEA;EACI;EACA;EACA;;AACA;EACI;;AAEJ;EACI;EACA;;AAEJ;EACI;;AACA;EACI;;AAGR;EACI;EACA;;AAEJ;EACI;EACA;EACA;;AAEJ;EACI;EACA;;AAEJ;EACI;EACA;EACA;;AACA;EACI;;AACA;EACI,OF9jCJ;EE+jCI;;AACA;EACI;EACA,OFhkCR;EEikCQ;EACA;EACA;EACA;;AAEJ;EACI,OFvkCR;;AE0kCA;EACI;EACA;EACA;EACA;EF1+Bd;EACA;EACA;;AE2+BU;EACI;;AAMI;EACI;EACA;;;AAQxB;AACA;AAAA;AAEA;EACI;EACA;;;AAGJ;EACI;EACA;;AACA;EACI;EACA;EACA;;AACA;EACI;;;AAKZ;AACA;AAAA;AAEA;EACI;;AACA;EACI;EACA;;AACA;EACI,OF9nCA;;;AEmoCZ;AACA;AAAA;AAEA;EACI;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;AACA;EACI;EACA;EACA;;AAEJ;EACI;EACA;EACA;EACA;EF5oCN,mBE6oCyB;EF5oCzB,gBE4oCyB;EF3oCzB,eE2oCyB;EF1oCzB,cE0oCyB;EFzoCzB,WEyoCyB;;AAKvB;EACI;EACA;EACA;;;ACxqCR;AACA;AAAA;AAEA;EACC;;;AAGD;EACC;;;AAGD;EACC;;;AAGD;EACC;EACA;;;AAGD;EACI;EACA;;;AAGJ;EACC;EACA;EACA,OH1BW;EG2BX;;;AAGD;EACC;EACA;;;AAGD;EACC;EACA,aHvCU;EGwCV;EACA;EACA;EACA;EACA;;;AAGD;EACC;E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","file":"style.css"} \ No newline at end of file diff --git a/public/front/css/style.scss b/public/front/css/style.scss new file mode 100644 index 00000000..2ceb0e55 --- /dev/null +++ b/public/front/css/style.scss @@ -0,0 +1,40 @@ +/* +Template Name: Katen +Version: 1.0 +Author: ThemeGer +Author URI: http://themeforest.net/user/themeger +Description: Minimal Blog and Magazine HTML Template + +[TABLE OF CONTENTS] + +01. Base +02. Preloader +03. Typography +04. Header +05. Sections +06. Post +07. About author +08. Post comments +09. Page +10. Contact +11. Widgets +12. Instagram feed +13. Footer +14. Search Popup +15. Helpers +16. Buttons +17. Bootstrap Elements +18. Theme Elements +19. Slick Settings +20. Responsive Settings +*/ +@import url('https://fonts.googleapis.com/css2?family=Noto+Kufi+Arabic&family=Tajawal:wght@200;300;400;500;700;800;900&display=swap'); +@import "sass/mixins"; +@import "sass/base"; +@import "sass/header"; +@import "sass/main"; +@import "sass/helper"; +@import "sass/buttons"; +@import "sass/elements"; +@import "sass/slick"; +@import "sass/responsive"; \ No newline at end of file diff --git a/public/front/fonts/Simple-Line-Icons.eot b/public/front/fonts/Simple-Line-Icons.eot new file mode 100644 index 00000000..f0ca6e8c Binary files /dev/null and b/public/front/fonts/Simple-Line-Icons.eot differ diff --git a/public/front/fonts/Simple-Line-Icons.svg b/public/front/fonts/Simple-Line-Icons.svg new file mode 100644 index 00000000..4988524e --- /dev/null +++ b/public/front/fonts/Simple-Line-Icons.svg @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/public/front/fonts/Simple-Line-Icons.ttf b/public/front/fonts/Simple-Line-Icons.ttf new file mode 100644 index 00000000..6ecb6868 Binary files /dev/null and b/public/front/fonts/Simple-Line-Icons.ttf differ diff --git a/public/front/fonts/Simple-Line-Icons.woff b/public/front/fonts/Simple-Line-Icons.woff new file mode 100644 index 00000000..b17d6949 Binary files /dev/null and b/public/front/fonts/Simple-Line-Icons.woff differ diff --git a/public/front/fonts/Simple-Line-Icons.woff2 b/public/front/fonts/Simple-Line-Icons.woff2 new file mode 100644 index 00000000..c49fccf5 Binary files /dev/null and b/public/front/fonts/Simple-Line-Icons.woff2 differ diff --git a/public/front/fonts/glyphicons-halflings-regular.eot b/public/front/fonts/glyphicons-halflings-regular.eot new file mode 100644 index 00000000..b93a4953 Binary files /dev/null and b/public/front/fonts/glyphicons-halflings-regular.eot differ diff --git a/public/front/fonts/glyphicons-halflings-regular.svg b/public/front/fonts/glyphicons-halflings-regular.svg new file mode 100644 index 00000000..94fb5490 --- /dev/null +++ b/public/front/fonts/glyphicons-halflings-regular.svg @@ -0,0 +1,288 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/front/fonts/glyphicons-halflings-regular.ttf b/public/front/fonts/glyphicons-halflings-regular.ttf new file mode 100644 index 00000000..1413fc60 Binary files /dev/null and b/public/front/fonts/glyphicons-halflings-regular.ttf differ diff --git a/public/front/fonts/glyphicons-halflings-regular.woff b/public/front/fonts/glyphicons-halflings-regular.woff new file mode 100644 index 00000000..9e612858 Binary files /dev/null and b/public/front/fonts/glyphicons-halflings-regular.woff differ diff --git a/public/front/fonts/glyphicons-halflings-regular.woff2 b/public/front/fonts/glyphicons-halflings-regular.woff2 new file mode 100644 index 00000000..64539b54 Binary files /dev/null and b/public/front/fonts/glyphicons-halflings-regular.woff2 differ diff --git a/public/front/fonts/slick.eot b/public/front/fonts/slick.eot new file mode 100644 index 00000000..2cbab9ca Binary files /dev/null and b/public/front/fonts/slick.eot differ diff --git a/public/front/fonts/slick.svg b/public/front/fonts/slick.svg new file mode 100644 index 00000000..b36a66a6 --- /dev/null +++ b/public/front/fonts/slick.svg @@ -0,0 +1,14 @@ + + + +Generated by Fontastic.me + + + + + + + + + + diff --git a/public/front/fonts/slick.ttf b/public/front/fonts/slick.ttf new file mode 100644 index 00000000..9d03461b Binary files /dev/null and b/public/front/fonts/slick.ttf differ diff --git a/public/front/fonts/slick.woff b/public/front/fonts/slick.woff new file mode 100644 index 00000000..8ee99721 Binary files /dev/null and b/public/front/fonts/slick.woff differ diff --git a/public/front/images/ads/ad-360.png b/public/front/images/ads/ad-360.png new file mode 100644 index 00000000..d1681e67 Binary files /dev/null and b/public/front/images/ads/ad-360.png differ diff --git a/public/front/images/ads/ad-750.png b/public/front/images/ads/ad-750.png new file mode 100644 index 00000000..71c59e35 Binary files /dev/null and b/public/front/images/ads/ad-750.png differ diff --git a/public/front/images/ajax-loader.gif b/public/front/images/ajax-loader.gif new file mode 100644 index 00000000..e0e6e976 Binary files /dev/null and b/public/front/images/ajax-loader.gif differ diff --git a/public/front/images/favicon.png b/public/front/images/favicon.png new file mode 100644 index 00000000..116bb807 Binary files /dev/null and b/public/front/images/favicon.png differ diff --git a/public/front/images/insta/insta-1.jpg b/public/front/images/insta/insta-1.jpg new file mode 100644 index 00000000..8f16e9e6 Binary files /dev/null and b/public/front/images/insta/insta-1.jpg differ diff --git a/public/front/images/insta/insta-2.jpg b/public/front/images/insta/insta-2.jpg new file mode 100644 index 00000000..8f16e9e6 Binary files /dev/null and b/public/front/images/insta/insta-2.jpg differ diff --git a/public/front/images/insta/insta-3.jpg b/public/front/images/insta/insta-3.jpg new file mode 100644 index 00000000..8f16e9e6 Binary files /dev/null and b/public/front/images/insta/insta-3.jpg differ diff --git a/public/front/images/insta/insta-4.jpg b/public/front/images/insta/insta-4.jpg new file mode 100644 index 00000000..8f16e9e6 Binary files /dev/null and b/public/front/images/insta/insta-4.jpg differ diff --git a/public/front/images/insta/insta-5.jpg b/public/front/images/insta/insta-5.jpg new file mode 100644 index 00000000..8f16e9e6 Binary files /dev/null and b/public/front/images/insta/insta-5.jpg differ diff --git a/public/front/images/insta/insta-6.jpg b/public/front/images/insta/insta-6.jpg new file mode 100644 index 00000000..8f16e9e6 Binary files /dev/null and b/public/front/images/insta/insta-6.jpg differ diff --git a/public/front/images/logo.svg b/public/front/images/logo.svg new file mode 100644 index 00000000..7b2b6f46 --- /dev/null +++ b/public/front/images/logo.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/public/front/images/map-bg.png b/public/front/images/map-bg.png new file mode 100644 index 00000000..97e9055c Binary files /dev/null and b/public/front/images/map-bg.png differ diff --git a/public/front/images/onlylogo.png b/public/front/images/onlylogo.png new file mode 100644 index 00000000..2d1dec07 Binary files /dev/null and b/public/front/images/onlylogo.png differ diff --git a/public/front/images/onlylogo.webp b/public/front/images/onlylogo.webp new file mode 100644 index 00000000..b9a89ab6 Binary files /dev/null and b/public/front/images/onlylogo.webp differ diff --git a/public/front/images/other/about.jpg b/public/front/images/other/about.jpg new file mode 100644 index 00000000..adfb8910 Binary files /dev/null and b/public/front/images/other/about.jpg differ diff --git a/public/front/images/other/author-sm.png b/public/front/images/other/author-sm.png new file mode 100644 index 00000000..4e238a77 Binary files /dev/null and b/public/front/images/other/author-sm.png differ diff --git a/public/front/images/other/avatar-about.png b/public/front/images/other/avatar-about.png new file mode 100644 index 00000000..eebd2ff6 Binary files /dev/null and b/public/front/images/other/avatar-about.png differ diff --git a/public/front/images/other/avatar-lg.png b/public/front/images/other/avatar-lg.png new file mode 100644 index 00000000..dd67b1a4 Binary files /dev/null and b/public/front/images/other/avatar-lg.png differ diff --git a/public/front/images/other/comment-1.png b/public/front/images/other/comment-1.png new file mode 100644 index 00000000..d57325ba Binary files /dev/null and b/public/front/images/other/comment-1.png differ diff --git a/public/front/images/other/comment-2.png b/public/front/images/other/comment-2.png new file mode 100644 index 00000000..1ec497bd Binary files /dev/null and b/public/front/images/other/comment-2.png differ diff --git a/public/front/images/other/comment-3.png b/public/front/images/other/comment-3.png new file mode 100644 index 00000000..150b29be Binary files /dev/null and b/public/front/images/other/comment-3.png differ diff --git a/public/front/images/other/hero-2.jpg b/public/front/images/other/hero-2.jpg new file mode 100644 index 00000000..a0525fc6 Binary files /dev/null and b/public/front/images/other/hero-2.jpg differ diff --git a/public/front/images/other/hero.jpg b/public/front/images/other/hero.jpg new file mode 100644 index 00000000..98d0611c Binary files /dev/null and b/public/front/images/other/hero.jpg differ diff --git a/public/front/images/posts/editor-lg.jpg b/public/front/images/posts/editor-lg.jpg new file mode 100644 index 00000000..8931ee57 Binary files /dev/null and b/public/front/images/posts/editor-lg.jpg differ diff --git a/public/front/images/posts/editor-sm-1.jpg b/public/front/images/posts/editor-sm-1.jpg new file mode 100644 index 00000000..2fb0d07f Binary files /dev/null and b/public/front/images/posts/editor-sm-1.jpg differ diff --git a/public/front/images/posts/editor-sm-2.jpg b/public/front/images/posts/editor-sm-2.jpg new file mode 100644 index 00000000..2fb0d07f Binary files /dev/null and b/public/front/images/posts/editor-sm-2.jpg differ diff --git a/public/front/images/posts/editor-sm-3.jpg b/public/front/images/posts/editor-sm-3.jpg new file mode 100644 index 00000000..2fb0d07f Binary files /dev/null and b/public/front/images/posts/editor-sm-3.jpg differ diff --git a/public/front/images/posts/editor-sm-4.jpg b/public/front/images/posts/editor-sm-4.jpg new file mode 100644 index 00000000..2fb0d07f Binary files /dev/null and b/public/front/images/posts/editor-sm-4.jpg differ diff --git a/public/front/images/posts/featured-lg.jpg b/public/front/images/posts/featured-lg.jpg new file mode 100644 index 00000000..5fc1161b Binary files /dev/null and b/public/front/images/posts/featured-lg.jpg differ diff --git a/public/front/images/posts/featured-md-1.jpg b/public/front/images/posts/featured-md-1.jpg new file mode 100644 index 00000000..f44e7c40 Binary files /dev/null and b/public/front/images/posts/featured-md-1.jpg differ diff --git a/public/front/images/posts/featured-md-2.jpg b/public/front/images/posts/featured-md-2.jpg new file mode 100644 index 00000000..f44e7c40 Binary files /dev/null and b/public/front/images/posts/featured-md-2.jpg differ diff --git a/public/front/images/posts/featured-md-3.jpg b/public/front/images/posts/featured-md-3.jpg new file mode 100644 index 00000000..f44e7c40 Binary files /dev/null and b/public/front/images/posts/featured-md-3.jpg differ diff --git a/public/front/images/posts/featured-md-4.jpg b/public/front/images/posts/featured-md-4.jpg new file mode 100644 index 00000000..f44e7c40 Binary files /dev/null and b/public/front/images/posts/featured-md-4.jpg differ diff --git a/public/front/images/posts/featured-xl-1.jpg b/public/front/images/posts/featured-xl-1.jpg new file mode 100644 index 00000000..44fc1b9b Binary files /dev/null and b/public/front/images/posts/featured-xl-1.jpg differ diff --git a/public/front/images/posts/featured-xl-2.jpg b/public/front/images/posts/featured-xl-2.jpg new file mode 100644 index 00000000..44fc1b9b Binary files /dev/null and b/public/front/images/posts/featured-xl-2.jpg differ diff --git a/public/front/images/posts/inspiration-1.jpg b/public/front/images/posts/inspiration-1.jpg new file mode 100644 index 00000000..dd4a03fd Binary files /dev/null and b/public/front/images/posts/inspiration-1.jpg differ diff --git a/public/front/images/posts/inspiration-2.jpg b/public/front/images/posts/inspiration-2.jpg new file mode 100644 index 00000000..dd4a03fd Binary files /dev/null and b/public/front/images/posts/inspiration-2.jpg differ diff --git a/public/front/images/posts/inspiration-3.jpg b/public/front/images/posts/inspiration-3.jpg new file mode 100644 index 00000000..dd4a03fd Binary files /dev/null and b/public/front/images/posts/inspiration-3.jpg differ diff --git a/public/front/images/posts/latest-sm-1.jpg b/public/front/images/posts/latest-sm-1.jpg new file mode 100644 index 00000000..d3ad8234 Binary files /dev/null and b/public/front/images/posts/latest-sm-1.jpg differ diff --git a/public/front/images/posts/latest-sm-2.jpg b/public/front/images/posts/latest-sm-2.jpg new file mode 100644 index 00000000..d3ad8234 Binary files /dev/null and b/public/front/images/posts/latest-sm-2.jpg differ diff --git a/public/front/images/posts/latest-sm-3.jpg b/public/front/images/posts/latest-sm-3.jpg new file mode 100644 index 00000000..d3ad8234 Binary files /dev/null and b/public/front/images/posts/latest-sm-3.jpg differ diff --git a/public/front/images/posts/latest-sm-4.jpg b/public/front/images/posts/latest-sm-4.jpg new file mode 100644 index 00000000..d3ad8234 Binary files /dev/null and b/public/front/images/posts/latest-sm-4.jpg differ diff --git a/public/front/images/posts/post-lg-1.jpg b/public/front/images/posts/post-lg-1.jpg new file mode 100644 index 00000000..eaa8631d Binary files /dev/null and b/public/front/images/posts/post-lg-1.jpg differ diff --git a/public/front/images/posts/post-lg-2.jpg b/public/front/images/posts/post-lg-2.jpg new file mode 100644 index 00000000..eaa8631d Binary files /dev/null and b/public/front/images/posts/post-lg-2.jpg differ diff --git a/public/front/images/posts/post-lg-3.jpg b/public/front/images/posts/post-lg-3.jpg new file mode 100644 index 00000000..eaa8631d Binary files /dev/null and b/public/front/images/posts/post-lg-3.jpg differ diff --git a/public/front/images/posts/post-lg-4.jpg b/public/front/images/posts/post-lg-4.jpg new file mode 100644 index 00000000..eaa8631d Binary files /dev/null and b/public/front/images/posts/post-lg-4.jpg differ diff --git a/public/front/images/posts/post-md-1.jpg b/public/front/images/posts/post-md-1.jpg new file mode 100644 index 00000000..e996f1df Binary files /dev/null and b/public/front/images/posts/post-md-1.jpg differ diff --git a/public/front/images/posts/post-md-10.jpg b/public/front/images/posts/post-md-10.jpg new file mode 100644 index 00000000..e996f1df Binary files /dev/null and b/public/front/images/posts/post-md-10.jpg differ diff --git a/public/front/images/posts/post-md-2.jpg b/public/front/images/posts/post-md-2.jpg new file mode 100644 index 00000000..e996f1df Binary files /dev/null and b/public/front/images/posts/post-md-2.jpg differ diff --git a/public/front/images/posts/post-md-3.jpg b/public/front/images/posts/post-md-3.jpg new file mode 100644 index 00000000..e996f1df Binary files /dev/null and b/public/front/images/posts/post-md-3.jpg differ diff --git a/public/front/images/posts/post-md-4.jpg b/public/front/images/posts/post-md-4.jpg new file mode 100644 index 00000000..e996f1df Binary files /dev/null and b/public/front/images/posts/post-md-4.jpg differ diff --git a/public/front/images/posts/post-md-5.jpg b/public/front/images/posts/post-md-5.jpg new file mode 100644 index 00000000..e996f1df Binary files /dev/null and b/public/front/images/posts/post-md-5.jpg differ diff --git a/public/front/images/posts/post-md-6.jpg b/public/front/images/posts/post-md-6.jpg new file mode 100644 index 00000000..e996f1df Binary files /dev/null and b/public/front/images/posts/post-md-6.jpg differ diff --git a/public/front/images/posts/post-md-7.jpg b/public/front/images/posts/post-md-7.jpg new file mode 100644 index 00000000..e996f1df Binary files /dev/null and b/public/front/images/posts/post-md-7.jpg differ diff --git a/public/front/images/posts/post-md-8.jpg b/public/front/images/posts/post-md-8.jpg new file mode 100644 index 00000000..e996f1df Binary files /dev/null and b/public/front/images/posts/post-md-8.jpg differ diff --git a/public/front/images/posts/post-md-9.jpg b/public/front/images/posts/post-md-9.jpg new file mode 100644 index 00000000..e996f1df Binary files /dev/null and b/public/front/images/posts/post-md-9.jpg differ diff --git a/public/front/images/posts/post-xl-1.jpg b/public/front/images/posts/post-xl-1.jpg new file mode 100644 index 00000000..efce9ff7 Binary files /dev/null and b/public/front/images/posts/post-xl-1.jpg differ diff --git a/public/front/images/posts/post-xl-2.jpg b/public/front/images/posts/post-xl-2.jpg new file mode 100644 index 00000000..efce9ff7 Binary files /dev/null and b/public/front/images/posts/post-xl-2.jpg differ diff --git a/public/front/images/posts/post-xl-3.jpg b/public/front/images/posts/post-xl-3.jpg new file mode 100644 index 00000000..efce9ff7 Binary files /dev/null and b/public/front/images/posts/post-xl-3.jpg differ diff --git a/public/front/images/posts/post-xl-4.jpg b/public/front/images/posts/post-xl-4.jpg new file mode 100644 index 00000000..efce9ff7 Binary files /dev/null and b/public/front/images/posts/post-xl-4.jpg differ diff --git a/public/front/images/posts/single-cover.jpg b/public/front/images/posts/single-cover.jpg new file mode 100644 index 00000000..788ba51d Binary files /dev/null and b/public/front/images/posts/single-cover.jpg differ diff --git a/public/front/images/posts/single-sm-1.jpg b/public/front/images/posts/single-sm-1.jpg new file mode 100644 index 00000000..530b219f Binary files /dev/null and b/public/front/images/posts/single-sm-1.jpg differ diff --git a/public/front/images/posts/tabs-1.jpg b/public/front/images/posts/tabs-1.jpg new file mode 100644 index 00000000..25065d49 Binary files /dev/null and b/public/front/images/posts/tabs-1.jpg differ diff --git a/public/front/images/posts/tabs-2.jpg b/public/front/images/posts/tabs-2.jpg new file mode 100644 index 00000000..25065d49 Binary files /dev/null and b/public/front/images/posts/tabs-2.jpg differ diff --git a/public/front/images/posts/tabs-3.jpg b/public/front/images/posts/tabs-3.jpg new file mode 100644 index 00000000..25065d49 Binary files /dev/null and b/public/front/images/posts/tabs-3.jpg differ diff --git a/public/front/images/posts/tabs-4.jpg b/public/front/images/posts/tabs-4.jpg new file mode 100644 index 00000000..25065d49 Binary files /dev/null and b/public/front/images/posts/tabs-4.jpg differ diff --git a/public/front/images/posts/trending-lg-1.jpg b/public/front/images/posts/trending-lg-1.jpg new file mode 100644 index 00000000..8931ee57 Binary files /dev/null and b/public/front/images/posts/trending-lg-1.jpg differ diff --git a/public/front/images/posts/trending-lg-2.jpg b/public/front/images/posts/trending-lg-2.jpg new file mode 100644 index 00000000..8931ee57 Binary files /dev/null and b/public/front/images/posts/trending-lg-2.jpg differ diff --git a/public/front/images/posts/trending-sm-1.jpg b/public/front/images/posts/trending-sm-1.jpg new file mode 100644 index 00000000..2fb0d07f Binary files /dev/null and b/public/front/images/posts/trending-sm-1.jpg differ diff --git a/public/front/images/posts/trending-sm-2.jpg b/public/front/images/posts/trending-sm-2.jpg new file mode 100644 index 00000000..2fb0d07f Binary files /dev/null and b/public/front/images/posts/trending-sm-2.jpg differ diff --git a/public/front/images/posts/trending-sm-3.jpg b/public/front/images/posts/trending-sm-3.jpg new file mode 100644 index 00000000..2fb0d07f Binary files /dev/null and b/public/front/images/posts/trending-sm-3.jpg differ diff --git a/public/front/images/posts/trending-sm-4.jpg b/public/front/images/posts/trending-sm-4.jpg new file mode 100644 index 00000000..2fb0d07f Binary files /dev/null and b/public/front/images/posts/trending-sm-4.jpg differ diff --git a/public/front/images/textlogo.png b/public/front/images/textlogo.png new file mode 100644 index 00000000..89be9f6f Binary files /dev/null and b/public/front/images/textlogo.png differ diff --git a/public/front/images/textlogo.webp b/public/front/images/textlogo.webp new file mode 100644 index 00000000..451be4da Binary files /dev/null and b/public/front/images/textlogo.webp differ diff --git a/public/front/images/wave.svg b/public/front/images/wave.svg new file mode 100644 index 00000000..489bc5c1 --- /dev/null +++ b/public/front/images/wave.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/public/front/images/widgets/widget-carousel-1.jpg b/public/front/images/widgets/widget-carousel-1.jpg new file mode 100644 index 00000000..c6916f84 Binary files /dev/null and b/public/front/images/widgets/widget-carousel-1.jpg differ diff --git a/public/front/images/widgets/widget-carousel-2.jpg b/public/front/images/widgets/widget-carousel-2.jpg new file mode 100644 index 00000000..c6916f84 Binary files /dev/null and b/public/front/images/widgets/widget-carousel-2.jpg differ diff --git a/public/front/js/bootstrap.min.js b/public/front/js/bootstrap.min.js new file mode 100644 index 00000000..d31b6e9b --- /dev/null +++ b/public/front/js/bootstrap.min.js @@ -0,0 +1,7 @@ +/*! + * Bootstrap v5.0.0-beta3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(require("@popperjs/core")):"function"==typeof define&&define.amd?define(["@popperjs/core"],e):(t="undefined"!=typeof globalThis?globalThis:t||self).bootstrap=e(t.Popper)}(this,(function(t){"use strict";function e(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(s){if("default"!==s){var i=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,i.get?i:{enumerable:!0,get:function(){return t[s]}})}})),e.default=t,Object.freeze(e)}var s=e(t);const i=t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t},n=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let s=t.getAttribute("href");if(!s||!s.includes("#")&&!s.startsWith("."))return null;s.includes("#")&&!s.startsWith("#")&&(s="#"+s.split("#")[1]),e=s&&"#"!==s?s.trim():null}return e},o=t=>{const e=n(t);return e&&document.querySelector(e)?e:null},r=t=>{const e=n(t);return e?document.querySelector(e):null},a=t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:s}=window.getComputedStyle(t);const i=Number.parseFloat(e),n=Number.parseFloat(s);return i||n?(e=e.split(",")[0],s=s.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(s))):0},l=t=>{t.dispatchEvent(new Event("transitionend"))},c=t=>(t[0]||t).nodeType,h=(t,e)=>{let s=!1;const i=e+5;t.addEventListener("transitionend",(function e(){s=!0,t.removeEventListener("transitionend",e)})),setTimeout(()=>{s||l(t)},i)},d=(t,e,s)=>{Object.keys(s).forEach(i=>{const n=s[i],o=e[i],r=o&&c(o)?"element":null==(a=o)?""+a:{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase();var a;if(!new RegExp(n).test(r))throw new TypeError(t.toUpperCase()+": "+`Option "${i}" provided type "${r}" `+`but expected type "${n}".`)})},u=t=>{if(!t)return!1;if(t.style&&t.parentNode&&t.parentNode.style){const e=getComputedStyle(t),s=getComputedStyle(t.parentNode);return"none"!==e.display&&"none"!==s.display&&"hidden"!==e.visibility}return!1},g=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),f=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?f(t.parentNode):null},p=()=>function(){},m=t=>t.offsetHeight,_=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute("data-bs-no-jquery")?t:null},b=()=>"rtl"===document.documentElement.dir,v=(t,e)=>{var s;s=()=>{const s=_();if(s){const i=s.fn[t];s.fn[t]=e.jQueryInterface,s.fn[t].Constructor=e,s.fn[t].noConflict=()=>(s.fn[t]=i,e.jQueryInterface)}},"loading"===document.readyState?document.addEventListener("DOMContentLoaded",s):s()},y=new Map;var w={set(t,e,s){y.has(t)||y.set(t,new Map);const i=y.get(t);i.has(e)||0===i.size?i.set(e,s):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`)},get:(t,e)=>y.has(t)&&y.get(t).get(e)||null,remove(t,e){if(!y.has(t))return;const s=y.get(t);s.delete(e),0===s.size&&y.delete(t)}};const E=/[^.]*(?=\..*)\.|.*/,T=/\..*/,A=/::\d+$/,L={};let k=1;const C={mouseenter:"mouseover",mouseleave:"mouseout"},D=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function S(t,e){return e&&`${e}::${k++}`||t.uidEvent||k++}function N(t){const e=S(t);return t.uidEvent=e,L[e]=L[e]||{},L[e]}function O(t,e,s=null){const i=Object.keys(t);for(let n=0,o=i.length;n{!function(t,e,s,i){const n=e[s]||{};Object.keys(n).forEach(o=>{if(o.includes(i)){const i=n[o];j(t,e,s,i.originalHandler,i.delegationSelector)}})}(t,l,s,e.slice(1))});const h=l[r]||{};Object.keys(h).forEach(s=>{const i=s.replace(A,"");if(!a||e.includes(i)){const e=h[s];j(t,l,r,e.originalHandler,e.delegationSelector)}})},trigger(t,e,s){if("string"!=typeof e||!t)return null;const i=_(),n=e.replace(T,""),o=e!==n,r=D.has(n);let a,l=!0,c=!0,h=!1,d=null;return o&&i&&(a=i.Event(e,s),i(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent("HTMLEvents"),d.initEvent(n,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==s&&Object.keys(s).forEach(t=>{Object.defineProperty(d,t,{get:()=>s[t]})}),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}};class M{constructor(t){(t="string"==typeof t?document.querySelector(t):t)&&(this._element=t,w.set(this._element,this.constructor.DATA_KEY,this))}dispose(){w.remove(this._element,this.constructor.DATA_KEY),this._element=null}static getInstance(t){return w.get(t,this.DATA_KEY)}static get VERSION(){return"5.0.0-beta3"}}class H extends M{static get DATA_KEY(){return"bs.alert"}close(t){const e=t?this._getRootElement(t):this._element,s=this._triggerCloseEvent(e);null===s||s.defaultPrevented||this._removeElement(e)}_getRootElement(t){return r(t)||t.closest(".alert")}_triggerCloseEvent(t){return P.trigger(t,"close.bs.alert")}_removeElement(t){if(t.classList.remove("show"),!t.classList.contains("fade"))return void this._destroyElement(t);const e=a(t);P.one(t,"transitionend",()=>this._destroyElement(t)),h(t,e)}_destroyElement(t){t.parentNode&&t.parentNode.removeChild(t),P.trigger(t,"closed.bs.alert")}static jQueryInterface(t){return this.each((function(){let e=w.get(this,"bs.alert");e||(e=new H(this)),"close"===t&&e[t](this)}))}static handleDismiss(t){return function(e){e&&e.preventDefault(),t.close(this)}}}P.on(document,"click.bs.alert.data-api",'[data-bs-dismiss="alert"]',H.handleDismiss(new H)),v("alert",H);class R extends M{static get DATA_KEY(){return"bs.button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){let e=w.get(this,"bs.button");e||(e=new R(this)),"toggle"===t&&e[t]()}))}}function B(t){return"true"===t||"false"!==t&&(t===Number(t).toString()?Number(t):""===t||"null"===t?null:t)}function W(t){return t.replace(/[A-Z]/g,t=>"-"+t.toLowerCase())}P.on(document,"click.bs.button.data-api",'[data-bs-toggle="button"]',t=>{t.preventDefault();const e=t.target.closest('[data-bs-toggle="button"]');let s=w.get(e,"bs.button");s||(s=new R(e)),s.toggle()}),v("button",R);const $={setDataAttribute(t,e,s){t.setAttribute("data-bs-"+W(e),s)},removeDataAttribute(t,e){t.removeAttribute("data-bs-"+W(e))},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter(t=>t.startsWith("bs")).forEach(s=>{let i=s.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=B(t.dataset[s])}),e},getDataAttribute:(t,e)=>B(t.getAttribute("data-bs-"+W(e))),offset(t){const e=t.getBoundingClientRect();return{top:e.top+document.body.scrollTop,left:e.left+document.body.scrollLeft}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},U={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const s=[];let i=t.parentNode;for(;i&&i.nodeType===Node.ELEMENT_NODE&&3!==i.nodeType;)i.matches(e)&&s.push(i),i=i.parentNode;return s},prev(t,e){let s=t.previousElementSibling;for(;s;){if(s.matches(e))return[s];s=s.previousElementSibling}return[]},next(t,e){let s=t.nextElementSibling;for(;s;){if(s.matches(e))return[s];s=s.nextElementSibling}return[]}},F={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0,touch:!0},K={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean",touch:"boolean"},z="next",Y="prev",q="left",Q="right";class X extends M{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=U.findOne(".carousel-indicators",this._element),this._touchSupported="ontouchstart"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return F}static get DATA_KEY(){return"bs.carousel"}next(){this._isSliding||this._slide(z)}nextWhenVisible(){!document.hidden&&u(this._element)&&this.next()}prev(){this._isSliding||this._slide(Y)}pause(t){t||(this._isPaused=!0),U.findOne(".carousel-item-next, .carousel-item-prev",this._element)&&(l(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=U.findOne(".active.carousel-item",this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void P.one(this._element,"slid.bs.carousel",()=>this.to(t));if(e===t)return this.pause(),void this.cycle();const s=t>e?z:Y;this._slide(s,this._items[t])}dispose(){P.off(this._element,".bs.carousel"),this._items=null,this._config=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null,super.dispose()}_getConfig(t){return t={...F,...t},d("carousel",t,K),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?Q:q)}_addEventListeners(){this._config.keyboard&&P.on(this._element,"keydown.bs.carousel",t=>this._keydown(t)),"hover"===this._config.pause&&(P.on(this._element,"mouseenter.bs.carousel",t=>this.pause(t)),P.on(this._element,"mouseleave.bs.carousel",t=>this.cycle(t))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType?this._pointerEvent||(this.touchStartX=t.touches[0].clientX):this.touchStartX=t.clientX},e=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},s=t=>{!this._pointerEvent||"pen"!==t.pointerType&&"touch"!==t.pointerType||(this.touchDeltaX=t.clientX-this.touchStartX),this._handleSwipe(),"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(t=>this.cycle(t),500+this._config.interval))};U.find(".carousel-item img",this._element).forEach(t=>{P.on(t,"dragstart.bs.carousel",t=>t.preventDefault())}),this._pointerEvent?(P.on(this._element,"pointerdown.bs.carousel",e=>t(e)),P.on(this._element,"pointerup.bs.carousel",t=>s(t)),this._element.classList.add("pointer-event")):(P.on(this._element,"touchstart.bs.carousel",e=>t(e)),P.on(this._element,"touchmove.bs.carousel",t=>e(t)),P.on(this._element,"touchend.bs.carousel",t=>s(t)))}_keydown(t){/input|textarea/i.test(t.target.tagName)||("ArrowLeft"===t.key?(t.preventDefault(),this._slide(q)):"ArrowRight"===t.key&&(t.preventDefault(),this._slide(Q)))}_getItemIndex(t){return this._items=t&&t.parentNode?U.find(".carousel-item",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const s=t===z,i=t===Y,n=this._getItemIndex(e),o=this._items.length-1;if((i&&0===n||s&&n===o)&&!this._config.wrap)return e;const r=(n+(i?-1:1))%this._items.length;return-1===r?this._items[this._items.length-1]:this._items[r]}_triggerSlideEvent(t,e){const s=this._getItemIndex(t),i=this._getItemIndex(U.findOne(".active.carousel-item",this._element));return P.trigger(this._element,"slide.bs.carousel",{relatedTarget:t,direction:e,from:i,to:s})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=U.findOne(".active",this._indicatorsElement);e.classList.remove("active"),e.removeAttribute("aria-current");const s=U.find("[data-bs-target]",this._indicatorsElement);for(let e=0;e{o.classList.remove(d,u),o.classList.add("active"),i.classList.remove("active",u,d),this._isSliding=!1,setTimeout(()=>{P.trigger(this._element,"slid.bs.carousel",{relatedTarget:o,direction:g,from:n,to:r})},0)}),h(i,t)}else i.classList.remove("active"),o.classList.add("active"),this._isSliding=!1,P.trigger(this._element,"slid.bs.carousel",{relatedTarget:o,direction:g,from:n,to:r});l&&this.cycle()}}_directionToOrder(t){return[Q,q].includes(t)?b()?t===Q?Y:z:t===Q?z:Y:t}_orderToDirection(t){return[z,Y].includes(t)?b()?t===z?q:Q:t===z?Q:q:t}static carouselInterface(t,e){let s=w.get(t,"bs.carousel"),i={...F,...$.getDataAttributes(t)};"object"==typeof e&&(i={...i,...e});const n="string"==typeof e?e:i.slide;if(s||(s=new X(t,i)),"number"==typeof e)s.to(e);else if("string"==typeof n){if(void 0===s[n])throw new TypeError(`No method named "${n}"`);s[n]()}else i.interval&&i.ride&&(s.pause(),s.cycle())}static jQueryInterface(t){return this.each((function(){X.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=r(this);if(!e||!e.classList.contains("carousel"))return;const s={...$.getDataAttributes(e),...$.getDataAttributes(this)},i=this.getAttribute("data-bs-slide-to");i&&(s.interval=!1),X.carouselInterface(e,s),i&&w.get(e,"bs.carousel").to(i),t.preventDefault()}}P.on(document,"click.bs.carousel.data-api","[data-bs-slide], [data-bs-slide-to]",X.dataApiClickHandler),P.on(window,"load.bs.carousel.data-api",()=>{const t=U.find('[data-bs-ride="carousel"]');for(let e=0,s=t.length;et===this._element);null!==i&&n.length&&(this._selector=i,this._triggerArray.push(e))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}static get Default(){return V}static get DATA_KEY(){return"bs.collapse"}toggle(){this._element.classList.contains("show")?this.hide():this.show()}show(){if(this._isTransitioning||this._element.classList.contains("show"))return;let t,e;this._parent&&(t=U.find(".show, .collapsing",this._parent).filter(t=>"string"==typeof this._config.parent?t.getAttribute("data-bs-parent")===this._config.parent:t.classList.contains("collapse")),0===t.length&&(t=null));const s=U.findOne(this._selector);if(t){const i=t.find(t=>s!==t);if(e=i?w.get(i,"bs.collapse"):null,e&&e._isTransitioning)return}if(P.trigger(this._element,"show.bs.collapse").defaultPrevented)return;t&&t.forEach(t=>{s!==t&&Z.collapseInterface(t,"hide"),e||w.set(t,"bs.collapse",null)});const i=this._getDimension();this._element.classList.remove("collapse"),this._element.classList.add("collapsing"),this._element.style[i]=0,this._triggerArray.length&&this._triggerArray.forEach(t=>{t.classList.remove("collapsed"),t.setAttribute("aria-expanded",!0)}),this.setTransitioning(!0);const n="scroll"+(i[0].toUpperCase()+i.slice(1)),o=a(this._element);P.one(this._element,"transitionend",()=>{this._element.classList.remove("collapsing"),this._element.classList.add("collapse","show"),this._element.style[i]="",this.setTransitioning(!1),P.trigger(this._element,"shown.bs.collapse")}),h(this._element,o),this._element.style[i]=this._element[n]+"px"}hide(){if(this._isTransitioning||!this._element.classList.contains("show"))return;if(P.trigger(this._element,"hide.bs.collapse").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=this._element.getBoundingClientRect()[t]+"px",m(this._element),this._element.classList.add("collapsing"),this._element.classList.remove("collapse","show");const e=this._triggerArray.length;if(e>0)for(let t=0;t{this.setTransitioning(!1),this._element.classList.remove("collapsing"),this._element.classList.add("collapse"),P.trigger(this._element,"hidden.bs.collapse")}),h(this._element,s)}setTransitioning(t){this._isTransitioning=t}dispose(){super.dispose(),this._config=null,this._parent=null,this._triggerArray=null,this._isTransitioning=null}_getConfig(t){return(t={...V,...t}).toggle=Boolean(t.toggle),d("collapse",t,G),t}_getDimension(){return this._element.classList.contains("width")?"width":"height"}_getParent(){let{parent:t}=this._config;c(t)?void 0===t.jquery&&void 0===t[0]||(t=t[0]):t=U.findOne(t);const e=`[data-bs-toggle="collapse"][data-bs-parent="${t}"]`;return U.find(e,t).forEach(t=>{const e=r(t);this._addAriaAndCollapsedClass(e,[t])}),t}_addAriaAndCollapsedClass(t,e){if(!t||!e.length)return;const s=t.classList.contains("show");e.forEach(t=>{s?t.classList.remove("collapsed"):t.classList.add("collapsed"),t.setAttribute("aria-expanded",s)})}static collapseInterface(t,e){let s=w.get(t,"bs.collapse");const i={...V,...$.getDataAttributes(t),..."object"==typeof e&&e?e:{}};if(!s&&i.toggle&&"string"==typeof e&&/show|hide/.test(e)&&(i.toggle=!1),s||(s=new Z(t,i)),"string"==typeof e){if(void 0===s[e])throw new TypeError(`No method named "${e}"`);s[e]()}}static jQueryInterface(t){return this.each((function(){Z.collapseInterface(this,t)}))}}P.on(document,"click.bs.collapse.data-api",'[data-bs-toggle="collapse"]',(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=$.getDataAttributes(this),s=o(this);U.find(s).forEach(t=>{const s=w.get(t,"bs.collapse");let i;s?(null===s._parent&&"string"==typeof e.parent&&(s._config.parent=e.parent,s._parent=s._getParent()),i="toggle"):i=e,Z.collapseInterface(t,i)})})),v("collapse",Z);const J=new RegExp("ArrowUp|ArrowDown|Escape"),tt=b()?"top-end":"top-start",et=b()?"top-start":"top-end",st=b()?"bottom-end":"bottom-start",it=b()?"bottom-start":"bottom-end",nt=b()?"left-start":"right-start",ot=b()?"right-start":"left-start",rt={offset:[0,2],boundary:"clippingParents",reference:"toggle",display:"dynamic",popperConfig:null},at={offset:"(array|string|function)",boundary:"(string|element)",reference:"(string|element|object)",display:"string",popperConfig:"(null|object|function)"};class lt extends M{constructor(t,e){super(t),this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}static get Default(){return rt}static get DefaultType(){return at}static get DATA_KEY(){return"bs.dropdown"}toggle(){if(this._element.disabled||this._element.classList.contains("disabled"))return;const t=this._element.classList.contains("show");lt.clearMenus(),t||this.show()}show(){if(this._element.disabled||this._element.classList.contains("disabled")||this._menu.classList.contains("show"))return;const t=lt.getParentFromElement(this._element),e={relatedTarget:this._element};if(!P.trigger(this._element,"show.bs.dropdown",e).defaultPrevented){if(this._inNavbar)$.setDataAttribute(this._menu,"popper","none");else{if(void 0===s)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=t:c(this._config.reference)?(e=this._config.reference,void 0!==this._config.reference.jquery&&(e=this._config.reference[0])):"object"==typeof this._config.reference&&(e=this._config.reference);const i=this._getPopperConfig(),n=i.modifiers.find(t=>"applyStyles"===t.name&&!1===t.enabled);this._popper=s.createPopper(e,this._menu,i),n&&$.setDataAttribute(this._menu,"popper","static")}"ontouchstart"in document.documentElement&&!t.closest(".navbar-nav")&&[].concat(...document.body.children).forEach(t=>P.on(t,"mouseover",null,(function(){}))),this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.toggle("show"),this._element.classList.toggle("show"),P.trigger(this._element,"shown.bs.dropdown",e)}}hide(){if(this._element.disabled||this._element.classList.contains("disabled")||!this._menu.classList.contains("show"))return;const t={relatedTarget:this._element};P.trigger(this._element,"hide.bs.dropdown",t).defaultPrevented||(this._popper&&this._popper.destroy(),this._menu.classList.toggle("show"),this._element.classList.toggle("show"),$.removeDataAttribute(this._menu,"popper"),P.trigger(this._element,"hidden.bs.dropdown",t))}dispose(){P.off(this._element,".bs.dropdown"),this._menu=null,this._popper&&(this._popper.destroy(),this._popper=null),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_addEventListeners(){P.on(this._element,"click.bs.dropdown",t=>{t.preventDefault(),this.toggle()})}_getConfig(t){if(t={...this.constructor.Default,...$.getDataAttributes(this._element),...t},d("dropdown",t,this.constructor.DefaultType),"object"==typeof t.reference&&!c(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError("dropdown".toUpperCase()+': Option "reference" provided type "object" without a required "getBoundingClientRect" method.');return t}_getMenuElement(){return U.next(this._element,".dropdown-menu")[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains("dropend"))return nt;if(t.classList.contains("dropstart"))return ot;const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?et:tt:e?it:st}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return"static"===this._config.display&&(t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}static dropdownInterface(t,e){let s=w.get(t,"bs.dropdown");if(s||(s=new lt(t,"object"==typeof e?e:null)),"string"==typeof e){if(void 0===s[e])throw new TypeError(`No method named "${e}"`);s[e]()}}static jQueryInterface(t){return this.each((function(){lt.dropdownInterface(this,t)}))}static clearMenus(t){if(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;if(/input|select|textarea|form/i.test(t.target.tagName))return}const e=U.find('[data-bs-toggle="dropdown"]');for(let s=0,i=e.length;st.composedPath().includes(e)))continue;if("keyup"===t.type&&"Tab"===t.key&&o.contains(t.target))continue}P.trigger(e[s],"hide.bs.dropdown",n).defaultPrevented||("ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>P.off(t,"mouseover",null,(function(){}))),e[s].setAttribute("aria-expanded","false"),i._popper&&i._popper.destroy(),o.classList.remove("show"),e[s].classList.remove("show"),$.removeDataAttribute(o,"popper"),P.trigger(e[s],"hidden.bs.dropdown",n))}}}static getParentFromElement(t){return r(t)||t.parentNode}static dataApiKeydownHandler(t){if(/input|textarea/i.test(t.target.tagName)?"Space"===t.key||"Escape"!==t.key&&("ArrowDown"!==t.key&&"ArrowUp"!==t.key||t.target.closest(".dropdown-menu")):!J.test(t.key))return;if(t.preventDefault(),t.stopPropagation(),this.disabled||this.classList.contains("disabled"))return;const e=lt.getParentFromElement(this),s=this.classList.contains("show");if("Escape"===t.key)return(this.matches('[data-bs-toggle="dropdown"]')?this:U.prev(this,'[data-bs-toggle="dropdown"]')[0]).focus(),void lt.clearMenus();if(!s&&("ArrowUp"===t.key||"ArrowDown"===t.key))return void(this.matches('[data-bs-toggle="dropdown"]')?this:U.prev(this,'[data-bs-toggle="dropdown"]')[0]).click();if(!s||"Space"===t.key)return void lt.clearMenus();const i=U.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",e).filter(u);if(!i.length)return;let n=i.indexOf(t.target);"ArrowUp"===t.key&&n>0&&n--,"ArrowDown"===t.key&&nthis.hide(t)),P.on(this._dialog,"mousedown.dismiss.bs.modal",()=>{P.one(this._element,"mouseup.dismiss.bs.modal",t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(t)))}hide(t){if(t&&t.preventDefault(),!this._isShown||this._isTransitioning)return;if(P.trigger(this._element,"hide.bs.modal").defaultPrevented)return;this._isShown=!1;const e=this._isAnimated();if(e&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),P.off(document,"focusin.bs.modal"),this._element.classList.remove("show"),P.off(this._element,"click.dismiss.bs.modal"),P.off(this._dialog,"mousedown.dismiss.bs.modal"),e){const t=a(this._element);P.one(this._element,"transitionend",t=>this._hideModal(t)),h(this._element,t)}else this._hideModal()}dispose(){[window,this._element,this._dialog].forEach(t=>P.off(t,".bs.modal")),super.dispose(),P.off(document,"focusin.bs.modal"),this._config=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._isTransitioning=null,this._scrollbarWidth=null}handleUpdate(){this._adjustDialog()}_getConfig(t){return t={...ct,...t},d("modal",t,ht),t}_showElement(t){const e=this._isAnimated(),s=U.findOne(".modal-body",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0,s&&(s.scrollTop=0),e&&m(this._element),this._element.classList.add("show"),this._config.focus&&this._enforceFocus();const i=()=>{this._config.focus&&this._element.focus(),this._isTransitioning=!1,P.trigger(this._element,"shown.bs.modal",{relatedTarget:t})};if(e){const t=a(this._dialog);P.one(this._dialog,"transitionend",i),h(this._dialog,t)}else i()}_enforceFocus(){P.off(document,"focusin.bs.modal"),P.on(document,"focusin.bs.modal",t=>{document===t.target||this._element===t.target||this._element.contains(t.target)||this._element.focus()})}_setEscapeEvent(){this._isShown?P.on(this._element,"keydown.dismiss.bs.modal",t=>{this._config.keyboard&&"Escape"===t.key?(t.preventDefault(),this.hide()):this._config.keyboard||"Escape"!==t.key||this._triggerBackdropTransition()}):P.off(this._element,"keydown.dismiss.bs.modal")}_setResizeEvent(){this._isShown?P.on(window,"resize.bs.modal",()=>this._adjustDialog()):P.off(window,"resize.bs.modal")}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._showBackdrop(()=>{document.body.classList.remove("modal-open"),this._resetAdjustments(),this._resetScrollbar(),P.trigger(this._element,"hidden.bs.modal")})}_removeBackdrop(){this._backdrop.parentNode.removeChild(this._backdrop),this._backdrop=null}_showBackdrop(t){const e=this._isAnimated();if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className="modal-backdrop",e&&this._backdrop.classList.add("fade"),document.body.appendChild(this._backdrop),P.on(this._element,"click.dismiss.bs.modal",t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===this._config.backdrop?this._triggerBackdropTransition():this.hide())}),e&&m(this._backdrop),this._backdrop.classList.add("show"),!e)return void t();const s=a(this._backdrop);P.one(this._backdrop,"transitionend",t),h(this._backdrop,s)}else if(!this._isShown&&this._backdrop){this._backdrop.classList.remove("show");const s=()=>{this._removeBackdrop(),t()};if(e){const t=a(this._backdrop);P.one(this._backdrop,"transitionend",s),h(this._backdrop,t)}else s()}else t()}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(P.trigger(this._element,"hidePrevented.bs.modal").defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight;t||(this._element.style.overflowY="hidden"),this._element.classList.add("modal-static");const e=a(this._dialog);P.off(this._element,"transitionend"),P.one(this._element,"transitionend",()=>{this._element.classList.remove("modal-static"),t||(P.one(this._element,"transitionend",()=>{this._element.style.overflowY=""}),h(this._element,e))}),h(this._element,e),this._element.focus()}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight;(!this._isBodyOverflowing&&t&&!b()||this._isBodyOverflowing&&!t&&b())&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),(this._isBodyOverflowing&&!t&&!b()||!this._isBodyOverflowing&&t&&b())&&(this._element.style.paddingRight=this._scrollbarWidth+"px")}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}_checkScrollbar(){const t=document.body.getBoundingClientRect();this._isBodyOverflowing=Math.round(t.left+t.right)t+this._scrollbarWidth),this._setElementAttributes(".sticky-top","marginRight",t=>t-this._scrollbarWidth),this._setElementAttributes("body","paddingRight",t=>t+this._scrollbarWidth)),document.body.classList.add("modal-open")}_setElementAttributes(t,e,s){U.find(t).forEach(t=>{if(t!==document.body&&window.innerWidth>t.clientWidth+this._scrollbarWidth)return;const i=t.style[e],n=window.getComputedStyle(t)[e];$.setDataAttribute(t,e,i),t.style[e]=s(Number.parseFloat(n))+"px"})}_resetScrollbar(){this._resetElementAttributes(".fixed-top, .fixed-bottom, .is-fixed, .sticky-top","paddingRight"),this._resetElementAttributes(".sticky-top","marginRight"),this._resetElementAttributes("body","paddingRight")}_resetElementAttributes(t,e){U.find(t).forEach(t=>{const s=$.getDataAttribute(t,e);void 0===s&&t===document.body?t.style[e]="":($.removeDataAttribute(t,e),t.style[e]=s)})}_getScrollbarWidth(){const t=document.createElement("div");t.className="modal-scrollbar-measure",document.body.appendChild(t);const e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e}static jQueryInterface(t,e){return this.each((function(){let s=w.get(this,"bs.modal");const i={...ct,...$.getDataAttributes(this),..."object"==typeof t&&t?t:{}};if(s||(s=new dt(this,i)),"string"==typeof t){if(void 0===s[t])throw new TypeError(`No method named "${t}"`);s[t](e)}}))}}P.on(document,"click.bs.modal.data-api",'[data-bs-toggle="modal"]',(function(t){const e=r(this);"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault(),P.one(e,"show.bs.modal",t=>{t.defaultPrevented||P.one(e,"hidden.bs.modal",()=>{u(this)&&this.focus()})});let s=w.get(e,"bs.modal");if(!s){const t={...$.getDataAttributes(e),...$.getDataAttributes(this)};s=new dt(e,t)}s.toggle(this)})),v("modal",dt);const ut=()=>{const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)},gt=(t,e,s)=>{const i=ut();U.find(t).forEach(t=>{if(t!==document.body&&window.innerWidth>t.clientWidth+i)return;const n=t.style[e],o=window.getComputedStyle(t)[e];$.setDataAttribute(t,e,n),t.style[e]=s(Number.parseFloat(o))+"px"})},ft=(t,e)=>{U.find(t).forEach(t=>{const s=$.getDataAttribute(t,e);void 0===s&&t===document.body?t.style.removeProperty(e):($.removeDataAttribute(t,e),t.style[e]=s)})},pt={backdrop:!0,keyboard:!0,scroll:!1},mt={backdrop:"boolean",keyboard:"boolean",scroll:"boolean"};class _t extends M{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._addEventListeners()}static get Default(){return pt}static get DATA_KEY(){return"bs.offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||P.trigger(this._element,"show.bs.offcanvas",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility="visible",this._config.backdrop&&document.body.classList.add("offcanvas-backdrop"),this._config.scroll||((t=ut())=>{document.body.style.overflow="hidden",gt(".fixed-top, .fixed-bottom, .is-fixed","paddingRight",e=>e+t),gt(".sticky-top","marginRight",e=>e-t),gt("body","paddingRight",e=>e+t)})(),this._element.classList.add("offcanvas-toggling"),this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add("show"),setTimeout(()=>{this._element.classList.remove("offcanvas-toggling"),P.trigger(this._element,"shown.bs.offcanvas",{relatedTarget:t}),this._enforceFocusOnElement(this._element)},a(this._element)))}hide(){this._isShown&&(P.trigger(this._element,"hide.bs.offcanvas").defaultPrevented||(this._element.classList.add("offcanvas-toggling"),P.off(document,"focusin.bs.offcanvas"),this._element.blur(),this._isShown=!1,this._element.classList.remove("show"),setTimeout(()=>{this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._element.style.visibility="hidden",this._config.backdrop&&document.body.classList.remove("offcanvas-backdrop"),this._config.scroll||(document.body.style.overflow="auto",ft(".fixed-top, .fixed-bottom, .is-fixed","paddingRight"),ft(".sticky-top","marginRight"),ft("body","paddingRight")),P.trigger(this._element,"hidden.bs.offcanvas"),this._element.classList.remove("offcanvas-toggling")},a(this._element))))}_getConfig(t){return t={...pt,...$.getDataAttributes(this._element),..."object"==typeof t?t:{}},d("offcanvas",t,mt),t}_enforceFocusOnElement(t){P.off(document,"focusin.bs.offcanvas"),P.on(document,"focusin.bs.offcanvas",e=>{document===e.target||t===e.target||t.contains(e.target)||t.focus()}),t.focus()}_addEventListeners(){P.on(this._element,"click.dismiss.bs.offcanvas",'[data-bs-dismiss="offcanvas"]',()=>this.hide()),P.on(document,"keydown",t=>{this._config.keyboard&&"Escape"===t.key&&this.hide()}),P.on(document,"click.bs.offcanvas.data-api",t=>{const e=U.findOne(o(t.target));this._element.contains(t.target)||e===this._element||this.hide()})}static jQueryInterface(t){return this.each((function(){const e=w.get(this,"bs.offcanvas")||new _t(this,"object"==typeof t?t:{});if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}P.on(document,"click.bs.offcanvas.data-api",'[data-bs-toggle="offcanvas"]',(function(t){const e=r(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),g(this))return;P.one(e,"hidden.bs.offcanvas",()=>{u(this)&&this.focus()});const s=U.findOne(".offcanvas.show, .offcanvas-toggling");s&&s!==e||(w.get(e,"bs.offcanvas")||new _t(e)).toggle(this)})),P.on(window,"load.bs.offcanvas.data-api",()=>{U.find(".offcanvas.show").forEach(t=>(w.get(t,"bs.offcanvas")||new _t(t)).show())}),v("offcanvas",_t);const bt=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),vt=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,yt=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,wt=(t,e)=>{const s=t.nodeName.toLowerCase();if(e.includes(s))return!bt.has(s)||Boolean(vt.test(t.nodeValue)||yt.test(t.nodeValue));const i=e.filter(t=>t instanceof RegExp);for(let t=0,e=i.length;t{wt(t,a)||s.removeAttribute(t.nodeName)})}return i.body.innerHTML}const Tt=new RegExp("(^|\\s)bs-tooltip\\S+","g"),At=new Set(["sanitize","allowList","sanitizeFn"]),Lt={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(array|string|function)",container:"(string|element|boolean)",fallbackPlacements:"array",boundary:"(string|element)",customClass:"(string|function)",sanitize:"boolean",sanitizeFn:"(null|function)",allowList:"object",popperConfig:"(null|object|function)"},kt={AUTO:"auto",TOP:"top",RIGHT:b()?"left":"right",BOTTOM:"bottom",LEFT:b()?"right":"left"},Ct={animation:!0,template:'',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:[0,0],container:!1,fallbackPlacements:["top","right","bottom","left"],boundary:"clippingParents",customClass:"",sanitize:!0,sanitizeFn:null,allowList:{"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Dt={HIDE:"hide.bs.tooltip",HIDDEN:"hidden.bs.tooltip",SHOW:"show.bs.tooltip",SHOWN:"shown.bs.tooltip",INSERTED:"inserted.bs.tooltip",CLICK:"click.bs.tooltip",FOCUSIN:"focusin.bs.tooltip",FOCUSOUT:"focusout.bs.tooltip",MOUSEENTER:"mouseenter.bs.tooltip",MOUSELEAVE:"mouseleave.bs.tooltip"};class St extends M{constructor(t,e){if(void 0===s)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return Ct}static get NAME(){return"tooltip"}static get DATA_KEY(){return"bs.tooltip"}static get Event(){return Dt}static get EVENT_KEY(){return".bs.tooltip"}static get DefaultType(){return Lt}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains("show"))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),P.off(this._element,this.constructor.EVENT_KEY),P.off(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.tip&&this.tip.parentNode&&this.tip.parentNode.removeChild(this.tip),this._isEnabled=null,this._timeout=null,this._hoverState=null,this._activeTrigger=null,this._popper&&this._popper.destroy(),this._popper=null,this.config=null,this.tip=null,super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this.isWithContent()||!this._isEnabled)return;const t=P.trigger(this._element,this.constructor.Event.SHOW),e=f(this._element),n=null===e?this._element.ownerDocument.documentElement.contains(this._element):e.contains(this._element);if(t.defaultPrevented||!n)return;const o=this.getTipElement(),r=i(this.constructor.NAME);o.setAttribute("id",r),this._element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&o.classList.add("fade");const l="function"==typeof this.config.placement?this.config.placement.call(this,o,this._element):this.config.placement,c=this._getAttachment(l);this._addAttachmentClass(c);const d=this._getContainer();w.set(o,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(d.appendChild(o),P.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=s.createPopper(this._element,o,this._getPopperConfig(c)),o.classList.add("show");const u="function"==typeof this.config.customClass?this.config.customClass():this.config.customClass;u&&o.classList.add(...u.split(" ")),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>{P.on(t,"mouseover",(function(){}))});const g=()=>{const t=this._hoverState;this._hoverState=null,P.trigger(this._element,this.constructor.Event.SHOWN),"out"===t&&this._leave(null,this)};if(this.tip.classList.contains("fade")){const t=a(this.tip);P.one(this.tip,"transitionend",g),h(this.tip,t)}else g()}hide(){if(!this._popper)return;const t=this.getTipElement(),e=()=>{this._isWithActiveTrigger()||("show"!==this._hoverState&&t.parentNode&&t.parentNode.removeChild(t),this._cleanTipClass(),this._element.removeAttribute("aria-describedby"),P.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))};if(!P.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented){if(t.classList.remove("show"),"ontouchstart"in document.documentElement&&[].concat(...document.body.children).forEach(t=>P.off(t,"mouseover",p)),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1,this.tip.classList.contains("fade")){const s=a(t);P.one(t,"transitionend",e),h(t,s)}else e();this._hoverState=""}}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement("div");return t.innerHTML=this.config.template,this.tip=t.children[0],this.tip}setContent(){const t=this.getTipElement();this.setElementContent(U.findOne(".tooltip-inner",t),this.getTitle()),t.classList.remove("fade","show")}setElementContent(t,e){if(null!==t)return"object"==typeof e&&c(e)?(e.jquery&&(e=e[0]),void(this.config.html?e.parentNode!==t&&(t.innerHTML="",t.appendChild(e)):t.textContent=e.textContent)):void(this.config.html?(this.config.sanitize&&(e=Et(e,this.config.allowList,this.config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){let t=this._element.getAttribute("data-bs-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this._element):this.config.title),t}updateAttachment(t){return"right"===t?"end":"left"===t?"start":t}_initializeOnDelegatedTarget(t,e){const s=this.constructor.DATA_KEY;return(e=e||w.get(t.delegateTarget,s))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),w.set(t.delegateTarget,s,e)),e}_getOffset(){const{offset:t}=this.config;return"string"==typeof t?t.split(",").map(t=>Number.parseInt(t,10)):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{altBoundary:!0,fallbackPlacements:this.config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this.config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"onChange",enabled:!0,phase:"afterWrite",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,..."function"==typeof this.config.popperConfig?this.config.popperConfig(e):this.config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add("bs-tooltip-"+this.updateAttachment(t))}_getContainer(){return!1===this.config.container?document.body:c(this.config.container)?this.config.container:U.findOne(this.config.container)}_getAttachment(t){return kt[t.toUpperCase()]}_setListeners(){this.config.trigger.split(" ").forEach(t=>{if("click"===t)P.on(this._element,this.constructor.Event.CLICK,this.config.selector,t=>this.toggle(t));else if("manual"!==t){const e="hover"===t?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,s="hover"===t?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;P.on(this._element,e,this.config.selector,t=>this._enter(t)),P.on(this._element,s,this.config.selector,t=>this._leave(t))}}),this._hideModalHandler=()=>{this._element&&this.hide()},P.on(this._element.closest(".modal"),"hide.bs.modal",this._hideModalHandler),this.config.selector?this.config={...this.config,trigger:"manual",selector:""}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute("title"),e=typeof this._element.getAttribute("data-bs-original-title");(t||"string"!==e)&&(this._element.setAttribute("data-bs-original-title",t||""),!t||this._element.getAttribute("aria-label")||this._element.textContent||this._element.setAttribute("aria-label",t),this._element.setAttribute("title",""))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusin"===t.type?"focus":"hover"]=!0),e.getTipElement().classList.contains("show")||"show"===e._hoverState?e._hoverState="show":(clearTimeout(e._timeout),e._hoverState="show",e.config.delay&&e.config.delay.show?e._timeout=setTimeout(()=>{"show"===e._hoverState&&e.show()},e.config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger["focusout"===t.type?"focus":"hover"]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState="out",e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(()=>{"out"===e._hoverState&&e.hide()},e.config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=$.getDataAttributes(this._element);return Object.keys(e).forEach(t=>{At.has(t)&&delete e[t]}),t&&"object"==typeof t.container&&t.container.jquery&&(t.container=t.container[0]),"number"==typeof(t={...this.constructor.Default,...e,..."object"==typeof t&&t?t:{}}).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),d("tooltip",t,this.constructor.DefaultType),t.sanitize&&(t.template=Et(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};if(this.config)for(const e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(Tt);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}static jQueryInterface(t){return this.each((function(){let e=w.get(this,"bs.tooltip");const s="object"==typeof t&&t;if((e||!/dispose|hide/.test(t))&&(e||(e=new St(this,s)),"string"==typeof t)){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}v("tooltip",St);const Nt=new RegExp("(^|\\s)bs-popover\\S+","g"),Ot={...St.Default,placement:"right",offset:[0,8],trigger:"click",content:"",template:''},xt={...St.DefaultType,content:"(string|element|function)"},It={HIDE:"hide.bs.popover",HIDDEN:"hidden.bs.popover",SHOW:"show.bs.popover",SHOWN:"shown.bs.popover",INSERTED:"inserted.bs.popover",CLICK:"click.bs.popover",FOCUSIN:"focusin.bs.popover",FOCUSOUT:"focusout.bs.popover",MOUSEENTER:"mouseenter.bs.popover",MOUSELEAVE:"mouseleave.bs.popover"};class jt extends St{static get Default(){return Ot}static get NAME(){return"popover"}static get DATA_KEY(){return"bs.popover"}static get Event(){return It}static get EVENT_KEY(){return".bs.popover"}static get DefaultType(){return xt}isWithContent(){return this.getTitle()||this._getContent()}setContent(){const t=this.getTipElement();this.setElementContent(U.findOne(".popover-header",t),this.getTitle());let e=this._getContent();"function"==typeof e&&(e=e.call(this._element)),this.setElementContent(U.findOne(".popover-body",t),e),t.classList.remove("fade","show")}_addAttachmentClass(t){this.getTipElement().classList.add("bs-popover-"+this.updateAttachment(t))}_getContent(){return this._element.getAttribute("data-bs-content")||this.config.content}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute("class").match(Nt);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}static jQueryInterface(t){return this.each((function(){let e=w.get(this,"bs.popover");const s="object"==typeof t?t:null;if((e||!/dispose|hide/.test(t))&&(e||(e=new jt(this,s),w.set(this,"bs.popover",e)),"string"==typeof t)){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}v("popover",jt);const Pt={offset:10,method:"auto",target:""},Mt={offset:"number",method:"string",target:"(string|element)"};class Ht extends M{constructor(t,e){super(t),this._scrollElement="BODY"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._selector=`${this._config.target} .nav-link, ${this._config.target} .list-group-item, ${this._config.target} .dropdown-item`,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,P.on(this._scrollElement,"scroll.bs.scrollspy",()=>this._process()),this.refresh(),this._process()}static get Default(){return Pt}static get DATA_KEY(){return"bs.scrollspy"}refresh(){const t=this._scrollElement===this._scrollElement.window?"offset":"position",e="auto"===this._config.method?t:this._config.method,s="position"===e?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),U.find(this._selector).map(t=>{const i=o(t),n=i?U.findOne(i):null;if(n){const t=n.getBoundingClientRect();if(t.width||t.height)return[$[e](n).top+s,i]}return null}).filter(t=>t).sort((t,e)=>t[0]-e[0]).forEach(t=>{this._offsets.push(t[0]),this._targets.push(t[1])})}dispose(){super.dispose(),P.off(this._scrollElement,".bs.scrollspy"),this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null}_getConfig(t){if("string"!=typeof(t={...Pt,..."object"==typeof t&&t?t:{}}).target&&c(t.target)){let{id:e}=t.target;e||(e=i("scrollspy"),t.target.id=e),t.target="#"+e}return d("scrollspy",t,Mt),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),s=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=s){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t`${e}[data-bs-target="${t}"],${e}[href="${t}"]`),s=U.findOne(e.join(","));s.classList.contains("dropdown-item")?(U.findOne(".dropdown-toggle",s.closest(".dropdown")).classList.add("active"),s.classList.add("active")):(s.classList.add("active"),U.parents(s,".nav, .list-group").forEach(t=>{U.prev(t,".nav-link, .list-group-item").forEach(t=>t.classList.add("active")),U.prev(t,".nav-item").forEach(t=>{U.children(t,".nav-link").forEach(t=>t.classList.add("active"))})})),P.trigger(this._scrollElement,"activate.bs.scrollspy",{relatedTarget:t})}_clear(){U.find(this._selector).filter(t=>t.classList.contains("active")).forEach(t=>t.classList.remove("active"))}static jQueryInterface(t){return this.each((function(){let e=w.get(this,"bs.scrollspy");if(e||(e=new Ht(this,"object"==typeof t&&t)),"string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(window,"load.bs.scrollspy.data-api",()=>{U.find('[data-bs-spy="scroll"]').forEach(t=>new Ht(t,$.getDataAttributes(t)))}),v("scrollspy",Ht);class Rt extends M{static get DATA_KEY(){return"bs.tab"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains("active")||g(this._element))return;let t;const e=r(this._element),s=this._element.closest(".nav, .list-group");if(s){const e="UL"===s.nodeName||"OL"===s.nodeName?":scope > li > .active":".active";t=U.find(e,s),t=t[t.length-1]}const i=t?P.trigger(t,"hide.bs.tab",{relatedTarget:this._element}):null;if(P.trigger(this._element,"show.bs.tab",{relatedTarget:t}).defaultPrevented||null!==i&&i.defaultPrevented)return;this._activate(this._element,s);const n=()=>{P.trigger(t,"hidden.bs.tab",{relatedTarget:this._element}),P.trigger(this._element,"shown.bs.tab",{relatedTarget:t})};e?this._activate(e,e.parentNode,n):n()}_activate(t,e,s){const i=(!e||"UL"!==e.nodeName&&"OL"!==e.nodeName?U.children(e,".active"):U.find(":scope > li > .active",e))[0],n=s&&i&&i.classList.contains("fade"),o=()=>this._transitionComplete(t,i,s);if(i&&n){const t=a(i);i.classList.remove("show"),P.one(i,"transitionend",o),h(i,t)}else o()}_transitionComplete(t,e,s){if(e){e.classList.remove("active");const t=U.findOne(":scope > .dropdown-menu .active",e.parentNode);t&&t.classList.remove("active"),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}t.classList.add("active"),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),m(t),t.classList.contains("fade")&&t.classList.add("show"),t.parentNode&&t.parentNode.classList.contains("dropdown-menu")&&(t.closest(".dropdown")&&U.find(".dropdown-toggle").forEach(t=>t.classList.add("active")),t.setAttribute("aria-expanded",!0)),s&&s()}static jQueryInterface(t){return this.each((function(){const e=w.get(this,"bs.tab")||new Rt(this);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}P.on(document,"click.bs.tab.data-api",'[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',(function(t){t.preventDefault(),(w.get(this,"bs.tab")||new Rt(this)).show()})),v("tab",Rt);const Bt={animation:"boolean",autohide:"boolean",delay:"number"},Wt={animation:!0,autohide:!0,delay:5e3};class $t extends M{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._setListeners()}static get DefaultType(){return Bt}static get Default(){return Wt}static get DATA_KEY(){return"bs.toast"}show(){if(P.trigger(this._element,"show.bs.toast").defaultPrevented)return;this._clearTimeout(),this._config.animation&&this._element.classList.add("fade");const t=()=>{this._element.classList.remove("showing"),this._element.classList.add("show"),P.trigger(this._element,"shown.bs.toast"),this._config.autohide&&(this._timeout=setTimeout(()=>{this.hide()},this._config.delay))};if(this._element.classList.remove("hide"),m(this._element),this._element.classList.add("showing"),this._config.animation){const e=a(this._element);P.one(this._element,"transitionend",t),h(this._element,e)}else t()}hide(){if(!this._element.classList.contains("show"))return;if(P.trigger(this._element,"hide.bs.toast").defaultPrevented)return;const t=()=>{this._element.classList.add("hide"),P.trigger(this._element,"hidden.bs.toast")};if(this._element.classList.remove("show"),this._config.animation){const e=a(this._element);P.one(this._element,"transitionend",t),h(this._element,e)}else t()}dispose(){this._clearTimeout(),this._element.classList.contains("show")&&this._element.classList.remove("show"),P.off(this._element,"click.dismiss.bs.toast"),super.dispose(),this._config=null}_getConfig(t){return t={...Wt,...$.getDataAttributes(this._element),..."object"==typeof t&&t?t:{}},d("toast",t,this.constructor.DefaultType),t}_setListeners(){P.on(this._element,"click.dismiss.bs.toast",'[data-bs-dismiss="toast"]',()=>this.hide())}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){let e=w.get(this,"bs.toast");if(e||(e=new $t(this,"object"==typeof t&&t)),"string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}return v("toast",$t),{Alert:H,Button:R,Carousel:X,Collapse:Z,Dropdown:lt,Modal:dt,Offcanvas:_t,Popover:jt,ScrollSpy:Ht,Tab:Rt,Toast:$t,Tooltip:St}})); +//# sourceMappingURL=bootstrap.min.js.map \ No newline at end of file diff --git a/public/front/js/bootstrap.min.js.map b/public/front/js/bootstrap.min.js.map new file mode 100644 index 00000000..2a317b1c --- /dev/null +++ b/public/front/js/bootstrap.min.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["../../js/src/util/index.js","../../js/src/dom/data.js","../../js/src/dom/event-handler.js","../../js/src/base-component.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/dom/manipulator.js","../../js/src/dom/selector-engine.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/util/scrollbar.js","../../js/src/offcanvas.js","../../js/src/util/sanitizer.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/toast.js","../../js/index.umd.js"],"names":["getUID","prefix","Math","floor","random","document","getElementById","getSelector","element","selector","getAttribute","hrefAttr","includes","startsWith","split","trim","getSelectorFromElement","querySelector","getElementFromSelector","getTransitionDurationFromElement","transitionDuration","transitionDelay","window","getComputedStyle","floatTransitionDuration","Number","parseFloat","floatTransitionDelay","triggerTransitionEnd","dispatchEvent","Event","isElement","obj","nodeType","emulateTransitionEnd","duration","called","emulatedDuration","addEventListener","listener","removeEventListener","setTimeout","typeCheckConfig","componentName","config","configTypes","Object","keys","forEach","property","expectedTypes","value","valueType","toString","call","match","toLowerCase","RegExp","test","TypeError","toUpperCase","isVisible","style","parentNode","elementStyle","parentNodeStyle","display","visibility","isDisabled","Node","ELEMENT_NODE","classList","contains","disabled","hasAttribute","findShadowRoot","documentElement","attachShadow","getRootNode","root","ShadowRoot","noop","reflow","offsetHeight","getjQuery","jQuery","body","isRTL","dir","defineJQueryPlugin","name","plugin","callback","$","JQUERY_NO_CONFLICT","fn","jQueryInterface","Constructor","noConflict","readyState","elementMap","Map","Data","set","key","instance","has","instanceMap","get","size","console","error","Array","from","remove","delete","namespaceRegex","stripNameRegex","stripUidRegex","eventRegistry","uidEvent","customEvents","mouseenter","mouseleave","nativeEvents","Set","getUidEvent","uid","getEvent","findHandler","events","handler","delegationSelector","uidEventList","i","len","length","event","originalHandler","normalizeParams","originalTypeEvent","delegationFn","delegation","typeEvent","replace","custom","addHandler","oneOff","handlers","previousFn","domElements","querySelectorAll","target","this","delegateTarget","EventHandler","off","type","apply","bootstrapDelegationHandler","bootstrapHandler","removeHandler","Boolean","on","one","inNamespace","isNamespace","elementEvent","namespace","storeElementEvent","handlerKey","removeNamespacedHandlers","slice","keyHandlers","trigger","args","isNative","jQueryEvent","bubbles","nativeDispatch","defaultPrevented","evt","isPropagationStopped","isImmediatePropagationStopped","isDefaultPrevented","createEvent","initEvent","CustomEvent","cancelable","defineProperty","preventDefault","BaseComponent","constructor","_element","DATA_KEY","dispose","[object Object]","VERSION","Alert","close","rootElement","_getRootElement","customEvent","_triggerCloseEvent","_removeElement","closest","_destroyElement","removeChild","each","data","alertInstance","handleDismiss","Button","toggle","setAttribute","normalizeData","val","normalizeDataKey","chr","button","Manipulator","setDataAttribute","removeDataAttribute","removeAttribute","getDataAttributes","attributes","dataset","filter","pureKey","charAt","getDataAttribute","offset","rect","getBoundingClientRect","top","scrollTop","left","scrollLeft","position","offsetTop","offsetLeft","SelectorEngine","find","concat","Element","prototype","findOne","children","child","matches","parents","ancestor","push","prev","previous","previousElementSibling","next","nextElementSibling","Default","interval","keyboard","slide","pause","wrap","touch","DefaultType","ORDER_NEXT","ORDER_PREV","DIRECTION_LEFT","DIRECTION_RIGHT","Carousel","super","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","touchStartX","touchDeltaX","_config","_getConfig","_indicatorsElement","_touchSupported","navigator","maxTouchPoints","_pointerEvent","PointerEvent","_addEventListeners","_slide","nextWhenVisible","hidden","cycle","clearInterval","_updateInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","order","_handleSwipe","absDeltax","abs","direction","_keydown","_addTouchEventListeners","start","pointerType","touches","clientX","move","end","clearTimeout","itemImg","e","add","tagName","indexOf","_getItemByOrder","activeElement","isNext","isPrev","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","_setActiveIndicatorElement","activeIndicator","indicators","parseInt","elementInterval","defaultInterval","directionOrOrder","_directionToOrder","activeElementIndex","nextElement","nextElementIndex","isCycling","directionalClassName","orderClassName","_orderToDirection","action","ride","carouselInterface","slideIndex","dataApiClickHandler","carousels","parent","Collapse","_isTransitioning","_triggerArray","id","toggleList","elem","filterElement","foundElem","_selector","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","container","tempActiveData","elemActive","collapseInterface","dimension","_getDimension","setTransitioning","scrollSize","triggerArrayLength","isTransitioning","jquery","selected","triggerArray","isOpen","triggerData","REGEXP_KEYDOWN","PLACEMENT_TOP","PLACEMENT_TOPEND","PLACEMENT_BOTTOM","PLACEMENT_BOTTOMEND","PLACEMENT_RIGHT","PLACEMENT_LEFT","boundary","reference","popperConfig","Dropdown","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","isActive","clearMenus","getParentFromElement","Popper","referenceElement","_getPopperConfig","isDisplayStatic","modifiers","modifier","enabled","createPopper","focus","destroy","update","_getPlacement","parentDropdown","isEnd","getPropertyValue","_getOffset","map","popperData","defaultBsPopperConfig","placement","options","dropdownInterface","toggles","context","clickEvent","dropdownMenu","some","composedPath","stopPropagation","click","items","dataApiKeydownHandler","backdrop","Modal","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_isAnimated","showEvent","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","isAnimated","_hideModal","htmlElement","handleUpdate","modalBody","appendChild","_enforceFocus","transitionComplete","_triggerBackdropTransition","_resetAdjustments","_resetScrollbar","_removeBackdrop","createElement","className","currentTarget","backdropTransitionDuration","callbackRemove","isModalOverflowing","scrollHeight","clientHeight","overflowY","modalTransitionDuration","paddingLeft","paddingRight","round","right","innerWidth","_getScrollbarWidth","_setElementAttributes","calculatedValue","styleProp","clientWidth","actualValue","_resetElementAttributes","scrollDiv","scrollbarWidth","width","getWidth","documentWidth","removeProperty","scroll","Offcanvas","overflow","scrollBarHide","_enforceFocusOnElement","blur","undefined","allReadyOpen","el","uriAttrs","SAFE_URL_PATTERN","DATA_URL_PATTERN","allowedAttribute","attr","allowedAttributeList","attrName","nodeName","nodeValue","regExp","attrRegex","sanitizeHtml","unsafeHtml","allowList","sanitizeFn","createdDocument","DOMParser","parseFromString","allowlistKeys","elements","elName","attributeList","allowedAttributes","innerHTML","BSCLS_PREFIX_REGEX","DISALLOWED_ATTRIBUTES","animation","template","title","delay","html","fallbackPlacements","customClass","sanitize","AttachmentMap","AUTO","TOP","RIGHT","BOTTOM","LEFT","*","a","area","b","br","col","code","div","em","hr","h1","h2","h3","h4","h5","h6","img","li","ol","p","pre","s","small","span","sub","sup","strong","u","ul","HIDE","HIDDEN","SHOW","SHOWN","INSERTED","CLICK","FOCUSIN","FOCUSOUT","MOUSEENTER","MOUSELEAVE","Tooltip","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","NAME","EVENT_KEY","enable","disable","toggleEnabled","_initializeOnDelegatedTarget","_isWithActiveTrigger","_enter","_leave","getTipElement","_hideModalHandler","Error","isWithContent","shadowRoot","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","_addAttachmentClass","_getContainer","complete","prevHoverState","_cleanTipClass","getTitle","setElementContent","content","textContent","updateAttachment","dataKey","_getDelegateConfig","altBoundary","phase","_handlePopperPlacementChange","onFirstUpdate","eventIn","eventOut","_fixTitle","originalTitleType","dataAttributes","dataAttr","tabClass","token","tClass","state","popper","Popover","_getContent","method","ScrollSpy","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","targetSelector","targetBCR","height","item","sort","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","link","join","listGroup","navItem","node","spy","Tab","listElement","itemSelector","hideEvent","active","_transitionComplete","dropdownChild","dropdown","autohide","Toast","_clearTimeout"],"mappings":"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","sourcesContent":["/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst MAX_UID = 1000000\nconst MILLISECONDS_MULTIPLIER = 1000\nconst TRANSITION_END = 'transitionend'\n\n// Shoutout AngusCroll (https://goo.gl/pxwQGp)\nconst toType = obj => {\n if (obj === null || obj === undefined) {\n return `${obj}`\n }\n\n return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n}\n\n/**\n * --------------------------------------------------------------------------\n * Public Util Api\n * --------------------------------------------------------------------------\n */\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID)\n } while (document.getElementById(prefix))\n\n return prefix\n}\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target')\n\n if (!selector || selector === '#') {\n let hrefAttr = element.getAttribute('href')\n\n // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n if (!hrefAttr || (!hrefAttr.includes('#') && !hrefAttr.startsWith('.'))) {\n return null\n }\n\n // Just in case some CMS puts out a full URL with the anchor appended\n if (hrefAttr.includes('#') && !hrefAttr.startsWith('#')) {\n hrefAttr = '#' + hrefAttr.split('#')[1]\n }\n\n selector = hrefAttr && hrefAttr !== '#' ? hrefAttr.trim() : null\n }\n\n return selector\n}\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element)\n\n if (selector) {\n return document.querySelector(selector) ? selector : null\n }\n\n return null\n}\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element)\n\n return selector ? document.querySelector(selector) : null\n}\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0\n }\n\n // Get transition-duration of the element\n let { transitionDuration, transitionDelay } = window.getComputedStyle(element)\n\n const floatTransitionDuration = Number.parseFloat(transitionDuration)\n const floatTransitionDelay = Number.parseFloat(transitionDelay)\n\n // Return 0 if element or transition duration is not found\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0\n }\n\n // If multiple durations are defined, take the first\n transitionDuration = transitionDuration.split(',')[0]\n transitionDelay = transitionDelay.split(',')[0]\n\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER\n}\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END))\n}\n\nconst isElement = obj => (obj[0] || obj).nodeType\n\nconst emulateTransitionEnd = (element, duration) => {\n let called = false\n const durationPadding = 5\n const emulatedDuration = duration + durationPadding\n\n function listener() {\n called = true\n element.removeEventListener(TRANSITION_END, listener)\n }\n\n element.addEventListener(TRANSITION_END, listener)\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(element)\n }\n }, emulatedDuration)\n}\n\nconst typeCheckConfig = (componentName, config, configTypes) => {\n Object.keys(configTypes).forEach(property => {\n const expectedTypes = configTypes[property]\n const value = config[property]\n const valueType = value && isElement(value) ? 'element' : toType(value)\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(\n `${componentName.toUpperCase()}: ` +\n `Option \"${property}\" provided type \"${valueType}\" ` +\n `but expected type \"${expectedTypes}\".`\n )\n }\n })\n}\n\nconst isVisible = element => {\n if (!element) {\n return false\n }\n\n if (element.style && element.parentNode && element.parentNode.style) {\n const elementStyle = getComputedStyle(element)\n const parentNodeStyle = getComputedStyle(element.parentNode)\n\n return elementStyle.display !== 'none' &&\n parentNodeStyle.display !== 'none' &&\n elementStyle.visibility !== 'hidden'\n }\n\n return false\n}\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true\n }\n\n if (element.classList.contains('disabled')) {\n return true\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false'\n}\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null\n }\n\n // Can find the shadow root otherwise it'll return the document\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode()\n return root instanceof ShadowRoot ? root : null\n }\n\n if (element instanceof ShadowRoot) {\n return element\n }\n\n // when we don't find a shadow root\n if (!element.parentNode) {\n return null\n }\n\n return findShadowRoot(element.parentNode)\n}\n\nconst noop = () => function () {}\n\nconst reflow = element => element.offsetHeight\n\nconst getjQuery = () => {\n const { jQuery } = window\n\n if (jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return jQuery\n }\n\n return null\n}\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n document.addEventListener('DOMContentLoaded', callback)\n } else {\n callback()\n }\n}\n\nconst isRTL = () => document.documentElement.dir === 'rtl'\n\nconst defineJQueryPlugin = (name, plugin) => {\n onDOMContentLoaded(() => {\n const $ = getjQuery()\n /* istanbul ignore if */\n if ($) {\n const JQUERY_NO_CONFLICT = $.fn[name]\n $.fn[name] = plugin.jQueryInterface\n $.fn[name].Constructor = plugin\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT\n return plugin.jQueryInterface\n }\n }\n })\n}\n\nexport {\n getUID,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n triggerTransitionEnd,\n isElement,\n emulateTransitionEnd,\n typeCheckConfig,\n isVisible,\n isDisabled,\n findShadowRoot,\n noop,\n reflow,\n getjQuery,\n onDOMContentLoaded,\n isRTL,\n defineJQueryPlugin\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst elementMap = new Map()\n\nexport default {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map())\n }\n\n const instanceMap = elementMap.get(element)\n\n // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`)\n return\n }\n\n instanceMap.set(key, instance)\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null\n }\n\n return null\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return\n }\n\n const instanceMap = elementMap.get(element)\n\n instanceMap.delete(key)\n\n // free up element references if there are no instances left for an element\n if (instanceMap.size === 0) {\n elementMap.delete(element)\n }\n }\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { getjQuery } from '../util/index'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/\nconst stripNameRegex = /\\..*/\nconst stripUidRegex = /::\\d+$/\nconst eventRegistry = {} // Events storage\nlet uidEvent = 1\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n}\nconst nativeEvents = new Set([\n 'click',\n 'dblclick',\n 'mouseup',\n 'mousedown',\n 'contextmenu',\n 'mousewheel',\n 'DOMMouseScroll',\n 'mouseover',\n 'mouseout',\n 'mousemove',\n 'selectstart',\n 'selectend',\n 'keydown',\n 'keypress',\n 'keyup',\n 'orientationchange',\n 'touchstart',\n 'touchmove',\n 'touchend',\n 'touchcancel',\n 'pointerdown',\n 'pointermove',\n 'pointerup',\n 'pointerleave',\n 'pointercancel',\n 'gesturestart',\n 'gesturechange',\n 'gestureend',\n 'focus',\n 'blur',\n 'change',\n 'reset',\n 'select',\n 'submit',\n 'focusin',\n 'focusout',\n 'load',\n 'unload',\n 'beforeunload',\n 'resize',\n 'move',\n 'DOMContentLoaded',\n 'readystatechange',\n 'error',\n 'abort',\n 'scroll'\n])\n\n/**\n * ------------------------------------------------------------------------\n * Private methods\n * ------------------------------------------------------------------------\n */\n\nfunction getUidEvent(element, uid) {\n return (uid && `${uid}::${uidEvent++}`) || element.uidEvent || uidEvent++\n}\n\nfunction getEvent(element) {\n const uid = getUidEvent(element)\n\n element.uidEvent = uid\n eventRegistry[uid] = eventRegistry[uid] || {}\n\n return eventRegistry[uid]\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n event.delegateTarget = element\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(element, [event])\n }\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector)\n\n for (let { target } = event; target && target !== this; target = target.parentNode) {\n for (let i = domElements.length; i--;) {\n if (domElements[i] === target) {\n event.delegateTarget = target\n\n if (handler.oneOff) {\n // eslint-disable-next-line unicorn/consistent-destructuring\n EventHandler.off(element, event.type, fn)\n }\n\n return fn.apply(target, [event])\n }\n }\n }\n\n // To please ESLint\n return null\n }\n}\n\nfunction findHandler(events, handler, delegationSelector = null) {\n const uidEventList = Object.keys(events)\n\n for (let i = 0, len = uidEventList.length; i < len; i++) {\n const event = events[uidEventList[i]]\n\n if (event.originalHandler === handler && event.delegationSelector === delegationSelector) {\n return event\n }\n }\n\n return null\n}\n\nfunction normalizeParams(originalTypeEvent, handler, delegationFn) {\n const delegation = typeof handler === 'string'\n const originalHandler = delegation ? delegationFn : handler\n\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n let typeEvent = originalTypeEvent.replace(stripNameRegex, '')\n const custom = customEvents[typeEvent]\n\n if (custom) {\n typeEvent = custom\n }\n\n const isNative = nativeEvents.has(typeEvent)\n\n if (!isNative) {\n typeEvent = originalTypeEvent\n }\n\n return [delegation, originalHandler, typeEvent]\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFn, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n if (!handler) {\n handler = delegationFn\n delegationFn = null\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const events = getEvent(element)\n const handlers = events[typeEvent] || (events[typeEvent] = {})\n const previousFn = findHandler(handlers, originalHandler, delegation ? handler : null)\n\n if (previousFn) {\n previousFn.oneOff = previousFn.oneOff && oneOff\n\n return\n }\n\n const uid = getUidEvent(originalHandler, originalTypeEvent.replace(namespaceRegex, ''))\n const fn = delegation ?\n bootstrapDelegationHandler(element, handler, delegationFn) :\n bootstrapHandler(element, handler)\n\n fn.delegationSelector = delegation ? handler : null\n fn.originalHandler = originalHandler\n fn.oneOff = oneOff\n fn.uidEvent = uid\n handlers[uid] = fn\n\n element.addEventListener(typeEvent, fn, delegation)\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector)\n\n if (!fn) {\n return\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector))\n delete events[typeEvent][fn.uidEvent]\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {}\n\n Object.keys(storeElementEvent).forEach(handlerKey => {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, false)\n },\n\n one(element, event, handler, delegationFn) {\n addHandler(element, event, handler, delegationFn, true)\n },\n\n off(element, originalTypeEvent, handler, delegationFn) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return\n }\n\n const [delegation, originalHandler, typeEvent] = normalizeParams(originalTypeEvent, handler, delegationFn)\n const inNamespace = typeEvent !== originalTypeEvent\n const events = getEvent(element)\n const isNamespace = originalTypeEvent.startsWith('.')\n\n if (typeof originalHandler !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!events || !events[typeEvent]) {\n return\n }\n\n removeHandler(element, events, typeEvent, originalHandler, delegation ? handler : null)\n return\n }\n\n if (isNamespace) {\n Object.keys(events).forEach(elementEvent => {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1))\n })\n }\n\n const storeElementEvent = events[typeEvent] || {}\n Object.keys(storeElementEvent).forEach(keyHandlers => {\n const handlerKey = keyHandlers.replace(stripUidRegex, '')\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers]\n\n removeHandler(element, events, typeEvent, event.originalHandler, event.delegationSelector)\n }\n })\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null\n }\n\n const $ = getjQuery()\n const typeEvent = event.replace(stripNameRegex, '')\n const inNamespace = event !== typeEvent\n const isNative = nativeEvents.has(typeEvent)\n\n let jQueryEvent\n let bubbles = true\n let nativeDispatch = true\n let defaultPrevented = false\n let evt = null\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args)\n\n $(element).trigger(jQueryEvent)\n bubbles = !jQueryEvent.isPropagationStopped()\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped()\n defaultPrevented = jQueryEvent.isDefaultPrevented()\n }\n\n if (isNative) {\n evt = document.createEvent('HTMLEvents')\n evt.initEvent(typeEvent, bubbles, true)\n } else {\n evt = new CustomEvent(event, {\n bubbles,\n cancelable: true\n })\n }\n\n // merge custom information in our event\n if (typeof args !== 'undefined') {\n Object.keys(args).forEach(key => {\n Object.defineProperty(evt, key, {\n get() {\n return args[key]\n }\n })\n })\n }\n\n if (defaultPrevented) {\n evt.preventDefault()\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt)\n }\n\n if (evt.defaultPrevented && typeof jQueryEvent !== 'undefined') {\n jQueryEvent.preventDefault()\n }\n\n return evt\n }\n}\n\nexport default EventHandler\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport Data from './dom/data'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst VERSION = '5.0.0-beta3'\n\nclass BaseComponent {\n constructor(element) {\n element = typeof element === 'string' ? document.querySelector(element) : element\n\n if (!element) {\n return\n }\n\n this._element = element\n Data.set(this._element, this.constructor.DATA_KEY, this)\n }\n\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY)\n this._element = null\n }\n\n /** Static */\n\n static getInstance(element) {\n return Data.get(element, this.DATA_KEY)\n }\n\n static get VERSION() {\n return VERSION\n }\n}\n\nexport default BaseComponent\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'alert'\nconst DATA_KEY = 'bs.alert'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst SELECTOR_DISMISS = '[data-bs-dismiss=\"alert\"]'\n\nconst EVENT_CLOSE = `close${EVENT_KEY}`\nconst EVENT_CLOSED = `closed${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_ALERT = 'alert'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Alert extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n close(element) {\n const rootElement = element ? this._getRootElement(element) : this._element\n const customEvent = this._triggerCloseEvent(rootElement)\n\n if (customEvent === null || customEvent.defaultPrevented) {\n return\n }\n\n this._removeElement(rootElement)\n }\n\n // Private\n\n _getRootElement(element) {\n return getElementFromSelector(element) || element.closest(`.${CLASS_NAME_ALERT}`)\n }\n\n _triggerCloseEvent(element) {\n return EventHandler.trigger(element, EVENT_CLOSE)\n }\n\n _removeElement(element) {\n element.classList.remove(CLASS_NAME_SHOW)\n\n if (!element.classList.contains(CLASS_NAME_FADE)) {\n this._destroyElement(element)\n return\n }\n\n const transitionDuration = getTransitionDurationFromElement(element)\n\n EventHandler.one(element, 'transitionend', () => this._destroyElement(element))\n emulateTransitionEnd(element, transitionDuration)\n }\n\n _destroyElement(element) {\n if (element.parentNode) {\n element.parentNode.removeChild(element)\n }\n\n EventHandler.trigger(element, EVENT_CLOSED)\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.get(this, DATA_KEY)\n\n if (!data) {\n data = new Alert(this)\n }\n\n if (config === 'close') {\n data[config](this)\n }\n })\n }\n\n static handleDismiss(alertInstance) {\n return function (event) {\n if (event) {\n event.preventDefault()\n }\n\n alertInstance.close(this)\n }\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DISMISS, Alert.handleDismiss(new Alert()))\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Alert to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Alert)\n\nexport default Alert\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'button'\nconst DATA_KEY = 'bs.button'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"button\"]'\n\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Button extends BaseComponent {\n // Getters\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.get(this, DATA_KEY)\n\n if (!data) {\n data = new Button(this)\n }\n\n if (config === 'toggle') {\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, event => {\n event.preventDefault()\n\n const button = event.target.closest(SELECTOR_DATA_TOGGLE)\n\n let data = Data.get(button, DATA_KEY)\n if (!data) {\n data = new Button(button)\n }\n\n data.toggle()\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Button to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Button)\n\nexport default Button\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nfunction normalizeData(val) {\n if (val === 'true') {\n return true\n }\n\n if (val === 'false') {\n return false\n }\n\n if (val === Number(val).toString()) {\n return Number(val)\n }\n\n if (val === '' || val === 'null') {\n return null\n }\n\n return val\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`)\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value)\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`)\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {}\n }\n\n const attributes = {}\n\n Object.keys(element.dataset)\n .filter(key => key.startsWith('bs'))\n .forEach(key => {\n let pureKey = key.replace(/^bs/, '')\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length)\n attributes[pureKey] = normalizeData(element.dataset[key])\n })\n\n return attributes\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`))\n },\n\n offset(element) {\n const rect = element.getBoundingClientRect()\n\n return {\n top: rect.top + document.body.scrollTop,\n left: rect.left + document.body.scrollLeft\n }\n },\n\n position(element) {\n return {\n top: element.offsetTop,\n left: element.offsetLeft\n }\n }\n}\n\nexport default Manipulator\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NODE_TEXT = 3\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector))\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector)\n },\n\n children(element, selector) {\n return [].concat(...element.children)\n .filter(child => child.matches(selector))\n },\n\n parents(element, selector) {\n const parents = []\n\n let ancestor = element.parentNode\n\n while (ancestor && ancestor.nodeType === Node.ELEMENT_NODE && ancestor.nodeType !== NODE_TEXT) {\n if (ancestor.matches(selector)) {\n parents.push(ancestor)\n }\n\n ancestor = ancestor.parentNode\n }\n\n return parents\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous]\n }\n\n previous = previous.previousElementSibling\n }\n\n return []\n },\n\n next(element, selector) {\n let next = element.nextElementSibling\n\n while (next) {\n if (next.matches(selector)) {\n return [next]\n }\n\n next = next.nextElementSibling\n }\n\n return []\n }\n}\n\nexport default SelectorEngine\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isRTL,\n isVisible,\n reflow,\n triggerTransitionEnd,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'carousel'\nconst DATA_KEY = 'bs.carousel'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ARROW_LEFT_KEY = 'ArrowLeft'\nconst ARROW_RIGHT_KEY = 'ArrowRight'\nconst TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\nconst SWIPE_THRESHOLD = 40\n\nconst Default = {\n interval: 5000,\n keyboard: true,\n slide: false,\n pause: 'hover',\n wrap: true,\n touch: true\n}\n\nconst DefaultType = {\n interval: '(number|boolean)',\n keyboard: 'boolean',\n slide: '(boolean|string)',\n pause: '(string|boolean)',\n wrap: 'boolean',\n touch: 'boolean'\n}\n\nconst ORDER_NEXT = 'next'\nconst ORDER_PREV = 'prev'\nconst DIRECTION_LEFT = 'left'\nconst DIRECTION_RIGHT = 'right'\n\nconst EVENT_SLIDE = `slide${EVENT_KEY}`\nconst EVENT_SLID = `slid${EVENT_KEY}`\nconst EVENT_KEYDOWN = `keydown${EVENT_KEY}`\nconst EVENT_MOUSEENTER = `mouseenter${EVENT_KEY}`\nconst EVENT_MOUSELEAVE = `mouseleave${EVENT_KEY}`\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY}`\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY}`\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY}`\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY}`\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY}`\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_CAROUSEL = 'carousel'\nconst CLASS_NAME_ACTIVE = 'active'\nconst CLASS_NAME_SLIDE = 'slide'\nconst CLASS_NAME_END = 'carousel-item-end'\nconst CLASS_NAME_START = 'carousel-item-start'\nconst CLASS_NAME_NEXT = 'carousel-item-next'\nconst CLASS_NAME_PREV = 'carousel-item-prev'\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event'\n\nconst SELECTOR_ACTIVE = '.active'\nconst SELECTOR_ACTIVE_ITEM = '.active.carousel-item'\nconst SELECTOR_ITEM = '.carousel-item'\nconst SELECTOR_ITEM_IMG = '.carousel-item img'\nconst SELECTOR_NEXT_PREV = '.carousel-item-next, .carousel-item-prev'\nconst SELECTOR_INDICATORS = '.carousel-indicators'\nconst SELECTOR_INDICATOR = '[data-bs-target]'\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]'\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]'\n\nconst POINTER_TYPE_TOUCH = 'touch'\nconst POINTER_TYPE_PEN = 'pen'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._items = null\n this._interval = null\n this._activeElement = null\n this._isPaused = false\n this._isSliding = false\n this.touchTimeout = null\n this.touchStartX = 0\n this.touchDeltaX = 0\n\n this._config = this._getConfig(config)\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element)\n this._touchSupported = 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0\n this._pointerEvent = Boolean(window.PointerEvent)\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n next() {\n if (!this._isSliding) {\n this._slide(ORDER_NEXT)\n }\n }\n\n nextWhenVisible() {\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next()\n }\n }\n\n prev() {\n if (!this._isSliding) {\n this._slide(ORDER_PREV)\n }\n }\n\n pause(event) {\n if (!event) {\n this._isPaused = true\n }\n\n if (SelectorEngine.findOne(SELECTOR_NEXT_PREV, this._element)) {\n triggerTransitionEnd(this._element)\n this.cycle(true)\n }\n\n clearInterval(this._interval)\n this._interval = null\n }\n\n cycle(event) {\n if (!event) {\n this._isPaused = false\n }\n\n if (this._interval) {\n clearInterval(this._interval)\n this._interval = null\n }\n\n if (this._config && this._config.interval && !this._isPaused) {\n this._updateInterval()\n\n this._interval = setInterval(\n (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n this._config.interval\n )\n }\n }\n\n to(index) {\n this._activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeIndex = this._getItemIndex(this._activeElement)\n\n if (index > this._items.length - 1 || index < 0) {\n return\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index))\n return\n }\n\n if (activeIndex === index) {\n this.pause()\n this.cycle()\n return\n }\n\n const order = index > activeIndex ?\n ORDER_NEXT :\n ORDER_PREV\n\n this._slide(order, this._items[index])\n }\n\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n\n this._items = null\n this._config = null\n this._interval = null\n this._isPaused = null\n this._isSliding = null\n this._activeElement = null\n this._indicatorsElement = null\n\n super.dispose()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _handleSwipe() {\n const absDeltax = Math.abs(this.touchDeltaX)\n\n if (absDeltax <= SWIPE_THRESHOLD) {\n return\n }\n\n const direction = absDeltax / this.touchDeltaX\n\n this.touchDeltaX = 0\n\n if (!direction) {\n return\n }\n\n this._slide(direction > 0 ? DIRECTION_RIGHT : DIRECTION_LEFT)\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN, event => this._keydown(event))\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER, event => this.pause(event))\n EventHandler.on(this._element, EVENT_MOUSELEAVE, event => this.cycle(event))\n }\n\n if (this._config.touch && this._touchSupported) {\n this._addTouchEventListeners()\n }\n }\n\n _addTouchEventListeners() {\n const start = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchStartX = event.clientX\n } else if (!this._pointerEvent) {\n this.touchStartX = event.touches[0].clientX\n }\n }\n\n const move = event => {\n // ensure swiping with one touch and not pinching\n this.touchDeltaX = event.touches && event.touches.length > 1 ?\n 0 :\n event.touches[0].clientX - this.touchStartX\n }\n\n const end = event => {\n if (this._pointerEvent && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH)) {\n this.touchDeltaX = event.clientX - this.touchStartX\n }\n\n this._handleSwipe()\n if (this._config.pause === 'hover') {\n // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n this.pause()\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout)\n }\n\n this.touchTimeout = setTimeout(event => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n }\n }\n\n SelectorEngine.find(SELECTOR_ITEM_IMG, this._element).forEach(itemImg => {\n EventHandler.on(itemImg, EVENT_DRAG_START, e => e.preventDefault())\n })\n\n if (this._pointerEvent) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => start(event))\n EventHandler.on(this._element, EVENT_POINTERUP, event => end(event))\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT)\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => start(event))\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => move(event))\n EventHandler.on(this._element, EVENT_TOUCHEND, event => end(event))\n }\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return\n }\n\n if (event.key === ARROW_LEFT_KEY) {\n event.preventDefault()\n this._slide(DIRECTION_LEFT)\n } else if (event.key === ARROW_RIGHT_KEY) {\n event.preventDefault()\n this._slide(DIRECTION_RIGHT)\n }\n }\n\n _getItemIndex(element) {\n this._items = element && element.parentNode ?\n SelectorEngine.find(SELECTOR_ITEM, element.parentNode) :\n []\n\n return this._items.indexOf(element)\n }\n\n _getItemByOrder(order, activeElement) {\n const isNext = order === ORDER_NEXT\n const isPrev = order === ORDER_PREV\n const activeIndex = this._getItemIndex(activeElement)\n const lastItemIndex = this._items.length - 1\n const isGoingToWrap = (isPrev && activeIndex === 0) || (isNext && activeIndex === lastItemIndex)\n\n if (isGoingToWrap && !this._config.wrap) {\n return activeElement\n }\n\n const delta = isPrev ? -1 : 1\n const itemIndex = (activeIndex + delta) % this._items.length\n\n return itemIndex === -1 ?\n this._items[this._items.length - 1] :\n this._items[itemIndex]\n }\n\n _triggerSlideEvent(relatedTarget, eventDirectionName) {\n const targetIndex = this._getItemIndex(relatedTarget)\n const fromIndex = this._getItemIndex(SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element))\n\n return EventHandler.trigger(this._element, EVENT_SLIDE, {\n relatedTarget,\n direction: eventDirectionName,\n from: fromIndex,\n to: targetIndex\n })\n }\n\n _setActiveIndicatorElement(element) {\n if (this._indicatorsElement) {\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement)\n\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE)\n activeIndicator.removeAttribute('aria-current')\n\n const indicators = SelectorEngine.find(SELECTOR_INDICATOR, this._indicatorsElement)\n\n for (let i = 0; i < indicators.length; i++) {\n if (Number.parseInt(indicators[i].getAttribute('data-bs-slide-to'), 10) === this._getItemIndex(element)) {\n indicators[i].classList.add(CLASS_NAME_ACTIVE)\n indicators[i].setAttribute('aria-current', 'true')\n break\n }\n }\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n\n if (!element) {\n return\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10)\n\n if (elementInterval) {\n this._config.defaultInterval = this._config.defaultInterval || this._config.interval\n this._config.interval = elementInterval\n } else {\n this._config.interval = this._config.defaultInterval || this._config.interval\n }\n }\n\n _slide(directionOrOrder, element) {\n const order = this._directionToOrder(directionOrOrder)\n const activeElement = SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element)\n const activeElementIndex = this._getItemIndex(activeElement)\n const nextElement = element || this._getItemByOrder(order, activeElement)\n\n const nextElementIndex = this._getItemIndex(nextElement)\n const isCycling = Boolean(this._interval)\n\n const isNext = order === ORDER_NEXT\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV\n const eventDirectionName = this._orderToDirection(order)\n\n if (nextElement && nextElement.classList.contains(CLASS_NAME_ACTIVE)) {\n this._isSliding = false\n return\n }\n\n const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n if (slideEvent.defaultPrevented) {\n return\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n return\n }\n\n this._isSliding = true\n\n if (isCycling) {\n this.pause()\n }\n\n this._setActiveIndicatorElement(nextElement)\n this._activeElement = nextElement\n\n if (this._element.classList.contains(CLASS_NAME_SLIDE)) {\n nextElement.classList.add(orderClassName)\n\n reflow(nextElement)\n\n activeElement.classList.add(directionalClassName)\n nextElement.classList.add(directionalClassName)\n\n const transitionDuration = getTransitionDurationFromElement(activeElement)\n\n EventHandler.one(activeElement, 'transitionend', () => {\n nextElement.classList.remove(directionalClassName, orderClassName)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n activeElement.classList.remove(CLASS_NAME_ACTIVE, orderClassName, directionalClassName)\n\n this._isSliding = false\n\n setTimeout(() => {\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }, 0)\n })\n\n emulateTransitionEnd(activeElement, transitionDuration)\n } else {\n activeElement.classList.remove(CLASS_NAME_ACTIVE)\n nextElement.classList.add(CLASS_NAME_ACTIVE)\n\n this._isSliding = false\n EventHandler.trigger(this._element, EVENT_SLID, {\n relatedTarget: nextElement,\n direction: eventDirectionName,\n from: activeElementIndex,\n to: nextElementIndex\n })\n }\n\n if (isCycling) {\n this.cycle()\n }\n }\n\n _directionToOrder(direction) {\n if (![DIRECTION_RIGHT, DIRECTION_LEFT].includes(direction)) {\n return direction\n }\n\n if (isRTL()) {\n return direction === DIRECTION_RIGHT ? ORDER_PREV : ORDER_NEXT\n }\n\n return direction === DIRECTION_RIGHT ? ORDER_NEXT : ORDER_PREV\n }\n\n _orderToDirection(order) {\n if (![ORDER_NEXT, ORDER_PREV].includes(order)) {\n return order\n }\n\n if (isRTL()) {\n return order === ORDER_NEXT ? DIRECTION_LEFT : DIRECTION_RIGHT\n }\n\n return order === ORDER_NEXT ? DIRECTION_RIGHT : DIRECTION_LEFT\n }\n\n // Static\n\n static carouselInterface(element, config) {\n let data = Data.get(element, DATA_KEY)\n let _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element)\n }\n\n if (typeof config === 'object') {\n _config = {\n ..._config,\n ...config\n }\n }\n\n const action = typeof config === 'string' ? config : _config.slide\n\n if (!data) {\n data = new Carousel(element, _config)\n }\n\n if (typeof config === 'number') {\n data.to(config)\n } else if (typeof action === 'string') {\n if (typeof data[action] === 'undefined') {\n throw new TypeError(`No method named \"${action}\"`)\n }\n\n data[action]()\n } else if (_config.interval && _config.ride) {\n data.pause()\n data.cycle()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Carousel.carouselInterface(this, config)\n })\n }\n\n static dataApiClickHandler(event) {\n const target = getElementFromSelector(this)\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return\n }\n\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n const slideIndex = this.getAttribute('data-bs-slide-to')\n\n if (slideIndex) {\n config.interval = false\n }\n\n Carousel.carouselInterface(target, config)\n\n if (slideIndex) {\n Data.get(target, DATA_KEY).to(slideIndex)\n }\n\n event.preventDefault()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_SLIDE, Carousel.dataApiClickHandler)\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE)\n\n for (let i = 0, len = carousels.length; i < len; i++) {\n Carousel.carouselInterface(carousels[i], Data.get(carousels[i], DATA_KEY))\n }\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Carousel to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Carousel)\n\nexport default Carousel\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getSelectorFromElement,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isElement,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'collapse'\nconst DATA_KEY = 'bs.collapse'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n toggle: true,\n parent: ''\n}\n\nconst DefaultType = {\n toggle: 'boolean',\n parent: '(string|element)'\n}\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_COLLAPSE = 'collapse'\nconst CLASS_NAME_COLLAPSING = 'collapsing'\nconst CLASS_NAME_COLLAPSED = 'collapsed'\n\nconst WIDTH = 'width'\nconst HEIGHT = 'height'\n\nconst SELECTOR_ACTIVES = '.show, .collapsing'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"collapse\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._isTransitioning = false\n this._config = this._getConfig(config)\n this._triggerArray = SelectorEngine.find(\n `${SELECTOR_DATA_TOGGLE}[href=\"#${this._element.id}\"],` +\n `${SELECTOR_DATA_TOGGLE}[data-bs-target=\"#${this._element.id}\"]`\n )\n\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggleList.length; i < len; i++) {\n const elem = toggleList[i]\n const selector = getSelectorFromElement(elem)\n const filterElement = SelectorEngine.find(selector)\n .filter(foundElem => foundElem === this._element)\n\n if (selector !== null && filterElement.length) {\n this._selector = selector\n this._triggerArray.push(elem)\n }\n }\n\n this._parent = this._config.parent ? this._getParent() : null\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n }\n\n if (this._config.toggle) {\n this.toggle()\n }\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.classList.contains(CLASS_NAME_SHOW)) {\n this.hide()\n } else {\n this.show()\n }\n }\n\n show() {\n if (this._isTransitioning || this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n let actives\n let activesData\n\n if (this._parent) {\n actives = SelectorEngine.find(SELECTOR_ACTIVES, this._parent)\n .filter(elem => {\n if (typeof this._config.parent === 'string') {\n return elem.getAttribute('data-bs-parent') === this._config.parent\n }\n\n return elem.classList.contains(CLASS_NAME_COLLAPSE)\n })\n\n if (actives.length === 0) {\n actives = null\n }\n }\n\n const container = SelectorEngine.findOne(this._selector)\n if (actives) {\n const tempActiveData = actives.find(elem => container !== elem)\n activesData = tempActiveData ? Data.get(tempActiveData, DATA_KEY) : null\n\n if (activesData && activesData._isTransitioning) {\n return\n }\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW)\n if (startEvent.defaultPrevented) {\n return\n }\n\n if (actives) {\n actives.forEach(elemActive => {\n if (container !== elemActive) {\n Collapse.collapseInterface(elemActive, 'hide')\n }\n\n if (!activesData) {\n Data.set(elemActive, DATA_KEY, null)\n }\n })\n }\n\n const dimension = this._getDimension()\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE)\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n\n this._element.style[dimension] = 0\n\n if (this._triggerArray.length) {\n this._triggerArray.forEach(element => {\n element.classList.remove(CLASS_NAME_COLLAPSED)\n element.setAttribute('aria-expanded', true)\n })\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n this._element.style[dimension] = ''\n\n this.setTransitioning(false)\n\n EventHandler.trigger(this._element, EVENT_SHOWN)\n }\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n const scrollSize = `scroll${capitalizedDimension}`\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, 'transitionend', complete)\n\n emulateTransitionEnd(this._element, transitionDuration)\n this._element.style[dimension] = `${this._element[scrollSize]}px`\n }\n\n hide() {\n if (this._isTransitioning || !this._element.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n if (startEvent.defaultPrevented) {\n return\n }\n\n const dimension = this._getDimension()\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n reflow(this._element)\n\n this._element.classList.add(CLASS_NAME_COLLAPSING)\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW)\n\n const triggerArrayLength = this._triggerArray.length\n if (triggerArrayLength > 0) {\n for (let i = 0; i < triggerArrayLength; i++) {\n const trigger = this._triggerArray[i]\n const elem = getElementFromSelector(trigger)\n\n if (elem && !elem.classList.contains(CLASS_NAME_SHOW)) {\n trigger.classList.add(CLASS_NAME_COLLAPSED)\n trigger.setAttribute('aria-expanded', false)\n }\n }\n }\n\n this.setTransitioning(true)\n\n const complete = () => {\n this.setTransitioning(false)\n this._element.classList.remove(CLASS_NAME_COLLAPSING)\n this._element.classList.add(CLASS_NAME_COLLAPSE)\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n }\n\n this._element.style[dimension] = ''\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, 'transitionend', complete)\n emulateTransitionEnd(this._element, transitionDuration)\n }\n\n setTransitioning(isTransitioning) {\n this._isTransitioning = isTransitioning\n }\n\n dispose() {\n super.dispose()\n this._config = null\n this._parent = null\n this._triggerArray = null\n this._isTransitioning = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n config.toggle = Boolean(config.toggle) // Coerce string values\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _getDimension() {\n return this._element.classList.contains(WIDTH) ? WIDTH : HEIGHT\n }\n\n _getParent() {\n let { parent } = this._config\n\n if (isElement(parent)) {\n // it's a jQuery object\n if (typeof parent.jquery !== 'undefined' || typeof parent[0] !== 'undefined') {\n parent = parent[0]\n }\n } else {\n parent = SelectorEngine.findOne(parent)\n }\n\n const selector = `${SELECTOR_DATA_TOGGLE}[data-bs-parent=\"${parent}\"]`\n\n SelectorEngine.find(selector, parent)\n .forEach(element => {\n const selected = getElementFromSelector(element)\n\n this._addAriaAndCollapsedClass(\n selected,\n [element]\n )\n })\n\n return parent\n }\n\n _addAriaAndCollapsedClass(element, triggerArray) {\n if (!element || !triggerArray.length) {\n return\n }\n\n const isOpen = element.classList.contains(CLASS_NAME_SHOW)\n\n triggerArray.forEach(elem => {\n if (isOpen) {\n elem.classList.remove(CLASS_NAME_COLLAPSED)\n } else {\n elem.classList.add(CLASS_NAME_COLLAPSED)\n }\n\n elem.setAttribute('aria-expanded', isOpen)\n })\n }\n\n // Static\n\n static collapseInterface(element, config) {\n let data = Data.get(element, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(element),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data && _config.toggle && typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false\n }\n\n if (!data) {\n data = new Collapse(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Collapse.collapseInterface(this, config)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n // preventDefault only for elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || (event.delegateTarget && event.delegateTarget.tagName === 'A')) {\n event.preventDefault()\n }\n\n const triggerData = Manipulator.getDataAttributes(this)\n const selector = getSelectorFromElement(this)\n const selectorElements = SelectorEngine.find(selector)\n\n selectorElements.forEach(element => {\n const data = Data.get(element, DATA_KEY)\n let config\n if (data) {\n // update parent attribute\n if (data._parent === null && typeof triggerData.parent === 'string') {\n data._config.parent = triggerData.parent\n data._parent = data._getParent()\n }\n\n config = 'toggle'\n } else {\n config = triggerData\n }\n\n Collapse.collapseInterface(element, config)\n })\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Collapse to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Collapse)\n\nexport default Collapse\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n isElement,\n isVisible,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'dropdown'\nconst DATA_KEY = 'bs.dropdown'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst ESCAPE_KEY = 'Escape'\nconst SPACE_KEY = 'Space'\nconst TAB_KEY = 'Tab'\nconst ARROW_UP_KEY = 'ArrowUp'\nconst ARROW_DOWN_KEY = 'ArrowDown'\nconst RIGHT_MOUSE_BUTTON = 2 // MouseEvent.button value for the secondary button, usually the right button\n\nconst REGEXP_KEYDOWN = new RegExp(`${ARROW_UP_KEY}|${ARROW_DOWN_KEY}|${ESCAPE_KEY}`)\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_CLICK = `click${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DISABLED = 'disabled'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_DROPUP = 'dropup'\nconst CLASS_NAME_DROPEND = 'dropend'\nconst CLASS_NAME_DROPSTART = 'dropstart'\nconst CLASS_NAME_NAVBAR = 'navbar'\n\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"dropdown\"]'\nconst SELECTOR_MENU = '.dropdown-menu'\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav'\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start'\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end'\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start'\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end'\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start'\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start'\n\nconst Default = {\n offset: [0, 2],\n boundary: 'clippingParents',\n reference: 'toggle',\n display: 'dynamic',\n popperConfig: null\n}\n\nconst DefaultType = {\n offset: '(array|string|function)',\n boundary: '(string|element)',\n reference: '(string|element|object)',\n display: 'string',\n popperConfig: '(null|object|function)'\n}\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._popper = null\n this._config = this._getConfig(config)\n this._menu = this._getMenuElement()\n this._inNavbar = this._detectNavbar()\n\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const isActive = this._element.classList.contains(CLASS_NAME_SHOW)\n\n Dropdown.clearMenus()\n\n if (isActive) {\n return\n }\n\n this.show()\n }\n\n show() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this._element)\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, relatedTarget)\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n // Totally disable Popper for Dropdowns in Navbar\n if (this._inNavbar) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'none')\n } else {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)')\n }\n\n let referenceElement = this._element\n\n if (this._config.reference === 'parent') {\n referenceElement = parent\n } else if (isElement(this._config.reference)) {\n referenceElement = this._config.reference\n\n // Check if it's jQuery element\n if (typeof this._config.reference.jquery !== 'undefined') {\n referenceElement = this._config.reference[0]\n }\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference\n }\n\n const popperConfig = this._getPopperConfig()\n const isDisplayStatic = popperConfig.modifiers.find(modifier => modifier.name === 'applyStyles' && modifier.enabled === false)\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig)\n\n if (isDisplayStatic) {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static')\n }\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement &&\n !parent.closest(SELECTOR_NAVBAR_NAV)) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.on(elem, 'mouseover', null, noop()))\n }\n\n this._element.focus()\n this._element.setAttribute('aria-expanded', true)\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n EventHandler.trigger(this._element, EVENT_SHOWN, relatedTarget)\n }\n\n hide() {\n if (this._element.disabled || this._element.classList.contains(CLASS_NAME_DISABLED) || !this._menu.classList.contains(CLASS_NAME_SHOW)) {\n return\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE, relatedTarget)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._menu.classList.toggle(CLASS_NAME_SHOW)\n this._element.classList.toggle(CLASS_NAME_SHOW)\n Manipulator.removeDataAttribute(this._menu, 'popper')\n EventHandler.trigger(this._element, EVENT_HIDDEN, relatedTarget)\n }\n\n dispose() {\n EventHandler.off(this._element, EVENT_KEY)\n this._menu = null\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n\n super.dispose()\n }\n\n update() {\n this._inNavbar = this._detectNavbar()\n if (this._popper) {\n this._popper.update()\n }\n }\n\n // Private\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK, event => {\n event.preventDefault()\n this.toggle()\n })\n }\n\n _getConfig(config) {\n config = {\n ...this.constructor.Default,\n ...Manipulator.getDataAttributes(this._element),\n ...config\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (typeof config.reference === 'object' && !isElement(config.reference) &&\n typeof config.reference.getBoundingClientRect !== 'function'\n ) {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`)\n }\n\n return config\n }\n\n _getMenuElement() {\n return SelectorEngine.next(this._element, SELECTOR_MENU)[0]\n }\n\n _getPlacement() {\n const parentDropdown = this._element.parentNode\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT\n }\n\n // We need to trim the value because custom properties can also include spaces\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end'\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM\n }\n\n _detectNavbar() {\n return this._element.closest(`.${CLASS_NAME_NAVBAR}`) !== null\n }\n\n _getOffset() {\n const { offset } = this._config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }\n\n // Disable Popper if we have a static display\n if (this._config.display === 'static') {\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }]\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n }\n }\n\n // Static\n\n static dropdownInterface(element, config) {\n let data = Data.get(element, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data) {\n data = new Dropdown(element, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n }\n\n static jQueryInterface(config) {\n return this.each(function () {\n Dropdown.dropdownInterface(this, config)\n })\n }\n\n static clearMenus(event) {\n if (event) {\n if (event.button === RIGHT_MOUSE_BUTTON || (event.type === 'keyup' && event.key !== TAB_KEY)) {\n return\n }\n\n if (/input|select|textarea|form/i.test(event.target.tagName)) {\n return\n }\n }\n\n const toggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE)\n\n for (let i = 0, len = toggles.length; i < len; i++) {\n const context = Data.get(toggles[i], DATA_KEY)\n const relatedTarget = {\n relatedTarget: toggles[i]\n }\n\n if (event && event.type === 'click') {\n relatedTarget.clickEvent = event\n }\n\n if (!context) {\n continue\n }\n\n const dropdownMenu = context._menu\n if (!toggles[i].classList.contains(CLASS_NAME_SHOW)) {\n continue\n }\n\n if (event) {\n // Don't close the menu if the clicked element or one of its parents is the dropdown button\n if ([context._element].some(element => event.composedPath().includes(element))) {\n continue\n }\n\n // Tab navigation through the dropdown menu shouldn't close the menu\n if (event.type === 'keyup' && event.key === TAB_KEY && dropdownMenu.contains(event.target)) {\n continue\n }\n }\n\n const hideEvent = EventHandler.trigger(toggles[i], EVENT_HIDE, relatedTarget)\n if (hideEvent.defaultPrevented) {\n continue\n }\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(elem => EventHandler.off(elem, 'mouseover', null, noop()))\n }\n\n toggles[i].setAttribute('aria-expanded', 'false')\n\n if (context._popper) {\n context._popper.destroy()\n }\n\n dropdownMenu.classList.remove(CLASS_NAME_SHOW)\n toggles[i].classList.remove(CLASS_NAME_SHOW)\n Manipulator.removeDataAttribute(dropdownMenu, 'popper')\n EventHandler.trigger(toggles[i], EVENT_HIDDEN, relatedTarget)\n }\n }\n\n static getParentFromElement(element) {\n return getElementFromSelector(element) || element.parentNode\n }\n\n static dataApiKeydownHandler(event) {\n // If not input/textarea:\n // - And not a key in REGEXP_KEYDOWN => not a dropdown command\n // If input/textarea:\n // - If space key => not a dropdown command\n // - If key is other than escape\n // - If key is not up or down => not a dropdown command\n // - If trigger inside the menu => not a dropdown command\n if (/input|textarea/i.test(event.target.tagName) ?\n event.key === SPACE_KEY || (event.key !== ESCAPE_KEY &&\n ((event.key !== ARROW_DOWN_KEY && event.key !== ARROW_UP_KEY) ||\n event.target.closest(SELECTOR_MENU))) :\n !REGEXP_KEYDOWN.test(event.key)) {\n return\n }\n\n event.preventDefault()\n event.stopPropagation()\n\n if (this.disabled || this.classList.contains(CLASS_NAME_DISABLED)) {\n return\n }\n\n const parent = Dropdown.getParentFromElement(this)\n const isActive = this.classList.contains(CLASS_NAME_SHOW)\n\n if (event.key === ESCAPE_KEY) {\n const button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n button.focus()\n Dropdown.clearMenus()\n return\n }\n\n if (!isActive && (event.key === ARROW_UP_KEY || event.key === ARROW_DOWN_KEY)) {\n const button = this.matches(SELECTOR_DATA_TOGGLE) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE)[0]\n button.click()\n return\n }\n\n if (!isActive || event.key === SPACE_KEY) {\n Dropdown.clearMenus()\n return\n }\n\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, parent).filter(isVisible)\n\n if (!items.length) {\n return\n }\n\n let index = items.indexOf(event.target)\n\n // Up\n if (event.key === ARROW_UP_KEY && index > 0) {\n index--\n }\n\n // Down\n if (event.key === ARROW_DOWN_KEY && index < items.length - 1) {\n index++\n }\n\n // index is -1 if the first keydown is an ArrowUp\n index = index === -1 ? 0 : index\n\n items[index].focus()\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler)\nEventHandler.on(document, EVENT_CLICK_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus)\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n event.preventDefault()\n Dropdown.dropdownInterface(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Dropdown to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Dropdown)\n\nexport default Dropdown\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n getElementFromSelector,\n getTransitionDurationFromElement,\n isVisible,\n isRTL,\n reflow,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'modal'\nconst DATA_KEY = 'bs.modal'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n focus: true\n}\n\nconst DefaultType = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n focus: 'boolean'\n}\n\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_RESIZE = `resize${EVENT_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEUP_DISMISS = `mouseup.dismiss${EVENT_KEY}`\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_SCROLLBAR_MEASURER = 'modal-scrollbar-measure'\nconst CLASS_NAME_BACKDROP = 'modal-backdrop'\nconst CLASS_NAME_OPEN = 'modal-open'\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_STATIC = 'modal-static'\n\nconst SELECTOR_DIALOG = '.modal-dialog'\nconst SELECTOR_MODAL_BODY = '.modal-body'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"modal\"]'\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"modal\"]'\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element)\n this._backdrop = null\n this._isShown = false\n this._isBodyOverflowing = false\n this._ignoreBackdropClick = false\n this._isTransitioning = false\n this._scrollbarWidth = 0\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return\n }\n\n if (this._isAnimated()) {\n this._isTransitioning = true\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, {\n relatedTarget\n })\n\n if (this._isShown || showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n\n this._checkScrollbar()\n this._setScrollbar()\n\n this._adjustDialog()\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, event => this.hide(event))\n\n EventHandler.on(this._dialog, EVENT_MOUSEDOWN_DISMISS, () => {\n EventHandler.one(this._element, EVENT_MOUSEUP_DISMISS, event => {\n if (event.target === this._element) {\n this._ignoreBackdropClick = true\n }\n })\n })\n\n this._showBackdrop(() => this._showElement(relatedTarget))\n }\n\n hide(event) {\n if (event) {\n event.preventDefault()\n }\n\n if (!this._isShown || this._isTransitioning) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._isShown = false\n const isAnimated = this._isAnimated()\n\n if (isAnimated) {\n this._isTransitioning = true\n }\n\n this._setEscapeEvent()\n this._setResizeEvent()\n\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n EventHandler.off(this._element, EVENT_CLICK_DISMISS)\n EventHandler.off(this._dialog, EVENT_MOUSEDOWN_DISMISS)\n\n if (isAnimated) {\n const transitionDuration = getTransitionDurationFromElement(this._element)\n\n EventHandler.one(this._element, 'transitionend', event => this._hideModal(event))\n emulateTransitionEnd(this._element, transitionDuration)\n } else {\n this._hideModal()\n }\n }\n\n dispose() {\n [window, this._element, this._dialog]\n .forEach(htmlElement => EventHandler.off(htmlElement, EVENT_KEY))\n\n super.dispose()\n\n /**\n * `document` has 2 events `EVENT_FOCUSIN` and `EVENT_CLICK_DATA_API`\n * Do not move `document` in `htmlElements` array\n * It will remove `EVENT_CLICK_DATA_API` event that should remain\n */\n EventHandler.off(document, EVENT_FOCUSIN)\n\n this._config = null\n this._dialog = null\n this._backdrop = null\n this._isShown = null\n this._isBodyOverflowing = null\n this._ignoreBackdropClick = null\n this._isTransitioning = null\n this._scrollbarWidth = null\n }\n\n handleUpdate() {\n this._adjustDialog()\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...config\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _showElement(relatedTarget) {\n const isAnimated = this._isAnimated()\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog)\n\n if (!this._element.parentNode || this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n // Don't move modal's DOM position\n document.body.appendChild(this._element)\n }\n\n this._element.style.display = 'block'\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.scrollTop = 0\n\n if (modalBody) {\n modalBody.scrollTop = 0\n }\n\n if (isAnimated) {\n reflow(this._element)\n }\n\n this._element.classList.add(CLASS_NAME_SHOW)\n\n if (this._config.focus) {\n this._enforceFocus()\n }\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._element.focus()\n }\n\n this._isTransitioning = false\n EventHandler.trigger(this._element, EVENT_SHOWN, {\n relatedTarget\n })\n }\n\n if (isAnimated) {\n const transitionDuration = getTransitionDurationFromElement(this._dialog)\n\n EventHandler.one(this._dialog, 'transitionend', transitionComplete)\n emulateTransitionEnd(this._dialog, transitionDuration)\n } else {\n transitionComplete()\n }\n }\n\n _enforceFocus() {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n this._element !== event.target &&\n !this._element.contains(event.target)) {\n this._element.focus()\n }\n })\n }\n\n _setEscapeEvent() {\n if (this._isShown) {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n event.preventDefault()\n this.hide()\n } else if (!this._config.keyboard && event.key === ESCAPE_KEY) {\n this._triggerBackdropTransition()\n }\n })\n } else {\n EventHandler.off(this._element, EVENT_KEYDOWN_DISMISS)\n }\n }\n\n _setResizeEvent() {\n if (this._isShown) {\n EventHandler.on(window, EVENT_RESIZE, () => this._adjustDialog())\n } else {\n EventHandler.off(window, EVENT_RESIZE)\n }\n }\n\n _hideModal() {\n this._element.style.display = 'none'\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._isTransitioning = false\n this._showBackdrop(() => {\n document.body.classList.remove(CLASS_NAME_OPEN)\n this._resetAdjustments()\n this._resetScrollbar()\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n })\n }\n\n _removeBackdrop() {\n this._backdrop.parentNode.removeChild(this._backdrop)\n this._backdrop = null\n }\n\n _showBackdrop(callback) {\n const isAnimated = this._isAnimated()\n if (this._isShown && this._config.backdrop) {\n this._backdrop = document.createElement('div')\n this._backdrop.className = CLASS_NAME_BACKDROP\n\n if (isAnimated) {\n this._backdrop.classList.add(CLASS_NAME_FADE)\n }\n\n document.body.appendChild(this._backdrop)\n\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, event => {\n if (this._ignoreBackdropClick) {\n this._ignoreBackdropClick = false\n return\n }\n\n if (event.target !== event.currentTarget) {\n return\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition()\n } else {\n this.hide()\n }\n })\n\n if (isAnimated) {\n reflow(this._backdrop)\n }\n\n this._backdrop.classList.add(CLASS_NAME_SHOW)\n\n if (!isAnimated) {\n callback()\n return\n }\n\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n\n EventHandler.one(this._backdrop, 'transitionend', callback)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else if (!this._isShown && this._backdrop) {\n this._backdrop.classList.remove(CLASS_NAME_SHOW)\n\n const callbackRemove = () => {\n this._removeBackdrop()\n callback()\n }\n\n if (isAnimated) {\n const backdropTransitionDuration = getTransitionDurationFromElement(this._backdrop)\n EventHandler.one(this._backdrop, 'transitionend', callbackRemove)\n emulateTransitionEnd(this._backdrop, backdropTransitionDuration)\n } else {\n callbackRemove()\n }\n } else {\n callback()\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE)\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden'\n }\n\n this._element.classList.add(CLASS_NAME_STATIC)\n const modalTransitionDuration = getTransitionDurationFromElement(this._dialog)\n EventHandler.off(this._element, 'transitionend')\n EventHandler.one(this._element, 'transitionend', () => {\n this._element.classList.remove(CLASS_NAME_STATIC)\n if (!isModalOverflowing) {\n EventHandler.one(this._element, 'transitionend', () => {\n this._element.style.overflowY = ''\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n }\n })\n emulateTransitionEnd(this._element, modalTransitionDuration)\n this._element.focus()\n }\n\n // ----------------------------------------------------------------------\n // the following methods are used to handle overflowing modals\n // ----------------------------------------------------------------------\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight\n\n if ((!this._isBodyOverflowing && isModalOverflowing && !isRTL()) || (this._isBodyOverflowing && !isModalOverflowing && isRTL())) {\n this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n }\n\n if ((this._isBodyOverflowing && !isModalOverflowing && !isRTL()) || (!this._isBodyOverflowing && isModalOverflowing && isRTL())) {\n this._element.style.paddingRight = `${this._scrollbarWidth}px`\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = ''\n this._element.style.paddingRight = ''\n }\n\n _checkScrollbar() {\n const rect = document.body.getBoundingClientRect()\n this._isBodyOverflowing = Math.round(rect.left + rect.right) < window.innerWidth\n this._scrollbarWidth = this._getScrollbarWidth()\n }\n\n _setScrollbar() {\n if (this._isBodyOverflowing) {\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + this._scrollbarWidth)\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - this._scrollbarWidth)\n this._setElementAttributes('body', 'paddingRight', calculatedValue => calculatedValue + this._scrollbarWidth)\n }\n\n document.body.classList.add(CLASS_NAME_OPEN)\n }\n\n _setElementAttributes(selector, styleProp, callback) {\n SelectorEngine.find(selector)\n .forEach(element => {\n if (element !== document.body && window.innerWidth > element.clientWidth + this._scrollbarWidth) {\n return\n }\n\n const actualValue = element.style[styleProp]\n const calculatedValue = window.getComputedStyle(element)[styleProp]\n Manipulator.setDataAttribute(element, styleProp, actualValue)\n element.style[styleProp] = callback(Number.parseFloat(calculatedValue)) + 'px'\n })\n }\n\n _resetScrollbar() {\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n this._resetElementAttributes('body', 'paddingRight')\n }\n\n _resetElementAttributes(selector, styleProp) {\n SelectorEngine.find(selector).forEach(element => {\n const value = Manipulator.getDataAttribute(element, styleProp)\n if (typeof value === 'undefined' && element === document.body) {\n element.style[styleProp] = ''\n } else {\n Manipulator.removeDataAttribute(element, styleProp)\n element.style[styleProp] = value\n }\n })\n }\n\n _getScrollbarWidth() { // thx d.walsh\n const scrollDiv = document.createElement('div')\n scrollDiv.className = CLASS_NAME_SCROLLBAR_MEASURER\n document.body.appendChild(scrollDiv)\n const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n document.body.removeChild(scrollDiv)\n return scrollbarWidth\n }\n\n // Static\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n let data = Data.get(this, DATA_KEY)\n const _config = {\n ...Default,\n ...Manipulator.getDataAttributes(this),\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (!data) {\n data = new Modal(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](relatedTarget)\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (this.tagName === 'A' || this.tagName === 'AREA') {\n event.preventDefault()\n }\n\n EventHandler.one(target, EVENT_SHOW, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n if (isVisible(this)) {\n this.focus()\n }\n })\n })\n\n let data = Data.get(target, DATA_KEY)\n if (!data) {\n const config = {\n ...Manipulator.getDataAttributes(target),\n ...Manipulator.getDataAttributes(this)\n }\n\n data = new Modal(target, config)\n }\n\n data.toggle(this)\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Modal to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Modal)\n\nexport default Modal\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport SelectorEngine from '../dom/selector-engine'\nimport Manipulator from '../dom/manipulator'\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed'\nconst SELECTOR_STICKY_CONTENT = '.sticky-top'\n\nconst getWidth = () => {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth\n return Math.abs(window.innerWidth - documentWidth)\n}\n\nconst hide = (width = getWidth()) => {\n document.body.style.overflow = 'hidden'\n _setElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight', calculatedValue => calculatedValue + width)\n _setElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight', calculatedValue => calculatedValue - width)\n _setElementAttributes('body', 'paddingRight', calculatedValue => calculatedValue + width)\n}\n\nconst _setElementAttributes = (selector, styleProp, callback) => {\n const scrollbarWidth = getWidth()\n SelectorEngine.find(selector)\n .forEach(element => {\n if (element !== document.body && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return\n }\n\n const actualValue = element.style[styleProp]\n const calculatedValue = window.getComputedStyle(element)[styleProp]\n Manipulator.setDataAttribute(element, styleProp, actualValue)\n element.style[styleProp] = callback(Number.parseFloat(calculatedValue)) + 'px'\n })\n}\n\nconst reset = () => {\n document.body.style.overflow = 'auto'\n _resetElementAttributes(SELECTOR_FIXED_CONTENT, 'paddingRight')\n _resetElementAttributes(SELECTOR_STICKY_CONTENT, 'marginRight')\n _resetElementAttributes('body', 'paddingRight')\n}\n\nconst _resetElementAttributes = (selector, styleProp) => {\n SelectorEngine.find(selector).forEach(element => {\n const value = Manipulator.getDataAttribute(element, styleProp)\n if (typeof value === 'undefined' && element === document.body) {\n element.style.removeProperty(styleProp)\n } else {\n Manipulator.removeDataAttribute(element, styleProp)\n element.style[styleProp] = value\n }\n })\n}\n\nconst isBodyOverflowing = () => {\n return getWidth() > 0\n}\n\nexport {\n getWidth,\n hide,\n isBodyOverflowing,\n reset\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getElementFromSelector,\n getSelectorFromElement,\n getTransitionDurationFromElement,\n isDisabled,\n isVisible,\n typeCheckConfig\n} from './util/index'\nimport { hide as scrollBarHide, reset as scrollBarReset } from './util/scrollbar'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport BaseComponent from './base-component'\nimport SelectorEngine from './dom/selector-engine'\nimport Manipulator from './dom/manipulator'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'offcanvas'\nconst DATA_KEY = 'bs.offcanvas'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\nconst ESCAPE_KEY = 'Escape'\n\nconst Default = {\n backdrop: true,\n keyboard: true,\n scroll: false\n}\n\nconst DefaultType = {\n backdrop: 'boolean',\n keyboard: 'boolean',\n scroll: 'boolean'\n}\n\nconst CLASS_NAME_BACKDROP_BODY = 'offcanvas-backdrop'\nconst CLASS_NAME_SHOW = 'show'\nconst CLASS_NAME_TOGGLING = 'offcanvas-toggling'\nconst OPEN_SELECTOR = '.offcanvas.show'\nconst ACTIVE_SELECTOR = `${OPEN_SELECTOR}, .${CLASS_NAME_TOGGLING}`\n\nconst EVENT_SHOW = `show${EVENT_KEY}`\nconst EVENT_SHOWN = `shown${EVENT_KEY}`\nconst EVENT_HIDE = `hide${EVENT_KEY}`\nconst EVENT_HIDDEN = `hidden${EVENT_KEY}`\nconst EVENT_FOCUSIN = `focusin${EVENT_KEY}`\nconst EVENT_CLICK_DATA_API = `click${EVENT_KEY}${DATA_API_KEY}`\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY}`\n\nconst SELECTOR_DATA_DISMISS = '[data-bs-dismiss=\"offcanvas\"]'\nconst SELECTOR_DATA_TOGGLE = '[data-bs-toggle=\"offcanvas\"]'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element)\n\n this._config = this._getConfig(config)\n this._isShown = false\n this._addEventListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget)\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW, { relatedTarget })\n\n if (showEvent.defaultPrevented) {\n return\n }\n\n this._isShown = true\n this._element.style.visibility = 'visible'\n\n if (this._config.backdrop) {\n document.body.classList.add(CLASS_NAME_BACKDROP_BODY)\n }\n\n if (!this._config.scroll) {\n scrollBarHide()\n }\n\n this._element.classList.add(CLASS_NAME_TOGGLING)\n this._element.removeAttribute('aria-hidden')\n this._element.setAttribute('aria-modal', true)\n this._element.setAttribute('role', 'dialog')\n this._element.classList.add(CLASS_NAME_SHOW)\n\n const completeCallBack = () => {\n this._element.classList.remove(CLASS_NAME_TOGGLING)\n EventHandler.trigger(this._element, EVENT_SHOWN, { relatedTarget })\n this._enforceFocusOnElement(this._element)\n }\n\n setTimeout(completeCallBack, getTransitionDurationFromElement(this._element))\n }\n\n hide() {\n if (!this._isShown) {\n return\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE)\n\n if (hideEvent.defaultPrevented) {\n return\n }\n\n this._element.classList.add(CLASS_NAME_TOGGLING)\n EventHandler.off(document, EVENT_FOCUSIN)\n this._element.blur()\n this._isShown = false\n this._element.classList.remove(CLASS_NAME_SHOW)\n\n const completeCallback = () => {\n this._element.setAttribute('aria-hidden', true)\n this._element.removeAttribute('aria-modal')\n this._element.removeAttribute('role')\n this._element.style.visibility = 'hidden'\n\n if (this._config.backdrop) {\n document.body.classList.remove(CLASS_NAME_BACKDROP_BODY)\n }\n\n if (!this._config.scroll) {\n scrollBarReset()\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN)\n this._element.classList.remove(CLASS_NAME_TOGGLING)\n }\n\n setTimeout(completeCallback, getTransitionDurationFromElement(this._element))\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...Manipulator.getDataAttributes(this._element),\n ...(typeof config === 'object' ? config : {})\n }\n typeCheckConfig(NAME, config, DefaultType)\n return config\n }\n\n _enforceFocusOnElement(element) {\n EventHandler.off(document, EVENT_FOCUSIN) // guard against infinite focus loop\n EventHandler.on(document, EVENT_FOCUSIN, event => {\n if (document !== event.target &&\n element !== event.target &&\n !element.contains(event.target)) {\n element.focus()\n }\n })\n element.focus()\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_CLICK_DISMISS, SELECTOR_DATA_DISMISS, () => this.hide())\n\n EventHandler.on(document, 'keydown', event => {\n if (this._config.keyboard && event.key === ESCAPE_KEY) {\n this.hide()\n }\n })\n\n EventHandler.on(document, EVENT_CLICK_DATA_API, event => {\n const target = SelectorEngine.findOne(getSelectorFromElement(event.target))\n if (!this._element.contains(event.target) && target !== this._element) {\n this.hide()\n }\n })\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Data.get(this, DATA_KEY) || new Offcanvas(this, typeof config === 'object' ? config : {})\n\n if (typeof config !== 'string') {\n return\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config](this)\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * Data Api implementation\n * ------------------------------------------------------------------------\n */\n\nEventHandler.on(document, EVENT_CLICK_DATA_API, SELECTOR_DATA_TOGGLE, function (event) {\n const target = getElementFromSelector(this)\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault()\n }\n\n if (isDisabled(this)) {\n return\n }\n\n EventHandler.one(target, EVENT_HIDDEN, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus()\n }\n })\n\n // avoid conflict when clicking a toggler of an offcanvas, while another is open\n const allReadyOpen = SelectorEngine.findOne(ACTIVE_SELECTOR)\n if (allReadyOpen && allReadyOpen !== target) {\n return\n }\n\n const data = Data.get(target, DATA_KEY) || new Offcanvas(target)\n\n data.toggle(this)\n})\n\nEventHandler.on(window, EVENT_LOAD_DATA_API, () => {\n SelectorEngine.find(OPEN_SELECTOR).forEach(el => (Data.get(el, DATA_KEY) || new Offcanvas(el)).show())\n})\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n */\n\ndefineJQueryPlugin(NAME, Offcanvas)\n\nexport default Offcanvas\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst uriAttrs = new Set([\n 'background',\n 'cite',\n 'href',\n 'itemtype',\n 'longdesc',\n 'poster',\n 'src',\n 'xlink:href'\n])\n\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i\n\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i\n\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shoutout to Angular 7 https://github.com/angular/angular/blob/7.2.4/packages/core/src/sanitization/url_sanitizer.ts\n */\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i\n\nconst allowedAttribute = (attr, allowedAttributeList) => {\n const attrName = attr.nodeName.toLowerCase()\n\n if (allowedAttributeList.includes(attrName)) {\n if (uriAttrs.has(attrName)) {\n return Boolean(SAFE_URL_PATTERN.test(attr.nodeValue) || DATA_URL_PATTERN.test(attr.nodeValue))\n }\n\n return true\n }\n\n const regExp = allowedAttributeList.filter(attrRegex => attrRegex instanceof RegExp)\n\n // Check if a regular expression validates the attribute.\n for (let i = 0, len = regExp.length; i < len; i++) {\n if (regExp[i].test(attrName)) {\n return true\n }\n }\n\n return false\n}\n\nexport const DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n}\n\nexport function sanitizeHtml(unsafeHtml, allowList, sanitizeFn) {\n if (!unsafeHtml.length) {\n return unsafeHtml\n }\n\n if (sanitizeFn && typeof sanitizeFn === 'function') {\n return sanitizeFn(unsafeHtml)\n }\n\n const domParser = new window.DOMParser()\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html')\n const allowlistKeys = Object.keys(allowList)\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'))\n\n for (let i = 0, len = elements.length; i < len; i++) {\n const el = elements[i]\n const elName = el.nodeName.toLowerCase()\n\n if (!allowlistKeys.includes(elName)) {\n el.parentNode.removeChild(el)\n\n continue\n }\n\n const attributeList = [].concat(...el.attributes)\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elName] || [])\n\n attributeList.forEach(attr => {\n if (!allowedAttribute(attr, allowedAttributes)) {\n el.removeAttribute(attr.nodeName)\n }\n })\n }\n\n return createdDocument.body.innerHTML\n}\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport * as Popper from '@popperjs/core'\n\nimport {\n defineJQueryPlugin,\n emulateTransitionEnd,\n findShadowRoot,\n getTransitionDurationFromElement,\n getUID,\n isElement,\n isRTL,\n noop,\n typeCheckConfig\n} from './util/index'\nimport {\n DefaultAllowlist,\n sanitizeHtml\n} from './util/sanitizer'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'tooltip'\nconst DATA_KEY = 'bs.tooltip'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-tooltip'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn'])\n\nconst DefaultType = {\n animation: 'boolean',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string',\n delay: '(number|object)',\n html: 'boolean',\n selector: '(string|boolean)',\n placement: '(string|function)',\n offset: '(array|string|function)',\n container: '(string|element|boolean)',\n fallbackPlacements: 'array',\n boundary: '(string|element)',\n customClass: '(string|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n allowList: 'object',\n popperConfig: '(null|object|function)'\n}\n\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n}\n\nconst Default = {\n animation: true,\n template: '
' +\n '
' +\n '
' +\n '
',\n trigger: 'hover focus',\n title: '',\n delay: 0,\n html: false,\n selector: false,\n placement: 'top',\n offset: [0, 0],\n container: false,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n boundary: 'clippingParents',\n customClass: '',\n sanitize: true,\n sanitizeFn: null,\n allowList: DefaultAllowlist,\n popperConfig: null\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_MODAL = 'modal'\nconst CLASS_NAME_SHOW = 'show'\n\nconst HOVER_STATE_SHOW = 'show'\nconst HOVER_STATE_OUT = 'out'\n\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner'\n\nconst TRIGGER_HOVER = 'hover'\nconst TRIGGER_FOCUS = 'focus'\nconst TRIGGER_CLICK = 'click'\nconst TRIGGER_MANUAL = 'manual'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)')\n }\n\n super(element)\n\n // private\n this._isEnabled = true\n this._timeout = 0\n this._hoverState = ''\n this._activeTrigger = {}\n this._popper = null\n\n // Protected\n this.config = this._getConfig(config)\n this.tip = null\n\n this._setListeners()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Public\n\n enable() {\n this._isEnabled = true\n }\n\n disable() {\n this._isEnabled = false\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled\n }\n\n toggle(event) {\n if (!this._isEnabled) {\n return\n }\n\n if (event) {\n const context = this._initializeOnDelegatedTarget(event)\n\n context._activeTrigger.click = !context._activeTrigger.click\n\n if (context._isWithActiveTrigger()) {\n context._enter(null, context)\n } else {\n context._leave(null, context)\n }\n } else {\n if (this.getTipElement().classList.contains(CLASS_NAME_SHOW)) {\n this._leave(null, this)\n return\n }\n\n this._enter(null, this)\n }\n }\n\n dispose() {\n clearTimeout(this._timeout)\n\n EventHandler.off(this._element, this.constructor.EVENT_KEY)\n EventHandler.off(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.tip && this.tip.parentNode) {\n this.tip.parentNode.removeChild(this.tip)\n }\n\n this._isEnabled = null\n this._timeout = null\n this._hoverState = null\n this._activeTrigger = null\n if (this._popper) {\n this._popper.destroy()\n }\n\n this._popper = null\n this.config = null\n this.tip = null\n super.dispose()\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements')\n }\n\n if (!(this.isWithContent() && this._isEnabled)) {\n return\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.Event.SHOW)\n const shadowRoot = findShadowRoot(this._element)\n const isInTheDom = shadowRoot === null ?\n this._element.ownerDocument.documentElement.contains(this._element) :\n shadowRoot.contains(this._element)\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return\n }\n\n const tip = this.getTipElement()\n const tipId = getUID(this.constructor.NAME)\n\n tip.setAttribute('id', tipId)\n this._element.setAttribute('aria-describedby', tipId)\n\n this.setContent()\n\n if (this.config.animation) {\n tip.classList.add(CLASS_NAME_FADE)\n }\n\n const placement = typeof this.config.placement === 'function' ?\n this.config.placement.call(this, tip, this._element) :\n this.config.placement\n\n const attachment = this._getAttachment(placement)\n this._addAttachmentClass(attachment)\n\n const container = this._getContainer()\n Data.set(tip, this.constructor.DATA_KEY, this)\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.appendChild(tip)\n EventHandler.trigger(this._element, this.constructor.Event.INSERTED)\n }\n\n if (this._popper) {\n this._popper.update()\n } else {\n this._popper = Popper.createPopper(this._element, tip, this._getPopperConfig(attachment))\n }\n\n tip.classList.add(CLASS_NAME_SHOW)\n\n const customClass = typeof this.config.customClass === 'function' ? this.config.customClass() : this.config.customClass\n if (customClass) {\n tip.classList.add(...customClass.split(' '))\n }\n\n // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children).forEach(element => {\n EventHandler.on(element, 'mouseover', noop())\n })\n }\n\n const complete = () => {\n const prevHoverState = this._hoverState\n\n this._hoverState = null\n EventHandler.trigger(this._element, this.constructor.Event.SHOWN)\n\n if (prevHoverState === HOVER_STATE_OUT) {\n this._leave(null, this)\n }\n }\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(this.tip)\n EventHandler.one(this.tip, 'transitionend', complete)\n emulateTransitionEnd(this.tip, transitionDuration)\n } else {\n complete()\n }\n }\n\n hide() {\n if (!this._popper) {\n return\n }\n\n const tip = this.getTipElement()\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return\n }\n\n if (this._hoverState !== HOVER_STATE_SHOW && tip.parentNode) {\n tip.parentNode.removeChild(tip)\n }\n\n this._cleanTipClass()\n this._element.removeAttribute('aria-describedby')\n EventHandler.trigger(this._element, this.constructor.Event.HIDDEN)\n\n if (this._popper) {\n this._popper.destroy()\n this._popper = null\n }\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.Event.HIDE)\n if (hideEvent.defaultPrevented) {\n return\n }\n\n tip.classList.remove(CLASS_NAME_SHOW)\n\n // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n if ('ontouchstart' in document.documentElement) {\n [].concat(...document.body.children)\n .forEach(element => EventHandler.off(element, 'mouseover', noop))\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false\n this._activeTrigger[TRIGGER_FOCUS] = false\n this._activeTrigger[TRIGGER_HOVER] = false\n\n if (this.tip.classList.contains(CLASS_NAME_FADE)) {\n const transitionDuration = getTransitionDurationFromElement(tip)\n\n EventHandler.one(tip, 'transitionend', complete)\n emulateTransitionEnd(tip, transitionDuration)\n } else {\n complete()\n }\n\n this._hoverState = ''\n }\n\n update() {\n if (this._popper !== null) {\n this._popper.update()\n }\n }\n\n // Protected\n\n isWithContent() {\n return Boolean(this.getTitle())\n }\n\n getTipElement() {\n if (this.tip) {\n return this.tip\n }\n\n const element = document.createElement('div')\n element.innerHTML = this.config.template\n\n this.tip = element.children[0]\n return this.tip\n }\n\n setContent() {\n const tip = this.getTipElement()\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TOOLTIP_INNER, tip), this.getTitle())\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n setElementContent(element, content) {\n if (element === null) {\n return\n }\n\n if (typeof content === 'object' && isElement(content)) {\n if (content.jquery) {\n content = content[0]\n }\n\n // content is a DOM node or a jQuery\n if (this.config.html) {\n if (content.parentNode !== element) {\n element.innerHTML = ''\n element.appendChild(content)\n }\n } else {\n element.textContent = content.textContent\n }\n\n return\n }\n\n if (this.config.html) {\n if (this.config.sanitize) {\n content = sanitizeHtml(content, this.config.allowList, this.config.sanitizeFn)\n }\n\n element.innerHTML = content\n } else {\n element.textContent = content\n }\n }\n\n getTitle() {\n let title = this._element.getAttribute('data-bs-original-title')\n\n if (!title) {\n title = typeof this.config.title === 'function' ?\n this.config.title.call(this._element) :\n this.config.title\n }\n\n return title\n }\n\n updateAttachment(attachment) {\n if (attachment === 'right') {\n return 'end'\n }\n\n if (attachment === 'left') {\n return 'start'\n }\n\n return attachment\n }\n\n // Private\n\n _initializeOnDelegatedTarget(event, context) {\n const dataKey = this.constructor.DATA_KEY\n context = context || Data.get(event.delegateTarget, dataKey)\n\n if (!context) {\n context = new this.constructor(event.delegateTarget, this._getDelegateConfig())\n Data.set(event.delegateTarget, dataKey, context)\n }\n\n return context\n }\n\n _getOffset() {\n const { offset } = this.config\n\n if (typeof offset === 'string') {\n return offset.split(',').map(val => Number.parseInt(val, 10))\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element)\n }\n\n return offset\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [\n {\n name: 'flip',\n options: {\n altBoundary: true,\n fallbackPlacements: this.config.fallbackPlacements\n }\n },\n {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n },\n {\n name: 'preventOverflow',\n options: {\n boundary: this.config.boundary\n }\n },\n {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n },\n {\n name: 'onChange',\n enabled: true,\n phase: 'afterWrite',\n fn: data => this._handlePopperPlacementChange(data)\n }\n ],\n onFirstUpdate: data => {\n if (data.options.placement !== data.placement) {\n this._handlePopperPlacementChange(data)\n }\n }\n }\n\n return {\n ...defaultBsPopperConfig,\n ...(typeof this.config.popperConfig === 'function' ? this.config.popperConfig(defaultBsPopperConfig) : this.config.popperConfig)\n }\n }\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContainer() {\n if (this.config.container === false) {\n return document.body\n }\n\n if (isElement(this.config.container)) {\n return this.config.container\n }\n\n return SelectorEngine.findOne(this.config.container)\n }\n\n _getAttachment(placement) {\n return AttachmentMap[placement.toUpperCase()]\n }\n\n _setListeners() {\n const triggers = this.config.trigger.split(' ')\n\n triggers.forEach(trigger => {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.Event.CLICK, this.config.selector, event => this.toggle(event))\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSEENTER :\n this.constructor.Event.FOCUSIN\n const eventOut = trigger === TRIGGER_HOVER ?\n this.constructor.Event.MOUSELEAVE :\n this.constructor.Event.FOCUSOUT\n\n EventHandler.on(this._element, eventIn, this.config.selector, event => this._enter(event))\n EventHandler.on(this._element, eventOut, this.config.selector, event => this._leave(event))\n }\n })\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide()\n }\n }\n\n EventHandler.on(this._element.closest(`.${CLASS_NAME_MODAL}`), 'hide.bs.modal', this._hideModalHandler)\n\n if (this.config.selector) {\n this.config = {\n ...this.config,\n trigger: 'manual',\n selector: ''\n }\n } else {\n this._fixTitle()\n }\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title')\n const originalTitleType = typeof this._element.getAttribute('data-bs-original-title')\n\n if (title || originalTitleType !== 'string') {\n this._element.setAttribute('data-bs-original-title', title || '')\n if (title && !this._element.getAttribute('aria-label') && !this._element.textContent) {\n this._element.setAttribute('aria-label', title)\n }\n\n this._element.setAttribute('title', '')\n }\n }\n\n _enter(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = true\n }\n\n if (context.getTipElement().classList.contains(CLASS_NAME_SHOW) || context._hoverState === HOVER_STATE_SHOW) {\n context._hoverState = HOVER_STATE_SHOW\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_SHOW\n\n if (!context.config.delay || !context.config.delay.show) {\n context.show()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_SHOW) {\n context.show()\n }\n }, context.config.delay.show)\n }\n\n _leave(event, context) {\n context = this._initializeOnDelegatedTarget(event, context)\n\n if (event) {\n context._activeTrigger[\n event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER\n ] = context._element.contains(event.relatedTarget)\n }\n\n if (context._isWithActiveTrigger()) {\n return\n }\n\n clearTimeout(context._timeout)\n\n context._hoverState = HOVER_STATE_OUT\n\n if (!context.config.delay || !context.config.delay.hide) {\n context.hide()\n return\n }\n\n context._timeout = setTimeout(() => {\n if (context._hoverState === HOVER_STATE_OUT) {\n context.hide()\n }\n }, context.config.delay.hide)\n }\n\n _isWithActiveTrigger() {\n for (const trigger in this._activeTrigger) {\n if (this._activeTrigger[trigger]) {\n return true\n }\n }\n\n return false\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element)\n\n Object.keys(dataAttributes).forEach(dataAttr => {\n if (DISALLOWED_ATTRIBUTES.has(dataAttr)) {\n delete dataAttributes[dataAttr]\n }\n })\n\n if (config && typeof config.container === 'object' && config.container.jquery) {\n config.container = config.container[0]\n }\n\n config = {\n ...this.constructor.Default,\n ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n }\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString()\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString()\n }\n\n typeCheckConfig(NAME, config, this.constructor.DefaultType)\n\n if (config.sanitize) {\n config.template = sanitizeHtml(config.template, config.allowList, config.sanitizeFn)\n }\n\n return config\n }\n\n _getDelegateConfig() {\n const config = {}\n\n if (this.config) {\n for (const key in this.config) {\n if (this.constructor.Default[key] !== this.config[key]) {\n config[key] = this.config[key]\n }\n }\n }\n\n return config\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n _handlePopperPlacementChange(popperData) {\n const { state } = popperData\n\n if (!state) {\n return\n }\n\n this.tip = state.elements.popper\n this._cleanTipClass()\n this._addAttachmentClass(this._getAttachment(state.placement))\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.get(this, DATA_KEY)\n const _config = typeof config === 'object' && config\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Tooltip(this, _config)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Tooltip to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Tooltip)\n\nexport default Tooltip\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport { defineJQueryPlugin } from './util/index'\nimport Data from './dom/data'\nimport SelectorEngine from './dom/selector-engine'\nimport Tooltip from './tooltip'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'popover'\nconst DATA_KEY = 'bs.popover'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst CLASS_PREFIX = 'bs-popover'\nconst BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\nconst Default = {\n ...Tooltip.Default,\n placement: 'right',\n offset: [0, 8],\n trigger: 'click',\n content: '',\n template: '
' +\n '
' +\n '

' +\n '
' +\n '
'\n}\n\nconst DefaultType = {\n ...Tooltip.DefaultType,\n content: '(string|element|function)'\n}\n\nconst Event = {\n HIDE: `hide${EVENT_KEY}`,\n HIDDEN: `hidden${EVENT_KEY}`,\n SHOW: `show${EVENT_KEY}`,\n SHOWN: `shown${EVENT_KEY}`,\n INSERTED: `inserted${EVENT_KEY}`,\n CLICK: `click${EVENT_KEY}`,\n FOCUSIN: `focusin${EVENT_KEY}`,\n FOCUSOUT: `focusout${EVENT_KEY}`,\n MOUSEENTER: `mouseenter${EVENT_KEY}`,\n MOUSELEAVE: `mouseleave${EVENT_KEY}`\n}\n\nconst CLASS_NAME_FADE = 'fade'\nconst CLASS_NAME_SHOW = 'show'\n\nconst SELECTOR_TITLE = '.popover-header'\nconst SELECTOR_CONTENT = '.popover-body'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass Popover extends Tooltip {\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get NAME() {\n return NAME\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n static get Event() {\n return Event\n }\n\n static get EVENT_KEY() {\n return EVENT_KEY\n }\n\n static get DefaultType() {\n return DefaultType\n }\n\n // Overrides\n\n isWithContent() {\n return this.getTitle() || this._getContent()\n }\n\n setContent() {\n const tip = this.getTipElement()\n\n // we use append for html objects to maintain js events\n this.setElementContent(SelectorEngine.findOne(SELECTOR_TITLE, tip), this.getTitle())\n let content = this._getContent()\n if (typeof content === 'function') {\n content = content.call(this._element)\n }\n\n this.setElementContent(SelectorEngine.findOne(SELECTOR_CONTENT, tip), content)\n\n tip.classList.remove(CLASS_NAME_FADE, CLASS_NAME_SHOW)\n }\n\n // Private\n\n _addAttachmentClass(attachment) {\n this.getTipElement().classList.add(`${CLASS_PREFIX}-${this.updateAttachment(attachment)}`)\n }\n\n _getContent() {\n return this._element.getAttribute('data-bs-content') || this.config.content\n }\n\n _cleanTipClass() {\n const tip = this.getTipElement()\n const tabClass = tip.getAttribute('class').match(BSCLS_PREFIX_REGEX)\n if (tabClass !== null && tabClass.length > 0) {\n tabClass.map(token => token.trim())\n .forEach(tClass => tip.classList.remove(tClass))\n }\n }\n\n // Static\n\n static jQueryInterface(config) {\n return this.each(function () {\n let data = Data.get(this, DATA_KEY)\n const _config = typeof config === 'object' ? config : null\n\n if (!data && /dispose|hide/.test(config)) {\n return\n }\n\n if (!data) {\n data = new Popover(this, _config)\n Data.set(this, DATA_KEY, data)\n }\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`)\n }\n\n data[config]()\n }\n })\n }\n}\n\n/**\n * ------------------------------------------------------------------------\n * jQuery\n * ------------------------------------------------------------------------\n * add .Popover to jQuery only if jQuery is present\n */\n\ndefineJQueryPlugin(NAME, Popover)\n\nexport default Popover\n","/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.0.0-beta3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nimport {\n defineJQueryPlugin,\n getSelectorFromElement,\n getUID,\n isElement,\n typeCheckConfig\n} from './util/index'\nimport Data from './dom/data'\nimport EventHandler from './dom/event-handler'\nimport Manipulator from './dom/manipulator'\nimport SelectorEngine from './dom/selector-engine'\nimport BaseComponent from './base-component'\n\n/**\n * ------------------------------------------------------------------------\n * Constants\n * ------------------------------------------------------------------------\n */\n\nconst NAME = 'scrollspy'\nconst DATA_KEY = 'bs.scrollspy'\nconst EVENT_KEY = `.${DATA_KEY}`\nconst DATA_API_KEY = '.data-api'\n\nconst Default = {\n offset: 10,\n method: 'auto',\n target: ''\n}\n\nconst DefaultType = {\n offset: 'number',\n method: 'string',\n target: '(string|element)'\n}\n\nconst EVENT_ACTIVATE = `activate${EVENT_KEY}`\nconst EVENT_SCROLL = `scroll${EVENT_KEY}`\nconst EVENT_LOAD_DATA_API = `load${EVENT_KEY}${DATA_API_KEY}`\n\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item'\nconst CLASS_NAME_ACTIVE = 'active'\n\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]'\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group'\nconst SELECTOR_NAV_LINKS = '.nav-link'\nconst SELECTOR_NAV_ITEMS = '.nav-item'\nconst SELECTOR_LIST_ITEMS = '.list-group-item'\nconst SELECTOR_DROPDOWN = '.dropdown'\nconst SELECTOR_DROPDOWN_TOGGLE = '.dropdown-toggle'\n\nconst METHOD_OFFSET = 'offset'\nconst METHOD_POSITION = 'position'\n\n/**\n * ------------------------------------------------------------------------\n * Class Definition\n * ------------------------------------------------------------------------\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element)\n this._scrollElement = this._element.tagName === 'BODY' ? window : this._element\n this._config = this._getConfig(config)\n this._selector = `${this._config.target} ${SELECTOR_NAV_LINKS}, ${this._config.target} ${SELECTOR_LIST_ITEMS}, ${this._config.target} .${CLASS_NAME_DROPDOWN_ITEM}`\n this._offsets = []\n this._targets = []\n this._activeTarget = null\n this._scrollHeight = 0\n\n EventHandler.on(this._scrollElement, EVENT_SCROLL, () => this._process())\n\n this.refresh()\n this._process()\n }\n\n // Getters\n\n static get Default() {\n return Default\n }\n\n static get DATA_KEY() {\n return DATA_KEY\n }\n\n // Public\n\n refresh() {\n const autoMethod = this._scrollElement === this._scrollElement.window ?\n METHOD_OFFSET :\n METHOD_POSITION\n\n const offsetMethod = this._config.method === 'auto' ?\n autoMethod :\n this._config.method\n\n const offsetBase = offsetMethod === METHOD_POSITION ?\n this._getScrollTop() :\n 0\n\n this._offsets = []\n this._targets = []\n this._scrollHeight = this._getScrollHeight()\n\n const targets = SelectorEngine.find(this._selector)\n\n targets.map(element => {\n const targetSelector = getSelectorFromElement(element)\n const target = targetSelector ? SelectorEngine.findOne(targetSelector) : null\n\n if (target) {\n const targetBCR = target.getBoundingClientRect()\n if (targetBCR.width || targetBCR.height) {\n return [\n Manipulator[offsetMethod](target).top + offsetBase,\n targetSelector\n ]\n }\n }\n\n return null\n })\n .filter(item => item)\n .sort((a, b) => a[0] - b[0])\n .forEach(item => {\n this._offsets.push(item[0])\n this._targets.push(item[1])\n })\n }\n\n dispose() {\n super.dispose()\n EventHandler.off(this._scrollElement, EVENT_KEY)\n\n this._scrollElement = null\n this._config = null\n this._selector = null\n this._offsets = null\n this._targets = null\n this._activeTarget = null\n this._scrollHeight = null\n }\n\n // Private\n\n _getConfig(config) {\n config = {\n ...Default,\n ...(typeof config === 'object' && config ? config : {})\n }\n\n if (typeof config.target !== 'string' && isElement(config.target)) {\n let { id } = config.target\n if (!id) {\n id = getUID(NAME)\n config.target.id = id\n }\n\n config.target = `#${id}`\n }\n\n typeCheckConfig(NAME, config, DefaultType)\n\n return config\n }\n\n _getScrollTop() {\n return this._scrollElement === window ?\n this._scrollElement.pageYOffset :\n this._scrollElement.scrollTop\n }\n\n _getScrollHeight() {\n return this._scrollElement.scrollHeight || Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight\n )\n }\n\n _getOffsetHeight() {\n return this._scrollElement === window ?\n window.innerHeight :\n this._scrollElement.getBoundingClientRect().height\n }\n\n _process() {\n const scrollTop = this._getScrollTop() + this._config.offset\n const scrollHeight = this._getScrollHeight()\n const maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight()\n\n if (this._scrollHeight !== scrollHeight) {\n this.refresh()\n }\n\n if (scrollTop >= maxScroll) {\n const target = this._targets[this._targets.length - 1]\n\n if (this._activeTarget !== target) {\n this._activate(target)\n }\n\n return\n }\n\n if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n this._activeTarget = null\n this._clear()\n return\n }\n\n for (let i = this._offsets.length; i--;) {\n const isActiveTarget = this._activeTarget !== this._targets[i] &&\n scrollTop >= this._offsets[i] &&\n (typeof this._offsets[i + 1] === 'undefined' || scrollTop < this._offsets[i + 1])\n\n if (isActiveTarget) {\n this._activate(this._targets[i])\n }\n }\n }\n\n _activate(target) {\n this._activeTarget = target\n\n this._clear()\n\n const queries = this._selector.split(',')\n .map(selector => `${selector}[data-bs-target=\"${target}\"],${selector}[href=\"${target}\"]`)\n\n const link = SelectorEngine.findOne(queries.join(','))\n\n if (link.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE, link.closest(SELECTOR_DROPDOWN))\n .classList.add(CLASS_NAME_ACTIVE)\n\n link.classList.add(CLASS_NAME_ACTIVE)\n } else {\n // Set triggered link as active\n link.classList.add(CLASS_NAME_ACTIVE)\n\n SelectorEngine.parents(link, SELECTOR_NAV_LIST_GROUP)\n .forEach(listGroup => {\n // Set triggered links parents as active\n // With both