From 9fe36070c1f3ffcb851773c75e8f2d82b1559ebc Mon Sep 17 00:00:00 2001 From: pushuo Date: Mon, 13 Mar 2023 11:50:33 +0800 Subject: [PATCH] add new theme fashion MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit wip wip wip wip admin form add hook Code format 优化插件市场返回上一页 Update openai migration optimize brands Optimize page and category hook 模版优化 delete black wip Plublish theme files. Ignore themes except default 删除demo-2 wip Get enabled themes. Theme seeder. Run theme seeder. update theme wip wip Switch theme and run db seeder code format wip wip --- .gitignore | 2 +- .../Http/Controllers/DesignController.php | 2 +- .../Http/Controllers/ThemeController.php | 83 + beike/Admin/Routes/admin.php | 4 + beike/Admin/View/Components/Sidebar.php | 3 +- beike/Admin/View/DesignBuilders/Image200.php | 44 + beike/Admin/View/DesignBuilders/Image300.php | 44 + beike/Helpers.php | 14 +- beike/Models/Plugin.php | 10 - beike/Plugin/Manager.php | 1 + beike/Plugin/Plugin.php | 32 + beike/Repositories/PluginRepo.php | 74 +- beike/Services/DesignService.php | 9 +- database/seeders/DatabaseSeeder.php | 1 + database/seeders/SettingsSeeder.php | 55 - database/seeders/ThemeSeeder.php | 1160 ++++++ .../Openai/Controllers/OpenaiController.php | 2 +- .../2023_02_27_173221_add_openai_logs.php | 20 +- public/image/default-theme.jpg | Bin 0 -> 74344 bytes resources/beike/admin/css/_page-theme.scss | 47 + resources/beike/admin/css/app.scss | 1 + .../admin/views/components/header.blade.php | 2 +- .../views/pages/design/module/icons.blade.php | 4 + .../pages/design/module/image200.blade.php | 95 + .../pages/design/module/image300.blade.php | 103 + .../views/pages/marketing/index.blade.php | 17 +- .../admin/views/pages/plugins/index.blade.php | 3 +- .../views/pages/products/form/form.blade.php | 6 +- .../beike/admin/views/pages/setting.blade.php | 4 - .../admin/views/pages/theme/index.blade.php | 72 + .../shop/fashion/css/account/account.scss | 63 + resources/beike/shop/fashion/css/app.scss | 38 + .../css/bootstrap/bootstrap-icons.scss | 3403 +++++++++++++++++ .../shop/fashion/css/bootstrap/bootstrap.scss | 176 + resources/beike/shop/fashion/css/cart.scss | 100 + .../beike/shop/fashion/css/element-ui.scss | 13 + resources/beike/shop/fashion/css/footer.scss | 103 + resources/beike/shop/fashion/css/global.scss | 326 ++ resources/beike/shop/fashion/css/header.scss | 457 +++ resources/beike/shop/fashion/css/home.scss | 105 + .../beike/shop/fashion/css/iconfont.scss | 23 + resources/beike/shop/fashion/css/login.scss | 125 + .../shop/fashion/css/module/module-brand.scss | 33 + .../shop/fashion/css/module/module-icon.scss | 27 + .../fashion/css/module/module-image-plus.scss | 50 + .../css/module/module-tab-product.scss | 27 + .../shop/fashion/css/module/slideshow.scss | 86 + resources/beike/shop/fashion/css/news.scss | 13 + .../beike/shop/fashion/css/order-success.scss | 77 + .../fashion/css/page-account-address.scss | 107 + .../shop/fashion/css/page-account-order.scss | 113 + .../beike/shop/fashion/css/page-brands.scss | 67 + .../shop/fashion/css/page-categories.scss | 230 ++ .../beike/shop/fashion/css/page-checkout.scss | 220 ++ .../beike/shop/fashion/css/page-list.scss | 50 + .../beike/shop/fashion/css/page-product.scss | 282 ++ .../beike/shop/fashion/css/product-style.scss | 148 + resources/beike/shop/fashion/js/app.js | 52 + .../shop/fashion/js/bootstrap-validation.js | 28 + resources/beike/shop/fashion/js/common.js | 128 + resources/beike/shop/fashion/js/header.js | 99 + resources/beike/shop/fashion/js/product.js | 31 + resources/lang/de/admin/plugin.php | 1 + resources/lang/de/admin/theme.php | 18 + resources/lang/de/common.php | 2 + resources/lang/en/admin/common.php | 1 + resources/lang/en/admin/plugin.php | 1 + resources/lang/en/admin/theme.php | 18 + resources/lang/en/common.php | 1 + resources/lang/es/admin/plugin.php | 1 + resources/lang/es/admin/theme.php | 18 + resources/lang/es/common.php | 2 + resources/lang/fr/admin/plugin.php | 1 + resources/lang/fr/admin/theme.php | 18 + resources/lang/fr/common.php | 2 + resources/lang/it/admin/plugin.php | 1 + resources/lang/it/admin/theme.php | 18 + resources/lang/it/common.php | 2 + resources/lang/ja/admin/plugin.php | 1 + resources/lang/ja/admin/theme.php | 18 + resources/lang/ja/common.php | 2 + resources/lang/ru/admin/plugin.php | 1 + resources/lang/ru/admin/theme.php | 18 + resources/lang/ru/common.php | 2 + resources/lang/zh_cn/admin/common.php | 1 + resources/lang/zh_cn/admin/plugin.php | 1 + resources/lang/zh_cn/admin/theme.php | 18 + resources/lang/zh_cn/common.php | 1 + resources/lang/zh_hk/admin/common.php | 1 + resources/lang/zh_hk/admin/plugin.php | 1 + resources/lang/zh_hk/admin/theme.php | 18 + resources/lang/zh_hk/common.php | 1 + themes/.gitignore | 2 + themes/black/home.blade.php | 9 - themes/black/layout/footer.blade.php | 85 - themes/black/layout/header.blade.php | 168 - themes/black/shared/menu-pc.blade.php | 61 - themes/default/design/brand.blade.php | 5 + themes/default/design/icons.blade.php | 13 +- themes/default/design/image200.blade.php | 13 + themes/default/design/image300.blade.php | 13 + themes/default/layout/header.blade.php | 84 +- themes/default/layout/master.blade.php | 6 +- webpack.mix.js | 5 + 104 files changed, 8899 insertions(+), 468 deletions(-) create mode 100644 beike/Admin/Http/Controllers/ThemeController.php create mode 100644 beike/Admin/View/DesignBuilders/Image200.php create mode 100644 beike/Admin/View/DesignBuilders/Image300.php create mode 100644 database/seeders/ThemeSeeder.php create mode 100644 public/image/default-theme.jpg create mode 100644 resources/beike/admin/css/_page-theme.scss create mode 100644 resources/beike/admin/views/pages/design/module/image200.blade.php create mode 100644 resources/beike/admin/views/pages/design/module/image300.blade.php create mode 100644 resources/beike/admin/views/pages/theme/index.blade.php create mode 100644 resources/beike/shop/fashion/css/account/account.scss create mode 100644 resources/beike/shop/fashion/css/app.scss create mode 100644 resources/beike/shop/fashion/css/bootstrap/bootstrap-icons.scss create mode 100644 resources/beike/shop/fashion/css/bootstrap/bootstrap.scss create mode 100644 resources/beike/shop/fashion/css/cart.scss create mode 100644 resources/beike/shop/fashion/css/element-ui.scss create mode 100644 resources/beike/shop/fashion/css/footer.scss create mode 100644 resources/beike/shop/fashion/css/global.scss create mode 100644 resources/beike/shop/fashion/css/header.scss create mode 100644 resources/beike/shop/fashion/css/home.scss create mode 100644 resources/beike/shop/fashion/css/iconfont.scss create mode 100644 resources/beike/shop/fashion/css/login.scss create mode 100644 resources/beike/shop/fashion/css/module/module-brand.scss create mode 100644 resources/beike/shop/fashion/css/module/module-icon.scss create mode 100644 resources/beike/shop/fashion/css/module/module-image-plus.scss create mode 100644 resources/beike/shop/fashion/css/module/module-tab-product.scss create mode 100644 resources/beike/shop/fashion/css/module/slideshow.scss create mode 100644 resources/beike/shop/fashion/css/news.scss create mode 100644 resources/beike/shop/fashion/css/order-success.scss create mode 100644 resources/beike/shop/fashion/css/page-account-address.scss create mode 100644 resources/beike/shop/fashion/css/page-account-order.scss create mode 100644 resources/beike/shop/fashion/css/page-brands.scss create mode 100644 resources/beike/shop/fashion/css/page-categories.scss create mode 100644 resources/beike/shop/fashion/css/page-checkout.scss create mode 100644 resources/beike/shop/fashion/css/page-list.scss create mode 100644 resources/beike/shop/fashion/css/page-product.scss create mode 100644 resources/beike/shop/fashion/css/product-style.scss create mode 100644 resources/beike/shop/fashion/js/app.js create mode 100644 resources/beike/shop/fashion/js/bootstrap-validation.js create mode 100644 resources/beike/shop/fashion/js/common.js create mode 100644 resources/beike/shop/fashion/js/header.js create mode 100644 resources/beike/shop/fashion/js/product.js create mode 100644 resources/lang/de/admin/theme.php create mode 100644 resources/lang/en/admin/theme.php create mode 100644 resources/lang/es/admin/theme.php create mode 100644 resources/lang/fr/admin/theme.php create mode 100644 resources/lang/it/admin/theme.php create mode 100644 resources/lang/ja/admin/theme.php create mode 100644 resources/lang/ru/admin/theme.php create mode 100644 resources/lang/zh_cn/admin/theme.php create mode 100644 resources/lang/zh_hk/admin/theme.php create mode 100644 themes/.gitignore delete mode 100644 themes/black/home.blade.php delete mode 100644 themes/black/layout/footer.blade.php delete mode 100644 themes/black/layout/header.blade.php delete mode 100644 themes/black/shared/menu-pc.blade.php create mode 100644 themes/default/design/image200.blade.php create mode 100644 themes/default/design/image300.blade.php diff --git a/.gitignore b/.gitignore index 8f4f8744..8ef845eb 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ /node_modules /public/.htaccess +/public/cache /public/hot /public/storage /public/upload/avatar @@ -23,4 +24,3 @@ yarn-error.log mix-manifest.json package-lock.json dist -/public/cache diff --git a/beike/Admin/Http/Controllers/DesignController.php b/beike/Admin/Http/Controllers/DesignController.php index e048e47b..c56edc32 100644 --- a/beike/Admin/Http/Controllers/DesignController.php +++ b/beike/Admin/Http/Controllers/DesignController.php @@ -20,7 +20,7 @@ class DesignController extends Controller $data = [ 'editors' => [ 'editor-slide_show', 'editor-image401', 'editor-tab_product', 'editor-product', 'editor-image100', - 'editor-brand', 'editor-icons', 'editor-rich_text', + 'editor-brand', 'editor-icons', 'editor-rich_text', 'editor-image200', 'editor-image300', ], 'design_settings' => system_setting('base.design_setting'), ]; diff --git a/beike/Admin/Http/Controllers/ThemeController.php b/beike/Admin/Http/Controllers/ThemeController.php new file mode 100644 index 00000000..b8db8687 --- /dev/null +++ b/beike/Admin/Http/Controllers/ThemeController.php @@ -0,0 +1,83 @@ + + * @created 2023-03-16 12:00:13 + * @modified 2023-03-16 12:00:13 + */ + +namespace Beike\Admin\Http\Controllers; + +use Beike\Repositories\PluginRepo; +use Beike\Repositories\SettingRepo; +use Database\Seeders\ThemeSeeder; +use Illuminate\Http\Request; + +class ThemeController extends Controller +{ + /** + * Themes index + * + * @return mixed + * @throws \Exception + */ + public function index() + { + $currentTheme = system_setting('base.theme'); + $themes = PluginRepo::getEnabledThemes(); + + $data['themes'][] = [ + 'name' => trans('admin/theme.theme_name'), + 'code' => 'default', + 'demo' => true, + 'image' => image_origin('image/default-theme.jpg'), + 'status' => $currentTheme == 'default', + ]; + + foreach ($themes as $theme) { + $themeCode = $theme->code; + $plugin = $theme->plugin; + $imagePath = $plugin->theme ?? 'image/theme.jpg'; + $data['themes'][] = [ + 'name' => $plugin->getLocaleName(), + 'code' => $themeCode, + 'demo' => true, + 'image' => plugin_asset($themeCode, $imagePath), + 'status' => $currentTheme == $themeCode, + ]; + } + + return view('admin::pages.theme.index', $data); + } + + /** + * Enable theme + * + * @param Request $request + * @param $themeCode + * @return mixed + * @throws \Exception + */ + public function update(Request $request, $themeCode) + { + $importDemo = $request->get('import_demo'); + if ($importDemo) { + if ($themeCode == 'default') { + $seeder = new ThemeSeeder(); + $seeder->run(); + } else { + $plugin = plugin($themeCode); + if ($plugin) { + PluginRepo::runSeeder($plugin); + } + } + } + + SettingRepo::update('system', 'base', ['theme' => $themeCode]); + + return json_success(trans('common.success')); + } +} diff --git a/beike/Admin/Routes/admin.php b/beike/Admin/Routes/admin.php index 52c627f0..5abfda76 100644 --- a/beike/Admin/Routes/admin.php +++ b/beike/Admin/Routes/admin.php @@ -112,6 +112,10 @@ Route::prefix($adminName) Route::middleware('can:design_menu_index')->get('design_menu/builder', [Controllers\DesignMenuController::class, 'index'])->name('design_menu.index'); Route::middleware('can:design_menu_index')->put('design_menu/builder', [Controllers\DesignMenuController::class, 'update'])->name('design_menu.update'); + // 模板主题 + Route::middleware('can:theme_index')->get('themes', [Controllers\ThemeController::class, 'index'])->name('theme.index'); + Route::middleware('can:theme_update')->put('themes/{code}', [Controllers\ThemeController::class, 'update'])->name('theme.update'); + Route::put('edit', [Controllers\EditController::class, 'update'])->name('edit'); Route::get('edit/locale', [Controllers\EditController::class, 'locale'])->name('edit.locale'); diff --git a/beike/Admin/View/Components/Sidebar.php b/beike/Admin/View/Components/Sidebar.php index 592e0913..5c32fd9e 100644 --- a/beike/Admin/View/Components/Sidebar.php +++ b/beike/Admin/View/Components/Sidebar.php @@ -162,7 +162,7 @@ class Sidebar extends Component */ private function getSettingSubPrefix() { - $prefix = ['settings.', 'admin_users.', 'admin_roles.', 'plugins.', 'marketing.', 'tax_classes', 'tax_rates', 'regions', 'currencies', 'languages', 'design_menu', 'countries', 'zones']; + $prefix = ['settings.', 'admin_users.', 'admin_roles.', 'plugins.', 'theme.', 'marketing.', 'tax_classes', 'tax_rates', 'regions', 'currencies', 'languages', 'design_menu', 'countries', 'zones']; return hook_filter('admin.sidebar.setting.prefix', $prefix); } @@ -253,6 +253,7 @@ class Sidebar extends Component ['route' => 'settings.index', 'icon' => 'fa fa-tachometer-alt'], ['route' => 'admin_users.index', 'icon' => 'fa fa-tachometer-alt'], ['route' => 'plugins.index', 'icon' => 'fa fa-tachometer-alt', 'hide_mobile' => 1], + ['route' => 'theme.index', 'icon' => 'fa fa-tachometer-alt', 'hide_mobile' => 1], ['route' => 'marketing.index', 'icon' => 'fa fa-tachometer-alt', 'hide_mobile' => 1], ['route' => 'regions.index', 'icon' => 'fa fa-tachometer-alt'], ['route' => 'tax_rates.index', 'icon' => 'fa fa-tachometer-alt'], diff --git a/beike/Admin/View/DesignBuilders/Image200.php b/beike/Admin/View/DesignBuilders/Image200.php new file mode 100644 index 00000000..804ef694 --- /dev/null +++ b/beike/Admin/View/DesignBuilders/Image200.php @@ -0,0 +1,44 @@ + + * @created 2022-07-08 17:09:15 + * @modified 2022-07-08 17:09:15 + */ + +namespace Beike\Admin\View\DesignBuilders; + +use Illuminate\Contracts\View\View; +use Illuminate\View\Component; + +class Image200 extends Component +{ + /** + * Create a new component instance. + * + * @return void + */ + public function __construct() + { + } + + /** + * Get the view / contents that represent the component. + * + * @return View + */ + public function render(): View + { + $data['register'] = [ + 'code' => 'image200', + 'sort' => 0, + 'name' => trans('admin/builder.modules_image_200'), + 'icon' => '', + ]; + + return view('admin::pages.design.module.image200', $data); + } +} diff --git a/beike/Admin/View/DesignBuilders/Image300.php b/beike/Admin/View/DesignBuilders/Image300.php new file mode 100644 index 00000000..50d88fcb --- /dev/null +++ b/beike/Admin/View/DesignBuilders/Image300.php @@ -0,0 +1,44 @@ + + * @created 2022-07-08 17:09:15 + * @modified 2022-07-08 17:09:15 + */ + +namespace Beike\Admin\View\DesignBuilders; + +use Illuminate\Contracts\View\View; +use Illuminate\View\Component; + +class Image300 extends Component +{ + /** + * Create a new component instance. + * + * @return void + */ + public function __construct() + { + } + + /** + * Get the view / contents that represent the component. + * + * @return View + */ + public function render(): View + { + $data['register'] = [ + 'code' => 'image300', + 'sort' => 0, + 'name' => trans('admin/builder.modules_image_300'), + 'icon' => '', + ]; + + return view('admin::pages.design.module.image300', $data); + } +} diff --git a/beike/Helpers.php b/beike/Helpers.php index b9c28b28..6fdb9a4d 100644 --- a/beike/Helpers.php +++ b/beike/Helpers.php @@ -6,6 +6,7 @@ use Beike\Models\AdminUser; use Beike\Models\Currency; use Beike\Models\Customer; use Beike\Models\Language; +use Beike\Plugin\Plugin; use Beike\Repositories\CurrencyRepo; use Beike\Repositories\LanguageRepo; use Beike\Services\CurrencyService; @@ -328,6 +329,15 @@ function plugin_path(string $path = ''): string return base_path('plugins') . ($path ? DIRECTORY_SEPARATOR . ltrim($path, DIRECTORY_SEPARATOR) : $path); } +/** + * @param $code + * @return Plugin|null + */ +function plugin($code): ?Plugin +{ + return app('plugin')->getPlugin($code); +} + /** * 插件图片缩放 * @@ -344,7 +354,7 @@ function plugin_resize($pluginCode, $image, int $width = 100, int $height = 100) return $image; } - $plugin = app('plugin')->getPlugin($pluginCode); + $plugin = plugin($pluginCode); $pluginDirName = $plugin->getDirname(); return (new \Beike\Services\ImageService($image))->setPluginDirName($pluginDirName)->resize($width, $height); @@ -364,7 +374,7 @@ function plugin_origin($pluginCode, $image) return $image; } - $plugin = app('plugin')->getPlugin($pluginCode); + $plugin = plugin($pluginCode); $pluginDirName = $plugin->getDirname(); return (new \Beike\Services\ImageService($image))->setPluginDirName($pluginDirName)->originUrl(); diff --git a/beike/Models/Plugin.php b/beike/Models/Plugin.php index d6c67664..cda90e4f 100644 --- a/beike/Models/Plugin.php +++ b/beike/Models/Plugin.php @@ -13,15 +13,5 @@ namespace Beike\Models; class Plugin extends Base { - public const TYPES = [ - 'shipping', // 配送方式 - 'payment', // 支付方式 - 'total', // 订单金额 - 'social', // 社交网络 - 'feature', // 功能模块 - 'language', // 语言翻译 - 'theme', // 主题模板 - ]; - protected $fillable = ['type', 'code']; } diff --git a/beike/Plugin/Manager.php b/beike/Plugin/Manager.php index 49682ccb..d8794c04 100644 --- a/beike/Plugin/Manager.php +++ b/beike/Plugin/Manager.php @@ -48,6 +48,7 @@ class Manager $pluginPath = $this->getPluginsDir() . DIRECTORY_SEPARATOR . $dirname; $plugin = new Plugin($pluginPath, $package); $status = $plugin->getStatus(); + $plugin->setType(Arr::get($package, 'type')); $plugin->setDirname($dirname); $plugin->setName(Arr::get($package, 'name')); $plugin->setDescription(Arr::get($package, 'description')); diff --git a/beike/Plugin/Plugin.php b/beike/Plugin/Plugin.php index 30cd92c2..6c1d069c 100644 --- a/beike/Plugin/Plugin.php +++ b/beike/Plugin/Plugin.php @@ -20,6 +20,18 @@ use Illuminate\Support\Str; class Plugin implements Arrayable, \ArrayAccess { + public const TYPES = [ + 'shipping', // 配送方式 + 'payment', // 支付方式 + 'total', // 订单金额 + 'social', // 社交网络 + 'feature', // 功能模块 + 'language', // 语言翻译 + 'theme', // 主题模板 + ]; + + protected $type; + protected $path; protected $name; @@ -59,6 +71,21 @@ class Plugin implements Arrayable, \ArrayAccess return Arr::get($this->packageInfo, $name); } + /** + * Set plugin Type + * + * @throws \Exception + */ + public function setType(string $type): self + { + if (! in_array($type, self::TYPES)) { + throw new \Exception('Invalid plugin type, must be one of ' . implode(',', self::TYPES)); + } + $this->type = $type; + + return $this; + } + public function setDirname(string $dirName): self { $this->dirName = $dirName; @@ -187,6 +214,11 @@ class Plugin implements Arrayable, \ArrayAccess return (string) $this->description; } + public function getType(): string + { + return $this->type; + } + public function getDirname(): string { return $this->dirName; diff --git a/beike/Repositories/PluginRepo.php b/beike/Repositories/PluginRepo.php index 0393ce50..8de846d0 100644 --- a/beike/Repositories/PluginRepo.php +++ b/beike/Repositories/PluginRepo.php @@ -26,7 +26,7 @@ class PluginRepo public static function getTypes(): array { $types = []; - foreach (Plugin::TYPES as $item) { + foreach (BPlugin::TYPES as $item) { $types[] = [ 'value' => $item, 'label' => trans("admin/plugin.{$item}"), @@ -38,11 +38,12 @@ class PluginRepo /** * 安装插件到系统: 插入数据 - * @param BPlugin $bPlugin + * @param BPlugin $bPlugin + * @throws \Exception */ public static function installPlugin(BPlugin $bPlugin) { - // self::publishStaticFiles($bPlugin); + self::publishThemeFiles($bPlugin); self::migrateDatabase($bPlugin); $type = $bPlugin->type; $code = $bPlugin->code; @@ -72,6 +73,51 @@ class PluginRepo } } + /** + * Publish theme files, include public and blade files. + * + * @param $bPlugin + */ + public static function publishThemeFiles($bPlugin) + { + if ($bPlugin->getType() != 'theme') { + return; + } + + $publicPath = $bPlugin->getPath() . '/Static/public'; + if (is_dir($publicPath)) { + File::copyDirectory($publicPath, public_path('/')); + } + + $themePath = $bPlugin->getPath() . '/Themes'; + if (is_dir($themePath)) { + File::copyDirectory($themePath, base_path('themes')); + } + } + + /** + * Run plugin seeder + * + * @param $bPlugin + * @throws \Exception + */ + public static function runSeeder($bPlugin) + { + $seederPath = $bPlugin->getPath() . '/Seeders/'; + if (is_dir($seederPath)) { + + $seederFiles = glob($seederPath . '*'); + foreach ($seederFiles as $seederFile) { + $seederName = basename($seederFile, '.php'); + $className = "\\Plugin\\{$bPlugin->getDirname()}\\Seeders\\{$seederName}"; + if (class_exists($className)) { + $seeder = new $className; + $seeder->run(); + } + } + } + } + /** * 数据库迁移 */ @@ -99,7 +145,6 @@ class PluginRepo */ public static function uninstallPlugin(BPlugin $bPlugin) { - // self::removeStaticFiles($bPlugin); self::rollbackDatabase($bPlugin); $type = $bPlugin->type; $code = $bPlugin->code; @@ -217,7 +262,7 @@ class PluginRepo $allPlugins = self::allPlugins(); return $allPlugins->where('type', 'shipping')->filter(function ($item) { - $plugin = app('plugin')->getPlugin($item->code); + $plugin = plugin($item->code); if ($plugin) { $item->plugin = $plugin; } @@ -234,7 +279,24 @@ class PluginRepo $allPlugins = self::allPlugins(); return $allPlugins->where('type', 'payment')->filter(function ($item) { - $plugin = app('plugin')->getPlugin($item->code); + $plugin = plugin($item->code); + if ($plugin) { + $item->plugin = $plugin; + } + + return $plugin && $plugin->getEnabled(); + }); + } + + /** + * Get all enabled themes + */ + public static function getEnabledThemes(): Collection + { + $allPlugins = self::allPlugins(); + + return $allPlugins->where('type', 'theme')->filter(function ($item) { + $plugin = plugin($item->code); if ($plugin) { $item->plugin = $plugin; } diff --git a/beike/Services/DesignService.php b/beike/Services/DesignService.php index b24d3e2e..3a53cfec 100644 --- a/beike/Services/DesignService.php +++ b/beike/Services/DesignService.php @@ -50,7 +50,7 @@ class DesignService $content['module_code'] = $moduleCode; if ($moduleCode == 'slideshow') { return self::handleSlideShow($content); - } elseif (in_array($moduleCode, ['image401', 'image100'])) { + } elseif (in_array($moduleCode, ['image401', 'image100', 'image200', 'image300'])) { return self::handleImage401($content); } elseif ($moduleCode == 'brand') { return self::handleBrand($content); @@ -142,9 +142,10 @@ class DesignService $images = []; foreach ($content['images'] as $image) { $images[] = [ - 'image' => image_origin($image['image'] ?? ''), - 'text' => $image['text'][locale()] ?? '', - 'link' => self::handleLink($image['link']['type'] ?? '', $image['link']['value'] ?? ''), + 'image' => image_origin($image['image'] ?? ''), + 'text' => $image['text'][locale()] ?? '', + 'sub_text' => $image['sub_text'][locale()] ?? '', + 'link' => self::handleLink($image['link']['type'] ?? '', $image['link']['value'] ?? ''), ]; } diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php index 62824aa7..c113ed65 100644 --- a/database/seeders/DatabaseSeeder.php +++ b/database/seeders/DatabaseSeeder.php @@ -30,6 +30,7 @@ class DatabaseSeeder extends Seeder ProductsSeeder::class, AttributesSeeder::class, SettingsSeeder::class, + ThemeSeeder::class, ]); } diff --git a/database/seeders/SettingsSeeder.php b/database/seeders/SettingsSeeder.php index cbd46bf4..3465f975 100644 --- a/database/seeders/SettingsSeeder.php +++ b/database/seeders/SettingsSeeder.php @@ -40,7 +40,6 @@ class SettingsSeeder extends Seeder return [ ["type" => "system", "space" => "base", "name" => "country_id", "value" => "44", "json" => 0], ["type" => "system", "space" => "base", "name" => "locale", "value" => "en", "json" => 0], - ["type" => "system", "space" => "base", "name" => "design_setting", "value" => $this->getHomeSetting(), "json" => 1], ["type" => "system", "space" => "base", "name" => "theme", "value" => "default", "json" => 0], ["type" => "plugin", "space" => "service_charge", "name" => "status", "value" => "1", "json" => 0], ["type" => "system", "space" => "base", "name" => "status", "value" => "", "json" => 0], @@ -50,8 +49,6 @@ class SettingsSeeder extends Seeder ["type" => "system", "space" => "base", "name" => "currency", "value" => "USD", "json" => 0], ["type" => "system", "space" => "base", "name" => "zone_id", "value" => "710", "json" => 0], ["type" => "plugin", "space" => "header_menu", "name" => "status", "value" => "1", "json" => 0], - ["type" => "system", "space" => "base", "name" => "footer_setting", "value" => $this->getFooterSetting(), - "json" => 1], ["type" => "plugin", "space" => "stripe", "name" => "publishable_key", "value" => "pk_test_Flhi0NU77hK1IBFNpl02o5hN", "json" => 0], ["type" => "plugin", "space" => "stripe", "name" => "secret_key", "value" => "sk_test_FlsXnYjhoqLb6d5JzvpgKdMM", "json" => 0], ["type" => "plugin", "space" => "stripe", "name" => "test_mode", "value" => "1", "json" => 0], @@ -68,7 +65,6 @@ class SettingsSeeder extends Seeder ["type" => "system", "space" => "base", "name" => "meta_keywords", "value" => "开源电商,开源代码,开源电商项目,b2b独立站,dtc独立站,跨境电商网", "json" => 0], ["type" => "system", "space" => "base", "name" => "telephone", "value" => "028-87966209", "json" => 0], ["type" => "system", "space" => "base", "name" => "email", "value" => "marketing@guangda.work", "json" => 0], - ["type" => "system", "space" => "base", "name" => "menu_setting", "value" => $this->getMenuSetting(), "json" => 1], ["type" => "plugin", "space" => "flat_shipping", "name" => "type", "value" => "percent", "json" => 0], ["type" => "plugin", "space" => "flat_shipping", "name" => "value", "value" => "10", "json" => 0], ["type" => "system", "space" => "base", "name" => "default_customer_group_id", "value" => "1", "json" => 0], @@ -79,55 +75,4 @@ class SettingsSeeder extends Seeder ["type" => "system", "space" => "base", "name" => "rate_api_key", "value" => "", "json" => 0], ]; } - - - /** - * 设置菜单数据 - * - * @return false|string - * @throws \Exception - */ - private function getMenuSetting(): bool|string - { - $json = '{"menus":[{"isFull":false,"badge":{"isShow":false,"name":{"en":"","zh_cn":""},"bg_color":"#fd560f","text_color":"#ffffff"},"link":{"type":"category","value":100006,"text":[],"link":""},"name":{"en":"Sports","zh_cn":"\u8fd0\u52a8\u6f6e\u5427"},"isChildren":false,"childrenGroup":[{"name":{"en":"leading the fashion","zh_cn":"\u5f15\u9886\u65f6\u5c1a"},"type":"","image":{"image":[],"link":{"type":"product","value":"","text":[]}},"children":[{"name":[],"link":{"type":"brand","value":3,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"category","value":100008,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"brand","value":5,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"category","value":100003,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"category","value":100010,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"category","value":100010,"text":{"en":"","zh_cn":""},"link":""}}]},{"name":{"en":"Special offer","zh_cn":"\u7279\u4ef7\u4f18\u60e0"},"type":"link","image":{"image":[],"link":{"type":"product","value":"","text":[]}},"children":[{"name":[],"link":{"type":"category","value":100008,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"brand","value":6,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"category","value":100003,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"brand","value":7,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"brand","value":8,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"brand","value":2,"text":{"en":"","zh_cn":""},"link":""}}]},{"name":{"en":"Popular products","zh_cn":"\u7206\u6b3e\u5546\u54c1"},"type":"image","image":{"image":{"en":"catalog\/demo\/banner\/2_en.jpg","zh_cn":"catalog\/demo\/banner\/2.jpg"},"link":{"type":"product","value":1,"text":[],"link":""}},"children":[]}]},{"isFull":false,"badge":{"isShow":false,"name":{"en":"NEW","zh_cn":"\u65b0\u54c1"},"bg_color":"#7628A2","text_color":"#ffffff"},"link":{"type":"category","value":100003,"text":[],"link":""},"name":{"en":"Fashion","zh_cn":"\u65f6\u5c1a\u6f6e\u6d41"},"isChildren":false,"childrenGroup":[{"name":{"en":"global purchase","zh_cn":"\u5168\u7403\u8d2d"},"type":"link","image":{"image":[],"link":{"type":"product","value":"","text":[]}},"children":[{"name":[],"link":{"type":"brand","value":8,"text":{"en":"","zh_cn":""},"link":"","new_window":true}},{"name":[],"link":{"type":"category","value":100003,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"brand","value":7,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"page","value":21,"text":{"en":"","zh_cn":""},"link":""}}]},{"name":{"en":"Fashion","zh_cn":"\u65f6\u5c1a"},"type":"image","image":{"image":{"en":"catalog\/demo\/product\/16.jpg","zh_cn":"catalog\/demo\/product\/16.jpg"},"link":{"type":"product","value":4,"text":[],"link":""}},"children":[{"name":[],"link":{"type":"custom","value":"https:\/\/www.baidu.com","text":{"en":"","zh_cn":"baidu "},"link":"","new_window":true}}]},{"name":{"en":"recommended","zh_cn":"\u5e97\u957f\u63a8\u8350"},"type":"image","image":{"image":{"en":"catalog\/demo\/product\/13.jpg","zh_cn":"catalog\/demo\/product\/13.jpg"},"link":{"type":"product","value":2,"text":[],"link":""}},"children":[]}]},{"isFull":false,"badge":{"isShow":false,"name":{"en":"","zh_cn":""},"bg_color":"#fd560f","text_color":"#ffffff"},"link":{"type":"category","value":100007,"text":[],"link":""},"name":{"en":"Digital","zh_cn":"\u6570\u7801\u4ea7\u54c1"},"isChildren":false,"childrenGroup":[{"name":{"en":"Big promotion","zh_cn":"\u5927\u724c\u4fc3\u9500"},"type":"","image":{"image":[],"link":{"type":"product","value":"","text":[]}},"children":[{"name":[],"link":{"type":"brand","value":2,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"brand","value":8,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"brand","value":9,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"brand","value":1,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"brand","value":6,"text":{"en":"","zh_cn":""},"link":""}}]},{"name":{"en":"Activity of gift","zh_cn":"\u6d3b\u52a8\u793c\u54c1"},"type":"","image":{"image":[],"link":{"type":"product","value":"","text":[]}},"children":[{"name":[],"link":{"type":"category","value":100003,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"category","value":100006,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"category","value":100012,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"category","value":100006,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"category","value":100010,"text":{"en":"","zh_cn":""},"link":""}}]},{"name":{"en":"All three fold","zh_cn":"\u5168\u573a\u4e09\u6298"},"type":"","image":{"image":[],"link":{"type":"product","value":"","text":[]}},"children":[{"name":[],"link":{"type":"brand","value":1,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"brand","value":3,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"brand","value":7,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"brand","value":8,"text":{"en":"","zh_cn":""},"link":""}},{"name":[],"link":{"type":"brand","value":9,"text":{"en":"","zh_cn":""},"link":""}}]}]},{"isFull":false,"badge":{"isShow":false,"name":{"en":"Hot","zh_cn":"\u70ed\u5356"},"bg_color":"#FF4D00","text_color":"#ffffff"},"link":{"type":"category","value":100018,"text":[],"link":""},"name":{"en":"Hot","zh_cn":"\u70ed\u5356\u7279\u60e0"},"isChildren":false,"childrenGroup":[]},{"isFull":false,"badge":{"isShow":false,"name":{"en":"Sales","zh_cn":"\u5927\u724c\u76f4\u9500"},"bg_color":"#00C5C5","text_color":"#ffffff"},"link":{"type":"static","value":"brands.index","text":[],"link":""},"name":{"en":"Brand","zh_cn":"\u56fd\u9645\u6f6e\u724c"},"isChildren":false,"childrenGroup":[]}]}'; - $setting = json_decode($json, true); - if (empty($setting)) { - throw new \Exception("无效的菜单设置"); - } - return json_encode($setting); - } - - - /** - * 设置首页装修数据 - * - * @return false|string - * @throws \Exception - */ - private function getHomeSetting(): bool|string - { - $json = '{"modules":[{"content":{"style":{"background_color":""},"full":true,"floor":{"2":"","3":""},"images":[{"image":{"en":"catalog\/demo\/banner\/banner-4-en.jpg","zh_cn":"catalog\/demo\/banner\/banner-4.jpg"},"show":true,"link":{"type":"category","value":100012,"link":""}},{"image":{"en":"catalog\/demo\/banner\/banner-3-en.jpg","zh_cn":"catalog\/demo\/banner\/banner-3.jpg"},"show":false,"link":{"type":"category","value":100008,"link":""}}]},"code":"slideshow","name":"\u5e7b\u706f\u7247","module_id":"b0448efb0989"},{"code":"image401","content":{"style":{"background_color":""},"floor":{"zh_cn":"","en":""},"images":[{"image":{"en":"catalog\/demo\/image_plus_1-en.png","zh_cn":"catalog\/demo\/image_plus_1.png"},"show":false,"link":{"type":"category","value":100000,"link":""}},{"image":{"en":"catalog\/demo\/image_plus_2-en.png","zh_cn":"catalog\/demo\/image_plus_2.png"},"show":false,"link":{"type":"category","value":100007,"link":""}},{"image":{"en":"catalog\/demo\/image_plus_3-en.png","zh_cn":"catalog\/demo\/image_plus_3.png"},"show":false,"link":{"type":"product","value":"","link":""}},{"image":{"en":"catalog\/demo\/image_plus_4-en.png","zh_cn":"catalog\/demo\/image_plus_4.png"},"show":true,"link":{"type":"product","value":2,"link":""}}]},"module_id":"g1vrlixfzfjk9a3k","name":"\u4e00\u884c\u56db\u56fe-pro"},{"code":"tab_product","content":{"style":{"background_color":""},"floor":{"zh_cn":"","en":""},"tabs":[{"title":{"en":"latest promotions","zh_cn":"\u6700\u65b0\u4fc3\u9500"},"products":[1,2,3,4,5,7,8,11]},{"title":{"en":"Fashion sheet","zh_cn":"\u65f6\u5c1a\u5355\u54c1"},"products":[6,49,328,9,10,11,12,13,14,15]}],"title":{"en":"Recommended products","zh_cn":"\u63a8\u8350\u5546\u54c1"}},"module_id":"s6e7e3vucriazzbi","name":"\u9009\u9879\u5361\u5546\u54c1"},{"code":"image100","content":{"style":{"background_color":""},"floor":{"zh_cn":"","en":""},"full":true,"images":[{"image":{"en":"catalog\/demo\/banner\/banner-2-en.png","zh_cn":"catalog\/demo\/banner\/banner-2.png"},"show":true,"link":{"type":"category","value":100003,"link":""}}]},"module_id":"0htwy33z3xcituyx","name":"\u5355\u56fe\u6a21\u5757"},{"code":"brand","content":{"style":{"background_color":""},"floor":{"en":"","zh_cn":""},"full":true,"title":{"en":"Recommended Brand","zh_cn":"\u63a8\u8350\u54c1\u724c"},"brands":[1,2,3,4,5,6,7,8,9,10,11,12]},"module_id":"yln7isoqlxovqz3k","name":"\u54c1\u724c\u6a21\u5757"}]}'; - $setting = json_decode($json, true); - if (empty($setting)) { - throw new \Exception("无效的首页装修设置"); - } - return json_encode($setting); - } - - - /** - * 设置页尾数据 - * - * @return false|string - * @throws \Exception - */ - private function getFooterSetting(): bool|string - { - $json = '{"services":{"enable":true,"items":[{"image":"catalog\/demo\/services-icon\/4.png","title":{"en":"Material world","zh_cn":"\u7269\u884c\u5929\u4e0b"},"sub_title":{"en":"Multi - warehouse fast delivery","zh_cn":"\u591a\u4ed3\u76f4\u53d1 \u6781\u901f\u914d\u9001\u591a\u4ed3\u76f4\u53d1 \u6781\u901f\u914d\u9001"},"show":false},{"image":"catalog\/demo\/services-icon\/3.png","title":{"en":"Return all","zh_cn":"\u9000\u6362\u65e0\u5fe7"},"sub_title":{"en":"Rest assured shopping return worry","zh_cn":"\u653e\u5fc3\u8d2d\u7269 \u9000\u8fd8\u65e0\u5fe7\u653e\u5fc3\u8d2d\u7269 \u9000\u8fd8\u65e0\u5fe7"},"show":false},{"image":"catalog\/demo\/services-icon\/1.png","title":{"en":"Delicate service","zh_cn":"\u7cbe\u81f4\u670d\u52a1"},"sub_title":{"en":"Exquisite service and after-sales guarantee","zh_cn":"\u7cbe\u81f4\u670d\u52a1 \u552e\u540e\u4fdd\u969c\u7cbe\u81f4\u670d\u52a1 \u552e\u540e\u4fdd\u969c"},"show":false},{"image":"catalog\/demo\/services-icon\/2.png","title":{"en":"With reduced activity","zh_cn":"\u6ee1\u51cf\u6d3b\u52a8"},"sub_title":{"en":"If 500 yuan is exceeded, a reduction of 90 yuan will be given","zh_cn":"\u6ee1500\u5143\u7acb\u51cf90\uff0c\u65b0\u7528\u6237\u7acb\u51cf200"},"show":true}]},"content":{"intro":{"logo":"catalog\/logo.png","text":{"en":"

Chengdu Guangda Network Technology Co., Ltd. is a high-tech enterprise mainly engaged in Internet development. The company was established in August 2014.<\/p>","zh_cn":"

\u6210\u90fd\u5149\u5927\u7f51\u7edc\u79d1\u6280\u6709\u9650\u516c\u53f8<\/strong><\/p>\n

\u662f\u4e00\u5bb6\u4e13\u4e1a\u4e92\u8054\u7f51\u5f00\u53d1\u7684\u9ad8\u79d1\u6280\u4f01\u4e1a\uff0c\u516c\u53f8\u6210\u7acb\u4e8e2014\u5e748\u6708\u3002<\/p>\n

\u516c\u53f8\u4ee5\u4e3a\u5ba2\u6237\u521b\u9020\u4ef7\u503c\u4e3a\u6838\u5fc3\u4ef7\u503c\u89c2\uff0c\u5e2e\u52a9\u4e2d\u5c0f\u4f01\u4e1a\u5229\u7528\u4e92\u8054\u7f51\u5de5\u5177\u63d0\u5347\u4ea7\u54c1\u9500\u552e\u3002<\/p>"},"social_network":[]},"link1":{"title":{"en":"About us","zh_cn":"\u5173\u4e8e\u6211\u4eec"},"links":[{"link":"","type":"page","value":21,"text":{"en":"about us","zh_cn":"\u5173\u4e8e\u6211\u4eec"}},{"type":"page","value":18,"text":[],"link":""},{"type":"page","value":12,"text":[],"link":""},{"type":"static","value":"account.order.index","text":{"en":"","zh_cn":""},"link":""}]},"link2":{"title":{"en":"Account","zh_cn":"\u4f1a\u5458\u4e2d\u5fc3"},"links":[{"type":"static","value":"account.index","text":[],"link":""},{"type":"static","value":"account.order.index","text":[],"link":""},{"type":"static","value":"account.wishlist.index","text":[],"link":""},{"type":"static","value":"brands.index","text":{"en":"","zh_cn":""},"link":""}]},"link3":{"title":{"en":"Other","zh_cn":"\u5176\u4ed6"},"links":[{"type":"static","value":"brands.index","text":[],"link":""},{"type":"static","value":"account.index","text":{"en":"","zh_cn":""},"link":""},{"type":"page","value":20,"text":{"en":"","zh_cn":""},"link":""},{"type":"page","value":21,"text":{"en":"","zh_cn":""},"link":""}]},"contact":{"telephone":"028-87966209","address":{"en":"G8 Tianfu Software Park Chengdu China, Guangda Network Technology Co., Ltd.","zh_cn":"\u6210\u90fd\u5e02\u9ad8\u65b0\u533a\u76ca\u5dde\u5927\u9053\u4e2d\u6bb51858\u53f7\u5929\u5e9c\u8f6f\u4ef6\u56edG8 \u6210\u90fd\u5149\u5927\u7f51\u7edc\u79d1\u6280\u6709\u9650\u516c\u53f8"},"email":"marketing@guangda.work"}},"bottom":{"copyright":{"en":"

  - Chengdu Guangda Network Technology © 2023<\/div>","zh_cn":"
  - \u6210\u90fd\u5149\u5927\u7f51\u7edc\u79d1\u6280 © 2023<\/div>"},"image":"catalog\/demo\/banner\/pay_icons.png"}}'; - $setting = json_decode($json, true); - if (empty($setting)) { - throw new \Exception("无效的底部配置数据"); - } - return json_encode($setting); - } } diff --git a/database/seeders/ThemeSeeder.php b/database/seeders/ThemeSeeder.php new file mode 100644 index 00000000..44250c7f --- /dev/null +++ b/database/seeders/ThemeSeeder.php @@ -0,0 +1,1160 @@ + + * @created 2023-03-16 14:26:53 + * @modified 2023-03-16 14:26:53 + */ + +namespace Database\Seeders; + +use Beike\Repositories\SettingRepo; +use Illuminate\Database\Seeder; + +class ThemeSeeder extends Seeder +{ + + /** + * Run the database seeds. + * + * @return void + * @throws \Exception + */ + public function run() + { + $menuSetting = $this->getMenuSetting(); + SettingRepo::update('system', 'base', ['menu_setting' => $menuSetting]); + + $homeSetting = $this->getHomeSetting(); + SettingRepo::update('system', 'base', ['design_setting' => $homeSetting]); + + $footerSetting = $this->getFooterSetting(); + SettingRepo::update('system', 'base', ['footer_setting' => $footerSetting]); + } + + /** + * 设置头部菜单数据 + * + * @return array + * @throws \Exception + */ + private function getMenuSetting(): array + { + return [ + "menus" => [ + [ + "isFull" => false, + "badge" => [ + "isShow" => false, + "name" => [ + "en" => "", + "zh_cn" => "" + ], + "bg_color" => "#fd560f", + "text_color" => "#ffffff" + ], + "link" => [ + "type" => "category", + "value" => 100006, + "text" => [], + "link" => "" + ], + "name" => [ + "en" => "Sports", + "zh_cn" => "运动潮吧" + ], + "isChildren" => false, + "childrenGroup" => [ + [ + "name" => [ + "en" => "leading the fashion", + "zh_cn" => "引领时尚" + ], + "type" => "", + "image" => [ + "image" => [], + "link" => [ + "type" => "product", + "value" => "", + "text" => [] + ] + ], + "children" => [ + [ + "name" => [], + "link" => [ + "type" => "brand", + "value" => 3, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "category", + "value" => 100008, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "brand", + "value" => 5, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "category", + "value" => 100003, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "category", + "value" => 100010, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "category", + "value" => 100010, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ] + ] + ], + [ + "name" => [ + "en" => "Special offer", + "zh_cn" => "特价优惠" + ], + "type" => "link", + "image" => [ + "image" => [], + "link" => [ + "type" => "product", + "value" => "", + "text" => [] + ] + ], + "children" => [ + [ + "name" => [], + "link" => [ + "type" => "category", + "value" => 100008, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "brand", + "value" => 6, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "category", + "value" => 100003, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "brand", + "value" => 7, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "brand", + "value" => 8, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "brand", + "value" => 2, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ] + ] + ], + [ + "name" => [ + "en" => "Popular products", + "zh_cn" => "爆款商品" + ], + "type" => "image", + "image" => [ + "image" => [ + "en" => "catalog/demo/banner/2_en.jpg", + "zh_cn" => "catalog/demo/banner/2.jpg" + ], + "link" => [ + "type" => "product", + "value" => 1, + "text" => [], + "link" => "" + ] + ], + "children" => [] + ] + ] + ], + [ + "isFull" => false, + "badge" => [ + "isShow" => false, + "name" => [ + "en" => "NEW", + "zh_cn" => "新品" + ], + "bg_color" => "#7628A2", + "text_color" => "#ffffff" + ], + "link" => [ + "type" => "category", + "value" => 100003, + "text" => [], + "link" => "" + ], + "name" => [ + "en" => "Fashion", + "zh_cn" => "时尚潮流" + ], + "isChildren" => false, + "childrenGroup" => [ + [ + "name" => [ + "en" => "global purchase", + "zh_cn" => "全球购" + ], + "type" => "link", + "image" => [ + "image" => [], + "link" => [ + "type" => "product", + "value" => "", + "text" => [] + ] + ], + "children" => [ + [ + "name" => [], + "link" => [ + "type" => "brand", + "value" => 8, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "", + "new_window" => true + ] + ], + [ + "name" => [], + "link" => [ + "type" => "category", + "value" => 100003, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "brand", + "value" => 7, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "page", + "value" => 21, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ] + ] + ], + [ + "name" => [ + "en" => "Fashion", + "zh_cn" => "时尚" + ], + "type" => "image", + "image" => [ + "image" => [ + "en" => "catalog/demo/product/16.jpg", + "zh_cn" => "catalog/demo/product/16.jpg" + ], + "link" => [ + "type" => "product", + "value" => 4, + "text" => [], + "link" => "" + ] + ], + "children" => [ + [ + "name" => [], + "link" => [ + "type" => "custom", + "value" => "https://www.baidu.com", + "text" => [ + "en" => "", + "zh_cn" => "baidu " + ], + "link" => "", + "new_window" => true + ] + ] + ] + ], + [ + "name" => [ + "en" => "recommended", + "zh_cn" => "店长推荐" + ], + "type" => "image", + "image" => [ + "image" => [ + "en" => "catalog/demo/product/13.jpg", + "zh_cn" => "catalog/demo/product/13.jpg" + ], + "link" => [ + "type" => "product", + "value" => 2, + "text" => [], + "link" => "" + ] + ], + "children" => [] + ] + ] + ], + [ + "isFull" => false, + "badge" => [ + "isShow" => false, + "name" => [ + "en" => "", + "zh_cn" => "" + ], + "bg_color" => "#fd560f", + "text_color" => "#ffffff" + ], + "link" => [ + "type" => "category", + "value" => 100007, + "text" => [], + "link" => "" + ], + "name" => [ + "en" => "Digital", + "zh_cn" => "数码产品" + ], + "isChildren" => false, + "childrenGroup" => [ + [ + "name" => [ + "en" => "Big promotion", + "zh_cn" => "大牌促销" + ], + "type" => "", + "image" => [ + "image" => [], + "link" => [ + "type" => "product", + "value" => "", + "text" => [] + ] + ], + "children" => [ + [ + "name" => [], + "link" => [ + "type" => "brand", + "value" => 2, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "brand", + "value" => 8, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "brand", + "value" => 9, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "brand", + "value" => 1, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "brand", + "value" => 6, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ] + ] + ], + [ + "name" => [ + "en" => "Activity of gift", + "zh_cn" => "活动礼品" + ], + "type" => "", + "image" => [ + "image" => [], + "link" => [ + "type" => "product", + "value" => "", + "text" => [] + ] + ], + "children" => [ + [ + "name" => [], + "link" => [ + "type" => "category", + "value" => 100003, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "category", + "value" => 100006, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "category", + "value" => 100012, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "category", + "value" => 100006, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "category", + "value" => 100010, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ] + ] + ], + [ + "name" => [ + "en" => "All three fold", + "zh_cn" => "全场三折" + ], + "type" => "", + "image" => [ + "image" => [], + "link" => [ + "type" => "product", + "value" => "", + "text" => [] + ] + ], + "children" => [ + [ + "name" => [], + "link" => [ + "type" => "brand", + "value" => 1, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "brand", + "value" => 3, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "brand", + "value" => 7, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "brand", + "value" => 8, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ], + [ + "name" => [], + "link" => [ + "type" => "brand", + "value" => 9, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ] + ] + ] + ] + ], + [ + "isFull" => false, + "badge" => [ + "isShow" => false, + "name" => [ + "en" => "Hot", + "zh_cn" => "热卖" + ], + "bg_color" => "#FF4D00", + "text_color" => "#ffffff" + ], + "link" => [ + "type" => "category", + "value" => 100018, + "text" => [], + "link" => "" + ], + "name" => [ + "en" => "Hot", + "zh_cn" => "热卖特惠" + ], + "isChildren" => false, + "childrenGroup" => [] + ], + [ + "isFull" => false, + "badge" => [ + "isShow" => false, + "name" => [ + "en" => "Sales", + "zh_cn" => "大牌直销" + ], + "bg_color" => "#00C5C5", + "text_color" => "#ffffff" + ], + "link" => [ + "type" => "static", + "value" => "brands.index", + "text" => [], + "link" => "" + ], + "name" => [ + "en" => "Brand", + "zh_cn" => "国际潮牌" + ], + "isChildren" => false, + "childrenGroup" => [] + ] + ] + ]; + } + + /** + * 设置首页装修数据 + * + * @return mixed + * @throws \Exception + */ + private function getHomeSetting(): array + { + return [ + "modules" => [ + [ + "content" => [ + "style" => [ + "background_color" => "" + ], + "full" => true, + "floor" => [ + "2" => "", + "3" => "" + ], + "images" => [ + [ + "image" => [ + "en" => "catalog/demo/banner/banner-4-en.jpg", + "zh_cn" => "catalog/demo/banner/banner-4.jpg" + ], + "show" => true, + "link" => [ + "type" => "category", + "value" => 100012, + "link" => "" + ] + ], + [ + "image" => [ + "en" => "catalog/demo/banner/banner-3-en.jpg", + "zh_cn" => "catalog/demo/banner/banner-3.jpg" + ], + "show" => false, + "link" => [ + "type" => "category", + "value" => 100008, + "link" => "" + ] + ] + ] + ], + "code" => "slideshow", + "name" => "幻灯片", + "module_id" => "b0448efb0989" + ], + [ + "code" => "image401", + "content" => [ + "style" => [ + "background_color" => "" + ], + "floor" => [ + "zh_cn" => "", + "en" => "" + ], + "images" => [ + [ + "image" => [ + "en" => "catalog/demo/image_plus_1-en.png", + "zh_cn" => "catalog/demo/image_plus_1.png" + ], + "show" => false, + "link" => [ + "type" => "category", + "value" => 100000, + "link" => "" + ] + ], + [ + "image" => [ + "en" => "catalog/demo/image_plus_2-en.png", + "zh_cn" => "catalog/demo/image_plus_2.png" + ], + "show" => false, + "link" => [ + "type" => "category", + "value" => 100007, + "link" => "" + ] + ], + [ + "image" => [ + "en" => "catalog/demo/image_plus_3-en.png", + "zh_cn" => "catalog/demo/image_plus_3.png" + ], + "show" => false, + "link" => [ + "type" => "product", + "value" => "", + "link" => "" + ] + ], + [ + "image" => [ + "en" => "catalog/demo/image_plus_4-en.png", + "zh_cn" => "catalog/demo/image_plus_4.png" + ], + "show" => true, + "link" => [ + "type" => "product", + "value" => 2, + "link" => "" + ] + ] + ] + ], + "module_id" => "g1vrlixfzfjk9a3k", + "name" => "一行四图-pro" + ], + [ + "code" => "tab_product", + "content" => [ + "style" => [ + "background_color" => "" + ], + "floor" => [ + "zh_cn" => "", + "en" => "" + ], + "tabs" => [ + [ + "title" => [ + "en" => "latest promotions", + "zh_cn" => "最新促销" + ], + "products" => [ + 1, + 2, + 3, + 4, + 5, + 7, + 8, + 11 + ] + ], + [ + "title" => [ + "en" => "Fashion sheet", + "zh_cn" => "时尚单品" + ], + "products" => [ + 6, + 49, + 328, + 9, + 10, + 11, + 12, + 13, + 14, + 15 + ] + ] + ], + "title" => [ + "en" => "Recommended products", + "zh_cn" => "推荐商品" + ] + ], + "module_id" => "s6e7e3vucriazzbi", + "name" => "选项卡商品" + ], + [ + "code" => "image100", + "content" => [ + "style" => [ + "background_color" => "" + ], + "floor" => [ + "zh_cn" => "", + "en" => "" + ], + "full" => true, + "images" => [ + [ + "image" => [ + "en" => "catalog/demo/banner/banner-2-en.png", + "zh_cn" => "catalog/demo/banner/banner-2.png" + ], + "show" => true, + "link" => [ + "type" => "category", + "value" => 100003, + "link" => "" + ] + ] + ] + ], + "module_id" => "0htwy33z3xcituyx", + "name" => "单图模块" + ], + [ + "code" => "brand", + "content" => [ + "style" => [ + "background_color" => "" + ], + "floor" => [ + "en" => "", + "zh_cn" => "" + ], + "full" => true, + "title" => [ + "en" => "Recommended Brand", + "zh_cn" => "推荐品牌" + ], + "brands" => [ + 1, + 2, + 3, + 4, + 5, + 6, + 7, + 8, + 9, + 10, + 11, + 12 + ] + ], + "module_id" => "yln7isoqlxovqz3k", + "name" => "品牌模块" + ] + ] + ]; + } + + + /** + * 设置底部装修数据 + */ + private function getFooterSetting(): array + { + return [ + "services" => [ + "enable" => true, + "items" => [ + [ + "image" => "catalog/demo/services-icon/4.png", + "title" => [ + "en" => "Material world", + "zh_cn" => "物行天下" + ], + "sub_title" => [ + "en" => "Multi - warehouse fast delivery", + "zh_cn" => "多仓直发 极速配送多仓直发 极速配送" + ], + "show" => false + ], + [ + "image" => "catalog/demo/services-icon/3.png", + "title" => [ + "en" => "Return all", + "zh_cn" => "退换无忧" + ], + "sub_title" => [ + "en" => "Rest assured shopping return worry", + "zh_cn" => "放心购物 退还无忧放心购物 退还无忧" + ], + "show" => false + ], + [ + "image" => "catalog/demo/services-icon/1.png", + "title" => [ + "en" => "Delicate service", + "zh_cn" => "精致服务" + ], + "sub_title" => [ + "en" => "Exquisite service and after-sales guarantee", + "zh_cn" => "精致服务 售后保障精致服务 售后保障" + ], + "show" => false + ], + [ + "image" => "catalog/demo/services-icon/2.png", + "title" => [ + "en" => "With reduced activity", + "zh_cn" => "满减活动" + ], + "sub_title" => [ + "en" => "If 500 yuan is exceeded, a reduction of 90 yuan will be given", + "zh_cn" => "满500元立减90,新用户立减200" + ], + "show" => true + ] + ] + ], + "content" => [ + "intro" => [ + "logo" => "catalog/logo.png", + "text" => [ + "en" => "

Chengdu Guangda Network Technology Co., Ltd. is a high-tech enterprise mainly engaged in Internet development. The company was established in August 2014.

", + "zh_cn" => "

成都光大网络科技有限公司

\n

是一家专业互联网开发的高科技企业,公司成立于2014年8月。

\n

公司以为客户创造价值为核心价值观,帮助中小企业利用互联网工具提升产品销售。

" + ], + "social_network" => [] + ], + "link1" => [ + "title" => [ + "en" => "About us", + "zh_cn" => "关于我们" + ], + "links" => [ + [ + "link" => "", + "type" => "page", + "value" => 21, + "text" => [ + "en" => "about us", + "zh_cn" => "关于我们" + ] + ], + [ + "type" => "page", + "value" => 18, + "text" => [], + "link" => "" + ], + [ + "type" => "page", + "value" => 12, + "text" => [], + "link" => "" + ], + [ + "type" => "static", + "value" => "account.order.index", + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ] + ], + "link2" => [ + "title" => [ + "en" => "Account", + "zh_cn" => "会员中心" + ], + "links" => [ + [ + "type" => "static", + "value" => "account.index", + "text" => [], + "link" => "" + ], + [ + "type" => "static", + "value" => "account.order.index", + "text" => [], + "link" => "" + ], + [ + "type" => "static", + "value" => "account.wishlist.index", + "text" => [], + "link" => "" + ], + [ + "type" => "static", + "value" => "brands.index", + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ] + ], + "link3" => [ + "title" => [ + "en" => "Other", + "zh_cn" => "其他" + ], + "links" => [ + [ + "type" => "static", + "value" => "brands.index", + "text" => [], + "link" => "" + ], + [ + "type" => "static", + "value" => "account.index", + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ], + [ + "type" => "page", + "value" => 20, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ], + [ + "type" => "page", + "value" => 21, + "text" => [ + "en" => "", + "zh_cn" => "" + ], + "link" => "" + ] + ] + ], + "contact" => [ + "telephone" => "028-87966209", + "address" => [ + "en" => "G8 Tianfu Software Park Chengdu China, Guangda Network Technology Co., Ltd.", + "zh_cn" => "成都市高新区益州大道中段1858号天府软件园G8 成都光大网络科技有限公司" + ], + "email" => "marketing@guangda.work" + ] + ], + "bottom" => [ + "copyright" => [ + "en" => "
  - Chengdu Guangda Network Technology © 2023
", + "zh_cn" => "
  - 成都光大网络科技 © 2023
" + ], + "image" => "catalog/demo/banner/pay_icons.png" + ] + ]; + } +} diff --git a/plugins/Openai/Controllers/OpenaiController.php b/plugins/Openai/Controllers/OpenaiController.php index 32be9c0b..60ffc3b7 100644 --- a/plugins/Openai/Controllers/OpenaiController.php +++ b/plugins/Openai/Controllers/OpenaiController.php @@ -24,7 +24,7 @@ class OpenaiController extends Controller */ public function index() { - $plugin = app('plugin')->getPlugin('openai'); + $plugin = plugin('openai'); $error = ''; $baseUrl = config('beike.api_url') . '/api/openai'; diff --git a/plugins/Openai/Migrations/2023_02_27_173221_add_openai_logs.php b/plugins/Openai/Migrations/2023_02_27_173221_add_openai_logs.php index 5b6f706a..f668eebe 100644 --- a/plugins/Openai/Migrations/2023_02_27_173221_add_openai_logs.php +++ b/plugins/Openai/Migrations/2023_02_27_173221_add_openai_logs.php @@ -13,15 +13,17 @@ return new class extends Migration */ public function up() { - Schema::create('openai_logs', function (Blueprint $table) { - $table->id(); - $table->integer('user_id')->index('user_id'); - $table->text('question'); - $table->text('answer'); - $table->string('request_ip'); - $table->text('user_agent'); - $table->timestamps(); - }); + if (! Schema::hasTable('openai_logs')) { + Schema::create('openai_logs', function (Blueprint $table) { + $table->id(); + $table->integer('user_id')->index('user_id'); + $table->text('question'); + $table->text('answer'); + $table->string('request_ip'); + $table->text('user_agent'); + $table->timestamps(); + }); + } } /** diff --git a/public/image/default-theme.jpg b/public/image/default-theme.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b972ec2daedeb4e6a7f17bffa83f57a993ee2816 GIT binary patch literal 74344 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 literal 0 HcmV?d00001 diff --git a/resources/beike/admin/css/_page-theme.scss b/resources/beike/admin/css/_page-theme.scss new file mode 100644 index 00000000..bc60c41f --- /dev/null +++ b/resources/beike/admin/css/_page-theme.scss @@ -0,0 +1,47 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-09 14:12:25 + * @LastEditTime 2022-09-16 19:05:44 + */ + +body.page-theme { + .theme-wrap { + .item { + border: 1px solid #e5e5e5; + box-shadow: 0px 0px 14px 0px rgba(55, 53, 76, 0.1); + border-radius: 6px; + transition: all 0.3s ease-in-out; + &:hover { + box-shadow: 0px 12px 40px -10px rgba(55, 53, 76, 0.36); + } + + .img { + margin-bottom: 14px; + } + + .theme-bottom { + border-top: 1px solid #eee; + height: 54px; + padding: 10px; + + .enabled-text { + color: #01cf38; + + &::before { + content: ""; + display: inline-block; + width: 8px; + height: 8px; + border-radius: 50%; + background-color: #01cf38; + margin-right: 5px; + } + } + } + } + } +} \ No newline at end of file diff --git a/resources/beike/admin/css/app.scss b/resources/beike/admin/css/app.scss index 11eeb064..8f942980 100644 --- a/resources/beike/admin/css/app.scss +++ b/resources/beike/admin/css/app.scss @@ -28,3 +28,4 @@ $primary: #fd560f; @import 'autocomplete'; @import 'page-category'; @import './design/menu'; +@import './page-theme'; diff --git a/resources/beike/admin/views/components/header.blade.php b/resources/beike/admin/views/components/header.blade.php index a6c63557..3a24830b 100644 --- a/resources/beike/admin/views/components/header.blade.php +++ b/resources/beike/admin/views/components/header.blade.php @@ -161,7 +161,7 @@ layer.open({ type: 2, title: '', - area: ['700px', '80%'], + area: ['840px', '80%'], content: `${config.api_url}/api/vip_rights?domain=${config.app_url}`, }); }); diff --git a/resources/beike/admin/views/pages/design/module/icons.blade.php b/resources/beike/admin/views/pages/design/module/icons.blade.php index a6d3c5af..0b3a38ca 100644 --- a/resources/beike/admin/views/pages/design/module/icons.blade.php +++ b/resources/beike/admin/views/pages/design/module/icons.blade.php @@ -24,7 +24,10 @@
{{ __('admin/builder.text_suggested_size') }}: 200x200
+
{{ __('admin/builder.text_set_title') }}
+
{{ __('admin/builder.text_set_subtitle') }}
+
@@ -74,6 +77,7 @@ Vue.component('module-editor-icons', { value:'' }, text: languagesFill(''), + sub_text: languagesFill(''), show: true }) diff --git a/resources/beike/admin/views/pages/design/module/image200.blade.php b/resources/beike/admin/views/pages/design/module/image200.blade.php new file mode 100644 index 00000000..7c1f2df4 --- /dev/null +++ b/resources/beike/admin/views/pages/design/module/image200.blade.php @@ -0,0 +1,95 @@ + + + + +@push('footer-script') + +@endpush \ No newline at end of file diff --git a/resources/beike/admin/views/pages/design/module/image300.blade.php b/resources/beike/admin/views/pages/design/module/image300.blade.php new file mode 100644 index 00000000..c44e0f7d --- /dev/null +++ b/resources/beike/admin/views/pages/design/module/image300.blade.php @@ -0,0 +1,103 @@ + + + + +@push('footer-script') + +@endpush \ No newline at end of file diff --git a/resources/beike/admin/views/pages/marketing/index.blade.php b/resources/beike/admin/views/pages/marketing/index.blade.php index 5ba661f9..abe2da27 100644 --- a/resources/beike/admin/views/pages/marketing/index.blade.php +++ b/resources/beike/admin/views/pages/marketing/index.blade.php @@ -107,7 +107,7 @@ data: { plugins: @json($plugins ?? []), - page: 1, + page: bk.getQueryString('page', 1) * 1, filter: { keyword: bk.getQueryString('keyword'), @@ -120,6 +120,21 @@ } }, + mounted() { + // 监听浏览器返回事件 + window.addEventListener('popstate', () => { + const page = bk.getQueryString('page'); + + if (this.page < 2) { + window.history.back(-1); + return; + } + + this.page = page * 1 - 1; + this.loadData(); + }); + }, + computed: { url: function() { let filter = {}; diff --git a/resources/beike/admin/views/pages/plugins/index.blade.php b/resources/beike/admin/views/pages/plugins/index.blade.php index 128ba1cf..73ef4552 100644 --- a/resources/beike/admin/views/pages/plugins/index.blade.php +++ b/resources/beike/admin/views/pages/plugins/index.blade.php @@ -42,7 +42,8 @@
- {{ __('admin/common.edit') }} + {{ __('admin/common.edit') }} + {{ __('admin/plugin.to_enable') }} {{ __('admin/common.uninstall') }}
diff --git a/resources/beike/admin/views/pages/products/form/form.blade.php b/resources/beike/admin/views/pages/products/form/form.blade.php index 8a916a34..a5336d79 100644 --- a/resources/beike/admin/views/pages/products/form/form.blade.php +++ b/resources/beike/admin/views/pages/products/form/form.blade.php @@ -53,7 +53,9 @@
{{ __('common.data') }}
- + images ?? []), + images: @json(old('images', $product->images) ?? []), model: @json($product->skus[0]['model'] ?? ''), price: @json($product->skus[0]['price'] ?? ''), quantity: @json($product->skus[0]['quantity'] ?? ''), diff --git a/resources/beike/admin/views/pages/setting.blade.php b/resources/beike/admin/views/pages/setting.blade.php index e355ee8c..66a4082a 100644 --- a/resources/beike/admin/views/pages/setting.blade.php +++ b/resources/beike/admin/views/pages/setting.blade.php @@ -85,10 +85,6 @@ - -
主题模板选择
-
-
{{ __('admin/setting.head_code_info') }}
diff --git a/resources/beike/admin/views/pages/theme/index.blade.php b/resources/beike/admin/views/pages/theme/index.blade.php new file mode 100644 index 00000000..9ad1bfde --- /dev/null +++ b/resources/beike/admin/views/pages/theme/index.blade.php @@ -0,0 +1,72 @@ +@extends('admin::layouts.master') + +@section('title', __('admin/common.theme_index')) + +@section('body-class', 'page-theme') + +@section('content') +
+
{{ __('admin/theme.page_title') }}
+
+
+
+ @foreach ($themes as $item) +
+
+
+
+
{{ $item['name'] }}
+
+ @if ($item['status']) +
{{ __('admin/theme.enabled_text') }}
+ @else + + @endif +
+
+
+
+ @endforeach +
+
+
+
+ +@endsection + +@push('footer') + +@endpush diff --git a/resources/beike/shop/fashion/css/account/account.scss b/resources/beike/shop/fashion/css/account/account.scss new file mode 100644 index 00000000..c5919157 --- /dev/null +++ b/resources/beike/shop/fashion/css/account/account.scss @@ -0,0 +1,63 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-09-01 16:23:34 + * @LastEditTime 2022-09-16 20:57:19 + */ + +body.page-account { + background-color: #F7F8FA; + + .account-card { + border: none; + + .card-items { + > a { + width: 25%; + color: #444444; + text-decoration: none !important; + i { + font-size: 2rem; + } + + span { + display: flex; + } + } + } + + .card-body { + @media (min-width: 992px) { + min-height: 509px; + } + } + + .order-wrap { + background-color: #f6f8f9; + + @media (min-width:768px) { + padding: 2rem 1rem; + } + + .icon { + i { + font-size: 4.5rem; + color: #777; + } + } + + .text { + font-size: 1rem; + } + } + } +} + +.account-sides-info { + @media (max-width:768px) { + margin-bottom: 14px; + } +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/app.scss b/resources/beike/shop/fashion/css/app.scss new file mode 100644 index 00000000..2e6673d6 --- /dev/null +++ b/resources/beike/shop/fashion/css/app.scss @@ -0,0 +1,38 @@ +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-02 19:19:52 + * @LastEditTime 2022-09-16 20:45:17 + */ + +@charset "UTF-8"; + +$primary: #ee403d; +$sub_color: #78e723; +$price: $primary; + +@import './iconfont'; +@import './global'; + +@import './header'; +@import './footer'; +@import './product-style'; +@import './news'; +@import './login'; +@import './account/account'; +@import './page-product'; +@import './cart'; +@import './page-checkout'; +@import './page-categories'; +@import './element-ui'; +@import './order-success'; +@import './page-account-order'; +@import './page-account-address'; +@import './page-brands'; +@import './home'; +@import './module/module-image-plus'; +@import './module/module-brand'; +@import './module/module-tab-product'; +@import './module/module-icon'; +@import './module/slideshow'; diff --git a/resources/beike/shop/fashion/css/bootstrap/bootstrap-icons.scss b/resources/beike/shop/fashion/css/bootstrap/bootstrap-icons.scss new file mode 100644 index 00000000..458150dd --- /dev/null +++ b/resources/beike/shop/fashion/css/bootstrap/bootstrap-icons.scss @@ -0,0 +1,3403 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-02 19:19:52 + * @LastEditTime 2022-09-16 20:57:06 + */ + +$bootstrap-icons-font: "bootstrap-icons" !default; +$bootstrap-icons-font-src: url("/vendor/bootstrap/icon/bootstrap-icons.woff2?08efbba7c53d8c5413793eecb19b20bb") format("woff2"), +url("/vendor/bootstrap/icon/bootstrap-icons.woff?08efbba7c53d8c5413793eecb19b20bb") format("woff") !default; + +@font-face { + font-family: $bootstrap-icons-font; + src: $bootstrap-icons-font-src; +} + +.bi::before, +[class^="bi-"]::before, +[class*=" bi-"]::before { + display: inline-block; + font-family: $bootstrap-icons-font !important; + font-style: normal; + font-weight: normal !important; + font-variant: normal; + text-transform: none; + line-height: 1; + vertical-align: -.125em; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +$bootstrap-icons-map: ( + "123": "\f67f", + "alarm-fill": "\f101", + "alarm": "\f102", + "align-bottom": "\f103", + "align-center": "\f104", + "align-end": "\f105", + "align-middle": "\f106", + "align-start": "\f107", + "align-top": "\f108", + "alt": "\f109", + "app-indicator": "\f10a", + "app": "\f10b", + "archive-fill": "\f10c", + "archive": "\f10d", + "arrow-90deg-down": "\f10e", + "arrow-90deg-left": "\f10f", + "arrow-90deg-right": "\f110", + "arrow-90deg-up": "\f111", + "arrow-bar-down": "\f112", + "arrow-bar-left": "\f113", + "arrow-bar-right": "\f114", + "arrow-bar-up": "\f115", + "arrow-clockwise": "\f116", + "arrow-counterclockwise": "\f117", + "arrow-down-circle-fill": "\f118", + "arrow-down-circle": "\f119", + "arrow-down-left-circle-fill": "\f11a", + "arrow-down-left-circle": "\f11b", + "arrow-down-left-square-fill": "\f11c", + "arrow-down-left-square": "\f11d", + "arrow-down-left": "\f11e", + "arrow-down-right-circle-fill": "\f11f", + "arrow-down-right-circle": "\f120", + "arrow-down-right-square-fill": "\f121", + "arrow-down-right-square": "\f122", + "arrow-down-right": "\f123", + "arrow-down-short": "\f124", + "arrow-down-square-fill": "\f125", + "arrow-down-square": "\f126", + "arrow-down-up": "\f127", + "arrow-down": "\f128", + "arrow-left-circle-fill": "\f129", + "arrow-left-circle": "\f12a", + "arrow-left-right": "\f12b", + "arrow-left-short": "\f12c", + "arrow-left-square-fill": "\f12d", + "arrow-left-square": "\f12e", + "arrow-left": "\f12f", + "arrow-repeat": "\f130", + "arrow-return-left": "\f131", + "arrow-return-right": "\f132", + "arrow-right-circle-fill": "\f133", + "arrow-right-circle": "\f134", + "arrow-right-short": "\f135", + "arrow-right-square-fill": "\f136", + "arrow-right-square": "\f137", + "arrow-right": "\f138", + "arrow-up-circle-fill": "\f139", + "arrow-up-circle": "\f13a", + "arrow-up-left-circle-fill": "\f13b", + "arrow-up-left-circle": "\f13c", + "arrow-up-left-square-fill": "\f13d", + "arrow-up-left-square": "\f13e", + "arrow-up-left": "\f13f", + "arrow-up-right-circle-fill": "\f140", + "arrow-up-right-circle": "\f141", + "arrow-up-right-square-fill": "\f142", + "arrow-up-right-square": "\f143", + "arrow-up-right": "\f144", + "arrow-up-short": "\f145", + "arrow-up-square-fill": "\f146", + "arrow-up-square": "\f147", + "arrow-up": "\f148", + "arrows-angle-contract": "\f149", + "arrows-angle-expand": "\f14a", + "arrows-collapse": "\f14b", + "arrows-expand": "\f14c", + "arrows-fullscreen": "\f14d", + "arrows-move": "\f14e", + "aspect-ratio-fill": "\f14f", + "aspect-ratio": "\f150", + "asterisk": "\f151", + "at": "\f152", + "award-fill": "\f153", + "award": "\f154", + "back": "\f155", + "backspace-fill": "\f156", + "backspace-reverse-fill": "\f157", + "backspace-reverse": "\f158", + "backspace": "\f159", + "badge-3d-fill": "\f15a", + "badge-3d": "\f15b", + "badge-4k-fill": "\f15c", + "badge-4k": "\f15d", + "badge-8k-fill": "\f15e", + "badge-8k": "\f15f", + "badge-ad-fill": "\f160", + "badge-ad": "\f161", + "badge-ar-fill": "\f162", + "badge-ar": "\f163", + "badge-cc-fill": "\f164", + "badge-cc": "\f165", + "badge-hd-fill": "\f166", + "badge-hd": "\f167", + "badge-tm-fill": "\f168", + "badge-tm": "\f169", + "badge-vo-fill": "\f16a", + "badge-vo": "\f16b", + "badge-vr-fill": "\f16c", + "badge-vr": "\f16d", + "badge-wc-fill": "\f16e", + "badge-wc": "\f16f", + "bag-check-fill": "\f170", + "bag-check": "\f171", + "bag-dash-fill": "\f172", + "bag-dash": "\f173", + "bag-fill": "\f174", + "bag-plus-fill": "\f175", + "bag-plus": "\f176", + "bag-x-fill": "\f177", + "bag-x": "\f178", + "bag": "\f179", + "bar-chart-fill": "\f17a", + "bar-chart-line-fill": "\f17b", + "bar-chart-line": "\f17c", + "bar-chart-steps": "\f17d", + "bar-chart": "\f17e", + "basket-fill": "\f17f", + "basket": "\f180", + "basket2-fill": "\f181", + "basket2": "\f182", + "basket3-fill": "\f183", + "basket3": "\f184", + "battery-charging": "\f185", + "battery-full": "\f186", + "battery-half": "\f187", + "battery": "\f188", + "bell-fill": "\f189", + "bell": "\f18a", + "bezier": "\f18b", + "bezier2": "\f18c", + "bicycle": "\f18d", + "binoculars-fill": "\f18e", + "binoculars": "\f18f", + "blockquote-left": "\f190", + "blockquote-right": "\f191", + "book-fill": "\f192", + "book-half": "\f193", + "book": "\f194", + "bookmark-check-fill": "\f195", + "bookmark-check": "\f196", + "bookmark-dash-fill": "\f197", + "bookmark-dash": "\f198", + "bookmark-fill": "\f199", + "bookmark-heart-fill": "\f19a", + "bookmark-heart": "\f19b", + "bookmark-plus-fill": "\f19c", + "bookmark-plus": "\f19d", + "bookmark-star-fill": "\f19e", + "bookmark-star": "\f19f", + "bookmark-x-fill": "\f1a0", + "bookmark-x": "\f1a1", + "bookmark": "\f1a2", + "bookmarks-fill": "\f1a3", + "bookmarks": "\f1a4", + "bookshelf": "\f1a5", + "bootstrap-fill": "\f1a6", + "bootstrap-reboot": "\f1a7", + "bootstrap": "\f1a8", + "border-all": "\f1a9", + "border-bottom": "\f1aa", + "border-center": "\f1ab", + "border-inner": "\f1ac", + "border-left": "\f1ad", + "border-middle": "\f1ae", + "border-outer": "\f1af", + "border-right": "\f1b0", + "border-style": "\f1b1", + "border-top": "\f1b2", + "border-width": "\f1b3", + "border": "\f1b4", + "bounding-box-circles": "\f1b5", + "bounding-box": "\f1b6", + "box-arrow-down-left": "\f1b7", + "box-arrow-down-right": "\f1b8", + "box-arrow-down": "\f1b9", + "box-arrow-in-down-left": "\f1ba", + "box-arrow-in-down-right": "\f1bb", + "box-arrow-in-down": "\f1bc", + "box-arrow-in-left": "\f1bd", + "box-arrow-in-right": "\f1be", + "box-arrow-in-up-left": "\f1bf", + "box-arrow-in-up-right": "\f1c0", + "box-arrow-in-up": "\f1c1", + "box-arrow-left": "\f1c2", + "box-arrow-right": "\f1c3", + "box-arrow-up-left": "\f1c4", + "box-arrow-up-right": "\f1c5", + "box-arrow-up": "\f1c6", + "box-seam": "\f1c7", + "box": "\f1c8", + "braces": "\f1c9", + "bricks": "\f1ca", + "briefcase-fill": "\f1cb", + "briefcase": "\f1cc", + "brightness-alt-high-fill": "\f1cd", + "brightness-alt-high": "\f1ce", + "brightness-alt-low-fill": "\f1cf", + "brightness-alt-low": "\f1d0", + "brightness-high-fill": "\f1d1", + "brightness-high": "\f1d2", + "brightness-low-fill": "\f1d3", + "brightness-low": "\f1d4", + "broadcast-pin": "\f1d5", + "broadcast": "\f1d6", + "brush-fill": "\f1d7", + "brush": "\f1d8", + "bucket-fill": "\f1d9", + "bucket": "\f1da", + "bug-fill": "\f1db", + "bug": "\f1dc", + "building": "\f1dd", + "bullseye": "\f1de", + "calculator-fill": "\f1df", + "calculator": "\f1e0", + "calendar-check-fill": "\f1e1", + "calendar-check": "\f1e2", + "calendar-date-fill": "\f1e3", + "calendar-date": "\f1e4", + "calendar-day-fill": "\f1e5", + "calendar-day": "\f1e6", + "calendar-event-fill": "\f1e7", + "calendar-event": "\f1e8", + "calendar-fill": "\f1e9", + "calendar-minus-fill": "\f1ea", + "calendar-minus": "\f1eb", + "calendar-month-fill": "\f1ec", + "calendar-month": "\f1ed", + "calendar-plus-fill": "\f1ee", + "calendar-plus": "\f1ef", + "calendar-range-fill": "\f1f0", + "calendar-range": "\f1f1", + "calendar-week-fill": "\f1f2", + "calendar-week": "\f1f3", + "calendar-x-fill": "\f1f4", + "calendar-x": "\f1f5", + "calendar": "\f1f6", + "calendar2-check-fill": "\f1f7", + "calendar2-check": "\f1f8", + "calendar2-date-fill": "\f1f9", + "calendar2-date": "\f1fa", + "calendar2-day-fill": "\f1fb", + "calendar2-day": "\f1fc", + "calendar2-event-fill": "\f1fd", + "calendar2-event": "\f1fe", + "calendar2-fill": "\f1ff", + "calendar2-minus-fill": "\f200", + "calendar2-minus": "\f201", + "calendar2-month-fill": "\f202", + "calendar2-month": "\f203", + "calendar2-plus-fill": "\f204", + "calendar2-plus": "\f205", + "calendar2-range-fill": "\f206", + "calendar2-range": "\f207", + "calendar2-week-fill": "\f208", + "calendar2-week": "\f209", + "calendar2-x-fill": "\f20a", + "calendar2-x": "\f20b", + "calendar2": "\f20c", + "calendar3-event-fill": "\f20d", + "calendar3-event": "\f20e", + "calendar3-fill": "\f20f", + "calendar3-range-fill": "\f210", + "calendar3-range": "\f211", + "calendar3-week-fill": "\f212", + "calendar3-week": "\f213", + "calendar3": "\f214", + "calendar4-event": "\f215", + "calendar4-range": "\f216", + "calendar4-week": "\f217", + "calendar4": "\f218", + "camera-fill": "\f219", + "camera-reels-fill": "\f21a", + "camera-reels": "\f21b", + "camera-video-fill": "\f21c", + "camera-video-off-fill": "\f21d", + "camera-video-off": "\f21e", + "camera-video": "\f21f", + "camera": "\f220", + "camera2": "\f221", + "capslock-fill": "\f222", + "capslock": "\f223", + "card-checklist": "\f224", + "card-heading": "\f225", + "card-image": "\f226", + "card-list": "\f227", + "card-text": "\f228", + "caret-down-fill": "\f229", + "caret-down-square-fill": "\f22a", + "caret-down-square": "\f22b", + "caret-down": "\f22c", + "caret-left-fill": "\f22d", + "caret-left-square-fill": "\f22e", + "caret-left-square": "\f22f", + "caret-left": "\f230", + "caret-right-fill": "\f231", + "caret-right-square-fill": "\f232", + "caret-right-square": "\f233", + "caret-right": "\f234", + "caret-up-fill": "\f235", + "caret-up-square-fill": "\f236", + "caret-up-square": "\f237", + "caret-up": "\f238", + "cart-check-fill": "\f239", + "cart-check": "\f23a", + "cart-dash-fill": "\f23b", + "cart-dash": "\f23c", + "cart-fill": "\f23d", + "cart-plus-fill": "\f23e", + "cart-plus": "\f23f", + "cart-x-fill": "\f240", + "cart-x": "\f241", + "cart": "\f242", + "cart2": "\f243", + "cart3": "\f244", + "cart4": "\f245", + "cash-stack": "\f246", + "cash": "\f247", + "cast": "\f248", + "chat-dots-fill": "\f249", + "chat-dots": "\f24a", + "chat-fill": "\f24b", + "chat-left-dots-fill": "\f24c", + "chat-left-dots": "\f24d", + "chat-left-fill": "\f24e", + "chat-left-quote-fill": "\f24f", + "chat-left-quote": "\f250", + "chat-left-text-fill": "\f251", + "chat-left-text": "\f252", + "chat-left": "\f253", + "chat-quote-fill": "\f254", + "chat-quote": "\f255", + "chat-right-dots-fill": "\f256", + "chat-right-dots": "\f257", + "chat-right-fill": "\f258", + "chat-right-quote-fill": "\f259", + "chat-right-quote": "\f25a", + "chat-right-text-fill": "\f25b", + "chat-right-text": "\f25c", + "chat-right": "\f25d", + "chat-square-dots-fill": "\f25e", + "chat-square-dots": "\f25f", + "chat-square-fill": "\f260", + "chat-square-quote-fill": "\f261", + "chat-square-quote": "\f262", + "chat-square-text-fill": "\f263", + "chat-square-text": "\f264", + "chat-square": "\f265", + "chat-text-fill": "\f266", + "chat-text": "\f267", + "chat": "\f268", + "check-all": "\f269", + "check-circle-fill": "\f26a", + "check-circle": "\f26b", + "check-square-fill": "\f26c", + "check-square": "\f26d", + "check": "\f26e", + "check2-all": "\f26f", + "check2-circle": "\f270", + "check2-square": "\f271", + "check2": "\f272", + "chevron-bar-contract": "\f273", + "chevron-bar-down": "\f274", + "chevron-bar-expand": "\f275", + "chevron-bar-left": "\f276", + "chevron-bar-right": "\f277", + "chevron-bar-up": "\f278", + "chevron-compact-down": "\f279", + "chevron-compact-left": "\f27a", + "chevron-compact-right": "\f27b", + "chevron-compact-up": "\f27c", + "chevron-contract": "\f27d", + "chevron-double-down": "\f27e", + "chevron-double-left": "\f27f", + "chevron-double-right": "\f280", + "chevron-double-up": "\f281", + "chevron-down": "\f282", + "chevron-expand": "\f283", + "chevron-left": "\f284", + "chevron-right": "\f285", + "chevron-up": "\f286", + "circle-fill": "\f287", + "circle-half": "\f288", + "circle-square": "\f289", + "circle": "\f28a", + "clipboard-check": "\f28b", + "clipboard-data": "\f28c", + "clipboard-minus": "\f28d", + "clipboard-plus": "\f28e", + "clipboard-x": "\f28f", + "clipboard": "\f290", + "clock-fill": "\f291", + "clock-history": "\f292", + "clock": "\f293", + "cloud-arrow-down-fill": "\f294", + "cloud-arrow-down": "\f295", + "cloud-arrow-up-fill": "\f296", + "cloud-arrow-up": "\f297", + "cloud-check-fill": "\f298", + "cloud-check": "\f299", + "cloud-download-fill": "\f29a", + "cloud-download": "\f29b", + "cloud-drizzle-fill": "\f29c", + "cloud-drizzle": "\f29d", + "cloud-fill": "\f29e", + "cloud-fog-fill": "\f29f", + "cloud-fog": "\f2a0", + "cloud-fog2-fill": "\f2a1", + "cloud-fog2": "\f2a2", + "cloud-hail-fill": "\f2a3", + "cloud-hail": "\f2a4", + "cloud-haze-1": "\f2a5", + "cloud-haze-fill": "\f2a6", + "cloud-haze": "\f2a7", + "cloud-haze2-fill": "\f2a8", + "cloud-lightning-fill": "\f2a9", + "cloud-lightning-rain-fill": "\f2aa", + "cloud-lightning-rain": "\f2ab", + "cloud-lightning": "\f2ac", + "cloud-minus-fill": "\f2ad", + "cloud-minus": "\f2ae", + "cloud-moon-fill": "\f2af", + "cloud-moon": "\f2b0", + "cloud-plus-fill": "\f2b1", + "cloud-plus": "\f2b2", + "cloud-rain-fill": "\f2b3", + "cloud-rain-heavy-fill": "\f2b4", + "cloud-rain-heavy": "\f2b5", + "cloud-rain": "\f2b6", + "cloud-slash-fill": "\f2b7", + "cloud-slash": "\f2b8", + "cloud-sleet-fill": "\f2b9", + "cloud-sleet": "\f2ba", + "cloud-snow-fill": "\f2bb", + "cloud-snow": "\f2bc", + "cloud-sun-fill": "\f2bd", + "cloud-sun": "\f2be", + "cloud-upload-fill": "\f2bf", + "cloud-upload": "\f2c0", + "cloud": "\f2c1", + "clouds-fill": "\f2c2", + "clouds": "\f2c3", + "cloudy-fill": "\f2c4", + "cloudy": "\f2c5", + "code-slash": "\f2c6", + "code-square": "\f2c7", + "code": "\f2c8", + "collection-fill": "\f2c9", + "collection-play-fill": "\f2ca", + "collection-play": "\f2cb", + "collection": "\f2cc", + "columns-gap": "\f2cd", + "columns": "\f2ce", + "command": "\f2cf", + "compass-fill": "\f2d0", + "compass": "\f2d1", + "cone-striped": "\f2d2", + "cone": "\f2d3", + "controller": "\f2d4", + "cpu-fill": "\f2d5", + "cpu": "\f2d6", + "credit-card-2-back-fill": "\f2d7", + "credit-card-2-back": "\f2d8", + "credit-card-2-front-fill": "\f2d9", + "credit-card-2-front": "\f2da", + "credit-card-fill": "\f2db", + "credit-card": "\f2dc", + "crop": "\f2dd", + "cup-fill": "\f2de", + "cup-straw": "\f2df", + "cup": "\f2e0", + "cursor-fill": "\f2e1", + "cursor-text": "\f2e2", + "cursor": "\f2e3", + "dash-circle-dotted": "\f2e4", + "dash-circle-fill": "\f2e5", + "dash-circle": "\f2e6", + "dash-square-dotted": "\f2e7", + "dash-square-fill": "\f2e8", + "dash-square": "\f2e9", + "dash": "\f2ea", + "diagram-2-fill": "\f2eb", + "diagram-2": "\f2ec", + "diagram-3-fill": "\f2ed", + "diagram-3": "\f2ee", + "diamond-fill": "\f2ef", + "diamond-half": "\f2f0", + "diamond": "\f2f1", + "dice-1-fill": "\f2f2", + "dice-1": "\f2f3", + "dice-2-fill": "\f2f4", + "dice-2": "\f2f5", + "dice-3-fill": "\f2f6", + "dice-3": "\f2f7", + "dice-4-fill": "\f2f8", + "dice-4": "\f2f9", + "dice-5-fill": "\f2fa", + "dice-5": "\f2fb", + "dice-6-fill": "\f2fc", + "dice-6": "\f2fd", + "disc-fill": "\f2fe", + "disc": "\f2ff", + "discord": "\f300", + "display-fill": "\f301", + "display": "\f302", + "distribute-horizontal": "\f303", + "distribute-vertical": "\f304", + "door-closed-fill": "\f305", + "door-closed": "\f306", + "door-open-fill": "\f307", + "door-open": "\f308", + "dot": "\f309", + "download": "\f30a", + "droplet-fill": "\f30b", + "droplet-half": "\f30c", + "droplet": "\f30d", + "earbuds": "\f30e", + "easel-fill": "\f30f", + "easel": "\f310", + "egg-fill": "\f311", + "egg-fried": "\f312", + "egg": "\f313", + "eject-fill": "\f314", + "eject": "\f315", + "emoji-angry-fill": "\f316", + "emoji-angry": "\f317", + "emoji-dizzy-fill": "\f318", + "emoji-dizzy": "\f319", + "emoji-expressionless-fill": "\f31a", + "emoji-expressionless": "\f31b", + "emoji-frown-fill": "\f31c", + "emoji-frown": "\f31d", + "emoji-heart-eyes-fill": "\f31e", + "emoji-heart-eyes": "\f31f", + "emoji-laughing-fill": "\f320", + "emoji-laughing": "\f321", + "emoji-neutral-fill": "\f322", + "emoji-neutral": "\f323", + "emoji-smile-fill": "\f324", + "emoji-smile-upside-down-fill": "\f325", + "emoji-smile-upside-down": "\f326", + "emoji-smile": "\f327", + "emoji-sunglasses-fill": "\f328", + "emoji-sunglasses": "\f329", + "emoji-wink-fill": "\f32a", + "emoji-wink": "\f32b", + "envelope-fill": "\f32c", + "envelope-open-fill": "\f32d", + "envelope-open": "\f32e", + "envelope": "\f32f", + "eraser-fill": "\f330", + "eraser": "\f331", + "exclamation-circle-fill": "\f332", + "exclamation-circle": "\f333", + "exclamation-diamond-fill": "\f334", + "exclamation-diamond": "\f335", + "exclamation-octagon-fill": "\f336", + "exclamation-octagon": "\f337", + "exclamation-square-fill": "\f338", + "exclamation-square": "\f339", + "exclamation-triangle-fill": "\f33a", + "exclamation-triangle": "\f33b", + "exclamation": "\f33c", + "exclude": "\f33d", + "eye-fill": "\f33e", + "eye-slash-fill": "\f33f", + "eye-slash": "\f340", + "eye": "\f341", + "eyedropper": "\f342", + "eyeglasses": "\f343", + "facebook": "\f344", + "file-arrow-down-fill": "\f345", + "file-arrow-down": "\f346", + "file-arrow-up-fill": "\f347", + "file-arrow-up": "\f348", + "file-bar-graph-fill": "\f349", + "file-bar-graph": "\f34a", + "file-binary-fill": "\f34b", + "file-binary": "\f34c", + "file-break-fill": "\f34d", + "file-break": "\f34e", + "file-check-fill": "\f34f", + "file-check": "\f350", + "file-code-fill": "\f351", + "file-code": "\f352", + "file-diff-fill": "\f353", + "file-diff": "\f354", + "file-earmark-arrow-down-fill": "\f355", + "file-earmark-arrow-down": "\f356", + "file-earmark-arrow-up-fill": "\f357", + "file-earmark-arrow-up": "\f358", + "file-earmark-bar-graph-fill": "\f359", + "file-earmark-bar-graph": "\f35a", + "file-earmark-binary-fill": "\f35b", + "file-earmark-binary": "\f35c", + "file-earmark-break-fill": "\f35d", + "file-earmark-break": "\f35e", + "file-earmark-check-fill": "\f35f", + "file-earmark-check": "\f360", + "file-earmark-code-fill": "\f361", + "file-earmark-code": "\f362", + "file-earmark-diff-fill": "\f363", + "file-earmark-diff": "\f364", + "file-earmark-easel-fill": "\f365", + "file-earmark-easel": "\f366", + "file-earmark-excel-fill": "\f367", + "file-earmark-excel": "\f368", + "file-earmark-fill": "\f369", + "file-earmark-font-fill": "\f36a", + "file-earmark-font": "\f36b", + "file-earmark-image-fill": "\f36c", + "file-earmark-image": "\f36d", + "file-earmark-lock-fill": "\f36e", + "file-earmark-lock": "\f36f", + "file-earmark-lock2-fill": "\f370", + "file-earmark-lock2": "\f371", + "file-earmark-medical-fill": "\f372", + "file-earmark-medical": "\f373", + "file-earmark-minus-fill": "\f374", + "file-earmark-minus": "\f375", + "file-earmark-music-fill": "\f376", + "file-earmark-music": "\f377", + "file-earmark-person-fill": "\f378", + "file-earmark-person": "\f379", + "file-earmark-play-fill": "\f37a", + "file-earmark-play": "\f37b", + "file-earmark-plus-fill": "\f37c", + "file-earmark-plus": "\f37d", + "file-earmark-post-fill": "\f37e", + "file-earmark-post": "\f37f", + "file-earmark-ppt-fill": "\f380", + "file-earmark-ppt": "\f381", + "file-earmark-richtext-fill": "\f382", + "file-earmark-richtext": "\f383", + "file-earmark-ruled-fill": "\f384", + "file-earmark-ruled": "\f385", + "file-earmark-slides-fill": "\f386", + "file-earmark-slides": "\f387", + "file-earmark-spreadsheet-fill": "\f388", + "file-earmark-spreadsheet": "\f389", + "file-earmark-text-fill": "\f38a", + "file-earmark-text": "\f38b", + "file-earmark-word-fill": "\f38c", + "file-earmark-word": "\f38d", + "file-earmark-x-fill": "\f38e", + "file-earmark-x": "\f38f", + "file-earmark-zip-fill": "\f390", + "file-earmark-zip": "\f391", + "file-earmark": "\f392", + "file-easel-fill": "\f393", + "file-easel": "\f394", + "file-excel-fill": "\f395", + "file-excel": "\f396", + "file-fill": "\f397", + "file-font-fill": "\f398", + "file-font": "\f399", + "file-image-fill": "\f39a", + "file-image": "\f39b", + "file-lock-fill": "\f39c", + "file-lock": "\f39d", + "file-lock2-fill": "\f39e", + "file-lock2": "\f39f", + "file-medical-fill": "\f3a0", + "file-medical": "\f3a1", + "file-minus-fill": "\f3a2", + "file-minus": "\f3a3", + "file-music-fill": "\f3a4", + "file-music": "\f3a5", + "file-person-fill": "\f3a6", + "file-person": "\f3a7", + "file-play-fill": "\f3a8", + "file-play": "\f3a9", + "file-plus-fill": "\f3aa", + "file-plus": "\f3ab", + "file-post-fill": "\f3ac", + "file-post": "\f3ad", + "file-ppt-fill": "\f3ae", + "file-ppt": "\f3af", + "file-richtext-fill": "\f3b0", + "file-richtext": "\f3b1", + "file-ruled-fill": "\f3b2", + "file-ruled": "\f3b3", + "file-slides-fill": "\f3b4", + "file-slides": "\f3b5", + "file-spreadsheet-fill": "\f3b6", + "file-spreadsheet": "\f3b7", + "file-text-fill": "\f3b8", + "file-text": "\f3b9", + "file-word-fill": "\f3ba", + "file-word": "\f3bb", + "file-x-fill": "\f3bc", + "file-x": "\f3bd", + "file-zip-fill": "\f3be", + "file-zip": "\f3bf", + "file": "\f3c0", + "files-alt": "\f3c1", + "files": "\f3c2", + "film": "\f3c3", + "filter-circle-fill": "\f3c4", + "filter-circle": "\f3c5", + "filter-left": "\f3c6", + "filter-right": "\f3c7", + "filter-square-fill": "\f3c8", + "filter-square": "\f3c9", + "filter": "\f3ca", + "flag-fill": "\f3cb", + "flag": "\f3cc", + "flower1": "\f3cd", + "flower2": "\f3ce", + "flower3": "\f3cf", + "folder-check": "\f3d0", + "folder-fill": "\f3d1", + "folder-minus": "\f3d2", + "folder-plus": "\f3d3", + "folder-symlink-fill": "\f3d4", + "folder-symlink": "\f3d5", + "folder-x": "\f3d6", + "folder": "\f3d7", + "folder2-open": "\f3d8", + "folder2": "\f3d9", + "fonts": "\f3da", + "forward-fill": "\f3db", + "forward": "\f3dc", + "front": "\f3dd", + "fullscreen-exit": "\f3de", + "fullscreen": "\f3df", + "funnel-fill": "\f3e0", + "funnel": "\f3e1", + "gear-fill": "\f3e2", + "gear-wide-connected": "\f3e3", + "gear-wide": "\f3e4", + "gear": "\f3e5", + "gem": "\f3e6", + "geo-alt-fill": "\f3e7", + "geo-alt": "\f3e8", + "geo-fill": "\f3e9", + "geo": "\f3ea", + "gift-fill": "\f3eb", + "gift": "\f3ec", + "github": "\f3ed", + "globe": "\f3ee", + "globe2": "\f3ef", + "google": "\f3f0", + "graph-down": "\f3f1", + "graph-up": "\f3f2", + "grid-1x2-fill": "\f3f3", + "grid-1x2": "\f3f4", + "grid-3x2-gap-fill": "\f3f5", + "grid-3x2-gap": "\f3f6", + "grid-3x2": "\f3f7", + "grid-3x3-gap-fill": "\f3f8", + "grid-3x3-gap": "\f3f9", + "grid-3x3": "\f3fa", + "grid-fill": "\f3fb", + "grid": "\f3fc", + "grip-horizontal": "\f3fd", + "grip-vertical": "\f3fe", + "hammer": "\f3ff", + "hand-index-fill": "\f400", + "hand-index-thumb-fill": "\f401", + "hand-index-thumb": "\f402", + "hand-index": "\f403", + "hand-thumbs-down-fill": "\f404", + "hand-thumbs-down": "\f405", + "hand-thumbs-up-fill": "\f406", + "hand-thumbs-up": "\f407", + "handbag-fill": "\f408", + "handbag": "\f409", + "hash": "\f40a", + "hdd-fill": "\f40b", + "hdd-network-fill": "\f40c", + "hdd-network": "\f40d", + "hdd-rack-fill": "\f40e", + "hdd-rack": "\f40f", + "hdd-stack-fill": "\f410", + "hdd-stack": "\f411", + "hdd": "\f412", + "headphones": "\f413", + "headset": "\f414", + "heart-fill": "\f415", + "heart-half": "\f416", + "heart": "\f417", + "heptagon-fill": "\f418", + "heptagon-half": "\f419", + "heptagon": "\f41a", + "hexagon-fill": "\f41b", + "hexagon-half": "\f41c", + "hexagon": "\f41d", + "hourglass-bottom": "\f41e", + "hourglass-split": "\f41f", + "hourglass-top": "\f420", + "hourglass": "\f421", + "house-door-fill": "\f422", + "house-door": "\f423", + "house-fill": "\f424", + "house": "\f425", + "hr": "\f426", + "hurricane": "\f427", + "image-alt": "\f428", + "image-fill": "\f429", + "image": "\f42a", + "images": "\f42b", + "inbox-fill": "\f42c", + "inbox": "\f42d", + "inboxes-fill": "\f42e", + "inboxes": "\f42f", + "info-circle-fill": "\f430", + "info-circle": "\f431", + "info-square-fill": "\f432", + "info-square": "\f433", + "info": "\f434", + "input-cursor-text": "\f435", + "input-cursor": "\f436", + "instagram": "\f437", + "intersect": "\f438", + "journal-album": "\f439", + "journal-arrow-down": "\f43a", + "journal-arrow-up": "\f43b", + "journal-bookmark-fill": "\f43c", + "journal-bookmark": "\f43d", + "journal-check": "\f43e", + "journal-code": "\f43f", + "journal-medical": "\f440", + "journal-minus": "\f441", + "journal-plus": "\f442", + "journal-richtext": "\f443", + "journal-text": "\f444", + "journal-x": "\f445", + "journal": "\f446", + "journals": "\f447", + "joystick": "\f448", + "justify-left": "\f449", + "justify-right": "\f44a", + "justify": "\f44b", + "kanban-fill": "\f44c", + "kanban": "\f44d", + "key-fill": "\f44e", + "key": "\f44f", + "keyboard-fill": "\f450", + "keyboard": "\f451", + "ladder": "\f452", + "lamp-fill": "\f453", + "lamp": "\f454", + "laptop-fill": "\f455", + "laptop": "\f456", + "layer-backward": "\f457", + "layer-forward": "\f458", + "layers-fill": "\f459", + "layers-half": "\f45a", + "layers": "\f45b", + "layout-sidebar-inset-reverse": "\f45c", + "layout-sidebar-inset": "\f45d", + "layout-sidebar-reverse": "\f45e", + "layout-sidebar": "\f45f", + "layout-split": "\f460", + "layout-text-sidebar-reverse": "\f461", + "layout-text-sidebar": "\f462", + "layout-text-window-reverse": "\f463", + "layout-text-window": "\f464", + "layout-three-columns": "\f465", + "layout-wtf": "\f466", + "life-preserver": "\f467", + "lightbulb-fill": "\f468", + "lightbulb-off-fill": "\f469", + "lightbulb-off": "\f46a", + "lightbulb": "\f46b", + "lightning-charge-fill": "\f46c", + "lightning-charge": "\f46d", + "lightning-fill": "\f46e", + "lightning": "\f46f", + "link-45deg": "\f470", + "link": "\f471", + "linkedin": "\f472", + "list-check": "\f473", + "list-nested": "\f474", + "list-ol": "\f475", + "list-stars": "\f476", + "list-task": "\f477", + "list-ul": "\f478", + "list": "\f479", + "lock-fill": "\f47a", + "lock": "\f47b", + "mailbox": "\f47c", + "mailbox2": "\f47d", + "map-fill": "\f47e", + "map": "\f47f", + "markdown-fill": "\f480", + "markdown": "\f481", + "mask": "\f482", + "megaphone-fill": "\f483", + "megaphone": "\f484", + "menu-app-fill": "\f485", + "menu-app": "\f486", + "menu-button-fill": "\f487", + "menu-button-wide-fill": "\f488", + "menu-button-wide": "\f489", + "menu-button": "\f48a", + "menu-down": "\f48b", + "menu-up": "\f48c", + "mic-fill": "\f48d", + "mic-mute-fill": "\f48e", + "mic-mute": "\f48f", + "mic": "\f490", + "minecart-loaded": "\f491", + "minecart": "\f492", + "moisture": "\f493", + "moon-fill": "\f494", + "moon-stars-fill": "\f495", + "moon-stars": "\f496", + "moon": "\f497", + "mouse-fill": "\f498", + "mouse": "\f499", + "mouse2-fill": "\f49a", + "mouse2": "\f49b", + "mouse3-fill": "\f49c", + "mouse3": "\f49d", + "music-note-beamed": "\f49e", + "music-note-list": "\f49f", + "music-note": "\f4a0", + "music-player-fill": "\f4a1", + "music-player": "\f4a2", + "newspaper": "\f4a3", + "node-minus-fill": "\f4a4", + "node-minus": "\f4a5", + "node-plus-fill": "\f4a6", + "node-plus": "\f4a7", + "nut-fill": "\f4a8", + "nut": "\f4a9", + "octagon-fill": "\f4aa", + "octagon-half": "\f4ab", + "octagon": "\f4ac", + "option": "\f4ad", + "outlet": "\f4ae", + "paint-bucket": "\f4af", + "palette-fill": "\f4b0", + "palette": "\f4b1", + "palette2": "\f4b2", + "paperclip": "\f4b3", + "paragraph": "\f4b4", + "patch-check-fill": "\f4b5", + "patch-check": "\f4b6", + "patch-exclamation-fill": "\f4b7", + "patch-exclamation": "\f4b8", + "patch-minus-fill": "\f4b9", + "patch-minus": "\f4ba", + "patch-plus-fill": "\f4bb", + "patch-plus": "\f4bc", + "patch-question-fill": "\f4bd", + "patch-question": "\f4be", + "pause-btn-fill": "\f4bf", + "pause-btn": "\f4c0", + "pause-circle-fill": "\f4c1", + "pause-circle": "\f4c2", + "pause-fill": "\f4c3", + "pause": "\f4c4", + "peace-fill": "\f4c5", + "peace": "\f4c6", + "pen-fill": "\f4c7", + "pen": "\f4c8", + "pencil-fill": "\f4c9", + "pencil-square": "\f4ca", + "pencil": "\f4cb", + "pentagon-fill": "\f4cc", + "pentagon-half": "\f4cd", + "pentagon": "\f4ce", + "people-fill": "\f4cf", + "people": "\f4d0", + "percent": "\f4d1", + "person-badge-fill": "\f4d2", + "person-badge": "\f4d3", + "person-bounding-box": "\f4d4", + "person-check-fill": "\f4d5", + "person-check": "\f4d6", + "person-circle": "\f4d7", + "person-dash-fill": "\f4d8", + "person-dash": "\f4d9", + "person-fill": "\f4da", + "person-lines-fill": "\f4db", + "person-plus-fill": "\f4dc", + "person-plus": "\f4dd", + "person-square": "\f4de", + "person-x-fill": "\f4df", + "person-x": "\f4e0", + "person": "\f4e1", + "phone-fill": "\f4e2", + "phone-landscape-fill": "\f4e3", + "phone-landscape": "\f4e4", + "phone-vibrate-fill": "\f4e5", + "phone-vibrate": "\f4e6", + "phone": "\f4e7", + "pie-chart-fill": "\f4e8", + "pie-chart": "\f4e9", + "pin-angle-fill": "\f4ea", + "pin-angle": "\f4eb", + "pin-fill": "\f4ec", + "pin": "\f4ed", + "pip-fill": "\f4ee", + "pip": "\f4ef", + "play-btn-fill": "\f4f0", + "play-btn": "\f4f1", + "play-circle-fill": "\f4f2", + "play-circle": "\f4f3", + "play-fill": "\f4f4", + "play": "\f4f5", + "plug-fill": "\f4f6", + "plug": "\f4f7", + "plus-circle-dotted": "\f4f8", + "plus-circle-fill": "\f4f9", + "plus-circle": "\f4fa", + "plus-square-dotted": "\f4fb", + "plus-square-fill": "\f4fc", + "plus-square": "\f4fd", + "plus": "\f4fe", + "power": "\f4ff", + "printer-fill": "\f500", + "printer": "\f501", + "puzzle-fill": "\f502", + "puzzle": "\f503", + "question-circle-fill": "\f504", + "question-circle": "\f505", + "question-diamond-fill": "\f506", + "question-diamond": "\f507", + "question-octagon-fill": "\f508", + "question-octagon": "\f509", + "question-square-fill": "\f50a", + "question-square": "\f50b", + "question": "\f50c", + "rainbow": "\f50d", + "receipt-cutoff": "\f50e", + "receipt": "\f50f", + "reception-0": "\f510", + "reception-1": "\f511", + "reception-2": "\f512", + "reception-3": "\f513", + "reception-4": "\f514", + "record-btn-fill": "\f515", + "record-btn": "\f516", + "record-circle-fill": "\f517", + "record-circle": "\f518", + "record-fill": "\f519", + "record": "\f51a", + "record2-fill": "\f51b", + "record2": "\f51c", + "reply-all-fill": "\f51d", + "reply-all": "\f51e", + "reply-fill": "\f51f", + "reply": "\f520", + "rss-fill": "\f521", + "rss": "\f522", + "rulers": "\f523", + "save-fill": "\f524", + "save": "\f525", + "save2-fill": "\f526", + "save2": "\f527", + "scissors": "\f528", + "screwdriver": "\f529", + "search": "\f52a", + "segmented-nav": "\f52b", + "server": "\f52c", + "share-fill": "\f52d", + "share": "\f52e", + "shield-check": "\f52f", + "shield-exclamation": "\f530", + "shield-fill-check": "\f531", + "shield-fill-exclamation": "\f532", + "shield-fill-minus": "\f533", + "shield-fill-plus": "\f534", + "shield-fill-x": "\f535", + "shield-fill": "\f536", + "shield-lock-fill": "\f537", + "shield-lock": "\f538", + "shield-minus": "\f539", + "shield-plus": "\f53a", + "shield-shaded": "\f53b", + "shield-slash-fill": "\f53c", + "shield-slash": "\f53d", + "shield-x": "\f53e", + "shield": "\f53f", + "shift-fill": "\f540", + "shift": "\f541", + "shop-window": "\f542", + "shop": "\f543", + "shuffle": "\f544", + "signpost-2-fill": "\f545", + "signpost-2": "\f546", + "signpost-fill": "\f547", + "signpost-split-fill": "\f548", + "signpost-split": "\f549", + "signpost": "\f54a", + "sim-fill": "\f54b", + "sim": "\f54c", + "skip-backward-btn-fill": "\f54d", + "skip-backward-btn": "\f54e", + "skip-backward-circle-fill": "\f54f", + "skip-backward-circle": "\f550", + "skip-backward-fill": "\f551", + "skip-backward": "\f552", + "skip-end-btn-fill": "\f553", + "skip-end-btn": "\f554", + "skip-end-circle-fill": "\f555", + "skip-end-circle": "\f556", + "skip-end-fill": "\f557", + "skip-end": "\f558", + "skip-forward-btn-fill": "\f559", + "skip-forward-btn": "\f55a", + "skip-forward-circle-fill": "\f55b", + "skip-forward-circle": "\f55c", + "skip-forward-fill": "\f55d", + "skip-forward": "\f55e", + "skip-start-btn-fill": "\f55f", + "skip-start-btn": "\f560", + "skip-start-circle-fill": "\f561", + "skip-start-circle": "\f562", + "skip-start-fill": "\f563", + "skip-start": "\f564", + "slack": "\f565", + "slash-circle-fill": "\f566", + "slash-circle": "\f567", + "slash-square-fill": "\f568", + "slash-square": "\f569", + "slash": "\f56a", + "sliders": "\f56b", + "smartwatch": "\f56c", + "snow": "\f56d", + "snow2": "\f56e", + "snow3": "\f56f", + "sort-alpha-down-alt": "\f570", + "sort-alpha-down": "\f571", + "sort-alpha-up-alt": "\f572", + "sort-alpha-up": "\f573", + "sort-down-alt": "\f574", + "sort-down": "\f575", + "sort-numeric-down-alt": "\f576", + "sort-numeric-down": "\f577", + "sort-numeric-up-alt": "\f578", + "sort-numeric-up": "\f579", + "sort-up-alt": "\f57a", + "sort-up": "\f57b", + "soundwave": "\f57c", + "speaker-fill": "\f57d", + "speaker": "\f57e", + "speedometer": "\f57f", + "speedometer2": "\f580", + "spellcheck": "\f581", + "square-fill": "\f582", + "square-half": "\f583", + "square": "\f584", + "stack": "\f585", + "star-fill": "\f586", + "star-half": "\f587", + "star": "\f588", + "stars": "\f589", + "stickies-fill": "\f58a", + "stickies": "\f58b", + "sticky-fill": "\f58c", + "sticky": "\f58d", + "stop-btn-fill": "\f58e", + "stop-btn": "\f58f", + "stop-circle-fill": "\f590", + "stop-circle": "\f591", + "stop-fill": "\f592", + "stop": "\f593", + "stoplights-fill": "\f594", + "stoplights": "\f595", + "stopwatch-fill": "\f596", + "stopwatch": "\f597", + "subtract": "\f598", + "suit-club-fill": "\f599", + "suit-club": "\f59a", + "suit-diamond-fill": "\f59b", + "suit-diamond": "\f59c", + "suit-heart-fill": "\f59d", + "suit-heart": "\f59e", + "suit-spade-fill": "\f59f", + "suit-spade": "\f5a0", + "sun-fill": "\f5a1", + "sun": "\f5a2", + "sunglasses": "\f5a3", + "sunrise-fill": "\f5a4", + "sunrise": "\f5a5", + "sunset-fill": "\f5a6", + "sunset": "\f5a7", + "symmetry-horizontal": "\f5a8", + "symmetry-vertical": "\f5a9", + "table": "\f5aa", + "tablet-fill": "\f5ab", + "tablet-landscape-fill": "\f5ac", + "tablet-landscape": "\f5ad", + "tablet": "\f5ae", + "tag-fill": "\f5af", + "tag": "\f5b0", + "tags-fill": "\f5b1", + "tags": "\f5b2", + "telegram": "\f5b3", + "telephone-fill": "\f5b4", + "telephone-forward-fill": "\f5b5", + "telephone-forward": "\f5b6", + "telephone-inbound-fill": "\f5b7", + "telephone-inbound": "\f5b8", + "telephone-minus-fill": "\f5b9", + "telephone-minus": "\f5ba", + "telephone-outbound-fill": "\f5bb", + "telephone-outbound": "\f5bc", + "telephone-plus-fill": "\f5bd", + "telephone-plus": "\f5be", + "telephone-x-fill": "\f5bf", + "telephone-x": "\f5c0", + "telephone": "\f5c1", + "terminal-fill": "\f5c2", + "terminal": "\f5c3", + "text-center": "\f5c4", + "text-indent-left": "\f5c5", + "text-indent-right": "\f5c6", + "text-left": "\f5c7", + "text-paragraph": "\f5c8", + "text-right": "\f5c9", + "textarea-resize": "\f5ca", + "textarea-t": "\f5cb", + "textarea": "\f5cc", + "thermometer-half": "\f5cd", + "thermometer-high": "\f5ce", + "thermometer-low": "\f5cf", + "thermometer-snow": "\f5d0", + "thermometer-sun": "\f5d1", + "thermometer": "\f5d2", + "three-dots-vertical": "\f5d3", + "three-dots": "\f5d4", + "toggle-off": "\f5d5", + "toggle-on": "\f5d6", + "toggle2-off": "\f5d7", + "toggle2-on": "\f5d8", + "toggles": "\f5d9", + "toggles2": "\f5da", + "tools": "\f5db", + "tornado": "\f5dc", + "trash-fill": "\f5dd", + "trash": "\f5de", + "trash2-fill": "\f5df", + "trash2": "\f5e0", + "tree-fill": "\f5e1", + "tree": "\f5e2", + "triangle-fill": "\f5e3", + "triangle-half": "\f5e4", + "triangle": "\f5e5", + "trophy-fill": "\f5e6", + "trophy": "\f5e7", + "tropical-storm": "\f5e8", + "truck-flatbed": "\f5e9", + "truck": "\f5ea", + "tsunami": "\f5eb", + "tv-fill": "\f5ec", + "tv": "\f5ed", + "twitch": "\f5ee", + "twitter": "\f5ef", + "type-bold": "\f5f0", + "type-h1": "\f5f1", + "type-h2": "\f5f2", + "type-h3": "\f5f3", + "type-italic": "\f5f4", + "type-strikethrough": "\f5f5", + "type-underline": "\f5f6", + "type": "\f5f7", + "ui-checks-grid": "\f5f8", + "ui-checks": "\f5f9", + "ui-radios-grid": "\f5fa", + "ui-radios": "\f5fb", + "umbrella-fill": "\f5fc", + "umbrella": "\f5fd", + "union": "\f5fe", + "unlock-fill": "\f5ff", + "unlock": "\f600", + "upc-scan": "\f601", + "upc": "\f602", + "upload": "\f603", + "vector-pen": "\f604", + "view-list": "\f605", + "view-stacked": "\f606", + "vinyl-fill": "\f607", + "vinyl": "\f608", + "voicemail": "\f609", + "volume-down-fill": "\f60a", + "volume-down": "\f60b", + "volume-mute-fill": "\f60c", + "volume-mute": "\f60d", + "volume-off-fill": "\f60e", + "volume-off": "\f60f", + "volume-up-fill": "\f610", + "volume-up": "\f611", + "vr": "\f612", + "wallet-fill": "\f613", + "wallet": "\f614", + "wallet2": "\f615", + "watch": "\f616", + "water": "\f617", + "whatsapp": "\f618", + "wifi-1": "\f619", + "wifi-2": "\f61a", + "wifi-off": "\f61b", + "wifi": "\f61c", + "wind": "\f61d", + "window-dock": "\f61e", + "window-sidebar": "\f61f", + "window": "\f620", + "wrench": "\f621", + "x-circle-fill": "\f622", + "x-circle": "\f623", + "x-diamond-fill": "\f624", + "x-diamond": "\f625", + "x-octagon-fill": "\f626", + "x-octagon": "\f627", + "x-square-fill": "\f628", + "x-square": "\f629", + "x": "\f62a", + "youtube": "\f62b", + "zoom-in": "\f62c", + "zoom-out": "\f62d", + "bank": "\f62e", + "bank2": "\f62f", + "bell-slash-fill": "\f630", + "bell-slash": "\f631", + "cash-coin": "\f632", + "check-lg": "\f633", + "coin": "\f634", + "currency-bitcoin": "\f635", + "currency-dollar": "\f636", + "currency-euro": "\f637", + "currency-exchange": "\f638", + "currency-pound": "\f639", + "currency-yen": "\f63a", + "dash-lg": "\f63b", + "exclamation-lg": "\f63c", + "file-earmark-pdf-fill": "\f63d", + "file-earmark-pdf": "\f63e", + "file-pdf-fill": "\f63f", + "file-pdf": "\f640", + "gender-ambiguous": "\f641", + "gender-female": "\f642", + "gender-male": "\f643", + "gender-trans": "\f644", + "headset-vr": "\f645", + "info-lg": "\f646", + "mastodon": "\f647", + "messenger": "\f648", + "piggy-bank-fill": "\f649", + "piggy-bank": "\f64a", + "pin-map-fill": "\f64b", + "pin-map": "\f64c", + "plus-lg": "\f64d", + "question-lg": "\f64e", + "recycle": "\f64f", + "reddit": "\f650", + "safe-fill": "\f651", + "safe2-fill": "\f652", + "safe2": "\f653", + "sd-card-fill": "\f654", + "sd-card": "\f655", + "skype": "\f656", + "slash-lg": "\f657", + "translate": "\f658", + "x-lg": "\f659", + "safe": "\f65a", + "apple": "\f65b", + "microsoft": "\f65d", + "windows": "\f65e", + "behance": "\f65c", + "dribbble": "\f65f", + "line": "\f660", + "medium": "\f661", + "paypal": "\f662", + "pinterest": "\f663", + "signal": "\f664", + "snapchat": "\f665", + "spotify": "\f666", + "stack-overflow": "\f667", + "strava": "\f668", + "wordpress": "\f669", + "vimeo": "\f66a", + "activity": "\f66b", + "easel2-fill": "\f66c", + "easel2": "\f66d", + "easel3-fill": "\f66e", + "easel3": "\f66f", + "fan": "\f670", + "fingerprint": "\f671", + "graph-down-arrow": "\f672", + "graph-up-arrow": "\f673", + "hypnotize": "\f674", + "magic": "\f675", + "person-rolodex": "\f676", + "person-video": "\f677", + "person-video2": "\f678", + "person-video3": "\f679", + "person-workspace": "\f67a", + "radioactive": "\f67b", + "webcam-fill": "\f67c", + "webcam": "\f67d", + "yin-yang": "\f67e", + "bandaid-fill": "\f680", + "bandaid": "\f681", + "bluetooth": "\f682", + "body-text": "\f683", + "boombox": "\f684", + "boxes": "\f685", + "dpad-fill": "\f686", + "dpad": "\f687", + "ear-fill": "\f688", + "ear": "\f689", + "envelope-check-1": "\f68a", + "envelope-check-fill": "\f68b", + "envelope-check": "\f68c", + "envelope-dash-1": "\f68d", + "envelope-dash-fill": "\f68e", + "envelope-dash": "\f68f", + "envelope-exclamation-1": "\f690", + "envelope-exclamation-fill": "\f691", + "envelope-exclamation": "\f692", + "envelope-plus-fill": "\f693", + "envelope-plus": "\f694", + "envelope-slash-1": "\f695", + "envelope-slash-fill": "\f696", + "envelope-slash": "\f697", + "envelope-x-1": "\f698", + "envelope-x-fill": "\f699", + "envelope-x": "\f69a", + "explicit-fill": "\f69b", + "explicit": "\f69c", + "git": "\f69d", + "infinity": "\f69e", + "list-columns-reverse": "\f69f", + "list-columns": "\f6a0", + "meta": "\f6a1", + "mortorboard-fill": "\f6a2", + "mortorboard": "\f6a3", + "nintendo-switch": "\f6a4", + "pc-display-horizontal": "\f6a5", + "pc-display": "\f6a6", + "pc-horizontal": "\f6a7", + "pc": "\f6a8", + "playstation": "\f6a9", + "plus-slash-minus": "\f6aa", + "projector-fill": "\f6ab", + "projector": "\f6ac", + "qr-code-scan": "\f6ad", + "qr-code": "\f6ae", + "quora": "\f6af", + "quote": "\f6b0", + "robot": "\f6b1", + "send-check-fill": "\f6b2", + "send-check": "\f6b3", + "send-dash-fill": "\f6b4", + "send-dash": "\f6b5", + "send-exclamation-1": "\f6b6", + "send-exclamation-fill": "\f6b7", + "send-exclamation": "\f6b8", + "send-fill": "\f6b9", + "send-plus-fill": "\f6ba", + "send-plus": "\f6bb", + "send-slash-fill": "\f6bc", + "send-slash": "\f6bd", + "send-x-fill": "\f6be", + "send-x": "\f6bf", + "send": "\f6c0", + "steam": "\f6c1", + "terminal-dash-1": "\f6c2", + "terminal-dash": "\f6c3", + "terminal-plus": "\f6c4", + "terminal-split": "\f6c5", + "ticket-detailed-fill": "\f6c6", + "ticket-detailed": "\f6c7", + "ticket-fill": "\f6c8", + "ticket-perforated-fill": "\f6c9", + "ticket-perforated": "\f6ca", + "ticket": "\f6cb", + "tiktok": "\f6cc", + "window-dash": "\f6cd", + "window-desktop": "\f6ce", + "window-fullscreen": "\f6cf", + "window-plus": "\f6d0", + "window-split": "\f6d1", + "window-stack": "\f6d2", + "window-x": "\f6d3", + "xbox": "\f6d4", + "ethernet": "\f6d5", + "hdmi-fill": "\f6d6", + "hdmi": "\f6d7", + "usb-c-fill": "\f6d8", + "usb-c": "\f6d9", + "usb-fill": "\f6da", + "usb-plug-fill": "\f6db", + "usb-plug": "\f6dc", + "usb-symbol": "\f6dd", + "usb": "\f6de", + "boombox-fill": "\f6df", + "displayport-1": "\f6e0", + "displayport": "\f6e1", + "gpu-card": "\f6e2", + "memory": "\f6e3", + "modem-fill": "\f6e4", + "modem": "\f6e5", + "motherboard-fill": "\f6e6", + "motherboard": "\f6e7", + "optical-audio-fill": "\f6e8", + "optical-audio": "\f6e9", + "pci-card": "\f6ea", + "router-fill": "\f6eb", + "router": "\f6ec", + "ssd-fill": "\f6ed", + "ssd": "\f6ee", + "thunderbolt-fill": "\f6ef", + "thunderbolt": "\f6f0", + "usb-drive-fill": "\f6f1", + "usb-drive": "\f6f2", + "usb-micro-fill": "\f6f3", + "usb-micro": "\f6f4", + "usb-mini-fill": "\f6f5", + "usb-mini": "\f6f6", + "cloud-haze2": "\f6f7", + "device-hdd-fill": "\f6f8", + "device-hdd": "\f6f9", + "device-ssd-fill": "\f6fa", + "device-ssd": "\f6fb", + "displayport-fill": "\f6fc", + "mortarboard-fill": "\f6fd", + "mortarboard": "\f6fe", + "terminal-x": "\f6ff", + "arrow-through-heart-fill": "\f700", + "arrow-through-heart": "\f701", + "badge-sd-fill": "\f702", + "badge-sd": "\f703", + "bag-heart-fill": "\f704", + "bag-heart": "\f705", + "balloon-fill": "\f706", + "balloon-heart-fill": "\f707", + "balloon-heart": "\f708", + "balloon": "\f709", + "box2-fill": "\f70a", + "box2-heart-fill": "\f70b", + "box2-heart": "\f70c", + "box2": "\f70d", + "braces-asterisk": "\f70e", + "calendar-heart-fill": "\f70f", + "calendar-heart": "\f710", + "calendar2-heart-fill": "\f711", + "calendar2-heart": "\f712", + "chat-heart-fill": "\f713", + "chat-heart": "\f714", + "chat-left-heart-fill": "\f715", + "chat-left-heart": "\f716", + "chat-right-heart-fill": "\f717", + "chat-right-heart": "\f718", + "chat-square-heart-fill": "\f719", + "chat-square-heart": "\f71a", + "clipboard-check-fill": "\f71b", + "clipboard-data-fill": "\f71c", + "clipboard-fill": "\f71d", + "clipboard-heart-fill": "\f71e", + "clipboard-heart": "\f71f", + "clipboard-minus-fill": "\f720", + "clipboard-plus-fill": "\f721", + "clipboard-pulse": "\f722", + "clipboard-x-fill": "\f723", + "clipboard2-check-fill": "\f724", + "clipboard2-check": "\f725", + "clipboard2-data-fill": "\f726", + "clipboard2-data": "\f727", + "clipboard2-fill": "\f728", + "clipboard2-heart-fill": "\f729", + "clipboard2-heart": "\f72a", + "clipboard2-minus-fill": "\f72b", + "clipboard2-minus": "\f72c", + "clipboard2-plus-fill": "\f72d", + "clipboard2-plus": "\f72e", + "clipboard2-pulse-fill": "\f72f", + "clipboard2-pulse": "\f730", + "clipboard2-x-fill": "\f731", + "clipboard2-x": "\f732", + "clipboard2": "\f733", + "emoji-kiss-fill": "\f734", + "emoji-kiss": "\f735", + "envelope-heart-fill": "\f736", + "envelope-heart": "\f737", + "envelope-open-heart-fill": "\f738", + "envelope-open-heart": "\f739", + "envelope-paper-fill": "\f73a", + "envelope-paper-heart-fill": "\f73b", + "envelope-paper-heart": "\f73c", + "envelope-paper": "\f73d", + "filetype-aac": "\f73e", + "filetype-ai": "\f73f", + "filetype-bmp": "\f740", + "filetype-cs": "\f741", + "filetype-css": "\f742", + "filetype-csv": "\f743", + "filetype-doc": "\f744", + "filetype-docx": "\f745", + "filetype-exe": "\f746", + "filetype-gif": "\f747", + "filetype-heic": "\f748", + "filetype-html": "\f749", + "filetype-java": "\f74a", + "filetype-jpg": "\f74b", + "filetype-js": "\f74c", + "filetype-jsx": "\f74d", + "filetype-key": "\f74e", + "filetype-m4p": "\f74f", + "filetype-md": "\f750", + "filetype-mdx": "\f751", + "filetype-mov": "\f752", + "filetype-mp3": "\f753", + "filetype-mp4": "\f754", + "filetype-otf": "\f755", + "filetype-pdf": "\f756", + "filetype-php": "\f757", + "filetype-png": "\f758", + "filetype-ppt-1": "\f759", + "filetype-ppt": "\f75a", + "filetype-psd": "\f75b", + "filetype-py": "\f75c", + "filetype-raw": "\f75d", + "filetype-rb": "\f75e", + "filetype-sass": "\f75f", + "filetype-scss": "\f760", + "filetype-sh": "\f761", + "filetype-svg": "\f762", + "filetype-tiff": "\f763", + "filetype-tsx": "\f764", + "filetype-ttf": "\f765", + "filetype-txt": "\f766", + "filetype-wav": "\f767", + "filetype-woff": "\f768", + "filetype-xls-1": "\f769", + "filetype-xls": "\f76a", + "filetype-xml": "\f76b", + "filetype-yml": "\f76c", + "heart-arrow": "\f76d", + "heart-pulse-fill": "\f76e", + "heart-pulse": "\f76f", + "heartbreak-fill": "\f770", + "heartbreak": "\f771", + "hearts": "\f772", + "hospital-fill": "\f773", + "hospital": "\f774", + "house-heart-fill": "\f775", + "house-heart": "\f776", + "incognito": "\f777", + "magnet-fill": "\f778", + "magnet": "\f779", + "person-heart": "\f77a", + "person-hearts": "\f77b", + "phone-flip": "\f77c", + "plugin": "\f77d", + "postage-fill": "\f77e", + "postage-heart-fill": "\f77f", + "postage-heart": "\f780", + "postage": "\f781", + "postcard-fill": "\f782", + "postcard-heart-fill": "\f783", + "postcard-heart": "\f784", + "postcard": "\f785", + "search-heart-fill": "\f786", + "search-heart": "\f787", + "sliders2-vertical": "\f788", + "sliders2": "\f789", + "trash3-fill": "\f78a", + "trash3": "\f78b", + "valentine": "\f78c", + "valentine2": "\f78d", + "wrench-adjustable-circle-fill": "\f78e", + "wrench-adjustable-circle": "\f78f", + "wrench-adjustable": "\f790", + "filetype-json": "\f791", + "filetype-pptx": "\f792", + "filetype-xlsx": "\f793", +); + +.bi-123::before { content: map-get($bootstrap-icons-map, "123"); } +.bi-alarm-fill::before { content: map-get($bootstrap-icons-map, "alarm-fill"); } +.bi-alarm::before { content: map-get($bootstrap-icons-map, "alarm"); } +.bi-align-bottom::before { content: map-get($bootstrap-icons-map, "align-bottom"); } +.bi-align-center::before { content: map-get($bootstrap-icons-map, "align-center"); } +.bi-align-end::before { content: map-get($bootstrap-icons-map, "align-end"); } +.bi-align-middle::before { content: map-get($bootstrap-icons-map, "align-middle"); } +.bi-align-start::before { content: map-get($bootstrap-icons-map, "align-start"); } +.bi-align-top::before { content: map-get($bootstrap-icons-map, "align-top"); } +.bi-alt::before { content: map-get($bootstrap-icons-map, "alt"); } +.bi-app-indicator::before { content: map-get($bootstrap-icons-map, "app-indicator"); } +.bi-app::before { content: map-get($bootstrap-icons-map, "app"); } +.bi-archive-fill::before { content: map-get($bootstrap-icons-map, "archive-fill"); } +.bi-archive::before { content: map-get($bootstrap-icons-map, "archive"); } +.bi-arrow-90deg-down::before { content: map-get($bootstrap-icons-map, "arrow-90deg-down"); } +.bi-arrow-90deg-left::before { content: map-get($bootstrap-icons-map, "arrow-90deg-left"); } +.bi-arrow-90deg-right::before { content: map-get($bootstrap-icons-map, "arrow-90deg-right"); } +.bi-arrow-90deg-up::before { content: map-get($bootstrap-icons-map, "arrow-90deg-up"); } +.bi-arrow-bar-down::before { content: map-get($bootstrap-icons-map, "arrow-bar-down"); } +.bi-arrow-bar-left::before { content: map-get($bootstrap-icons-map, "arrow-bar-left"); } +.bi-arrow-bar-right::before { content: map-get($bootstrap-icons-map, "arrow-bar-right"); } +.bi-arrow-bar-up::before { content: map-get($bootstrap-icons-map, "arrow-bar-up"); } +.bi-arrow-clockwise::before { content: map-get($bootstrap-icons-map, "arrow-clockwise"); } +.bi-arrow-counterclockwise::before { content: map-get($bootstrap-icons-map, "arrow-counterclockwise"); } +.bi-arrow-down-circle-fill::before { content: map-get($bootstrap-icons-map, "arrow-down-circle-fill"); } +.bi-arrow-down-circle::before { content: map-get($bootstrap-icons-map, "arrow-down-circle"); } +.bi-arrow-down-left-circle-fill::before { content: map-get($bootstrap-icons-map, "arrow-down-left-circle-fill"); } +.bi-arrow-down-left-circle::before { content: map-get($bootstrap-icons-map, "arrow-down-left-circle"); } +.bi-arrow-down-left-square-fill::before { content: map-get($bootstrap-icons-map, "arrow-down-left-square-fill"); } +.bi-arrow-down-left-square::before { content: map-get($bootstrap-icons-map, "arrow-down-left-square"); } +.bi-arrow-down-left::before { content: map-get($bootstrap-icons-map, "arrow-down-left"); } +.bi-arrow-down-right-circle-fill::before { content: map-get($bootstrap-icons-map, "arrow-down-right-circle-fill"); } +.bi-arrow-down-right-circle::before { content: map-get($bootstrap-icons-map, "arrow-down-right-circle"); } +.bi-arrow-down-right-square-fill::before { content: map-get($bootstrap-icons-map, "arrow-down-right-square-fill"); } +.bi-arrow-down-right-square::before { content: map-get($bootstrap-icons-map, "arrow-down-right-square"); } +.bi-arrow-down-right::before { content: map-get($bootstrap-icons-map, "arrow-down-right"); } +.bi-arrow-down-short::before { content: map-get($bootstrap-icons-map, "arrow-down-short"); } +.bi-arrow-down-square-fill::before { content: map-get($bootstrap-icons-map, "arrow-down-square-fill"); } +.bi-arrow-down-square::before { content: map-get($bootstrap-icons-map, "arrow-down-square"); } +.bi-arrow-down-up::before { content: map-get($bootstrap-icons-map, "arrow-down-up"); } +.bi-arrow-down::before { content: map-get($bootstrap-icons-map, "arrow-down"); } +.bi-arrow-left-circle-fill::before { content: map-get($bootstrap-icons-map, "arrow-left-circle-fill"); } +.bi-arrow-left-circle::before { content: map-get($bootstrap-icons-map, "arrow-left-circle"); } +.bi-arrow-left-right::before { content: map-get($bootstrap-icons-map, "arrow-left-right"); } +.bi-arrow-left-short::before { content: map-get($bootstrap-icons-map, "arrow-left-short"); } +.bi-arrow-left-square-fill::before { content: map-get($bootstrap-icons-map, "arrow-left-square-fill"); } +.bi-arrow-left-square::before { content: map-get($bootstrap-icons-map, "arrow-left-square"); } +.bi-arrow-left::before { content: map-get($bootstrap-icons-map, "arrow-left"); } +.bi-arrow-repeat::before { content: map-get($bootstrap-icons-map, "arrow-repeat"); } +.bi-arrow-return-left::before { content: map-get($bootstrap-icons-map, "arrow-return-left"); } +.bi-arrow-return-right::before { content: map-get($bootstrap-icons-map, "arrow-return-right"); } +.bi-arrow-right-circle-fill::before { content: map-get($bootstrap-icons-map, "arrow-right-circle-fill"); } +.bi-arrow-right-circle::before { content: map-get($bootstrap-icons-map, "arrow-right-circle"); } +.bi-arrow-right-short::before { content: map-get($bootstrap-icons-map, "arrow-right-short"); } +.bi-arrow-right-square-fill::before { content: map-get($bootstrap-icons-map, "arrow-right-square-fill"); } +.bi-arrow-right-square::before { content: map-get($bootstrap-icons-map, "arrow-right-square"); } +.bi-arrow-right::before { content: map-get($bootstrap-icons-map, "arrow-right"); } +.bi-arrow-up-circle-fill::before { content: map-get($bootstrap-icons-map, "arrow-up-circle-fill"); } +.bi-arrow-up-circle::before { content: map-get($bootstrap-icons-map, "arrow-up-circle"); } +.bi-arrow-up-left-circle-fill::before { content: map-get($bootstrap-icons-map, "arrow-up-left-circle-fill"); } +.bi-arrow-up-left-circle::before { content: map-get($bootstrap-icons-map, "arrow-up-left-circle"); } +.bi-arrow-up-left-square-fill::before { content: map-get($bootstrap-icons-map, "arrow-up-left-square-fill"); } +.bi-arrow-up-left-square::before { content: map-get($bootstrap-icons-map, "arrow-up-left-square"); } +.bi-arrow-up-left::before { content: map-get($bootstrap-icons-map, "arrow-up-left"); } +.bi-arrow-up-right-circle-fill::before { content: map-get($bootstrap-icons-map, "arrow-up-right-circle-fill"); } +.bi-arrow-up-right-circle::before { content: map-get($bootstrap-icons-map, "arrow-up-right-circle"); } +.bi-arrow-up-right-square-fill::before { content: map-get($bootstrap-icons-map, "arrow-up-right-square-fill"); } +.bi-arrow-up-right-square::before { content: map-get($bootstrap-icons-map, "arrow-up-right-square"); } +.bi-arrow-up-right::before { content: map-get($bootstrap-icons-map, "arrow-up-right"); } +.bi-arrow-up-short::before { content: map-get($bootstrap-icons-map, "arrow-up-short"); } +.bi-arrow-up-square-fill::before { content: map-get($bootstrap-icons-map, "arrow-up-square-fill"); } +.bi-arrow-up-square::before { content: map-get($bootstrap-icons-map, "arrow-up-square"); } +.bi-arrow-up::before { content: map-get($bootstrap-icons-map, "arrow-up"); } +.bi-arrows-angle-contract::before { content: map-get($bootstrap-icons-map, "arrows-angle-contract"); } +.bi-arrows-angle-expand::before { content: map-get($bootstrap-icons-map, "arrows-angle-expand"); } +.bi-arrows-collapse::before { content: map-get($bootstrap-icons-map, "arrows-collapse"); } +.bi-arrows-expand::before { content: map-get($bootstrap-icons-map, "arrows-expand"); } +.bi-arrows-fullscreen::before { content: map-get($bootstrap-icons-map, "arrows-fullscreen"); } +.bi-arrows-move::before { content: map-get($bootstrap-icons-map, "arrows-move"); } +.bi-aspect-ratio-fill::before { content: map-get($bootstrap-icons-map, "aspect-ratio-fill"); } +.bi-aspect-ratio::before { content: map-get($bootstrap-icons-map, "aspect-ratio"); } +.bi-asterisk::before { content: map-get($bootstrap-icons-map, "asterisk"); } +.bi-at::before { content: map-get($bootstrap-icons-map, "at"); } +.bi-award-fill::before { content: map-get($bootstrap-icons-map, "award-fill"); } +.bi-award::before { content: map-get($bootstrap-icons-map, "award"); } +.bi-back::before { content: map-get($bootstrap-icons-map, "back"); } +.bi-backspace-fill::before { content: map-get($bootstrap-icons-map, "backspace-fill"); } +.bi-backspace-reverse-fill::before { content: map-get($bootstrap-icons-map, "backspace-reverse-fill"); } +.bi-backspace-reverse::before { content: map-get($bootstrap-icons-map, "backspace-reverse"); } +.bi-backspace::before { content: map-get($bootstrap-icons-map, "backspace"); } +.bi-badge-3d-fill::before { content: map-get($bootstrap-icons-map, "badge-3d-fill"); } +.bi-badge-3d::before { content: map-get($bootstrap-icons-map, "badge-3d"); } +.bi-badge-4k-fill::before { content: map-get($bootstrap-icons-map, "badge-4k-fill"); } +.bi-badge-4k::before { content: map-get($bootstrap-icons-map, "badge-4k"); } +.bi-badge-8k-fill::before { content: map-get($bootstrap-icons-map, "badge-8k-fill"); } +.bi-badge-8k::before { content: map-get($bootstrap-icons-map, "badge-8k"); } +.bi-badge-ad-fill::before { content: map-get($bootstrap-icons-map, "badge-ad-fill"); } +.bi-badge-ad::before { content: map-get($bootstrap-icons-map, "badge-ad"); } +.bi-badge-ar-fill::before { content: map-get($bootstrap-icons-map, "badge-ar-fill"); } +.bi-badge-ar::before { content: map-get($bootstrap-icons-map, "badge-ar"); } +.bi-badge-cc-fill::before { content: map-get($bootstrap-icons-map, "badge-cc-fill"); } +.bi-badge-cc::before { content: map-get($bootstrap-icons-map, "badge-cc"); } +.bi-badge-hd-fill::before { content: map-get($bootstrap-icons-map, "badge-hd-fill"); } +.bi-badge-hd::before { content: map-get($bootstrap-icons-map, "badge-hd"); } +.bi-badge-tm-fill::before { content: map-get($bootstrap-icons-map, "badge-tm-fill"); } +.bi-badge-tm::before { content: map-get($bootstrap-icons-map, "badge-tm"); } +.bi-badge-vo-fill::before { content: map-get($bootstrap-icons-map, "badge-vo-fill"); } +.bi-badge-vo::before { content: map-get($bootstrap-icons-map, "badge-vo"); } +.bi-badge-vr-fill::before { content: map-get($bootstrap-icons-map, "badge-vr-fill"); } +.bi-badge-vr::before { content: map-get($bootstrap-icons-map, "badge-vr"); } +.bi-badge-wc-fill::before { content: map-get($bootstrap-icons-map, "badge-wc-fill"); } +.bi-badge-wc::before { content: map-get($bootstrap-icons-map, "badge-wc"); } +.bi-bag-check-fill::before { content: map-get($bootstrap-icons-map, "bag-check-fill"); } +.bi-bag-check::before { content: map-get($bootstrap-icons-map, "bag-check"); } +.bi-bag-dash-fill::before { content: map-get($bootstrap-icons-map, "bag-dash-fill"); } +.bi-bag-dash::before { content: map-get($bootstrap-icons-map, "bag-dash"); } +.bi-bag-fill::before { content: map-get($bootstrap-icons-map, "bag-fill"); } +.bi-bag-plus-fill::before { content: map-get($bootstrap-icons-map, "bag-plus-fill"); } +.bi-bag-plus::before { content: map-get($bootstrap-icons-map, "bag-plus"); } +.bi-bag-x-fill::before { content: map-get($bootstrap-icons-map, "bag-x-fill"); } +.bi-bag-x::before { content: map-get($bootstrap-icons-map, "bag-x"); } +.bi-bag::before { content: map-get($bootstrap-icons-map, "bag"); } +.bi-bar-chart-fill::before { content: map-get($bootstrap-icons-map, "bar-chart-fill"); } +.bi-bar-chart-line-fill::before { content: map-get($bootstrap-icons-map, "bar-chart-line-fill"); } +.bi-bar-chart-line::before { content: map-get($bootstrap-icons-map, "bar-chart-line"); } +.bi-bar-chart-steps::before { content: map-get($bootstrap-icons-map, "bar-chart-steps"); } +.bi-bar-chart::before { content: map-get($bootstrap-icons-map, "bar-chart"); } +.bi-basket-fill::before { content: map-get($bootstrap-icons-map, "basket-fill"); } +.bi-basket::before { content: map-get($bootstrap-icons-map, "basket"); } +.bi-basket2-fill::before { content: map-get($bootstrap-icons-map, "basket2-fill"); } +.bi-basket2::before { content: map-get($bootstrap-icons-map, "basket2"); } +.bi-basket3-fill::before { content: map-get($bootstrap-icons-map, "basket3-fill"); } +.bi-basket3::before { content: map-get($bootstrap-icons-map, "basket3"); } +.bi-battery-charging::before { content: map-get($bootstrap-icons-map, "battery-charging"); } +.bi-battery-full::before { content: map-get($bootstrap-icons-map, "battery-full"); } +.bi-battery-half::before { content: map-get($bootstrap-icons-map, "battery-half"); } +.bi-battery::before { content: map-get($bootstrap-icons-map, "battery"); } +.bi-bell-fill::before { content: map-get($bootstrap-icons-map, "bell-fill"); } +.bi-bell::before { content: map-get($bootstrap-icons-map, "bell"); } +.bi-bezier::before { content: map-get($bootstrap-icons-map, "bezier"); } +.bi-bezier2::before { content: map-get($bootstrap-icons-map, "bezier2"); } +.bi-bicycle::before { content: map-get($bootstrap-icons-map, "bicycle"); } +.bi-binoculars-fill::before { content: map-get($bootstrap-icons-map, "binoculars-fill"); } +.bi-binoculars::before { content: map-get($bootstrap-icons-map, "binoculars"); } +.bi-blockquote-left::before { content: map-get($bootstrap-icons-map, "blockquote-left"); } +.bi-blockquote-right::before { content: map-get($bootstrap-icons-map, "blockquote-right"); } +.bi-book-fill::before { content: map-get($bootstrap-icons-map, "book-fill"); } +.bi-book-half::before { content: map-get($bootstrap-icons-map, "book-half"); } +.bi-book::before { content: map-get($bootstrap-icons-map, "book"); } +.bi-bookmark-check-fill::before { content: map-get($bootstrap-icons-map, "bookmark-check-fill"); } +.bi-bookmark-check::before { content: map-get($bootstrap-icons-map, "bookmark-check"); } +.bi-bookmark-dash-fill::before { content: map-get($bootstrap-icons-map, "bookmark-dash-fill"); } +.bi-bookmark-dash::before { content: map-get($bootstrap-icons-map, "bookmark-dash"); } +.bi-bookmark-fill::before { content: map-get($bootstrap-icons-map, "bookmark-fill"); } +.bi-bookmark-heart-fill::before { content: map-get($bootstrap-icons-map, "bookmark-heart-fill"); } +.bi-bookmark-heart::before { content: map-get($bootstrap-icons-map, "bookmark-heart"); } +.bi-bookmark-plus-fill::before { content: map-get($bootstrap-icons-map, "bookmark-plus-fill"); } +.bi-bookmark-plus::before { content: map-get($bootstrap-icons-map, "bookmark-plus"); } +.bi-bookmark-star-fill::before { content: map-get($bootstrap-icons-map, "bookmark-star-fill"); } +.bi-bookmark-star::before { content: map-get($bootstrap-icons-map, "bookmark-star"); } +.bi-bookmark-x-fill::before { content: map-get($bootstrap-icons-map, "bookmark-x-fill"); } +.bi-bookmark-x::before { content: map-get($bootstrap-icons-map, "bookmark-x"); } +.bi-bookmark::before { content: map-get($bootstrap-icons-map, "bookmark"); } +.bi-bookmarks-fill::before { content: map-get($bootstrap-icons-map, "bookmarks-fill"); } +.bi-bookmarks::before { content: map-get($bootstrap-icons-map, "bookmarks"); } +.bi-bookshelf::before { content: map-get($bootstrap-icons-map, "bookshelf"); } +.bi-bootstrap-fill::before { content: map-get($bootstrap-icons-map, "bootstrap-fill"); } +.bi-bootstrap-reboot::before { content: map-get($bootstrap-icons-map, "bootstrap-reboot"); } +.bi-bootstrap::before { content: map-get($bootstrap-icons-map, "bootstrap"); } +.bi-border-all::before { content: map-get($bootstrap-icons-map, "border-all"); } +.bi-border-bottom::before { content: map-get($bootstrap-icons-map, "border-bottom"); } +.bi-border-center::before { content: map-get($bootstrap-icons-map, "border-center"); } +.bi-border-inner::before { content: map-get($bootstrap-icons-map, "border-inner"); } +.bi-border-left::before { content: map-get($bootstrap-icons-map, "border-left"); } +.bi-border-middle::before { content: map-get($bootstrap-icons-map, "border-middle"); } +.bi-border-outer::before { content: map-get($bootstrap-icons-map, "border-outer"); } +.bi-border-right::before { content: map-get($bootstrap-icons-map, "border-right"); } +.bi-border-style::before { content: map-get($bootstrap-icons-map, "border-style"); } +.bi-border-top::before { content: map-get($bootstrap-icons-map, "border-top"); } +.bi-border-width::before { content: map-get($bootstrap-icons-map, "border-width"); } +.bi-border::before { content: map-get($bootstrap-icons-map, "border"); } +.bi-bounding-box-circles::before { content: map-get($bootstrap-icons-map, "bounding-box-circles"); } +.bi-bounding-box::before { content: map-get($bootstrap-icons-map, "bounding-box"); } +.bi-box-arrow-down-left::before { content: map-get($bootstrap-icons-map, "box-arrow-down-left"); } +.bi-box-arrow-down-right::before { content: map-get($bootstrap-icons-map, "box-arrow-down-right"); } +.bi-box-arrow-down::before { content: map-get($bootstrap-icons-map, "box-arrow-down"); } +.bi-box-arrow-in-down-left::before { content: map-get($bootstrap-icons-map, "box-arrow-in-down-left"); } +.bi-box-arrow-in-down-right::before { content: map-get($bootstrap-icons-map, "box-arrow-in-down-right"); } +.bi-box-arrow-in-down::before { content: map-get($bootstrap-icons-map, "box-arrow-in-down"); } +.bi-box-arrow-in-left::before { content: map-get($bootstrap-icons-map, "box-arrow-in-left"); } +.bi-box-arrow-in-right::before { content: map-get($bootstrap-icons-map, "box-arrow-in-right"); } +.bi-box-arrow-in-up-left::before { content: map-get($bootstrap-icons-map, "box-arrow-in-up-left"); } +.bi-box-arrow-in-up-right::before { content: map-get($bootstrap-icons-map, "box-arrow-in-up-right"); } +.bi-box-arrow-in-up::before { content: map-get($bootstrap-icons-map, "box-arrow-in-up"); } +.bi-box-arrow-left::before { content: map-get($bootstrap-icons-map, "box-arrow-left"); } +.bi-box-arrow-right::before { content: map-get($bootstrap-icons-map, "box-arrow-right"); } +.bi-box-arrow-up-left::before { content: map-get($bootstrap-icons-map, "box-arrow-up-left"); } +.bi-box-arrow-up-right::before { content: map-get($bootstrap-icons-map, "box-arrow-up-right"); } +.bi-box-arrow-up::before { content: map-get($bootstrap-icons-map, "box-arrow-up"); } +.bi-box-seam::before { content: map-get($bootstrap-icons-map, "box-seam"); } +.bi-box::before { content: map-get($bootstrap-icons-map, "box"); } +.bi-braces::before { content: map-get($bootstrap-icons-map, "braces"); } +.bi-bricks::before { content: map-get($bootstrap-icons-map, "bricks"); } +.bi-briefcase-fill::before { content: map-get($bootstrap-icons-map, "briefcase-fill"); } +.bi-briefcase::before { content: map-get($bootstrap-icons-map, "briefcase"); } +.bi-brightness-alt-high-fill::before { content: map-get($bootstrap-icons-map, "brightness-alt-high-fill"); } +.bi-brightness-alt-high::before { content: map-get($bootstrap-icons-map, "brightness-alt-high"); } +.bi-brightness-alt-low-fill::before { content: map-get($bootstrap-icons-map, "brightness-alt-low-fill"); } +.bi-brightness-alt-low::before { content: map-get($bootstrap-icons-map, "brightness-alt-low"); } +.bi-brightness-high-fill::before { content: map-get($bootstrap-icons-map, "brightness-high-fill"); } +.bi-brightness-high::before { content: map-get($bootstrap-icons-map, "brightness-high"); } +.bi-brightness-low-fill::before { content: map-get($bootstrap-icons-map, "brightness-low-fill"); } +.bi-brightness-low::before { content: map-get($bootstrap-icons-map, "brightness-low"); } +.bi-broadcast-pin::before { content: map-get($bootstrap-icons-map, "broadcast-pin"); } +.bi-broadcast::before { content: map-get($bootstrap-icons-map, "broadcast"); } +.bi-brush-fill::before { content: map-get($bootstrap-icons-map, "brush-fill"); } +.bi-brush::before { content: map-get($bootstrap-icons-map, "brush"); } +.bi-bucket-fill::before { content: map-get($bootstrap-icons-map, "bucket-fill"); } +.bi-bucket::before { content: map-get($bootstrap-icons-map, "bucket"); } +.bi-bug-fill::before { content: map-get($bootstrap-icons-map, "bug-fill"); } +.bi-bug::before { content: map-get($bootstrap-icons-map, "bug"); } +.bi-building::before { content: map-get($bootstrap-icons-map, "building"); } +.bi-bullseye::before { content: map-get($bootstrap-icons-map, "bullseye"); } +.bi-calculator-fill::before { content: map-get($bootstrap-icons-map, "calculator-fill"); } +.bi-calculator::before { content: map-get($bootstrap-icons-map, "calculator"); } +.bi-calendar-check-fill::before { content: map-get($bootstrap-icons-map, "calendar-check-fill"); } +.bi-calendar-check::before { content: map-get($bootstrap-icons-map, "calendar-check"); } +.bi-calendar-date-fill::before { content: map-get($bootstrap-icons-map, "calendar-date-fill"); } +.bi-calendar-date::before { content: map-get($bootstrap-icons-map, "calendar-date"); } +.bi-calendar-day-fill::before { content: map-get($bootstrap-icons-map, "calendar-day-fill"); } +.bi-calendar-day::before { content: map-get($bootstrap-icons-map, "calendar-day"); } +.bi-calendar-event-fill::before { content: map-get($bootstrap-icons-map, "calendar-event-fill"); } +.bi-calendar-event::before { content: map-get($bootstrap-icons-map, "calendar-event"); } +.bi-calendar-fill::before { content: map-get($bootstrap-icons-map, "calendar-fill"); } +.bi-calendar-minus-fill::before { content: map-get($bootstrap-icons-map, "calendar-minus-fill"); } +.bi-calendar-minus::before { content: map-get($bootstrap-icons-map, "calendar-minus"); } +.bi-calendar-month-fill::before { content: map-get($bootstrap-icons-map, "calendar-month-fill"); } +.bi-calendar-month::before { content: map-get($bootstrap-icons-map, "calendar-month"); } +.bi-calendar-plus-fill::before { content: map-get($bootstrap-icons-map, "calendar-plus-fill"); } +.bi-calendar-plus::before { content: map-get($bootstrap-icons-map, "calendar-plus"); } +.bi-calendar-range-fill::before { content: map-get($bootstrap-icons-map, "calendar-range-fill"); } +.bi-calendar-range::before { content: map-get($bootstrap-icons-map, "calendar-range"); } +.bi-calendar-week-fill::before { content: map-get($bootstrap-icons-map, "calendar-week-fill"); } +.bi-calendar-week::before { content: map-get($bootstrap-icons-map, "calendar-week"); } +.bi-calendar-x-fill::before { content: map-get($bootstrap-icons-map, "calendar-x-fill"); } +.bi-calendar-x::before { content: map-get($bootstrap-icons-map, "calendar-x"); } +.bi-calendar::before { content: map-get($bootstrap-icons-map, "calendar"); } +.bi-calendar2-check-fill::before { content: map-get($bootstrap-icons-map, "calendar2-check-fill"); } +.bi-calendar2-check::before { content: map-get($bootstrap-icons-map, "calendar2-check"); } +.bi-calendar2-date-fill::before { content: map-get($bootstrap-icons-map, "calendar2-date-fill"); } +.bi-calendar2-date::before { content: map-get($bootstrap-icons-map, "calendar2-date"); } +.bi-calendar2-day-fill::before { content: map-get($bootstrap-icons-map, "calendar2-day-fill"); } +.bi-calendar2-day::before { content: map-get($bootstrap-icons-map, "calendar2-day"); } +.bi-calendar2-event-fill::before { content: map-get($bootstrap-icons-map, "calendar2-event-fill"); } +.bi-calendar2-event::before { content: map-get($bootstrap-icons-map, "calendar2-event"); } +.bi-calendar2-fill::before { content: map-get($bootstrap-icons-map, "calendar2-fill"); } +.bi-calendar2-minus-fill::before { content: map-get($bootstrap-icons-map, "calendar2-minus-fill"); } +.bi-calendar2-minus::before { content: map-get($bootstrap-icons-map, "calendar2-minus"); } +.bi-calendar2-month-fill::before { content: map-get($bootstrap-icons-map, "calendar2-month-fill"); } +.bi-calendar2-month::before { content: map-get($bootstrap-icons-map, "calendar2-month"); } +.bi-calendar2-plus-fill::before { content: map-get($bootstrap-icons-map, "calendar2-plus-fill"); } +.bi-calendar2-plus::before { content: map-get($bootstrap-icons-map, "calendar2-plus"); } +.bi-calendar2-range-fill::before { content: map-get($bootstrap-icons-map, "calendar2-range-fill"); } +.bi-calendar2-range::before { content: map-get($bootstrap-icons-map, "calendar2-range"); } +.bi-calendar2-week-fill::before { content: map-get($bootstrap-icons-map, "calendar2-week-fill"); } +.bi-calendar2-week::before { content: map-get($bootstrap-icons-map, "calendar2-week"); } +.bi-calendar2-x-fill::before { content: map-get($bootstrap-icons-map, "calendar2-x-fill"); } +.bi-calendar2-x::before { content: map-get($bootstrap-icons-map, "calendar2-x"); } +.bi-calendar2::before { content: map-get($bootstrap-icons-map, "calendar2"); } +.bi-calendar3-event-fill::before { content: map-get($bootstrap-icons-map, "calendar3-event-fill"); } +.bi-calendar3-event::before { content: map-get($bootstrap-icons-map, "calendar3-event"); } +.bi-calendar3-fill::before { content: map-get($bootstrap-icons-map, "calendar3-fill"); } +.bi-calendar3-range-fill::before { content: map-get($bootstrap-icons-map, "calendar3-range-fill"); } +.bi-calendar3-range::before { content: map-get($bootstrap-icons-map, "calendar3-range"); } +.bi-calendar3-week-fill::before { content: map-get($bootstrap-icons-map, "calendar3-week-fill"); } +.bi-calendar3-week::before { content: map-get($bootstrap-icons-map, "calendar3-week"); } +.bi-calendar3::before { content: map-get($bootstrap-icons-map, "calendar3"); } +.bi-calendar4-event::before { content: map-get($bootstrap-icons-map, "calendar4-event"); } +.bi-calendar4-range::before { content: map-get($bootstrap-icons-map, "calendar4-range"); } +.bi-calendar4-week::before { content: map-get($bootstrap-icons-map, "calendar4-week"); } +.bi-calendar4::before { content: map-get($bootstrap-icons-map, "calendar4"); } +.bi-camera-fill::before { content: map-get($bootstrap-icons-map, "camera-fill"); } +.bi-camera-reels-fill::before { content: map-get($bootstrap-icons-map, "camera-reels-fill"); } +.bi-camera-reels::before { content: map-get($bootstrap-icons-map, "camera-reels"); } +.bi-camera-video-fill::before { content: map-get($bootstrap-icons-map, "camera-video-fill"); } +.bi-camera-video-off-fill::before { content: map-get($bootstrap-icons-map, "camera-video-off-fill"); } +.bi-camera-video-off::before { content: map-get($bootstrap-icons-map, "camera-video-off"); } +.bi-camera-video::before { content: map-get($bootstrap-icons-map, "camera-video"); } +.bi-camera::before { content: map-get($bootstrap-icons-map, "camera"); } +.bi-camera2::before { content: map-get($bootstrap-icons-map, "camera2"); } +.bi-capslock-fill::before { content: map-get($bootstrap-icons-map, "capslock-fill"); } +.bi-capslock::before { content: map-get($bootstrap-icons-map, "capslock"); } +.bi-card-checklist::before { content: map-get($bootstrap-icons-map, "card-checklist"); } +.bi-card-heading::before { content: map-get($bootstrap-icons-map, "card-heading"); } +.bi-card-image::before { content: map-get($bootstrap-icons-map, "card-image"); } +.bi-card-list::before { content: map-get($bootstrap-icons-map, "card-list"); } +.bi-card-text::before { content: map-get($bootstrap-icons-map, "card-text"); } +.bi-caret-down-fill::before { content: map-get($bootstrap-icons-map, "caret-down-fill"); } +.bi-caret-down-square-fill::before { content: map-get($bootstrap-icons-map, "caret-down-square-fill"); } +.bi-caret-down-square::before { content: map-get($bootstrap-icons-map, "caret-down-square"); } +.bi-caret-down::before { content: map-get($bootstrap-icons-map, "caret-down"); } +.bi-caret-left-fill::before { content: map-get($bootstrap-icons-map, "caret-left-fill"); } +.bi-caret-left-square-fill::before { content: map-get($bootstrap-icons-map, "caret-left-square-fill"); } +.bi-caret-left-square::before { content: map-get($bootstrap-icons-map, "caret-left-square"); } +.bi-caret-left::before { content: map-get($bootstrap-icons-map, "caret-left"); } +.bi-caret-right-fill::before { content: map-get($bootstrap-icons-map, "caret-right-fill"); } +.bi-caret-right-square-fill::before { content: map-get($bootstrap-icons-map, "caret-right-square-fill"); } +.bi-caret-right-square::before { content: map-get($bootstrap-icons-map, "caret-right-square"); } +.bi-caret-right::before { content: map-get($bootstrap-icons-map, "caret-right"); } +.bi-caret-up-fill::before { content: map-get($bootstrap-icons-map, "caret-up-fill"); } +.bi-caret-up-square-fill::before { content: map-get($bootstrap-icons-map, "caret-up-square-fill"); } +.bi-caret-up-square::before { content: map-get($bootstrap-icons-map, "caret-up-square"); } +.bi-caret-up::before { content: map-get($bootstrap-icons-map, "caret-up"); } +.bi-cart-check-fill::before { content: map-get($bootstrap-icons-map, "cart-check-fill"); } +.bi-cart-check::before { content: map-get($bootstrap-icons-map, "cart-check"); } +.bi-cart-dash-fill::before { content: map-get($bootstrap-icons-map, "cart-dash-fill"); } +.bi-cart-dash::before { content: map-get($bootstrap-icons-map, "cart-dash"); } +.bi-cart-fill::before { content: map-get($bootstrap-icons-map, "cart-fill"); } +.bi-cart-plus-fill::before { content: map-get($bootstrap-icons-map, "cart-plus-fill"); } +.bi-cart-plus::before { content: map-get($bootstrap-icons-map, "cart-plus"); } +.bi-cart-x-fill::before { content: map-get($bootstrap-icons-map, "cart-x-fill"); } +.bi-cart-x::before { content: map-get($bootstrap-icons-map, "cart-x"); } +.bi-cart::before { content: map-get($bootstrap-icons-map, "cart"); } +.bi-cart2::before { content: map-get($bootstrap-icons-map, "cart2"); } +.bi-cart3::before { content: map-get($bootstrap-icons-map, "cart3"); } +.bi-cart4::before { content: map-get($bootstrap-icons-map, "cart4"); } +.bi-cash-stack::before { content: map-get($bootstrap-icons-map, "cash-stack"); } +.bi-cash::before { content: map-get($bootstrap-icons-map, "cash"); } +.bi-cast::before { content: map-get($bootstrap-icons-map, "cast"); } +.bi-chat-dots-fill::before { content: map-get($bootstrap-icons-map, "chat-dots-fill"); } +.bi-chat-dots::before { content: map-get($bootstrap-icons-map, "chat-dots"); } +.bi-chat-fill::before { content: map-get($bootstrap-icons-map, "chat-fill"); } +.bi-chat-left-dots-fill::before { content: map-get($bootstrap-icons-map, "chat-left-dots-fill"); } +.bi-chat-left-dots::before { content: map-get($bootstrap-icons-map, "chat-left-dots"); } +.bi-chat-left-fill::before { content: map-get($bootstrap-icons-map, "chat-left-fill"); } +.bi-chat-left-quote-fill::before { content: map-get($bootstrap-icons-map, "chat-left-quote-fill"); } +.bi-chat-left-quote::before { content: map-get($bootstrap-icons-map, "chat-left-quote"); } +.bi-chat-left-text-fill::before { content: map-get($bootstrap-icons-map, "chat-left-text-fill"); } +.bi-chat-left-text::before { content: map-get($bootstrap-icons-map, "chat-left-text"); } +.bi-chat-left::before { content: map-get($bootstrap-icons-map, "chat-left"); } +.bi-chat-quote-fill::before { content: map-get($bootstrap-icons-map, "chat-quote-fill"); } +.bi-chat-quote::before { content: map-get($bootstrap-icons-map, "chat-quote"); } +.bi-chat-right-dots-fill::before { content: map-get($bootstrap-icons-map, "chat-right-dots-fill"); } +.bi-chat-right-dots::before { content: map-get($bootstrap-icons-map, "chat-right-dots"); } +.bi-chat-right-fill::before { content: map-get($bootstrap-icons-map, "chat-right-fill"); } +.bi-chat-right-quote-fill::before { content: map-get($bootstrap-icons-map, "chat-right-quote-fill"); } +.bi-chat-right-quote::before { content: map-get($bootstrap-icons-map, "chat-right-quote"); } +.bi-chat-right-text-fill::before { content: map-get($bootstrap-icons-map, "chat-right-text-fill"); } +.bi-chat-right-text::before { content: map-get($bootstrap-icons-map, "chat-right-text"); } +.bi-chat-right::before { content: map-get($bootstrap-icons-map, "chat-right"); } +.bi-chat-square-dots-fill::before { content: map-get($bootstrap-icons-map, "chat-square-dots-fill"); } +.bi-chat-square-dots::before { content: map-get($bootstrap-icons-map, "chat-square-dots"); } +.bi-chat-square-fill::before { content: map-get($bootstrap-icons-map, "chat-square-fill"); } +.bi-chat-square-quote-fill::before { content: map-get($bootstrap-icons-map, "chat-square-quote-fill"); } +.bi-chat-square-quote::before { content: map-get($bootstrap-icons-map, "chat-square-quote"); } +.bi-chat-square-text-fill::before { content: map-get($bootstrap-icons-map, "chat-square-text-fill"); } +.bi-chat-square-text::before { content: map-get($bootstrap-icons-map, "chat-square-text"); } +.bi-chat-square::before { content: map-get($bootstrap-icons-map, "chat-square"); } +.bi-chat-text-fill::before { content: map-get($bootstrap-icons-map, "chat-text-fill"); } +.bi-chat-text::before { content: map-get($bootstrap-icons-map, "chat-text"); } +.bi-chat::before { content: map-get($bootstrap-icons-map, "chat"); } +.bi-check-all::before { content: map-get($bootstrap-icons-map, "check-all"); } +.bi-check-circle-fill::before { content: map-get($bootstrap-icons-map, "check-circle-fill"); } +.bi-check-circle::before { content: map-get($bootstrap-icons-map, "check-circle"); } +.bi-check-square-fill::before { content: map-get($bootstrap-icons-map, "check-square-fill"); } +.bi-check-square::before { content: map-get($bootstrap-icons-map, "check-square"); } +.bi-check::before { content: map-get($bootstrap-icons-map, "check"); } +.bi-check2-all::before { content: map-get($bootstrap-icons-map, "check2-all"); } +.bi-check2-circle::before { content: map-get($bootstrap-icons-map, "check2-circle"); } +.bi-check2-square::before { content: map-get($bootstrap-icons-map, "check2-square"); } +.bi-check2::before { content: map-get($bootstrap-icons-map, "check2"); } +.bi-chevron-bar-contract::before { content: map-get($bootstrap-icons-map, "chevron-bar-contract"); } +.bi-chevron-bar-down::before { content: map-get($bootstrap-icons-map, "chevron-bar-down"); } +.bi-chevron-bar-expand::before { content: map-get($bootstrap-icons-map, "chevron-bar-expand"); } +.bi-chevron-bar-left::before { content: map-get($bootstrap-icons-map, "chevron-bar-left"); } +.bi-chevron-bar-right::before { content: map-get($bootstrap-icons-map, "chevron-bar-right"); } +.bi-chevron-bar-up::before { content: map-get($bootstrap-icons-map, "chevron-bar-up"); } +.bi-chevron-compact-down::before { content: map-get($bootstrap-icons-map, "chevron-compact-down"); } +.bi-chevron-compact-left::before { content: map-get($bootstrap-icons-map, "chevron-compact-left"); } +.bi-chevron-compact-right::before { content: map-get($bootstrap-icons-map, "chevron-compact-right"); } +.bi-chevron-compact-up::before { content: map-get($bootstrap-icons-map, "chevron-compact-up"); } +.bi-chevron-contract::before { content: map-get($bootstrap-icons-map, "chevron-contract"); } +.bi-chevron-double-down::before { content: map-get($bootstrap-icons-map, "chevron-double-down"); } +.bi-chevron-double-left::before { content: map-get($bootstrap-icons-map, "chevron-double-left"); } +.bi-chevron-double-right::before { content: map-get($bootstrap-icons-map, "chevron-double-right"); } +.bi-chevron-double-up::before { content: map-get($bootstrap-icons-map, "chevron-double-up"); } +.bi-chevron-down::before { content: map-get($bootstrap-icons-map, "chevron-down"); } +.bi-chevron-expand::before { content: map-get($bootstrap-icons-map, "chevron-expand"); } +.bi-chevron-left::before { content: map-get($bootstrap-icons-map, "chevron-left"); } +.bi-chevron-right::before { content: map-get($bootstrap-icons-map, "chevron-right"); } +.bi-chevron-up::before { content: map-get($bootstrap-icons-map, "chevron-up"); } +.bi-circle-fill::before { content: map-get($bootstrap-icons-map, "circle-fill"); } +.bi-circle-half::before { content: map-get($bootstrap-icons-map, "circle-half"); } +.bi-circle-square::before { content: map-get($bootstrap-icons-map, "circle-square"); } +.bi-circle::before { content: map-get($bootstrap-icons-map, "circle"); } +.bi-clipboard-check::before { content: map-get($bootstrap-icons-map, "clipboard-check"); } +.bi-clipboard-data::before { content: map-get($bootstrap-icons-map, "clipboard-data"); } +.bi-clipboard-minus::before { content: map-get($bootstrap-icons-map, "clipboard-minus"); } +.bi-clipboard-plus::before { content: map-get($bootstrap-icons-map, "clipboard-plus"); } +.bi-clipboard-x::before { content: map-get($bootstrap-icons-map, "clipboard-x"); } +.bi-clipboard::before { content: map-get($bootstrap-icons-map, "clipboard"); } +.bi-clock-fill::before { content: map-get($bootstrap-icons-map, "clock-fill"); } +.bi-clock-history::before { content: map-get($bootstrap-icons-map, "clock-history"); } +.bi-clock::before { content: map-get($bootstrap-icons-map, "clock"); } +.bi-cloud-arrow-down-fill::before { content: map-get($bootstrap-icons-map, "cloud-arrow-down-fill"); } +.bi-cloud-arrow-down::before { content: map-get($bootstrap-icons-map, "cloud-arrow-down"); } +.bi-cloud-arrow-up-fill::before { content: map-get($bootstrap-icons-map, "cloud-arrow-up-fill"); } +.bi-cloud-arrow-up::before { content: map-get($bootstrap-icons-map, "cloud-arrow-up"); } +.bi-cloud-check-fill::before { content: map-get($bootstrap-icons-map, "cloud-check-fill"); } +.bi-cloud-check::before { content: map-get($bootstrap-icons-map, "cloud-check"); } +.bi-cloud-download-fill::before { content: map-get($bootstrap-icons-map, "cloud-download-fill"); } +.bi-cloud-download::before { content: map-get($bootstrap-icons-map, "cloud-download"); } +.bi-cloud-drizzle-fill::before { content: map-get($bootstrap-icons-map, "cloud-drizzle-fill"); } +.bi-cloud-drizzle::before { content: map-get($bootstrap-icons-map, "cloud-drizzle"); } +.bi-cloud-fill::before { content: map-get($bootstrap-icons-map, "cloud-fill"); } +.bi-cloud-fog-fill::before { content: map-get($bootstrap-icons-map, "cloud-fog-fill"); } +.bi-cloud-fog::before { content: map-get($bootstrap-icons-map, "cloud-fog"); } +.bi-cloud-fog2-fill::before { content: map-get($bootstrap-icons-map, "cloud-fog2-fill"); } +.bi-cloud-fog2::before { content: map-get($bootstrap-icons-map, "cloud-fog2"); } +.bi-cloud-hail-fill::before { content: map-get($bootstrap-icons-map, "cloud-hail-fill"); } +.bi-cloud-hail::before { content: map-get($bootstrap-icons-map, "cloud-hail"); } +.bi-cloud-haze-1::before { content: map-get($bootstrap-icons-map, "cloud-haze-1"); } +.bi-cloud-haze-fill::before { content: map-get($bootstrap-icons-map, "cloud-haze-fill"); } +.bi-cloud-haze::before { content: map-get($bootstrap-icons-map, "cloud-haze"); } +.bi-cloud-haze2-fill::before { content: map-get($bootstrap-icons-map, "cloud-haze2-fill"); } +.bi-cloud-lightning-fill::before { content: map-get($bootstrap-icons-map, "cloud-lightning-fill"); } +.bi-cloud-lightning-rain-fill::before { content: map-get($bootstrap-icons-map, "cloud-lightning-rain-fill"); } +.bi-cloud-lightning-rain::before { content: map-get($bootstrap-icons-map, "cloud-lightning-rain"); } +.bi-cloud-lightning::before { content: map-get($bootstrap-icons-map, "cloud-lightning"); } +.bi-cloud-minus-fill::before { content: map-get($bootstrap-icons-map, "cloud-minus-fill"); } +.bi-cloud-minus::before { content: map-get($bootstrap-icons-map, "cloud-minus"); } +.bi-cloud-moon-fill::before { content: map-get($bootstrap-icons-map, "cloud-moon-fill"); } +.bi-cloud-moon::before { content: map-get($bootstrap-icons-map, "cloud-moon"); } +.bi-cloud-plus-fill::before { content: map-get($bootstrap-icons-map, "cloud-plus-fill"); } +.bi-cloud-plus::before { content: map-get($bootstrap-icons-map, "cloud-plus"); } +.bi-cloud-rain-fill::before { content: map-get($bootstrap-icons-map, "cloud-rain-fill"); } +.bi-cloud-rain-heavy-fill::before { content: map-get($bootstrap-icons-map, "cloud-rain-heavy-fill"); } +.bi-cloud-rain-heavy::before { content: map-get($bootstrap-icons-map, "cloud-rain-heavy"); } +.bi-cloud-rain::before { content: map-get($bootstrap-icons-map, "cloud-rain"); } +.bi-cloud-slash-fill::before { content: map-get($bootstrap-icons-map, "cloud-slash-fill"); } +.bi-cloud-slash::before { content: map-get($bootstrap-icons-map, "cloud-slash"); } +.bi-cloud-sleet-fill::before { content: map-get($bootstrap-icons-map, "cloud-sleet-fill"); } +.bi-cloud-sleet::before { content: map-get($bootstrap-icons-map, "cloud-sleet"); } +.bi-cloud-snow-fill::before { content: map-get($bootstrap-icons-map, "cloud-snow-fill"); } +.bi-cloud-snow::before { content: map-get($bootstrap-icons-map, "cloud-snow"); } +.bi-cloud-sun-fill::before { content: map-get($bootstrap-icons-map, "cloud-sun-fill"); } +.bi-cloud-sun::before { content: map-get($bootstrap-icons-map, "cloud-sun"); } +.bi-cloud-upload-fill::before { content: map-get($bootstrap-icons-map, "cloud-upload-fill"); } +.bi-cloud-upload::before { content: map-get($bootstrap-icons-map, "cloud-upload"); } +.bi-cloud::before { content: map-get($bootstrap-icons-map, "cloud"); } +.bi-clouds-fill::before { content: map-get($bootstrap-icons-map, "clouds-fill"); } +.bi-clouds::before { content: map-get($bootstrap-icons-map, "clouds"); } +.bi-cloudy-fill::before { content: map-get($bootstrap-icons-map, "cloudy-fill"); } +.bi-cloudy::before { content: map-get($bootstrap-icons-map, "cloudy"); } +.bi-code-slash::before { content: map-get($bootstrap-icons-map, "code-slash"); } +.bi-code-square::before { content: map-get($bootstrap-icons-map, "code-square"); } +.bi-code::before { content: map-get($bootstrap-icons-map, "code"); } +.bi-collection-fill::before { content: map-get($bootstrap-icons-map, "collection-fill"); } +.bi-collection-play-fill::before { content: map-get($bootstrap-icons-map, "collection-play-fill"); } +.bi-collection-play::before { content: map-get($bootstrap-icons-map, "collection-play"); } +.bi-collection::before { content: map-get($bootstrap-icons-map, "collection"); } +.bi-columns-gap::before { content: map-get($bootstrap-icons-map, "columns-gap"); } +.bi-columns::before { content: map-get($bootstrap-icons-map, "columns"); } +.bi-command::before { content: map-get($bootstrap-icons-map, "command"); } +.bi-compass-fill::before { content: map-get($bootstrap-icons-map, "compass-fill"); } +.bi-compass::before { content: map-get($bootstrap-icons-map, "compass"); } +.bi-cone-striped::before { content: map-get($bootstrap-icons-map, "cone-striped"); } +.bi-cone::before { content: map-get($bootstrap-icons-map, "cone"); } +.bi-controller::before { content: map-get($bootstrap-icons-map, "controller"); } +.bi-cpu-fill::before { content: map-get($bootstrap-icons-map, "cpu-fill"); } +.bi-cpu::before { content: map-get($bootstrap-icons-map, "cpu"); } +.bi-credit-card-2-back-fill::before { content: map-get($bootstrap-icons-map, "credit-card-2-back-fill"); } +.bi-credit-card-2-back::before { content: map-get($bootstrap-icons-map, "credit-card-2-back"); } +.bi-credit-card-2-front-fill::before { content: map-get($bootstrap-icons-map, "credit-card-2-front-fill"); } +.bi-credit-card-2-front::before { content: map-get($bootstrap-icons-map, "credit-card-2-front"); } +.bi-credit-card-fill::before { content: map-get($bootstrap-icons-map, "credit-card-fill"); } +.bi-credit-card::before { content: map-get($bootstrap-icons-map, "credit-card"); } +.bi-crop::before { content: map-get($bootstrap-icons-map, "crop"); } +.bi-cup-fill::before { content: map-get($bootstrap-icons-map, "cup-fill"); } +.bi-cup-straw::before { content: map-get($bootstrap-icons-map, "cup-straw"); } +.bi-cup::before { content: map-get($bootstrap-icons-map, "cup"); } +.bi-cursor-fill::before { content: map-get($bootstrap-icons-map, "cursor-fill"); } +.bi-cursor-text::before { content: map-get($bootstrap-icons-map, "cursor-text"); } +.bi-cursor::before { content: map-get($bootstrap-icons-map, "cursor"); } +.bi-dash-circle-dotted::before { content: map-get($bootstrap-icons-map, "dash-circle-dotted"); } +.bi-dash-circle-fill::before { content: map-get($bootstrap-icons-map, "dash-circle-fill"); } +.bi-dash-circle::before { content: map-get($bootstrap-icons-map, "dash-circle"); } +.bi-dash-square-dotted::before { content: map-get($bootstrap-icons-map, "dash-square-dotted"); } +.bi-dash-square-fill::before { content: map-get($bootstrap-icons-map, "dash-square-fill"); } +.bi-dash-square::before { content: map-get($bootstrap-icons-map, "dash-square"); } +.bi-dash::before { content: map-get($bootstrap-icons-map, "dash"); } +.bi-diagram-2-fill::before { content: map-get($bootstrap-icons-map, "diagram-2-fill"); } +.bi-diagram-2::before { content: map-get($bootstrap-icons-map, "diagram-2"); } +.bi-diagram-3-fill::before { content: map-get($bootstrap-icons-map, "diagram-3-fill"); } +.bi-diagram-3::before { content: map-get($bootstrap-icons-map, "diagram-3"); } +.bi-diamond-fill::before { content: map-get($bootstrap-icons-map, "diamond-fill"); } +.bi-diamond-half::before { content: map-get($bootstrap-icons-map, "diamond-half"); } +.bi-diamond::before { content: map-get($bootstrap-icons-map, "diamond"); } +.bi-dice-1-fill::before { content: map-get($bootstrap-icons-map, "dice-1-fill"); } +.bi-dice-1::before { content: map-get($bootstrap-icons-map, "dice-1"); } +.bi-dice-2-fill::before { content: map-get($bootstrap-icons-map, "dice-2-fill"); } +.bi-dice-2::before { content: map-get($bootstrap-icons-map, "dice-2"); } +.bi-dice-3-fill::before { content: map-get($bootstrap-icons-map, "dice-3-fill"); } +.bi-dice-3::before { content: map-get($bootstrap-icons-map, "dice-3"); } +.bi-dice-4-fill::before { content: map-get($bootstrap-icons-map, "dice-4-fill"); } +.bi-dice-4::before { content: map-get($bootstrap-icons-map, "dice-4"); } +.bi-dice-5-fill::before { content: map-get($bootstrap-icons-map, "dice-5-fill"); } +.bi-dice-5::before { content: map-get($bootstrap-icons-map, "dice-5"); } +.bi-dice-6-fill::before { content: map-get($bootstrap-icons-map, "dice-6-fill"); } +.bi-dice-6::before { content: map-get($bootstrap-icons-map, "dice-6"); } +.bi-disc-fill::before { content: map-get($bootstrap-icons-map, "disc-fill"); } +.bi-disc::before { content: map-get($bootstrap-icons-map, "disc"); } +.bi-discord::before { content: map-get($bootstrap-icons-map, "discord"); } +.bi-display-fill::before { content: map-get($bootstrap-icons-map, "display-fill"); } +.bi-display::before { content: map-get($bootstrap-icons-map, "display"); } +.bi-distribute-horizontal::before { content: map-get($bootstrap-icons-map, "distribute-horizontal"); } +.bi-distribute-vertical::before { content: map-get($bootstrap-icons-map, "distribute-vertical"); } +.bi-door-closed-fill::before { content: map-get($bootstrap-icons-map, "door-closed-fill"); } +.bi-door-closed::before { content: map-get($bootstrap-icons-map, "door-closed"); } +.bi-door-open-fill::before { content: map-get($bootstrap-icons-map, "door-open-fill"); } +.bi-door-open::before { content: map-get($bootstrap-icons-map, "door-open"); } +.bi-dot::before { content: map-get($bootstrap-icons-map, "dot"); } +.bi-download::before { content: map-get($bootstrap-icons-map, "download"); } +.bi-droplet-fill::before { content: map-get($bootstrap-icons-map, "droplet-fill"); } +.bi-droplet-half::before { content: map-get($bootstrap-icons-map, "droplet-half"); } +.bi-droplet::before { content: map-get($bootstrap-icons-map, "droplet"); } +.bi-earbuds::before { content: map-get($bootstrap-icons-map, "earbuds"); } +.bi-easel-fill::before { content: map-get($bootstrap-icons-map, "easel-fill"); } +.bi-easel::before { content: map-get($bootstrap-icons-map, "easel"); } +.bi-egg-fill::before { content: map-get($bootstrap-icons-map, "egg-fill"); } +.bi-egg-fried::before { content: map-get($bootstrap-icons-map, "egg-fried"); } +.bi-egg::before { content: map-get($bootstrap-icons-map, "egg"); } +.bi-eject-fill::before { content: map-get($bootstrap-icons-map, "eject-fill"); } +.bi-eject::before { content: map-get($bootstrap-icons-map, "eject"); } +.bi-emoji-angry-fill::before { content: map-get($bootstrap-icons-map, "emoji-angry-fill"); } +.bi-emoji-angry::before { content: map-get($bootstrap-icons-map, "emoji-angry"); } +.bi-emoji-dizzy-fill::before { content: map-get($bootstrap-icons-map, "emoji-dizzy-fill"); } +.bi-emoji-dizzy::before { content: map-get($bootstrap-icons-map, "emoji-dizzy"); } +.bi-emoji-expressionless-fill::before { content: map-get($bootstrap-icons-map, "emoji-expressionless-fill"); } +.bi-emoji-expressionless::before { content: map-get($bootstrap-icons-map, "emoji-expressionless"); } +.bi-emoji-frown-fill::before { content: map-get($bootstrap-icons-map, "emoji-frown-fill"); } +.bi-emoji-frown::before { content: map-get($bootstrap-icons-map, "emoji-frown"); } +.bi-emoji-heart-eyes-fill::before { content: map-get($bootstrap-icons-map, "emoji-heart-eyes-fill"); } +.bi-emoji-heart-eyes::before { content: map-get($bootstrap-icons-map, "emoji-heart-eyes"); } +.bi-emoji-laughing-fill::before { content: map-get($bootstrap-icons-map, "emoji-laughing-fill"); } +.bi-emoji-laughing::before { content: map-get($bootstrap-icons-map, "emoji-laughing"); } +.bi-emoji-neutral-fill::before { content: map-get($bootstrap-icons-map, "emoji-neutral-fill"); } +.bi-emoji-neutral::before { content: map-get($bootstrap-icons-map, "emoji-neutral"); } +.bi-emoji-smile-fill::before { content: map-get($bootstrap-icons-map, "emoji-smile-fill"); } +.bi-emoji-smile-upside-down-fill::before { content: map-get($bootstrap-icons-map, "emoji-smile-upside-down-fill"); } +.bi-emoji-smile-upside-down::before { content: map-get($bootstrap-icons-map, "emoji-smile-upside-down"); } +.bi-emoji-smile::before { content: map-get($bootstrap-icons-map, "emoji-smile"); } +.bi-emoji-sunglasses-fill::before { content: map-get($bootstrap-icons-map, "emoji-sunglasses-fill"); } +.bi-emoji-sunglasses::before { content: map-get($bootstrap-icons-map, "emoji-sunglasses"); } +.bi-emoji-wink-fill::before { content: map-get($bootstrap-icons-map, "emoji-wink-fill"); } +.bi-emoji-wink::before { content: map-get($bootstrap-icons-map, "emoji-wink"); } +.bi-envelope-fill::before { content: map-get($bootstrap-icons-map, "envelope-fill"); } +.bi-envelope-open-fill::before { content: map-get($bootstrap-icons-map, "envelope-open-fill"); } +.bi-envelope-open::before { content: map-get($bootstrap-icons-map, "envelope-open"); } +.bi-envelope::before { content: map-get($bootstrap-icons-map, "envelope"); } +.bi-eraser-fill::before { content: map-get($bootstrap-icons-map, "eraser-fill"); } +.bi-eraser::before { content: map-get($bootstrap-icons-map, "eraser"); } +.bi-exclamation-circle-fill::before { content: map-get($bootstrap-icons-map, "exclamation-circle-fill"); } +.bi-exclamation-circle::before { content: map-get($bootstrap-icons-map, "exclamation-circle"); } +.bi-exclamation-diamond-fill::before { content: map-get($bootstrap-icons-map, "exclamation-diamond-fill"); } +.bi-exclamation-diamond::before { content: map-get($bootstrap-icons-map, "exclamation-diamond"); } +.bi-exclamation-octagon-fill::before { content: map-get($bootstrap-icons-map, "exclamation-octagon-fill"); } +.bi-exclamation-octagon::before { content: map-get($bootstrap-icons-map, "exclamation-octagon"); } +.bi-exclamation-square-fill::before { content: map-get($bootstrap-icons-map, "exclamation-square-fill"); } +.bi-exclamation-square::before { content: map-get($bootstrap-icons-map, "exclamation-square"); } +.bi-exclamation-triangle-fill::before { content: map-get($bootstrap-icons-map, "exclamation-triangle-fill"); } +.bi-exclamation-triangle::before { content: map-get($bootstrap-icons-map, "exclamation-triangle"); } +.bi-exclamation::before { content: map-get($bootstrap-icons-map, "exclamation"); } +.bi-exclude::before { content: map-get($bootstrap-icons-map, "exclude"); } +.bi-eye-fill::before { content: map-get($bootstrap-icons-map, "eye-fill"); } +.bi-eye-slash-fill::before { content: map-get($bootstrap-icons-map, "eye-slash-fill"); } +.bi-eye-slash::before { content: map-get($bootstrap-icons-map, "eye-slash"); } +.bi-eye::before { content: map-get($bootstrap-icons-map, "eye"); } +.bi-eyedropper::before { content: map-get($bootstrap-icons-map, "eyedropper"); } +.bi-eyeglasses::before { content: map-get($bootstrap-icons-map, "eyeglasses"); } +.bi-facebook::before { content: map-get($bootstrap-icons-map, "facebook"); } +.bi-file-arrow-down-fill::before { content: map-get($bootstrap-icons-map, "file-arrow-down-fill"); } +.bi-file-arrow-down::before { content: map-get($bootstrap-icons-map, "file-arrow-down"); } +.bi-file-arrow-up-fill::before { content: map-get($bootstrap-icons-map, "file-arrow-up-fill"); } +.bi-file-arrow-up::before { content: map-get($bootstrap-icons-map, "file-arrow-up"); } +.bi-file-bar-graph-fill::before { content: map-get($bootstrap-icons-map, "file-bar-graph-fill"); } +.bi-file-bar-graph::before { content: map-get($bootstrap-icons-map, "file-bar-graph"); } +.bi-file-binary-fill::before { content: map-get($bootstrap-icons-map, "file-binary-fill"); } +.bi-file-binary::before { content: map-get($bootstrap-icons-map, "file-binary"); } +.bi-file-break-fill::before { content: map-get($bootstrap-icons-map, "file-break-fill"); } +.bi-file-break::before { content: map-get($bootstrap-icons-map, "file-break"); } +.bi-file-check-fill::before { content: map-get($bootstrap-icons-map, "file-check-fill"); } +.bi-file-check::before { content: map-get($bootstrap-icons-map, "file-check"); } +.bi-file-code-fill::before { content: map-get($bootstrap-icons-map, "file-code-fill"); } +.bi-file-code::before { content: map-get($bootstrap-icons-map, "file-code"); } +.bi-file-diff-fill::before { content: map-get($bootstrap-icons-map, "file-diff-fill"); } +.bi-file-diff::before { content: map-get($bootstrap-icons-map, "file-diff"); } +.bi-file-earmark-arrow-down-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-arrow-down-fill"); } +.bi-file-earmark-arrow-down::before { content: map-get($bootstrap-icons-map, "file-earmark-arrow-down"); } +.bi-file-earmark-arrow-up-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-arrow-up-fill"); } +.bi-file-earmark-arrow-up::before { content: map-get($bootstrap-icons-map, "file-earmark-arrow-up"); } +.bi-file-earmark-bar-graph-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-bar-graph-fill"); } +.bi-file-earmark-bar-graph::before { content: map-get($bootstrap-icons-map, "file-earmark-bar-graph"); } +.bi-file-earmark-binary-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-binary-fill"); } +.bi-file-earmark-binary::before { content: map-get($bootstrap-icons-map, "file-earmark-binary"); } +.bi-file-earmark-break-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-break-fill"); } +.bi-file-earmark-break::before { content: map-get($bootstrap-icons-map, "file-earmark-break"); } +.bi-file-earmark-check-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-check-fill"); } +.bi-file-earmark-check::before { content: map-get($bootstrap-icons-map, "file-earmark-check"); } +.bi-file-earmark-code-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-code-fill"); } +.bi-file-earmark-code::before { content: map-get($bootstrap-icons-map, "file-earmark-code"); } +.bi-file-earmark-diff-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-diff-fill"); } +.bi-file-earmark-diff::before { content: map-get($bootstrap-icons-map, "file-earmark-diff"); } +.bi-file-earmark-easel-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-easel-fill"); } +.bi-file-earmark-easel::before { content: map-get($bootstrap-icons-map, "file-earmark-easel"); } +.bi-file-earmark-excel-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-excel-fill"); } +.bi-file-earmark-excel::before { content: map-get($bootstrap-icons-map, "file-earmark-excel"); } +.bi-file-earmark-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-fill"); } +.bi-file-earmark-font-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-font-fill"); } +.bi-file-earmark-font::before { content: map-get($bootstrap-icons-map, "file-earmark-font"); } +.bi-file-earmark-image-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-image-fill"); } +.bi-file-earmark-image::before { content: map-get($bootstrap-icons-map, "file-earmark-image"); } +.bi-file-earmark-lock-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-lock-fill"); } +.bi-file-earmark-lock::before { content: map-get($bootstrap-icons-map, "file-earmark-lock"); } +.bi-file-earmark-lock2-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-lock2-fill"); } +.bi-file-earmark-lock2::before { content: map-get($bootstrap-icons-map, "file-earmark-lock2"); } +.bi-file-earmark-medical-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-medical-fill"); } +.bi-file-earmark-medical::before { content: map-get($bootstrap-icons-map, "file-earmark-medical"); } +.bi-file-earmark-minus-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-minus-fill"); } +.bi-file-earmark-minus::before { content: map-get($bootstrap-icons-map, "file-earmark-minus"); } +.bi-file-earmark-music-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-music-fill"); } +.bi-file-earmark-music::before { content: map-get($bootstrap-icons-map, "file-earmark-music"); } +.bi-file-earmark-person-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-person-fill"); } +.bi-file-earmark-person::before { content: map-get($bootstrap-icons-map, "file-earmark-person"); } +.bi-file-earmark-play-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-play-fill"); } +.bi-file-earmark-play::before { content: map-get($bootstrap-icons-map, "file-earmark-play"); } +.bi-file-earmark-plus-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-plus-fill"); } +.bi-file-earmark-plus::before { content: map-get($bootstrap-icons-map, "file-earmark-plus"); } +.bi-file-earmark-post-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-post-fill"); } +.bi-file-earmark-post::before { content: map-get($bootstrap-icons-map, "file-earmark-post"); } +.bi-file-earmark-ppt-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-ppt-fill"); } +.bi-file-earmark-ppt::before { content: map-get($bootstrap-icons-map, "file-earmark-ppt"); } +.bi-file-earmark-richtext-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-richtext-fill"); } +.bi-file-earmark-richtext::before { content: map-get($bootstrap-icons-map, "file-earmark-richtext"); } +.bi-file-earmark-ruled-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-ruled-fill"); } +.bi-file-earmark-ruled::before { content: map-get($bootstrap-icons-map, "file-earmark-ruled"); } +.bi-file-earmark-slides-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-slides-fill"); } +.bi-file-earmark-slides::before { content: map-get($bootstrap-icons-map, "file-earmark-slides"); } +.bi-file-earmark-spreadsheet-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-spreadsheet-fill"); } +.bi-file-earmark-spreadsheet::before { content: map-get($bootstrap-icons-map, "file-earmark-spreadsheet"); } +.bi-file-earmark-text-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-text-fill"); } +.bi-file-earmark-text::before { content: map-get($bootstrap-icons-map, "file-earmark-text"); } +.bi-file-earmark-word-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-word-fill"); } +.bi-file-earmark-word::before { content: map-get($bootstrap-icons-map, "file-earmark-word"); } +.bi-file-earmark-x-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-x-fill"); } +.bi-file-earmark-x::before { content: map-get($bootstrap-icons-map, "file-earmark-x"); } +.bi-file-earmark-zip-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-zip-fill"); } +.bi-file-earmark-zip::before { content: map-get($bootstrap-icons-map, "file-earmark-zip"); } +.bi-file-earmark::before { content: map-get($bootstrap-icons-map, "file-earmark"); } +.bi-file-easel-fill::before { content: map-get($bootstrap-icons-map, "file-easel-fill"); } +.bi-file-easel::before { content: map-get($bootstrap-icons-map, "file-easel"); } +.bi-file-excel-fill::before { content: map-get($bootstrap-icons-map, "file-excel-fill"); } +.bi-file-excel::before { content: map-get($bootstrap-icons-map, "file-excel"); } +.bi-file-fill::before { content: map-get($bootstrap-icons-map, "file-fill"); } +.bi-file-font-fill::before { content: map-get($bootstrap-icons-map, "file-font-fill"); } +.bi-file-font::before { content: map-get($bootstrap-icons-map, "file-font"); } +.bi-file-image-fill::before { content: map-get($bootstrap-icons-map, "file-image-fill"); } +.bi-file-image::before { content: map-get($bootstrap-icons-map, "file-image"); } +.bi-file-lock-fill::before { content: map-get($bootstrap-icons-map, "file-lock-fill"); } +.bi-file-lock::before { content: map-get($bootstrap-icons-map, "file-lock"); } +.bi-file-lock2-fill::before { content: map-get($bootstrap-icons-map, "file-lock2-fill"); } +.bi-file-lock2::before { content: map-get($bootstrap-icons-map, "file-lock2"); } +.bi-file-medical-fill::before { content: map-get($bootstrap-icons-map, "file-medical-fill"); } +.bi-file-medical::before { content: map-get($bootstrap-icons-map, "file-medical"); } +.bi-file-minus-fill::before { content: map-get($bootstrap-icons-map, "file-minus-fill"); } +.bi-file-minus::before { content: map-get($bootstrap-icons-map, "file-minus"); } +.bi-file-music-fill::before { content: map-get($bootstrap-icons-map, "file-music-fill"); } +.bi-file-music::before { content: map-get($bootstrap-icons-map, "file-music"); } +.bi-file-person-fill::before { content: map-get($bootstrap-icons-map, "file-person-fill"); } +.bi-file-person::before { content: map-get($bootstrap-icons-map, "file-person"); } +.bi-file-play-fill::before { content: map-get($bootstrap-icons-map, "file-play-fill"); } +.bi-file-play::before { content: map-get($bootstrap-icons-map, "file-play"); } +.bi-file-plus-fill::before { content: map-get($bootstrap-icons-map, "file-plus-fill"); } +.bi-file-plus::before { content: map-get($bootstrap-icons-map, "file-plus"); } +.bi-file-post-fill::before { content: map-get($bootstrap-icons-map, "file-post-fill"); } +.bi-file-post::before { content: map-get($bootstrap-icons-map, "file-post"); } +.bi-file-ppt-fill::before { content: map-get($bootstrap-icons-map, "file-ppt-fill"); } +.bi-file-ppt::before { content: map-get($bootstrap-icons-map, "file-ppt"); } +.bi-file-richtext-fill::before { content: map-get($bootstrap-icons-map, "file-richtext-fill"); } +.bi-file-richtext::before { content: map-get($bootstrap-icons-map, "file-richtext"); } +.bi-file-ruled-fill::before { content: map-get($bootstrap-icons-map, "file-ruled-fill"); } +.bi-file-ruled::before { content: map-get($bootstrap-icons-map, "file-ruled"); } +.bi-file-slides-fill::before { content: map-get($bootstrap-icons-map, "file-slides-fill"); } +.bi-file-slides::before { content: map-get($bootstrap-icons-map, "file-slides"); } +.bi-file-spreadsheet-fill::before { content: map-get($bootstrap-icons-map, "file-spreadsheet-fill"); } +.bi-file-spreadsheet::before { content: map-get($bootstrap-icons-map, "file-spreadsheet"); } +.bi-file-text-fill::before { content: map-get($bootstrap-icons-map, "file-text-fill"); } +.bi-file-text::before { content: map-get($bootstrap-icons-map, "file-text"); } +.bi-file-word-fill::before { content: map-get($bootstrap-icons-map, "file-word-fill"); } +.bi-file-word::before { content: map-get($bootstrap-icons-map, "file-word"); } +.bi-file-x-fill::before { content: map-get($bootstrap-icons-map, "file-x-fill"); } +.bi-file-x::before { content: map-get($bootstrap-icons-map, "file-x"); } +.bi-file-zip-fill::before { content: map-get($bootstrap-icons-map, "file-zip-fill"); } +.bi-file-zip::before { content: map-get($bootstrap-icons-map, "file-zip"); } +.bi-file::before { content: map-get($bootstrap-icons-map, "file"); } +.bi-files-alt::before { content: map-get($bootstrap-icons-map, "files-alt"); } +.bi-files::before { content: map-get($bootstrap-icons-map, "files"); } +.bi-film::before { content: map-get($bootstrap-icons-map, "film"); } +.bi-filter-circle-fill::before { content: map-get($bootstrap-icons-map, "filter-circle-fill"); } +.bi-filter-circle::before { content: map-get($bootstrap-icons-map, "filter-circle"); } +.bi-filter-left::before { content: map-get($bootstrap-icons-map, "filter-left"); } +.bi-filter-right::before { content: map-get($bootstrap-icons-map, "filter-right"); } +.bi-filter-square-fill::before { content: map-get($bootstrap-icons-map, "filter-square-fill"); } +.bi-filter-square::before { content: map-get($bootstrap-icons-map, "filter-square"); } +.bi-filter::before { content: map-get($bootstrap-icons-map, "filter"); } +.bi-flag-fill::before { content: map-get($bootstrap-icons-map, "flag-fill"); } +.bi-flag::before { content: map-get($bootstrap-icons-map, "flag"); } +.bi-flower1::before { content: map-get($bootstrap-icons-map, "flower1"); } +.bi-flower2::before { content: map-get($bootstrap-icons-map, "flower2"); } +.bi-flower3::before { content: map-get($bootstrap-icons-map, "flower3"); } +.bi-folder-check::before { content: map-get($bootstrap-icons-map, "folder-check"); } +.bi-folder-fill::before { content: map-get($bootstrap-icons-map, "folder-fill"); } +.bi-folder-minus::before { content: map-get($bootstrap-icons-map, "folder-minus"); } +.bi-folder-plus::before { content: map-get($bootstrap-icons-map, "folder-plus"); } +.bi-folder-symlink-fill::before { content: map-get($bootstrap-icons-map, "folder-symlink-fill"); } +.bi-folder-symlink::before { content: map-get($bootstrap-icons-map, "folder-symlink"); } +.bi-folder-x::before { content: map-get($bootstrap-icons-map, "folder-x"); } +.bi-folder::before { content: map-get($bootstrap-icons-map, "folder"); } +.bi-folder2-open::before { content: map-get($bootstrap-icons-map, "folder2-open"); } +.bi-folder2::before { content: map-get($bootstrap-icons-map, "folder2"); } +.bi-fonts::before { content: map-get($bootstrap-icons-map, "fonts"); } +.bi-forward-fill::before { content: map-get($bootstrap-icons-map, "forward-fill"); } +.bi-forward::before { content: map-get($bootstrap-icons-map, "forward"); } +.bi-front::before { content: map-get($bootstrap-icons-map, "front"); } +.bi-fullscreen-exit::before { content: map-get($bootstrap-icons-map, "fullscreen-exit"); } +.bi-fullscreen::before { content: map-get($bootstrap-icons-map, "fullscreen"); } +.bi-funnel-fill::before { content: map-get($bootstrap-icons-map, "funnel-fill"); } +.bi-funnel::before { content: map-get($bootstrap-icons-map, "funnel"); } +.bi-gear-fill::before { content: map-get($bootstrap-icons-map, "gear-fill"); } +.bi-gear-wide-connected::before { content: map-get($bootstrap-icons-map, "gear-wide-connected"); } +.bi-gear-wide::before { content: map-get($bootstrap-icons-map, "gear-wide"); } +.bi-gear::before { content: map-get($bootstrap-icons-map, "gear"); } +.bi-gem::before { content: map-get($bootstrap-icons-map, "gem"); } +.bi-geo-alt-fill::before { content: map-get($bootstrap-icons-map, "geo-alt-fill"); } +.bi-geo-alt::before { content: map-get($bootstrap-icons-map, "geo-alt"); } +.bi-geo-fill::before { content: map-get($bootstrap-icons-map, "geo-fill"); } +.bi-geo::before { content: map-get($bootstrap-icons-map, "geo"); } +.bi-gift-fill::before { content: map-get($bootstrap-icons-map, "gift-fill"); } +.bi-gift::before { content: map-get($bootstrap-icons-map, "gift"); } +.bi-github::before { content: map-get($bootstrap-icons-map, "github"); } +.bi-globe::before { content: map-get($bootstrap-icons-map, "globe"); } +.bi-globe2::before { content: map-get($bootstrap-icons-map, "globe2"); } +.bi-google::before { content: map-get($bootstrap-icons-map, "google"); } +.bi-graph-down::before { content: map-get($bootstrap-icons-map, "graph-down"); } +.bi-graph-up::before { content: map-get($bootstrap-icons-map, "graph-up"); } +.bi-grid-1x2-fill::before { content: map-get($bootstrap-icons-map, "grid-1x2-fill"); } +.bi-grid-1x2::before { content: map-get($bootstrap-icons-map, "grid-1x2"); } +.bi-grid-3x2-gap-fill::before { content: map-get($bootstrap-icons-map, "grid-3x2-gap-fill"); } +.bi-grid-3x2-gap::before { content: map-get($bootstrap-icons-map, "grid-3x2-gap"); } +.bi-grid-3x2::before { content: map-get($bootstrap-icons-map, "grid-3x2"); } +.bi-grid-3x3-gap-fill::before { content: map-get($bootstrap-icons-map, "grid-3x3-gap-fill"); } +.bi-grid-3x3-gap::before { content: map-get($bootstrap-icons-map, "grid-3x3-gap"); } +.bi-grid-3x3::before { content: map-get($bootstrap-icons-map, "grid-3x3"); } +.bi-grid-fill::before { content: map-get($bootstrap-icons-map, "grid-fill"); } +.bi-grid::before { content: map-get($bootstrap-icons-map, "grid"); } +.bi-grip-horizontal::before { content: map-get($bootstrap-icons-map, "grip-horizontal"); } +.bi-grip-vertical::before { content: map-get($bootstrap-icons-map, "grip-vertical"); } +.bi-hammer::before { content: map-get($bootstrap-icons-map, "hammer"); } +.bi-hand-index-fill::before { content: map-get($bootstrap-icons-map, "hand-index-fill"); } +.bi-hand-index-thumb-fill::before { content: map-get($bootstrap-icons-map, "hand-index-thumb-fill"); } +.bi-hand-index-thumb::before { content: map-get($bootstrap-icons-map, "hand-index-thumb"); } +.bi-hand-index::before { content: map-get($bootstrap-icons-map, "hand-index"); } +.bi-hand-thumbs-down-fill::before { content: map-get($bootstrap-icons-map, "hand-thumbs-down-fill"); } +.bi-hand-thumbs-down::before { content: map-get($bootstrap-icons-map, "hand-thumbs-down"); } +.bi-hand-thumbs-up-fill::before { content: map-get($bootstrap-icons-map, "hand-thumbs-up-fill"); } +.bi-hand-thumbs-up::before { content: map-get($bootstrap-icons-map, "hand-thumbs-up"); } +.bi-handbag-fill::before { content: map-get($bootstrap-icons-map, "handbag-fill"); } +.bi-handbag::before { content: map-get($bootstrap-icons-map, "handbag"); } +.bi-hash::before { content: map-get($bootstrap-icons-map, "hash"); } +.bi-hdd-fill::before { content: map-get($bootstrap-icons-map, "hdd-fill"); } +.bi-hdd-network-fill::before { content: map-get($bootstrap-icons-map, "hdd-network-fill"); } +.bi-hdd-network::before { content: map-get($bootstrap-icons-map, "hdd-network"); } +.bi-hdd-rack-fill::before { content: map-get($bootstrap-icons-map, "hdd-rack-fill"); } +.bi-hdd-rack::before { content: map-get($bootstrap-icons-map, "hdd-rack"); } +.bi-hdd-stack-fill::before { content: map-get($bootstrap-icons-map, "hdd-stack-fill"); } +.bi-hdd-stack::before { content: map-get($bootstrap-icons-map, "hdd-stack"); } +.bi-hdd::before { content: map-get($bootstrap-icons-map, "hdd"); } +.bi-headphones::before { content: map-get($bootstrap-icons-map, "headphones"); } +.bi-headset::before { content: map-get($bootstrap-icons-map, "headset"); } +.bi-heart-fill::before { content: map-get($bootstrap-icons-map, "heart-fill"); } +.bi-heart-half::before { content: map-get($bootstrap-icons-map, "heart-half"); } +.bi-heart::before { content: map-get($bootstrap-icons-map, "heart"); } +.bi-heptagon-fill::before { content: map-get($bootstrap-icons-map, "heptagon-fill"); } +.bi-heptagon-half::before { content: map-get($bootstrap-icons-map, "heptagon-half"); } +.bi-heptagon::before { content: map-get($bootstrap-icons-map, "heptagon"); } +.bi-hexagon-fill::before { content: map-get($bootstrap-icons-map, "hexagon-fill"); } +.bi-hexagon-half::before { content: map-get($bootstrap-icons-map, "hexagon-half"); } +.bi-hexagon::before { content: map-get($bootstrap-icons-map, "hexagon"); } +.bi-hourglass-bottom::before { content: map-get($bootstrap-icons-map, "hourglass-bottom"); } +.bi-hourglass-split::before { content: map-get($bootstrap-icons-map, "hourglass-split"); } +.bi-hourglass-top::before { content: map-get($bootstrap-icons-map, "hourglass-top"); } +.bi-hourglass::before { content: map-get($bootstrap-icons-map, "hourglass"); } +.bi-house-door-fill::before { content: map-get($bootstrap-icons-map, "house-door-fill"); } +.bi-house-door::before { content: map-get($bootstrap-icons-map, "house-door"); } +.bi-house-fill::before { content: map-get($bootstrap-icons-map, "house-fill"); } +.bi-house::before { content: map-get($bootstrap-icons-map, "house"); } +.bi-hr::before { content: map-get($bootstrap-icons-map, "hr"); } +.bi-hurricane::before { content: map-get($bootstrap-icons-map, "hurricane"); } +.bi-image-alt::before { content: map-get($bootstrap-icons-map, "image-alt"); } +.bi-image-fill::before { content: map-get($bootstrap-icons-map, "image-fill"); } +.bi-image::before { content: map-get($bootstrap-icons-map, "image"); } +.bi-images::before { content: map-get($bootstrap-icons-map, "images"); } +.bi-inbox-fill::before { content: map-get($bootstrap-icons-map, "inbox-fill"); } +.bi-inbox::before { content: map-get($bootstrap-icons-map, "inbox"); } +.bi-inboxes-fill::before { content: map-get($bootstrap-icons-map, "inboxes-fill"); } +.bi-inboxes::before { content: map-get($bootstrap-icons-map, "inboxes"); } +.bi-info-circle-fill::before { content: map-get($bootstrap-icons-map, "info-circle-fill"); } +.bi-info-circle::before { content: map-get($bootstrap-icons-map, "info-circle"); } +.bi-info-square-fill::before { content: map-get($bootstrap-icons-map, "info-square-fill"); } +.bi-info-square::before { content: map-get($bootstrap-icons-map, "info-square"); } +.bi-info::before { content: map-get($bootstrap-icons-map, "info"); } +.bi-input-cursor-text::before { content: map-get($bootstrap-icons-map, "input-cursor-text"); } +.bi-input-cursor::before { content: map-get($bootstrap-icons-map, "input-cursor"); } +.bi-instagram::before { content: map-get($bootstrap-icons-map, "instagram"); } +.bi-intersect::before { content: map-get($bootstrap-icons-map, "intersect"); } +.bi-journal-album::before { content: map-get($bootstrap-icons-map, "journal-album"); } +.bi-journal-arrow-down::before { content: map-get($bootstrap-icons-map, "journal-arrow-down"); } +.bi-journal-arrow-up::before { content: map-get($bootstrap-icons-map, "journal-arrow-up"); } +.bi-journal-bookmark-fill::before { content: map-get($bootstrap-icons-map, "journal-bookmark-fill"); } +.bi-journal-bookmark::before { content: map-get($bootstrap-icons-map, "journal-bookmark"); } +.bi-journal-check::before { content: map-get($bootstrap-icons-map, "journal-check"); } +.bi-journal-code::before { content: map-get($bootstrap-icons-map, "journal-code"); } +.bi-journal-medical::before { content: map-get($bootstrap-icons-map, "journal-medical"); } +.bi-journal-minus::before { content: map-get($bootstrap-icons-map, "journal-minus"); } +.bi-journal-plus::before { content: map-get($bootstrap-icons-map, "journal-plus"); } +.bi-journal-richtext::before { content: map-get($bootstrap-icons-map, "journal-richtext"); } +.bi-journal-text::before { content: map-get($bootstrap-icons-map, "journal-text"); } +.bi-journal-x::before { content: map-get($bootstrap-icons-map, "journal-x"); } +.bi-journal::before { content: map-get($bootstrap-icons-map, "journal"); } +.bi-journals::before { content: map-get($bootstrap-icons-map, "journals"); } +.bi-joystick::before { content: map-get($bootstrap-icons-map, "joystick"); } +.bi-justify-left::before { content: map-get($bootstrap-icons-map, "justify-left"); } +.bi-justify-right::before { content: map-get($bootstrap-icons-map, "justify-right"); } +.bi-justify::before { content: map-get($bootstrap-icons-map, "justify"); } +.bi-kanban-fill::before { content: map-get($bootstrap-icons-map, "kanban-fill"); } +.bi-kanban::before { content: map-get($bootstrap-icons-map, "kanban"); } +.bi-key-fill::before { content: map-get($bootstrap-icons-map, "key-fill"); } +.bi-key::before { content: map-get($bootstrap-icons-map, "key"); } +.bi-keyboard-fill::before { content: map-get($bootstrap-icons-map, "keyboard-fill"); } +.bi-keyboard::before { content: map-get($bootstrap-icons-map, "keyboard"); } +.bi-ladder::before { content: map-get($bootstrap-icons-map, "ladder"); } +.bi-lamp-fill::before { content: map-get($bootstrap-icons-map, "lamp-fill"); } +.bi-lamp::before { content: map-get($bootstrap-icons-map, "lamp"); } +.bi-laptop-fill::before { content: map-get($bootstrap-icons-map, "laptop-fill"); } +.bi-laptop::before { content: map-get($bootstrap-icons-map, "laptop"); } +.bi-layer-backward::before { content: map-get($bootstrap-icons-map, "layer-backward"); } +.bi-layer-forward::before { content: map-get($bootstrap-icons-map, "layer-forward"); } +.bi-layers-fill::before { content: map-get($bootstrap-icons-map, "layers-fill"); } +.bi-layers-half::before { content: map-get($bootstrap-icons-map, "layers-half"); } +.bi-layers::before { content: map-get($bootstrap-icons-map, "layers"); } +.bi-layout-sidebar-inset-reverse::before { content: map-get($bootstrap-icons-map, "layout-sidebar-inset-reverse"); } +.bi-layout-sidebar-inset::before { content: map-get($bootstrap-icons-map, "layout-sidebar-inset"); } +.bi-layout-sidebar-reverse::before { content: map-get($bootstrap-icons-map, "layout-sidebar-reverse"); } +.bi-layout-sidebar::before { content: map-get($bootstrap-icons-map, "layout-sidebar"); } +.bi-layout-split::before { content: map-get($bootstrap-icons-map, "layout-split"); } +.bi-layout-text-sidebar-reverse::before { content: map-get($bootstrap-icons-map, "layout-text-sidebar-reverse"); } +.bi-layout-text-sidebar::before { content: map-get($bootstrap-icons-map, "layout-text-sidebar"); } +.bi-layout-text-window-reverse::before { content: map-get($bootstrap-icons-map, "layout-text-window-reverse"); } +.bi-layout-text-window::before { content: map-get($bootstrap-icons-map, "layout-text-window"); } +.bi-layout-three-columns::before { content: map-get($bootstrap-icons-map, "layout-three-columns"); } +.bi-layout-wtf::before { content: map-get($bootstrap-icons-map, "layout-wtf"); } +.bi-life-preserver::before { content: map-get($bootstrap-icons-map, "life-preserver"); } +.bi-lightbulb-fill::before { content: map-get($bootstrap-icons-map, "lightbulb-fill"); } +.bi-lightbulb-off-fill::before { content: map-get($bootstrap-icons-map, "lightbulb-off-fill"); } +.bi-lightbulb-off::before { content: map-get($bootstrap-icons-map, "lightbulb-off"); } +.bi-lightbulb::before { content: map-get($bootstrap-icons-map, "lightbulb"); } +.bi-lightning-charge-fill::before { content: map-get($bootstrap-icons-map, "lightning-charge-fill"); } +.bi-lightning-charge::before { content: map-get($bootstrap-icons-map, "lightning-charge"); } +.bi-lightning-fill::before { content: map-get($bootstrap-icons-map, "lightning-fill"); } +.bi-lightning::before { content: map-get($bootstrap-icons-map, "lightning"); } +.bi-link-45deg::before { content: map-get($bootstrap-icons-map, "link-45deg"); } +.bi-link::before { content: map-get($bootstrap-icons-map, "link"); } +.bi-linkedin::before { content: map-get($bootstrap-icons-map, "linkedin"); } +.bi-list-check::before { content: map-get($bootstrap-icons-map, "list-check"); } +.bi-list-nested::before { content: map-get($bootstrap-icons-map, "list-nested"); } +.bi-list-ol::before { content: map-get($bootstrap-icons-map, "list-ol"); } +.bi-list-stars::before { content: map-get($bootstrap-icons-map, "list-stars"); } +.bi-list-task::before { content: map-get($bootstrap-icons-map, "list-task"); } +.bi-list-ul::before { content: map-get($bootstrap-icons-map, "list-ul"); } +.bi-list::before { content: map-get($bootstrap-icons-map, "list"); } +.bi-lock-fill::before { content: map-get($bootstrap-icons-map, "lock-fill"); } +.bi-lock::before { content: map-get($bootstrap-icons-map, "lock"); } +.bi-mailbox::before { content: map-get($bootstrap-icons-map, "mailbox"); } +.bi-mailbox2::before { content: map-get($bootstrap-icons-map, "mailbox2"); } +.bi-map-fill::before { content: map-get($bootstrap-icons-map, "map-fill"); } +.bi-map::before { content: map-get($bootstrap-icons-map, "map"); } +.bi-markdown-fill::before { content: map-get($bootstrap-icons-map, "markdown-fill"); } +.bi-markdown::before { content: map-get($bootstrap-icons-map, "markdown"); } +.bi-mask::before { content: map-get($bootstrap-icons-map, "mask"); } +.bi-megaphone-fill::before { content: map-get($bootstrap-icons-map, "megaphone-fill"); } +.bi-megaphone::before { content: map-get($bootstrap-icons-map, "megaphone"); } +.bi-menu-app-fill::before { content: map-get($bootstrap-icons-map, "menu-app-fill"); } +.bi-menu-app::before { content: map-get($bootstrap-icons-map, "menu-app"); } +.bi-menu-button-fill::before { content: map-get($bootstrap-icons-map, "menu-button-fill"); } +.bi-menu-button-wide-fill::before { content: map-get($bootstrap-icons-map, "menu-button-wide-fill"); } +.bi-menu-button-wide::before { content: map-get($bootstrap-icons-map, "menu-button-wide"); } +.bi-menu-button::before { content: map-get($bootstrap-icons-map, "menu-button"); } +.bi-menu-down::before { content: map-get($bootstrap-icons-map, "menu-down"); } +.bi-menu-up::before { content: map-get($bootstrap-icons-map, "menu-up"); } +.bi-mic-fill::before { content: map-get($bootstrap-icons-map, "mic-fill"); } +.bi-mic-mute-fill::before { content: map-get($bootstrap-icons-map, "mic-mute-fill"); } +.bi-mic-mute::before { content: map-get($bootstrap-icons-map, "mic-mute"); } +.bi-mic::before { content: map-get($bootstrap-icons-map, "mic"); } +.bi-minecart-loaded::before { content: map-get($bootstrap-icons-map, "minecart-loaded"); } +.bi-minecart::before { content: map-get($bootstrap-icons-map, "minecart"); } +.bi-moisture::before { content: map-get($bootstrap-icons-map, "moisture"); } +.bi-moon-fill::before { content: map-get($bootstrap-icons-map, "moon-fill"); } +.bi-moon-stars-fill::before { content: map-get($bootstrap-icons-map, "moon-stars-fill"); } +.bi-moon-stars::before { content: map-get($bootstrap-icons-map, "moon-stars"); } +.bi-moon::before { content: map-get($bootstrap-icons-map, "moon"); } +.bi-mouse-fill::before { content: map-get($bootstrap-icons-map, "mouse-fill"); } +.bi-mouse::before { content: map-get($bootstrap-icons-map, "mouse"); } +.bi-mouse2-fill::before { content: map-get($bootstrap-icons-map, "mouse2-fill"); } +.bi-mouse2::before { content: map-get($bootstrap-icons-map, "mouse2"); } +.bi-mouse3-fill::before { content: map-get($bootstrap-icons-map, "mouse3-fill"); } +.bi-mouse3::before { content: map-get($bootstrap-icons-map, "mouse3"); } +.bi-music-note-beamed::before { content: map-get($bootstrap-icons-map, "music-note-beamed"); } +.bi-music-note-list::before { content: map-get($bootstrap-icons-map, "music-note-list"); } +.bi-music-note::before { content: map-get($bootstrap-icons-map, "music-note"); } +.bi-music-player-fill::before { content: map-get($bootstrap-icons-map, "music-player-fill"); } +.bi-music-player::before { content: map-get($bootstrap-icons-map, "music-player"); } +.bi-newspaper::before { content: map-get($bootstrap-icons-map, "newspaper"); } +.bi-node-minus-fill::before { content: map-get($bootstrap-icons-map, "node-minus-fill"); } +.bi-node-minus::before { content: map-get($bootstrap-icons-map, "node-minus"); } +.bi-node-plus-fill::before { content: map-get($bootstrap-icons-map, "node-plus-fill"); } +.bi-node-plus::before { content: map-get($bootstrap-icons-map, "node-plus"); } +.bi-nut-fill::before { content: map-get($bootstrap-icons-map, "nut-fill"); } +.bi-nut::before { content: map-get($bootstrap-icons-map, "nut"); } +.bi-octagon-fill::before { content: map-get($bootstrap-icons-map, "octagon-fill"); } +.bi-octagon-half::before { content: map-get($bootstrap-icons-map, "octagon-half"); } +.bi-octagon::before { content: map-get($bootstrap-icons-map, "octagon"); } +.bi-option::before { content: map-get($bootstrap-icons-map, "option"); } +.bi-outlet::before { content: map-get($bootstrap-icons-map, "outlet"); } +.bi-paint-bucket::before { content: map-get($bootstrap-icons-map, "paint-bucket"); } +.bi-palette-fill::before { content: map-get($bootstrap-icons-map, "palette-fill"); } +.bi-palette::before { content: map-get($bootstrap-icons-map, "palette"); } +.bi-palette2::before { content: map-get($bootstrap-icons-map, "palette2"); } +.bi-paperclip::before { content: map-get($bootstrap-icons-map, "paperclip"); } +.bi-paragraph::before { content: map-get($bootstrap-icons-map, "paragraph"); } +.bi-patch-check-fill::before { content: map-get($bootstrap-icons-map, "patch-check-fill"); } +.bi-patch-check::before { content: map-get($bootstrap-icons-map, "patch-check"); } +.bi-patch-exclamation-fill::before { content: map-get($bootstrap-icons-map, "patch-exclamation-fill"); } +.bi-patch-exclamation::before { content: map-get($bootstrap-icons-map, "patch-exclamation"); } +.bi-patch-minus-fill::before { content: map-get($bootstrap-icons-map, "patch-minus-fill"); } +.bi-patch-minus::before { content: map-get($bootstrap-icons-map, "patch-minus"); } +.bi-patch-plus-fill::before { content: map-get($bootstrap-icons-map, "patch-plus-fill"); } +.bi-patch-plus::before { content: map-get($bootstrap-icons-map, "patch-plus"); } +.bi-patch-question-fill::before { content: map-get($bootstrap-icons-map, "patch-question-fill"); } +.bi-patch-question::before { content: map-get($bootstrap-icons-map, "patch-question"); } +.bi-pause-btn-fill::before { content: map-get($bootstrap-icons-map, "pause-btn-fill"); } +.bi-pause-btn::before { content: map-get($bootstrap-icons-map, "pause-btn"); } +.bi-pause-circle-fill::before { content: map-get($bootstrap-icons-map, "pause-circle-fill"); } +.bi-pause-circle::before { content: map-get($bootstrap-icons-map, "pause-circle"); } +.bi-pause-fill::before { content: map-get($bootstrap-icons-map, "pause-fill"); } +.bi-pause::before { content: map-get($bootstrap-icons-map, "pause"); } +.bi-peace-fill::before { content: map-get($bootstrap-icons-map, "peace-fill"); } +.bi-peace::before { content: map-get($bootstrap-icons-map, "peace"); } +.bi-pen-fill::before { content: map-get($bootstrap-icons-map, "pen-fill"); } +.bi-pen::before { content: map-get($bootstrap-icons-map, "pen"); } +.bi-pencil-fill::before { content: map-get($bootstrap-icons-map, "pencil-fill"); } +.bi-pencil-square::before { content: map-get($bootstrap-icons-map, "pencil-square"); } +.bi-pencil::before { content: map-get($bootstrap-icons-map, "pencil"); } +.bi-pentagon-fill::before { content: map-get($bootstrap-icons-map, "pentagon-fill"); } +.bi-pentagon-half::before { content: map-get($bootstrap-icons-map, "pentagon-half"); } +.bi-pentagon::before { content: map-get($bootstrap-icons-map, "pentagon"); } +.bi-people-fill::before { content: map-get($bootstrap-icons-map, "people-fill"); } +.bi-people::before { content: map-get($bootstrap-icons-map, "people"); } +.bi-percent::before { content: map-get($bootstrap-icons-map, "percent"); } +.bi-person-badge-fill::before { content: map-get($bootstrap-icons-map, "person-badge-fill"); } +.bi-person-badge::before { content: map-get($bootstrap-icons-map, "person-badge"); } +.bi-person-bounding-box::before { content: map-get($bootstrap-icons-map, "person-bounding-box"); } +.bi-person-check-fill::before { content: map-get($bootstrap-icons-map, "person-check-fill"); } +.bi-person-check::before { content: map-get($bootstrap-icons-map, "person-check"); } +.bi-person-circle::before { content: map-get($bootstrap-icons-map, "person-circle"); } +.bi-person-dash-fill::before { content: map-get($bootstrap-icons-map, "person-dash-fill"); } +.bi-person-dash::before { content: map-get($bootstrap-icons-map, "person-dash"); } +.bi-person-fill::before { content: map-get($bootstrap-icons-map, "person-fill"); } +.bi-person-lines-fill::before { content: map-get($bootstrap-icons-map, "person-lines-fill"); } +.bi-person-plus-fill::before { content: map-get($bootstrap-icons-map, "person-plus-fill"); } +.bi-person-plus::before { content: map-get($bootstrap-icons-map, "person-plus"); } +.bi-person-square::before { content: map-get($bootstrap-icons-map, "person-square"); } +.bi-person-x-fill::before { content: map-get($bootstrap-icons-map, "person-x-fill"); } +.bi-person-x::before { content: map-get($bootstrap-icons-map, "person-x"); } +.bi-person::before { content: map-get($bootstrap-icons-map, "person"); } +.bi-phone-fill::before { content: map-get($bootstrap-icons-map, "phone-fill"); } +.bi-phone-landscape-fill::before { content: map-get($bootstrap-icons-map, "phone-landscape-fill"); } +.bi-phone-landscape::before { content: map-get($bootstrap-icons-map, "phone-landscape"); } +.bi-phone-vibrate-fill::before { content: map-get($bootstrap-icons-map, "phone-vibrate-fill"); } +.bi-phone-vibrate::before { content: map-get($bootstrap-icons-map, "phone-vibrate"); } +.bi-phone::before { content: map-get($bootstrap-icons-map, "phone"); } +.bi-pie-chart-fill::before { content: map-get($bootstrap-icons-map, "pie-chart-fill"); } +.bi-pie-chart::before { content: map-get($bootstrap-icons-map, "pie-chart"); } +.bi-pin-angle-fill::before { content: map-get($bootstrap-icons-map, "pin-angle-fill"); } +.bi-pin-angle::before { content: map-get($bootstrap-icons-map, "pin-angle"); } +.bi-pin-fill::before { content: map-get($bootstrap-icons-map, "pin-fill"); } +.bi-pin::before { content: map-get($bootstrap-icons-map, "pin"); } +.bi-pip-fill::before { content: map-get($bootstrap-icons-map, "pip-fill"); } +.bi-pip::before { content: map-get($bootstrap-icons-map, "pip"); } +.bi-play-btn-fill::before { content: map-get($bootstrap-icons-map, "play-btn-fill"); } +.bi-play-btn::before { content: map-get($bootstrap-icons-map, "play-btn"); } +.bi-play-circle-fill::before { content: map-get($bootstrap-icons-map, "play-circle-fill"); } +.bi-play-circle::before { content: map-get($bootstrap-icons-map, "play-circle"); } +.bi-play-fill::before { content: map-get($bootstrap-icons-map, "play-fill"); } +.bi-play::before { content: map-get($bootstrap-icons-map, "play"); } +.bi-plug-fill::before { content: map-get($bootstrap-icons-map, "plug-fill"); } +.bi-plug::before { content: map-get($bootstrap-icons-map, "plug"); } +.bi-plus-circle-dotted::before { content: map-get($bootstrap-icons-map, "plus-circle-dotted"); } +.bi-plus-circle-fill::before { content: map-get($bootstrap-icons-map, "plus-circle-fill"); } +.bi-plus-circle::before { content: map-get($bootstrap-icons-map, "plus-circle"); } +.bi-plus-square-dotted::before { content: map-get($bootstrap-icons-map, "plus-square-dotted"); } +.bi-plus-square-fill::before { content: map-get($bootstrap-icons-map, "plus-square-fill"); } +.bi-plus-square::before { content: map-get($bootstrap-icons-map, "plus-square"); } +.bi-plus::before { content: map-get($bootstrap-icons-map, "plus"); } +.bi-power::before { content: map-get($bootstrap-icons-map, "power"); } +.bi-printer-fill::before { content: map-get($bootstrap-icons-map, "printer-fill"); } +.bi-printer::before { content: map-get($bootstrap-icons-map, "printer"); } +.bi-puzzle-fill::before { content: map-get($bootstrap-icons-map, "puzzle-fill"); } +.bi-puzzle::before { content: map-get($bootstrap-icons-map, "puzzle"); } +.bi-question-circle-fill::before { content: map-get($bootstrap-icons-map, "question-circle-fill"); } +.bi-question-circle::before { content: map-get($bootstrap-icons-map, "question-circle"); } +.bi-question-diamond-fill::before { content: map-get($bootstrap-icons-map, "question-diamond-fill"); } +.bi-question-diamond::before { content: map-get($bootstrap-icons-map, "question-diamond"); } +.bi-question-octagon-fill::before { content: map-get($bootstrap-icons-map, "question-octagon-fill"); } +.bi-question-octagon::before { content: map-get($bootstrap-icons-map, "question-octagon"); } +.bi-question-square-fill::before { content: map-get($bootstrap-icons-map, "question-square-fill"); } +.bi-question-square::before { content: map-get($bootstrap-icons-map, "question-square"); } +.bi-question::before { content: map-get($bootstrap-icons-map, "question"); } +.bi-rainbow::before { content: map-get($bootstrap-icons-map, "rainbow"); } +.bi-receipt-cutoff::before { content: map-get($bootstrap-icons-map, "receipt-cutoff"); } +.bi-receipt::before { content: map-get($bootstrap-icons-map, "receipt"); } +.bi-reception-0::before { content: map-get($bootstrap-icons-map, "reception-0"); } +.bi-reception-1::before { content: map-get($bootstrap-icons-map, "reception-1"); } +.bi-reception-2::before { content: map-get($bootstrap-icons-map, "reception-2"); } +.bi-reception-3::before { content: map-get($bootstrap-icons-map, "reception-3"); } +.bi-reception-4::before { content: map-get($bootstrap-icons-map, "reception-4"); } +.bi-record-btn-fill::before { content: map-get($bootstrap-icons-map, "record-btn-fill"); } +.bi-record-btn::before { content: map-get($bootstrap-icons-map, "record-btn"); } +.bi-record-circle-fill::before { content: map-get($bootstrap-icons-map, "record-circle-fill"); } +.bi-record-circle::before { content: map-get($bootstrap-icons-map, "record-circle"); } +.bi-record-fill::before { content: map-get($bootstrap-icons-map, "record-fill"); } +.bi-record::before { content: map-get($bootstrap-icons-map, "record"); } +.bi-record2-fill::before { content: map-get($bootstrap-icons-map, "record2-fill"); } +.bi-record2::before { content: map-get($bootstrap-icons-map, "record2"); } +.bi-reply-all-fill::before { content: map-get($bootstrap-icons-map, "reply-all-fill"); } +.bi-reply-all::before { content: map-get($bootstrap-icons-map, "reply-all"); } +.bi-reply-fill::before { content: map-get($bootstrap-icons-map, "reply-fill"); } +.bi-reply::before { content: map-get($bootstrap-icons-map, "reply"); } +.bi-rss-fill::before { content: map-get($bootstrap-icons-map, "rss-fill"); } +.bi-rss::before { content: map-get($bootstrap-icons-map, "rss"); } +.bi-rulers::before { content: map-get($bootstrap-icons-map, "rulers"); } +.bi-save-fill::before { content: map-get($bootstrap-icons-map, "save-fill"); } +.bi-save::before { content: map-get($bootstrap-icons-map, "save"); } +.bi-save2-fill::before { content: map-get($bootstrap-icons-map, "save2-fill"); } +.bi-save2::before { content: map-get($bootstrap-icons-map, "save2"); } +.bi-scissors::before { content: map-get($bootstrap-icons-map, "scissors"); } +.bi-screwdriver::before { content: map-get($bootstrap-icons-map, "screwdriver"); } +.bi-search::before { content: map-get($bootstrap-icons-map, "search"); } +.bi-segmented-nav::before { content: map-get($bootstrap-icons-map, "segmented-nav"); } +.bi-server::before { content: map-get($bootstrap-icons-map, "server"); } +.bi-share-fill::before { content: map-get($bootstrap-icons-map, "share-fill"); } +.bi-share::before { content: map-get($bootstrap-icons-map, "share"); } +.bi-shield-check::before { content: map-get($bootstrap-icons-map, "shield-check"); } +.bi-shield-exclamation::before { content: map-get($bootstrap-icons-map, "shield-exclamation"); } +.bi-shield-fill-check::before { content: map-get($bootstrap-icons-map, "shield-fill-check"); } +.bi-shield-fill-exclamation::before { content: map-get($bootstrap-icons-map, "shield-fill-exclamation"); } +.bi-shield-fill-minus::before { content: map-get($bootstrap-icons-map, "shield-fill-minus"); } +.bi-shield-fill-plus::before { content: map-get($bootstrap-icons-map, "shield-fill-plus"); } +.bi-shield-fill-x::before { content: map-get($bootstrap-icons-map, "shield-fill-x"); } +.bi-shield-fill::before { content: map-get($bootstrap-icons-map, "shield-fill"); } +.bi-shield-lock-fill::before { content: map-get($bootstrap-icons-map, "shield-lock-fill"); } +.bi-shield-lock::before { content: map-get($bootstrap-icons-map, "shield-lock"); } +.bi-shield-minus::before { content: map-get($bootstrap-icons-map, "shield-minus"); } +.bi-shield-plus::before { content: map-get($bootstrap-icons-map, "shield-plus"); } +.bi-shield-shaded::before { content: map-get($bootstrap-icons-map, "shield-shaded"); } +.bi-shield-slash-fill::before { content: map-get($bootstrap-icons-map, "shield-slash-fill"); } +.bi-shield-slash::before { content: map-get($bootstrap-icons-map, "shield-slash"); } +.bi-shield-x::before { content: map-get($bootstrap-icons-map, "shield-x"); } +.bi-shield::before { content: map-get($bootstrap-icons-map, "shield"); } +.bi-shift-fill::before { content: map-get($bootstrap-icons-map, "shift-fill"); } +.bi-shift::before { content: map-get($bootstrap-icons-map, "shift"); } +.bi-shop-window::before { content: map-get($bootstrap-icons-map, "shop-window"); } +.bi-shop::before { content: map-get($bootstrap-icons-map, "shop"); } +.bi-shuffle::before { content: map-get($bootstrap-icons-map, "shuffle"); } +.bi-signpost-2-fill::before { content: map-get($bootstrap-icons-map, "signpost-2-fill"); } +.bi-signpost-2::before { content: map-get($bootstrap-icons-map, "signpost-2"); } +.bi-signpost-fill::before { content: map-get($bootstrap-icons-map, "signpost-fill"); } +.bi-signpost-split-fill::before { content: map-get($bootstrap-icons-map, "signpost-split-fill"); } +.bi-signpost-split::before { content: map-get($bootstrap-icons-map, "signpost-split"); } +.bi-signpost::before { content: map-get($bootstrap-icons-map, "signpost"); } +.bi-sim-fill::before { content: map-get($bootstrap-icons-map, "sim-fill"); } +.bi-sim::before { content: map-get($bootstrap-icons-map, "sim"); } +.bi-skip-backward-btn-fill::before { content: map-get($bootstrap-icons-map, "skip-backward-btn-fill"); } +.bi-skip-backward-btn::before { content: map-get($bootstrap-icons-map, "skip-backward-btn"); } +.bi-skip-backward-circle-fill::before { content: map-get($bootstrap-icons-map, "skip-backward-circle-fill"); } +.bi-skip-backward-circle::before { content: map-get($bootstrap-icons-map, "skip-backward-circle"); } +.bi-skip-backward-fill::before { content: map-get($bootstrap-icons-map, "skip-backward-fill"); } +.bi-skip-backward::before { content: map-get($bootstrap-icons-map, "skip-backward"); } +.bi-skip-end-btn-fill::before { content: map-get($bootstrap-icons-map, "skip-end-btn-fill"); } +.bi-skip-end-btn::before { content: map-get($bootstrap-icons-map, "skip-end-btn"); } +.bi-skip-end-circle-fill::before { content: map-get($bootstrap-icons-map, "skip-end-circle-fill"); } +.bi-skip-end-circle::before { content: map-get($bootstrap-icons-map, "skip-end-circle"); } +.bi-skip-end-fill::before { content: map-get($bootstrap-icons-map, "skip-end-fill"); } +.bi-skip-end::before { content: map-get($bootstrap-icons-map, "skip-end"); } +.bi-skip-forward-btn-fill::before { content: map-get($bootstrap-icons-map, "skip-forward-btn-fill"); } +.bi-skip-forward-btn::before { content: map-get($bootstrap-icons-map, "skip-forward-btn"); } +.bi-skip-forward-circle-fill::before { content: map-get($bootstrap-icons-map, "skip-forward-circle-fill"); } +.bi-skip-forward-circle::before { content: map-get($bootstrap-icons-map, "skip-forward-circle"); } +.bi-skip-forward-fill::before { content: map-get($bootstrap-icons-map, "skip-forward-fill"); } +.bi-skip-forward::before { content: map-get($bootstrap-icons-map, "skip-forward"); } +.bi-skip-start-btn-fill::before { content: map-get($bootstrap-icons-map, "skip-start-btn-fill"); } +.bi-skip-start-btn::before { content: map-get($bootstrap-icons-map, "skip-start-btn"); } +.bi-skip-start-circle-fill::before { content: map-get($bootstrap-icons-map, "skip-start-circle-fill"); } +.bi-skip-start-circle::before { content: map-get($bootstrap-icons-map, "skip-start-circle"); } +.bi-skip-start-fill::before { content: map-get($bootstrap-icons-map, "skip-start-fill"); } +.bi-skip-start::before { content: map-get($bootstrap-icons-map, "skip-start"); } +.bi-slack::before { content: map-get($bootstrap-icons-map, "slack"); } +.bi-slash-circle-fill::before { content: map-get($bootstrap-icons-map, "slash-circle-fill"); } +.bi-slash-circle::before { content: map-get($bootstrap-icons-map, "slash-circle"); } +.bi-slash-square-fill::before { content: map-get($bootstrap-icons-map, "slash-square-fill"); } +.bi-slash-square::before { content: map-get($bootstrap-icons-map, "slash-square"); } +.bi-slash::before { content: map-get($bootstrap-icons-map, "slash"); } +.bi-sliders::before { content: map-get($bootstrap-icons-map, "sliders"); } +.bi-smartwatch::before { content: map-get($bootstrap-icons-map, "smartwatch"); } +.bi-snow::before { content: map-get($bootstrap-icons-map, "snow"); } +.bi-snow2::before { content: map-get($bootstrap-icons-map, "snow2"); } +.bi-snow3::before { content: map-get($bootstrap-icons-map, "snow3"); } +.bi-sort-alpha-down-alt::before { content: map-get($bootstrap-icons-map, "sort-alpha-down-alt"); } +.bi-sort-alpha-down::before { content: map-get($bootstrap-icons-map, "sort-alpha-down"); } +.bi-sort-alpha-up-alt::before { content: map-get($bootstrap-icons-map, "sort-alpha-up-alt"); } +.bi-sort-alpha-up::before { content: map-get($bootstrap-icons-map, "sort-alpha-up"); } +.bi-sort-down-alt::before { content: map-get($bootstrap-icons-map, "sort-down-alt"); } +.bi-sort-down::before { content: map-get($bootstrap-icons-map, "sort-down"); } +.bi-sort-numeric-down-alt::before { content: map-get($bootstrap-icons-map, "sort-numeric-down-alt"); } +.bi-sort-numeric-down::before { content: map-get($bootstrap-icons-map, "sort-numeric-down"); } +.bi-sort-numeric-up-alt::before { content: map-get($bootstrap-icons-map, "sort-numeric-up-alt"); } +.bi-sort-numeric-up::before { content: map-get($bootstrap-icons-map, "sort-numeric-up"); } +.bi-sort-up-alt::before { content: map-get($bootstrap-icons-map, "sort-up-alt"); } +.bi-sort-up::before { content: map-get($bootstrap-icons-map, "sort-up"); } +.bi-soundwave::before { content: map-get($bootstrap-icons-map, "soundwave"); } +.bi-speaker-fill::before { content: map-get($bootstrap-icons-map, "speaker-fill"); } +.bi-speaker::before { content: map-get($bootstrap-icons-map, "speaker"); } +.bi-speedometer::before { content: map-get($bootstrap-icons-map, "speedometer"); } +.bi-speedometer2::before { content: map-get($bootstrap-icons-map, "speedometer2"); } +.bi-spellcheck::before { content: map-get($bootstrap-icons-map, "spellcheck"); } +.bi-square-fill::before { content: map-get($bootstrap-icons-map, "square-fill"); } +.bi-square-half::before { content: map-get($bootstrap-icons-map, "square-half"); } +.bi-square::before { content: map-get($bootstrap-icons-map, "square"); } +.bi-stack::before { content: map-get($bootstrap-icons-map, "stack"); } +.bi-star-fill::before { content: map-get($bootstrap-icons-map, "star-fill"); } +.bi-star-half::before { content: map-get($bootstrap-icons-map, "star-half"); } +.bi-star::before { content: map-get($bootstrap-icons-map, "star"); } +.bi-stars::before { content: map-get($bootstrap-icons-map, "stars"); } +.bi-stickies-fill::before { content: map-get($bootstrap-icons-map, "stickies-fill"); } +.bi-stickies::before { content: map-get($bootstrap-icons-map, "stickies"); } +.bi-sticky-fill::before { content: map-get($bootstrap-icons-map, "sticky-fill"); } +.bi-sticky::before { content: map-get($bootstrap-icons-map, "sticky"); } +.bi-stop-btn-fill::before { content: map-get($bootstrap-icons-map, "stop-btn-fill"); } +.bi-stop-btn::before { content: map-get($bootstrap-icons-map, "stop-btn"); } +.bi-stop-circle-fill::before { content: map-get($bootstrap-icons-map, "stop-circle-fill"); } +.bi-stop-circle::before { content: map-get($bootstrap-icons-map, "stop-circle"); } +.bi-stop-fill::before { content: map-get($bootstrap-icons-map, "stop-fill"); } +.bi-stop::before { content: map-get($bootstrap-icons-map, "stop"); } +.bi-stoplights-fill::before { content: map-get($bootstrap-icons-map, "stoplights-fill"); } +.bi-stoplights::before { content: map-get($bootstrap-icons-map, "stoplights"); } +.bi-stopwatch-fill::before { content: map-get($bootstrap-icons-map, "stopwatch-fill"); } +.bi-stopwatch::before { content: map-get($bootstrap-icons-map, "stopwatch"); } +.bi-subtract::before { content: map-get($bootstrap-icons-map, "subtract"); } +.bi-suit-club-fill::before { content: map-get($bootstrap-icons-map, "suit-club-fill"); } +.bi-suit-club::before { content: map-get($bootstrap-icons-map, "suit-club"); } +.bi-suit-diamond-fill::before { content: map-get($bootstrap-icons-map, "suit-diamond-fill"); } +.bi-suit-diamond::before { content: map-get($bootstrap-icons-map, "suit-diamond"); } +.bi-suit-heart-fill::before { content: map-get($bootstrap-icons-map, "suit-heart-fill"); } +.bi-suit-heart::before { content: map-get($bootstrap-icons-map, "suit-heart"); } +.bi-suit-spade-fill::before { content: map-get($bootstrap-icons-map, "suit-spade-fill"); } +.bi-suit-spade::before { content: map-get($bootstrap-icons-map, "suit-spade"); } +.bi-sun-fill::before { content: map-get($bootstrap-icons-map, "sun-fill"); } +.bi-sun::before { content: map-get($bootstrap-icons-map, "sun"); } +.bi-sunglasses::before { content: map-get($bootstrap-icons-map, "sunglasses"); } +.bi-sunrise-fill::before { content: map-get($bootstrap-icons-map, "sunrise-fill"); } +.bi-sunrise::before { content: map-get($bootstrap-icons-map, "sunrise"); } +.bi-sunset-fill::before { content: map-get($bootstrap-icons-map, "sunset-fill"); } +.bi-sunset::before { content: map-get($bootstrap-icons-map, "sunset"); } +.bi-symmetry-horizontal::before { content: map-get($bootstrap-icons-map, "symmetry-horizontal"); } +.bi-symmetry-vertical::before { content: map-get($bootstrap-icons-map, "symmetry-vertical"); } +.bi-table::before { content: map-get($bootstrap-icons-map, "table"); } +.bi-tablet-fill::before { content: map-get($bootstrap-icons-map, "tablet-fill"); } +.bi-tablet-landscape-fill::before { content: map-get($bootstrap-icons-map, "tablet-landscape-fill"); } +.bi-tablet-landscape::before { content: map-get($bootstrap-icons-map, "tablet-landscape"); } +.bi-tablet::before { content: map-get($bootstrap-icons-map, "tablet"); } +.bi-tag-fill::before { content: map-get($bootstrap-icons-map, "tag-fill"); } +.bi-tag::before { content: map-get($bootstrap-icons-map, "tag"); } +.bi-tags-fill::before { content: map-get($bootstrap-icons-map, "tags-fill"); } +.bi-tags::before { content: map-get($bootstrap-icons-map, "tags"); } +.bi-telegram::before { content: map-get($bootstrap-icons-map, "telegram"); } +.bi-telephone-fill::before { content: map-get($bootstrap-icons-map, "telephone-fill"); } +.bi-telephone-forward-fill::before { content: map-get($bootstrap-icons-map, "telephone-forward-fill"); } +.bi-telephone-forward::before { content: map-get($bootstrap-icons-map, "telephone-forward"); } +.bi-telephone-inbound-fill::before { content: map-get($bootstrap-icons-map, "telephone-inbound-fill"); } +.bi-telephone-inbound::before { content: map-get($bootstrap-icons-map, "telephone-inbound"); } +.bi-telephone-minus-fill::before { content: map-get($bootstrap-icons-map, "telephone-minus-fill"); } +.bi-telephone-minus::before { content: map-get($bootstrap-icons-map, "telephone-minus"); } +.bi-telephone-outbound-fill::before { content: map-get($bootstrap-icons-map, "telephone-outbound-fill"); } +.bi-telephone-outbound::before { content: map-get($bootstrap-icons-map, "telephone-outbound"); } +.bi-telephone-plus-fill::before { content: map-get($bootstrap-icons-map, "telephone-plus-fill"); } +.bi-telephone-plus::before { content: map-get($bootstrap-icons-map, "telephone-plus"); } +.bi-telephone-x-fill::before { content: map-get($bootstrap-icons-map, "telephone-x-fill"); } +.bi-telephone-x::before { content: map-get($bootstrap-icons-map, "telephone-x"); } +.bi-telephone::before { content: map-get($bootstrap-icons-map, "telephone"); } +.bi-terminal-fill::before { content: map-get($bootstrap-icons-map, "terminal-fill"); } +.bi-terminal::before { content: map-get($bootstrap-icons-map, "terminal"); } +.bi-text-center::before { content: map-get($bootstrap-icons-map, "text-center"); } +.bi-text-indent-left::before { content: map-get($bootstrap-icons-map, "text-indent-left"); } +.bi-text-indent-right::before { content: map-get($bootstrap-icons-map, "text-indent-right"); } +.bi-text-left::before { content: map-get($bootstrap-icons-map, "text-left"); } +.bi-text-paragraph::before { content: map-get($bootstrap-icons-map, "text-paragraph"); } +.bi-text-right::before { content: map-get($bootstrap-icons-map, "text-right"); } +.bi-textarea-resize::before { content: map-get($bootstrap-icons-map, "textarea-resize"); } +.bi-textarea-t::before { content: map-get($bootstrap-icons-map, "textarea-t"); } +.bi-textarea::before { content: map-get($bootstrap-icons-map, "textarea"); } +.bi-thermometer-half::before { content: map-get($bootstrap-icons-map, "thermometer-half"); } +.bi-thermometer-high::before { content: map-get($bootstrap-icons-map, "thermometer-high"); } +.bi-thermometer-low::before { content: map-get($bootstrap-icons-map, "thermometer-low"); } +.bi-thermometer-snow::before { content: map-get($bootstrap-icons-map, "thermometer-snow"); } +.bi-thermometer-sun::before { content: map-get($bootstrap-icons-map, "thermometer-sun"); } +.bi-thermometer::before { content: map-get($bootstrap-icons-map, "thermometer"); } +.bi-three-dots-vertical::before { content: map-get($bootstrap-icons-map, "three-dots-vertical"); } +.bi-three-dots::before { content: map-get($bootstrap-icons-map, "three-dots"); } +.bi-toggle-off::before { content: map-get($bootstrap-icons-map, "toggle-off"); } +.bi-toggle-on::before { content: map-get($bootstrap-icons-map, "toggle-on"); } +.bi-toggle2-off::before { content: map-get($bootstrap-icons-map, "toggle2-off"); } +.bi-toggle2-on::before { content: map-get($bootstrap-icons-map, "toggle2-on"); } +.bi-toggles::before { content: map-get($bootstrap-icons-map, "toggles"); } +.bi-toggles2::before { content: map-get($bootstrap-icons-map, "toggles2"); } +.bi-tools::before { content: map-get($bootstrap-icons-map, "tools"); } +.bi-tornado::before { content: map-get($bootstrap-icons-map, "tornado"); } +.bi-trash-fill::before { content: map-get($bootstrap-icons-map, "trash-fill"); } +.bi-trash::before { content: map-get($bootstrap-icons-map, "trash"); } +.bi-trash2-fill::before { content: map-get($bootstrap-icons-map, "trash2-fill"); } +.bi-trash2::before { content: map-get($bootstrap-icons-map, "trash2"); } +.bi-tree-fill::before { content: map-get($bootstrap-icons-map, "tree-fill"); } +.bi-tree::before { content: map-get($bootstrap-icons-map, "tree"); } +.bi-triangle-fill::before { content: map-get($bootstrap-icons-map, "triangle-fill"); } +.bi-triangle-half::before { content: map-get($bootstrap-icons-map, "triangle-half"); } +.bi-triangle::before { content: map-get($bootstrap-icons-map, "triangle"); } +.bi-trophy-fill::before { content: map-get($bootstrap-icons-map, "trophy-fill"); } +.bi-trophy::before { content: map-get($bootstrap-icons-map, "trophy"); } +.bi-tropical-storm::before { content: map-get($bootstrap-icons-map, "tropical-storm"); } +.bi-truck-flatbed::before { content: map-get($bootstrap-icons-map, "truck-flatbed"); } +.bi-truck::before { content: map-get($bootstrap-icons-map, "truck"); } +.bi-tsunami::before { content: map-get($bootstrap-icons-map, "tsunami"); } +.bi-tv-fill::before { content: map-get($bootstrap-icons-map, "tv-fill"); } +.bi-tv::before { content: map-get($bootstrap-icons-map, "tv"); } +.bi-twitch::before { content: map-get($bootstrap-icons-map, "twitch"); } +.bi-twitter::before { content: map-get($bootstrap-icons-map, "twitter"); } +.bi-type-bold::before { content: map-get($bootstrap-icons-map, "type-bold"); } +.bi-type-h1::before { content: map-get($bootstrap-icons-map, "type-h1"); } +.bi-type-h2::before { content: map-get($bootstrap-icons-map, "type-h2"); } +.bi-type-h3::before { content: map-get($bootstrap-icons-map, "type-h3"); } +.bi-type-italic::before { content: map-get($bootstrap-icons-map, "type-italic"); } +.bi-type-strikethrough::before { content: map-get($bootstrap-icons-map, "type-strikethrough"); } +.bi-type-underline::before { content: map-get($bootstrap-icons-map, "type-underline"); } +.bi-type::before { content: map-get($bootstrap-icons-map, "type"); } +.bi-ui-checks-grid::before { content: map-get($bootstrap-icons-map, "ui-checks-grid"); } +.bi-ui-checks::before { content: map-get($bootstrap-icons-map, "ui-checks"); } +.bi-ui-radios-grid::before { content: map-get($bootstrap-icons-map, "ui-radios-grid"); } +.bi-ui-radios::before { content: map-get($bootstrap-icons-map, "ui-radios"); } +.bi-umbrella-fill::before { content: map-get($bootstrap-icons-map, "umbrella-fill"); } +.bi-umbrella::before { content: map-get($bootstrap-icons-map, "umbrella"); } +.bi-union::before { content: map-get($bootstrap-icons-map, "union"); } +.bi-unlock-fill::before { content: map-get($bootstrap-icons-map, "unlock-fill"); } +.bi-unlock::before { content: map-get($bootstrap-icons-map, "unlock"); } +.bi-upc-scan::before { content: map-get($bootstrap-icons-map, "upc-scan"); } +.bi-upc::before { content: map-get($bootstrap-icons-map, "upc"); } +.bi-upload::before { content: map-get($bootstrap-icons-map, "upload"); } +.bi-vector-pen::before { content: map-get($bootstrap-icons-map, "vector-pen"); } +.bi-view-list::before { content: map-get($bootstrap-icons-map, "view-list"); } +.bi-view-stacked::before { content: map-get($bootstrap-icons-map, "view-stacked"); } +.bi-vinyl-fill::before { content: map-get($bootstrap-icons-map, "vinyl-fill"); } +.bi-vinyl::before { content: map-get($bootstrap-icons-map, "vinyl"); } +.bi-voicemail::before { content: map-get($bootstrap-icons-map, "voicemail"); } +.bi-volume-down-fill::before { content: map-get($bootstrap-icons-map, "volume-down-fill"); } +.bi-volume-down::before { content: map-get($bootstrap-icons-map, "volume-down"); } +.bi-volume-mute-fill::before { content: map-get($bootstrap-icons-map, "volume-mute-fill"); } +.bi-volume-mute::before { content: map-get($bootstrap-icons-map, "volume-mute"); } +.bi-volume-off-fill::before { content: map-get($bootstrap-icons-map, "volume-off-fill"); } +.bi-volume-off::before { content: map-get($bootstrap-icons-map, "volume-off"); } +.bi-volume-up-fill::before { content: map-get($bootstrap-icons-map, "volume-up-fill"); } +.bi-volume-up::before { content: map-get($bootstrap-icons-map, "volume-up"); } +.bi-vr::before { content: map-get($bootstrap-icons-map, "vr"); } +.bi-wallet-fill::before { content: map-get($bootstrap-icons-map, "wallet-fill"); } +.bi-wallet::before { content: map-get($bootstrap-icons-map, "wallet"); } +.bi-wallet2::before { content: map-get($bootstrap-icons-map, "wallet2"); } +.bi-watch::before { content: map-get($bootstrap-icons-map, "watch"); } +.bi-water::before { content: map-get($bootstrap-icons-map, "water"); } +.bi-whatsapp::before { content: map-get($bootstrap-icons-map, "whatsapp"); } +.bi-wifi-1::before { content: map-get($bootstrap-icons-map, "wifi-1"); } +.bi-wifi-2::before { content: map-get($bootstrap-icons-map, "wifi-2"); } +.bi-wifi-off::before { content: map-get($bootstrap-icons-map, "wifi-off"); } +.bi-wifi::before { content: map-get($bootstrap-icons-map, "wifi"); } +.bi-wind::before { content: map-get($bootstrap-icons-map, "wind"); } +.bi-window-dock::before { content: map-get($bootstrap-icons-map, "window-dock"); } +.bi-window-sidebar::before { content: map-get($bootstrap-icons-map, "window-sidebar"); } +.bi-window::before { content: map-get($bootstrap-icons-map, "window"); } +.bi-wrench::before { content: map-get($bootstrap-icons-map, "wrench"); } +.bi-x-circle-fill::before { content: map-get($bootstrap-icons-map, "x-circle-fill"); } +.bi-x-circle::before { content: map-get($bootstrap-icons-map, "x-circle"); } +.bi-x-diamond-fill::before { content: map-get($bootstrap-icons-map, "x-diamond-fill"); } +.bi-x-diamond::before { content: map-get($bootstrap-icons-map, "x-diamond"); } +.bi-x-octagon-fill::before { content: map-get($bootstrap-icons-map, "x-octagon-fill"); } +.bi-x-octagon::before { content: map-get($bootstrap-icons-map, "x-octagon"); } +.bi-x-square-fill::before { content: map-get($bootstrap-icons-map, "x-square-fill"); } +.bi-x-square::before { content: map-get($bootstrap-icons-map, "x-square"); } +.bi-x::before { content: map-get($bootstrap-icons-map, "x"); } +.bi-youtube::before { content: map-get($bootstrap-icons-map, "youtube"); } +.bi-zoom-in::before { content: map-get($bootstrap-icons-map, "zoom-in"); } +.bi-zoom-out::before { content: map-get($bootstrap-icons-map, "zoom-out"); } +.bi-bank::before { content: map-get($bootstrap-icons-map, "bank"); } +.bi-bank2::before { content: map-get($bootstrap-icons-map, "bank2"); } +.bi-bell-slash-fill::before { content: map-get($bootstrap-icons-map, "bell-slash-fill"); } +.bi-bell-slash::before { content: map-get($bootstrap-icons-map, "bell-slash"); } +.bi-cash-coin::before { content: map-get($bootstrap-icons-map, "cash-coin"); } +.bi-check-lg::before { content: map-get($bootstrap-icons-map, "check-lg"); } +.bi-coin::before { content: map-get($bootstrap-icons-map, "coin"); } +.bi-currency-bitcoin::before { content: map-get($bootstrap-icons-map, "currency-bitcoin"); } +.bi-currency-dollar::before { content: map-get($bootstrap-icons-map, "currency-dollar"); } +.bi-currency-euro::before { content: map-get($bootstrap-icons-map, "currency-euro"); } +.bi-currency-exchange::before { content: map-get($bootstrap-icons-map, "currency-exchange"); } +.bi-currency-pound::before { content: map-get($bootstrap-icons-map, "currency-pound"); } +.bi-currency-yen::before { content: map-get($bootstrap-icons-map, "currency-yen"); } +.bi-dash-lg::before { content: map-get($bootstrap-icons-map, "dash-lg"); } +.bi-exclamation-lg::before { content: map-get($bootstrap-icons-map, "exclamation-lg"); } +.bi-file-earmark-pdf-fill::before { content: map-get($bootstrap-icons-map, "file-earmark-pdf-fill"); } +.bi-file-earmark-pdf::before { content: map-get($bootstrap-icons-map, "file-earmark-pdf"); } +.bi-file-pdf-fill::before { content: map-get($bootstrap-icons-map, "file-pdf-fill"); } +.bi-file-pdf::before { content: map-get($bootstrap-icons-map, "file-pdf"); } +.bi-gender-ambiguous::before { content: map-get($bootstrap-icons-map, "gender-ambiguous"); } +.bi-gender-female::before { content: map-get($bootstrap-icons-map, "gender-female"); } +.bi-gender-male::before { content: map-get($bootstrap-icons-map, "gender-male"); } +.bi-gender-trans::before { content: map-get($bootstrap-icons-map, "gender-trans"); } +.bi-headset-vr::before { content: map-get($bootstrap-icons-map, "headset-vr"); } +.bi-info-lg::before { content: map-get($bootstrap-icons-map, "info-lg"); } +.bi-mastodon::before { content: map-get($bootstrap-icons-map, "mastodon"); } +.bi-messenger::before { content: map-get($bootstrap-icons-map, "messenger"); } +.bi-piggy-bank-fill::before { content: map-get($bootstrap-icons-map, "piggy-bank-fill"); } +.bi-piggy-bank::before { content: map-get($bootstrap-icons-map, "piggy-bank"); } +.bi-pin-map-fill::before { content: map-get($bootstrap-icons-map, "pin-map-fill"); } +.bi-pin-map::before { content: map-get($bootstrap-icons-map, "pin-map"); } +.bi-plus-lg::before { content: map-get($bootstrap-icons-map, "plus-lg"); } +.bi-question-lg::before { content: map-get($bootstrap-icons-map, "question-lg"); } +.bi-recycle::before { content: map-get($bootstrap-icons-map, "recycle"); } +.bi-reddit::before { content: map-get($bootstrap-icons-map, "reddit"); } +.bi-safe-fill::before { content: map-get($bootstrap-icons-map, "safe-fill"); } +.bi-safe2-fill::before { content: map-get($bootstrap-icons-map, "safe2-fill"); } +.bi-safe2::before { content: map-get($bootstrap-icons-map, "safe2"); } +.bi-sd-card-fill::before { content: map-get($bootstrap-icons-map, "sd-card-fill"); } +.bi-sd-card::before { content: map-get($bootstrap-icons-map, "sd-card"); } +.bi-skype::before { content: map-get($bootstrap-icons-map, "skype"); } +.bi-slash-lg::before { content: map-get($bootstrap-icons-map, "slash-lg"); } +.bi-translate::before { content: map-get($bootstrap-icons-map, "translate"); } +.bi-x-lg::before { content: map-get($bootstrap-icons-map, "x-lg"); } +.bi-safe::before { content: map-get($bootstrap-icons-map, "safe"); } +.bi-apple::before { content: map-get($bootstrap-icons-map, "apple"); } +.bi-microsoft::before { content: map-get($bootstrap-icons-map, "microsoft"); } +.bi-windows::before { content: map-get($bootstrap-icons-map, "windows"); } +.bi-behance::before { content: map-get($bootstrap-icons-map, "behance"); } +.bi-dribbble::before { content: map-get($bootstrap-icons-map, "dribbble"); } +.bi-line::before { content: map-get($bootstrap-icons-map, "line"); } +.bi-medium::before { content: map-get($bootstrap-icons-map, "medium"); } +.bi-paypal::before { content: map-get($bootstrap-icons-map, "paypal"); } +.bi-pinterest::before { content: map-get($bootstrap-icons-map, "pinterest"); } +.bi-signal::before { content: map-get($bootstrap-icons-map, "signal"); } +.bi-snapchat::before { content: map-get($bootstrap-icons-map, "snapchat"); } +.bi-spotify::before { content: map-get($bootstrap-icons-map, "spotify"); } +.bi-stack-overflow::before { content: map-get($bootstrap-icons-map, "stack-overflow"); } +.bi-strava::before { content: map-get($bootstrap-icons-map, "strava"); } +.bi-wordpress::before { content: map-get($bootstrap-icons-map, "wordpress"); } +.bi-vimeo::before { content: map-get($bootstrap-icons-map, "vimeo"); } +.bi-activity::before { content: map-get($bootstrap-icons-map, "activity"); } +.bi-easel2-fill::before { content: map-get($bootstrap-icons-map, "easel2-fill"); } +.bi-easel2::before { content: map-get($bootstrap-icons-map, "easel2"); } +.bi-easel3-fill::before { content: map-get($bootstrap-icons-map, "easel3-fill"); } +.bi-easel3::before { content: map-get($bootstrap-icons-map, "easel3"); } +.bi-fan::before { content: map-get($bootstrap-icons-map, "fan"); } +.bi-fingerprint::before { content: map-get($bootstrap-icons-map, "fingerprint"); } +.bi-graph-down-arrow::before { content: map-get($bootstrap-icons-map, "graph-down-arrow"); } +.bi-graph-up-arrow::before { content: map-get($bootstrap-icons-map, "graph-up-arrow"); } +.bi-hypnotize::before { content: map-get($bootstrap-icons-map, "hypnotize"); } +.bi-magic::before { content: map-get($bootstrap-icons-map, "magic"); } +.bi-person-rolodex::before { content: map-get($bootstrap-icons-map, "person-rolodex"); } +.bi-person-video::before { content: map-get($bootstrap-icons-map, "person-video"); } +.bi-person-video2::before { content: map-get($bootstrap-icons-map, "person-video2"); } +.bi-person-video3::before { content: map-get($bootstrap-icons-map, "person-video3"); } +.bi-person-workspace::before { content: map-get($bootstrap-icons-map, "person-workspace"); } +.bi-radioactive::before { content: map-get($bootstrap-icons-map, "radioactive"); } +.bi-webcam-fill::before { content: map-get($bootstrap-icons-map, "webcam-fill"); } +.bi-webcam::before { content: map-get($bootstrap-icons-map, "webcam"); } +.bi-yin-yang::before { content: map-get($bootstrap-icons-map, "yin-yang"); } +.bi-bandaid-fill::before { content: map-get($bootstrap-icons-map, "bandaid-fill"); } +.bi-bandaid::before { content: map-get($bootstrap-icons-map, "bandaid"); } +.bi-bluetooth::before { content: map-get($bootstrap-icons-map, "bluetooth"); } +.bi-body-text::before { content: map-get($bootstrap-icons-map, "body-text"); } +.bi-boombox::before { content: map-get($bootstrap-icons-map, "boombox"); } +.bi-boxes::before { content: map-get($bootstrap-icons-map, "boxes"); } +.bi-dpad-fill::before { content: map-get($bootstrap-icons-map, "dpad-fill"); } +.bi-dpad::before { content: map-get($bootstrap-icons-map, "dpad"); } +.bi-ear-fill::before { content: map-get($bootstrap-icons-map, "ear-fill"); } +.bi-ear::before { content: map-get($bootstrap-icons-map, "ear"); } +.bi-envelope-check-1::before { content: map-get($bootstrap-icons-map, "envelope-check-1"); } +.bi-envelope-check-fill::before { content: map-get($bootstrap-icons-map, "envelope-check-fill"); } +.bi-envelope-check::before { content: map-get($bootstrap-icons-map, "envelope-check"); } +.bi-envelope-dash-1::before { content: map-get($bootstrap-icons-map, "envelope-dash-1"); } +.bi-envelope-dash-fill::before { content: map-get($bootstrap-icons-map, "envelope-dash-fill"); } +.bi-envelope-dash::before { content: map-get($bootstrap-icons-map, "envelope-dash"); } +.bi-envelope-exclamation-1::before { content: map-get($bootstrap-icons-map, "envelope-exclamation-1"); } +.bi-envelope-exclamation-fill::before { content: map-get($bootstrap-icons-map, "envelope-exclamation-fill"); } +.bi-envelope-exclamation::before { content: map-get($bootstrap-icons-map, "envelope-exclamation"); } +.bi-envelope-plus-fill::before { content: map-get($bootstrap-icons-map, "envelope-plus-fill"); } +.bi-envelope-plus::before { content: map-get($bootstrap-icons-map, "envelope-plus"); } +.bi-envelope-slash-1::before { content: map-get($bootstrap-icons-map, "envelope-slash-1"); } +.bi-envelope-slash-fill::before { content: map-get($bootstrap-icons-map, "envelope-slash-fill"); } +.bi-envelope-slash::before { content: map-get($bootstrap-icons-map, "envelope-slash"); } +.bi-envelope-x-1::before { content: map-get($bootstrap-icons-map, "envelope-x-1"); } +.bi-envelope-x-fill::before { content: map-get($bootstrap-icons-map, "envelope-x-fill"); } +.bi-envelope-x::before { content: map-get($bootstrap-icons-map, "envelope-x"); } +.bi-explicit-fill::before { content: map-get($bootstrap-icons-map, "explicit-fill"); } +.bi-explicit::before { content: map-get($bootstrap-icons-map, "explicit"); } +.bi-git::before { content: map-get($bootstrap-icons-map, "git"); } +.bi-infinity::before { content: map-get($bootstrap-icons-map, "infinity"); } +.bi-list-columns-reverse::before { content: map-get($bootstrap-icons-map, "list-columns-reverse"); } +.bi-list-columns::before { content: map-get($bootstrap-icons-map, "list-columns"); } +.bi-meta::before { content: map-get($bootstrap-icons-map, "meta"); } +.bi-mortorboard-fill::before { content: map-get($bootstrap-icons-map, "mortorboard-fill"); } +.bi-mortorboard::before { content: map-get($bootstrap-icons-map, "mortorboard"); } +.bi-nintendo-switch::before { content: map-get($bootstrap-icons-map, "nintendo-switch"); } +.bi-pc-display-horizontal::before { content: map-get($bootstrap-icons-map, "pc-display-horizontal"); } +.bi-pc-display::before { content: map-get($bootstrap-icons-map, "pc-display"); } +.bi-pc-horizontal::before { content: map-get($bootstrap-icons-map, "pc-horizontal"); } +.bi-pc::before { content: map-get($bootstrap-icons-map, "pc"); } +.bi-playstation::before { content: map-get($bootstrap-icons-map, "playstation"); } +.bi-plus-slash-minus::before { content: map-get($bootstrap-icons-map, "plus-slash-minus"); } +.bi-projector-fill::before { content: map-get($bootstrap-icons-map, "projector-fill"); } +.bi-projector::before { content: map-get($bootstrap-icons-map, "projector"); } +.bi-qr-code-scan::before { content: map-get($bootstrap-icons-map, "qr-code-scan"); } +.bi-qr-code::before { content: map-get($bootstrap-icons-map, "qr-code"); } +.bi-quora::before { content: map-get($bootstrap-icons-map, "quora"); } +.bi-quote::before { content: map-get($bootstrap-icons-map, "quote"); } +.bi-robot::before { content: map-get($bootstrap-icons-map, "robot"); } +.bi-send-check-fill::before { content: map-get($bootstrap-icons-map, "send-check-fill"); } +.bi-send-check::before { content: map-get($bootstrap-icons-map, "send-check"); } +.bi-send-dash-fill::before { content: map-get($bootstrap-icons-map, "send-dash-fill"); } +.bi-send-dash::before { content: map-get($bootstrap-icons-map, "send-dash"); } +.bi-send-exclamation-1::before { content: map-get($bootstrap-icons-map, "send-exclamation-1"); } +.bi-send-exclamation-fill::before { content: map-get($bootstrap-icons-map, "send-exclamation-fill"); } +.bi-send-exclamation::before { content: map-get($bootstrap-icons-map, "send-exclamation"); } +.bi-send-fill::before { content: map-get($bootstrap-icons-map, "send-fill"); } +.bi-send-plus-fill::before { content: map-get($bootstrap-icons-map, "send-plus-fill"); } +.bi-send-plus::before { content: map-get($bootstrap-icons-map, "send-plus"); } +.bi-send-slash-fill::before { content: map-get($bootstrap-icons-map, "send-slash-fill"); } +.bi-send-slash::before { content: map-get($bootstrap-icons-map, "send-slash"); } +.bi-send-x-fill::before { content: map-get($bootstrap-icons-map, "send-x-fill"); } +.bi-send-x::before { content: map-get($bootstrap-icons-map, "send-x"); } +.bi-send::before { content: map-get($bootstrap-icons-map, "send"); } +.bi-steam::before { content: map-get($bootstrap-icons-map, "steam"); } +.bi-terminal-dash-1::before { content: map-get($bootstrap-icons-map, "terminal-dash-1"); } +.bi-terminal-dash::before { content: map-get($bootstrap-icons-map, "terminal-dash"); } +.bi-terminal-plus::before { content: map-get($bootstrap-icons-map, "terminal-plus"); } +.bi-terminal-split::before { content: map-get($bootstrap-icons-map, "terminal-split"); } +.bi-ticket-detailed-fill::before { content: map-get($bootstrap-icons-map, "ticket-detailed-fill"); } +.bi-ticket-detailed::before { content: map-get($bootstrap-icons-map, "ticket-detailed"); } +.bi-ticket-fill::before { content: map-get($bootstrap-icons-map, "ticket-fill"); } +.bi-ticket-perforated-fill::before { content: map-get($bootstrap-icons-map, "ticket-perforated-fill"); } +.bi-ticket-perforated::before { content: map-get($bootstrap-icons-map, "ticket-perforated"); } +.bi-ticket::before { content: map-get($bootstrap-icons-map, "ticket"); } +.bi-tiktok::before { content: map-get($bootstrap-icons-map, "tiktok"); } +.bi-window-dash::before { content: map-get($bootstrap-icons-map, "window-dash"); } +.bi-window-desktop::before { content: map-get($bootstrap-icons-map, "window-desktop"); } +.bi-window-fullscreen::before { content: map-get($bootstrap-icons-map, "window-fullscreen"); } +.bi-window-plus::before { content: map-get($bootstrap-icons-map, "window-plus"); } +.bi-window-split::before { content: map-get($bootstrap-icons-map, "window-split"); } +.bi-window-stack::before { content: map-get($bootstrap-icons-map, "window-stack"); } +.bi-window-x::before { content: map-get($bootstrap-icons-map, "window-x"); } +.bi-xbox::before { content: map-get($bootstrap-icons-map, "xbox"); } +.bi-ethernet::before { content: map-get($bootstrap-icons-map, "ethernet"); } +.bi-hdmi-fill::before { content: map-get($bootstrap-icons-map, "hdmi-fill"); } +.bi-hdmi::before { content: map-get($bootstrap-icons-map, "hdmi"); } +.bi-usb-c-fill::before { content: map-get($bootstrap-icons-map, "usb-c-fill"); } +.bi-usb-c::before { content: map-get($bootstrap-icons-map, "usb-c"); } +.bi-usb-fill::before { content: map-get($bootstrap-icons-map, "usb-fill"); } +.bi-usb-plug-fill::before { content: map-get($bootstrap-icons-map, "usb-plug-fill"); } +.bi-usb-plug::before { content: map-get($bootstrap-icons-map, "usb-plug"); } +.bi-usb-symbol::before { content: map-get($bootstrap-icons-map, "usb-symbol"); } +.bi-usb::before { content: map-get($bootstrap-icons-map, "usb"); } +.bi-boombox-fill::before { content: map-get($bootstrap-icons-map, "boombox-fill"); } +.bi-displayport-1::before { content: map-get($bootstrap-icons-map, "displayport-1"); } +.bi-displayport::before { content: map-get($bootstrap-icons-map, "displayport"); } +.bi-gpu-card::before { content: map-get($bootstrap-icons-map, "gpu-card"); } +.bi-memory::before { content: map-get($bootstrap-icons-map, "memory"); } +.bi-modem-fill::before { content: map-get($bootstrap-icons-map, "modem-fill"); } +.bi-modem::before { content: map-get($bootstrap-icons-map, "modem"); } +.bi-motherboard-fill::before { content: map-get($bootstrap-icons-map, "motherboard-fill"); } +.bi-motherboard::before { content: map-get($bootstrap-icons-map, "motherboard"); } +.bi-optical-audio-fill::before { content: map-get($bootstrap-icons-map, "optical-audio-fill"); } +.bi-optical-audio::before { content: map-get($bootstrap-icons-map, "optical-audio"); } +.bi-pci-card::before { content: map-get($bootstrap-icons-map, "pci-card"); } +.bi-router-fill::before { content: map-get($bootstrap-icons-map, "router-fill"); } +.bi-router::before { content: map-get($bootstrap-icons-map, "router"); } +.bi-ssd-fill::before { content: map-get($bootstrap-icons-map, "ssd-fill"); } +.bi-ssd::before { content: map-get($bootstrap-icons-map, "ssd"); } +.bi-thunderbolt-fill::before { content: map-get($bootstrap-icons-map, "thunderbolt-fill"); } +.bi-thunderbolt::before { content: map-get($bootstrap-icons-map, "thunderbolt"); } +.bi-usb-drive-fill::before { content: map-get($bootstrap-icons-map, "usb-drive-fill"); } +.bi-usb-drive::before { content: map-get($bootstrap-icons-map, "usb-drive"); } +.bi-usb-micro-fill::before { content: map-get($bootstrap-icons-map, "usb-micro-fill"); } +.bi-usb-micro::before { content: map-get($bootstrap-icons-map, "usb-micro"); } +.bi-usb-mini-fill::before { content: map-get($bootstrap-icons-map, "usb-mini-fill"); } +.bi-usb-mini::before { content: map-get($bootstrap-icons-map, "usb-mini"); } +.bi-cloud-haze2::before { content: map-get($bootstrap-icons-map, "cloud-haze2"); } +.bi-device-hdd-fill::before { content: map-get($bootstrap-icons-map, "device-hdd-fill"); } +.bi-device-hdd::before { content: map-get($bootstrap-icons-map, "device-hdd"); } +.bi-device-ssd-fill::before { content: map-get($bootstrap-icons-map, "device-ssd-fill"); } +.bi-device-ssd::before { content: map-get($bootstrap-icons-map, "device-ssd"); } +.bi-displayport-fill::before { content: map-get($bootstrap-icons-map, "displayport-fill"); } +.bi-mortarboard-fill::before { content: map-get($bootstrap-icons-map, "mortarboard-fill"); } +.bi-mortarboard::before { content: map-get($bootstrap-icons-map, "mortarboard"); } +.bi-terminal-x::before { content: map-get($bootstrap-icons-map, "terminal-x"); } +.bi-arrow-through-heart-fill::before { content: map-get($bootstrap-icons-map, "arrow-through-heart-fill"); } +.bi-arrow-through-heart::before { content: map-get($bootstrap-icons-map, "arrow-through-heart"); } +.bi-badge-sd-fill::before { content: map-get($bootstrap-icons-map, "badge-sd-fill"); } +.bi-badge-sd::before { content: map-get($bootstrap-icons-map, "badge-sd"); } +.bi-bag-heart-fill::before { content: map-get($bootstrap-icons-map, "bag-heart-fill"); } +.bi-bag-heart::before { content: map-get($bootstrap-icons-map, "bag-heart"); } +.bi-balloon-fill::before { content: map-get($bootstrap-icons-map, "balloon-fill"); } +.bi-balloon-heart-fill::before { content: map-get($bootstrap-icons-map, "balloon-heart-fill"); } +.bi-balloon-heart::before { content: map-get($bootstrap-icons-map, "balloon-heart"); } +.bi-balloon::before { content: map-get($bootstrap-icons-map, "balloon"); } +.bi-box2-fill::before { content: map-get($bootstrap-icons-map, "box2-fill"); } +.bi-box2-heart-fill::before { content: map-get($bootstrap-icons-map, "box2-heart-fill"); } +.bi-box2-heart::before { content: map-get($bootstrap-icons-map, "box2-heart"); } +.bi-box2::before { content: map-get($bootstrap-icons-map, "box2"); } +.bi-braces-asterisk::before { content: map-get($bootstrap-icons-map, "braces-asterisk"); } +.bi-calendar-heart-fill::before { content: map-get($bootstrap-icons-map, "calendar-heart-fill"); } +.bi-calendar-heart::before { content: map-get($bootstrap-icons-map, "calendar-heart"); } +.bi-calendar2-heart-fill::before { content: map-get($bootstrap-icons-map, "calendar2-heart-fill"); } +.bi-calendar2-heart::before { content: map-get($bootstrap-icons-map, "calendar2-heart"); } +.bi-chat-heart-fill::before { content: map-get($bootstrap-icons-map, "chat-heart-fill"); } +.bi-chat-heart::before { content: map-get($bootstrap-icons-map, "chat-heart"); } +.bi-chat-left-heart-fill::before { content: map-get($bootstrap-icons-map, "chat-left-heart-fill"); } +.bi-chat-left-heart::before { content: map-get($bootstrap-icons-map, "chat-left-heart"); } +.bi-chat-right-heart-fill::before { content: map-get($bootstrap-icons-map, "chat-right-heart-fill"); } +.bi-chat-right-heart::before { content: map-get($bootstrap-icons-map, "chat-right-heart"); } +.bi-chat-square-heart-fill::before { content: map-get($bootstrap-icons-map, "chat-square-heart-fill"); } +.bi-chat-square-heart::before { content: map-get($bootstrap-icons-map, "chat-square-heart"); } +.bi-clipboard-check-fill::before { content: map-get($bootstrap-icons-map, "clipboard-check-fill"); } +.bi-clipboard-data-fill::before { content: map-get($bootstrap-icons-map, "clipboard-data-fill"); } +.bi-clipboard-fill::before { content: map-get($bootstrap-icons-map, "clipboard-fill"); } +.bi-clipboard-heart-fill::before { content: map-get($bootstrap-icons-map, "clipboard-heart-fill"); } +.bi-clipboard-heart::before { content: map-get($bootstrap-icons-map, "clipboard-heart"); } +.bi-clipboard-minus-fill::before { content: map-get($bootstrap-icons-map, "clipboard-minus-fill"); } +.bi-clipboard-plus-fill::before { content: map-get($bootstrap-icons-map, "clipboard-plus-fill"); } +.bi-clipboard-pulse::before { content: map-get($bootstrap-icons-map, "clipboard-pulse"); } +.bi-clipboard-x-fill::before { content: map-get($bootstrap-icons-map, "clipboard-x-fill"); } +.bi-clipboard2-check-fill::before { content: map-get($bootstrap-icons-map, "clipboard2-check-fill"); } +.bi-clipboard2-check::before { content: map-get($bootstrap-icons-map, "clipboard2-check"); } +.bi-clipboard2-data-fill::before { content: map-get($bootstrap-icons-map, "clipboard2-data-fill"); } +.bi-clipboard2-data::before { content: map-get($bootstrap-icons-map, "clipboard2-data"); } +.bi-clipboard2-fill::before { content: map-get($bootstrap-icons-map, "clipboard2-fill"); } +.bi-clipboard2-heart-fill::before { content: map-get($bootstrap-icons-map, "clipboard2-heart-fill"); } +.bi-clipboard2-heart::before { content: map-get($bootstrap-icons-map, "clipboard2-heart"); } +.bi-clipboard2-minus-fill::before { content: map-get($bootstrap-icons-map, "clipboard2-minus-fill"); } +.bi-clipboard2-minus::before { content: map-get($bootstrap-icons-map, "clipboard2-minus"); } +.bi-clipboard2-plus-fill::before { content: map-get($bootstrap-icons-map, "clipboard2-plus-fill"); } +.bi-clipboard2-plus::before { content: map-get($bootstrap-icons-map, "clipboard2-plus"); } +.bi-clipboard2-pulse-fill::before { content: map-get($bootstrap-icons-map, "clipboard2-pulse-fill"); } +.bi-clipboard2-pulse::before { content: map-get($bootstrap-icons-map, "clipboard2-pulse"); } +.bi-clipboard2-x-fill::before { content: map-get($bootstrap-icons-map, "clipboard2-x-fill"); } +.bi-clipboard2-x::before { content: map-get($bootstrap-icons-map, "clipboard2-x"); } +.bi-clipboard2::before { content: map-get($bootstrap-icons-map, "clipboard2"); } +.bi-emoji-kiss-fill::before { content: map-get($bootstrap-icons-map, "emoji-kiss-fill"); } +.bi-emoji-kiss::before { content: map-get($bootstrap-icons-map, "emoji-kiss"); } +.bi-envelope-heart-fill::before { content: map-get($bootstrap-icons-map, "envelope-heart-fill"); } +.bi-envelope-heart::before { content: map-get($bootstrap-icons-map, "envelope-heart"); } +.bi-envelope-open-heart-fill::before { content: map-get($bootstrap-icons-map, "envelope-open-heart-fill"); } +.bi-envelope-open-heart::before { content: map-get($bootstrap-icons-map, "envelope-open-heart"); } +.bi-envelope-paper-fill::before { content: map-get($bootstrap-icons-map, "envelope-paper-fill"); } +.bi-envelope-paper-heart-fill::before { content: map-get($bootstrap-icons-map, "envelope-paper-heart-fill"); } +.bi-envelope-paper-heart::before { content: map-get($bootstrap-icons-map, "envelope-paper-heart"); } +.bi-envelope-paper::before { content: map-get($bootstrap-icons-map, "envelope-paper"); } +.bi-filetype-aac::before { content: map-get($bootstrap-icons-map, "filetype-aac"); } +.bi-filetype-ai::before { content: map-get($bootstrap-icons-map, "filetype-ai"); } +.bi-filetype-bmp::before { content: map-get($bootstrap-icons-map, "filetype-bmp"); } +.bi-filetype-cs::before { content: map-get($bootstrap-icons-map, "filetype-cs"); } +.bi-filetype-css::before { content: map-get($bootstrap-icons-map, "filetype-css"); } +.bi-filetype-csv::before { content: map-get($bootstrap-icons-map, "filetype-csv"); } +.bi-filetype-doc::before { content: map-get($bootstrap-icons-map, "filetype-doc"); } +.bi-filetype-docx::before { content: map-get($bootstrap-icons-map, "filetype-docx"); } +.bi-filetype-exe::before { content: map-get($bootstrap-icons-map, "filetype-exe"); } +.bi-filetype-gif::before { content: map-get($bootstrap-icons-map, "filetype-gif"); } +.bi-filetype-heic::before { content: map-get($bootstrap-icons-map, "filetype-heic"); } +.bi-filetype-html::before { content: map-get($bootstrap-icons-map, "filetype-html"); } +.bi-filetype-java::before { content: map-get($bootstrap-icons-map, "filetype-java"); } +.bi-filetype-jpg::before { content: map-get($bootstrap-icons-map, "filetype-jpg"); } +.bi-filetype-js::before { content: map-get($bootstrap-icons-map, "filetype-js"); } +.bi-filetype-jsx::before { content: map-get($bootstrap-icons-map, "filetype-jsx"); } +.bi-filetype-key::before { content: map-get($bootstrap-icons-map, "filetype-key"); } +.bi-filetype-m4p::before { content: map-get($bootstrap-icons-map, "filetype-m4p"); } +.bi-filetype-md::before { content: map-get($bootstrap-icons-map, "filetype-md"); } +.bi-filetype-mdx::before { content: map-get($bootstrap-icons-map, "filetype-mdx"); } +.bi-filetype-mov::before { content: map-get($bootstrap-icons-map, "filetype-mov"); } +.bi-filetype-mp3::before { content: map-get($bootstrap-icons-map, "filetype-mp3"); } +.bi-filetype-mp4::before { content: map-get($bootstrap-icons-map, "filetype-mp4"); } +.bi-filetype-otf::before { content: map-get($bootstrap-icons-map, "filetype-otf"); } +.bi-filetype-pdf::before { content: map-get($bootstrap-icons-map, "filetype-pdf"); } +.bi-filetype-php::before { content: map-get($bootstrap-icons-map, "filetype-php"); } +.bi-filetype-png::before { content: map-get($bootstrap-icons-map, "filetype-png"); } +.bi-filetype-ppt-1::before { content: map-get($bootstrap-icons-map, "filetype-ppt-1"); } +.bi-filetype-ppt::before { content: map-get($bootstrap-icons-map, "filetype-ppt"); } +.bi-filetype-psd::before { content: map-get($bootstrap-icons-map, "filetype-psd"); } +.bi-filetype-py::before { content: map-get($bootstrap-icons-map, "filetype-py"); } +.bi-filetype-raw::before { content: map-get($bootstrap-icons-map, "filetype-raw"); } +.bi-filetype-rb::before { content: map-get($bootstrap-icons-map, "filetype-rb"); } +.bi-filetype-sass::before { content: map-get($bootstrap-icons-map, "filetype-sass"); } +.bi-filetype-scss::before { content: map-get($bootstrap-icons-map, "filetype-scss"); } +.bi-filetype-sh::before { content: map-get($bootstrap-icons-map, "filetype-sh"); } +.bi-filetype-svg::before { content: map-get($bootstrap-icons-map, "filetype-svg"); } +.bi-filetype-tiff::before { content: map-get($bootstrap-icons-map, "filetype-tiff"); } +.bi-filetype-tsx::before { content: map-get($bootstrap-icons-map, "filetype-tsx"); } +.bi-filetype-ttf::before { content: map-get($bootstrap-icons-map, "filetype-ttf"); } +.bi-filetype-txt::before { content: map-get($bootstrap-icons-map, "filetype-txt"); } +.bi-filetype-wav::before { content: map-get($bootstrap-icons-map, "filetype-wav"); } +.bi-filetype-woff::before { content: map-get($bootstrap-icons-map, "filetype-woff"); } +.bi-filetype-xls-1::before { content: map-get($bootstrap-icons-map, "filetype-xls-1"); } +.bi-filetype-xls::before { content: map-get($bootstrap-icons-map, "filetype-xls"); } +.bi-filetype-xml::before { content: map-get($bootstrap-icons-map, "filetype-xml"); } +.bi-filetype-yml::before { content: map-get($bootstrap-icons-map, "filetype-yml"); } +.bi-heart-arrow::before { content: map-get($bootstrap-icons-map, "heart-arrow"); } +.bi-heart-pulse-fill::before { content: map-get($bootstrap-icons-map, "heart-pulse-fill"); } +.bi-heart-pulse::before { content: map-get($bootstrap-icons-map, "heart-pulse"); } +.bi-heartbreak-fill::before { content: map-get($bootstrap-icons-map, "heartbreak-fill"); } +.bi-heartbreak::before { content: map-get($bootstrap-icons-map, "heartbreak"); } +.bi-hearts::before { content: map-get($bootstrap-icons-map, "hearts"); } +.bi-hospital-fill::before { content: map-get($bootstrap-icons-map, "hospital-fill"); } +.bi-hospital::before { content: map-get($bootstrap-icons-map, "hospital"); } +.bi-house-heart-fill::before { content: map-get($bootstrap-icons-map, "house-heart-fill"); } +.bi-house-heart::before { content: map-get($bootstrap-icons-map, "house-heart"); } +.bi-incognito::before { content: map-get($bootstrap-icons-map, "incognito"); } +.bi-magnet-fill::before { content: map-get($bootstrap-icons-map, "magnet-fill"); } +.bi-magnet::before { content: map-get($bootstrap-icons-map, "magnet"); } +.bi-person-heart::before { content: map-get($bootstrap-icons-map, "person-heart"); } +.bi-person-hearts::before { content: map-get($bootstrap-icons-map, "person-hearts"); } +.bi-phone-flip::before { content: map-get($bootstrap-icons-map, "phone-flip"); } +.bi-plugin::before { content: map-get($bootstrap-icons-map, "plugin"); } +.bi-postage-fill::before { content: map-get($bootstrap-icons-map, "postage-fill"); } +.bi-postage-heart-fill::before { content: map-get($bootstrap-icons-map, "postage-heart-fill"); } +.bi-postage-heart::before { content: map-get($bootstrap-icons-map, "postage-heart"); } +.bi-postage::before { content: map-get($bootstrap-icons-map, "postage"); } +.bi-postcard-fill::before { content: map-get($bootstrap-icons-map, "postcard-fill"); } +.bi-postcard-heart-fill::before { content: map-get($bootstrap-icons-map, "postcard-heart-fill"); } +.bi-postcard-heart::before { content: map-get($bootstrap-icons-map, "postcard-heart"); } +.bi-postcard::before { content: map-get($bootstrap-icons-map, "postcard"); } +.bi-search-heart-fill::before { content: map-get($bootstrap-icons-map, "search-heart-fill"); } +.bi-search-heart::before { content: map-get($bootstrap-icons-map, "search-heart"); } +.bi-sliders2-vertical::before { content: map-get($bootstrap-icons-map, "sliders2-vertical"); } +.bi-sliders2::before { content: map-get($bootstrap-icons-map, "sliders2"); } +.bi-trash3-fill::before { content: map-get($bootstrap-icons-map, "trash3-fill"); } +.bi-trash3::before { content: map-get($bootstrap-icons-map, "trash3"); } +.bi-valentine::before { content: map-get($bootstrap-icons-map, "valentine"); } +.bi-valentine2::before { content: map-get($bootstrap-icons-map, "valentine2"); } +.bi-wrench-adjustable-circle-fill::before { content: map-get($bootstrap-icons-map, "wrench-adjustable-circle-fill"); } +.bi-wrench-adjustable-circle::before { content: map-get($bootstrap-icons-map, "wrench-adjustable-circle"); } +.bi-wrench-adjustable::before { content: map-get($bootstrap-icons-map, "wrench-adjustable"); } +.bi-filetype-json::before { content: map-get($bootstrap-icons-map, "filetype-json"); } +.bi-filetype-pptx::before { content: map-get($bootstrap-icons-map, "filetype-pptx"); } +.bi-filetype-xlsx::before { content: map-get($bootstrap-icons-map, "filetype-xlsx"); } diff --git a/resources/beike/shop/fashion/css/bootstrap/bootstrap.scss b/resources/beike/shop/fashion/css/bootstrap/bootstrap.scss new file mode 100644 index 00000000..fe13ca8e --- /dev/null +++ b/resources/beike/shop/fashion/css/bootstrap/bootstrap.scss @@ -0,0 +1,176 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-17 19:26:53 + * @LastEditTime 2022-09-16 20:57:12 + */ + +$primary: #ee403d; +$success: #71c20b; +$sub_color: #78e723; + +$container-max-widths: ( + sm: 540px, + md: 720px, + lg: 960px, + xl: 1140px, + xxl: 1280px +); + +// $body-bg: #111; +// $body-color: #fff; + +$font-size-base: 0.8rem; +$font-family-base: "Poppins","Helvetica","Arial","sans-serif"; +// $border-radius: 0; +$form-check-input-width: 1.2em; +// $form-check-input-border-radius: 0; + +// 开启负边距 +$enable-negative-margins: true; + +$nav-link-color: #1f1f1f; +$hr-color: #bcbcbc; + +// Breadcrumbs +// scss-docs-start breadcrumb-variables +// $breadcrumb-font-size: null !default; +$breadcrumb-padding-y: 1.4rem; +$breadcrumb-padding-x: 0; +// $breadcrumb-item-padding-x: .5rem !default; +$breadcrumb-margin-bottom: 0; +$breadcrumb-bg: transparent; +// $breadcrumb-divider-color: $gray-600 !default; +// $breadcrumb-active-color: $gray-600 !default; +// $breadcrumb-divider: quote("/") !default; +// $breadcrumb-divider-flipped: $breadcrumb-divider !default; +// $breadcrumb-border-radius: null !default; + +// $border-radius: 0; +$input-btn-padding-y: .46rem; +$input-btn-font-size: 0.85rem; +$input-focus-border-color: #222; +$input-btn-focus-box-shadow: 0 0 11px 0 rgba($color: $sub_color, $alpha: .1); +$form-select-focus-box-shadow: 0 0 11px 0 rgba($color: $sub_color, $alpha: .1); + +// $input-btn-padding-x: .75rem !default; +$btn-focus-width: 0; +// $border-radius: 0; +$btn-border-radius: 0.25rem; +// $btn-border-radius-sm: 0; +$btn-border-radius-lg: 0.25rem; +// $btn-padding-y: $input-btn-padding-y !default; +// $btn-focus-box-shadow: 0 0 11px 0 rgba($color: $primary, $alpha: .1); + +$link-decoration: none; +$link-hover-decoration: underline; +// $link-color: #3480e7; +$link-hover-color: $primary; +$form-select-focus-box-shadow: 0 0 11px 0 rgba($color: $sub_color, $alpha: .1); + +$form-floating-input-padding-t: 1.325rem; +$form-floating-input-padding-b: .625rem; +$form-floating-padding-y: .8rem; +$form-floating-height: 50px; + +$dropdown-border-color: rgba(0, 0, 0, 0.1); +$dropdown-item-padding-y: .4rem; + + +$card-border-width: 0; + +$alert-padding-y: 0.5rem; + +$form-feedback-icon-valid: none; +$form-feedback-icon-valid-color: inherit; + +// $dropdown-divider-bg: rgba(0, 0, 0, 0.1); +@import './bootstrap-icons'; +@import 'node_modules/bootstrap/scss/bootstrap'; + +.btn-primary { + color: #fff !important; +} + +.container-fluid { + padding-right: 50px; + padding-left: 50px; +} + +.dropdown { + .dropdown-divider { + margin-left: 1rem; + margin-right: 1rem; + opacity: .1; + } +} + +.table > :not(:first-child) { + border-top: none; +} + +.card { + // box-shadow: rgba(0, 0, 0, .1) 0px 1px 4px 0px; + // border: none; + + .card-header { + padding: 1rem 1rem .3rem; + background-color: #fff; + // font-weight: bold; + // font-size: .8rem; + border-bottom: 0 solid rgba(0,0,0,.125); + + // &:first-child { + // border-radius: 0; + // } + + .card-title { + margin-bottom: 0; + padding-left: 10px; + border-left: 3px solid $primary; + line-height: 1; + // font-size: 14px; + } + } +} + +.breadcrumb { + .breadcrumb-item { + &:last-of-type { + a { + color: #666; + font-weight: 600; + } + } + } + a { + color: #888; + } +} + +.was-validated { + .form-control, + .form-select { + &:valid { + border-color: $input-border-color; + } + } + + .form-check-input { + &:valid { + border-color: rgba(#000, .25); + + &:checked { + background-color: $primary; + border-color: $primary; + } + + &~.form-check-label { + color: inherit; + } + } + } +} diff --git a/resources/beike/shop/fashion/css/cart.scss b/resources/beike/shop/fashion/css/cart.scss new file mode 100644 index 00000000..9716cacc --- /dev/null +++ b/resources/beike/shop/fashion/css/cart.scss @@ -0,0 +1,100 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-15 17:35:29 + * @LastEditTime 2022-09-16 20:47:16 + */ + +body.page-checkout, body.page-cart { + background-color: #f6f8fa; + + .left-column { + @media (min-width: 992px) { + width: 70%; + } + } + + .right-column { + @media (min-width: 992px) { + width: 30%; + } + + @media (max-width: 768px) { + margin-top: 1.4rem; + } + } +} + +body.page-cart { + .cart-products-wrap { + .table { + tbody { + border-top: none; + td { + vertical-align: middle; + border-color: #f0f2f4; + } + + // tr { + // &.active { + // background-color: #fff6f1; + // } + // } + } + + thead { + background-color: #F8F9FA; + + th { + border-bottom: none; + padding: 0.7rem 0.5rem; + box-shadow: none; + white-space: nowrap; + } + } + + .p-image { + input { + flex: 0 0 1; + } + } + } + } + + .total-wrap { + &.total-wrap-fixed { + position: fixed; + top: 0; + right: 0; + } + + .card-header { + padding-top: 1rem; + border-bottom: none; + background-color: transparent; + } + + .list-group { + li { + background-color: transparent; + padding: 0.7rem 0; + border-color: #EEEEEE; + + &:not(.d-grid) { + display: flex; + align-items: center; // flex-start | center + justify-content: space-between; // flex-end | center | space-between + } + + .total-price { + color: #222222; + font-size: 1.2rem; + font-weight: bold; + } + } + } + } +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/element-ui.scss b/resources/beike/shop/fashion/css/element-ui.scss new file mode 100644 index 00000000..3159a049 --- /dev/null +++ b/resources/beike/shop/fashion/css/element-ui.scss @@ -0,0 +1,13 @@ +@charset "UTF-8;" + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-02 19:19:52 + * @LastEditTime 2022-09-16 20:47:45 + */ + +.el-input__inner { + // border-radius: 0 !important; +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/footer.scss b/resources/beike/shop/fashion/css/footer.scss new file mode 100644 index 00000000..c897b8b1 --- /dev/null +++ b/resources/beike/shop/fashion/css/footer.scss @@ -0,0 +1,103 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-09-03 22:32:29 + * @LastEditTime 2022-09-16 20:48:00 + */ + +footer { + // background: #F8F9FA; + background: #161616; + margin-top: 5rem; + color: #cdcdcd; + + @media (max-width:768px) { + margin-top: 2rem; + } + + .footer-content-left { + @media (min-width: 992px) { + padding-right: 30px; + } + } + + .footer-active { + outline: 2px dashed #4bb1f0 !important; + } + + .services-wrap { + padding: 2.2rem 0; + border-bottom: 1px solid #222; + + .service-item { + display: flex; + align-items: center; + + .icon { + width: 34px; + margin-right: 14px; + } + + p { + margin-bottom: 0; + } + + .title { + margin-bottom: 2px; + font-weight: bold; + color: #333; + } + + .sub-title { + font-size: .6rem; + color: #8D94A0; + } + } + } + + .footer-content { + padding: 3rem 0; + + a { + color: #cdcdcd; + + &:hover { + color: $primary; + } + } + + .logo { + max-width: 240px; + margin-bottom: 20px; + } + + .text { + color: #cdcdcd; + } + + h6 { + font-size: 14px; + } + } + + .footer-bottom { + display: flex; + align-items: center; + border-top: 1px solid #232323; + + @media (min-width:768px) { + min-height: 60px; + } + + @media (max-width:768px) { + padding: 10px 0; + } + + .right-img { + max-height: 42px; + } + } +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/global.scss b/resources/beike/shop/fashion/css/global.scss new file mode 100644 index 00000000..3d41ac94 --- /dev/null +++ b/resources/beike/shop/fashion/css/global.scss @@ -0,0 +1,326 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-09-09 19:16:39 + * @LastEditTime 2022-09-16 20:55:07 + */ + +[v-cloak] { + display: none; +} + +body[class^="page-account-"] { + background-color: #F7F8FA; +} + +@font-face {font-family: 'Poppins'; + src: url('/fonts/poppins/Poppins-Regular.ttf') format("truetype"); + font-style: normal; + font-weight: 500; + font-weight: normal; + font-display: swap; +} + +@font-face {font-family: 'Poppins'; + src: url('/fonts/poppins/Poppins-Medium.ttf') format("truetype"); + font-style: normal; + font-display: swap; + font-weight: 600; +} + +@font-face {font-family: 'Poppins'; + src: url('/fonts/poppins/Poppins-SemiBold.ttf') format("truetype"); + font-style: normal; + font-display: swap; + font-weight: 700; +} + +h1,h2,h3, h4, h5, h6, b, strong { + font-weight: 700; + color: #282828; +} + +@for $i from 1 through 6 { + .min-h#{$i} { + min-height: #{$i}00px; + } +} + +// 生成 100 200 300 ... 1000 的宽度 +@for $i from 1 through 10 { + .wp-#{$i}00 { + width: #{$i}00px; + } +} +// clac(100% - #{$i}00px) +@for $i from 1 through 10 { + .wp-#{$i}00- { + width: calc(100% - #{$i}00px); + } +} + +// 生成 100 200 300 ... 1000 的最小高度 +@for $i from 1 through 10 { + .h-min-#{$i}00 { + min-height: #{$i}00px; + } +} + +// 生成 100 200 300 ... 1000 的最小宽度 +@for $i from 1 through 10 { + .w-min-#{$i}00 { + min-width: #{$i}00px; + } +} + +// 生成 100 200 300 ... 1000 的最大宽度 +@for $i from 1 through 10 { + .w-max-#{$i}00 { + max-width: #{$i}00px; + } +} + +// 生成 100 200 300 ... 1000 的高度 +@for $i from 1 through 10 { + .hp-#{$i}00 { + height: #{$i}00px; + } +} + +// 生成 10 20 30 ... 90 的高宽 +@for $i from 1 through 10 { + .wh-#{$i}0 { + height: #{$i}0px; + width: #{$i}0px; + } +} + +img { + max-width: 100%; + height: auto; +} + +.col-form-label.required { + &::before { + content: "*"; + color: #f56c6c; + font-size: 12px; + font-weight: bold; + margin-right: 5px; + } +} + +.login-pop-box { + overflow: inherit; + + @media (max-width: 768px) { + width: 90% !important; + height: 80% !important; + } +} + +.module-title { + font-size: 1.5rem; + text-align: center; + font-weight: bold; + position: relative; + padding-bottom: 10px; + color: #333; + margin-bottom: 2rem; + + @media (max-width: 992px) { + font-size: 1rem; + } + + &:after { + position: absolute; + bottom: 0; + transform:translateX(-50%); + left: 50%; + content: ''; + width: 60px; + height: 2px; + background: $sub_color; + } +} + +.tinymce-format-p { + p { + margin-bottom: 0.5rem; + } +} + +.steps-wrap { + display: flex; + justify-content: space-around; + position: relative; + + &:before { + content: ''; + position: absolute; + top: 14px; + left: 0; + width: 100%; + border-bottom: 3px solid #D7D7D7; + } + + > div { + display: flex; + flex-direction: column; + align-items: center; + position: relative; + &.active { + .number { + background-color: $sub_color; + border-color: $sub_color; + color: #111; + font-weight: bold; + } + + .title { + color: #111; + } + } + + .number-wrap { + padding: 0 4px; + margin-bottom: .5rem; + } + + .number { + border: 2px solid #ddd; + width: 30px; + height: 30px; + background-color: #fff; + border-radius: 50%; + display: flex; + align-items: center; // flex-start | center + justify-content: center; // flex-end | center | space-between + } + + .title { + color: #848484; + } + } +} + +.quantity-wrap { + width: 80px; + height: 37px; + display: flex; + align-content: space-between; + border: 1px solid #ced4da; + input { + border: none; + padding: 0.5rem; + } + + > .right { + display: flex; + flex-direction: column; + // align-items: center; + border-left: 1px solid #ced4da; + + i { + flex: 1; + width: 20px; + height: 17px; + text-align: center; + cursor: pointer; + background-color: #fff; + &:last-of-type { + border-top: 1px solid #ced4da; + } + + &:hover { + background-color: #eee; + } + } + } +} + +.fixed-top-line-fixed { + position: fixed; + top: 0; +} + +.account-sides-info { + .head { + display: flex; + flex-direction: column; + align-items: center; + padding: 2rem 1rem; + background-color: #fff; + border-radius: 0.375rem 0.375rem 0 0; + + .portrait { + width: 100px; + height: 100px; + border-radius: 50%; + box-shadow: 0px 3px 6px 0px rgba(0, 0, 0, 0.14); + border: 2px solid #FFFFFF; + overflow: hidden; + margin-bottom: 1rem; + } + + .account-name { + font-weight: bold; + font-size: 1rem; + margin-bottom: 0.4rem; + } + + .account-email { + color: #666666; + } + } + + .account-links { + > a { + color: #4B566B; + border: none; + padding: 0.8rem 1rem; + border-bottom: 1px solid #EEEEEE; + transition: all .2s ease-in-out; + text-decoration: none !important; + + &:last-of-type { + border-bottom: none; + } + + &:hover { + background-color: #E9ECEF; + } + + &.active { + background-color: #E9ECEF; + color: #4B566B; + } + + .badge { + color: #fff; + } + } + } +} + +.text-size-min { + font-size: 12px; +} + +.text-truncate-2 { + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; +} + +.breadcrumb { + @media (max-width: 768px) { + padding-top: .8rem; + padding-bottom: .8rem; + } +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/header.scss b/resources/beike/shop/fashion/css/header.scss new file mode 100644 index 00000000..45421244 --- /dev/null +++ b/resources/beike/shop/fashion/css/header.scss @@ -0,0 +1,457 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-09-03 22:32:29 + * @LastEditTime 2022-09-16 20:55:12 + */ + +header { + background: #fff; + @media (min-width: 992px) { + // border-bottom: 1px solid #dee0ea; + // box-shadow: 0px 1px 10px rgba(0, 0, 0, .04); + } + // body:not(.page-home) & { + // box-shadow: 0 6px 12px 0 rgba(0, 0, 0, .04); + // } + + body.page-home & { + @media (min-width: 992px) { + box-shadow: 0 2px 3px rgba(33,37,41,.07); + // border-bottom: 1px solid #dee0ea; + margin-bottom: 26px; + } + + .menu-box { + border-top: 1px solid #e5e5e5; + background-color: #fff; + } + } + + .top-wrap { + // padding: 10px; + height: 38px; + // max-height: 50px; + background: #F7F8FA; + // background: #161616; + display: flex; + // border-bottom: 1px solid #dee0ea; + } + + .top-wrap, .header-content { + .dropdown { + &:hover { + background-color: #fff; + + .dropdown-menu { + margin: 0; + display: block; + box-shadow: 0 0 15px rgb(0, 0, 0, .1); + border: none; + + &.dropdown-menu-end { + right: 0; + } + } + } + } + } + + .search-wrap { + flex: 1; + margin: 0 20px; + + .input-group { + background-color: #f1f1f3; + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; + } + + input { + border-color: #f1f1f3 !important; + padding-top: 0; + padding-bottom: 0; + background-color: transparent !important; + box-shadow: none !important; + } + + button { + background-color: $sub_color; + font-weight: bold; + } + } + + .menu-box { + // border-top: 1px solid #e5e5e5; + background-color: #f4f4f4; + } + + .menu-wrap { + .container { + max-width: 1140px; + } + + @media (min-width: 1200px) { + .navbar-nav { + .dropdown { + + &.position-static >.dropdown-menu { + // top: 100%; + } + + &:hover { + .dropdown-menu { + opacity: 1; + visibility: visible; + transform: translate(-50%); + } + } + + >.dropdown-menu { + left: 50%; + transform: translate(-50%, 0.5rem); + transition: all .2s ease-in-out; + transition-property: visibility,transform,opacity; + visibility: hidden; + opacity: 0; + display: block; + transform-origin: top center; + } + } + } + } + + > .navbar-nav { + > .nav-item { + background-color: transparent; + margin: 0 10px; + + > .nav-link { + font-size: 14px; + padding: .9rem; + position: relative; + + .badge { + position: absolute; + bottom: 80%; + padding: 2px 4px; + font-weight: 400; + left: calc(50% - 0px); + margin-left: 0px; + + &::before { + content: ""; + position: absolute; + top: 100%; + left: 10px; + border: 4px solid; + border-color: inherit; + border-right-color: #0000!important; + border-bottom-color: #0000!important; + border-right-width: 7px; + border-left-width: 0; + } + } + } + } + + .group-name { + font-size: 15px; + } + + .ul-children { + a { + color: #7a7a7a; + &:hover { + color: $primary; + } + } + } + } + } + + .header-content { + position: relative; + padding: 20px 0; + background-color: #fff; + + > .container { + display: flex; + align-items: center; + justify-content: space-between; + } + + .logo { + width: 25%; + + img { + max-width: 200px; + max-height: 50px; + } + } + + .right-btn { + width: 25%; + + .nav-link { + color: #333; + padding-right: 0.7rem; + padding-left: 0.7rem; + position: relative; + i { + font-size: 1.4rem; + } + } + + .cart-badge-quantity { + position: absolute; + left: 25px; + top: -3px; + text-align: center; + font-size: 12px; + display: none; + width: 23px; + zoom: 0.9; + height: 23px; + line-height: 24px; + background-color: $sub_color; + color: #222; + border-radius: 50%; + } + } + } + + .header-mobile { + .mobile-content { + padding: 10px; + display: flex; + align-items: center; + justify-content: space-between; + + > div { + width: 33.33%; + + &.center a { + display: flex; + align-items: center; + justify-content: center; + height: 30px; + + img { + max-height: 100%; + } + } + } + + .left { + display: flex; + align-items: center; + + > div { + cursor: pointer; + > i { + font-size: 1.5rem; + line-height: 1; + } + } + + .mobile-open-search { + margin-left: 10px; + + > i { + font-size: 1.1rem; + } + } + } + + .right { + display: flex; + justify-content: flex-end; + + .nav-link { + padding: 0; + i { + font-size: 1.2rem; + } + + // margin-left: 14px; + } + } + } + } +} + +#offcanvas-search-top { + height: 100px; + justify-content: center; + + .offcanvas-header { + width: 100%; + } + + input { + &:focus { + box-shadow: none; + } + } + + .btn-close { + padding: 1rem; + opacity: 1; + + &:hover { + background-color: #eee; + } + } +} + +#offcanvas-right-cart { + .select-wrap { + margin-right: 10px; + cursor: pointer; + + i { + font-size: 20px; + color: #aaa; + &.bi-check-circle-fill { + color: $primary; + } + } + } + + .offcanvas-right-products { + .product-list { + padding: 1rem 0; + border-top: 1px solid #eee; + + .left { + width: 80px; + flex: 0 0 80px; + height: 80px; + border: 1px solid #eee; + margin-right: 10px; + + img { + max-height: 90px; + } + } + + .right { + .price { + input { + margin-left: 10px; + width: 50px; + height: 24px; + } + } + + .offcanvas-products-delete { + cursor: pointer; + color: #999; + } + } + } + } + + .offcanvas-footer { + .to-checkout { + &:hover { + background-color: $sub_color; + border-color: $sub_color; + color: #111; + } + } + } +} + +#offcanvas-mobile-menu { + width: 80%; + + .offcanvas-header { + padding: 10px 20px 10px 10px; + } + + .mobile-menu-wrap { + padding: 0; + + #menu-accordion { + border-top: 1px solid #e5e5e5; + + .accordion-item { + border-bottom: 1px solid #e5e5e5; + + .nav-item-text { + display: flex; + align-items: center; + justify-content: space-between; + + > a { + flex: 1; + height: 44px; + padding-left: 10px; + display: flex; + align-items: center; + + .badge { + position: relative; + margin-left: 13px; + // padding: 2px 4px; + font-weight: 400; + + &::before { + content: ""; + position: absolute; + top: 50%; + right: 100%; + transform: translate(0, -50%); + border: 4px solid; + border-right-width: 7px; + border: 5px solid #0000; + border-right-color: inherit; + } + } + } + + > span { + width: 44px; + height: 44px; + display: flex; + border-left: 1px solid #e5e5e5; + align-items: center; + justify-content: center; + &:active { + background-color: #eee; + } + + &[aria-expanded="true"] { + background-color: #eee; + i { + transform:rotate(180deg); + } + } + } + } + + .accordion-collapse { + padding: 10px; + border-top: 1px solid #e5e5e5; + + .children-group { + .group-name { + margin-bottom: 4px; + } + + .nav { + a { + color: #777; + } + } + } + } + } + } + } +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/home.scss b/resources/beike/shop/fashion/css/home.scss new file mode 100644 index 00000000..3438f068 --- /dev/null +++ b/resources/beike/shop/fashion/css/home.scss @@ -0,0 +1,105 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-02 19:19:52 + * @LastEditTime 2022-09-16 20:55:22 + */ + +.module-item { + position: relative; + + &.module-item-design { + &:hover { + .module-edit { + display: flex; + } + + &:after { + display: block; + } + } + } + + &:after { + content: ''; + display: none; + position: absolute; + left: 2px; + right: 2px; + top: 2px; + bottom: 2px; + z-index: 9; + outline: 2px solid $primary; + } + + .module-edit { + // position: relative; + position: absolute; + top: -28px; + left: 0; + width: 100%; + z-index: 9; + // display: flex; + align-items: center; // flex-start | center + justify-content: center; // flex-end | center | space-between + display: none; + + .edit-wrap { + background-color: $primary; + color: #fff; + display: flex; + align-items: center; + + > div { + height: 28px; + line-height: 30px; + padding: 0 10px; + font-size: 16px; + cursor: pointer; + position: relative; + + &:first-of-type { + &:after { + content: ""; + position: absolute; + top: 0; + border: solid #0000; + border-right: solid $primary; + border-width: 28px 10px 0 0; + right: 100%; + } + &:hover { + &:after { + border-right-color: darken($primary, 6%); + } + } + } + + &:last-of-type { + &:after { + content: ""; + position: absolute; + top: 0; + border: solid #0000; + border-left: solid $primary; + border-width: 28px 0 0 10px; + left: 100%; + } + &:hover { + &:after { + border-left-color: darken($primary, 6%); + } + } + } + + &:hover { + background-color: darken($primary, 6%); + } + } + // flex-wrap: wrap; + } + } +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/iconfont.scss b/resources/beike/shop/fashion/css/iconfont.scss new file mode 100644 index 00000000..002d8679 --- /dev/null +++ b/resources/beike/shop/fashion/css/iconfont.scss @@ -0,0 +1,23 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-02 19:19:52 + * @LastEditTime 2022-09-16 20:55:31 + */ + +@font-face {font-family: 'iconfont'; + src: url('/fonts/iconfont/iconfont.woff') format('woff'), /* chrome、firefox */ + url('/fonts/iconfont/iconfont.ttf') format('truetype'); /* chrome、firefox、opera、Safari, Android, iOS 4.2+*/ +} + +.iconfont { + font-family: "iconfont"; + font-size: 1rem; + font-style:normal; + -webkit-font-smoothing: antialiased; + -webkit-text-stroke-width: 0.2px; + -moz-osx-font-smoothing: grayscale; +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/login.scss b/resources/beike/shop/fashion/css/login.scss new file mode 100644 index 00000000..4d0a5e65 --- /dev/null +++ b/resources/beike/shop/fashion/css/login.scss @@ -0,0 +1,125 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-09-09 19:16:39 + * @LastEditTime 2022-09-16 20:55:37 + */ + +body.page-login, body.page-forgotten { + @media (max-width: 768px) { + overflow-x: hidden; + } + + .el-form-item__error--inline { + margin-left: 0; + } + + .forgotten-link { + display: block; + margin-top: -14px; + } + + .btn-dark { + &:hover { + background-color: $sub_color; + border-color: $sub_color; + color: #111; + } + } + + .el-form-item { + margin-bottom: 18px; + + .el-form-item__content { + line-height: 1; + } + } + + .login-item-header { + background: #f8f9fa; + border-bottom: none; + padding: 1.2rem 1.5rem; + h6 { + font-weight: bold; + font-size: 1rem; + } + } + + .vr-wrap { + margin: 0 80px; + } + + .login-wrap { + @media (min-width: 768px) { + display: flex; + justify-content: center; + } + + .card { + border: none; + @media (min-width: 768px) { + width: 340px; + } + } + } + + .form-iframe { + margin-bottom: 30px; + + @media (max-width: 768px) { + padding: 0; + margin-top: 0 !important; + } + + .vr-wrap { + margin: 0 60px; + } + + .card { + border: none; + } + } + + .social-wrap { + .title { + position: relative; + text-align: center; + color: #999; + + &::before { + content: ""; + position: absolute; + width: 100%; + left: 0; + height: 1px; + top: 47%; + background: #e5e5e5; + } + + span { + background-color: #fff; + position: relative; + padding: 0 5px; + z-index: 1; + } + } + + .btn { + // border-color: #ccc !important; + color: #666; + + img { + // transform: translateY(-50%); + position: absolute; + left: 40px; + } + + &:hover { + background-color: #eee; + } + } + } +} diff --git a/resources/beike/shop/fashion/css/module/module-brand.scss b/resources/beike/shop/fashion/css/module/module-brand.scss new file mode 100644 index 00000000..874d7741 --- /dev/null +++ b/resources/beike/shop/fashion/css/module/module-brand.scss @@ -0,0 +1,33 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-04 17:52:22 + * @LastEditTime 2022-09-16 20:57:25 + */ + +.module-brand { + .brand-item { + display: flex; + align-items: center; // flex-start | center + justify-content: center; // flex-end | center | space-between + box-shadow: 0 6px 18px rgba(0, 0, 0, .07); + margin-bottom: 10px; + height: 120px; + border-radius: 10px; + overflow: hidden; + border: 1px solid transparent; + transition: all 0.3s ease-in-out; + + &:hover { + box-shadow: 0 6px 18px rgba(0, 0, 0, .1); + border: 1px solid $sub_color; + } + + > img { + max-height: 100%; + } + } +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/module/module-icon.scss b/resources/beike/shop/fashion/css/module/module-icon.scss new file mode 100644 index 00000000..61974930 --- /dev/null +++ b/resources/beike/shop/fashion/css/module/module-icon.scss @@ -0,0 +1,27 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-04 17:52:22 + * @LastEditTime 2022-09-16 20:57:25 + */ + +.module-icon-wrap { + .image-item { + flex: 0 0 40px; + height: 40px; + @media (max-width: 768px) { + flex: 0 0 30px; + height: 30px; + } + } + + .icon-container { + @media (min-width: 992px) { + border-bottom: 1px solid #e5e5e5; + padding-bottom: 30px; + } + } +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/module/module-image-plus.scss b/resources/beike/shop/fashion/css/module/module-image-plus.scss new file mode 100644 index 00000000..67713cba --- /dev/null +++ b/resources/beike/shop/fashion/css/module/module-image-plus.scss @@ -0,0 +1,50 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-02 19:19:52 + * @LastEditTime 2022-09-16 20:57:29 + */ + +.module-image-plus { + .container-fluid { + padding-right: 0; + padding-left: 0; + } + + a { + overflow: hidden; + display: block; + + img { + transition: .3s ease-in-out; + } + + &:hover { + img { + transform: rotate(6deg) scale(1.3); + } + } + } + + .module-image-plus-top { + display: flex; + + .right { + margin-left: 20px; + } + } + + .module-image-plus-bottom { + margin-top: 20px; + } +} + +.module-image-banner { + .container-fluid { + padding-right: 0; + padding-left: 0; + } +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/module/module-tab-product.scss b/resources/beike/shop/fashion/css/module/module-tab-product.scss new file mode 100644 index 00000000..6e77a8f5 --- /dev/null +++ b/resources/beike/shop/fashion/css/module/module-tab-product.scss @@ -0,0 +1,27 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-02 19:19:52 + * @LastEditTime 2022-09-16 20:57:33 + */ + +.module-tab-product { + .module-title { + margin-bottom: 1rem; + } + + .nav { + .nav-link { + color: #6c757d; + font-size: .9rem; + + &.active { + color: #111; + font-weight: bold; + } + } + } +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/module/slideshow.scss b/resources/beike/shop/fashion/css/module/slideshow.scss new file mode 100644 index 00000000..bdbb3647 --- /dev/null +++ b/resources/beike/shop/fashion/css/module/slideshow.scss @@ -0,0 +1,86 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-02 19:19:52 + * @LastEditTime 2022-09-16 20:57:36 + */ + +.swiper.module-slideshow { + --swiper-theme-color: #78e723;/* 设置Swiper风格 */ + --swiper-navigation-color: #222;/* 单独设置按钮颜色 */ + --swiper-navigation-size: 30px;/* 设置按钮大小 */ + + .swiper-button-prev,.swiper-button-next { + display: none; + } + + &:hover { + .swiper-button-prev,.swiper-button-next { + display: block; + } + } + + &.rounded-4 { + @media (max-width: 992px) { + border-radius: 0 !important; + } + } +} + +.slideshow-container { + @media (min-width: 992px) { + padding: 0 5.3rem; + } + @media (min-width: 1460px) { + padding: 0 6.3rem; + } +} + + +.swiper-style-plus { + position: relative; + + .swiper-button-prev,.swiper-button-next { + width: 34px; + height: 37px; + color: #999; + @media (max-width: 768px) { + display: none; + } + + &:hover { + color: #111; + } + + &:after { + font-size: 26px; + } + + } + + .swiper-button-prev { + left: -40px; + } + + .swiper-button-next { + right: -40px; + } + + .swiper-pagination { + bottom: -10px !important; + + .swiper-pagination-bullet-active { + background: $sub_color; + } + + &.rectangle { + span { + border-radius: 0; + height: 3px; + } + } + } +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/news.scss b/resources/beike/shop/fashion/css/news.scss new file mode 100644 index 00000000..abe6b066 --- /dev/null +++ b/resources/beike/shop/fashion/css/news.scss @@ -0,0 +1,13 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-02 19:19:52 + * @LastEditTime 2022-09-16 20:47:45 + */ + +.page-categories-home, .page-pages { + background-color: #f6f6f6; +} diff --git a/resources/beike/shop/fashion/css/order-success.scss b/resources/beike/shop/fashion/css/order-success.scss new file mode 100644 index 00000000..0c55676c --- /dev/null +++ b/resources/beike/shop/fashion/css/order-success.scss @@ -0,0 +1,77 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-09-01 16:23:34 + * @LastEditTime 2022-09-16 20:55:44 + */ + +body.page-order-success, body.page-payment { + .order-wrap { + .card-body { + &.main-body { + padding: 3rem; + padding-left: 7rem; + + @media (max-width:768px) { + padding: 1rem; + } + } + + .order-top { + padding-bottom: 2.7rem; + margin-bottom: 2.7rem; + display: flex; + justify-content: center; // flex-end | center | space-between + + .left { + margin-top: -6px; + + @media (max-width:768px) { + display: none; + } + + i { + color: #4caf50; + font-size: 80px; + line-height: 1; + } + } + + .right { + flex: 1; + margin-left: 2rem; + + @media (max-width:768px) { + margin: 0; + } + .table { + margin-bottom: 0; + } + + .order-title { + margin-bottom: 1.2rem; + font-weight: 400; + } + + .order-info { + padding: .7rem; + background-color: #fffaf0; + border: 1px solid #ffe1ad; + } + } + } + + .order-bottom { + margin-left: calc(2rem + 80px); + line-height: 2; + + @media (max-width:768px) { + margin: 0; + } + } + } + } +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/page-account-address.scss b/resources/beike/shop/fashion/css/page-account-address.scss new file mode 100644 index 00000000..78f558eb --- /dev/null +++ b/resources/beike/shop/fashion/css/page-account-address.scss @@ -0,0 +1,107 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-09-01 16:23:34 + * @LastEditTime 2022-09-16 20:55:54 + */ + +body.page-account-address, body.page-checkout { + .addresses-wrap { + .item { + position: relative; + padding: 14px 14px 14px 18px; + margin-bottom: 1.3rem; + border: 1px solid #e8e8e8; + height: 130px; + cursor: pointer; + + @media (max-width: 768px) { + padding: 10px 10px 10px 14px; + } + + &:hover { + border-color: #222; + } + + &.active { + border-left: none; + + &:before { + content: ''; + position: absolute; + top: -1px; + left: 0; + width: 4px; + height: calc(100% + 2px); + background-color: #4991F4; + background: repeating-linear-gradient(-45deg, #d60404 0, #d60404 10px, #fff 10px, #fff 20px, #4991F4 20px, #4991F4 30px, #fff 30px, #fff 40px); + } + } + + .name-wrap { + margin-bottom: .6rem; + line-height: 1; + + .name { + font-size: 1rem; + font-weight: bold; + } + + .phone { + font-size: .8rem; + color: #666; + } + } + + .zipcode { + margin-bottom: .3rem; + } + + .address-info { + // margin-bottom: .9rem; + height: 32px; + line-height: 1.3; + } + + .address-bottom { + display: flex; + align-items: center; // flex-start | center + justify-content: space-between; // flex-end | center | space-between + // flex-wrap: wrap; + a { + color: #2d68a8; + } + } + } + } + + .mobileWidth { + width: 600px; + @media (max-width: 768px) { + width: 95%; + } + } + + .dialog-address { + display: block; + + >div { + @media (max-width:768px) { + width: 100%; + // margin-bottom: 10px; + // &:nth-last-child(){ + // margin-bottom: 0; + // } + } + } + + @media (min-width:768px) { + display: flex; + } + } + + +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/page-account-order.scss b/resources/beike/shop/fashion/css/page-account-order.scss new file mode 100644 index 00000000..4ea25b5e --- /dev/null +++ b/resources/beike/shop/fashion/css/page-account-order.scss @@ -0,0 +1,113 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-09-01 16:23:34 + * @LastEditTime 2022-09-16 20:55:58 + */ + +body.page-account-order-list { + background-color: #F7F8FA; + + .order-wrap { + .table { + .sep-row { + height: 20px; + + td { + border: 0; + } + } + + .head-tr { + background: #f5f5f5; + td { + border-bottom-color: #f5f5f5; + } + } + + thead { + background: #f5f5f5; + th { + font-weight: 500; + border: 0; + } + } + + tbody { + td { + border: 1px solid #e5e5e5; + } + } + + .product-info { + display: flex; + align-items: center; + + .img { + flex: 0 0 60px; + margin-right: 10px; + + @media (max-width:768px) { + // display: none; + flex: 0 0 50px; + width: 50px + } + } + + .name { + @media (max-width:768px) { + a { + overflow: hidden; + text-overflow:ellipsis; + display: -webkit-box; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + font-size: 12px; + } + } + } + } + } + } +} + +body.page-account-order-info { + background-color: #F7F8FA; + + .order-head { + + } + + .product-list { + display: flex; + align-items: center; // flex-start | center + justify-content: space-between; + border-bottom: 1px solid #eee; + padding-bottom: 1rem; + margin-bottom: 1rem; + // justify-content: space-between; // flex-end | center | space-between + + .left { + flex: 0 0 80px; + margin-right: 10px; + } + + .right { + color: #767676; + font-size: .9375rem; + + .name { + // font-weight: bold; + margin-bottom: .4rem; + color: #1a1a1a; + } + } + } + + .nowrap { + white-space: nowrap; + } +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/page-brands.scss b/resources/beike/shop/fashion/css/page-brands.scss new file mode 100644 index 00000000..cf5c9d3f --- /dev/null +++ b/resources/beike/shop/fashion/css/page-brands.scss @@ -0,0 +1,67 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-15 15:43:12 + * @LastEditTime 2022-09-16 20:56:17 + */ + +body.page-brands { + .brand-item { + display: flex; + align-items: center; // flex-start | center + justify-content: center; // flex-end | center | space-between + box-shadow: 0 6px 18px rgba(0, 0, 0, .07); + margin-bottom: 10px; + height: 133px; + width: 100%; + + >img { + max-height: 100%; + } + } + + .brand-list { + li { + list-style: none; + + a { + color: #242424; + text-decoration: none; + } + } + } + + .curser-list { + cursor: pointer; + + @media (max-width: 768px) { + display: block; + + li { + display: inline-block; + margin-bottom: 6px; + + & + .list-group-item { + border-left: 1px solid #e4e4e4; + } + } + } + + >li>a { + color: #242424; + transition: all .3s; + text-decoration: none; + + &:hover { + background-color: #eee; + } + + &:active { + background-color: #aaa; + } + } + } +} diff --git a/resources/beike/shop/fashion/css/page-categories.scss b/resources/beike/shop/fashion/css/page-categories.scss new file mode 100644 index 00000000..292a412c --- /dev/null +++ b/resources/beike/shop/fashion/css/page-categories.scss @@ -0,0 +1,230 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-02 19:19:52 + * @LastEditTime 2022-09-16 20:56:05 + */ + +body.page-categories { + .col-lg-9.right-column { + @media (min-width: 992px) { + width: 78%; + } + } + + .col-lg-3.left-column { + @media (min-width: 992px) { + width: 22%; + } + + .card:not(:last-of-type) { + border-bottom: 1px solid #E6E6E6; + margin-bottom: 1.4rem; + padding-bottom: 1.4rem; + } + } + + .children-wrap { + @media (max-width: 992px) { + display: none; + } + + a { + color: #333; + margin-right: 4px; + + &:hover { + color: $primary; + } + } + } + + .style-wrap { + label { + cursor: pointer; + &.active { + svg { + fill: $primary; + } + } + + svg { + fill: #999; + } + } + } + + .filter-value-wrap { + .list-group { + display: block; + + .list-group-item { + display: inline-block; + cursor: pointer; + font-size: 12px; + background: #f3f3f3; + border: none; + color: #666; + padding: 4px 12px; + &.delete-all { + background: $primary; + color: #fff; + } + + &:hover { + background: $primary; + color: #fff; + } + } + } + } + + .product-tool { + @media (min-width: 992px) { + .order-select { + min-width: 170px; + } + } + } + + .ui-widget-content { + border-radius: 0; + position: relative; + border: none; + margin-right: 4px; + margin-bottom: 0; + background: none; + cursor: pointer; + + .ui-widget-header { + background: $primary; + position: absolute; + top: 50%; + border-radius: 0; + height: 3px; + margin-top: -3px; + } + + .slider-bg { + background: #e3e3e3; + position: absolute; + top: 50%; + width: 100%; + height: 3px; + margin-top: -3px; + } + + .ui-slider-handle { + width: 4px; + margin-left: 0; + cursor: ew-resize; + border: none !important; + border-radius: 0; + background: $primary; + outline: none !important; + } + } +} + +.sidebar-widget { + list-style: none; + padding: 0 0 1.4rem; + border-bottom: 1px solid #E6E6E6; + + > li { + padding-top: 0.3rem; + padding-bottom: 0.3rem; + // border-bottom: 1px solid #e9ecef; + + &:last-of-type { + border-bottom: none; + } + + .category-href { + display: inline-block; + position: relative; + color: #333; + overflow: hidden; + text-overflow:ellipsis; + white-space: nowrap; + width: calc(100% - 36px); + } + + &.active { + > a { + font-weight: bold; + color: $primary; + } + } + } + + ul { + padding-left: 12px; + list-style: none; + + li { + line-height: 1; + margin: 16px 0; + + ul { + margin-top: 8px; + padding-left: 14px; + } + + &:last-of-type { + border: none; + } + + &.active { + > a { + color: $primary; + font-weight: bold; + } + } + + a { + color: #868e96; + &:first-of-type { + width: calc(100% - 26px); + overflow: hidden; + text-overflow:ellipsis; + white-space: nowrap; + display: inline-block; + } + + &:hover { + color: $primary; + } + } + } + } + + .toggle-icon { + float: right; + font-size: 16px; + padding: 0 6px; + i { + color: #aaa; + } + + &.collapsed { + transform: rotate(-180deg); + } + } +} + +.filter-box { + .attribute-item { + .form-check-label { + cursor: pointer; + &:hover { + .form-check-input { + border-color: $primary; + } + } + } + } +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/page-checkout.scss b/resources/beike/shop/fashion/css/page-checkout.scss new file mode 100644 index 00000000..52acbe7e --- /dev/null +++ b/resources/beike/shop/fashion/css/page-checkout.scss @@ -0,0 +1,220 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-09-01 16:23:34 + * @LastEditTime 2022-09-16 20:56:12 + */ + +body.page-checkout { + background-color: #f6f8fa; + + .radio-line-wrap { + .radio-line-item { + display: flex; + align-items: center; + cursor: pointer; + padding: 20px; + border: 1px solid transparent; + + &:not(:last-of-type) { + margin-bottom: 1rem; + } + + &:hover { + border-color: #e5e5e5; + } + + &:active { + background-color: #f7f7f7; + } + + &.active { + border-color: #e5e5e5; + + .radio { + border-color: $sub_color; + + &:before { + content: ''; + position: absolute; + width: 12px; + height: 12px; + background-color: $sub_color; + left: 2px; + top: 2px; + border-radius: 50%; + } + } + } + + .radio { + position: relative; + width: 18px; + flex: 0 0 18px; + height: 18px; + border: 1px solid #d4d4d4; + border-radius: 50%; + } + + .left { + margin-right: 10px; + display: flex; + align-items: center; + flex: 0 0 88px; + + img { + width: 60px; + margin-left: 10px; + } + } + + .right { + .title { + font-weight: bold; + margin-bottom: 10px; + } + } + } + } + + .addresses-wrap { + .item { + &.address-right { + @media (min-width: 768px) { + padding: 0 2.6rem; + } + + @media (max-width: 768px) { + padding: 0; + } + + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + cursor: auto; + border: none; + } + } + } +} + +body.page-checkout, body.page-bk-stripe { + .checkout-black { + margin-bottom: 2.6rem; + } + + .checkout-title { + border-bottom: 1px solid #f1f1f1; + padding-bottom: 16px; + margin-bottom: 16px; + position: relative; + display: flex; + align-items: center; // flex-start | center + justify-content: space-between; // flex-end | center | space-between + + .btn { + margin-bottom: -10px; + &.icon { + font-size: 1rem; + } + } + } + + .total-wrap { + .card-body { + @media (min-width: 768px) { + padding: 0; + } + } + + .card-header { + background-color: #fff; + margin-bottom: 1rem; + border-bottom: 1px solid #E6E6E6; + + @media (min-width: 768px) { + padding: 0 0 .8rem; + } + + h5 { + font-weight: bold; + } + + span { + line-height: 24px; + min-width: 24px; + color: #fff; + text-align: center; + } + } + + .products-wrap { + border-bottom: 1px solid #E6E6E6; + margin-bottom: 1.3rem; + padding-bottom: .3rem; + max-height: 380px; + overflow-y: auto; + + .item { + display: flex; + align-items: center; // flex-start | center + justify-content: space-between; // flex-end | center | space-between + margin-bottom: .8rem; + + .image { + display: flex; + align-items: center; // flex-start | center + padding-right: 4px; + + img { + width: 40px; + margin-right: 10px; + } + + .quantity { + margin-left: 3px; + color: #7a7a7a; + } + } + + .price { + color: #7a7a7a; + } + } + } + + .totals { + padding-left: 0; + list-style: none; + padding-bottom: .3rem; + margin-bottom: 1.5rem; + border-bottom: 1px solid #E6E6E6; + + > li { + display: flex; + align-items: center; // flex-start | center + justify-content: space-between; // flex-end | center | space-between + margin-bottom: 14px; + &:last-of-type { + font-weight: bold; + + > span { + &:last-of-type { + color: #dc3545; + } + } + } + + > span { + &:first-of-type { + font-size: .8rem; + } + } + } + } + } +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/page-list.scss b/resources/beike/shop/fashion/css/page-list.scss new file mode 100644 index 00000000..8538ecd9 --- /dev/null +++ b/resources/beike/shop/fashion/css/page-list.scss @@ -0,0 +1,50 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-15 15:43:12 + * @LastEditTime 2022-09-16 20:56:17 + */ + +body.page-list { + .brand-item { + display: flex; + align-items: center; // flex-start | center + justify-content: center; // flex-end | center | space-between + box-shadow: 0 6px 18px rgba(0, 0, 0, .07); + margin-bottom: 10px; + height: 133px; + width: 100%; + + >img { + max-height: 100%; + } + } + + li { + list-style: none; + + a{ + color: #242424; + text-decoration: none; + } + } + + .curser { + cursor: pointer; + + >li>a { + display: block; + color: #242424; + transition: all .5s; + margin: 0 auto; + + &:hover { + text-decoration: none; + background-color: #eee; + } + } + } +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/page-product.scss b/resources/beike/shop/fashion/css/page-product.scss new file mode 100644 index 00000000..63e4060a --- /dev/null +++ b/resources/beike/shop/fashion/css/page-product.scss @@ -0,0 +1,282 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-24 17:24:33 + * @LastEditTime 2022-09-16 20:56:21 + */ + +body.page-product { + @media (max-width: 768px) { + .breadcrumb { + display: none + } + } + + #product-description { + img { + max-width: 100%; + height: auto; + } + } + + .product-image { + #swiper { + height: 250px; + @media (min-width: 480px) { + height: 400px; + } + @media (min-width: 768px) { + height: 500px; + } + + &:hover { + .swiper-pager > div { + @media (max-width: 768px) { + display: none; + } + background-color: rgba(255, 255, 255, 0.548); + opacity: 1; + &:hover { + background-color: rgba(255, 255, 255); + } + } + } + } + + #swiper-mobile { + .swiper-pagination { + --swiper-theme-color: #ff6600;/* 设置Swiper风格 */ + --swiper-navigation-color: #ff6600;/* 单独设置按钮颜色 */ + --swiper-navigation-size: 30px;/* 设置按钮大小 */ + } + } + + .left { + margin-right: 1rem; + + .swiper > div > div{ + border: 1px solid #eee; + margin-bottom: 10px; + width: 80px; + // height: 80px !important; + padding: 2px; + cursor: pointer; + + &.active, &:hover { + border: 1px solid #3a3a3a; + } + } + + .swiper-pager { + > div { + opacity: 0; + background-color: rgba(255, 255, 255, 0); + transition: all .5s; + } + .swiper-button-next { + border: 0; + top: 485px; + left: 50%; + + height: 55px; + width: 30px; + transform-origin: center; + transform: rotate(90deg) translate(0,25%); + + &:hover,&.active { + border: 0 !important; + } + + &::after { + font-size: 18px; + } + } + + .swiper-button-prev{ + border: 0; + top: 8px; + left: 50%; + height: 55px; + width: 30px; + transform-origin: center; + transform: rotate(90deg) translate(0,25%); + + &:hover,&.active { + border: 0 !important; + } + + &::after { + font-size: 18px; + } + } + } + } + + .right { + border: 1px solid #eee; + } + } + + .stock-and-sku { + > div { + margin-bottom: 10px; + font-size: 14px; + + .title { + width: 80px; + } + } + } + + .variables-wrap { + .variable-info { + > div { + display: inline-flex; + align-items: center; + justify-content: center; + margin-right: 0.5rem; + margin-bottom: 0.5rem; + border: 1px solid #ddd; + margin-left: 0; + min-width: 3rem; + padding: 0.5rem; + cursor: pointer; + text-align: center; + font-weight: bold; + flex-direction: column; + border-radius: 4px; + transition: all .1s ease-in-out; + &:hover, &.selected { + border-color: #222; + } + + > span.image { + width: 50px; + margin-top: -0.5rem; + margin-left: -0.5rem; + margin-right: -0.5rem; + margin-bottom: 6px; + } + + &:not(.selected) { + &.disabled { + border: 1px dashed #bfbfbf; + color: #999; + font-weight: initial; + } + } + } + } + } + + .peoduct-info { + .product-name { + font-size: 1.7rem; + line-height: 1.3; + font-weight: 600; + + @media (max-width: 768px) { + font-size: 1.2rem; + } + } + + .rating-wrap { + margin-bottom: 2rem; + + .rating { + margin-right: .5rem; + i { + color: $primary; + } + } + } + + .price-wrap { + margin-bottom: 2.4rem; + } + + .quantity-btns { + @media (min-width: 768px) { + display: flex; + } + + .add-cart { + background-color: #12283f; + color: #fff; + + &:hover { + background-color: $sub_color; + color: #222; + } + } + + .btn-buy-now { + border: 1px solid #e2e2e2; + &:hover { + border: 1px solid #12283f; + } + } + + .quantity-input { + max-width: 5rem; + text-align: center; + } + + .quantity-wrap { + height: 43px; + @media (max-width: 768px) { + margin-bottom: 10px; + } + } + } + } + + .product-description { + .nav-tabs { + .nav-link { + border: none; + + &.active { + position: relative; + background-color: transparent; + color: $primary; + + &:before { + border-top: 1px solid $primary; + content: ""; + position: absolute; + bottom: 0; + left: 0; + right: 0; + } + } + } + } + } + + .attribute-table { + tr { + td:first-of-type { + @media (min-width: 768px) { + width: 20%; + } + + @media (max-width: 768px) { + width: 40%; + } + } + } + } + + .relations-wrap { + .swiper-pagination { + .swiper-pagination-bullet { + height: 3px; + border-radius: 0; + } + } + } +} \ No newline at end of file diff --git a/resources/beike/shop/fashion/css/product-style.scss b/resources/beike/shop/fashion/css/product-style.scss new file mode 100644 index 00000000..a968bfa5 --- /dev/null +++ b/resources/beike/shop/fashion/css/product-style.scss @@ -0,0 +1,148 @@ +@charset "UTF-8"; + +/** + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-09-03 22:32:29 + * @LastEditTime 2022-09-16 20:56:27 + */ + +.product-list-wrap { + .col-12:not(:last-of-type) { + .product-wrap { + border-bottom: 1px solid #E6E6E6; + margin-bottom: 1.4rem; + padding-bottom: 1.4rem; + + &:hover { + box-shadow: none; + .image { + box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15); + } + + .button-wrap { + bottom: 10px; + opacity: 1; + + button { + &:hover { + background-color: $sub_color; + border-color: $sub_color; + color: #111 !important; + i { + color: #111; + } + } + } + } + } + } + } +} + +.product-wrap { + margin-bottom: 20px; + text-align: center; + padding-bottom: .7rem; + transition: all 0.3s ease-in-out; + background-color: #fff; + border: 1px solid #E9ECEF; + border-radius: 0.375rem; + overflow: hidden; + + &.list { + display: flex; + padding-bottom: 0; + + .image { + width: 200px; + margin-bottom: 0; + transition: all 0.3s ease-in-out; + } + + .product-name { + height: auto; + margin-bottom: 20px; + } + + .product-bottom-info { + padding-top: 10px; + padding-left: 20px; + flex: 1; + text-align: left; + + .product-name { + font-size: 14px; + } + } + } + + .image { + margin-bottom: 10px; + position: relative; + + .image-old { + opacity: 1; + transition: all ease-out .4s; + } + + .button-wrap { + width: 100%; + position: absolute; + z-index: 40; + bottom: -30px; + opacity: 0; + transition: all .3s ease-out; + display: flex; + justify-content: center; + + button { + &:hover { + background-color: $sub_color; + border-color: $sub_color; + i { + color: #111; + font-weight: bold; + } + } + } + } + } + + @media (min-width: 768px) { + &:hover { + box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15); + + .button-wrap { + bottom: 10px; + opacity: 1; + } + } + } + + .product-name { + height: 39px; + margin-bottom: 10px; + overflow: hidden; + text-overflow: ellipsis; + display: -webkit-box; + color: #3d3d3d; + -webkit-box-orient: vertical; + -webkit-line-clamp: 2; + } + + .product-price { + .price-new { + color: $price; + font-size: 1.1rem; + font-weight: bold; + } + + .price-old { + color: #aaa; + margin-left: 4px; + text-decoration: line-through; + } + } +} diff --git a/resources/beike/shop/fashion/js/app.js b/resources/beike/shop/fashion/js/app.js new file mode 100644 index 00000000..39650e99 --- /dev/null +++ b/resources/beike/shop/fashion/js/app.js @@ -0,0 +1,52 @@ +/* + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-29 17:32:51 + * @LastEditTime 2023-02-02 11:06:01 + */ + +import http from "../../../../js/http"; +import common from "./common"; +window.bk = common; +window.$http = http; + +const token = document.querySelector('meta[name="csrf-token"]').content; +const base = document.querySelector('base').href; + +import './product'; +import './header' +import './bootstrap-validation' + +$(document).ready(function ($) { + $(document).on('click', '.offcanvas-products-delete', function () { + const id = $(this).data('id'); + + $http.delete(`carts/${id}`).then((res) => { + $(this).parents('.product-list').remove(); + if (!res.data.quantity) { + $('.cart-badge-quantity').hide(); + } else { + $('.cart-badge-quantity').show().html(res.data.quantity > 99 ? '99+' : res.data.quantity); + } + + $('.offcanvas-right-cart-count').text(res.data.quantity); + $('.offcanvas-right-cart-amount').text(res.data.amount_format); + }) + }) + + if ($(window).width() > 992 && $('.x-fixed-top').length) { + $('.x-fixed-top').scrollToFixed({ + zIndex: 999, + limit: function () { + var limit = $('footer').offset().top - 84 - $('.x-fixed-top').outerHeight(true); + return limit + } + }); + } + + const tooltipTriggerList = document.querySelectorAll('[data-bs-toggle="tooltip"]') + const tooltipList = [...tooltipTriggerList].map(tooltipTriggerEl => new bootstrap.Tooltip(tooltipTriggerEl)) +}); + +bk.getCarts(); // 页面初始加载购物车数据 \ No newline at end of file diff --git a/resources/beike/shop/fashion/js/bootstrap-validation.js b/resources/beike/shop/fashion/js/bootstrap-validation.js new file mode 100644 index 00000000..00578140 --- /dev/null +++ b/resources/beike/shop/fashion/js/bootstrap-validation.js @@ -0,0 +1,28 @@ +/* + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-17 17:39:14 + * @LastEditTime 2022-09-16 20:56:42 + */ + +// Example starter JavaScript for disabling form submissions if there are invalid fields +$(function () { + var forms = document.querySelectorAll(".needs-validation"); + + // Loop over them and prevent submission + Array.prototype.slice.call(forms).forEach(function (form) { + form.addEventListener( + "submit", + function (event) { + if (!form.checkValidity()) { + event.preventDefault(); + event.stopPropagation(); + } + + form.classList.add("was-validated"); + }, + false + ); + }); +}); diff --git a/resources/beike/shop/fashion/js/common.js b/resources/beike/shop/fashion/js/common.js new file mode 100644 index 00000000..56ee3cae --- /dev/null +++ b/resources/beike/shop/fashion/js/common.js @@ -0,0 +1,128 @@ +/* + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-09-09 19:16:39 + * @LastEditTime 2023-03-12 21:16:10 + */ + +export default { + /** + * @description: 获取购物车数据 + * @return {*} + */ + getCarts() { + $(document).ready(() => { + $http.get('carts/mini', null, {hload: true}).then((res) => { + $('#offcanvas-right-cart').html(res.data.html); + $('.cart-badge-quantity').show().html(res.data.quantity_all > 99 ? '99+' : res.data.quantity_all); + }) + }) + }, + + /** + * @description: 加入购物车 + * @param {*} sku_id 商品id + * @param {*} quantity 商品数量 + * @param {*} isBuyNow 是否立即购买 + * @return {*} 返回Promise + */ + addCart({sku_id, quantity = 1, isBuyNow = false}, event) { + if (!config.isLogin && !config.guestCheckout) { + this.openLogin() + return; + } + + const $btn = $(event); + const btnHtml = $btn.html(); + const loadHtml = ''; + $btn.html(loadHtml).prop('disabled', true); + $(document).find('.tooltip').remove(); + + $http.post('/carts', {sku_id, quantity, buy_now: isBuyNow}, {hload: !!event}).then((res) => { + this.getCarts(); + layer.msg(res.message) + if (isBuyNow) { + location.href = 'checkout' + } + }).finally(() => {$btn.html(btnHtml).prop('disabled', false)}) + }, + + addWishlist(id, event) { + if (!config.isLogin) { + this.openLogin() + return; + } + + const $btn = $(event); + const btnHtml = $btn.html(); + const isWishlist = $btn.attr('data-in-wishlist') * 1; + const loadHtml = ''; + $(document).find('.tooltip').remove(); + + if (isWishlist) { + $btn.html(loadHtml).prop('disabled', true); + $http.delete(`account/wishlist/${isWishlist}`, null, {hload: true}).then((res) => { + layer.msg(res.message) + $btn.attr('data-in-wishlist', '0'); + }).finally((e) => { + $btn.html(btnHtml).prop('disabled', false).find('i.bi').prop('class', 'bi bi-heart') + }) + } else { + $btn.html(loadHtml).prop('disabled', true); + $http.post('account/wishlist', {product_id: id}, {hload: true}).then((res) => { + layer.msg(res.message) + $btn.attr('data-in-wishlist', res.data.id); + $btn.html(btnHtml).prop('disabled', false).find('i.bi').prop('class', 'bi bi-heart-fill') + }).catch((e) => { + $btn.html(btnHtml).prop('disabled', false) + }) + } + }, + + openLogin() { + layer.open({ + type: 2, + title: '', + shadeClose: true, + scrollbar: false, + area: ['900px', '600px'], + skin: 'login-pop-box', + content: 'login?iframe=true' //iframe的url + }); + }, + + getQueryString(name, defaultValue) { + const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)'); + const r = window.location.search.substr(1).match(reg); + if (r != null) { + return decodeURIComponent(r[2]); + } + + return typeof(defaultValue) != 'undefined' ? defaultValue : ''; + }, + + removeURLParameters(url, ...parameters) { + const parsed = new URL(url); + parameters.forEach(e => parsed.searchParams.delete(e)) + return parsed.toString() + }, + + updateQueryStringParameter(uri, key, value) { + var re = new RegExp("([?&])" + key + "=.*?(&|$)", "i"); + var separator = uri.indexOf('?') !== -1 ? "&" : "?"; + if (uri.match(re)) { + return uri.replace(re, '$1' + key + "=" + value + '$2'); + } else { + return uri + separator + key + "=" + value; + } + }, + + openWin(url, name = '', iWidth = 700, iHeight = 500) { + var iTop = (window.screen.height - 30 - iHeight) / 2; + var iLeft = (window.screen.width - 10 - iWidth) / 2; + window.open(url, name, 'height=' + iHeight + ',innerHeight=' + iHeight + + ',width=' + iWidth + ',innerWidth=' + iWidth + ',top=' + iTop + ',left=' + iLeft + + ',toolbar=no,menubar=no,scrollbars=auto,resizeable=no,location=no,status=no'); + }, +} diff --git a/resources/beike/shop/fashion/js/header.js b/resources/beike/shop/fashion/js/header.js new file mode 100644 index 00000000..7a560684 --- /dev/null +++ b/resources/beike/shop/fashion/js/header.js @@ -0,0 +1,99 @@ +/* + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-16 18:47:18 + * @LastEditTime 2023-03-13 18:18:09 + */ + +$(function () { + // 搜索弹出层交互 + // $("#offcanvas-search-top input").focus(); + $(".search-wrap input").keydown(function (e) { + if (e.keyCode == 13) { + if ($(this).val() != "") { + location.href = "products/search?keyword=" + $(this).val(); + } + } + }); + + $(".search-wrap .btn").click(function () { + if ($(".search-wrap input").val() != "") { + location.href = "products/search?keyword=" + $(".search-wrap input").val(); + } + }); + + // const myOffcanvas = document.getElementById("offcanvas-search-top"); + // if (myOffcanvas) { + // myOffcanvas.addEventListener("shown.bs.offcanvas", function () { + // }); + // } + + // 响应式下弹窗菜单交互 + $(document).on("click", ".mobile-open-menu", function () { + const offcanvasMobileMenu = new bootstrap.Offcanvas('#offcanvas-mobile-menu') + offcanvasMobileMenu.show() + }); + + // 右侧购物车弹出层内交互 + $(document).on("click", "#offcanvas-right-cart .select-wrap", function () { + const [unchecked, checked] = ['bi bi-circle', 'bi bi-check-circle-fill']; + const productListAll = $('#offcanvas-right-cart .product-list').length; + + const isChecked = $(this).children('i').hasClass(unchecked); + $(this).children('i').prop('class', isChecked ? checked : unchecked); + + const checkedProduct = $('#offcanvas-right-cart .offcanvas-right-products i.bi-check-circle-fill').length; + + if ($(this).hasClass('all-select')) { + const isAll = $('.all-select i').hasClass(checked); + $('#offcanvas-right-cart .product-list').find('.select-wrap i').prop('class', isAll ? checked : unchecked) + } else { + $('.offcanvas-footer .all-select i').prop('class', productListAll == checkedProduct ? checked : unchecked); + } + + const checkedIds = $('#offcanvas-right-cart .product-list').map(function() { + return $(this).find('i.bi-check-circle-fill').data('id'); + }).get(); + + if (!checkedIds.length) { + $('#offcanvas-right-cart .to-checkout').addClass('disabled') + } else { + $('#offcanvas-right-cart .to-checkout').removeClass('disabled') + } + + $http.post(`/carts/select`, {cart_ids: checkedIds}, {hload: true}).then((res) => { + updateMiniCartData(res); + }) + }); + + // 右侧购物车弹出层内交互 + $(document).on("change", "#offcanvas-right-cart .price input", function () { + const [id, sku_id, quantity] = [$(this).data('id'), $(this).data('sku'), $(this).val() * 1]; + if ($(this).val() === '') $(this).val(1); + + $http.put(`/carts/${id}`, {quantity: quantity, sku_id}, {hload: true}).then((res) => { + updateMiniCartData(res); + }) + }) + + function updateMiniCartData(res) { + $('.offcanvas-right-cart-count').text(res.data.quantity); + $('.offcanvas-right-cart-amount').text(res.data.amount_format); + } + + // 导航菜单防止小屏幕下(非手机端),配置列数过多 显示错误 + $('.menu-wrap > ul > li').each(function(index, el) { + if ($(el).children('.dropdown-menu').length) { + const offsetLeft = $(el).children('.dropdown-menu').offset().left; + const width = $(el).children('.dropdown-menu').width(); + const windowWidth = $(window).width(); + + if (offsetLeft < 0) { + $(el).addClass('position-static') + .children('.dropdown-menu') + .css({'left': (windowWidth - width) / 2, 'transform': 'translate(0, 0.5rem)'}); + } + } + }); +}); diff --git a/resources/beike/shop/fashion/js/product.js b/resources/beike/shop/fashion/js/product.js new file mode 100644 index 00000000..e03c3110 --- /dev/null +++ b/resources/beike/shop/fashion/js/product.js @@ -0,0 +1,31 @@ +/* + * @copyright 2022 beikeshop.com - All Rights Reserved. + * @link https://beikeshop.com + * @Author pu shuo + * @Date 2022-08-19 18:21:32 + * @LastEditTime 2022-09-16 20:57:00 + */ + +$(document).on('click', '.quantity-wrap .right i', function(event) { + event.stopPropagation(); + event.preventDefault(); + + let input = $(this).parent().siblings('input') + + if ($(this).hasClass('bi-chevron-up')) { + input.val(input.val() * 1 + 1) + input.get(0).dispatchEvent(new Event('input')); + return; + } + + if (input.val() * 1 <= input.attr('minimum') * 1) { + return; + } + + if (input.val () * 1 <= 1) { + return; + } + + input.val(input.val() * 1 - 1) + input.get(0).dispatchEvent(new Event('input')); +}); \ No newline at end of file diff --git a/resources/lang/de/admin/plugin.php b/resources/lang/de/admin/plugin.php index 7e6d5cd0..5e8a8db2 100644 --- a/resources/lang/de/admin/plugin.php +++ b/resources/lang/de/admin/plugin.php @@ -17,6 +17,7 @@ return [ 'plugins_update_status' => 'Aktualisierungsstatus', 'plugins_install' => 'installieren', 'plugins_uninstall' => 'deinstallieren', + 'to_enable' => 'To Enable', 'plugin_list' => 'Plugin-Liste', 'plugin_code' => 'plugin-code', diff --git a/resources/lang/de/admin/theme.php b/resources/lang/de/admin/theme.php new file mode 100644 index 00000000..be73ef69 --- /dev/null +++ b/resources/lang/de/admin/theme.php @@ -0,0 +1,18 @@ + + * @created 2022-08-02 19:03:19 + * @modified 2022-08-02 19:03:19 + */ + +return [ + 'page_title' => 'Meine Vorlage', + 'theme_name' => 'Standarddesign', + 'enabled_text' => 'derzeit aktiviert', + 'theme_pop_checkbox' => 'Vorlagendaten importieren', + 'theme_pop_text' => 'Wenn Sie die Daten der Importvorlage überprüfen, werden möglicherweise das vorhandene konfigurierte Seitenlayout, die Klassifizierung, das Produkt und andere Daten überschrieben. Bitte erstellen Sie zuerst eine Sicherungskopie! ', +]; diff --git a/resources/lang/de/common.php b/resources/lang/de/common.php index d4887969..16b6d854 100644 --- a/resources/lang/de/common.php +++ b/resources/lang/de/common.php @@ -75,6 +75,8 @@ return [ 'text_list' => 'Liste', 'text_form' => 'von', 'text_to' => 'an', + 'batch_setting' => 'Stapeleinstellung', + 'show_all' => 'Alle anzeigen', 'id' => 'ID', 'created_at' => 'Erstellungszeit', diff --git a/resources/lang/en/admin/common.php b/resources/lang/en/admin/common.php index 9ba54b3c..6e18d5a0 100644 --- a/resources/lang/en/admin/common.php +++ b/resources/lang/en/admin/common.php @@ -51,6 +51,7 @@ return [ 'access_frontend' => 'Frontend', // sidebar + 'theme_index' => 'Theme Setting', 'attribute_groups_index' => 'Attribute Group', 'attributes_index' => 'Attributes', 'settings_index' => 'Setting', diff --git a/resources/lang/en/admin/plugin.php b/resources/lang/en/admin/plugin.php index e29e82bc..85ad63f7 100644 --- a/resources/lang/en/admin/plugin.php +++ b/resources/lang/en/admin/plugin.php @@ -17,6 +17,7 @@ return [ 'plugins_update_status' => 'Update Status', 'plugins_install' => 'Install', 'plugins_uninstall' => 'Uninstall', + 'to_enable' => 'To Enable', 'plugin_list' => 'Plugin List', 'plugin_code' => 'Code', diff --git a/resources/lang/en/admin/theme.php b/resources/lang/en/admin/theme.php new file mode 100644 index 00000000..aa92721c --- /dev/null +++ b/resources/lang/en/admin/theme.php @@ -0,0 +1,18 @@ + + * @created 2022-08-02 19:03:19 + * @modified 2022-08-02 19:03:19 + */ + +return [ + 'page_title' => 'My template', + 'theme_name' => 'default theme', + 'enabled_text' => 'Currently enabled', + 'theme_pop_checkbox' => 'import template data', + 'theme_pop_text' => 'If you check the import template data, it may overwrite the existing configured page layout, classification, product and other data, please make a backup first! ', +]; diff --git a/resources/lang/en/common.php b/resources/lang/en/common.php index e7c20c33..08b045b5 100644 --- a/resources/lang/en/common.php +++ b/resources/lang/en/common.php @@ -77,6 +77,7 @@ return [ 'text_form' => 'From', 'text_to' => 'To', 'batch_setting' => 'Batch setting', + 'show_all' => 'View all', 'id' => 'ID', 'created_at' => 'Created At', diff --git a/resources/lang/es/admin/plugin.php b/resources/lang/es/admin/plugin.php index fb1fd529..d8c4cba0 100644 --- a/resources/lang/es/admin/plugin.php +++ b/resources/lang/es/admin/plugin.php @@ -17,6 +17,7 @@ return [ 'plugins_update_status' => 'estado de actualización', 'plugins_install' => 'Instalar', 'plugins_uninstall' => 'desinstalar', + 'to_enable' => 'To Enable', 'plugin_list' => 'Lista de complementos', 'plugin_code' => 'código de complemento', diff --git a/resources/lang/es/admin/theme.php b/resources/lang/es/admin/theme.php new file mode 100644 index 00000000..fb1c9fdd --- /dev/null +++ b/resources/lang/es/admin/theme.php @@ -0,0 +1,18 @@ + + * @created 2022-08-02 19:03:19 + * @modified 2022-08-02 19:03:19 + */ + +return [ + 'page_title' => 'Mi plantilla', + 'theme_name' => 'tema predeterminado', + 'enabled_text' => 'actualmente habilitado', + 'theme_pop_checkbox' => 'importar datos de plantilla', + 'theme_pop_text' => 'Si verifica los datos de la plantilla de importación, es posible que se sobrescriba el diseño de página, la clasificación, el producto y otros datos configurados existentes. ¡Haga una copia de seguridad primero! ', +]; diff --git a/resources/lang/es/common.php b/resources/lang/es/common.php index b13a87e4..c6f71a0d 100644 --- a/resources/lang/es/common.php +++ b/resources/lang/es/common.php @@ -75,6 +75,8 @@ return [ 'text_list' => 'lista', 'text_form' => 'desde', 'texto_a' => 'a', + 'batch_setting' => 'configuración de lote', + 'show_all' => 'Ver todo', 'id' => 'ID', 'created_at' => 'tiempo de creación', diff --git a/resources/lang/fr/admin/plugin.php b/resources/lang/fr/admin/plugin.php index bd9a876a..bca21c0e 100644 --- a/resources/lang/fr/admin/plugin.php +++ b/resources/lang/fr/admin/plugin.php @@ -17,6 +17,7 @@ return [ 'plugins_update_status' => 'état de mise à jour', 'plugins_install' => 'installer', 'plugins_uninstall' => 'désinstaller', + 'to_enable' => 'To Enable', 'plugin_list' => 'liste des plugins', 'plugin_code' => 'code du plugin', diff --git a/resources/lang/fr/admin/theme.php b/resources/lang/fr/admin/theme.php new file mode 100644 index 00000000..084a3a2f --- /dev/null +++ b/resources/lang/fr/admin/theme.php @@ -0,0 +1,18 @@ + + * @created 2022-08-02 19:03:19 + * @modified 2022-08-02 19:03:19 + */ + +return [ + 'page_title' => 'Mon modèle', + 'theme_name' => 'thème par défaut', + 'enabled_text' => 'actuellement activé', + 'theme_pop_checkbox' => 'importer les données du modèle', + 'theme_pop_text' => 'Si vous vérifiez les données du modèle d\'importation, il se peut qu\'elles écrasent la mise en page, la classification, le produit et d\'autres données configurées existantes, veuillez d\'abord faire une sauvegarde ! ', +]; diff --git a/resources/lang/fr/common.php b/resources/lang/fr/common.php index 781aafce..dced7018 100644 --- a/resources/lang/fr/common.php +++ b/resources/lang/fr/common.php @@ -75,6 +75,8 @@ return [ 'text_list' => 'liste', 'text_form' => 'de', 'text_to' => 'à', + 'batch_setting' => 'paramétrage par lots', + 'show_all' => 'Voir tout', 'id' => 'ID', 'created_at' => 'temps de creation', diff --git a/resources/lang/it/admin/plugin.php b/resources/lang/it/admin/plugin.php index 368be125..1f777287 100644 --- a/resources/lang/it/admin/plugin.php +++ b/resources/lang/it/admin/plugin.php @@ -17,6 +17,7 @@ return [ 'plugins_update_status' => 'stato di aggiornamento', 'plugins_install' => 'installa', 'plugins_uninstall' => 'disinstalla', + 'to_enable' => 'To Enable', 'plugin_list' => 'elenco dei plugin', 'plugin_code' => 'codice plugin', diff --git a/resources/lang/it/admin/theme.php b/resources/lang/it/admin/theme.php new file mode 100644 index 00000000..d8522655 --- /dev/null +++ b/resources/lang/it/admin/theme.php @@ -0,0 +1,18 @@ + + * @created 2022-08-02 19:03:19 + * @modified 2022-08-02 19:03:19 + */ + +return [ + 'page_title' => 'Il mio modello', + 'theme_name' => 'tema predefinito', + 'enabled_text' => 'attualmente abilitato', + 'theme_pop_checkbox' => 'importa i dati del modello', + 'theme_pop_text' => 'Se controlli i dati del modello di importazione, potrebbe sovrascrivere il layout di pagina configurato esistente, la classificazione, il prodotto e altri dati, per favore fai prima un backup! ', +]; diff --git a/resources/lang/it/common.php b/resources/lang/it/common.php index c1371a7c..16df7b5b 100644 --- a/resources/lang/it/common.php +++ b/resources/lang/it/common.php @@ -75,6 +75,8 @@ return [ 'text_list' => 'lista', 'text_form' => 'da', 'text_to' => 'a', + 'batch_setting' => 'impostazione batch', + 'show_all' => 'Visualizza tutto', 'id' => 'ID', 'created_at' => 'tempo di creazione', diff --git a/resources/lang/ja/admin/plugin.php b/resources/lang/ja/admin/plugin.php index 68548ca9..48bd19aa 100644 --- a/resources/lang/ja/admin/plugin.php +++ b/resources/lang/ja/admin/plugin.php @@ -17,6 +17,7 @@ return [ 'plugins_update_status' => '更新ステータス', 'plugins_install' => 'インストール', 'plugins_uninstall' => 'アンインストール', + 'to_enable' => '有効にする', 'plugin_list' => 'プラグイン リスト', 'plugin_code' => 'プラグインコード', diff --git a/resources/lang/ja/admin/theme.php b/resources/lang/ja/admin/theme.php new file mode 100644 index 00000000..b7c0b80e --- /dev/null +++ b/resources/lang/ja/admin/theme.php @@ -0,0 +1,18 @@ + + * @created 2022-08-02 19:03:19 + * @modified 2022-08-02 19:03:19 + */ + +return [ + 'page_title' => '私のテンプレート', + 'theme_name' => 'デフォルトのテーマ', + 'enabled_text' => '現在有効', + 'theme_pop_checkbox' => 'テンプレート データのインポート', + 'theme_pop_text' => 'インポート テンプレート データを確認すると、既存の設定済みのページ レイアウト、分類、製品、およびその他のデータが上書きされる可能性があります。最初にバックアップを作成してください! ', +]; diff --git a/resources/lang/ja/common.php b/resources/lang/ja/common.php index 93e1fa8f..f4036c71 100644 --- a/resources/lang/ja/common.php +++ b/resources/lang/ja/common.php @@ -75,6 +75,8 @@ return [ 'text_list' => 'リスト', 'text_form' => 'From', 'text_to' => 'To', + 'batch_setting' => 'バッチ設定', + 'show_all' => 'すべて表示', 'id' => 'ID', 'created_at' => '作成時間', diff --git a/resources/lang/ru/admin/plugin.php b/resources/lang/ru/admin/plugin.php index b9a14a99..669361fe 100644 --- a/resources/lang/ru/admin/plugin.php +++ b/resources/lang/ru/admin/plugin.php @@ -17,6 +17,7 @@ return [ 'plugins_update_status' => 'статус обновления', 'plugins_install' => 'Установить', 'plugins_uninstall' => 'удалить', + 'to_enable' => 'включить', 'plugin_list' => 'Список плагинов', 'plugin_code' => 'код плагина', diff --git a/resources/lang/ru/admin/theme.php b/resources/lang/ru/admin/theme.php new file mode 100644 index 00000000..10ae399a --- /dev/null +++ b/resources/lang/ru/admin/theme.php @@ -0,0 +1,18 @@ + + * @created 2022-08-02 19:03:19 + * @modified 2022-08-02 19:03:19 + */ + +return [ + 'page_title' => 'Мой шаблон', + 'theme_name' => 'тема по умолчанию', + 'enabled_text' => 'включено в данный момент', + 'theme_pop_checkbox' => 'импортировать данные шаблона', + 'theme_pop_text' => 'Если вы проверите данные шаблона импорта, они могут перезаписать существующий настроенный макет страницы, классификацию, продукт и другие данные, сначала сделайте резервную копию! ', +]; diff --git a/resources/lang/ru/common.php b/resources/lang/ru/common.php index f96e971a..97383f77 100644 --- a/resources/lang/ru/common.php +++ b/resources/lang/ru/common.php @@ -75,6 +75,8 @@ return [ 'text_list' => 'список', 'text_form' => 'от', 'text_to' => 'кому', + 'batch_setting' => 'пакетная настройка', + 'show_all' => 'Просмотреть все', 'id' => 'ID', 'created_at' => 'время создания', diff --git a/resources/lang/zh_cn/admin/common.php b/resources/lang/zh_cn/admin/common.php index 3989a861..92f2b3a6 100644 --- a/resources/lang/zh_cn/admin/common.php +++ b/resources/lang/zh_cn/admin/common.php @@ -51,6 +51,7 @@ return [ 'access_frontend' => '访问前台', // sidebar + 'theme_index' => '模板设置', 'attribute_groups_index' => '属性组', 'attributes_index' => '属性', 'settings_index' => '系统设置', diff --git a/resources/lang/zh_cn/admin/plugin.php b/resources/lang/zh_cn/admin/plugin.php index 0f088a93..e3ce6b7a 100644 --- a/resources/lang/zh_cn/admin/plugin.php +++ b/resources/lang/zh_cn/admin/plugin.php @@ -17,6 +17,7 @@ return [ 'plugins_update_status' => '更新状态', 'plugins_install' => '安装', 'plugins_uninstall' => '卸载', + 'to_enable' => '去启用', 'plugin_list' => '插件设置', 'plugin_code' => '插件代码', diff --git a/resources/lang/zh_cn/admin/theme.php b/resources/lang/zh_cn/admin/theme.php new file mode 100644 index 00000000..92025e03 --- /dev/null +++ b/resources/lang/zh_cn/admin/theme.php @@ -0,0 +1,18 @@ + + * @created 2022-08-02 19:03:19 + * @modified 2022-08-02 19:03:19 + */ + +return [ + 'page_title' => '我的模板', + 'theme_name' => '默认主题', + 'enabled_text' => '当前启用', + 'theme_pop_checkbox' => '导入模板数据', + 'theme_pop_text' => '如果勾选导入模板数据,可能会覆盖现有配置的页面布局、分类、商品等数据,请先做好备份!', +]; diff --git a/resources/lang/zh_cn/common.php b/resources/lang/zh_cn/common.php index 3a7f062d..b6711bfd 100644 --- a/resources/lang/zh_cn/common.php +++ b/resources/lang/zh_cn/common.php @@ -76,6 +76,7 @@ return [ 'text_form' => '从', 'text_to' => '到', 'batch_setting' => '批量设置', + 'show_all' => '查看所有', 'id' => 'ID', 'created_at' => '创建时间', diff --git a/resources/lang/zh_hk/admin/common.php b/resources/lang/zh_hk/admin/common.php index 30676fd2..838a13ce 100644 --- a/resources/lang/zh_hk/admin/common.php +++ b/resources/lang/zh_hk/admin/common.php @@ -51,6 +51,7 @@ return [ 'access_frontend' => '訪問前台', // sidebar + 'theme_index' => '模板設置', 'attribute_groups_index' => '屬性組', 'attributes_index' => '屬性', 'settings_index' => '系統設置', diff --git a/resources/lang/zh_hk/admin/plugin.php b/resources/lang/zh_hk/admin/plugin.php index 06343b5c..7637e261 100644 --- a/resources/lang/zh_hk/admin/plugin.php +++ b/resources/lang/zh_hk/admin/plugin.php @@ -17,6 +17,7 @@ return [ 'plugins_update_status' => '更新狀態', 'plugins_install' => '安裝', 'plugins_uninstall' => '卸載', + 'to_enable' => '去啟用', 'plugin_list' => '插件設置', 'plugin_code' => '插件代碼', diff --git a/resources/lang/zh_hk/admin/theme.php b/resources/lang/zh_hk/admin/theme.php new file mode 100644 index 00000000..749c9dfa --- /dev/null +++ b/resources/lang/zh_hk/admin/theme.php @@ -0,0 +1,18 @@ + + * @created 2022-08-02 19:03:19 + * @modified 2022-08-02 19:03:19 + */ + +return [ + 'page_title' => '我的模板', + 'theme_name' => '默認主題', + 'enabled_text' => '當前啟用', + 'theme_pop_checkbox' => '導入模板數據', + 'theme_pop_text' => '如果勾選導入模板數據,可能會覆蓋現有配置的頁面佈局、分類、商品等數據,請先做好備份! ', +]; diff --git a/resources/lang/zh_hk/common.php b/resources/lang/zh_hk/common.php index fbd1b881..0dda07e4 100644 --- a/resources/lang/zh_hk/common.php +++ b/resources/lang/zh_hk/common.php @@ -76,6 +76,7 @@ return [ 'text_form' => '從', 'text_to' => '到', 'batch_setting' => '批量設置', + 'show_all' => '查看所有', 'id' => 'ID', 'created_at' => '創建時間', diff --git a/themes/.gitignore b/themes/.gitignore new file mode 100644 index 00000000..f08ba4da --- /dev/null +++ b/themes/.gitignore @@ -0,0 +1,2 @@ +* +!default diff --git a/themes/black/home.blade.php b/themes/black/home.blade.php deleted file mode 100644 index d4df147a..00000000 --- a/themes/black/home.blade.php +++ /dev/null @@ -1,9 +0,0 @@ -@extends('layout.master') -@section('body-class', 'page-home') -@section('content') -
-
- 这里是 black 模板, 后台设置使用该模板后系统优先读取该模板, 删除该文件系统将调用 default 模板下对应文件 -
-
-@endsection diff --git a/themes/black/layout/footer.blade.php b/themes/black/layout/footer.blade.php deleted file mode 100644 index eafb71f0..00000000 --- a/themes/black/layout/footer.blade.php +++ /dev/null @@ -1,85 +0,0 @@ -
- @php - $locale = locale(); - @endphp - - @if ($footer_content['services']['enable']) -
-
-
- @foreach ($footer_content['services']['items'] as $item) -
-
-
-
-

{{ $item['title'][locale()] ?? '' }}

-

{{ $item['sub_title'][locale()] ?? '' }}

-
-
-
- @endforeach -
-
-
- @endif -
- -
- -
diff --git a/themes/black/layout/header.blade.php b/themes/black/layout/header.blade.php deleted file mode 100644 index 88a0f5c7..00000000 --- a/themes/black/layout/header.blade.php +++ /dev/null @@ -1,168 +0,0 @@ -
-
-
- - - @if (system_setting('base.telephone', '')) - - @endif -
-
- -
- -
- -
-
-
-
- -
-
- -
-
- - -
-
-
-
-
-
{{ __('common.menu') }}
- -
-
- @if (is_mobile()) - @include('shared.menu-mobile') - @endif -
-
- - @if (!equal_route('shop.carts.index')) -
- @endif - -
-
- - -
-
-
diff --git a/themes/black/shared/menu-pc.blade.php b/themes/black/shared/menu-pc.blade.php deleted file mode 100644 index 75a42347..00000000 --- a/themes/black/shared/menu-pc.blade.php +++ /dev/null @@ -1,61 +0,0 @@ - diff --git a/themes/default/design/brand.blade.php b/themes/default/design/brand.blade.php index 792d3108..17464469 100644 --- a/themes/default/design/brand.blade.php +++ b/themes/default/design/brand.blade.php @@ -17,5 +17,10 @@ @endforeach
+ @if ($content['brands']) + + @endif \ No newline at end of file diff --git a/themes/default/design/icons.blade.php b/themes/default/design/icons.blade.php index 0dfad8e4..6268548b 100644 --- a/themes/default/design/icons.blade.php +++ b/themes/default/design/icons.blade.php @@ -2,16 +2,23 @@ @include('design._partial._module_tool')
+ @if ($content['title'])
{{ $content['title'] }}
+ @endif
@foreach ($content['images'] as $image)
- - @endforeach diff --git a/themes/default/design/image200.blade.php b/themes/default/design/image200.blade.php new file mode 100644 index 00000000..3695e859 --- /dev/null +++ b/themes/default/design/image200.blade.php @@ -0,0 +1,13 @@ +
+ @include('design._partial._module_tool') + +
+
+
+ @foreach ($content['images'] as $item) +
+ @endforeach +
+
+
+
\ No newline at end of file diff --git a/themes/default/design/image300.blade.php b/themes/default/design/image300.blade.php new file mode 100644 index 00000000..ab3fd0ad --- /dev/null +++ b/themes/default/design/image300.blade.php @@ -0,0 +1,13 @@ +
+ @include('design._partial._module_tool') + +
+
+
+ @foreach ($content['images'] as $item) +
+ @endforeach +
+
+
+
\ No newline at end of file diff --git a/themes/default/layout/header.blade.php b/themes/default/layout/header.blade.php index 148083dc..0e8cd219 100644 --- a/themes/default/layout/header.blade.php +++ b/themes/default/layout/header.blade.php @@ -3,54 +3,58 @@
@hookwrapper('header.top.currency') -