diff --git a/README.md b/README.md index 31755ea..6e07ca8 100644 --- a/README.md +++ b/README.md @@ -1,16 +1,47 @@ -# antOS v1.2.1 -[![Build Status](https://ci.iohub.dev/buildStatus/icon?job=gitea-sync%2Fantos%2Fmaster)](https://ci.iohub.dev/job/gitea-sync/job/antos/job/master/) +# antOS v2.0.0 +[![Build Status](https://ci.iohub.dev/buildStatus/icon?job=gitea-sync%2Fantos%2F2.0.x)](https://ci.iohub.dev/buildStatus/icon?job=gitea-sync%2Fantos%2F2.0.x) [![FOSSA Status](https://app.fossa.io/api/projects/git%2Bgithub.com%2Flxsang%2Fantos.svg?type=shield)](https://app.fossa.io/projects/git%2Bgithub.com%2Flxsang%2Fantos?ref=badge_shield) -AntOS is a front-end system and API that implement the traditional desktop UI environment on the web browser. The front-end can connect to a remote server and acts as a virtual desktop environment (VDE). The original purpose of AntOS is to offer: (1) visual tools to access and control resource on remote server -and embedded linux environment; (2) front-end API for SaaS web-based applications. With its application API and the provided SDK, AntOS facilitates the -development and deployment of user specific applications inside de VDE environment. +> Warning: v2.0.0 is the experimental version of AntOS which is strongly redesigned to support mobile device. +> For a plus stable AntOS system, please use v.1.x for production. -![https://os.iohub.dev/VFS/shared/d4645d65b3e4bb348f1bde0d42598ad9b99367f5](https://os.iohub.dev/VFS/shared/d4645d65b3e4bb348f1bde0d42598ad9b99367f5) +AntOS is a web-based desktop platform that features a window manager, application APIs, GUI toolkit, file system abstractions, application store, and an API and SDK for in-browser application development. The purpose of this project is to enable users to easily set up a self-hosted, cloud-based working environment using only a web browser. The front-end can connect to a remote server and act as a virtual desktop environment (VDE). + +AntOS can be used in several application contexts, such as: +- Providing visual tools to access and control resources on remote servers and embedded Linux environments +- Providing and developing SaaS web-based applications +- Self-hosting a cloud-based working environment +- Creating a customized, user-friendly interface for managing and interacting with cloud-based resources and services +- Setting up a collaborative, online workspace for remote teams and distributed organizations +- Building a web-based operating system that can run on various devices, including laptops, tablets, and smartphones +- Creating a virtualized environment for testing and deploying web-based applications in a sandboxed environment +- Building a platform for creating and hosting web-based educational or training content +- Setting up a web-based development environment for prototyping and building web-based applications quickly and easily +- Etc, You name it! + +With the provided application API and SDK, AntOS facilitates the development and deployment of user-specific applications inside the VDE environment + +![https://github.com/lxsang/antos/raw/master/antos-shot.png](https://github.com/lxsang/antos/raw/master/antos-shot.png) Github: [https://github.com/lxsang/antos](https://github.com/lxsang/antos) +## Demo +A demo of the VDE is available at [https://app.iohub.dev/antos/](https://app.iohub.dev/antos/) using username: demo and password: demo. + +If one want to run AntOS VDE locally in their system, a docker image is available at: +[https://github.com/lxsang/antosaio](https://github.com/lxsang/antosaio) + +## AntOS applications (Available on the MarketPlace) +[https://github.com/lxsang/antosdk-apps](https://github.com/lxsang/antosdk-apps) + +## Documentation + +- Documentation: [https://doc.iohub.dev/antos](https://doc.iohub.dev/antos) +- API: [https://doc.iohub.dev/antos/api/](https://doc.iohub.dev/antos/api/) + ## Change logs +* v.2.0.0 + - Work In Progress: The UI is redesigned to support mobile device * V1.2.1 - 9b5da17 - App name now can differ from pkgname - b381294 - fix: fix icon display problem when application is installed, remove all related settings when an application is uinstalled @@ -82,23 +113,9 @@ Github: [https://github.com/lxsang/antos](https://github.com/lxsang/antos) - Introduce new JSON based syntax for SDK task/target definition * From this version, docker image of All-in-one AntOS system is available at: [https://hub.docker.com/r/xsangle/antosaio](https://hub.docker.com/r/xsangle/antosaio) -## Demo -A demo of the VDE is available at [https://app.iohub.dev/antos/](https://app.iohub.dev/antos/) using username: demo and password: demo. - -If one want to run AntOS VDE locally in their system, a docker image is available at: -[https://github.com/lxsang/antosaio](https://github.com/lxsang/antosaio) - -## AntOS applications (Available on the MarketPlace) -[https://github.com/lxsang/antosdk-apps](https://github.com/lxsang/antosdk-apps) - -## Documentation - -- Documentation: [https://doc.iohub.dev/antos](https://doc.iohub.dev/antos) -- API: [https://doc.iohub.dev/antos/api/](https://doc.iohub.dev/antos/api/) - ## Licence -Copyright 2017-2021 Xuan Sang LE +Copyright 2017-2022 Xuan Sang LE AnTOS is is licensed under the GNU General Public License v3.0, see the LICENCE file for more information diff --git a/antos-shot.png b/antos-shot.png new file mode 100644 index 0000000..ba4fb5d Binary files /dev/null and b/antos-shot.png differ diff --git a/d.ts/antos.d.ts b/d.ts/antos.d.ts index 5c66358..10d85ed 100644 --- a/d.ts/antos.d.ts +++ b/d.ts/antos.d.ts @@ -3685,6 +3685,13 @@ declare namespace OS { * @memberof TagEventType */ data: T; + /** + * Original event if any + * + * @type {any} + * @memberof TagEventType + */ + originalEvent?: any; } /** * Drag and Drop data type sent between mouse events @@ -6294,6 +6301,22 @@ declare namespace OS { * @memberof SystemPanelTag */ private _pending_task; + /** + * Flag indicate where the selected application shall be openned + * + * @private + * @type {boolean} + * @memberof SystemPanelTag + */ + private _prevent_open; + /** + * Store the current attached service + * + * @private + * @type {number[]} + * @memberof SystemPanelTag + */ + private _services; /** * Loading animation check timeout * @@ -6409,6 +6432,7 @@ declare namespace OS { * @memberof SystemPanelTag */ private animation_check; + private show_systray; /** * Mount the tag bind some basic event * @@ -10570,10 +10594,10 @@ declare namespace OS { /** * Text of the service shown in the system tray * - * @type {string} + * @type {string | FormattedString} * @memberof BaseService */ - text: string; + text: string | FormattedString; /** * Reference to the menu entry DOM element attached * to the service @@ -10591,13 +10615,6 @@ declare namespace OS { * @memberof BaseService */ private timer; - /** - * Reference to the system tray menu - * - * @type {HTMLElement} - * @memberof BaseService - */ - holder: HTMLElement; /** * Placeholder for service select callback * @@ -10642,14 +10659,6 @@ declare namespace OS { * @memberof BaseService */ meta(): API.PackageMetaType; - /** - * Attach the service to a menu element - * such as the system tray menu - * - * @param {HTMLElement} h - * @memberof BaseService - */ - attach(h: HTMLElement): void; /** * Set the callback that will be called periodically * after a period of time. diff --git a/release/antos-2.0.0.tar.gz b/release/antos-2.0.0.tar.gz index 329bd69..ee075b6 100644 Binary files a/release/antos-2.0.0.tar.gz and b/release/antos-2.0.0.tar.gz differ diff --git a/src/core/BaseService.ts b/src/core/BaseService.ts index 5efc224..6228894 100644 --- a/src/core/BaseService.ts +++ b/src/core/BaseService.ts @@ -55,10 +55,10 @@ namespace OS { /** * Text of the service shown in the system tray * - * @type {string} + * @type {string | FormattedString} * @memberof BaseService */ - text: string; + text: string | FormattedString; /** * Reference to the menu entry DOM element attached @@ -79,13 +79,6 @@ namespace OS { */ private timer: number; - /** - * Reference to the system tray menu - * - * @type {HTMLElement} - * @memberof BaseService - */ - holder: HTMLElement; /** * Placeholder for service select callback @@ -108,7 +101,6 @@ namespace OS { this.iconclass = "fa fa-paper-plane-o"; this.text = ""; this.timer = undefined; - this.holder = undefined; this.onmenuselect = (d) => { return this.awake(d); }; @@ -140,7 +132,9 @@ namespace OS { * @memberof BaseService */ update(): void { - (this.domel as GUI.tag.MenuEntryTag).data = this; + if(!this.domel) + return; + (this.domel as GUI.tag.ListViewItemTag).data = this; } /** @@ -153,17 +147,6 @@ namespace OS { return application[this.name].meta; } - /** - * Attach the service to a menu element - * such as the system tray menu - * - * @param {HTMLElement} h - * @memberof BaseService - */ - attach(h: HTMLElement): void { - this.holder = h; - } - /** * Set the callback that will be called periodically * after a period of time. diff --git a/src/core/settings.ts b/src/core/settings.ts index 33951b7..2e9ebae 100644 --- a/src/core/settings.ts +++ b/src/core/settings.ts @@ -535,7 +535,7 @@ namespace OS { setting.system.repositories = [ { text: "Github", - url: "https://raw.githubusercontent.com/lxsang/antosdk-apps/master/packages.json" + url: "https://raw.githubusercontent.com/lxsang/antosdk-apps/2.0.x/packages.json" } ] } diff --git a/src/core/tags/ListViewTag.ts b/src/core/tags/ListViewTag.ts index fa1a4af..d63d790 100644 --- a/src/core/tags/ListViewTag.ts +++ b/src/core/tags/ListViewTag.ts @@ -178,14 +178,16 @@ namespace OS { }); $(this.refs.item).on("click",(e) => { - this._onclick({ id: this.aid, data: this }); + this._onclick({ id: this.aid, data: this, originalEvent: e }); + e.stopPropagation(); }); $(this.refs.item).on("dblclick",(e) => { - this._ondbclick({ id: this.aid, data: this }); + this._ondbclick({ id: this.aid, data: this, originalEvent: e }); + e.stopPropagation(); }); $(this.refs.btcl).on("click",(e) => { - this._onclose({ id: this.aid, data: this }); + this._onclose({ id: this.aid, data: this, originalEvent: e }); e.preventDefault(); e.stopPropagation(); }); diff --git a/src/core/tags/SystemPanelTag.ts b/src/core/tags/SystemPanelTag.ts index 6c3315f..7368670 100644 --- a/src/core/tags/SystemPanelTag.ts +++ b/src/core/tags/SystemPanelTag.ts @@ -38,6 +38,23 @@ namespace OS { * @memberof SystemPanelTag */ private _pending_task: number[]; + + /** + * Flag indicate where the selected application shall be openned + * + * @private + * @type {boolean} + * @memberof SystemPanelTag + */ + private _prevent_open: boolean; + /** + * Store the current attached service + * + * @private + * @type {number[]} + * @memberof SystemPanelTag + */ + private _services: application.BaseService[]; /** * Loading animation check timeout @@ -77,6 +94,8 @@ namespace OS { this._pending_task = []; this._loading_toh = undefined; this.app_list= []; + this._services = []; + this._prevent_open = false; } /** @@ -105,8 +124,7 @@ namespace OS { * @memberof SystemPanelTag */ attachservice(s: application.BaseService) { - (this.refs.systray as MenuTag).unshift(s); - return s.attach(this.refs.systray); + this._services.unshift(s); } /** @@ -118,14 +136,16 @@ namespace OS { * @memberof SystemPanelTag */ private open(): void { + if(this._prevent_open) + { + this._prevent_open = false; + return; + } const applist = this.refs.applist as ListViewTag; const el = applist.selectedItem; if (!el) { return; } - if (!el.data || el.data.dataid === "header") { - return; - } this.toggle(false); // launch the app or open the file Ant.OS.GUI.openWith(el.data as AppArgumentsType); @@ -149,11 +169,13 @@ namespace OS { return this.toggle(false); case 37: + this._prevent_open = true; applist.selectPrev(); return e.preventDefault(); case 38: return e.preventDefault(); case 39: + this._prevent_open = true; applist.selectNext(); return e.preventDefault(); case 40: @@ -187,9 +209,8 @@ namespace OS { * @memberof SystemPanelTag */ detachservice(s: application.BaseService): void { - (this.refs.systray as MenuTag).delete( - s.domel as MenuEntryTag - ); + const index = this._services.indexOf(s); + this._services.splice(index, 1); } /** @@ -216,7 +237,7 @@ namespace OS { id: "sysdock" }, { - el: "afx-menu", + el: "afx-button", id: "systray", ref: "systray", class: "afx-panel-os-stray", @@ -394,6 +415,18 @@ namespace OS { clearTimeout(this._loading_toh); this._loading_toh = undefined; } + + private show_systray(): void + { + const ctxmenu = $("#contextmenu")[0] as tag.StackMenuTag; + ctxmenu.hide(); + ctxmenu.nodes = this._services; + $(ctxmenu) + .css("right", 0) + .css("bottom", $(this).height()); + ctxmenu.show(); + } + /** * Mount the tag bind some basic event * @@ -401,6 +434,7 @@ namespace OS { * @memberof SystemPanelTag */ protected mount(): void { + const systray = this.refs.systray as GUI.tag.ButtonTag; (this.refs.osmenu as ButtonTag).set(this._osmenu); this._cb = (e) => { if ( @@ -410,7 +444,6 @@ namespace OS { return this.toggle(false); } }; - $(this.refs.systray).css("z-index", 1000000); (this.refs.btscreen as ButtonTag).set({ iconclass: "fa fa-tv", onbtclick: (e) => { @@ -450,9 +483,9 @@ namespace OS { return this.search(e); }); - $(this.refs.applist).on("click", (e) => { + (this.refs.applist as ListViewTag).onlistselect = (_) => { return this.open(); - }); + }; Ant.OS.GUI.bindKey("CTRL- ", (e) => { if (this._view === false) { return this.toggle(true); @@ -479,19 +512,27 @@ namespace OS { $(this.refs.overlay) .hide(); this.refs.osmenu.contextmenuHandle = (e, m) => { }; - this.refs.systray.contextmenuHandle = (e, m) => { }; + systray.contextmenuHandle = (e, m) => { }; this.refs.panel.contextmenuHandle = (e, m) => { }; announcer.on("loading", (o: API.AnnouncementDataType) => { if(o.u_data != 0) { return; } - this._pending_task.push(o.id); - if(!$(this.refs.panel).hasClass("loading")) + if(this._pending_task.length == 0) + { $(this.refs.panel).addClass("loading"); + systray.iconclass = "fa-spin fa fa-cog"; + } + this._pending_task.push(o.id); + $(GUI.workspace).css("cursor", "wait"); }); - + systray.iconclass = "bi bi-sliders"; + systray.onbtclick = (e) => { + e.data.stopPropagation(); + this.show_systray(); + }; announcer.on("loaded", (o: API.AnnouncementDataType) => { const i = this._pending_task.indexOf(o.id); if (i >= 0) { @@ -499,6 +540,7 @@ namespace OS { } if (this._pending_task.length === 0) { // set time out + systray.iconclass = "bi bi-sliders"; if(!this._loading_toh) this._loading_toh = setTimeout(() => this.animation_check(),1000); } diff --git a/src/core/tags/tag.ts b/src/core/tags/tag.ts index b38204f..711ae20 100644 --- a/src/core/tags/tag.ts +++ b/src/core/tags/tag.ts @@ -217,6 +217,13 @@ namespace OS { * @memberof TagEventType */ data: T; + /** + * Original event if any + * + * @type {any} + * @memberof TagEventType + */ + originalEvent?: any; } /** diff --git a/src/packages/MarketPlace/scheme.html b/src/packages/MarketPlace/scheme.html index e3f3d26..e863521 100644 --- a/src/packages/MarketPlace/scheme.html +++ b/src/packages/MarketPlace/scheme.html @@ -20,9 +20,9 @@ -

+

    diff --git a/src/packages/Syslog/Calendar.ts b/src/packages/Syslog/Calendar.ts index c6165f7..9140002 100644 --- a/src/packages/Syslog/Calendar.ts +++ b/src/packages/Syslog/Calendar.ts @@ -26,9 +26,8 @@ namespace OS { export class Calendar extends BaseService { constructor(args: AppArgumentsType[]) { super("Calendar", args); - //@iconclass = "fa fa-commenting" this.text = ""; - this.iconclass = "fa fa-calendar"; + this.iconclass = "bi bi-calendar3"; } init(): void { @@ -36,7 +35,7 @@ namespace OS { this.watch(1000, () => { const now = new Date(); this.text = now.toString(); - (this.domel as GUI.tag.SimpleMenuEntryTag).text = this.text; + this.update(); }); } diff --git a/src/packages/Syslog/PushNotification.ts b/src/packages/Syslog/PushNotification.ts index c6760b2..f803f49 100644 --- a/src/packages/Syslog/PushNotification.ts +++ b/src/packages/Syslog/PushNotification.ts @@ -48,6 +48,7 @@ namespace OS { this.iconclass = "fa fa-bars"; this.cb = undefined; this.logs = []; + this.text = __("Notification"); this.logmon = undefined; } @@ -223,9 +224,9 @@ namespace OS { const scheme = `\
    - + - + diff --git a/src/themes/antos_dark/afx-sys-panel.css b/src/themes/antos_dark/afx-sys-panel.css index 1f0b2fd..ae72a30 100644 --- a/src/themes/antos_dark/afx-sys-panel.css +++ b/src/themes/antos_dark/afx-sys-panel.css @@ -20,30 +20,9 @@ afx-sys-panel .afx-panel-os-menu { color: white; } -afx-sys-panel afx-menu.afx-panel-os-stray afx-menu { - left: calc(100% - 170px); -} - -afx-sys-panel afx-menu.afx-panel-os-stray afx-menu li.afx_submenu a{ - margin-left: 10px; -} - -afx-sys-panel afx-menu.afx-panel-os-stray afx-menu li.afx_submenu:before { - content: "\f054"; - font-family: "FontAwesome"; - font-size: 10px; - position:absolute; - text-align: left; - left:5px; - top:25%; - } -afx-sys-panel afx-menu.afx-panel-os-stray afx-menu ul{ - border:1px solid #262626; - border-radius: 5px; - border-top-right-radius: 0px; -} -afx-sys-panel afx-menu.afx-panel-os-stray afx-menu li{ - min-width: 150px; +afx-sys-panel .afx-panel-os-stray button{ + border-radius: 0; + border: 0; } afx-sys-panel afx-overlay diff --git a/src/themes/antos_light/afx-sys-panel.css b/src/themes/antos_light/afx-sys-panel.css index 1b913db..96275e9 100644 --- a/src/themes/antos_light/afx-sys-panel.css +++ b/src/themes/antos_light/afx-sys-panel.css @@ -20,30 +20,9 @@ afx-sys-panel .afx-panel-os-menu { color: white; } -afx-sys-panel afx-menu.afx-panel-os-stray afx-menu { - left: calc(100% - 170px); -} - -afx-sys-panel afx-menu.afx-panel-os-stray afx-menu li.afx_submenu a{ - margin-left: 10px; -} - -afx-sys-panel afx-menu.afx-panel-os-stray afx-menu li.afx_submenu:before { - content: "\f054"; - font-family: "FontAwesome"; - font-size: 10px; - position:absolute; - text-align: left; - left:5px; - top:25%; - } -afx-sys-panel afx-menu.afx-panel-os-stray afx-menu ul{ - border:1px solid #a6a6a6; - border-radius: 5px; - border-top-right-radius: 0px; -} -afx-sys-panel afx-menu.afx-panel-os-stray afx-menu li{ - min-width: 150px; +afx-sys-panel .afx-panel-os-stray button{ + border-radius: 0; + border: 0; } afx-sys-panel afx-overlay diff --git a/src/themes/system/afx-sys-panel.css b/src/themes/system/afx-sys-panel.css index 75518a6..27f5563 100644 --- a/src/themes/system/afx-sys-panel.css +++ b/src/themes/system/afx-sys-panel.css @@ -41,7 +41,9 @@ afx-sys-panel > div.loading::before { top:0; animation: sys-loading 1s linear infinite; } - +afx-sys-panel .afx-panel-os-stray button{ + font-size: 22px; +} @keyframes sys-loading { 0% { right: auto; @@ -75,19 +77,6 @@ afx-sys-panel .afx-panel-os-menu { margin: 0; } -afx-sys-panel .afx-panel-os-stray{ - position: relative; -} -afx-sys-panel afx-menu.afx-panel-os-stray afx-menu { - right: 0; - position: absolute; -} - -afx-sys-panel afx-menu.afx-panel-os-stray afx-menu afx-menu{ - left: -100%; - right: 100%; - top:-4px; -} afx-sys-panel afx-hbox[data-id="btlist"] afx-button button { diff --git a/src/themes/system/bootstrap-icons.css b/src/themes/system/bootstrap-icons.css index 27dc88f..86414c9 100644 --- a/src/themes/system/bootstrap-icons.css +++ b/src/themes/system/bootstrap-icons.css @@ -1,7 +1,8 @@ @font-face { + font-display: block; font-family: "bootstrap-icons"; src: url("./fonts/bootstrap-icons.woff2") format("woff2"), -url("./fonts/bootstrap-icons.woff?a74547b2f0863226942ff8ded57db345") format("woff"); +url("./fonts/bootstrap-icons.woff?24e3eb84d0bcaf83d77f904c78ac1f47") format("woff"); } .bi::before, @@ -1499,8 +1500,8 @@ url("./fonts/bootstrap-icons.woff?a74547b2f0863226942ff8ded57db345") format("wof .bi-ticket-detailed-fill::before { content: "\f6c6"; } .bi-ticket-detailed::before { content: "\f6c7"; } .bi-ticket-fill::before { content: "\f6c8"; } -.bi-ticket-perferated-fill::before { content: "\f6c9"; } -.bi-ticket-perferated::before { content: "\f6ca"; } +.bi-ticket-perforated-fill::before { content: "\f6c9"; } +.bi-ticket-perforated::before { content: "\f6ca"; } .bi-ticket::before { content: "\f6cb"; } .bi-tiktok::before { content: "\f6cc"; } .bi-window-dash::before { content: "\f6cd"; } @@ -1554,3 +1555,464 @@ url("./fonts/bootstrap-icons.woff?a74547b2f0863226942ff8ded57db345") format("wof .bi-mortarboard-fill::before { content: "\f6fd"; } .bi-mortarboard::before { content: "\f6fe"; } .bi-terminal-x::before { content: "\f6ff"; } +.bi-arrow-through-heart-fill::before { content: "\f700"; } +.bi-arrow-through-heart::before { content: "\f701"; } +.bi-badge-sd-fill::before { content: "\f702"; } +.bi-badge-sd::before { content: "\f703"; } +.bi-bag-heart-fill::before { content: "\f704"; } +.bi-bag-heart::before { content: "\f705"; } +.bi-balloon-fill::before { content: "\f706"; } +.bi-balloon-heart-fill::before { content: "\f707"; } +.bi-balloon-heart::before { content: "\f708"; } +.bi-balloon::before { content: "\f709"; } +.bi-box2-fill::before { content: "\f70a"; } +.bi-box2-heart-fill::before { content: "\f70b"; } +.bi-box2-heart::before { content: "\f70c"; } +.bi-box2::before { content: "\f70d"; } +.bi-braces-asterisk::before { content: "\f70e"; } +.bi-calendar-heart-fill::before { content: "\f70f"; } +.bi-calendar-heart::before { content: "\f710"; } +.bi-calendar2-heart-fill::before { content: "\f711"; } +.bi-calendar2-heart::before { content: "\f712"; } +.bi-chat-heart-fill::before { content: "\f713"; } +.bi-chat-heart::before { content: "\f714"; } +.bi-chat-left-heart-fill::before { content: "\f715"; } +.bi-chat-left-heart::before { content: "\f716"; } +.bi-chat-right-heart-fill::before { content: "\f717"; } +.bi-chat-right-heart::before { content: "\f718"; } +.bi-chat-square-heart-fill::before { content: "\f719"; } +.bi-chat-square-heart::before { content: "\f71a"; } +.bi-clipboard-check-fill::before { content: "\f71b"; } +.bi-clipboard-data-fill::before { content: "\f71c"; } +.bi-clipboard-fill::before { content: "\f71d"; } +.bi-clipboard-heart-fill::before { content: "\f71e"; } +.bi-clipboard-heart::before { content: "\f71f"; } +.bi-clipboard-minus-fill::before { content: "\f720"; } +.bi-clipboard-plus-fill::before { content: "\f721"; } +.bi-clipboard-pulse::before { content: "\f722"; } +.bi-clipboard-x-fill::before { content: "\f723"; } +.bi-clipboard2-check-fill::before { content: "\f724"; } +.bi-clipboard2-check::before { content: "\f725"; } +.bi-clipboard2-data-fill::before { content: "\f726"; } +.bi-clipboard2-data::before { content: "\f727"; } +.bi-clipboard2-fill::before { content: "\f728"; } +.bi-clipboard2-heart-fill::before { content: "\f729"; } +.bi-clipboard2-heart::before { content: "\f72a"; } +.bi-clipboard2-minus-fill::before { content: "\f72b"; } +.bi-clipboard2-minus::before { content: "\f72c"; } +.bi-clipboard2-plus-fill::before { content: "\f72d"; } +.bi-clipboard2-plus::before { content: "\f72e"; } +.bi-clipboard2-pulse-fill::before { content: "\f72f"; } +.bi-clipboard2-pulse::before { content: "\f730"; } +.bi-clipboard2-x-fill::before { content: "\f731"; } +.bi-clipboard2-x::before { content: "\f732"; } +.bi-clipboard2::before { content: "\f733"; } +.bi-emoji-kiss-fill::before { content: "\f734"; } +.bi-emoji-kiss::before { content: "\f735"; } +.bi-envelope-heart-fill::before { content: "\f736"; } +.bi-envelope-heart::before { content: "\f737"; } +.bi-envelope-open-heart-fill::before { content: "\f738"; } +.bi-envelope-open-heart::before { content: "\f739"; } +.bi-envelope-paper-fill::before { content: "\f73a"; } +.bi-envelope-paper-heart-fill::before { content: "\f73b"; } +.bi-envelope-paper-heart::before { content: "\f73c"; } +.bi-envelope-paper::before { content: "\f73d"; } +.bi-filetype-aac::before { content: "\f73e"; } +.bi-filetype-ai::before { content: "\f73f"; } +.bi-filetype-bmp::before { content: "\f740"; } +.bi-filetype-cs::before { content: "\f741"; } +.bi-filetype-css::before { content: "\f742"; } +.bi-filetype-csv::before { content: "\f743"; } +.bi-filetype-doc::before { content: "\f744"; } +.bi-filetype-docx::before { content: "\f745"; } +.bi-filetype-exe::before { content: "\f746"; } +.bi-filetype-gif::before { content: "\f747"; } +.bi-filetype-heic::before { content: "\f748"; } +.bi-filetype-html::before { content: "\f749"; } +.bi-filetype-java::before { content: "\f74a"; } +.bi-filetype-jpg::before { content: "\f74b"; } +.bi-filetype-js::before { content: "\f74c"; } +.bi-filetype-jsx::before { content: "\f74d"; } +.bi-filetype-key::before { content: "\f74e"; } +.bi-filetype-m4p::before { content: "\f74f"; } +.bi-filetype-md::before { content: "\f750"; } +.bi-filetype-mdx::before { content: "\f751"; } +.bi-filetype-mov::before { content: "\f752"; } +.bi-filetype-mp3::before { content: "\f753"; } +.bi-filetype-mp4::before { content: "\f754"; } +.bi-filetype-otf::before { content: "\f755"; } +.bi-filetype-pdf::before { content: "\f756"; } +.bi-filetype-php::before { content: "\f757"; } +.bi-filetype-png::before { content: "\f758"; } +.bi-filetype-ppt-1::before { content: "\f759"; } +.bi-filetype-ppt::before { content: "\f75a"; } +.bi-filetype-psd::before { content: "\f75b"; } +.bi-filetype-py::before { content: "\f75c"; } +.bi-filetype-raw::before { content: "\f75d"; } +.bi-filetype-rb::before { content: "\f75e"; } +.bi-filetype-sass::before { content: "\f75f"; } +.bi-filetype-scss::before { content: "\f760"; } +.bi-filetype-sh::before { content: "\f761"; } +.bi-filetype-svg::before { content: "\f762"; } +.bi-filetype-tiff::before { content: "\f763"; } +.bi-filetype-tsx::before { content: "\f764"; } +.bi-filetype-ttf::before { content: "\f765"; } +.bi-filetype-txt::before { content: "\f766"; } +.bi-filetype-wav::before { content: "\f767"; } +.bi-filetype-woff::before { content: "\f768"; } +.bi-filetype-xls-1::before { content: "\f769"; } +.bi-filetype-xls::before { content: "\f76a"; } +.bi-filetype-xml::before { content: "\f76b"; } +.bi-filetype-yml::before { content: "\f76c"; } +.bi-heart-arrow::before { content: "\f76d"; } +.bi-heart-pulse-fill::before { content: "\f76e"; } +.bi-heart-pulse::before { content: "\f76f"; } +.bi-heartbreak-fill::before { content: "\f770"; } +.bi-heartbreak::before { content: "\f771"; } +.bi-hearts::before { content: "\f772"; } +.bi-hospital-fill::before { content: "\f773"; } +.bi-hospital::before { content: "\f774"; } +.bi-house-heart-fill::before { content: "\f775"; } +.bi-house-heart::before { content: "\f776"; } +.bi-incognito::before { content: "\f777"; } +.bi-magnet-fill::before { content: "\f778"; } +.bi-magnet::before { content: "\f779"; } +.bi-person-heart::before { content: "\f77a"; } +.bi-person-hearts::before { content: "\f77b"; } +.bi-phone-flip::before { content: "\f77c"; } +.bi-plugin::before { content: "\f77d"; } +.bi-postage-fill::before { content: "\f77e"; } +.bi-postage-heart-fill::before { content: "\f77f"; } +.bi-postage-heart::before { content: "\f780"; } +.bi-postage::before { content: "\f781"; } +.bi-postcard-fill::before { content: "\f782"; } +.bi-postcard-heart-fill::before { content: "\f783"; } +.bi-postcard-heart::before { content: "\f784"; } +.bi-postcard::before { content: "\f785"; } +.bi-search-heart-fill::before { content: "\f786"; } +.bi-search-heart::before { content: "\f787"; } +.bi-sliders2-vertical::before { content: "\f788"; } +.bi-sliders2::before { content: "\f789"; } +.bi-trash3-fill::before { content: "\f78a"; } +.bi-trash3::before { content: "\f78b"; } +.bi-valentine::before { content: "\f78c"; } +.bi-valentine2::before { content: "\f78d"; } +.bi-wrench-adjustable-circle-fill::before { content: "\f78e"; } +.bi-wrench-adjustable-circle::before { content: "\f78f"; } +.bi-wrench-adjustable::before { content: "\f790"; } +.bi-filetype-json::before { content: "\f791"; } +.bi-filetype-pptx::before { content: "\f792"; } +.bi-filetype-xlsx::before { content: "\f793"; } +.bi-1-circle-1::before { content: "\f794"; } +.bi-1-circle-fill-1::before { content: "\f795"; } +.bi-1-circle-fill::before { content: "\f796"; } +.bi-1-circle::before { content: "\f797"; } +.bi-1-square-fill::before { content: "\f798"; } +.bi-1-square::before { content: "\f799"; } +.bi-2-circle-1::before { content: "\f79a"; } +.bi-2-circle-fill-1::before { content: "\f79b"; } +.bi-2-circle-fill::before { content: "\f79c"; } +.bi-2-circle::before { content: "\f79d"; } +.bi-2-square-fill::before { content: "\f79e"; } +.bi-2-square::before { content: "\f79f"; } +.bi-3-circle-1::before { content: "\f7a0"; } +.bi-3-circle-fill-1::before { content: "\f7a1"; } +.bi-3-circle-fill::before { content: "\f7a2"; } +.bi-3-circle::before { content: "\f7a3"; } +.bi-3-square-fill::before { content: "\f7a4"; } +.bi-3-square::before { content: "\f7a5"; } +.bi-4-circle-1::before { content: "\f7a6"; } +.bi-4-circle-fill-1::before { content: "\f7a7"; } +.bi-4-circle-fill::before { content: "\f7a8"; } +.bi-4-circle::before { content: "\f7a9"; } +.bi-4-square-fill::before { content: "\f7aa"; } +.bi-4-square::before { content: "\f7ab"; } +.bi-5-circle-1::before { content: "\f7ac"; } +.bi-5-circle-fill-1::before { content: "\f7ad"; } +.bi-5-circle-fill::before { content: "\f7ae"; } +.bi-5-circle::before { content: "\f7af"; } +.bi-5-square-fill::before { content: "\f7b0"; } +.bi-5-square::before { content: "\f7b1"; } +.bi-6-circle-1::before { content: "\f7b2"; } +.bi-6-circle-fill-1::before { content: "\f7b3"; } +.bi-6-circle-fill::before { content: "\f7b4"; } +.bi-6-circle::before { content: "\f7b5"; } +.bi-6-square-fill::before { content: "\f7b6"; } +.bi-6-square::before { content: "\f7b7"; } +.bi-7-circle-1::before { content: "\f7b8"; } +.bi-7-circle-fill-1::before { content: "\f7b9"; } +.bi-7-circle-fill::before { content: "\f7ba"; } +.bi-7-circle::before { content: "\f7bb"; } +.bi-7-square-fill::before { content: "\f7bc"; } +.bi-7-square::before { content: "\f7bd"; } +.bi-8-circle-1::before { content: "\f7be"; } +.bi-8-circle-fill-1::before { content: "\f7bf"; } +.bi-8-circle-fill::before { content: "\f7c0"; } +.bi-8-circle::before { content: "\f7c1"; } +.bi-8-square-fill::before { content: "\f7c2"; } +.bi-8-square::before { content: "\f7c3"; } +.bi-9-circle-1::before { content: "\f7c4"; } +.bi-9-circle-fill-1::before { content: "\f7c5"; } +.bi-9-circle-fill::before { content: "\f7c6"; } +.bi-9-circle::before { content: "\f7c7"; } +.bi-9-square-fill::before { content: "\f7c8"; } +.bi-9-square::before { content: "\f7c9"; } +.bi-airplane-engines-fill::before { content: "\f7ca"; } +.bi-airplane-engines::before { content: "\f7cb"; } +.bi-airplane-fill::before { content: "\f7cc"; } +.bi-airplane::before { content: "\f7cd"; } +.bi-alexa::before { content: "\f7ce"; } +.bi-alipay::before { content: "\f7cf"; } +.bi-android::before { content: "\f7d0"; } +.bi-android2::before { content: "\f7d1"; } +.bi-box-fill::before { content: "\f7d2"; } +.bi-box-seam-fill::before { content: "\f7d3"; } +.bi-browser-chrome::before { content: "\f7d4"; } +.bi-browser-edge::before { content: "\f7d5"; } +.bi-browser-firefox::before { content: "\f7d6"; } +.bi-browser-safari::before { content: "\f7d7"; } +.bi-c-circle-1::before { content: "\f7d8"; } +.bi-c-circle-fill-1::before { content: "\f7d9"; } +.bi-c-circle-fill::before { content: "\f7da"; } +.bi-c-circle::before { content: "\f7db"; } +.bi-c-square-fill::before { content: "\f7dc"; } +.bi-c-square::before { content: "\f7dd"; } +.bi-capsule-pill::before { content: "\f7de"; } +.bi-capsule::before { content: "\f7df"; } +.bi-car-front-fill::before { content: "\f7e0"; } +.bi-car-front::before { content: "\f7e1"; } +.bi-cassette-fill::before { content: "\f7e2"; } +.bi-cassette::before { content: "\f7e3"; } +.bi-cc-circle-1::before { content: "\f7e4"; } +.bi-cc-circle-fill-1::before { content: "\f7e5"; } +.bi-cc-circle-fill::before { content: "\f7e6"; } +.bi-cc-circle::before { content: "\f7e7"; } +.bi-cc-square-fill::before { content: "\f7e8"; } +.bi-cc-square::before { content: "\f7e9"; } +.bi-cup-hot-fill::before { content: "\f7ea"; } +.bi-cup-hot::before { content: "\f7eb"; } +.bi-currency-rupee::before { content: "\f7ec"; } +.bi-dropbox::before { content: "\f7ed"; } +.bi-escape::before { content: "\f7ee"; } +.bi-fast-forward-btn-fill::before { content: "\f7ef"; } +.bi-fast-forward-btn::before { content: "\f7f0"; } +.bi-fast-forward-circle-fill::before { content: "\f7f1"; } +.bi-fast-forward-circle::before { content: "\f7f2"; } +.bi-fast-forward-fill::before { content: "\f7f3"; } +.bi-fast-forward::before { content: "\f7f4"; } +.bi-filetype-sql::before { content: "\f7f5"; } +.bi-fire::before { content: "\f7f6"; } +.bi-google-play::before { content: "\f7f7"; } +.bi-h-circle-1::before { content: "\f7f8"; } +.bi-h-circle-fill-1::before { content: "\f7f9"; } +.bi-h-circle-fill::before { content: "\f7fa"; } +.bi-h-circle::before { content: "\f7fb"; } +.bi-h-square-fill::before { content: "\f7fc"; } +.bi-h-square::before { content: "\f7fd"; } +.bi-indent::before { content: "\f7fe"; } +.bi-lungs-fill::before { content: "\f7ff"; } +.bi-lungs::before { content: "\f800"; } +.bi-microsoft-teams::before { content: "\f801"; } +.bi-p-circle-1::before { content: "\f802"; } +.bi-p-circle-fill-1::before { content: "\f803"; } +.bi-p-circle-fill::before { content: "\f804"; } +.bi-p-circle::before { content: "\f805"; } +.bi-p-square-fill::before { content: "\f806"; } +.bi-p-square::before { content: "\f807"; } +.bi-pass-fill::before { content: "\f808"; } +.bi-pass::before { content: "\f809"; } +.bi-prescription::before { content: "\f80a"; } +.bi-prescription2::before { content: "\f80b"; } +.bi-r-circle-1::before { content: "\f80c"; } +.bi-r-circle-fill-1::before { content: "\f80d"; } +.bi-r-circle-fill::before { content: "\f80e"; } +.bi-r-circle::before { content: "\f80f"; } +.bi-r-square-fill::before { content: "\f810"; } +.bi-r-square::before { content: "\f811"; } +.bi-repeat-1::before { content: "\f812"; } +.bi-repeat::before { content: "\f813"; } +.bi-rewind-btn-fill::before { content: "\f814"; } +.bi-rewind-btn::before { content: "\f815"; } +.bi-rewind-circle-fill::before { content: "\f816"; } +.bi-rewind-circle::before { content: "\f817"; } +.bi-rewind-fill::before { content: "\f818"; } +.bi-rewind::before { content: "\f819"; } +.bi-train-freight-front-fill::before { content: "\f81a"; } +.bi-train-freight-front::before { content: "\f81b"; } +.bi-train-front-fill::before { content: "\f81c"; } +.bi-train-front::before { content: "\f81d"; } +.bi-train-lightrail-front-fill::before { content: "\f81e"; } +.bi-train-lightrail-front::before { content: "\f81f"; } +.bi-truck-front-fill::before { content: "\f820"; } +.bi-truck-front::before { content: "\f821"; } +.bi-ubuntu::before { content: "\f822"; } +.bi-unindent::before { content: "\f823"; } +.bi-unity::before { content: "\f824"; } +.bi-universal-access-circle::before { content: "\f825"; } +.bi-universal-access::before { content: "\f826"; } +.bi-virus::before { content: "\f827"; } +.bi-virus2::before { content: "\f828"; } +.bi-wechat::before { content: "\f829"; } +.bi-yelp::before { content: "\f82a"; } +.bi-sign-stop-fill::before { content: "\f82b"; } +.bi-sign-stop-lights-fill::before { content: "\f82c"; } +.bi-sign-stop-lights::before { content: "\f82d"; } +.bi-sign-stop::before { content: "\f82e"; } +.bi-sign-turn-left-fill::before { content: "\f82f"; } +.bi-sign-turn-left::before { content: "\f830"; } +.bi-sign-turn-right-fill::before { content: "\f831"; } +.bi-sign-turn-right::before { content: "\f832"; } +.bi-sign-turn-slight-left-fill::before { content: "\f833"; } +.bi-sign-turn-slight-left::before { content: "\f834"; } +.bi-sign-turn-slight-right-fill::before { content: "\f835"; } +.bi-sign-turn-slight-right::before { content: "\f836"; } +.bi-sign-yield-fill::before { content: "\f837"; } +.bi-sign-yield::before { content: "\f838"; } +.bi-ev-station-fill::before { content: "\f839"; } +.bi-ev-station::before { content: "\f83a"; } +.bi-fuel-pump-diesel-fill::before { content: "\f83b"; } +.bi-fuel-pump-diesel::before { content: "\f83c"; } +.bi-fuel-pump-fill::before { content: "\f83d"; } +.bi-fuel-pump::before { content: "\f83e"; } +.bi-0-circle-fill::before { content: "\f83f"; } +.bi-0-circle::before { content: "\f840"; } +.bi-0-square-fill::before { content: "\f841"; } +.bi-0-square::before { content: "\f842"; } +.bi-rocket-fill::before { content: "\f843"; } +.bi-rocket-takeoff-fill::before { content: "\f844"; } +.bi-rocket-takeoff::before { content: "\f845"; } +.bi-rocket::before { content: "\f846"; } +.bi-stripe::before { content: "\f847"; } +.bi-subscript::before { content: "\f848"; } +.bi-superscript::before { content: "\f849"; } +.bi-trello::before { content: "\f84a"; } +.bi-envelope-at-fill::before { content: "\f84b"; } +.bi-envelope-at::before { content: "\f84c"; } +.bi-regex::before { content: "\f84d"; } +.bi-text-wrap::before { content: "\f84e"; } +.bi-sign-dead-end-fill::before { content: "\f84f"; } +.bi-sign-dead-end::before { content: "\f850"; } +.bi-sign-do-not-enter-fill::before { content: "\f851"; } +.bi-sign-do-not-enter::before { content: "\f852"; } +.bi-sign-intersection-fill::before { content: "\f853"; } +.bi-sign-intersection-side-fill::before { content: "\f854"; } +.bi-sign-intersection-side::before { content: "\f855"; } +.bi-sign-intersection-t-fill::before { content: "\f856"; } +.bi-sign-intersection-t::before { content: "\f857"; } +.bi-sign-intersection-y-fill::before { content: "\f858"; } +.bi-sign-intersection-y::before { content: "\f859"; } +.bi-sign-intersection::before { content: "\f85a"; } +.bi-sign-merge-left-fill::before { content: "\f85b"; } +.bi-sign-merge-left::before { content: "\f85c"; } +.bi-sign-merge-right-fill::before { content: "\f85d"; } +.bi-sign-merge-right::before { content: "\f85e"; } +.bi-sign-no-left-turn-fill::before { content: "\f85f"; } +.bi-sign-no-left-turn::before { content: "\f860"; } +.bi-sign-no-parking-fill::before { content: "\f861"; } +.bi-sign-no-parking::before { content: "\f862"; } +.bi-sign-no-right-turn-fill::before { content: "\f863"; } +.bi-sign-no-right-turn::before { content: "\f864"; } +.bi-sign-railroad-fill::before { content: "\f865"; } +.bi-sign-railroad::before { content: "\f866"; } +.bi-building-add::before { content: "\f867"; } +.bi-building-check::before { content: "\f868"; } +.bi-building-dash::before { content: "\f869"; } +.bi-building-down::before { content: "\f86a"; } +.bi-building-exclamation::before { content: "\f86b"; } +.bi-building-fill-add::before { content: "\f86c"; } +.bi-building-fill-check::before { content: "\f86d"; } +.bi-building-fill-dash::before { content: "\f86e"; } +.bi-building-fill-down::before { content: "\f86f"; } +.bi-building-fill-exclamation::before { content: "\f870"; } +.bi-building-fill-gear::before { content: "\f871"; } +.bi-building-fill-lock::before { content: "\f872"; } +.bi-building-fill-slash::before { content: "\f873"; } +.bi-building-fill-up::before { content: "\f874"; } +.bi-building-fill-x::before { content: "\f875"; } +.bi-building-fill::before { content: "\f876"; } +.bi-building-gear::before { content: "\f877"; } +.bi-building-lock::before { content: "\f878"; } +.bi-building-slash::before { content: "\f879"; } +.bi-building-up::before { content: "\f87a"; } +.bi-building-x::before { content: "\f87b"; } +.bi-buildings-fill::before { content: "\f87c"; } +.bi-buildings::before { content: "\f87d"; } +.bi-bus-front-fill::before { content: "\f87e"; } +.bi-bus-front::before { content: "\f87f"; } +.bi-ev-front-fill::before { content: "\f880"; } +.bi-ev-front::before { content: "\f881"; } +.bi-globe-americas::before { content: "\f882"; } +.bi-globe-asia-australia::before { content: "\f883"; } +.bi-globe-central-south-asia::before { content: "\f884"; } +.bi-globe-europe-africa::before { content: "\f885"; } +.bi-house-add-fill::before { content: "\f886"; } +.bi-house-add::before { content: "\f887"; } +.bi-house-check-fill::before { content: "\f888"; } +.bi-house-check::before { content: "\f889"; } +.bi-house-dash-fill::before { content: "\f88a"; } +.bi-house-dash::before { content: "\f88b"; } +.bi-house-down-fill::before { content: "\f88c"; } +.bi-house-down::before { content: "\f88d"; } +.bi-house-exclamation-fill::before { content: "\f88e"; } +.bi-house-exclamation::before { content: "\f88f"; } +.bi-house-gear-fill::before { content: "\f890"; } +.bi-house-gear::before { content: "\f891"; } +.bi-house-lock-fill::before { content: "\f892"; } +.bi-house-lock::before { content: "\f893"; } +.bi-house-slash-fill::before { content: "\f894"; } +.bi-house-slash::before { content: "\f895"; } +.bi-house-up-fill::before { content: "\f896"; } +.bi-house-up::before { content: "\f897"; } +.bi-house-x-fill::before { content: "\f898"; } +.bi-house-x::before { content: "\f899"; } +.bi-person-add::before { content: "\f89a"; } +.bi-person-down::before { content: "\f89b"; } +.bi-person-exclamation::before { content: "\f89c"; } +.bi-person-fill-add::before { content: "\f89d"; } +.bi-person-fill-check::before { content: "\f89e"; } +.bi-person-fill-dash::before { content: "\f89f"; } +.bi-person-fill-down::before { content: "\f8a0"; } +.bi-person-fill-exclamation::before { content: "\f8a1"; } +.bi-person-fill-gear::before { content: "\f8a2"; } +.bi-person-fill-lock::before { content: "\f8a3"; } +.bi-person-fill-slash::before { content: "\f8a4"; } +.bi-person-fill-up::before { content: "\f8a5"; } +.bi-person-fill-x::before { content: "\f8a6"; } +.bi-person-gear::before { content: "\f8a7"; } +.bi-person-lock::before { content: "\f8a8"; } +.bi-person-slash::before { content: "\f8a9"; } +.bi-person-up::before { content: "\f8aa"; } +.bi-scooter::before { content: "\f8ab"; } +.bi-taxi-front-fill::before { content: "\f8ac"; } +.bi-taxi-front::before { content: "\f8ad"; } +.bi-amd::before { content: "\f8ae"; } +.bi-database-add::before { content: "\f8af"; } +.bi-database-check::before { content: "\f8b0"; } +.bi-database-dash::before { content: "\f8b1"; } +.bi-database-down::before { content: "\f8b2"; } +.bi-database-exclamation::before { content: "\f8b3"; } +.bi-database-fill-add::before { content: "\f8b4"; } +.bi-database-fill-check::before { content: "\f8b5"; } +.bi-database-fill-dash::before { content: "\f8b6"; } +.bi-database-fill-down::before { content: "\f8b7"; } +.bi-database-fill-exclamation::before { content: "\f8b8"; } +.bi-database-fill-gear::before { content: "\f8b9"; } +.bi-database-fill-lock::before { content: "\f8ba"; } +.bi-database-fill-slash::before { content: "\f8bb"; } +.bi-database-fill-up::before { content: "\f8bc"; } +.bi-database-fill-x::before { content: "\f8bd"; } +.bi-database-fill::before { content: "\f8be"; } +.bi-database-gear::before { content: "\f8bf"; } +.bi-database-lock::before { content: "\f8c0"; } +.bi-database-slash::before { content: "\f8c1"; } +.bi-database-up::before { content: "\f8c2"; } +.bi-database-x::before { content: "\f8c3"; } +.bi-database::before { content: "\f8c4"; } +.bi-houses-fill::before { content: "\f8c5"; } +.bi-houses::before { content: "\f8c6"; } +.bi-nvidia::before { content: "\f8c7"; } +.bi-person-vcard-fill::before { content: "\f8c8"; } +.bi-person-vcard::before { content: "\f8c9"; } +.bi-sina-weibo::before { content: "\f8ca"; } +.bi-tencent-qq::before { content: "\f8cb"; } +.bi-wikipedia::before { content: "\f8cc"; } diff --git a/src/themes/system/fonts/bootstrap-icons.woff b/src/themes/system/fonts/bootstrap-icons.woff index 812621e..bfb8665 100644 Binary files a/src/themes/system/fonts/bootstrap-icons.woff and b/src/themes/system/fonts/bootstrap-icons.woff differ diff --git a/src/themes/system/fonts/bootstrap-icons.woff2 b/src/themes/system/fonts/bootstrap-icons.woff2 index 7cb9191..4df0df2 100644 Binary files a/src/themes/system/fonts/bootstrap-icons.woff2 and b/src/themes/system/fonts/bootstrap-icons.woff2 differ