diff --git a/.envrc b/.envrc index 3550a30f2..6deccfe3a 100644 --- a/.envrc +++ b/.envrc @@ -1 +1,3 @@ -use flake +if has nix; then + use flake +fi diff --git a/apps/build-docs/package.json b/apps/build-docs/package.json index a6f95416c..5a7869843 100644 --- a/apps/build-docs/package.json +++ b/apps/build-docs/package.json @@ -9,9 +9,9 @@ "keywords": [], "author": "Elian Doran ", "license": "AGPL-3.0-only", - "packageManager": "pnpm@10.26.1", + "packageManager": "pnpm@10.26.2", "devDependencies": { - "@redocly/cli": "2.14.0", + "@redocly/cli": "2.14.1", "archiver": "7.0.1", "fs-extra": "11.3.3", "react": "19.2.3", diff --git a/apps/client/package.json b/apps/client/package.json index 3604c236b..96d511652 100644 --- a/apps/client/package.json +++ b/apps/client/package.json @@ -1,6 +1,6 @@ { "name": "@triliumnext/client", - "version": "0.100.0", + "version": "0.101.1", "description": "JQuery-based client for TriliumNext, used for both web and desktop (via Electron)", "private": true, "license": "AGPL-3.0-only", @@ -17,12 +17,12 @@ }, "dependencies": { "@excalidraw/excalidraw": "0.18.0", - "@fullcalendar/core": "6.1.19", - "@fullcalendar/daygrid": "6.1.19", - "@fullcalendar/interaction": "6.1.19", - "@fullcalendar/list": "6.1.19", - "@fullcalendar/multimonth": "6.1.19", - "@fullcalendar/timegrid": "6.1.19", + "@fullcalendar/core": "6.1.20", + "@fullcalendar/daygrid": "6.1.20", + "@fullcalendar/interaction": "6.1.20", + "@fullcalendar/list": "6.1.20", + "@fullcalendar/multimonth": "6.1.20", + "@fullcalendar/timegrid": "6.1.20", "@maplibre/maplibre-gl-leaflet": "0.1.3", "@mermaid-js/layout-elk": "0.2.0", "@mind-elixir/node-menu": "5.0.1", @@ -59,8 +59,9 @@ "mind-elixir": "5.3.8", "normalize.css": "8.0.1", "panzoom": "9.4.3", - "preact": "10.28.0", + "preact": "10.28.1", "react-i18next": "16.5.0", + "react-window": "2.2.3", "reveal.js": "5.2.1", "svg-pan-zoom": "3.6.2", "tabulator-tables": "6.3.1", diff --git a/apps/client/src/desktop.ts b/apps/client/src/desktop.ts index b88eb8d4a..cb90e998f 100644 --- a/apps/client/src/desktop.ts +++ b/apps/client/src/desktop.ts @@ -1,17 +1,18 @@ -import appContext from "./components/app_context.js"; -import utils from "./services/utils.js"; -import noteTooltipService from "./services/note_tooltip.js"; -import bundleService from "./services/bundle.js"; -import toastService from "./services/toast.js"; -import noteAutocompleteService from "./services/note_autocomplete.js"; -import electronContextMenu from "./menus/electron_context_menu.js"; -import glob from "./services/glob.js"; -import { t } from "./services/i18n.js"; -import options from "./services/options.js"; +import "autocomplete.js/index_jquery.js"; + import type ElectronRemote from "@electron/remote"; import type Electron from "electron"; -import "boxicons/css/boxicons.min.css"; -import "autocomplete.js/index_jquery.js"; + +import appContext from "./components/app_context.js"; +import electronContextMenu from "./menus/electron_context_menu.js"; +import bundleService from "./services/bundle.js"; +import glob from "./services/glob.js"; +import { t } from "./services/i18n.js"; +import noteAutocompleteService from "./services/note_autocomplete.js"; +import noteTooltipService from "./services/note_tooltip.js"; +import options from "./services/options.js"; +import toastService from "./services/toast.js"; +import utils from "./services/utils.js"; await appContext.earlyInit(); diff --git a/apps/client/src/entities/fnote.ts b/apps/client/src/entities/fnote.ts index cd1a8b7a7..4fcdbf806 100644 --- a/apps/client/src/entities/fnote.ts +++ b/apps/client/src/entities/fnote.ts @@ -1,3 +1,5 @@ +import { MIME_TYPES_DICT } from "@triliumnext/commons"; + import cssClassManager from "../services/css_class_manager.js"; import type { Froca } from "../services/froca-interface.js"; import noteAttributeCache from "../services/note_attribute_cache.js"; @@ -580,6 +582,10 @@ export default class FNote { } getIcon() { + return `tn-icon ${this.#getIconInternal()}`; + } + + #getIconInternal() { const iconClassLabels = this.getLabels("iconClass"); const workspaceIconClass = this.getWorkspaceIconClass(); @@ -597,8 +603,9 @@ export default class FNote { return "bx bx-folder"; } return "bx bx-note"; - } else if (this.type === "code" && this.mime.startsWith("text/x-sql")) { - return "bx bx-data"; + } else if (this.type === "code") { + const correspondingMimeType = MIME_TYPES_DICT.find(m => m.mime === this.mime); + return correspondingMimeType?.icon ?? NOTE_TYPE_ICONS.code; } return NOTE_TYPE_ICONS[this.type]; } @@ -989,6 +996,10 @@ export default class FNote { ); } + isJsx() { + return (this.type === "code" && this.mime === "text/jsx"); + } + /** @returns true if this note is HTML */ isHtml() { return (this.type === "code" || this.type === "file" || this.type === "render") && this.mime === "text/html"; @@ -996,7 +1007,7 @@ export default class FNote { /** @returns JS script environment - either "frontend" or "backend" */ getScriptEnv() { - if (this.isHtml() || (this.isJavaScript() && this.mime.endsWith("env=frontend"))) { + if (this.isHtml() || (this.isJavaScript() && this.mime.endsWith("env=frontend")) || this.isJsx()) { return "frontend"; } @@ -1018,7 +1029,7 @@ export default class FNote { * @returns a promise that resolves when the script has been run. Additionally, for front-end notes, the promise will contain the value that is returned by the script. */ async executeScript() { - if (!this.isJavaScript()) { + if (!(this.isJavaScript() || this.isJsx())) { throw new Error(`Note ${this.noteId} is of type ${this.type} and mime ${this.mime} and thus cannot be executed`); } diff --git a/apps/client/src/fonts/boxicons.woff2 b/apps/client/src/fonts/boxicons.woff2 new file mode 100644 index 000000000..79c35e4c9 Binary files /dev/null and b/apps/client/src/fonts/boxicons.woff2 differ diff --git a/apps/client/src/layouts/desktop_layout.tsx b/apps/client/src/layouts/desktop_layout.tsx index 758b2e9c9..ffc94aec3 100644 --- a/apps/client/src/layouts/desktop_layout.tsx +++ b/apps/client/src/layouts/desktop_layout.tsx @@ -92,7 +92,7 @@ export default class DesktopLayout { .optChild(launcherPaneIsHorizontal, ) .child() .child(new TabRowWidget().class("full-width")) - .optChild(launcherPaneIsHorizontal && isNewLayout, ) + .optChild(isNewLayout, ) .optChild(customTitleBarButtons, ) .css("height", "40px") .css("background-color", "var(--launcher-pane-background-color)") @@ -184,7 +184,7 @@ export default class DesktopLayout { .child(new HighlightsListWidget()) .child(...this.customWidgets.get("right-pane")) ) - .optChild(isNewLayout, ) + .optChild(isNewLayout, ) ) .optChild(!launcherPaneIsHorizontal && isNewLayout, ) ) diff --git a/apps/client/src/mobile.ts b/apps/client/src/mobile.ts index f4daedc16..ed84fa370 100644 --- a/apps/client/src/mobile.ts +++ b/apps/client/src/mobile.ts @@ -1,9 +1,9 @@ -import appContext from "./components/app_context.js"; -import noteAutocompleteService from "./services/note_autocomplete.js"; -import glob from "./services/glob.js"; -import "boxicons/css/boxicons.min.css"; import "autocomplete.js/index_jquery.js"; +import appContext from "./components/app_context.js"; +import glob from "./services/glob.js"; +import noteAutocompleteService from "./services/note_autocomplete.js"; + glob.setupGlobs(); await appContext.earlyInit(); diff --git a/apps/client/src/print.tsx b/apps/client/src/print.tsx index 9719a847b..16b41cd42 100644 --- a/apps/client/src/print.tsx +++ b/apps/client/src/print.tsx @@ -1,17 +1,25 @@ -import FNote from "./entities/fnote"; import { render } from "preact"; -import { CustomNoteList, useNoteViewType } from "./widgets/collections/NoteList"; import { useCallback, useLayoutEffect, useRef } from "preact/hooks"; + +import FNote from "./entities/fnote"; import content_renderer from "./services/content_renderer"; -import { dynamicRequire, isElectron } from "./services/utils"; import { applyInlineMermaid } from "./services/content_renderer_text"; +import { dynamicRequire, isElectron } from "./services/utils"; +import { CustomNoteList, useNoteViewType } from "./widgets/collections/NoteList"; interface RendererProps { note: FNote; - onReady: () => void; + onReady: (data: PrintReport) => void; onProgressChanged?: (progress: number) => void; } +export type PrintReport = { + type: "single-note"; +} | { + type: "collection"; + ignoredNoteIds: string[]; +}; + async function main() { const notePath = window.location.hash.substring(1); const noteId = notePath.split("/").at(-1); @@ -34,15 +42,17 @@ function App({ note, noteId }: { note: FNote | null | undefined, noteId: string window.dispatchEvent(new CustomEvent("note-load-progress", { detail: { progress } })); } }, []); - const onReady = useCallback(() => { + const onReady = useCallback((printReport: PrintReport) => { if (sentReadyEvent.current) return; - window.dispatchEvent(new Event("note-ready")); - window._noteReady = true; + window.dispatchEvent(new CustomEvent("note-ready", { + detail: printReport + })); + window._noteReady = printReport; sentReadyEvent.current = true; }, []); const props: RendererProps | undefined | null = note && { note, onReady, onProgressChanged }; - if (!note || !props) return + if (!note || !props) return ; useLayoutEffect(() => { document.body.dataset.noteType = note.type; @@ -51,8 +61,8 @@ function App({ note, noteId }: { note: FNote | null | undefined, noteId: string return ( <> {note.type === "book" - ? - : + ? + : } ); @@ -91,7 +101,9 @@ function SingleNoteRenderer({ note, onReady }: RendererProps) { await loadCustomCss(note); } - load().then(() => requestAnimationFrame(onReady)) + load().then(() => requestAnimationFrame(() => onReady({ + type: "single-note" + }))); }, [ note ]); return <> @@ -110,9 +122,9 @@ function CollectionRenderer({ note, onReady, onProgressChanged }: RendererProps) ntxId="print" highlightedTokens={null} media="print" - onReady={async () => { + onReady={async (data: PrintReport) => { await loadCustomCss(note); - onReady(); + onReady(data); }} onProgressChanged={onProgressChanged} />; @@ -124,12 +136,12 @@ function Error404({ noteId }: { noteId: string }) {

The note you are trying to print could not be found.

{noteId} - ) + ); } async function loadCustomCss(note: FNote) { const printCssNotes = await note.getRelationTargets("printCss"); - let loadPromises: JQueryPromise[] = []; + const loadPromises: JQueryPromise[] = []; for (const printCssNote of printCssNotes) { if (!printCssNote || (printCssNote.type !== "code" && printCssNote.mime !== "text/css")) continue; diff --git a/apps/client/src/services/bundle.ts b/apps/client/src/services/bundle.ts index e925253ce..d33ba76a0 100644 --- a/apps/client/src/services/bundle.ts +++ b/apps/client/src/services/bundle.ts @@ -1,10 +1,15 @@ +import { h, VNode } from "preact"; + +import BasicWidget, { ReactWrappedWidget } from "../widgets/basic_widget.js"; +import RightPanelWidget from "../widgets/right_panel_widget.js"; +import froca from "./froca.js"; +import type { Entity } from "./frontend_script_api.js"; +import { WidgetDefinitionWithType } from "./frontend_script_api_preact.js"; +import { t } from "./i18n.js"; import ScriptContext from "./script_context.js"; import server from "./server.js"; -import toastService, { showError } from "./toast.js"; -import froca from "./froca.js"; -import utils from "./utils.js"; -import { t } from "./i18n.js"; -import type { Entity } from "./frontend_script_api.js"; +import toastService, { showErrorForScriptNote } from "./toast.js"; +import utils, { getErrorMessage } from "./utils.js"; // TODO: Deduplicate with server. export interface Bundle { @@ -14,9 +19,13 @@ export interface Bundle { allNoteIds: string[]; } -interface Widget { +type LegacyWidget = (BasicWidget | RightPanelWidget) & { parentWidget?: string; -} +}; +type WithNoteId = T & { + _noteId: string; +}; +export type Widget = WithNoteId<(LegacyWidget | WidgetDefinitionWithType)>; async function getAndExecuteBundle(noteId: string, originEntity = null, script = null, params = null) { const bundle = await server.post(`script/bundle/${noteId}`, { @@ -27,6 +36,8 @@ async function getAndExecuteBundle(noteId: string, originEntity = null, script = return await executeBundle(bundle, originEntity); } +export type ParentName = "left-pane" | "center-pane" | "note-detail-pane" | "right-pane"; + export async function executeBundle(bundle: Bundle, originEntity?: Entity | null, $container?: JQuery) { const apiContext = await ScriptContext(bundle.noteId, bundle.allNoteIds, originEntity, $container); @@ -35,24 +46,14 @@ export async function executeBundle(bundle: Bundle, originEntity?: Entity | null return eval(`const apiContext = this; (async function() { ${bundle.script}\r\n})()`); }.call(apiContext); } catch (e: any) { - const note = await froca.getNote(bundle.noteId); - toastService.showPersistent({ - id: `custom-script-failure-${note?.noteId}`, - title: t("toast.bundle-error.title"), - icon: "bx bx-error-circle", - message: t("toast.bundle-error.message", { - id: note?.noteId, - title: note?.title, - message: e.message - }) - }); + showErrorForScriptNote(bundle.noteId, t("toast.bundle-error.message", { message: e.message })); logError("Widget initialization failed: ", e); } } async function executeStartupBundles() { const isMobile = utils.isMobile(); - const scriptBundles = await server.get("script/startup" + (isMobile ? "?mobile=true" : "")); + const scriptBundles = await server.get(`script/startup${ isMobile ? "?mobile=true" : ""}`); for (const bundle of scriptBundles) { await executeBundle(bundle); @@ -60,68 +61,99 @@ async function executeStartupBundles() { } export class WidgetsByParent { - private byParent: Record; + private legacyWidgets: Record[]>; + private preactWidgets: Record[]>; constructor() { - this.byParent = {}; + this.legacyWidgets = {}; + this.preactWidgets = {}; } add(widget: Widget) { - if (!widget.parentWidget) { - console.log(`Custom widget does not have mandatory 'parentWidget' property defined`); - return; + let hasParentWidget = false; + let isPreact = false; + if ("type" in widget && widget.type === "preact-widget") { + // React-based script. + const reactWidget = widget as WithNoteId; + this.preactWidgets[reactWidget.parent] = this.preactWidgets[reactWidget.parent] || []; + this.preactWidgets[reactWidget.parent].push(reactWidget); + isPreact = true; + hasParentWidget = !!reactWidget.parent; + } else if ("parentWidget" in widget && widget.parentWidget) { + this.legacyWidgets[widget.parentWidget] = this.legacyWidgets[widget.parentWidget] || []; + this.legacyWidgets[widget.parentWidget].push(widget); + hasParentWidget = !!widget.parentWidget; } - this.byParent[widget.parentWidget] = this.byParent[widget.parentWidget] || []; - this.byParent[widget.parentWidget].push(widget); + if (!hasParentWidget) { + showErrorForScriptNote(widget._noteId, t("toast.widget-missing-parent", { + property: isPreact ? "parent" : "parentWidget" + })); + } } - get(parentName: string) { - if (!this.byParent[parentName]) { - return []; + get(parentName: ParentName) { + const widgets: (BasicWidget | VNode)[] = this.getLegacyWidgets(parentName); + for (const preactWidget of this.getPreactWidgets(parentName)) { + const el = h(preactWidget.render, {}); + const widget = new ReactWrappedWidget(el); + widget.contentSized(); + if (preactWidget.position) { + widget.position = preactWidget.position; + } + widgets.push(widget); } + return widgets; + } + + getLegacyWidgets(parentName: ParentName): (BasicWidget | RightPanelWidget)[] { + if (!this.legacyWidgets[parentName]) return []; + return ( - this.byParent[parentName] + this.legacyWidgets[parentName] // previously, custom widgets were provided as a single instance, but that has the disadvantage // for splits where we actually need multiple instaces and thus having a class to instantiate is better // https://github.com/zadam/trilium/issues/4274 .map((w: any) => (w.prototype ? new w() : w)) ); } + + getPreactWidgets(parentName: ParentName) { + return this.preactWidgets[parentName] ?? []; + } } async function getWidgetBundlesByParent() { - const scriptBundles = await server.get("script/widgets"); - const widgetsByParent = new WidgetsByParent(); - for (const bundle of scriptBundles) { - let widget; + try { + const scriptBundles = await server.get("script/widgets"); - try { - widget = await executeBundle(bundle); - if (widget) { - widget._noteId = bundle.noteId; - widgetsByParent.add(widget); + for (const bundle of scriptBundles) { + let widget; + + try { + widget = await executeBundle(bundle); + if (widget) { + widget._noteId = bundle.noteId; + widgetsByParent.add(widget); + } + } catch (e: any) { + const noteId = bundle.noteId; + showErrorForScriptNote(noteId, t("toast.bundle-error.message", { message: e.message })); + + logError("Widget initialization failed: ", e); + continue; } - } catch (e: any) { - const noteId = bundle.noteId; - const note = await froca.getNote(noteId); - toastService.showPersistent({ - id: `custom-script-failure-${noteId}`, - title: t("toast.bundle-error.title"), - icon: "bx bx-error-circle", - message: t("toast.bundle-error.message", { - id: noteId, - title: note?.title, - message: e.message - }) - }); - - logError("Widget initialization failed: ", e); - continue; } + } catch (e) { + toastService.showPersistent({ + id: `custom-widget-list-failure`, + title: t("toast.widget-list-error.title"), + message: getErrorMessage(e), + icon: "bx bx-error-circle" + }); } return widgetsByParent; diff --git a/apps/client/src/services/content_renderer_text.ts b/apps/client/src/services/content_renderer_text.ts index fbe9dc218..5b388d64e 100644 --- a/apps/client/src/services/content_renderer_text.ts +++ b/apps/client/src/services/content_renderer_text.ts @@ -1,13 +1,13 @@ -import { formatCodeBlocks } from "./syntax_highlight.js"; -import { getMermaidConfig } from "./mermaid.js"; -import { renderMathInElement } from "./math.js"; -import FNote from "../entities/fnote.js"; import FAttachment from "../entities/fattachment.js"; -import tree from "./tree.js"; +import FNote from "../entities/fnote.js"; +import { default as content_renderer, type RenderOptions } from "./content_renderer.js"; import froca from "./froca.js"; import link from "./link.js"; +import { renderMathInElement } from "./math.js"; +import { getMermaidConfig } from "./mermaid.js"; +import { formatCodeBlocks } from "./syntax_highlight.js"; +import tree from "./tree.js"; import { isHtmlEmpty } from "./utils.js"; -import { default as content_renderer, type RenderOptions } from "./content_renderer.js"; export default async function renderText(note: FNote | FAttachment, $renderedContent: JQuery, options: RenderOptions = {}) { // entity must be FNote @@ -22,12 +22,14 @@ export default async function renderText(note: FNote | FAttachment, $renderedCon } const getNoteIdFromLink = (el: HTMLElement) => tree.getNoteIdFromUrl($(el).attr("href") || ""); - const referenceLinks = $renderedContent.find("a.reference-link"); + const referenceLinks = $renderedContent.find("a.reference-link"); const noteIdsToPrefetch = referenceLinks.map((i, el) => getNoteIdFromLink(el)); await froca.getNotes(noteIdsToPrefetch); for (const el of referenceLinks) { - await link.loadReferenceLinkTitle($(el)); + const innerSpan = document.createElement("span"); + await link.loadReferenceLinkTitle($(innerSpan), el.href); + el.replaceChildren(innerSpan); } await rewriteMermaidDiagramsInContainer($renderedContent[0] as HTMLDivElement); diff --git a/apps/client/src/services/experimental_features.ts b/apps/client/src/services/experimental_features.ts index d252e2a77..62d4ebb05 100644 --- a/apps/client/src/services/experimental_features.ts +++ b/apps/client/src/services/experimental_features.ts @@ -54,6 +54,7 @@ function getEnabledFeatures() { console.warn("Failed to parse experimental features from options:", e); } enabledFeatures = new Set(features); + enabledFeatures.delete("new-layout"); // handled separately. } return enabledFeatures; } diff --git a/apps/client/src/services/frontend_script_api.ts b/apps/client/src/services/frontend_script_api.ts index e16670d38..a76a09d55 100644 --- a/apps/client/src/services/frontend_script_api.ts +++ b/apps/client/src/services/frontend_script_api.ts @@ -1,26 +1,27 @@ -import server from "./server.js"; -import utils from "./utils.js"; -import toastService from "./toast.js"; -import linkService from "./link.js"; +import { dayjs, formatLogMessage } from "@triliumnext/commons"; + +import appContext from "../components/app_context.js"; +import type Component from "../components/component.js"; +import type NoteContext from "../components/note_context.js"; +import type FNote from "../entities/fnote.js"; +import BasicWidget, { ReactWrappedWidget } from "../widgets/basic_widget.js"; +import NoteContextAwareWidget from "../widgets/note_context_aware_widget.js"; +import RightPanelWidget from "../widgets/right_panel_widget.js"; +import dateNotesService from "./date_notes.js"; +import dialogService from "./dialog.js"; import froca from "./froca.js"; +import { preactAPI } from "./frontend_script_api_preact.js"; +import { t } from "./i18n.js"; +import linkService from "./link.js"; import noteTooltipService from "./note_tooltip.js"; import protectedSessionService from "./protected_session.js"; -import dateNotesService from "./date_notes.js"; import searchService from "./search.js"; -import RightPanelWidget from "../widgets/right_panel_widget.js"; -import ws from "./ws.js"; -import appContext from "../components/app_context.js"; -import NoteContextAwareWidget from "../widgets/note_context_aware_widget.js"; -import BasicWidget, { ReactWrappedWidget } from "../widgets/basic_widget.js"; -import SpacedUpdate from "./spaced_update.js"; +import server from "./server.js"; import shortcutService from "./shortcuts.js"; -import dialogService from "./dialog.js"; -import type FNote from "../entities/fnote.js"; -import { t } from "./i18n.js"; -import { dayjs } from "@triliumnext/commons"; -import type NoteContext from "../components/note_context.js"; -import type Component from "../components/component.js"; -import { formatLogMessage } from "@triliumnext/commons"; +import SpacedUpdate from "./spaced_update.js"; +import toastService from "./toast.js"; +import utils from "./utils.js"; +import ws from "./ws.js"; /** * A whole number @@ -464,6 +465,8 @@ export interface Api { * Log given message to the log pane in UI */ log(message: string | object): void; + + preact: typeof preactAPI; } /** @@ -533,9 +536,8 @@ function FrontendScriptApi(this: Api, startNote: FNote, currentNote: FNote, orig return params.map((p) => { if (typeof p === "function") { return `!@#Function: ${p.toString()}`; - } else { - return p; } + return p; }); } @@ -562,9 +564,8 @@ function FrontendScriptApi(this: Api, startNote: FNote, currentNote: FNote, orig await ws.waitForMaxKnownEntityChangeId(); return ret.executionResult; - } else { - throw new Error(`server error: ${ret.error}`); } + throw new Error(`server error: ${ret.error}`); }; this.runOnBackend = async (func, params = []) => { @@ -721,6 +722,8 @@ function FrontendScriptApi(this: Api, startNote: FNote, currentNote: FNote, orig this.logMessages[noteId].push(message); this.logSpacedUpdates[noteId].scheduleUpdate(); }; + + this.preact = preactAPI; } export default FrontendScriptApi as any as { diff --git a/apps/client/src/services/frontend_script_api_preact.ts b/apps/client/src/services/frontend_script_api_preact.ts new file mode 100644 index 000000000..2829ca101 --- /dev/null +++ b/apps/client/src/services/frontend_script_api_preact.ts @@ -0,0 +1,101 @@ +import { Fragment, h, VNode } from "preact"; +import * as hooks from "preact/hooks"; + +import ActionButton from "../widgets/react/ActionButton"; +import Admonition from "../widgets/react/Admonition"; +import Button from "../widgets/react/Button"; +import CKEditor from "../widgets/react/CKEditor"; +import Collapsible from "../widgets/react/Collapsible"; +import Dropdown from "../widgets/react/Dropdown"; +import FormCheckbox from "../widgets/react/FormCheckbox"; +import FormDropdownList from "../widgets/react/FormDropdownList"; +import { FormFileUploadActionButton, FormFileUploadButton } from "../widgets/react/FormFileUpload"; +import FormGroup from "../widgets/react/FormGroup"; +import { FormDropdownDivider, FormDropdownSubmenu, FormListItem } from "../widgets/react/FormList"; +import FormRadioGroup from "../widgets/react/FormRadioGroup"; +import FormText from "../widgets/react/FormText"; +import FormTextArea from "../widgets/react/FormTextArea"; +import FormTextBox from "../widgets/react/FormTextBox"; +import FormToggle from "../widgets/react/FormToggle"; +import * as triliumHooks from "../widgets/react/hooks"; +import Icon from "../widgets/react/Icon"; +import LinkButton from "../widgets/react/LinkButton"; +import LoadingSpinner from "../widgets/react/LoadingSpinner"; +import Modal from "../widgets/react/Modal"; +import NoteAutocomplete from "../widgets/react/NoteAutocomplete"; +import NoteLink from "../widgets/react/NoteLink"; +import RawHtml from "../widgets/react/RawHtml"; +import Slider from "../widgets/react/Slider"; +import RightPanelWidget from "../widgets/sidebar/RightPanelWidget"; + +export interface WidgetDefinition { + parent: "right-pane", + render: () => VNode, + position?: number, +} + +export interface WidgetDefinitionWithType extends WidgetDefinition { + type: "preact-widget" +} + +export interface LauncherWidgetDefinitionWithType { + type: "preact-launcher-widget" + render: () => VNode +} + +export const preactAPI = Object.freeze({ + // Core + h, + Fragment, + + /** + * Method that must be run for widget scripts that run on Preact, using JSX. The method just returns the same definition, reserved for future typechecking and perhaps validation purposes. + * + * @param definition the widget definition. + */ + defineWidget(definition: WidgetDefinition) { + return { + type: "preact-widget", + ...definition + }; + }, + + defineLauncherWidget(definition: Omit) { + return { + type: "preact-launcher-widget", + ...definition + }; + }, + + // Basic widgets + ActionButton, + Admonition, + Button, + CKEditor, + Collapsible, + Dropdown, + FormCheckbox, + FormDropdownList, + FormFileUploadButton, FormFileUploadActionButton, + FormGroup, + FormListItem, FormDropdownDivider, FormDropdownSubmenu, + FormRadioGroup, + FormText, + FormTextArea, + FormTextBox, + FormToggle, + Icon, + LinkButton, + LoadingSpinner, + Modal, + NoteAutocomplete, + NoteLink, + RawHtml, + Slider, + + // Specialized widgets + RightPanelWidget, + + ...hooks, + ...triliumHooks +}); diff --git a/apps/client/src/services/render.ts b/apps/client/src/services/render.ts index bec5cb514..adfd8a494 100644 --- a/apps/client/src/services/render.ts +++ b/apps/client/src/services/render.ts @@ -1,6 +1,10 @@ -import server from "./server.js"; -import bundleService, { type Bundle } from "./bundle.js"; +import { h, VNode } from "preact"; + import type FNote from "../entities/fnote.js"; +import { renderReactWidgetAtElement } from "../widgets/react/react_utils.jsx"; +import bundleService, { type Bundle } from "./bundle.js"; +import froca from "./froca.js"; +import server from "./server.js"; async function render(note: FNote, $el: JQuery) { const relations = note.getRelations("renderNote"); @@ -17,12 +21,34 @@ async function render(note: FNote, $el: JQuery) { $scriptContainer.append(bundle.html); // async so that scripts cannot block trilium execution - bundleService.executeBundle(bundle, note, $scriptContainer); + bundleService.executeBundle(bundle, note, $scriptContainer).then(result => { + // Render JSX + if (bundle.html === "") { + renderIfJsx(bundle, result, $el); + } + }); } return renderNoteIds.length > 0; } +async function renderIfJsx(bundle: Bundle, result: unknown, $el: JQuery) { + // Ensure the root script note is actually a JSX. + const rootScriptNoteId = await froca.getNote(bundle.noteId); + if (rootScriptNoteId?.mime !== "text/jsx") return; + + // Ensure the output is a valid el. + if (typeof result !== "function") return; + + // Obtain the parent component. + const closestComponent = glob.getComponentByEl($el.closest(".component")[0]); + if (!closestComponent) return; + + // Render the element. + const el = h(result as () => VNode, {}); + renderReactWidgetAtElement(closestComponent, el, $el[0]); +} + export default { render }; diff --git a/apps/client/src/services/server.ts b/apps/client/src/services/server.ts index 978aa91ab..b13653cf3 100644 --- a/apps/client/src/services/server.ts +++ b/apps/client/src/services/server.ts @@ -133,11 +133,11 @@ async function call(method: string, url: string, componentId?: string, option }; ipc.send("server-request", { - requestId: requestId, - headers: headers, - method: method, + requestId, + headers, + method, url: `/${window.glob.baseApiUrl}${url}`, - data: data + data }); })) as any; } else { @@ -161,7 +161,7 @@ function ajax(url: string, method: string, data: unknown, headers: Headers, sile const options: JQueryAjaxSettings = { url: window.glob.baseApiUrl + url, type: method, - headers: headers, + headers, timeout: 60000, success: (body, textStatus, jqXhr) => { const respHeaders: Headers = {}; @@ -288,8 +288,8 @@ async function reportError(method: string, url: string, statusCode: number, resp t("server.unknown_http_error_content", { statusCode, method, url, message: messageStr }), 15_000); } - const { throwError } = await import("./ws.js"); - throwError(`${statusCode} ${method} ${url} - ${message}`); + const { logError } = await import("./ws.js"); + logError(`${statusCode} ${method} ${url} - ${message}`); } } diff --git a/apps/client/src/services/toast.ts b/apps/client/src/services/toast.ts index 3e81bf6e1..b67c89eb2 100644 --- a/apps/client/src/services/toast.ts +++ b/apps/client/src/services/toast.ts @@ -1,6 +1,9 @@ import { signal } from "@preact/signals"; -import utils from "./utils.js"; +import appContext from "../components/app_context.js"; +import froca from "./froca.js"; +import { t } from "./i18n.js"; +import utils, { randomString } from "./utils.js"; export interface ToastOptions { id?: string; @@ -61,11 +64,29 @@ function showErrorTitleAndMessage(title: string, message: string, timeout = 1000 }); } +export async function showErrorForScriptNote(noteId: string, message: string) { + const note = await froca.getNote(noteId, true); + + showPersistent({ + id: `custom-widget-failure-${noteId}`, + title: t("toast.scripting-error", { title: note?.title ?? "" }), + icon: note?.getIcon() ?? "bx bx-error-circle", + message, + timeout: 15_000, + buttons: [ + { + text: t("toast.open-script-note"), + onClick: () => appContext.tabManager.openInNewTab(noteId, null, true) + } + ] + }); +} + //#region Toast store export const toasts = signal([]); function addToast(opts: ToastOptions) { - const id = opts.id ?? crypto.randomUUID(); + const id = opts.id ?? randomString(); const toast = { ...opts, id }; toasts.value = [ ...toasts.value, toast ]; return id; @@ -74,7 +95,7 @@ function addToast(opts: ToastOptions) { function updateToast(id: string, partial: Partial) { toasts.value = toasts.value.map(toast => { if (toast.id === id) { - return { ...toast, ...partial } + return { ...toast, ...partial }; } return toast; }); diff --git a/apps/client/src/services/utils.ts b/apps/client/src/services/utils.ts index 8c2a12c6a..9dff8fef2 100644 --- a/apps/client/src/services/utils.ts +++ b/apps/client/src/services/utils.ts @@ -1,8 +1,9 @@ import { dayjs } from "@triliumnext/commons"; -import type { ViewMode, ViewScope } from "./link.js"; -import FNote from "../entities/fnote"; import { snapdom } from "@zumer/snapdom"; +import FNote from "../entities/fnote"; +import type { ViewMode, ViewScope } from "./link.js"; + const SVG_MIME = "image/svg+xml"; export const isShare = !window.glob; @@ -113,9 +114,8 @@ function formatDateISO(date: Date) { export function formatDateTime(date: Date, userSuppliedFormat?: string): string { if (userSuppliedFormat?.trim()) { return dayjs(date).format(userSuppliedFormat); - } else { - return `${formatDate(date)} ${formatTime(date)}`; } + return `${formatDate(date)} ${formatTime(date)}`; } function localNowDateTime() { @@ -191,9 +191,9 @@ export function formatSize(size: number | null | undefined) { if (size < 1024) { return `${size} KiB`; - } else { - return `${Math.round(size / 102.4) / 10} MiB`; } + return `${Math.round(size / 102.4) / 10} MiB`; + } function toObject(array: T[], fn: (arg0: T) => [key: string, value: R]) { @@ -208,7 +208,7 @@ function toObject(array: T[], fn: (arg0: T) => [key: string, value: R]) { return obj; } -export function randomString(len: number) { +export function randomString(len: number = 16) { let text = ""; const possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; @@ -297,18 +297,18 @@ function formatHtml(html: string) { let indent = "\n"; const tab = "\t"; let i = 0; - let pre: { indent: string; tag: string }[] = []; + const pre: { indent: string; tag: string }[] = []; html = html - .replace(new RegExp("
([\\s\\S]+?)?
"), function (x) { + .replace(new RegExp("
([\\s\\S]+?)?
"), (x) => { pre.push({ indent: "", tag: x }); - return "<--TEMPPRE" + i++ + "/-->"; + return `<--TEMPPRE${i++}/-->`; }) - .replace(new RegExp("<[^<>]+>[^<]?", "g"), function (x) { + .replace(new RegExp("<[^<>]+>[^<]?", "g"), (x) => { let ret; const tagRegEx = /<\/?([^\s/>]+)/.exec(x); - let tag = tagRegEx ? tagRegEx[1] : ""; - let p = new RegExp("<--TEMPPRE(\\d+)/-->").exec(x); + const tag = tagRegEx ? tagRegEx[1] : ""; + const p = new RegExp("<--TEMPPRE(\\d+)/-->").exec(x); if (p) { const pInd = parseInt(p[1]); @@ -318,24 +318,22 @@ function formatHtml(html: string) { if (["area", "base", "br", "col", "command", "embed", "hr", "img", "input", "keygen", "link", "menuitem", "meta", "param", "source", "track", "wbr"].indexOf(tag) >= 0) { // self closing tag ret = indent + x; + } else if (x.indexOf("") ret = indent + x.substr(0, x.length - 1) + indent + tab + x.substr(x.length - 1, x.length); + else ret = indent + x; + !p && (indent += tab); } else { - if (x.indexOf("") ret = indent + x.substr(0, x.length - 1) + indent + tab + x.substr(x.length - 1, x.length); - else ret = indent + x; - !p && (indent += tab); - } else { - //close tag - indent = indent.substr(0, indent.length - 1); - if (x.charAt(x.length - 1) !== ">") ret = indent + x.substr(0, x.length - 1) + indent + x.substr(x.length - 1, x.length); - else ret = indent + x; - } + //close tag + indent = indent.substr(0, indent.length - 1); + if (x.charAt(x.length - 1) !== ">") ret = indent + x.substr(0, x.length - 1) + indent + x.substr(x.length - 1, x.length); + else ret = indent + x; } return ret; }); for (i = pre.length; i--;) { - html = html.replace("<--TEMPPRE" + i + "/-->", pre[i].tag.replace("
", "
\n").replace("
", pre[i].indent + "
")); + html = html.replace(`<--TEMPPRE${i}/-->`, pre[i].tag.replace("
", "
\n").replace("
", `${pre[i].indent}
`)); } return html.charAt(0) === "\n" ? html.substr(1, html.length - 1) : html; @@ -364,11 +362,11 @@ type dynamicRequireMappings = { export function dynamicRequire(moduleName: T): Awaited{ if (typeof __non_webpack_require__ !== "undefined") { return __non_webpack_require__(moduleName); - } else { - // explicitly pass as string and not as expression to suppress webpack warning - // 'Critical dependency: the request of a dependency is an expression' - return require(`${moduleName}`); } + // explicitly pass as string and not as expression to suppress webpack warning + // 'Critical dependency: the request of a dependency is an expression' + return require(`${moduleName}`); + } function timeLimit(promise: Promise, limitMs: number, errorMessage?: string) { @@ -509,8 +507,8 @@ export function escapeRegExp(str: string) { function areObjectsEqual(...args: unknown[]) { let i; let l; - let leftChain: Object[]; - let rightChain: Object[]; + let leftChain: object[]; + let rightChain: object[]; function compare2Objects(x: unknown, y: unknown) { let p; @@ -695,9 +693,9 @@ async function downloadAsSvg(nameWithoutExtension: string, svgSource: string | S try { const result = await snapdom(element, { - backgroundColor: "transparent", - scale: 2 - }); + backgroundColor: "transparent", + scale: 2 + }); triggerDownload(`${nameWithoutExtension}.svg`, result.url); } finally { cleanup(); @@ -733,9 +731,9 @@ async function downloadAsPng(nameWithoutExtension: string, svgSource: string | S try { const result = await snapdom(element, { - backgroundColor: "transparent", - scale: 2 - }); + backgroundColor: "transparent", + scale: 2 + }); const pngImg = await result.toPng(); await triggerDownload(`${nameWithoutExtension}.png`, pngImg.src); } finally { @@ -763,11 +761,11 @@ export function getSizeFromSvg(svgContent: string) { return { width: parseFloat(width), height: parseFloat(height) - } - } else { - console.warn("SVG export error", svgDocument.documentElement); - return null; + }; } + console.warn("SVG export error", svgDocument.documentElement); + return null; + } /** @@ -896,9 +894,9 @@ export function mapToKeyValueArray(map: R export function getErrorMessage(e: unknown) { if (e && typeof e === "object" && "message" in e && typeof e.message === "string") { return e.message; - } else { - return "Unknown error"; } + return "Unknown error"; + } /** diff --git a/apps/client/src/stylesheets/boxicons-compat.css b/apps/client/src/stylesheets/boxicons-compat.css new file mode 100644 index 000000000..b07107f4a --- /dev/null +++ b/apps/client/src/stylesheets/boxicons-compat.css @@ -0,0 +1,498 @@ +.bx-ul +{ + margin-left: 2em; + padding-left: 0; + + list-style: none; +} +.bx-ul > li +{ + position: relative; +} +.bx-ul .bx +{ + font-size: inherit; + line-height: inherit; + + position: absolute; + left: -2em; + + width: 2em; + + text-align: center; +} +@-webkit-keyframes spin +{ + 0% + { + -webkit-transform: rotate(0); + transform: rotate(0); + } + 100% + { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes spin +{ + 0% + { + -webkit-transform: rotate(0); + transform: rotate(0); + } + 100% + { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-webkit-keyframes burst +{ + 0% + { + -webkit-transform: scale(1); + transform: scale(1); + + opacity: 1; + } + 90% + { + -webkit-transform: scale(1.5); + transform: scale(1.5); + + opacity: 0; + } +} +@keyframes burst +{ + 0% + { + -webkit-transform: scale(1); + transform: scale(1); + + opacity: 1; + } + 90% + { + -webkit-transform: scale(1.5); + transform: scale(1.5); + + opacity: 0; + } +} +@-webkit-keyframes flashing +{ + 0% + { + opacity: 1; + } + 45% + { + opacity: 0; + } + 90% + { + opacity: 1; + } +} +@keyframes flashing +{ + 0% + { + opacity: 1; + } + 45% + { + opacity: 0; + } + 90% + { + opacity: 1; + } +} +@-webkit-keyframes fade-left +{ + 0% + { + -webkit-transform: translateX(0); + transform: translateX(0); + + opacity: 1; + } + 75% + { + -webkit-transform: translateX(-20px); + transform: translateX(-20px); + + opacity: 0; + } +} +@keyframes fade-left +{ + 0% + { + -webkit-transform: translateX(0); + transform: translateX(0); + + opacity: 1; + } + 75% + { + -webkit-transform: translateX(-20px); + transform: translateX(-20px); + + opacity: 0; + } +} +@-webkit-keyframes fade-right +{ + 0% + { + -webkit-transform: translateX(0); + transform: translateX(0); + + opacity: 1; + } + 75% + { + -webkit-transform: translateX(20px); + transform: translateX(20px); + + opacity: 0; + } +} +@keyframes fade-right +{ + 0% + { + -webkit-transform: translateX(0); + transform: translateX(0); + + opacity: 1; + } + 75% + { + -webkit-transform: translateX(20px); + transform: translateX(20px); + + opacity: 0; + } +} +@-webkit-keyframes fade-up +{ + 0% + { + -webkit-transform: translateY(0); + transform: translateY(0); + + opacity: 1; + } + 75% + { + -webkit-transform: translateY(-20px); + transform: translateY(-20px); + + opacity: 0; + } +} +@keyframes fade-up +{ + 0% + { + -webkit-transform: translateY(0); + transform: translateY(0); + + opacity: 1; + } + 75% + { + -webkit-transform: translateY(-20px); + transform: translateY(-20px); + + opacity: 0; + } +} +@-webkit-keyframes fade-down +{ + 0% + { + -webkit-transform: translateY(0); + transform: translateY(0); + + opacity: 1; + } + 75% + { + -webkit-transform: translateY(20px); + transform: translateY(20px); + + opacity: 0; + } +} +@keyframes fade-down +{ + 0% + { + -webkit-transform: translateY(0); + transform: translateY(0); + + opacity: 1; + } + 75% + { + -webkit-transform: translateY(20px); + transform: translateY(20px); + + opacity: 0; + } +} +@-webkit-keyframes tada +{ + from + { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 10%, + 20% + { + -webkit-transform: scale3d(.95, .95, .95) rotate3d(0, 0, 1, -10deg); + transform: scale3d(.95, .95, .95) rotate3d(0, 0, 1, -10deg); + } + + 30%, + 50%, + 70%, + 90% + { + -webkit-transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg); + transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg); + } + + 40%, + 60%, + 80% + { + -webkit-transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, -10deg); + transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, -10deg); + } + + to + { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes tada +{ + from + { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 10%, + 20% + { + -webkit-transform: scale3d(.95, .95, .95) rotate3d(0, 0, 1, -10deg); + transform: scale3d(.95, .95, .95) rotate3d(0, 0, 1, -10deg); + } + + 30%, + 50%, + 70%, + 90% + { + -webkit-transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg); + transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg); + } + + 40%, + 60%, + 80% + { + -webkit-transform: rotate3d(0, 0, 1, -10deg); + transform: rotate3d(0, 0, 1, -10deg); + } + + to + { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} +.bx-spin +{ + -webkit-animation: spin 2s linear infinite; + animation: spin 2s linear infinite; +} +.bx-spin-hover:hover +{ + -webkit-animation: spin 2s linear infinite; + animation: spin 2s linear infinite; +} + +.bx-tada +{ + -webkit-animation: tada 1.5s ease infinite; + animation: tada 1.5s ease infinite; +} +.bx-tada-hover:hover +{ + -webkit-animation: tada 1.5s ease infinite; + animation: tada 1.5s ease infinite; +} + +.bx-flashing +{ + -webkit-animation: flashing 1.5s infinite linear; + animation: flashing 1.5s infinite linear; +} +.bx-flashing-hover:hover +{ + -webkit-animation: flashing 1.5s infinite linear; + animation: flashing 1.5s infinite linear; +} + +.bx-burst +{ + -webkit-animation: burst 1.5s infinite linear; + animation: burst 1.5s infinite linear; +} +.bx-burst-hover:hover +{ + -webkit-animation: burst 1.5s infinite linear; + animation: burst 1.5s infinite linear; +} +.bx-fade-up +{ + -webkit-animation: fade-up 1.5s infinite linear; + animation: fade-up 1.5s infinite linear; +} +.bx-fade-up-hover:hover +{ + -webkit-animation: fade-up 1.5s infinite linear; + animation: fade-up 1.5s infinite linear; +} +.bx-fade-down +{ + -webkit-animation: fade-down 1.5s infinite linear; + animation: fade-down 1.5s infinite linear; +} +.bx-fade-down-hover:hover +{ + -webkit-animation: fade-down 1.5s infinite linear; + animation: fade-down 1.5s infinite linear; +} +.bx-fade-left +{ + -webkit-animation: fade-left 1.5s infinite linear; + animation: fade-left 1.5s infinite linear; +} +.bx-fade-left-hover:hover +{ + -webkit-animation: fade-left 1.5s infinite linear; + animation: fade-left 1.5s infinite linear; +} +.bx-fade-right +{ + -webkit-animation: fade-right 1.5s infinite linear; + animation: fade-right 1.5s infinite linear; +} +.bx-fade-right-hover:hover +{ + -webkit-animation: fade-right 1.5s infinite linear; + animation: fade-right 1.5s infinite linear; +} +.bx-xs +{ + font-size: 1rem!important; +} +.bx-sm +{ + font-size: 1.55rem!important; +} +.bx-md +{ + font-size: 2.25rem!important; +} +.bx-lg +{ + font-size: 3.0rem!important; +} +.bx-fw +{ + font-size: 1.2857142857em; + line-height: .8em; + + width: 1.2857142857em; + height: .8em; + margin-top: -.2em!important; + + vertical-align: middle; +} +.bx-pull-left +{ + float: left; + + margin-right: .3em!important; +} +.bx-pull-right +{ + float: right; + + margin-left: .3em!important; +} +.bx-rotate-90 +{ + transform: rotate(90deg); + + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=1)'; +} +.bx-rotate-180 +{ + transform: rotate(180deg); + + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=2)'; +} +.bx-rotate-270 +{ + transform: rotate(270deg); + + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=3)'; +} +.bx-flip-horizontal +{ + transform: scaleX(-1); + + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)'; +} +.bx-flip-vertical +{ + transform: scaleY(-1); + + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)'; +} +.bx-border +{ + padding: .25em; + + border: .07em solid rgba(0,0,0,.1); + border-radius: .25em; +} +.bx-border-circle +{ + padding: .25em; + + border: .07em solid rgba(0,0,0,.1); + border-radius: 50%; +} + +/** Custom icon **/ +.bx-empty { + width: 1em; + display: inline-block; +} diff --git a/apps/client/src/stylesheets/style.css b/apps/client/src/stylesheets/style.css index 5a7d4d923..17e431e54 100644 --- a/apps/client/src/stylesheets/style.css +++ b/apps/client/src/stylesheets/style.css @@ -1,3 +1,5 @@ +@import "./boxicons-compat.css"; + @font-face { font-family: Montserrat; src: url(../fonts/Montserrat-Light.ttf); @@ -436,7 +438,6 @@ body.desktop .tabulator-popup-container, opacity: 1; } -.dropdown-menu a:hover:not(.disabled), .dropdown-item:hover:not(.disabled, .dropdown-container-item), .tabulator-menu-item:hover, :root .excalidraw .context-menu .context-menu-item:hover { @@ -458,6 +459,7 @@ body.desktop .tabulator-popup-container, } body.desktop .dropdown-menu:not(#context-menu-container) .dropdown-item, +body.desktop .dropdown-menu .dropdown-toggle, body #context-menu-container .dropdown-item > span, body.mobile .dropdown .dropdown-submenu > span { display: flex; @@ -717,7 +719,6 @@ table.promoted-attributes-in-tooltip th { .tooltip { font-size: var(--main-font-size) !important; z-index: calc(var(--ck-z-panel) - 1) !important; - white-space: pre-wrap; } .tooltip.tooltip-top { @@ -1129,11 +1130,6 @@ a.external:not(.no-arrow):after, a[href^="http://"]:not(.no-arrow):after, a[href border-color: var(--main-border-color) !important; } -.bx-empty { - width: 1em; - display: inline-block; -} - .modal-header { padding: 0.5rem 1rem 0.5rem 1rem !important; /* make modal header padding slightly smaller */ } @@ -1800,7 +1796,7 @@ button.close:hover { display: none; } -.reference-link .bx { +.reference-link .tn-icon { position: relative; top: 1px; margin-inline-end: 3px; @@ -1952,6 +1948,10 @@ body.electron.platform-darwin:not(.native-titlebar) .tab-row-container { padding-inline-start: 1em; } +.tab-row-widget { + contain: inline-size; +} + #tab-row-left-spacer { width: env(titlebar-area-x); -webkit-app-region: drag; @@ -1961,7 +1961,7 @@ body.electron.platform-darwin:not(.native-titlebar):not(.full-screen) #tab-row-l width: 80px; } -.tab-row-container { +body.electron:not(.platform-darwin) .tab-row-container { padding-inline-end: calc(100vw - env(titlebar-area-width, 100vw)); } @@ -2196,8 +2196,9 @@ body.zen.experimental-feature-new-layout { border-radius: 8px; border: 1px solid var(--main-border-color); padding: 4px; - background: var(--menu-background-color); + background: var(--menu-background-color) !important; transform: translateX(-50%); + backdrop-filter: blur(6px); } #root-widget:has(.note-split.type-text:focus-within) .classic-toolbar-widget, @@ -2414,7 +2415,7 @@ footer.webview-footer button { gap: 5px; } -.right-pane-tab .tab-title .bx { +.right-pane-tab .tab-title .tn-icon { font-size: 1.1em; } @@ -2542,18 +2543,11 @@ footer.webview-footer button { inset-inline-end: 10px; } -.content-floating-buttons button.bx { +.content-floating-buttons button.tn-icon { font-size: 130%; padding: 1px 10px 1px 10px; } -/* Customized icons */ - -.bx-tn-toc::before { - content: "\ec24"; - transform: rotate(180deg); -} - /* CK Editor */ /* Insert text snippet: limit the width of the listed items to avoid overly long names */ diff --git a/apps/client/src/stylesheets/theme-dark.css b/apps/client/src/stylesheets/theme-dark.css index d4702d6c5..5bff3262f 100644 --- a/apps/client/src/stylesheets/theme-dark.css +++ b/apps/client/src/stylesheets/theme-dark.css @@ -115,3 +115,7 @@ body .todo-list input[type="checkbox"]:not(:checked):before { .use-note-color { --custom-color: var(--dark-theme-custom-color); } + +span.fancytree-active { + color: var(--dark-theme-custom-color, var(--active-item-text-color)); +} diff --git a/apps/client/src/stylesheets/theme-light.css b/apps/client/src/stylesheets/theme-light.css index cad8d9b4b..f421827d4 100644 --- a/apps/client/src/stylesheets/theme-light.css +++ b/apps/client/src/stylesheets/theme-light.css @@ -99,3 +99,7 @@ html { .use-note-color { --custom-color: var(--light-theme-custom-color); } + +span.fancytree-active { + color: var(--light-theme-custom-color, var(--active-item-text-color)); +} diff --git a/apps/client/src/stylesheets/theme-next-dark.css b/apps/client/src/stylesheets/theme-next-dark.css index 59e2cb9a1..80acfe2e0 100644 --- a/apps/client/src/stylesheets/theme-next-dark.css +++ b/apps/client/src/stylesheets/theme-next-dark.css @@ -21,7 +21,7 @@ --subtle-border-color: #313131; --dropdown-border-color: #404040; --dropdown-shadow-opacity: 0.6; - --dropdown-item-icon-destructive-color: #de6e5b; + --dropdown-item-icon-destructive-color: #d58477; --contextual-help-icon-color: #7fd2ef; --accented-background-color: #555; @@ -77,6 +77,7 @@ --link-color: #95c3d9; --link-hover-background: #75c2e324; --link-hover-color: var(--link-color); + --link-selection-outline-color: #75c2e385; --hover-item-text-color: #efefef; --hover-item-background-color: #ffffff16; @@ -236,7 +237,9 @@ --bottom-panel-background-color: #11111180; --bottom-panel-title-bar-background-color: #3F3F3F80; - + + --status-bar-border-color: var(--main-border-color); + --scrollbar-thumb-color: #fdfdfd5c; --scrollbar-thumb-hover-color: #ffffff7d; --scrollbar-background-color: transparent; @@ -346,5 +349,5 @@ body .todo-list input[type="checkbox"]:not(:checked):before { .note-split.with-hue *::selection, .quick-edit-dialog-wrapper.with-hue *::selection { - background: hsl(var(--custom-color-hue), 49.2%, 35%); + --selection-background-color: hsl(var(--custom-color-hue), 49.2%, 35%); } \ No newline at end of file diff --git a/apps/client/src/stylesheets/theme-next-light.css b/apps/client/src/stylesheets/theme-next-light.css index 6ae0119cf..1e50200d9 100644 --- a/apps/client/src/stylesheets/theme-next-light.css +++ b/apps/client/src/stylesheets/theme-next-light.css @@ -21,7 +21,7 @@ --subtle-border-color: rgba(0, 0, 0, 0.1); --dropdown-border-color: #ccc; --dropdown-shadow-opacity: 0.2; - --dropdown-item-icon-destructive-color: #ec5138; + --dropdown-item-icon-destructive-color: #de4027; --contextual-help-icon-color: #004382; --accented-background-color: #f5f5f5; @@ -77,6 +77,7 @@ --link-color: #0076af; --link-hover-background: #3c7fa017; --link-hover-color: var(--link-color); + --link-selection-outline-color: #95c3d9db; --hover-item-text-color: black; --hover-item-background-color: #0000001a; @@ -232,8 +233,10 @@ --right-pane-item-hover-background: #00000013; --right-pane-item-hover-color: inherit; - --bottom-panel-background-color: #0000000a; - --bottom-panel-title-bar-background-color: #00000017; + --bottom-panel-background-color: #ffffff8c; + --bottom-panel-title-bar-background-color: #94949414; + + --status-bar-border-color: #0000003a; --scrollbar-thumb-color: #0000005c; --scrollbar-thumb-hover-color: #00000066; @@ -317,5 +320,5 @@ .note-split.with-hue *::selection, .quick-edit-dialog-wrapper.with-hue *::selection { - background: hsl(var(--custom-color-hue), 60%, 90%); + --selection-background-color: hsl(var(--custom-color-hue), 60%, 90%); } \ No newline at end of file diff --git a/apps/client/src/stylesheets/theme-next/base.css b/apps/client/src/stylesheets/theme-next/base.css index b896d4e56..426c0fe62 100644 --- a/apps/client/src/stylesheets/theme-next/base.css +++ b/apps/client/src/stylesheets/theme-next/base.css @@ -128,10 +128,20 @@ body.backdrop-effects-disabled { font-size: 0.9rem !important; } +/* Use this class for non-legacy menus */ +.dropdown-menu.tn-dropdown-menu { + --menu-item-icon-vert-offset: 0; + white-space-collapse: discard; +} + +.dropdown-menu.tn-dropdown-menu .dropdown-item .tn-icon { + margin-inline-end: 6px; +} + .dropdown-menu.tn-dropdown-menu-scrollable { /* Note: scrollable dropdowns does not support submenus */ max-height: 90vh; - overflow: scroll; + overflow-y: auto; } body.desktop .dropdown-menu::before, @@ -153,14 +163,14 @@ body.desktop .dropdown-menu.tn-dropdown-list { backdrop-filter: var(--dropdown-backdrop-filter); } -body.desktop .dropdown-menu.tn-dropdown-list::before { - display: none; -} - body.desktop .dropdown-submenu .dropdown-menu::before { content: unset; } +body.desktop .dropdown-menu.tn-dropdown-list::before { + display: none; +} + body.desktop .dropdown-submenu .dropdown-menu { backdrop-filter: var(--dropdown-backdrop-filter); background: transparent; @@ -224,6 +234,10 @@ html body .dropdown-item[disabled] { opacity: var(--menu-item-disabled-opacity); } +.dropdown-item:not(.disabled) .destructive-action-icon, +.dropdown-item:not(.disabled) .bx-trash { + --menu-item-icon-color: var(--dropdown-item-icon-destructive-color); +} /* Badges */ :root .badge { --bs-badge-color: var(--badge-text-color); @@ -235,7 +249,7 @@ html body .dropdown-item[disabled] { } /* Menu item icon */ -.dropdown-item .bx { +.dropdown-item .tn-icon { translate: 0 var(--menu-item-icon-vert-offset); color: var(--menu-item-icon-color) !important; font-size: 1.1em; @@ -482,7 +496,7 @@ li.dropdown-item a.dropdown-item-button { border: unset; } -li.dropdown-item a.dropdown-item-button.bx { +li.dropdown-item a.dropdown-item-button.tn-icon { color: var(--menu-text-color) !important; } @@ -543,13 +557,13 @@ li.dropdown-item a.dropdown-item-button:focus-visible { padding-top: 0; } -#toast-container .toast:not(.no-title) .bx { +#toast-container .toast:not(.no-title) .tn-icon { margin-inline-end: 0.5em; font-size: 1.1em; opacity: 0.85; } -#toast-container .toast.no-title .bx { +#toast-container .toast.no-title .tn-icon { margin-inline-end: 0; font-size: 1.3em; } @@ -740,7 +754,7 @@ li.dropdown-item a.dropdown-item-button:focus-visible { margin-bottom: 0; } -.note-list-wrapper .note-book-card .bx { +.note-list-wrapper .note-book-card .tn-icon { color: var(--left-pane-icon-color) !important; } @@ -748,11 +762,6 @@ li.dropdown-item a.dropdown-item-button:focus-visible { filter: contrast(105%); } -.note-list.grid-view .note-book-card img { - object-fit: cover !important; - width: 100%; -} - .note-list.grid-view .ck-content { line-height: 1.3; } diff --git a/apps/client/src/stylesheets/theme-next/dialogs.css b/apps/client/src/stylesheets/theme-next/dialogs.css index ffe6af9a5..613fb94f3 100644 --- a/apps/client/src/stylesheets/theme-next/dialogs.css +++ b/apps/client/src/stylesheets/theme-next/dialogs.css @@ -423,6 +423,6 @@ div.tn-tool-dialog { font-size: unset; } -.note-type-chooser-dialog div.note-type-dropdown .dropdown-item span.bx { +.note-type-chooser-dialog div.note-type-dropdown .dropdown-item span.tn-icon { margin-inline-end: .25em; -} \ No newline at end of file +} diff --git a/apps/client/src/stylesheets/theme-next/forms.css b/apps/client/src/stylesheets/theme-next/forms.css index 6c4799da3..12f361c2f 100644 --- a/apps/client/src/stylesheets/theme-next/forms.css +++ b/apps/client/src/stylesheets/theme-next/forms.css @@ -62,10 +62,10 @@ button.ck.ck-button:is(.ck-button-action, .ck-button-save, .ck-button-cancel, .c } /* Button's icon */ -button.btn.btn-primary span.bx, -button.btn.btn-secondary span.bx, -button.btn.btn-sm span.bx, -button.btn.btn-success span.bx { +button.btn.btn-primary span.tn-icon, +button.btn.btn-secondary span.tn-icon, +button.btn.btn-sm span.tn-icon, +button.btn.btn-success span.tn-icon { color: var(--cmd-button-icon-color); padding-inline-end: 0.35em; font-size: 1.2em; @@ -353,6 +353,11 @@ label.input-group.tn-number-unit-pair input { padding-inline-end: 0; } +:root .input-group > pre[aria-hidden="true"] { + margin: 0; + padding: 0; +} + /* Combo box-like dropdown buttons */ .select-button.dropdown-toggle::after { diff --git a/apps/client/src/stylesheets/theme-next/notes/text.css b/apps/client/src/stylesheets/theme-next/notes/text.css index d31acc280..dc025bb66 100644 --- a/apps/client/src/stylesheets/theme-next/notes/text.css +++ b/apps/client/src/stylesheets/theme-next/notes/text.css @@ -634,6 +634,10 @@ html .note-detail-editable-text :not(figure, .include-note, hr):first-child { font-weight: 300; } +.ck-content strong { + font-weight: 600; +} + .ck-content hr { margin: 5px 0; height: 1px; @@ -678,8 +682,8 @@ html .note-detail-editable-text :not(figure, .include-note, hr):first-child { .ck-content a.ck-widget.ck-widget_selected, .ck-content a.ck-link_selected { - outline: 2px solid var(--input-focus-outline-color); - outline-offset: 2px; + outline: none; + box-shadow: 0 0 0 2px var(--link-selection-outline-color); background: var(--link-hover-background); } @@ -692,7 +696,7 @@ html .note-detail-editable-text :not(figure, .include-note, hr):first-child { text-decoration: none; } -.ck-content a.reference-link.use-note-color > span { +.ck-content a.reference-link > span.use-note-color { color: var(--custom-color, inherit); } diff --git a/apps/client/src/stylesheets/theme-next/pages.css b/apps/client/src/stylesheets/theme-next/pages.css index cf5bf0fe1..f323d0000 100644 --- a/apps/client/src/stylesheets/theme-next/pages.css +++ b/apps/client/src/stylesheets/theme-next/pages.css @@ -151,6 +151,11 @@ --options-title-font-size: .75rem; --options-title-offset: 13px; } + +.note-split.options { + --preferred-max-content-width: var(--options-card-max-width); +} + /* Create a gap at the top of the option pages */ .note-detail-content-widget-content.options>*:first-child { margin-top: var(--options-first-item-top-margin, 1em); @@ -172,6 +177,10 @@ height: 0; } +body.experimental-feature-new-layout .note-detail-content-widget-content.options { + padding-inline: 25px; +} + .options-section:not(.tn-no-card) { margin-bottom: calc(var(--options-title-offset) + 26px) !important; box-shadow: var(--card-box-shadow); @@ -181,10 +190,6 @@ padding: var(--options-card-padding); } -body.prefers-centered-content .options-section:not(.tn-no-card) { - margin-inline: auto; -} - body.desktop .options-section:not(.tn-no-card) { min-width: var(--options-card-min-width); max-width: var(--options-card-max-width); diff --git a/apps/client/src/stylesheets/theme-next/shell.css b/apps/client/src/stylesheets/theme-next/shell.css index 78ccc9455..5920ef0e9 100644 --- a/apps/client/src/stylesheets/theme-next/shell.css +++ b/apps/client/src/stylesheets/theme-next/shell.css @@ -497,7 +497,7 @@ div.bookmark-folder-widget .note-link:hover a { } /* The item's icon */ -div.bookmark-folder-widget .note-link .bx { +div.bookmark-folder-widget .note-link .tn-icon { color: var(--menu-item-icon-color); font-size: 1.2em; } @@ -1085,7 +1085,7 @@ body.desktop:not(.background-effects.platform-win32) #root-widget.horizontal-lay margin-top: calc((var(--tab-bar-height) - var(--tab-height)) * -1); } -body.layout-horizontal .tab-row-widget .note-tab .note-tab-wrapper { +body.layout-horizontal div.tab-row-widget div.note-tab div.note-tab-wrapper { border-bottom-left-radius: 0; border-bottom-right-radius: 0; } @@ -1374,6 +1374,10 @@ body.mobile .note-title { border-bottom: 2px solid #0000001c !important; } +body.experimental-feature-new-layout #center-pane .note-split > div.alert { + margin-top: 0; +} + /* * Promoted attributes */ @@ -1799,6 +1803,10 @@ div.find-replace-widget div.find-widget-found-wrapper > span { background: var(--right-pane-background-color); } +#right-pane > * { + animation: fade-in 200ms ease-in; +} + #right-pane div.card-header { align-items: center; border: 0; diff --git a/apps/client/src/stylesheets/tree.css b/apps/client/src/stylesheets/tree.css index c5de2c629..6b400315d 100644 --- a/apps/client/src/stylesheets/tree.css +++ b/apps/client/src/stylesheets/tree.css @@ -229,11 +229,11 @@ span.fancytree-node.archived { opacity: 0.6; } -.fancytree-node:hover .bx.tree-item-button { +.fancytree-node:hover .tn-icon.tree-item-button { display: inline-block; } -.bx.tree-item-button { +.tn-icon.tree-item-button { display: none; font-size: 120%; cursor: pointer; @@ -243,7 +243,7 @@ span.fancytree-node.archived { border-radius: 5px; } -.unhoist-button.bx.tree-item-button { +.unhoist-button.tn-icon.tree-item-button { margin-inline-start: 0; /* unhoist button is on the left and doesn't need more margin */ display: block; /* keep always visible */ } diff --git a/apps/client/src/translations/ar/translation.json b/apps/client/src/translations/ar/translation.json index 81dc8ff89..887e4f24d 100644 --- a/apps/client/src/translations/ar/translation.json +++ b/apps/client/src/translations/ar/translation.json @@ -11,11 +11,25 @@ }, "toast": { "critical-error": { - "title": "خطأ فادح" + "title": "خطأ فادح", + "message": "حدث خطأ حرج يمنع تشغيل تطبيق العميل:\n\n{{message}}\n\nيُرجّح أن يكون سبب هذا الخطأ هو تعطل أحد البرامج النصية بشكل غير متوقع. حاول تشغيل التطبيق في الوضع الآمن لحل المشكلة." }, "widget-error": { - "title": "فشل في البدء بعنصر الواجهة" - } + "title": "فشل في البدء بعنصر الواجهة", + "message-custom": "تعذر تهيئة عنصر واجهة المستخدم المخصص من الملاحظة ذات المعرّف \"{{id}}\" والعنوان \"{{title}}\" بسبب:\n\n{{message}}", + "message-unknown": "تعذر تهيئة عنصر واجهة المستخدم غير المعروف بسبب:\n\n{{message}}" + }, + "bundle-error": { + "title": "فشل تحميل البرنامج النصي المخصص", + "message": "تعذر تنفيذ البرنامج النصي بسبب:\n\n{{message}}" + }, + "widget-list-error": { + "title": "فشل في الحصول على قائمة الأدوات من الخادم" + }, + "widget-render-error": { + "title": "فشل عرض عنصر واجهة مستخدم React مخصص" + }, + "widget-missing-parent": "لا تحتوي الأداة المخصصة على خاصية إلزامية '{{property}}'.\n\nإذا كان من المفترض تشغيل هذا البرنامج النصي بدون عنصر واجهة مستخدم، فاستخدم '#run=frontendStartup' بدلاً من ذلك." }, "add_link": { "add_link": "أضافة رابط", @@ -209,7 +223,6 @@ "backlink_other": "" }, "note_icon": { - "category": "الفئة:", "search": "بحث:", "change_note_icon": "تغيير ايقونة الملاحظة", "reset-default": "اعادة تعيين الى الايقونة الافتراضية" diff --git a/apps/client/src/translations/ca/translation.json b/apps/client/src/translations/ca/translation.json index 2d7965682..97cab3477 100644 --- a/apps/client/src/translations/ca/translation.json +++ b/apps/client/src/translations/ca/translation.json @@ -146,7 +146,6 @@ "relation": "relació" }, "note_icon": { - "category": "Categoria:", "search": "Cerca:" }, "basic_properties": { diff --git a/apps/client/src/translations/cn/translation.json b/apps/client/src/translations/cn/translation.json index 4ff56779b..1956553e1 100644 --- a/apps/client/src/translations/cn/translation.json +++ b/apps/client/src/translations/cn/translation.json @@ -21,8 +21,17 @@ }, "bundle-error": { "title": "加载自定义脚本失败", - "message": "来自 ID 为 \"{{id}}\"、标题为 \"{{title}}\" 的笔记的脚本因以下原因无法执行:\n\n{{message}}" - } + "message": "脚本因以下原因无法执行:\n\n{{message}}" + }, + "widget-list-error": { + "title": "无法从服务器取得小部件清单" + }, + "widget-render-error": { + "title": "渲染自定义 React 小部件失败" + }, + "widget-missing-parent": "自定义小部件未定义强制性的 \"{{property}}\" 属性。\n\n如果此脚本需要在没有 UI 元素的情况下运行,请改用“#run=frontendStartup”。", + "open-script-note": "打开脚本笔记", + "scripting-error": "自定义脚本错误:{{title}}" }, "add_link": { "add_link": "添加链接", @@ -755,7 +764,6 @@ }, "note_icon": { "change_note_icon": "更改笔记图标", - "category": "类别:", "search": "搜索:", "reset-default": "重置为默认图标" }, @@ -817,7 +825,8 @@ }, "inherited_attribute_list": { "title": "继承的属性", - "no_inherited_attributes": "没有继承的属性。" + "no_inherited_attributes": "没有继承的属性。", + "none": "无" }, "note_info_widget": { "note_id": "笔记 ID", @@ -1587,7 +1596,11 @@ "note_detail": { "could_not_find_typewidget": "找不到类型为 '{{type}}' 的 typeWidget", "printing": "正在打印…", - "printing_pdf": "正在导出为PDF…" + "printing_pdf": "正在导出为PDF…", + "print_report_title": "打印报告", + "print_report_collection_content_other": "集合中的 {{count}} 篇笔记无法打印,因为它们不受支持或受到保护。", + "print_report_collection_details_button": "查看详情", + "print_report_collection_details_ignored_notes": "忽略的笔记" }, "note_title": { "placeholder": "请输入笔记标题...", @@ -1597,7 +1610,8 @@ "note_type_switcher_others": "其他笔记类型", "note_type_switcher_templates": "模板", "note_type_switcher_collection": "集合", - "edited_notes": "编辑过的笔记" + "edited_notes": "今天编辑过的笔记", + "promoted_attributes": "升级属性" }, "search_result": { "no_notes_found": "没有找到符合搜索条件的笔记。", @@ -2200,5 +2214,8 @@ "toggle": "切换右侧面板", "custom_widget_go_to_source": "跳转到源码", "empty_message": "这篇笔记没有展示内容" + }, + "attributes_panel": { + "title": "笔记属性" } } diff --git a/apps/client/src/translations/de/translation.json b/apps/client/src/translations/de/translation.json index 0b3a5cf46..5667b953d 100644 --- a/apps/client/src/translations/de/translation.json +++ b/apps/client/src/translations/de/translation.json @@ -21,7 +21,10 @@ }, "bundle-error": { "title": "Benutzerdefiniertes Skript konnte nicht geladen werden", - "message": "Skript aus der Notiz \"{{title}}\" mit der ID \"{{id}}\", konnte nicht ausgeführt werden wegen:\n\n{{message}}" + "message": "Skript konnte nicht ausgeführt werden wegen:\n\n{{message}}" + }, + "widget-list-error": { + "title": "Abruf der Liste von Widgets vom Server ist fehlgeschlagen" } }, "add_link": { @@ -746,7 +749,6 @@ }, "note_icon": { "change_note_icon": "Notiz-Icon ändern", - "category": "Kategorie:", "search": "Suche:", "reset-default": "Standard wiederherstellen" }, diff --git a/apps/client/src/translations/en/translation.json b/apps/client/src/translations/en/translation.json index 946971bf8..7712ee91a 100644 --- a/apps/client/src/translations/en/translation.json +++ b/apps/client/src/translations/en/translation.json @@ -21,8 +21,17 @@ }, "bundle-error": { "title": "Failed to load a custom script", - "message": "Script from note with ID \"{{id}}\", titled \"{{title}}\" could not be executed due to:\n\n{{message}}" - } + "message": "Script could not be executed due to:\n\n{{message}}" + }, + "widget-list-error": { + "title": "Failed to obtain the list of widgets from the server" + }, + "widget-render-error": { + "title": "Failed to render a custom React widget" + }, + "widget-missing-parent": "Custom widget does not have mandatory '{{property}}' property defined.\n\nIf this script is meant to be run without a UI element, use '#run=frontendStartup' instead.", + "open-script-note": "Open script note", + "scripting-error": "Custom script error: {{title}}" }, "add_link": { "add_link": "Add link", @@ -756,9 +765,16 @@ }, "note_icon": { "change_note_icon": "Change note icon", - "category": "Category:", "search": "Search:", - "reset-default": "Reset to default icon" + "search_placeholder_one": "Search {{number}} icons across {{count}} packs", + "search_placeholder_other": "Search {{number}} icons across {{count}} packs", + "search_placeholder_filtered": "Search {{number}} icons in {{name}}", + "reset-default": "Reset to default icon", + "filter": "Filter", + "filter-none": "All icons", + "filter-default": "Default icons", + "icon_tooltip": "{{name}}\nIcon pack: {{iconPack}}", + "no_results": "No icons found." }, "basic_properties": { "note_type": "Note type", @@ -1604,7 +1620,7 @@ "will_be_deleted_in": "This attachment will be automatically deleted in {{time}}", "will_be_deleted_soon": "This attachment will be automatically deleted soon", "deletion_reason": ", because the attachment is not linked in the note's content. To prevent deletion, add the attachment link back into the content or convert the attachment into note.", - "role_and_size": "Role: {{role}}, Size: {{size}}", + "role_and_size": "Role: {{role}}, size: {{size}}, MIME: {{- mimeType}}", "link_copied": "Attachment link copied to clipboard.", "unrecognized_role": "Unrecognized attachment role '{{role}}'." }, @@ -1761,7 +1777,12 @@ "note_detail": { "could_not_find_typewidget": "Could not find typeWidget for type '{{type}}'", "printing": "Printing in progress...", - "printing_pdf": "Exporting to PDF in progress..." + "printing_pdf": "Exporting to PDF in progress...", + "print_report_title": "Print report", + "print_report_collection_content_one": "{{count}} note in the collection could not be printed because they are not supported or they are protected.", + "print_report_collection_content_other": "{{count}} notes in the collection could not be printed because they are not supported or they are protected.", + "print_report_collection_details_button": "See details", + "print_report_collection_details_ignored_notes": "Ignored notes" }, "note_title": { "placeholder": "type note's title here...", @@ -1771,7 +1792,8 @@ "note_type_switcher_others": "Other note type", "note_type_switcher_templates": "Template", "note_type_switcher_collection": "Collection", - "edited_notes": "Edited notes" + "edited_notes": "Notes edited on this day", + "promoted_attributes": "Promoted attributes" }, "search_result": { "no_notes_found": "No notes have been found for given search parameters.", diff --git a/apps/client/src/translations/es/translation.json b/apps/client/src/translations/es/translation.json index 9a289d7b8..765b45497 100644 --- a/apps/client/src/translations/es/translation.json +++ b/apps/client/src/translations/es/translation.json @@ -749,7 +749,6 @@ }, "note_icon": { "change_note_icon": "Cambiar icono de nota", - "category": "Categoría:", "search": "Búsqueda:", "reset-default": "Restablecer a icono por defecto" }, diff --git a/apps/client/src/translations/fr/translation.json b/apps/client/src/translations/fr/translation.json index 8a965d553..339054338 100644 --- a/apps/client/src/translations/fr/translation.json +++ b/apps/client/src/translations/fr/translation.json @@ -756,7 +756,6 @@ }, "note_icon": { "change_note_icon": "Changer l'icône de note", - "category": "Catégorie :", "search": "Recherche :", "reset-default": "Réinitialiser l'icône par défaut" }, diff --git a/apps/client/src/translations/it/translation.json b/apps/client/src/translations/it/translation.json index 6e07dbd71..d05f06be0 100644 --- a/apps/client/src/translations/it/translation.json +++ b/apps/client/src/translations/it/translation.json @@ -523,7 +523,8 @@ }, "toc": { "table_of_contents": "Sommario", - "options": "Opzioni" + "options": "Opzioni", + "no_headings": "Nessun titolo." }, "table_of_contents": { "title": "Sommario", @@ -556,7 +557,13 @@ }, "highlights_list_2": { "title": "Punti salienti", - "options": "Opzioni" + "options": "Opzioni", + "title_with_count_one": "{{count}} evidenza", + "title_with_count_many": "{{count}} evidenze", + "title_with_count_other": "{{count}} evidenze", + "modal_title": "Configura elenco dei punti salienti", + "menu_configure": "Configura elenco dei punti salienti...", + "no_highlights": "Nessun punto saliente trovato." }, "quick-search": { "placeholder": "Ricerca rapida", @@ -1326,7 +1333,6 @@ }, "note_icon": { "change_note_icon": "Cambia icona nota", - "category": "Categoria:", "search": "Ricerca:", "reset-default": "Ripristina l'icona predefinita" }, @@ -1388,7 +1394,8 @@ }, "inherited_attribute_list": { "title": "Attributi ereditati", - "no_inherited_attributes": "Nessun attributo ereditato." + "no_inherited_attributes": "Nessun attributo ereditato.", + "none": "nessuno" }, "note_info_widget": { "note_id": "ID nota", @@ -1400,7 +1407,8 @@ "calculate": "calcolare", "subtree_size": "(dimensione del sottoalbero: {{size}} in {{count}} note)", "title": "Nota informativa", - "show_similar_notes": "Mostra note simili" + "show_similar_notes": "Mostra note simili", + "mime": "Tipo MIME" }, "note_map": { "open_full": "Espandi completamente", @@ -2095,14 +2103,20 @@ "background_effects_title": "Gli effetti di sfondo sono ora stabili", "background_effects_message": "Sui dispositivi Windows, gli effetti di sfondo sono ora completamente stabili. Gli effetti di sfondo aggiungono un tocco di colore all'interfaccia utente sfocando lo sfondo retrostante. Questa tecnica è utilizzata anche in altre applicazioni come Esplora risorse di Windows.", "background_effects_button": "Abilita gli effetti di sfondo", - "dismiss": "Congedare" + "dismiss": "Congedare", + "new_layout_title": "Nuovo layout", + "new_layout_message": "Abbiamo introdotto un layout modernizzato per Trilium. La barra multifunzione è stata rimossa e integrata perfettamente nell'interfaccia principale, con una nuova barra di stato e sezioni espandibili (come gli attributi promossi) che assumono le funzioni chiave.\n\nIl nuovo layout è abilitato di default e può essere temporaneamente disabilitato tramite Opzioni → Aspetto.", + "new_layout_button": "Maggiori informazioni" }, "settings": { "related_settings": "Impostazioni correlate" }, "settings_appearance": { "related_code_blocks": "Schema di colori per i blocchi di codice nelle note di testo", - "related_code_notes": "Schema di colori per le note del codice" + "related_code_notes": "Schema di colori per le note del codice", + "ui": "Interfaccia utente", + "ui_old_layout": "Vecchio layout", + "ui_new_layout": "Nuovo layout" }, "units": { "percentage": "%" @@ -2159,13 +2173,18 @@ "execute_script": "Esegui script", "execute_script_description": "Questa nota è una nota di script. Clicca per eseguire lo script.", "execute_sql": "Esegui SQL", - "execute_sql_description": "Questa nota è una nota SQL. Clicca per eseguire la query SQL." + "execute_sql_description": "Questa nota è una nota SQL. Clicca per eseguire la query SQL.", + "shared_copy_to_clipboard": "Copia link negli appunti", + "shared_open_in_browser": "Apri il link nel browser", + "shared_unshare": "Rimuovi condivisione" }, "breadcrumb": { "workspace_badge": "Area di lavoro", "scroll_to_top_title": "Vai all'inizio della nota", "hoisted_badge": "Sollevato", - "hoisted_badge_title": "Abbassato" + "hoisted_badge_title": "Abbassato", + "create_new_note": "Crea nuova nota secondaria", + "empty_hide_archived_notes": "Nascondi note archiviate" }, "status_bar": { "language_title": "Cambia lingua dei contenuti", @@ -2191,5 +2210,14 @@ "note_paths_other": "{{count}} percorsi", "note_paths_title": "Nota percorsi", "code_note_switcher": "Cambia modalità lingua" + }, + "attributes_panel": { + "title": "Attributi delle note" + }, + "right_pane": { + "empty_message": "Nulla da segnalare per questa nota", + "empty_button": "Nascondi il pannello", + "toggle": "Attiva/disattiva pannello destro", + "custom_widget_go_to_source": "Vai al codice sorgente" } } diff --git a/apps/client/src/translations/ja/translation.json b/apps/client/src/translations/ja/translation.json index b4478749c..8f5ee621e 100644 --- a/apps/client/src/translations/ja/translation.json +++ b/apps/client/src/translations/ja/translation.json @@ -21,8 +21,17 @@ }, "bundle-error": { "title": "カスタムスクリプトの読み込みに失敗しました", - "message": "ノートID”{{id}}”, ノートタイトル “{{title}}” のスクリプトを実行できませんでした。理由は以下の通りです:\n\n{{message}}" - } + "message": "次の理由によりスクリプトを実行できませんでした:\n\n{{message}}" + }, + "widget-list-error": { + "title": "サーバーからウィジェットのリストを取得できませんでした" + }, + "widget-render-error": { + "title": "カスタム React ウィジェットのレンダリングに失敗しました" + }, + "widget-missing-parent": "カスタムウィジェットに必須の '{{property}}' プロパティが定義されていません。\n\nこのスクリプトを UI 要素なしで実行する場合は、代わりに '#run=frontendStartup' を使用してください。", + "open-script-note": "スクリプトノートを開く", + "scripting-error": "カスタムスクリプトエラー: {{title}}" }, "add_link": { "add_link": "リンクを追加", @@ -143,7 +152,6 @@ }, "note_icon": { "change_note_icon": "ノートアイコンの変更", - "category": "カテゴリー:", "search": "検索:", "reset-default": "アイコンをデフォルトに戻す" }, @@ -152,7 +160,7 @@ "editable": "編集可能", "basic_properties": "基本プロパティ", "language": "言語", - "configure_code_notes": "コードノートを設定しています..." + "configure_code_notes": "コードノートを設定..." }, "i18n": { "title": "ローカライゼーション", @@ -1254,7 +1262,8 @@ "note_type_switcher_others": "その他のノートタイプ", "note_type_switcher_templates": "テンプレート", "note_type_switcher_collection": "コレクション", - "edited_notes": "編集済みノート" + "edited_notes": "この日に編集されたノート", + "promoted_attributes": "プロモート属性" }, "search_result": { "no_notes_found": "指定された検索パラメータに該当するノートは見つかりませんでした。", @@ -1621,7 +1630,8 @@ }, "inherited_attribute_list": { "title": "継承属性", - "no_inherited_attributes": "継承属性はありません。" + "no_inherited_attributes": "継承属性はありません。", + "none": "なし" }, "note_map": { "open_full": "拡大表示", @@ -1919,7 +1929,11 @@ "note_detail": { "could_not_find_typewidget": "タイプ {{type}} の typeWidget が見つかりませんでした", "printing": "印刷中です...", - "printing_pdf": "PDF へのエクスポート中です..." + "printing_pdf": "PDF へのエクスポート中です...", + "print_report_title": "レポートを印刷", + "print_report_collection_content_other": "コレクション内の {{count}} 件のノートは、サポートされていないか保護されているため、印刷できませんでした。", + "print_report_collection_details_button": "詳細を見る", + "print_report_collection_details_ignored_notes": "無視されたノート" }, "watched_file_update_status": { "ignore_this_change": "この変更を無視する", @@ -2200,5 +2214,8 @@ "empty_button": "パネルを非表示", "toggle": "右パネルを切り替え", "custom_widget_go_to_source": "ソースコードへ移動" + }, + "attributes_panel": { + "title": "ノート属性" } } diff --git a/apps/client/src/translations/pl/translation.json b/apps/client/src/translations/pl/translation.json index 9eab5ddac..b64343c8f 100644 --- a/apps/client/src/translations/pl/translation.json +++ b/apps/client/src/translations/pl/translation.json @@ -22,7 +22,15 @@ "bundle-error": { "title": "Nie udało się załadować niestandardowego skryptu", "message": "Skrypt z notatki o ID \"{{id}}\", zatytułowany \"{{title}}\", nie mógł zostać wykonany z powodu:\n\n{{message}}" - } + }, + "widget-list-error": { + "title": "Nie udało się pobrać listy widżetów z serwera" + }, + "widget-render-error": { + "title": "Nie udało się wyrenderować niestandardowego widżetu React" + }, + "widget-missing-parent": "Niestandardowy widżet nie ma zdefiniowanej obowiązkowej właściwości „{{property}}”.", + "open-script-note": "Otwórz notatkę ze skryptem" }, "add_link": { "add_link": "Dodaj link", @@ -434,7 +442,8 @@ }, "inherited_attribute_list": { "title": "Dziedziczone atrybuty", - "no_inherited_attributes": "Brak dziedziczonych atrybutów." + "no_inherited_attributes": "Brak dziedziczonych atrybutów.", + "none": "brak" }, "note_info_widget": { "note_id": "ID notatki", @@ -1277,7 +1286,6 @@ }, "note_icon": { "change_note_icon": "Zmień ikonę notatki", - "category": "Kategoria:", "search": "Szukaj:", "reset-default": "Przywróć domyślną ikonę" }, @@ -1937,7 +1945,10 @@ "options": "Opcje", "modal_title": "Konfiguracja listy wyróżnień", "menu_configure": "Konfiguracja listy wyróżnień...", - "no_highlights": "Nie znaleziono wyróżnień." + "no_highlights": "Nie znaleziono wyróżnień.", + "title_with_count_one": "{{count}} podświetlenie", + "title_with_count_few": "{{count}} podświetlenia", + "title_with_count_many": "{{count}} podświetleń" }, "quick-search": { "placeholder": "Szybkie wyszukiwanie", @@ -2008,7 +2019,8 @@ }, "toc": { "table_of_contents": "Spis treści", - "options": "Opcje" + "options": "Opcje", + "no_headings": "Brak nagłówków." }, "watched_file_update_status": { "file_last_modified": "Plik został ostatnio zmodyfikowany .", @@ -2206,5 +2218,14 @@ "scroll_to_top_title": "Przejdź na początek notatki", "create_new_note": "Utwórz nową notatkę podrzędną", "empty_hide_archived_notes": "Ukryj zarchiwizowane notatki" + }, + "attributes_panel": { + "title": "Atrybuty notatki" + }, + "right_pane": { + "empty_message": "Brak elementów do wyświetlenia dla tej notatki", + "empty_button": "Ukryj panel", + "toggle": "Pokaż/ukryj prawy panel", + "custom_widget_go_to_source": "Przejdź do kodu źródłowego" } } diff --git a/apps/client/src/translations/pt/translation.json b/apps/client/src/translations/pt/translation.json index 6dfd0eeb6..ef4c913df 100644 --- a/apps/client/src/translations/pt/translation.json +++ b/apps/client/src/translations/pt/translation.json @@ -724,7 +724,6 @@ }, "note_icon": { "change_note_icon": "Alterar ícone da nota", - "category": "Categoria:", "search": "Pesquisa:", "reset-default": "Redefinir para o ícone padrão" }, diff --git a/apps/client/src/translations/pt_br/translation.json b/apps/client/src/translations/pt_br/translation.json index 6a875cee9..f57575b71 100644 --- a/apps/client/src/translations/pt_br/translation.json +++ b/apps/client/src/translations/pt_br/translation.json @@ -29,7 +29,15 @@ "bundle-error": { "title": "Falha para carregar o script customizado", "message": "O script da nota com ID \"{{id}}\", intitulada \"{{title}}\", não pôde ser executado devido a:\n\n{{message}}" - } + }, + "widget-list-error": { + "title": "Falha ao obter a lista de widgets do servidor" + }, + "widget-render-error": { + "title": "Falha ao renderizar um widget React personalizado" + }, + "widget-missing-parent": "O widget personalizado não possui a propriedade obrigatória '{{property}}' definida.", + "open-script-note": "Abrir nota de script" }, "add_link": { "add_link": "Adicionar link", @@ -46,7 +54,10 @@ "save": "Salvar", "edit_branch_prefix": "Editar Prefixo do Branch", "help_on_tree_prefix": "Ajuda sobre o prefixo da árvore de notas", - "branch_prefix_saved": "O prefixo de ramificação foi salvo." + "branch_prefix_saved": "O prefixo de ramificação foi salvo.", + "edit_branch_prefix_multiple": "Editar prefixo do ramo para {{count}} ramos", + "branch_prefix_saved_multiple": "O prefixo do ramo foi salvo para {{count}} ramos.", + "affected_branches": "Ramos afetados ({{count}}):" }, "bulk_actions": { "bulk_actions": "Ações em massa", @@ -254,7 +265,8 @@ "export_status": "Status da exportação", "export_in_progress": "Exportação em andamento: {{progressCount}}", "export_finished_successfully": "Exportação concluída com sucesso.", - "format_pdf": "PDF – para impressão ou compartilhamento." + "format_pdf": "PDF – para impressão ou compartilhamento.", + "share-format": "HTML para publicação na web — usa o mesmo tema das notas compartilhadas, mas pode ser publicado como um site estático." }, "help": { "noteNavigation": "Navegação de notas", @@ -308,7 +320,8 @@ "other": "Outros", "quickSearch": "focar no campo de pesquisa rápida", "inPageSearch": "pesquisa na página", - "title": "Folha de Dicas" + "title": "Folha de Dicas", + "editShortcuts": "Editar atalhos de teclado" }, "import": { "importIntoNote": "Importar para a nota", @@ -334,7 +347,8 @@ }, "import-status": "Status da importação", "in-progress": "Importação em andamento: {{progress}}", - "successful": "Importação concluída com sucesso." + "successful": "Importação concluída com sucesso.", + "importZipRecommendation": "Ao importar um arquivo ZIP, a hierarquia de notas refletirá a estrutura de subdiretórios dentro do arquivo." }, "include_note": { "dialog_title": "Incluir nota", @@ -349,7 +363,8 @@ "info": { "modalTitle": "Mensagem informativa", "closeButton": "Fechar", - "okButton": "OK" + "okButton": "OK", + "copy_to_clipboard": "Copiar para a área de transferência" }, "jump_to_note": { "search_placeholder": "Pesquise uma nota pelo nome ou digite > para comandos...", @@ -771,7 +786,7 @@ "import-into-note": "Importar na nota", "apply-bulk-actions": "Aplicar ações em massa", "converted-to-attachments": "{{count}} notas foram convertidas em anexos.", - "convert-to-attachment-confirm": "Tem certeza de que deseja converter as notas selecionadas em anexos de suas notas-pai?", + "convert-to-attachment-confirm": "Tem certeza de que deseja converter as notas selecionadas em anexos de suas notas pai? Esta operação se aplica apenas a notas de imagem; outras notas serão ignoradas.", "open-in-popup": "Edição rápida", "archive": "Ficheiro", "unarchive": "Desarquivar" @@ -789,7 +804,7 @@ "show_attachments_description": "Exibir anexos da nota", "search_notes_title": "Buscar Notas", "search_notes_description": "Abrir busca avançada", - "configure_launch_bar_description": "Abrir a configuração da barra de lançamento, para adicionar ou remover itens." + "configure_launch_bar_description": "Abrir a configuração da barra de atalho, para adicionar ou remover itens." }, "delete_note": { "delete_note": "Excluir nota", @@ -882,7 +897,7 @@ "zoom_out": "Reduzir", "reset_zoom_level": "Redefinir Zoom", "zoom_in": "Aumentar", - "configure_launchbar": "Configurar Barra de Lançamento", + "configure_launchbar": "Configurar Barra de Atalhos", "show_shared_notes_subtree": "Exibir Subárvore de Notas Compartilhadas", "advanced": "Avançado", "open_dev_tools": "Abrir Ferramentas de Desenvolvedor", @@ -897,7 +912,9 @@ "logout": "Sair", "show-cheatsheet": "Exibir Cheatsheet", "toggle-zen-mode": "Modo Zen", - "reload_hint": "Recarregar pode ajudar com alguns problemas visuais sem reiniciar toda a aplicação." + "reload_hint": "Recarregar pode ajudar com alguns problemas visuais sem reiniciar toda a aplicação.", + "new-version-available": "Nova atualização disponível", + "download-update": "Obter a versão {{latestVersion}}" }, "zen_mode": { "button_exit": "Sair do Modo Zen" @@ -935,7 +952,14 @@ "convert_into_attachment_successful": "A nota '{{title}}' foi convertida para anexo.", "print_pdf": "Exportar como PDF…", "open_note_externally_title": "O arquivo será aberto em uma aplicação externa e monitorado por alterações. Você então poderá enviar a versão modificada de volta para o Trilium.", - "convert_into_attachment_prompt": "Você tem certeza que quer converter a nota '{{title}}' em um anexo da nota pai?" + "convert_into_attachment_prompt": "Você tem certeza que quer converter a nota '{{title}}' em um anexo da nota pai?", + "open_note_on_server": "Abrir nota no servidor", + "view_revisions": "Revisões da nota…", + "advanced": "Avançado", + "export_as_image": "Exportar como imagem", + "export_as_image_png": "PNG (raster)", + "export_as_image_svg": "SVG (vetorial)", + "note_map": "Mapa de notas" }, "protected_session_status": { "inactive": "Clique para entrar na sessão protegida", @@ -979,11 +1003,11 @@ "insert_child_note": "Inserir nota filha", "delete_this_note": "Excluir essa nota", "error_unrecognized_command": "Comando não reconhecido {{command}}", - "error_cannot_get_branch_id": "Não foi possível obter o branchId para o notePath '{{notePath}} '" + "error_cannot_get_branch_id": "Não foi possível obter o branchId para o notePath '{{notePath}} '", + "note_revisions": "Revisões de notas" }, "note_icon": { "change_note_icon": "Alterar ícone da nota", - "category": "Categoria:", "search": "Busca:", "reset-default": "Redefinir para o ícone padrão" }, @@ -1007,7 +1031,12 @@ "table": "Tabela", "geo-map": "Mapa geográfico", "board": "Quadro", - "include_archived_notes": "Exibir notas arquivadas" + "include_archived_notes": "Exibir notas arquivadas", + "expand_tooltip": "Expande os filhos diretos desta coleção (um nível). Para mais opções, pressione a seta à direita.", + "expand_first_level": "Expandir filhos diretos", + "expand_nth_level": "Expandir {{depth}} níveis", + "expand_all_levels": "Expandir todos os níveis", + "presentation": "Apresentação" }, "edited_notes": { "no_edited_notes_found": "Ainda não há nenhuma nota editada neste dia…", @@ -1020,7 +1049,7 @@ "file_type": "Tipo do arquivo", "file_size": "Tamanho do arquivo", "download": "Baixar", - "open": "Abrir", + "open": "Abrir externamente", "upload_new_revision": "Enviar nova revisão", "upload_success": "Uma nova revisão de arquivo foi enviada.", "upload_failed": "O envio de uma nova revisão de arquivo falhou.", @@ -1040,7 +1069,8 @@ }, "inherited_attribute_list": { "title": "Atributos Herdados", - "no_inherited_attributes": "Nenhum atributo herdado." + "no_inherited_attributes": "Nenhum atributo herdado.", + "none": "nenhum" }, "note_info_widget": { "note_id": "ID da Nota", @@ -1051,7 +1081,9 @@ "calculate": "calcular", "title": "Informações da nota", "subtree_size": "(tamanho da subárvore: {{size}} em {{count}} notas)", - "note_size_info": "O tamanho da nota fornece uma estimativa aproximada dos requisitos de armazenamento para esta nota. Leva em conta o conteúdo e o conteúdo de suas revisões de nota." + "note_size_info": "O tamanho da nota fornece uma estimativa aproximada dos requisitos de armazenamento para esta nota. Leva em conta o conteúdo e o conteúdo de suas revisões de nota.", + "mime": "Tipo MIME", + "show_similar_notes": "Mostrar notas semelhantes" }, "note_map": { "open_full": "Expandir completamente", @@ -1111,7 +1143,8 @@ "search_note_saved": "Nota de pesquisa foi salva em {{- notePathTitle}}", "fast_search_description": "A opção de pesquisa rápida desabilita a pesquisa de texto completo do conteúdo de nota, o que pode acelerar a pesquisa em grandes bancos de dados.", "include_archived_notes_description": "As notas arquivadas são por padrão excluídas dos resultados da pesquisa, com esta opção elas serão incluídas.", - "debug_description": "A depuração irá imprimir informações adicionais no console para ajudar na depuração de consultas complexas" + "debug_description": "A depuração irá imprimir informações adicionais no console para ajudar na depuração de consultas complexas", + "view_options": "Ver opções:" }, "similar_notes": { "title": "Notas Similares", @@ -1192,7 +1225,13 @@ }, "editable_text": { "placeholder": "Digite o conteúdo da sua nota aqui…", - "auto-detect-language": "Detectado automaticamente" + "auto-detect-language": "Detectado automaticamente", + "editor_crashed_title": "O editor de texto travou", + "editor_crashed_content": "Seu conteúdo foi recuperado com sucesso, mas algumas das suas alterações mais recentes podem não ter sido salvas.", + "editor_crashed_details_button": "Veja mais detalhes...", + "editor_crashed_details_intro": "Se você encontrar este erro várias vezes, considere relatá-lo no GitHub colando as informações abaixo.", + "editor_crashed_details_title": "Informação técnica", + "keeps-crashing": "O componente de edição continua travando. Tente reiniciar o Trilium. Se o problema persistir, considere criar um relatório de bug." }, "empty": { "search_placeholder": "buscar uma nota pelo nome", @@ -1299,7 +1338,8 @@ "title": "Largura do Conteúdo", "max_width_label": "Largura máxima do conteúdo", "max_width_unit": "pixels", - "default_description": "Por padrão, o Trilium limita a largura máxima do conteúdo para melhorar a legibilidade em janelas maximizadas em telas wide." + "default_description": "Por padrão, o Trilium limita a largura máxima do conteúdo para melhorar a legibilidade em janelas maximizadas em telas wide.", + "centerContent": "Manter conteúdo centralizado" }, "native_title_bar": { "title": "Barra de Título Nativa (requer recarregar o app)", @@ -1319,11 +1359,11 @@ "layout": "Layout", "layout-vertical-title": "Vertical", "layout-horizontal-title": "Horizontal", - "layout-vertical-description": "barra de lançamento está a esquerda (padrão)", - "layout-horizontal-description": "barra de lançamento está abaixo da barra de abas, a barra de abas agora tem a largura total." + "layout-vertical-description": "barra de atalho está a esquerda (padrão)", + "layout-horizontal-description": "barra de atalho está abaixo da barra de abas, a barra de abas agora tem a largura total." }, "note_launcher": { - "this_launcher_doesnt_define_target_note": "Este lançador não define uma nota destino." + "this_launcher_doesnt_define_target_note": "Este atalho não define uma nota destino." }, "copy_image_reference_button": { "button_title": "Copiar referência da imagem para a área de transferência, pode ser colado em uma nota de texto." @@ -1378,7 +1418,10 @@ "title": "Editor" }, "code_mime_types": { - "title": "Tipos MIME disponíveis no dropdown" + "title": "Tipos MIME disponíveis no dropdown", + "tooltip_syntax_highlighting": "Realce de sintaxe", + "tooltip_code_block_syntax": "Blocos de código em notas de texto", + "tooltip_code_note_syntax": "Notas de código" }, "vim_key_bindings": { "use_vim_keybindings_in_code_notes": "Atribuições de teclas do Vim", @@ -1498,7 +1541,13 @@ "min-days-in-first-week": "Mínimo de dias da primeira semana", "first-week-info": "Primeira semana que contenha a primeira Quinta-feira do ano é baseado na ISO 8601.", "first-week-warning": "Alterar as opções de primeira semana pode causar duplicidade nas Notas Semanais existentes e estas Notas não serão atualizadas de acordo.", - "formatting-locale": "Formato de data e número" + "formatting-locale": "Formato de data e número", + "tuesday": "Terça-feira", + "wednesday": "Quarta-feira", + "thursday": "Quinta-feira", + "friday": "Sexta-feira", + "saturday": "Sábado", + "formatting-locale-auto": "Com base no idioma do aplicativo" }, "backup": { "automatic_backup": "Backup automático", @@ -1526,7 +1575,7 @@ "mind-map": "Mapa Mental", "file": "Arquivo", "image": "Imagem", - "launcher": "Lançador", + "launcher": "Atalho", "doc": "Documento", "widget": "Widget", "confirm-change": "Não é recomentado alterar o tipo da nota quando o conteúdo da nota não está vazio. Quer continuar assim mesmo?", @@ -1569,7 +1618,13 @@ }, "highlights_list_2": { "title": "Lista de Destaques", - "options": "Opções" + "options": "Opções", + "title_with_count_one": "{{count}} destaque", + "title_with_count_many": "{{count}} destaques", + "title_with_count_other": "{{count}} destaques", + "modal_title": "Configurar lista de destaques", + "menu_configure": "Configurar lista de destaques…", + "no_highlights": "Nenhum destaque encontrado." }, "quick-search": { "placeholder": "Busca rápida", @@ -1592,23 +1647,33 @@ "refresh-saved-search-results": "Atualizar resultados de pesquisa salvos", "create-child-note": "Criar nota filha", "unhoist": "Desafixar", - "toggle-sidebar": "Alternar barra lateral" + "toggle-sidebar": "Alternar barra lateral", + "dropping-not-allowed": "Não é permitido soltar notas neste local." }, "title_bar_buttons": { "window-on-top": "Manter Janela no Topo" }, "note_detail": { - "could_not_find_typewidget": "Não foi possível encontrar typeWidget para o tipo '{{type}}'" + "could_not_find_typewidget": "Não foi possível encontrar typeWidget para o tipo '{{type}}'", + "printing": "Impressão em andamento…", + "printing_pdf": "Exportação para PDF em andamento…" }, "note_title": { - "placeholder": "digite o título da nota aqui..." + "placeholder": "digite o título da nota aqui...", + "created_on": "Criado em ", + "last_modified": "Modificado em ", + "note_type_switcher_label": "Alternar de {{type}} para:", + "note_type_switcher_others": "Outro tipo de nota", + "note_type_switcher_templates": "Modelo", + "note_type_switcher_collection": "Coleção", + "edited_notes": "Notas editadas" }, "search_result": { "no_notes_found": "Nenhuma nota encontrada para os parâmetros de busca digitados.", "search_not_executed": "A busca ainda não foi executada. Clique no botão \"Buscar\" acima para ver os resultados." }, "spacer": { - "configure_launchbar": "Configurar Barra de Lançamento" + "configure_launchbar": "Configurar Barra de Atalhos" }, "sql_result": { "no_rows": "Nenhum linha foi retornada para esta consulta" @@ -1630,7 +1695,8 @@ }, "toc": { "table_of_contents": "Tabela de Conteúdos", - "options": "Opções" + "options": "Opções", + "no_headings": "Nenhum título." }, "watched_file_update_status": { "file_last_modified": "O arquivo foi modificado pela última vez em .", @@ -1673,22 +1739,24 @@ "ws": { "sync-check-failed": "A verificação de sincronização falhou!", "consistency-checks-failed": "A verificação de consistência falhou! Veja os logs para detalhes.", - "encountered-error": "Encontrado o erro \"{{message}}\", verifique o console." + "encountered-error": "Encontrado o erro \"{{message}}\", verifique o console.", + "lost-websocket-connection-title": "Conexão com o servidor perdida", + "lost-websocket-connection-message": "Verifique a configuração do seu proxy reverso (por exemplo, nginx ou Apache) para garantir que as conexões WebSocket estejam devidamente permitidas e não estejam sendo bloqueadas." }, "hoisted_note": { "confirm_unhoisting": "A nota solicitada '{{requestedNote}}' está fora da árvore da nota fixada '{{hoistedNote}}' e você precisa desafixar para acessar a nota. Quer prosseguir e desafixar?" }, "launcher_context_menu": { - "reset_launcher_confirm": "Você deseja realmente reiniciar \"{{title}}\"? Todos os dados / configurações desta nota (e suas filhas) serão perdidos o lançador irá retornar para sua localização original.", - "add-note-launcher": "Adicionar um lançador de nota", - "add-script-launcher": "Adicionar um lançador de script", + "reset_launcher_confirm": "Você deseja realmente reiniciar \"{{title}}\"? Todos os dados / configurações desta nota (e suas filhas) serão perdidos o atalho irá retornar para sua localização original.", + "add-note-launcher": "Adicionar um atalho de nota", + "add-script-launcher": "Adicionar um atalho de script", "add-custom-widget": "Adicionar um componente personalizado", "add-spacer": "Adicionar um espaçador", "delete": "Excluir ", "reset": "Reiniciar", - "move-to-visible-launchers": "Mover para lançadores visíveis", - "move-to-available-launchers": "Mover para lançadores disponíveis", - "duplicate-launcher": "Duplicar o lançador " + "move-to-visible-launchers": "Mover para atalhos visíveis", + "move-to-available-launchers": "Mover para atalhos disponíveis", + "duplicate-launcher": "Duplicar o atalho " }, "highlighting": { "title": "Blocos de Código", @@ -1722,7 +1790,8 @@ "copy-link": "Copiar link", "paste": "Colar", "paste-as-plain-text": "Colar como texto sem formatação", - "search_online": "Buscar por \"{{term}}\" usando {{searchEngine}}" + "search_online": "Buscar por \"{{term}}\" usando {{searchEngine}}", + "search_in_trilium": "Pesquisar por \"{{term}}\" no Trilium" }, "image_context_menu": { "copy_reference_to_clipboard": "Copiar referência para a área de transferência", @@ -1732,7 +1801,8 @@ "open_note_in_new_tab": "Abrir nota em nova aba", "open_note_in_new_split": "Abrir nota em nova divisão", "open_note_in_new_window": "Abrir nota em nova janela", - "open_note_in_popup": "Edição rápida" + "open_note_in_popup": "Edição rápida", + "open_note_in_other_split": "Abrir nota no outro painel dividido" }, "electron_integration": { "desktop-application": "Aplicação Desktop", @@ -1800,8 +1870,9 @@ "unknown_widget": "Componente desconhecido para \"{{id}}\"." }, "note_language": { - "not_set": "Não atribuído", - "configure-languages": "Configurar idiomas..." + "not_set": "Nenhum idioma definido", + "configure-languages": "Configurar idiomas...", + "help-on-languages": "Ajuda sobre idiomas de conteúdo…" }, "content_language": { "title": "Idiomas do conteúdo", @@ -1819,7 +1890,8 @@ "button_title": "Exportar diagrama como PNG" }, "svg": { - "export_to_png": "O diagrama não pôde ser exportado como PNG." + "export_to_png": "O diagrama não pôde ser exportado como PNG.", + "export_to_svg": "O diagrama não pôde ser exportado para SVG." }, "code_theme": { "title": "Aparência", @@ -1838,7 +1910,11 @@ "editorfeatures": { "title": "Recursos", "emoji_completion_enabled": "Habilitar auto-completar de Emoji", - "note_completion_enabled": "Habilitar auto-completar de notas" + "note_completion_enabled": "Habilitar auto-completar de notas", + "emoji_completion_description": "Se ativado, emojis podem ser inseridos facilmente no texto digitando`:`, seguido do nome do emoji.", + "note_completion_description": "Se ativado, links para notas podem ser criados digitando `@` seguido do título de uma nota.", + "slash_commands_enabled": "Ativar comandos de barra", + "slash_commands_description": "Se ativado, comandos de edição como inserir quebras de linha ou títulos podem ser acionados digitando`/`." }, "table_view": { "new-row": "Nova linha", @@ -1863,7 +1939,7 @@ "book_properties_config": { "hide-weekends": "Ocultar fins de semana", "display-week-numbers": "Exibir números de semana", - "map-style": "Estilo do mapa:", + "map-style": "Estilo do mapa", "max-nesting-depth": "Profundidade máxima de aninhamento:", "vector_light": "Vetor (Claro)", "vector_dark": "Vetor (Escuro)", @@ -1888,7 +1964,8 @@ "new-item-placeholder": "Escreva o título da nota...", "add-column-placeholder": "Escreva o nome da coluna...", "edit-note-title": "Clique para editar o título da nota", - "edit-column-title": "Clique para editar o título da coluna" + "edit-column-title": "Clique para editar o título da coluna", + "column-already-exists": "Esta coluna já existe no quadro." }, "call_to_action": { "next_theme_title": "Testar no novo tema do Trilium", @@ -1897,14 +1974,20 @@ "background_effects_title": "Efeitos de fundo estão estáveis agora", "background_effects_message": "Em dispositivos Windows, efeitos de fundo estão estáveis agora. Os efeitos de fundo adicionam um toque de cor à interface do usuário borrando o plano de fundo atrás dela. Esta técnica também é usada em outras aplicações como o Windows Explorer.", "background_effects_button": "Habilitar os efeitos de fundo", - "dismiss": "Dispensar" + "dismiss": "Dispensar", + "new_layout_title": "Novo layout", + "new_layout_message": "Introduzimos um layout modernizado para o Trilium. A faixa de opções foi removida e integrada de forma contínua à interface principal, com uma nova barra de status e seções expansíveis (como atributos promovidos) assumindo funções importantes.\n\nO novo layout vem ativado por padrão e pode ser desativado temporariamente em Opções → Aparência.", + "new_layout_button": "Mais informações" }, "settings": { "related_settings": "Configurações relacionadas" }, "settings_appearance": { "related_code_blocks": "Esquema de cores para blocos de código em notas de texto", - "related_code_notes": "Esquema de cores para notas de código" + "related_code_notes": "Esquema de cores para notas de código", + "ui": "Interface do usuário", + "ui_old_layout": "Layout antigo", + "ui_new_layout": "Novo Layout" }, "units": { "percentage": "%" @@ -2047,5 +2130,102 @@ }, "collections": { "rendering_error": "Não foi possível exibir o conteúdo devido a um erro." + }, + "experimental_features": { + "title": "Opções experimentais", + "disclaimer": "Essas opções são experimentais e podem causar instabilidade. Use com cautela.", + "new_layout_name": "Novo Layout", + "new_layout_description": "Experimente o novo layout para um visual mais moderno e melhor usabilidade. Pode sofrer alterações significativas nas próximas versões." + }, + "read-only-info": { + "read-only-note": "Você está visualizando uma nota somente leitura.", + "auto-read-only-note": "Esta nota é exibida em modo somente leitura para carregamento mais rápido.", + "edit-note": "Editar nota" + }, + "presentation_view": { + "edit-slide": "Editar este slide", + "start-presentation": "Iniciar apresentação", + "slide-overview": "Alternar a visualização geral dos slides" + }, + "calendar_view": { + "delete_note": "Excluir nota…" + }, + "note-color": { + "clear-color": "Limpar cor da nota", + "set-color": "Definir cor da nota", + "set-custom-color": "Definir cor personalizada da nota" + }, + "popup-editor": { + "maximize": "Alternar para editor completo" + }, + "server": { + "unknown_http_error_title": "Erro de comunicação com o servidor", + "unknown_http_error_content": "Código de status: {{statusCode}}\nURL: {{method}} {{url}}\nMensagem: {{message}}", + "traefik_blocks_requests": "Se você estiver usando o proxy reverso Traefik, ele introduziu uma alteração que afeta a comunicação com o servidor." + }, + "tab_history_navigation_buttons": { + "go-back": "Voltar para a nota anterior", + "go-forward": "Avançar para a próxima nota" + }, + "breadcrumb": { + "hoisted_badge": "Destacado", + "hoisted_badge_title": "Remover destaque", + "workspace_badge": "Espaço de trabalho", + "scroll_to_top_title": "Ir para o início da nota", + "create_new_note": "Criar nova nota filha", + "empty_hide_archived_notes": "Ocultar notas arquivadas" + }, + "breadcrumb_badges": { + "read_only_explicit": "Somente leitura", + "read_only_explicit_description": "Esta nota foi definida manualmente como somente leitura.\nClique para editá-la temporariamente.", + "read_only_auto": "Auto Somente leitura", + "read_only_auto_description": "Esta nota foi definida automaticamente como somente leitura por motivos de desempenho. Esse limite automático pode ser ajustado nas configurações.\n\nClique para editá-la temporariamente.", + "read_only_temporarily_disabled": "Editável temporariamente", + "read_only_temporarily_disabled_description": "Esta nota está atualmente editável, mas normalmente é somente leitura. A nota voltará a ser somente leitura assim que você navegar para outra nota.\n\nClique para reativar o modo somente leitura.", + "shared_publicly": "Compartilhado publicamente", + "shared_locally": "Compartilhado localmente", + "shared_copy_to_clipboard": "Copiar link para a área de transferência", + "shared_open_in_browser": "Abrir link no navegador", + "shared_unshare": "Remover compartilhamento", + "clipped_note": "Recorte da web", + "clipped_note_description": "Esta nota foi originalmente obtida de {{url}}.\n\nClique para navegar até a página de origem.", + "execute_script": "Executar script", + "execute_script_description": "Esta nota é uma nota de script. Clique para executar o script.", + "execute_sql": "Executar SQL", + "execute_sql_description": "Esta nota é uma nota SQL. Clique para executar a consulta SQL." + }, + "status_bar": { + "language_title": "Alterar idioma do conteúdo", + "note_info_title": "Ver informações da nota (por exemplo, datas, tamanho da nota)", + "backlinks_one": "{{count}} referência inversa", + "backlinks_many": "{{count}} referências inversas", + "backlinks_other": "{{count}} referências inversas", + "backlinks_title_one": "Ver referência inversa", + "backlinks_title_many": "Ver referências inversas", + "backlinks_title_other": "Ver referências inversas", + "attachments_one": "{{count}} anexo", + "attachments_many": "{{count}} anexos", + "attachments_other": "{{count}} anexos", + "attachments_title_one": "Visualizar anexo em uma nova aba", + "attachments_title_many": "Visualizar anexos em uma nova aba", + "attachments_title_other": "Visualizar anexos em uma nova aba", + "attributes_one": "{{count}} atributo", + "attributes_many": "{{count}} atributos", + "attributes_other": "{{count}} atributos", + "attributes_title": "Atributos próprios e atributos herdados", + "note_paths_one": "{{count}} caminho", + "note_paths_many": "{{count}} caminhos", + "note_paths_other": "{{count}} caminhos", + "note_paths_title": "Caminhos da nota", + "code_note_switcher": "Alterar modo de idioma" + }, + "attributes_panel": { + "title": "Atributos da nota" + }, + "right_pane": { + "empty_message": "Nada para exibir nesta nota", + "empty_button": "Ocultar o painel", + "toggle": "Alternar painel direito", + "custom_widget_go_to_source": "Ir para o código-fonte" } } diff --git a/apps/client/src/translations/ro/translation.json b/apps/client/src/translations/ro/translation.json index 03c5a4a6d..201cfe94e 100644 --- a/apps/client/src/translations/ro/translation.json +++ b/apps/client/src/translations/ro/translation.json @@ -1483,7 +1483,6 @@ }, "note_icon": { "change_note_icon": "Schimbă iconița notiței", - "category": "Categorie:", "reset-default": "Resetează la iconița implicită", "search": "Căutare:" }, diff --git a/apps/client/src/translations/ru/translation.json b/apps/client/src/translations/ru/translation.json index ddbf23a8f..6bd20066a 100644 --- a/apps/client/src/translations/ru/translation.json +++ b/apps/client/src/translations/ru/translation.json @@ -21,8 +21,17 @@ }, "bundle-error": { "title": "Не удалось загрузить пользовательский скрипт", - "message": "Скрипт из заметки с идентификатором \"{{id}}\" и названием \"{{title}}\" не может быть выполнен по следующим причинам:\n\n{{message}}" - } + "message": "Скрипт не может быть выполнен. Причина:\n\n{{message}}" + }, + "widget-list-error": { + "title": "Не удалось получить список виджетов с сервера" + }, + "widget-render-error": { + "title": "Не удалось отобразить пользовательский React виджет" + }, + "widget-missing-parent": "В пользовательском виджете не определено обязательное свойство '{{property}}'.\n\nЕсли этот скрипт предназначен для запуска без элемента пользовательского интерфейса, используйте '#run=frontendStartup'.", + "open-script-note": "Открыть заметку со скриптом", + "scripting-error": "Ошибка пользовательского скрипта: {{title}}" }, "add_link": { "add_link": "Добавить ссылку", @@ -1001,7 +1010,6 @@ "backlink_many": "{{count}} обратных ссылок" }, "note_icon": { - "category": "Категория:", "search": "Поиск:", "change_note_icon": "Изменить иконку заметки", "reset-default": "Сбросить к значку по умолчанию" @@ -1686,7 +1694,8 @@ }, "inherited_attribute_list": { "title": "Унаследованные атрибуты", - "no_inherited_attributes": "Нет унаследованных атрибутов." + "no_inherited_attributes": "Нет унаследованных атрибутов.", + "none": "нет" }, "note_map": { "title": "Карта заметок", @@ -2025,13 +2034,14 @@ }, "note_title": { "placeholder": "введите здесь название заметки...", - "edited_notes": "Измененные заметки", + "edited_notes": "Измененные в этот день заметки", "note_type_switcher_collection": "Коллекция", "note_type_switcher_templates": "Шаблон", "note_type_switcher_others": "Другой тип заметки", "note_type_switcher_label": "Переключить с {{type}} на:", "last_modified": "Изменена ", - "created_on": "Создана в " + "created_on": "Создана в ", + "promoted_attributes": "Продвигаемые атрибуты" }, "units": { "percentage": "%" @@ -2101,7 +2111,13 @@ "note_detail": { "could_not_find_typewidget": "Не удалось найти typeWidget для типа '{{type}}'", "printing_pdf": "Выполняется экспорт PDF...", - "printing": "Выполняется печать..." + "printing": "Выполняется печать...", + "print_report_title": "Отчет по печати", + "print_report_collection_content_one": "{{count}} заметка в коллекции не удалось распечатать, поскольку она не поддерживается или защищена.", + "print_report_collection_content_few": "{{count}} заметки в коллекции не удалось распечатать, поскольку они не поддерживаются или защищены.", + "print_report_collection_content_many": "{{count}} заметок в коллекции не удалось распечатать, поскольку они не поддерживаются или защищены.", + "print_report_collection_details_button": "Подробнее", + "print_report_collection_details_ignored_notes": "Пропущенные заметки" }, "book": { "no_children_help": "В этой коллекции нет дочерних заметок, поэтому отображать нечего. Подробности см. в wiki.", @@ -2216,5 +2232,8 @@ "toggle": "Переключить панель справа", "empty_button": "Скрыть панель", "empty_message": "Нечего отобразить для текущей заметки" + }, + "attributes_panel": { + "title": "Атрибуты заметки" } } diff --git a/apps/client/src/translations/tw/translation.json b/apps/client/src/translations/tw/translation.json index f09fce30c..ff44e1d3f 100644 --- a/apps/client/src/translations/tw/translation.json +++ b/apps/client/src/translations/tw/translation.json @@ -21,8 +21,16 @@ }, "bundle-error": { "title": "載入自訂腳本失敗", - "message": "來自 ID 為 \"{{id}}\"、標題為 \"{{title}}\" 的筆記的腳本因以下原因無法執行:\n\n{{message}}" - } + "message": "腳本因以下原因無法執行:\n\n{{message}}" + }, + "widget-list-error": { + "title": "無法從伺服器取得元件清單" + }, + "widget-render-error": { + "title": "無法渲染自訂 React 元件" + }, + "widget-missing-parent": "自訂元件未定義強制性的 \"{{property}}\" 屬性。", + "open-script-note": "打開腳本筆記" }, "add_link": { "add_link": "新增連結", @@ -753,7 +761,6 @@ }, "note_icon": { "change_note_icon": "更改筆記圖標", - "category": "類別:", "search": "搜尋:", "reset-default": "重置為預設圖標" }, @@ -815,7 +822,8 @@ }, "inherited_attribute_list": { "title": "繼承的屬性", - "no_inherited_attributes": "沒有繼承的屬性。" + "no_inherited_attributes": "沒有繼承的屬性。", + "none": "無" }, "note_info_widget": { "note_id": "筆記 ID", @@ -1513,6 +1521,7 @@ "title": "高亮列表", "options": "選項", "title_with_count_one": "{{count}} 處高亮", + "title_with_count_other": "{{count}} 處高亮", "modal_title": "設定高亮列表", "menu_configure": "設定高亮列表…", "no_highlights": "未找到高亮內容。" @@ -2089,7 +2098,8 @@ "next_theme_button": "試用新主題", "dismiss": "關閉", "new_layout_title": "新版面配置", - "new_layout_button": "更多資訊" + "new_layout_button": "更多資訊", + "new_layout_message": "我們為 Trilium 推出了現代化版面配置。功能區分頁已移除並無縫整合至主介面,取而代之的是全新狀態列與可擴展區塊(例如提升屬性)承擔其主要功能。\n\n新版面配置預設為啟用狀態,您可透過「選項 → 外觀」暫時停用。" }, "settings": { "related_settings": "相關設定" @@ -2167,7 +2177,12 @@ "shared_unshare": "取消分享", "clipped_note": "網頁擷取", "execute_script": "運行腳本", - "execute_sql": "運行 SQL" + "execute_sql": "運行 SQL", + "read_only_auto_description": "基於效能考量,此筆記已自動設定為唯讀模式。此自動限制可於設定中調整。\n\n點擊此處可臨時編輯。", + "read_only_temporarily_disabled_description": "此筆記目前可編輯,但通常為唯讀狀態。當您切換至其他筆記時,本筆記將立即恢復為唯讀模式。\n\n點擊此處重新啟用唯讀模式。", + "clipped_note_description": "本筆記原始來源為 {{url}}。\n\n點擊此處前往原網頁。", + "execute_script_description": "此筆記為腳本筆記。點擊以執行腳本。", + "execute_sql_description": "此筆記為 SQL 筆記。點擊以執行 SQL 查詢。" }, "breadcrumb": { "hoisted_badge": "聚焦", @@ -2181,18 +2196,28 @@ "language_title": "更改內容語言", "note_info_title": "查看筆記資訊(如日期、筆記大小)", "backlinks_one": "{{count}} 個反連結", + "backlinks_other": "", "backlinks_title_one": "查看反連結", + "backlinks_title_other": "", "attachments_one": "{{count}} 個附件", + "attachments_other": "", "attachments_title_one": "在新分頁中查看附件", + "attachments_title_other": "", "attributes_one": "{{count}} 個屬性", + "attributes_other": "", "attributes_title": "自有屬性及繼承屬性", "note_paths_one": "{{count}} 條路徑", + "note_paths_other": "", "note_paths_title": "筆記路徑", "code_note_switcher": "更改語言模式" }, "right_pane": { "empty_button": "隱藏面板", "toggle": "切換右側面板", - "custom_widget_go_to_source": "跳轉至原始碼" + "custom_widget_go_to_source": "跳轉至原始碼", + "empty_message": "此筆記無內容可顯示" + }, + "attributes_panel": { + "title": "筆記屬性" } } diff --git a/apps/client/src/translations/uk/translation.json b/apps/client/src/translations/uk/translation.json index 38b44a263..49ead5d8c 100644 --- a/apps/client/src/translations/uk/translation.json +++ b/apps/client/src/translations/uk/translation.json @@ -849,7 +849,6 @@ }, "note_icon": { "change_note_icon": "Змінити значок нотатки", - "category": "Категорія:", "search": "Пошук:", "reset-default": "Скинути значок до стандартного значення" }, diff --git a/apps/client/src/types-assets.d.ts b/apps/client/src/types-assets.d.ts index 1f5e80432..37b38bdd0 100644 --- a/apps/client/src/types-assets.d.ts +++ b/apps/client/src/types-assets.d.ts @@ -17,5 +17,3 @@ declare module "*?raw" { var content: string; export default content; } - -declare module "boxicons/css/boxicons.min.css" { } diff --git a/apps/client/src/types.d.ts b/apps/client/src/types.d.ts index 34cd9a8fe..b0d83b1f0 100644 --- a/apps/client/src/types.d.ts +++ b/apps/client/src/types.d.ts @@ -1,12 +1,14 @@ -import type FNote from "./entities/fnote"; -import type { Froca } from "./services/froca-interface"; -import { Suggestion } from "./services/note_autocomplete"; -import utils from "./services/utils"; +import { IconRegistry } from "@triliumnext/commons"; + import appContext, { AppContext } from "./components/app_context"; -import server from "./services/server"; -import library_loader, { Library } from "./services/library_loader"; +import type FNote from "./entities/fnote"; +import type { PrintReport } from "./print"; import type { lint } from "./services/eslint"; -import type { Mermaid, MermaidConfig } from "mermaid"; +import type { Froca } from "./services/froca-interface"; +import { Library } from "./services/library_loader"; +import { Suggestion } from "./services/note_autocomplete"; +import server from "./services/server"; +import utils from "./services/utils"; interface ElectronProcess { type: string; @@ -47,6 +49,7 @@ interface CustomGlobals { linter: typeof lint; hasNativeTitleBar: boolean; isRtl: boolean; + iconRegistry: IconRegistry; } type RequireMethod = (moduleName: string) => any; @@ -60,7 +63,7 @@ declare global { glob?: CustomGlobals; /** On the printing endpoint, set to true when the note has fully loaded and is ready to be printed/exported as PDF. */ - _noteReady?: boolean; + _noteReady?: PrintReport; EXCALIDRAW_ASSET_PATH?: string; } diff --git a/apps/client/src/widgets/FloatingButtonsDefinitions.tsx b/apps/client/src/widgets/FloatingButtonsDefinitions.tsx index 35dbc92ae..8bf02d96c 100644 --- a/apps/client/src/widgets/FloatingButtonsDefinitions.tsx +++ b/apps/client/src/widgets/FloatingButtonsDefinitions.tsx @@ -142,7 +142,7 @@ function ShowTocWidgetButton({ note, noteContext, isDefaultViewMode }: FloatingB return isEnabled && { if (noteContext?.viewScope && noteContext.noteId) { noteContext.viewScope.tocTemporarilyHidden = false; diff --git a/apps/client/src/widgets/NoteDetail.tsx b/apps/client/src/widgets/NoteDetail.tsx index 894bb4ac5..c2f212044 100644 --- a/apps/client/src/widgets/NoteDetail.tsx +++ b/apps/client/src/widgets/NoteDetail.tsx @@ -5,13 +5,16 @@ import { useEffect, useRef, useState } from "preact/hooks"; import NoteContext from "../components/note_context"; import FNote from "../entities/fnote"; +import type { PrintReport } from "../print"; import attributes from "../services/attributes"; +import dialog from "../services/dialog"; import { t } from "../services/i18n"; import protected_session_holder from "../services/protected_session_holder"; import toast from "../services/toast.js"; import { dynamicRequire, isElectron, isMobile } from "../services/utils"; import { ExtendedNoteType, TYPE_MAPPINGS, TypeWidget } from "./note_types"; import { useNoteContext, useTriliumEvent } from "./react/hooks"; +import { NoteListWithLinks } from "./react/NoteList"; import { TypeWidgetProps } from "./type_widgets/type_widget"; /** @@ -128,7 +131,10 @@ export default function NoteDetail() { if (!isElectron()) return; const { ipcRenderer } = dynamicRequire("electron"); const onPrintProgress = (_e: any, { progress, action }: { progress: number, action: "printing" | "exporting_pdf" }) => showToast(action, progress); - const onPrintDone = () => toast.closePersistent("printing"); + const onPrintDone = (_e, printReport: PrintReport) => { + toast.closePersistent("printing"); + handlePrintReport(printReport); + }; ipcRenderer.on("print-progress", onPrintProgress); ipcRenderer.on("print-done", onPrintDone); return () => { @@ -179,8 +185,13 @@ export default function NoteDetail() { showToast("printing", e.detail.progress); }); - iframe.contentWindow.addEventListener("note-ready", () => { + iframe.contentWindow.addEventListener("note-ready", (e) => { toast.closePersistent("printing"); + + if ("detail" in e) { + handlePrintReport(e.detail as PrintReport); + } + iframe.contentWindow?.print(); document.body.removeChild(iframe); }); @@ -346,3 +357,29 @@ function showToast(type: "printing" | "exporting_pdf", progress: number = 0) { progress }); } + +function handlePrintReport(printReport: PrintReport) { + if (printReport.type === "collection" && printReport.ignoredNoteIds.length > 0) { + toast.showPersistent({ + id: "print-report", + icon: "bx bx-collection", + title: t("note_detail.print_report_title"), + message: t("note_detail.print_report_collection_content", { count: printReport.ignoredNoteIds.length }), + buttons: [ + { + text: t("note_detail.print_report_collection_details_button"), + onClick(api) { + api.dismissToast(); + dialog.info(<> +

{t("note_detail.print_report_collection_details_ignored_notes")}

+ + , { + title: t("note_detail.print_report_title"), + size: "md" + }); + } + } + ] + }); + } +} diff --git a/apps/client/src/widgets/PromotedAttributes.tsx b/apps/client/src/widgets/PromotedAttributes.tsx index cb6dc2671..0ec79725a 100644 --- a/apps/client/src/widgets/PromotedAttributes.tsx +++ b/apps/client/src/widgets/PromotedAttributes.tsx @@ -13,6 +13,7 @@ import debounce from "../services/debounce"; import { t } from "../services/i18n"; import { DefinitionObject, extractAttributeDefinitionTypeAndName, LabelType } from "../services/promoted_attribute_definition_parser"; import server from "../services/server"; +import { randomString } from "../services/utils"; import ws from "../services/ws"; import { useNoteContext, useNoteLabel, useTriliumEvent, useUniqueName } from "./react/hooks"; import NoteAutocomplete from "./react/NoteAutocomplete"; @@ -116,7 +117,7 @@ export function usePromotedAttributeData(note: FNote | null | undefined, compone valueAttr.attributeId = ""; } - const uniqueId = `${note.noteId}-${valueAttr.name}-${i}`; + const uniqueId = randomString(); cells.push({ definitionAttr, definition, valueAttr, valueName, uniqueId }); } } @@ -319,6 +320,7 @@ function MultiplicityCell({ cell, cells, setCells, setCellToFocus, note, compone const index = cells.indexOf(cell); const newCell: Cell = { ...cell, + uniqueId: randomString(), valueAttr: { attributeId: "", type: cell.valueAttr.type, diff --git a/apps/client/src/widgets/TabHistoryNavigationButtons.tsx b/apps/client/src/widgets/TabHistoryNavigationButtons.tsx index 07ecf6b66..42b461df0 100644 --- a/apps/client/src/widgets/TabHistoryNavigationButtons.tsx +++ b/apps/client/src/widgets/TabHistoryNavigationButtons.tsx @@ -15,7 +15,7 @@ export default function TabHistoryNavigationButtons() { const legacyBackVisible = useLauncherVisibility("_lbBackInHistory"); const legacyForwardVisible = useLauncherVisibility("_lbForwardInHistory"); - return (isElectron() && + return (
{!legacyBackVisible &&
${t("attribute_detail.attr_detail_title")}
- +
${t("attribute_detail.attr_is_owned_by")}
diff --git a/apps/client/src/widgets/basic_widget.ts b/apps/client/src/widgets/basic_widget.ts index 3c9788943..0d515b38a 100644 --- a/apps/client/src/widgets/basic_widget.ts +++ b/apps/client/src/widgets/basic_widget.ts @@ -1,8 +1,10 @@ import { isValidElement, VNode } from "preact"; + import Component, { TypedComponent } from "../components/component.js"; import froca from "../services/froca.js"; import { t } from "../services/i18n.js"; -import toastService from "../services/toast.js"; +import toastService, { showErrorForScriptNote } from "../services/toast.js"; +import { randomString } from "../services/utils.js"; import { renderReactWidget } from "./react/react_utils.jsx"; export class TypedBasicWidget> extends TypedComponent { @@ -56,9 +58,8 @@ export class TypedBasicWidget> extends TypedCompon optChild(condition: boolean, ...components: (T | VNode)[]) { if (condition) { return this.child(...components); - } else { - return this; } + return this; } id(id: string) { @@ -172,20 +173,15 @@ export class TypedBasicWidget> extends TypedCompon const noteId = this._noteId; if (this._noteId) { froca.getNote(noteId, true).then((note) => { - toastService.showPersistent({ - id: `custom-widget-failure-${noteId}`, - title: t("toast.widget-error.title"), - icon: "bx bx-error-circle", - message: t("toast.widget-error.message-custom", { - id: noteId, - title: note?.title, - message: e.message || e.toString() - }) - }); + showErrorForScriptNote(noteId, t("toast.widget-error.message-custom", { + id: noteId, + title: note?.title, + message: e.message || e.toString() + })); }); } else { toastService.showPersistent({ - id: `custom-widget-failure-unknown-${crypto.randomUUID()}`, + id: `custom-widget-failure-unknown-${randomString()}`, title: t("toast.widget-error.title"), icon: "bx bx-error-circle", message: t("toast.widget-error.message-unknown", { @@ -213,7 +209,7 @@ export class TypedBasicWidget> extends TypedCompon toggleInt(show: boolean | null | undefined) { this.$widget.toggleClass("hidden-int", !show) - .toggleClass("visible", !!show); + .toggleClass("visible", !!show); } isHiddenInt() { @@ -222,7 +218,7 @@ export class TypedBasicWidget> extends TypedCompon toggleExt(show: boolean | null | "" | undefined) { this.$widget.toggleClass("hidden-ext", !show) - .toggleClass("visible", !!show); + .toggleClass("visible", !!show); } isHiddenExt() { @@ -250,9 +246,8 @@ export class TypedBasicWidget> extends TypedCompon getClosestNtxId() { if (this.$widget) { return this.$widget.closest("[data-ntx-id]").attr("data-ntx-id"); - } else { - return null; } + return null; } cleanup() {} diff --git a/apps/client/src/widgets/buttons/global_menu.css b/apps/client/src/widgets/buttons/global_menu.css index d0a7f78dc..9d64d5274 100644 --- a/apps/client/src/widgets/buttons/global_menu.css +++ b/apps/client/src/widgets/buttons/global_menu.css @@ -108,14 +108,6 @@ button.global-menu-button { margin-inline-end: 5px; } -.global-menu .dropdown-item .bx { - position: relative; - top: 3px; - font-size: 120%; - margin-inline-end: 6px; -} - - .global-menu-button-wrapper:hover .global-menu-button-update-available-button { opacity: 1; } diff --git a/apps/client/src/widgets/collections/NoteList.css b/apps/client/src/widgets/collections/NoteList.css index f8e5ae14e..bdc6b3dc7 100644 --- a/apps/client/src/widgets/collections/NoteList.css +++ b/apps/client/src/widgets/collections/NoteList.css @@ -12,7 +12,7 @@ body.prefers-centered-content .note-list-widget:not(.full-height) { } .note-list-widget .note-list { - padding: 10px; + padding-block: 10px; } .note-list-widget.full-height, diff --git a/apps/client/src/widgets/collections/NoteList.tsx b/apps/client/src/widgets/collections/NoteList.tsx index 3188a77ad..5626cc33c 100644 --- a/apps/client/src/widgets/collections/NoteList.tsx +++ b/apps/client/src/widgets/collections/NoteList.tsx @@ -1,14 +1,17 @@ -import { allViewTypes, ViewModeMedia, ViewModeProps, ViewTypeOptions } from "./interface"; -import { useNoteContext, useNoteLabel, useNoteLabelBoolean, useNoteProperty, useTriliumEvent } from "../react/hooks"; -import FNote from "../../entities/fnote"; import "./NoteList.css"; -import { useEffect, useRef, useState } from "preact/hooks"; -import ViewModeStorage from "./view_mode_storage"; -import { subscribeToMessages, unsubscribeToMessage as unsubscribeFromMessage } from "../../services/ws"; + import { WebSocketMessage } from "@triliumnext/commons"; -import froca from "../../services/froca"; -import { lazy, Suspense } from "preact/compat"; import { VNode } from "preact"; +import { lazy, Suspense } from "preact/compat"; +import { useEffect, useRef, useState } from "preact/hooks"; + +import FNote from "../../entities/fnote"; +import type { PrintReport } from "../../print"; +import froca from "../../services/froca"; +import { subscribeToMessages, unsubscribeToMessage as unsubscribeFromMessage } from "../../services/ws"; +import { useNoteContext, useNoteLabel, useNoteLabelBoolean, useNoteProperty, useTriliumEvent } from "../react/hooks"; +import { allViewTypes, ViewModeMedia, ViewModeProps, ViewTypeOptions } from "./interface"; +import ViewModeStorage from "./view_mode_storage"; interface NoteListProps { note: FNote | null | undefined; notePath: string | null | undefined; @@ -19,7 +22,7 @@ interface NoteListProps { ntxId: string | null | undefined; media: ViewModeMedia; viewType: ViewTypeOptions | undefined; - onReady?: () => void; + onReady?: (data: PrintReport) => void; onProgressChanged?(progress: number): void; } @@ -48,7 +51,7 @@ const ViewComponents: Record import("./presentation/index.js")) } -} +}; export default function NoteList(props: Pick) { const { note, noteContext, notePath, ntxId, viewScope } = useNoteContext(); @@ -57,13 +60,13 @@ export default function NoteList(props: Pick { setEnabled(noteContext?.hasNoteList()); - }, [ note, noteContext, viewType, viewScope?.viewMode, noteType ]) - return + }, [ note, noteContext, viewType, viewScope?.viewMode, noteType ]); + return ; } export function SearchNoteList(props: Omit) { const viewType = useNoteViewType(props.note); - return + return ; } export function CustomNoteList({ note, viewType, isEnabled: shouldEnable, notePath, highlightedTokens, displayOnlyCollections, ntxId, onReady, onProgressChanged, ...restProps }: NoteListProps) { @@ -112,7 +115,7 @@ export function CustomNoteList({ note, viewType, isEnabled: shouldEnable, notePa onProgressChanged: onProgressChanged ?? (() => {}), ...restProps - } + }; } const ComponentToRender = viewType && props && isEnabled && ( @@ -140,9 +143,9 @@ export function useNoteViewType(note?: FNote | null): ViewTypeOptions | undefine } else if (!(allViewTypes as readonly string[]).includes(viewType || "")) { // when not explicitly set, decide based on the note type return note.type === "search" ? "list" : "grid"; - } else { - return viewType as ViewTypeOptions; } + return viewType as ViewTypeOptions; + } export function useNoteIds(note: FNote | null | undefined, viewType: ViewTypeOptions | undefined, ntxId: string | null | undefined) { @@ -161,26 +164,26 @@ export function useNoteIds(note: FNote | null | undefined, viewType: ViewTypeOpt async function getNoteIds(note: FNote) { if (directChildrenOnly) { return await note.getChildNoteIdsWithArchiveFiltering(includeArchived); - } else { - return await note.getSubtreeNoteIds(includeArchived); } + return await note.getSubtreeNoteIds(includeArchived); + } // Refresh on note switch. useEffect(() => { - refreshNoteIds() + refreshNoteIds(); }, [ note, includeArchived, directChildrenOnly ]); // Refresh on alterations to the note subtree. useTriliumEvent("entitiesReloaded", ({ loadResults }) => { if (note && loadResults.getBranchRows().some(branch => - branch.parentNoteId === note.noteId + branch.parentNoteId === note.noteId || noteIds.includes(branch.parentNoteId ?? "")) || loadResults.getAttributeRows().some(attr => attr.name === "archived" && attr.noteId && noteIds.includes(attr.noteId)) ) { refreshNoteIds(); } - }) + }); // Refresh on search. useTriliumEvent("searchRefreshed", ({ ntxId: eventNtxId }) => { @@ -201,13 +204,13 @@ export function useNoteIds(note: FNote | null | undefined, viewType: ViewTypeOpt ...noteIds, ...await getNoteIds(importedNote), importedNoteId - ]) + ]); } } subscribeToMessages(onImport); return () => unsubscribeFromMessage(onImport); - }, [ note, noteIds, setNoteIds ]) + }, [ note, noteIds, setNoteIds ]); return noteIds; } diff --git a/apps/client/src/widgets/collections/geomap/index.css b/apps/client/src/widgets/collections/geomap/index.css index 81039ba48..341dfb6fa 100644 --- a/apps/client/src/widgets/collections/geomap/index.css +++ b/apps/client/src/widgets/collections/geomap/index.css @@ -40,7 +40,7 @@ z-index: -1; } -.geo-map-container .leaflet-div-icon .bx { +.geo-map-container .leaflet-div-icon .tn-icon { position: absolute; top: 3px; inset-inline-start: 2px; diff --git a/apps/client/src/widgets/collections/geomap/styles/colorful/de.json b/apps/client/src/widgets/collections/geomap/styles/colorful/de.json index 95a1350ec..e89fd1b03 100644 --- a/apps/client/src/widgets/collections/geomap/styles/colorful/de.json +++ b/apps/client/src/widgets/collections/geomap/styles/colorful/de.json @@ -4122,7 +4122,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "pedestrian" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4144,7 +4144,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "living_street" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4166,7 +4166,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "residential" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4188,7 +4188,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "unclassified" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4210,7 +4210,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "tertiary" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4232,7 +4232,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "secondary" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4254,7 +4254,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "primary" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4276,7 +4276,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "trunk" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4298,7 +4298,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "neighbourhood" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 14, 12 ] ] }, "text-transform": "uppercase" @@ -4319,7 +4319,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "quarter" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 13, 13 ] ] }, "text-transform": "uppercase" @@ -4340,7 +4340,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "suburb" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 11, 11 ], [ 13, 14 ] ] }, "text-transform": "uppercase" @@ -4361,7 +4361,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "hamlet" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 10, 11 ], [ 12, 14 ] ] } }, @@ -4381,7 +4381,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "village" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 9, 11 ], [ 12, 14 ] ] } }, @@ -4401,7 +4401,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "town" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 8, 11 ], [ 12, 14 ] ] } }, @@ -4421,7 +4421,7 @@ "source-layer": "boundary_labels", "filter": [ "in", "admin_level", 4, "4" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4446,7 +4446,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "city" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 7, 11 ], [ 10, 14 ] ] } }, @@ -4466,7 +4466,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "state_capital" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 6, 11 ], [ 10, 15 ] ] } }, @@ -4486,7 +4486,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "capital" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 5, 12 ], [ 10, 16 ] ] } }, @@ -4506,7 +4506,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<=", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4531,7 +4531,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<", "way_area", 90000000 ], [ ">", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4556,7 +4556,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ ">=", "way_area", 90000000 ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4625,7 +4625,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "bus_stop" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 16, 0.5 ], [ 18, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4652,7 +4652,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "tram_stop" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 15, 0.5 ], [ 17, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4679,7 +4679,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "subway" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4706,7 +4706,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "light_rail" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4733,7 +4733,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "!in", "station", "light_rail", "subway" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4760,7 +4760,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "!has", "iata" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4787,7 +4787,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "has", "iata" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 12, 0.5 ], [ 14, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, diff --git a/apps/client/src/widgets/collections/geomap/styles/colorful/en.json b/apps/client/src/widgets/collections/geomap/styles/colorful/en.json index 73ebfc33b..e270f7843 100644 --- a/apps/client/src/widgets/collections/geomap/styles/colorful/en.json +++ b/apps/client/src/widgets/collections/geomap/styles/colorful/en.json @@ -4122,7 +4122,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "pedestrian" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4144,7 +4144,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "living_street" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4166,7 +4166,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "residential" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4188,7 +4188,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "unclassified" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4210,7 +4210,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "tertiary" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4232,7 +4232,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "secondary" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4254,7 +4254,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "primary" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4276,7 +4276,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "trunk" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4298,7 +4298,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "neighbourhood" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 14, 12 ] ] }, "text-transform": "uppercase" @@ -4319,7 +4319,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "quarter" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 13, 13 ] ] }, "text-transform": "uppercase" @@ -4340,7 +4340,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "suburb" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 11, 11 ], [ 13, 14 ] ] }, "text-transform": "uppercase" @@ -4361,7 +4361,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "hamlet" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 10, 11 ], [ 12, 14 ] ] } }, @@ -4381,7 +4381,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "village" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 9, 11 ], [ 12, 14 ] ] } }, @@ -4401,7 +4401,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "town" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 8, 11 ], [ 12, 14 ] ] } }, @@ -4421,7 +4421,7 @@ "source-layer": "boundary_labels", "filter": [ "in", "admin_level", 4, "4" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4446,7 +4446,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "city" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 7, 11 ], [ 10, 14 ] ] } }, @@ -4466,7 +4466,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "state_capital" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 6, 11 ], [ 10, 15 ] ] } }, @@ -4486,7 +4486,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "capital" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 5, 12 ], [ 10, 16 ] ] } }, @@ -4506,7 +4506,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<=", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4531,7 +4531,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<", "way_area", 90000000 ], [ ">", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4556,7 +4556,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ ">=", "way_area", 90000000 ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4625,7 +4625,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "bus_stop" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 16, 0.5 ], [ 18, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4652,7 +4652,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "tram_stop" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 15, 0.5 ], [ 17, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4679,7 +4679,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "subway" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4706,7 +4706,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "light_rail" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4733,7 +4733,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "!in", "station", "light_rail", "subway" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4760,7 +4760,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "!has", "iata" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4787,7 +4787,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "has", "iata" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 12, 0.5 ], [ 14, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, diff --git a/apps/client/src/widgets/collections/geomap/styles/colorful/style.json b/apps/client/src/widgets/collections/geomap/styles/colorful/style.json index 737249a9d..9e7544541 100644 --- a/apps/client/src/widgets/collections/geomap/styles/colorful/style.json +++ b/apps/client/src/widgets/collections/geomap/styles/colorful/style.json @@ -4122,7 +4122,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "pedestrian" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4144,7 +4144,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "living_street" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4166,7 +4166,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "residential" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4188,7 +4188,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "unclassified" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4210,7 +4210,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "tertiary" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4232,7 +4232,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "secondary" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4254,7 +4254,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "primary" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4276,7 +4276,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "trunk" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4298,7 +4298,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "neighbourhood" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 14, 12 ] ] }, "text-transform": "uppercase" @@ -4319,7 +4319,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "quarter" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 13, 13 ] ] }, "text-transform": "uppercase" @@ -4340,7 +4340,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "suburb" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 11, 11 ], [ 13, 14 ] ] }, "text-transform": "uppercase" @@ -4361,7 +4361,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "hamlet" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 10, 11 ], [ 12, 14 ] ] } }, @@ -4381,7 +4381,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "village" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 9, 11 ], [ 12, 14 ] ] } }, @@ -4401,7 +4401,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "town" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 8, 11 ], [ 12, 14 ] ] } }, @@ -4421,7 +4421,7 @@ "source-layer": "boundary_labels", "filter": [ "in", "admin_level", 4, "4" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4446,7 +4446,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "city" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 7, 11 ], [ 10, 14 ] ] } }, @@ -4466,7 +4466,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "state_capital" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 6, 11 ], [ 10, 15 ] ] } }, @@ -4486,7 +4486,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "capital" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 5, 12 ], [ 10, 16 ] ] } }, @@ -4506,7 +4506,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<=", "way_area", 10000000 ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4531,7 +4531,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<", "way_area", 90000000 ], [ ">", "way_area", 10000000 ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4556,7 +4556,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ ">=", "way_area", 90000000 ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4625,7 +4625,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "bus_stop" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 16, 0.5 ], [ 18, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4652,7 +4652,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "tram_stop" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 15, 0.5 ], [ 17, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4679,7 +4679,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "subway" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4706,7 +4706,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "light_rail" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4733,7 +4733,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "!in", "station", "light_rail", "subway" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4760,7 +4760,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "!has", "iata" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4787,7 +4787,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "has", "iata" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 12, 0.5 ], [ 14, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, diff --git a/apps/client/src/widgets/collections/geomap/styles/eclipse/de.json b/apps/client/src/widgets/collections/geomap/styles/eclipse/de.json index 2058265ee..9ba1a5213 100644 --- a/apps/client/src/widgets/collections/geomap/styles/eclipse/de.json +++ b/apps/client/src/widgets/collections/geomap/styles/eclipse/de.json @@ -4122,7 +4122,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "pedestrian" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4144,7 +4144,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "living_street" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4166,7 +4166,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "residential" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4188,7 +4188,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "unclassified" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4210,7 +4210,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "tertiary" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4232,7 +4232,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "secondary" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4254,7 +4254,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "primary" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4276,7 +4276,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "trunk" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4298,7 +4298,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "neighbourhood" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 14, 12 ] ] }, "text-transform": "uppercase" @@ -4319,7 +4319,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "quarter" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 13, 13 ] ] }, "text-transform": "uppercase" @@ -4340,7 +4340,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "suburb" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 11, 11 ], [ 13, 14 ] ] }, "text-transform": "uppercase" @@ -4361,7 +4361,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "hamlet" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 10, 11 ], [ 12, 14 ] ] } }, @@ -4381,7 +4381,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "village" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 9, 11 ], [ 12, 14 ] ] } }, @@ -4401,7 +4401,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "town" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 8, 11 ], [ 12, 14 ] ] } }, @@ -4421,7 +4421,7 @@ "source-layer": "boundary_labels", "filter": [ "in", "admin_level", 4, "4" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4446,7 +4446,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "city" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 7, 11 ], [ 10, 14 ] ] } }, @@ -4466,7 +4466,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "state_capital" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 6, 11 ], [ 10, 15 ] ] } }, @@ -4486,7 +4486,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "capital" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 5, 12 ], [ 10, 16 ] ] } }, @@ -4506,7 +4506,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<=", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4531,7 +4531,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<", "way_area", 90000000 ], [ ">", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4556,7 +4556,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ ">=", "way_area", 90000000 ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4625,7 +4625,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "bus_stop" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 16, 0.5 ], [ 18, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4652,7 +4652,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "tram_stop" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 15, 0.5 ], [ 17, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4679,7 +4679,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "subway" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4706,7 +4706,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "light_rail" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4733,7 +4733,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "!in", "station", "light_rail", "subway" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4760,7 +4760,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "!has", "iata" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4787,7 +4787,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "has", "iata" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 12, 0.5 ], [ 14, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, diff --git a/apps/client/src/widgets/collections/geomap/styles/eclipse/en.json b/apps/client/src/widgets/collections/geomap/styles/eclipse/en.json index 3e20caa25..a037075b8 100644 --- a/apps/client/src/widgets/collections/geomap/styles/eclipse/en.json +++ b/apps/client/src/widgets/collections/geomap/styles/eclipse/en.json @@ -4122,7 +4122,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "pedestrian" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4144,7 +4144,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "living_street" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4166,7 +4166,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "residential" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4188,7 +4188,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "unclassified" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4210,7 +4210,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "tertiary" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4232,7 +4232,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "secondary" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4254,7 +4254,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "primary" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4276,7 +4276,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "trunk" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4298,7 +4298,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "neighbourhood" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 14, 12 ] ] }, "text-transform": "uppercase" @@ -4319,7 +4319,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "quarter" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 13, 13 ] ] }, "text-transform": "uppercase" @@ -4340,7 +4340,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "suburb" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 11, 11 ], [ 13, 14 ] ] }, "text-transform": "uppercase" @@ -4361,7 +4361,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "hamlet" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 10, 11 ], [ 12, 14 ] ] } }, @@ -4381,7 +4381,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "village" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 9, 11 ], [ 12, 14 ] ] } }, @@ -4401,7 +4401,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "town" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 8, 11 ], [ 12, 14 ] ] } }, @@ -4421,7 +4421,7 @@ "source-layer": "boundary_labels", "filter": [ "in", "admin_level", 4, "4" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4446,7 +4446,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "city" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 7, 11 ], [ 10, 14 ] ] } }, @@ -4466,7 +4466,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "state_capital" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 6, 11 ], [ 10, 15 ] ] } }, @@ -4486,7 +4486,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "capital" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 5, 12 ], [ 10, 16 ] ] } }, @@ -4506,7 +4506,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<=", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4531,7 +4531,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<", "way_area", 90000000 ], [ ">", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4556,7 +4556,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ ">=", "way_area", 90000000 ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4625,7 +4625,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "bus_stop" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 16, 0.5 ], [ 18, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4652,7 +4652,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "tram_stop" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 15, 0.5 ], [ 17, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4679,7 +4679,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "subway" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4706,7 +4706,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "light_rail" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4733,7 +4733,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "!in", "station", "light_rail", "subway" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4760,7 +4760,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "!has", "iata" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4787,7 +4787,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "has", "iata" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 12, 0.5 ], [ 14, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, diff --git a/apps/client/src/widgets/collections/geomap/styles/eclipse/style.json b/apps/client/src/widgets/collections/geomap/styles/eclipse/style.json index 51b7b2d5c..bbafd36aa 100644 --- a/apps/client/src/widgets/collections/geomap/styles/eclipse/style.json +++ b/apps/client/src/widgets/collections/geomap/styles/eclipse/style.json @@ -4122,7 +4122,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "pedestrian" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4144,7 +4144,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "living_street" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4166,7 +4166,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "residential" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4188,7 +4188,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "unclassified" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4210,7 +4210,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "tertiary" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4232,7 +4232,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "secondary" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4254,7 +4254,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "primary" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4276,7 +4276,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "trunk" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4298,7 +4298,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "neighbourhood" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 14, 12 ] ] }, "text-transform": "uppercase" @@ -4319,7 +4319,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "quarter" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 13, 13 ] ] }, "text-transform": "uppercase" @@ -4340,7 +4340,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "suburb" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 11, 11 ], [ 13, 14 ] ] }, "text-transform": "uppercase" @@ -4361,7 +4361,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "hamlet" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 10, 11 ], [ 12, 14 ] ] } }, @@ -4381,7 +4381,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "village" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 9, 11 ], [ 12, 14 ] ] } }, @@ -4401,7 +4401,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "town" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 8, 11 ], [ 12, 14 ] ] } }, @@ -4421,7 +4421,7 @@ "source-layer": "boundary_labels", "filter": [ "in", "admin_level", 4, "4" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4446,7 +4446,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "city" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 7, 11 ], [ 10, 14 ] ] } }, @@ -4466,7 +4466,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "state_capital" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 6, 11 ], [ 10, 15 ] ] } }, @@ -4486,7 +4486,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "capital" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 5, 12 ], [ 10, 16 ] ] } }, @@ -4506,7 +4506,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<=", "way_area", 10000000 ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4531,7 +4531,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<", "way_area", 90000000 ], [ ">", "way_area", 10000000 ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4556,7 +4556,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ ">=", "way_area", 90000000 ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4625,7 +4625,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "bus_stop" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 16, 0.5 ], [ 18, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4652,7 +4652,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "tram_stop" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 15, 0.5 ], [ 17, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4679,7 +4679,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "subway" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4706,7 +4706,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "light_rail" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4733,7 +4733,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "!in", "station", "light_rail", "subway" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4760,7 +4760,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "!has", "iata" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4787,7 +4787,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "has", "iata" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 12, 0.5 ], [ 14, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, diff --git a/apps/client/src/widgets/collections/geomap/styles/empty/style.json b/apps/client/src/widgets/collections/geomap/styles/empty/style.json new file mode 100644 index 000000000..ca9e6496d --- /dev/null +++ b/apps/client/src/widgets/collections/geomap/styles/empty/style.json @@ -0,0 +1,30 @@ +{ + "version": 8, + "name": "versatiles-empty", + "metadata": { + "license": "https://creativecommons.org/publicdomain/zero/1.0/" + }, + "glyphs": "https://tiles.versatiles.org/assets/glyphs/{fontstack}/{range}.pbf", + "sprite": [ + { + "id": "basics", + "url": "https://tiles.versatiles.org/assets/sprites/basics/sprites" + } + ], + "sources": { + "versatiles-shortbread": { + "attribution": "© OpenStreetMap contributors", + "tiles": [ + "https://tiles.versatiles.org/tiles/osm/{z}/{x}/{y}" + ], + "type": "vector", + "scheme": "xyz", + "bounds": [ -180, -85.0511287798066, 180, 85.0511287798066 ], + "minzoom": 0, + "maxzoom": 14 + } + }, + "layers": [ + + ] +} \ No newline at end of file diff --git a/apps/client/src/widgets/collections/geomap/styles/graybeard/de.json b/apps/client/src/widgets/collections/geomap/styles/graybeard/de.json index 4b04b9fad..e3e2beaed 100644 --- a/apps/client/src/widgets/collections/geomap/styles/graybeard/de.json +++ b/apps/client/src/widgets/collections/geomap/styles/graybeard/de.json @@ -4122,7 +4122,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "pedestrian" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4144,7 +4144,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "living_street" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4166,7 +4166,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "residential" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4188,7 +4188,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "unclassified" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4210,7 +4210,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "tertiary" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4232,7 +4232,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "secondary" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4254,7 +4254,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "primary" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4276,7 +4276,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "trunk" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4298,7 +4298,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "neighbourhood" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 14, 12 ] ] }, "text-transform": "uppercase" @@ -4319,7 +4319,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "quarter" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 13, 13 ] ] }, "text-transform": "uppercase" @@ -4340,7 +4340,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "suburb" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 11, 11 ], [ 13, 14 ] ] }, "text-transform": "uppercase" @@ -4361,7 +4361,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "hamlet" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 10, 11 ], [ 12, 14 ] ] } }, @@ -4381,7 +4381,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "village" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 9, 11 ], [ 12, 14 ] ] } }, @@ -4401,7 +4401,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "town" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 8, 11 ], [ 12, 14 ] ] } }, @@ -4421,7 +4421,7 @@ "source-layer": "boundary_labels", "filter": [ "in", "admin_level", 4, "4" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4446,7 +4446,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "city" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 7, 11 ], [ 10, 14 ] ] } }, @@ -4466,7 +4466,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "state_capital" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 6, 11 ], [ 10, 15 ] ] } }, @@ -4486,7 +4486,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "capital" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 5, 12 ], [ 10, 16 ] ] } }, @@ -4506,7 +4506,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<=", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4531,7 +4531,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<", "way_area", 90000000 ], [ ">", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4556,7 +4556,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ ">=", "way_area", 90000000 ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4625,7 +4625,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "bus_stop" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 16, 0.5 ], [ 18, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4652,7 +4652,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "tram_stop" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 15, 0.5 ], [ 17, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4679,7 +4679,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "subway" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4706,7 +4706,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "light_rail" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4733,7 +4733,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "!in", "station", "light_rail", "subway" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4760,7 +4760,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "!has", "iata" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4787,7 +4787,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "has", "iata" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 12, 0.5 ], [ 14, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, diff --git a/apps/client/src/widgets/collections/geomap/styles/graybeard/en.json b/apps/client/src/widgets/collections/geomap/styles/graybeard/en.json index cb63e8130..966b1521c 100644 --- a/apps/client/src/widgets/collections/geomap/styles/graybeard/en.json +++ b/apps/client/src/widgets/collections/geomap/styles/graybeard/en.json @@ -4122,7 +4122,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "pedestrian" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4144,7 +4144,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "living_street" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4166,7 +4166,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "residential" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4188,7 +4188,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "unclassified" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4210,7 +4210,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "tertiary" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4232,7 +4232,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "secondary" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4254,7 +4254,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "primary" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4276,7 +4276,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "trunk" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4298,7 +4298,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "neighbourhood" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 14, 12 ] ] }, "text-transform": "uppercase" @@ -4319,7 +4319,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "quarter" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 13, 13 ] ] }, "text-transform": "uppercase" @@ -4340,7 +4340,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "suburb" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 11, 11 ], [ 13, 14 ] ] }, "text-transform": "uppercase" @@ -4361,7 +4361,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "hamlet" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 10, 11 ], [ 12, 14 ] ] } }, @@ -4381,7 +4381,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "village" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 9, 11 ], [ 12, 14 ] ] } }, @@ -4401,7 +4401,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "town" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 8, 11 ], [ 12, 14 ] ] } }, @@ -4421,7 +4421,7 @@ "source-layer": "boundary_labels", "filter": [ "in", "admin_level", 4, "4" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4446,7 +4446,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "city" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 7, 11 ], [ 10, 14 ] ] } }, @@ -4466,7 +4466,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "state_capital" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 6, 11 ], [ 10, 15 ] ] } }, @@ -4486,7 +4486,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "capital" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 5, 12 ], [ 10, 16 ] ] } }, @@ -4506,7 +4506,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<=", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4531,7 +4531,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<", "way_area", 90000000 ], [ ">", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4556,7 +4556,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ ">=", "way_area", 90000000 ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4625,7 +4625,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "bus_stop" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 16, 0.5 ], [ 18, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4652,7 +4652,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "tram_stop" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 15, 0.5 ], [ 17, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4679,7 +4679,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "subway" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4706,7 +4706,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "light_rail" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4733,7 +4733,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "!in", "station", "light_rail", "subway" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4760,7 +4760,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "!has", "iata" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4787,7 +4787,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "has", "iata" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 12, 0.5 ], [ 14, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, diff --git a/apps/client/src/widgets/collections/geomap/styles/graybeard/style.json b/apps/client/src/widgets/collections/geomap/styles/graybeard/style.json index 3db4db197..d0d2b8584 100644 --- a/apps/client/src/widgets/collections/geomap/styles/graybeard/style.json +++ b/apps/client/src/widgets/collections/geomap/styles/graybeard/style.json @@ -4122,7 +4122,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "pedestrian" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4144,7 +4144,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "living_street" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4166,7 +4166,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "residential" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4188,7 +4188,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "unclassified" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4210,7 +4210,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "tertiary" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4232,7 +4232,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "secondary" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4254,7 +4254,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "primary" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4276,7 +4276,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "trunk" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4298,7 +4298,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "neighbourhood" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 14, 12 ] ] }, "text-transform": "uppercase" @@ -4319,7 +4319,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "quarter" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 13, 13 ] ] }, "text-transform": "uppercase" @@ -4340,7 +4340,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "suburb" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 11, 11 ], [ 13, 14 ] ] }, "text-transform": "uppercase" @@ -4361,7 +4361,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "hamlet" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 10, 11 ], [ 12, 14 ] ] } }, @@ -4381,7 +4381,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "village" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 9, 11 ], [ 12, 14 ] ] } }, @@ -4401,7 +4401,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "town" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 8, 11 ], [ 12, 14 ] ] } }, @@ -4421,7 +4421,7 @@ "source-layer": "boundary_labels", "filter": [ "in", "admin_level", 4, "4" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4446,7 +4446,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "city" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 7, 11 ], [ 10, 14 ] ] } }, @@ -4466,7 +4466,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "state_capital" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 6, 11 ], [ 10, 15 ] ] } }, @@ -4486,7 +4486,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "capital" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 5, 12 ], [ 10, 16 ] ] } }, @@ -4506,7 +4506,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<=", "way_area", 10000000 ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4531,7 +4531,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<", "way_area", 90000000 ], [ ">", "way_area", 10000000 ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4556,7 +4556,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ ">=", "way_area", 90000000 ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4625,7 +4625,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "bus_stop" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 16, 0.5 ], [ 18, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4652,7 +4652,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "tram_stop" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 15, 0.5 ], [ 17, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4679,7 +4679,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "subway" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4706,7 +4706,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "light_rail" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4733,7 +4733,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "!in", "station", "light_rail", "subway" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4760,7 +4760,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "!has", "iata" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4787,7 +4787,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "has", "iata" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 12, 0.5 ], [ 14, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, diff --git a/apps/client/src/widgets/collections/geomap/styles/neutrino/de.json b/apps/client/src/widgets/collections/geomap/styles/neutrino/de.json index 0b4395c95..b2f31ffc3 100644 --- a/apps/client/src/widgets/collections/geomap/styles/neutrino/de.json +++ b/apps/client/src/widgets/collections/geomap/styles/neutrino/de.json @@ -2480,7 +2480,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "pedestrian" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2502,7 +2502,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "living_street" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2524,7 +2524,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "residential" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2546,7 +2546,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "unclassified" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2568,7 +2568,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "tertiary" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2590,7 +2590,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "secondary" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2612,7 +2612,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "primary" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2634,7 +2634,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "trunk" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2656,7 +2656,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "neighbourhood" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 14, 12 ] ] }, "text-transform": "uppercase" @@ -2677,7 +2677,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "quarter" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 13, 13 ] ] }, "text-transform": "uppercase" @@ -2698,7 +2698,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "suburb" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 11, 11 ], [ 13, 14 ] ] }, "text-transform": "uppercase" @@ -2719,7 +2719,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "hamlet" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 10, 11 ], [ 12, 14 ] ] } }, @@ -2739,7 +2739,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "village" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 9, 11 ], [ 12, 14 ] ] } }, @@ -2759,7 +2759,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "town" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 8, 11 ], [ 12, 14 ] ] } }, @@ -2779,7 +2779,7 @@ "source-layer": "boundary_labels", "filter": [ "in", "admin_level", 4, "4" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_bold" ], "text-transform": "uppercase", "text-size": { "stops": [ [ 5, 8 ], [ 8, 12 ] ] } @@ -2800,7 +2800,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "city" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 7, 11 ], [ 10, 14 ] ] } }, @@ -2820,7 +2820,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "state_capital" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 6, 11 ], [ 10, 15 ] ] } }, @@ -2840,7 +2840,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "capital" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 5, 12 ], [ 10, 16 ] ] } }, @@ -2860,7 +2860,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<=", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_bold" ], "text-transform": "uppercase", "text-size": { "stops": [ [ 4, 11 ], [ 5, 14 ] ] } @@ -2881,7 +2881,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<", "way_area", 90000000 ], [ ">", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_bold" ], "text-transform": "uppercase", "text-size": { "stops": [ [ 3, 11 ], [ 5, 15 ] ] } @@ -2902,7 +2902,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ ">=", "way_area", 90000000 ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_bold" ], "text-transform": "uppercase", "text-size": { "stops": [ [ 2, 11 ], [ 5, 16 ] ] } diff --git a/apps/client/src/widgets/collections/geomap/styles/neutrino/en.json b/apps/client/src/widgets/collections/geomap/styles/neutrino/en.json index cd5e5f0bb..bc4a7d6a6 100644 --- a/apps/client/src/widgets/collections/geomap/styles/neutrino/en.json +++ b/apps/client/src/widgets/collections/geomap/styles/neutrino/en.json @@ -2480,7 +2480,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "pedestrian" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2502,7 +2502,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "living_street" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2524,7 +2524,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "residential" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2546,7 +2546,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "unclassified" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2568,7 +2568,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "tertiary" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2590,7 +2590,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "secondary" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2612,7 +2612,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "primary" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2634,7 +2634,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "trunk" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2656,7 +2656,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "neighbourhood" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 14, 12 ] ] }, "text-transform": "uppercase" @@ -2677,7 +2677,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "quarter" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 13, 13 ] ] }, "text-transform": "uppercase" @@ -2698,7 +2698,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "suburb" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 11, 11 ], [ 13, 14 ] ] }, "text-transform": "uppercase" @@ -2719,7 +2719,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "hamlet" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 10, 11 ], [ 12, 14 ] ] } }, @@ -2739,7 +2739,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "village" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 9, 11 ], [ 12, 14 ] ] } }, @@ -2759,7 +2759,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "town" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 8, 11 ], [ 12, 14 ] ] } }, @@ -2779,7 +2779,7 @@ "source-layer": "boundary_labels", "filter": [ "in", "admin_level", 4, "4" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_bold" ], "text-transform": "uppercase", "text-size": { "stops": [ [ 5, 8 ], [ 8, 12 ] ] } @@ -2800,7 +2800,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "city" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 7, 11 ], [ 10, 14 ] ] } }, @@ -2820,7 +2820,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "state_capital" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 6, 11 ], [ 10, 15 ] ] } }, @@ -2840,7 +2840,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "capital" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 5, 12 ], [ 10, 16 ] ] } }, @@ -2860,7 +2860,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<=", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_bold" ], "text-transform": "uppercase", "text-size": { "stops": [ [ 4, 11 ], [ 5, 14 ] ] } @@ -2881,7 +2881,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<", "way_area", 90000000 ], [ ">", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_bold" ], "text-transform": "uppercase", "text-size": { "stops": [ [ 3, 11 ], [ 5, 15 ] ] } @@ -2902,7 +2902,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ ">=", "way_area", 90000000 ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_bold" ], "text-transform": "uppercase", "text-size": { "stops": [ [ 2, 11 ], [ 5, 16 ] ] } diff --git a/apps/client/src/widgets/collections/geomap/styles/neutrino/style.json b/apps/client/src/widgets/collections/geomap/styles/neutrino/style.json index 8ee43359b..f3d666ae2 100644 --- a/apps/client/src/widgets/collections/geomap/styles/neutrino/style.json +++ b/apps/client/src/widgets/collections/geomap/styles/neutrino/style.json @@ -2480,7 +2480,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "pedestrian" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2502,7 +2502,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "living_street" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2524,7 +2524,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "residential" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2546,7 +2546,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "unclassified" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2568,7 +2568,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "tertiary" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2590,7 +2590,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "secondary" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2612,7 +2612,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "primary" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2634,7 +2634,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "trunk" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -2656,7 +2656,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "neighbourhood" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 14, 12 ] ] }, "text-transform": "uppercase" @@ -2677,7 +2677,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "quarter" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 13, 13 ] ] }, "text-transform": "uppercase" @@ -2698,7 +2698,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "suburb" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 11, 11 ], [ 13, 14 ] ] }, "text-transform": "uppercase" @@ -2719,7 +2719,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "hamlet" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 10, 11 ], [ 12, 14 ] ] } }, @@ -2739,7 +2739,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "village" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 9, 11 ], [ 12, 14 ] ] } }, @@ -2759,7 +2759,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "town" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 8, 11 ], [ 12, 14 ] ] } }, @@ -2779,7 +2779,7 @@ "source-layer": "boundary_labels", "filter": [ "in", "admin_level", 4, "4" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_bold" ], "text-transform": "uppercase", "text-size": { "stops": [ [ 5, 8 ], [ 8, 12 ] ] } @@ -2800,7 +2800,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "city" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 7, 11 ], [ 10, 14 ] ] } }, @@ -2820,7 +2820,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "state_capital" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 6, 11 ], [ 10, 15 ] ] } }, @@ -2840,7 +2840,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "capital" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 5, 12 ], [ 10, 16 ] ] } }, @@ -2860,7 +2860,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<=", "way_area", 10000000 ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_bold" ], "text-transform": "uppercase", "text-size": { "stops": [ [ 4, 11 ], [ 5, 14 ] ] } @@ -2881,7 +2881,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<", "way_area", 90000000 ], [ ">", "way_area", 10000000 ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_bold" ], "text-transform": "uppercase", "text-size": { "stops": [ [ 3, 11 ], [ 5, 15 ] ] } @@ -2902,7 +2902,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ ">=", "way_area", 90000000 ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_bold" ], "text-transform": "uppercase", "text-size": { "stops": [ [ 2, 11 ], [ 5, 16 ] ] } diff --git a/apps/client/src/widgets/collections/geomap/styles/shadow/de.json b/apps/client/src/widgets/collections/geomap/styles/shadow/de.json index b913e5bf9..cb25a56f2 100644 --- a/apps/client/src/widgets/collections/geomap/styles/shadow/de.json +++ b/apps/client/src/widgets/collections/geomap/styles/shadow/de.json @@ -4122,7 +4122,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "pedestrian" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4144,7 +4144,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "living_street" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4166,7 +4166,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "residential" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4188,7 +4188,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "unclassified" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4210,7 +4210,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "tertiary" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4232,7 +4232,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "secondary" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4254,7 +4254,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "primary" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4276,7 +4276,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "trunk" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4298,7 +4298,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "neighbourhood" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 14, 12 ] ] }, "text-transform": "uppercase" @@ -4319,7 +4319,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "quarter" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 13, 13 ] ] }, "text-transform": "uppercase" @@ -4340,7 +4340,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "suburb" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 11, 11 ], [ 13, 14 ] ] }, "text-transform": "uppercase" @@ -4361,7 +4361,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "hamlet" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 10, 11 ], [ 12, 14 ] ] } }, @@ -4381,7 +4381,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "village" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 9, 11 ], [ 12, 14 ] ] } }, @@ -4401,7 +4401,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "town" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 8, 11 ], [ 12, 14 ] ] } }, @@ -4421,7 +4421,7 @@ "source-layer": "boundary_labels", "filter": [ "in", "admin_level", 4, "4" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4446,7 +4446,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "city" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 7, 11 ], [ 10, 14 ] ] } }, @@ -4466,7 +4466,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "state_capital" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 6, 11 ], [ 10, 15 ] ] } }, @@ -4486,7 +4486,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "capital" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 5, 12 ], [ 10, 16 ] ] } }, @@ -4506,7 +4506,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<=", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4531,7 +4531,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<", "way_area", 90000000 ], [ ">", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4556,7 +4556,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ ">=", "way_area", 90000000 ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4625,7 +4625,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "bus_stop" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 16, 0.5 ], [ 18, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4652,7 +4652,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "tram_stop" ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 15, 0.5 ], [ 17, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4679,7 +4679,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "subway" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4706,7 +4706,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "light_rail" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4733,7 +4733,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "!in", "station", "light_rail", "subway" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4760,7 +4760,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "!has", "iata" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4787,7 +4787,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "has", "iata" ] ], "layout": { - "text-field": "{name_de}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_de" ] ], [ "get", "name_de" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 12, 0.5 ], [ 14, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, diff --git a/apps/client/src/widgets/collections/geomap/styles/shadow/en.json b/apps/client/src/widgets/collections/geomap/styles/shadow/en.json index 877fe7a59..e5cf0819a 100644 --- a/apps/client/src/widgets/collections/geomap/styles/shadow/en.json +++ b/apps/client/src/widgets/collections/geomap/styles/shadow/en.json @@ -4122,7 +4122,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "pedestrian" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4144,7 +4144,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "living_street" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4166,7 +4166,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "residential" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4188,7 +4188,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "unclassified" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4210,7 +4210,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "tertiary" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4232,7 +4232,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "secondary" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4254,7 +4254,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "primary" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4276,7 +4276,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "trunk" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4298,7 +4298,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "neighbourhood" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 14, 12 ] ] }, "text-transform": "uppercase" @@ -4319,7 +4319,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "quarter" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 13, 13 ] ] }, "text-transform": "uppercase" @@ -4340,7 +4340,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "suburb" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 11, 11 ], [ 13, 14 ] ] }, "text-transform": "uppercase" @@ -4361,7 +4361,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "hamlet" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 10, 11 ], [ 12, 14 ] ] } }, @@ -4381,7 +4381,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "village" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 9, 11 ], [ 12, 14 ] ] } }, @@ -4401,7 +4401,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "town" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 8, 11 ], [ 12, 14 ] ] } }, @@ -4421,7 +4421,7 @@ "source-layer": "boundary_labels", "filter": [ "in", "admin_level", 4, "4" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4446,7 +4446,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "city" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 7, 11 ], [ 10, 14 ] ] } }, @@ -4466,7 +4466,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "state_capital" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 6, 11 ], [ 10, 15 ] ] } }, @@ -4486,7 +4486,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "capital" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 5, 12 ], [ 10, 16 ] ] } }, @@ -4506,7 +4506,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<=", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4531,7 +4531,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<", "way_area", 90000000 ], [ ">", "way_area", 10000000 ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4556,7 +4556,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ ">=", "way_area", 90000000 ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4625,7 +4625,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "bus_stop" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 16, 0.5 ], [ 18, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4652,7 +4652,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "tram_stop" ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 15, 0.5 ], [ 17, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4679,7 +4679,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "subway" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4706,7 +4706,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "light_rail" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4733,7 +4733,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "!in", "station", "light_rail", "subway" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4760,7 +4760,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "!has", "iata" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4787,7 +4787,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "has", "iata" ] ], "layout": { - "text-field": "{name_en}", + "text-field": [ "case", [ "to-boolean", [ "get", "name_en" ] ], [ "get", "name_en" ], [ "get", "name" ] ], "icon-size": { "stops": [ [ 12, 0.5 ], [ 14, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, diff --git a/apps/client/src/widgets/collections/geomap/styles/shadow/style.json b/apps/client/src/widgets/collections/geomap/styles/shadow/style.json index 3955f6d5c..c31549c1c 100644 --- a/apps/client/src/widgets/collections/geomap/styles/shadow/style.json +++ b/apps/client/src/widgets/collections/geomap/styles/shadow/style.json @@ -4122,7 +4122,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "pedestrian" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4144,7 +4144,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "living_street" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4166,7 +4166,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "residential" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4188,7 +4188,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "unclassified" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4210,7 +4210,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "tertiary" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4232,7 +4232,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "secondary" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4254,7 +4254,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "primary" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4276,7 +4276,7 @@ "source-layer": "street_labels", "filter": [ "==", "kind", "trunk" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "symbol-placement": "line", "text-anchor": "center", @@ -4298,7 +4298,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "neighbourhood" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 14, 12 ] ] }, "text-transform": "uppercase" @@ -4319,7 +4319,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "quarter" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 13, 13 ] ] }, "text-transform": "uppercase" @@ -4340,7 +4340,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "suburb" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 11, 11 ], [ 13, 14 ] ] }, "text-transform": "uppercase" @@ -4361,7 +4361,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "hamlet" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 10, 11 ], [ 12, 14 ] ] } }, @@ -4381,7 +4381,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "village" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 9, 11 ], [ 12, 14 ] ] } }, @@ -4401,7 +4401,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "town" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 8, 11 ], [ 12, 14 ] ] } }, @@ -4421,7 +4421,7 @@ "source-layer": "boundary_labels", "filter": [ "in", "admin_level", 4, "4" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4446,7 +4446,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "city" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 7, 11 ], [ 10, 14 ] ] } }, @@ -4466,7 +4466,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "state_capital" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 6, 11 ], [ 10, 15 ] ] } }, @@ -4486,7 +4486,7 @@ "source-layer": "place_labels", "filter": [ "==", "kind", "capital" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-size": { "stops": [ [ 5, 12 ], [ 10, 16 ] ] } }, @@ -4506,7 +4506,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<=", "way_area", 10000000 ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4531,7 +4531,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ "<", "way_area", 90000000 ], [ ">", "way_area", 10000000 ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4556,7 +4556,7 @@ "source-layer": "boundary_labels", "filter": [ "all", [ "in", "admin_level", 2, "2" ], [ ">=", "way_area", 90000000 ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "text-font": [ "noto_sans_regular" ], "text-transform": "uppercase", "text-anchor": "top", @@ -4625,7 +4625,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "bus_stop" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 16, 0.5 ], [ 18, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4652,7 +4652,7 @@ "source-layer": "public_transport", "filter": [ "==", "kind", "tram_stop" ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 15, 0.5 ], [ 17, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4679,7 +4679,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "subway" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4706,7 +4706,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "==", "station", "light_rail" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 14, 0.5 ], [ 16, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4733,7 +4733,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "in", "kind", "station", "halt" ], [ "!in", "station", "light_rail", "subway" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4760,7 +4760,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "!has", "iata" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 13, 0.5 ], [ 15, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, @@ -4787,7 +4787,7 @@ "source-layer": "public_transport", "filter": [ "all", [ "==", "kind", "aerodrome" ], [ "has", "iata" ] ], "layout": { - "text-field": "{name}", + "text-field": [ "get", "name" ], "icon-size": { "stops": [ [ 12, 0.5 ], [ 14, 1 ] ] }, "symbol-placement": "point", "icon-keep-upright": true, diff --git a/apps/client/src/widgets/collections/interface.ts b/apps/client/src/widgets/collections/interface.ts index 118599260..4a965588d 100644 --- a/apps/client/src/widgets/collections/interface.ts +++ b/apps/client/src/widgets/collections/interface.ts @@ -1,4 +1,5 @@ import FNote from "../../entities/fnote"; +import type { PrintReport } from "../../print"; export const allViewTypes = ["list", "grid", "calendar", "table", "geoMap", "board", "presentation"] as const; export type ViewTypeOptions = typeof allViewTypes[number]; @@ -18,6 +19,6 @@ export interface ViewModeProps { viewConfig: T | undefined; saveConfig(newConfig: T): void; media: ViewModeMedia; - onReady(): void; + onReady(data: PrintReport): void; onProgressChanged?: ProgressChangedFn; } diff --git a/apps/client/src/widgets/collections/legacy/ListOrGridView.css b/apps/client/src/widgets/collections/legacy/ListOrGridView.css index 2a6b25366..c6b21c0b1 100644 --- a/apps/client/src/widgets/collections/legacy/ListOrGridView.css +++ b/apps/client/src/widgets/collections/legacy/ListOrGridView.css @@ -75,6 +75,7 @@ justify-content: center; text-align: center; padding: 10px; + flex-grow: 1; } .note-book-content.type-image img, .note-book-content.type-canvas svg { @@ -141,4 +142,4 @@ border: 1px solid var(--main-border-color); background: var(--more-accented-background-color); } -/* #endregion */ \ No newline at end of file +/* #endregion */ diff --git a/apps/client/src/widgets/collections/legacy/ListOrGridView.tsx b/apps/client/src/widgets/collections/legacy/ListOrGridView.tsx index 850aa3fba..8180e6d65 100644 --- a/apps/client/src/widgets/collections/legacy/ListOrGridView.tsx +++ b/apps/client/src/widgets/collections/legacy/ListOrGridView.tsx @@ -1,22 +1,25 @@ -import { useEffect, useRef, useState } from "preact/hooks"; -import FNote from "../../../entities/fnote"; -import Icon from "../../react/Icon"; -import { ViewModeProps } from "../interface"; -import { useImperativeSearchHighlighlighting, useNoteLabel } from "../../react/hooks"; -import NoteLink from "../../react/NoteLink"; import "./ListOrGridView.css"; -import content_renderer from "../../../services/content_renderer"; -import { Pager, usePagination } from "../Pagination"; -import tree from "../../../services/tree"; -import link from "../../../services/link"; -import { t } from "../../../services/i18n"; + +import { useEffect, useRef, useState } from "preact/hooks"; + +import FNote from "../../../entities/fnote"; import attribute_renderer from "../../../services/attribute_renderer"; +import content_renderer from "../../../services/content_renderer"; +import { t } from "../../../services/i18n"; +import link from "../../../services/link"; +import tree from "../../../services/tree"; +import { useImperativeSearchHighlighlighting, useNoteLabel, useNoteLabelBoolean } from "../../react/hooks"; +import Icon from "../../react/Icon"; +import NoteLink from "../../react/NoteLink"; +import { ViewModeProps } from "../interface"; +import { Pager, usePagination } from "../Pagination"; import { filterChildNotes, useFilteredNoteIds } from "./utils"; export function ListView({ note, noteIds: unfilteredNoteIds, highlightedTokens }: ViewModeProps<{}>) { const expandDepth = useExpansionDepth(note); const noteIds = useFilteredNoteIds(note, unfilteredNoteIds); const { pageNotes, ...pagination } = usePagination(note, noteIds); + const [ includeArchived ] = useNoteLabelBoolean(note, "includeArchived"); return (
@@ -25,7 +28,11 @@ export function ListView({ note, noteIds: unfilteredNoteIds, highlightedTokens } @@ -56,12 +63,13 @@ export function GridView({ note, noteIds: unfilteredNoteIds, highlightedTokens } ); } -function ListNoteCard({ note, parentNote, highlightedTokens, currentLevel, expandDepth }: { +function ListNoteCard({ note, parentNote, highlightedTokens, currentLevel, expandDepth, includeArchived }: { note: FNote, parentNote: FNote, currentLevel: number, expandDepth: number, - highlightedTokens: string[] | null | undefined + highlightedTokens: string[] | null | undefined; + includeArchived: boolean; }) { const [ isExpanded, setExpanded ] = useState(currentLevel <= expandDepth); @@ -88,10 +96,10 @@ function ListNoteCard({ note, parentNote, highlightedTokens, currentLevel, expan {isExpanded && <> - + }
- ) + ); } function GridNoteCard({ note, parentNote, highlightedTokens }: { note: FNote, parentNote: FNote, highlightedTokens: string[] | null | undefined }) { @@ -124,7 +132,7 @@ function GridNoteCard({ note, parentNote, highlightedTokens }: { note: FNote, pa highlightedTokens={highlightedTokens} /> - ) + ); } function NoteAttributes({ note }: { note: FNote }) { @@ -135,7 +143,7 @@ function NoteAttributes({ note }: { note: FNote }) { }); }, [ note ]); - return + return ; } function NoteContent({ note, trim, noChildrenList, highlightedTokens }: { note: FNote, trim?: boolean, noChildrenList?: boolean, highlightedTokens: string[] | null | undefined }) { @@ -161,40 +169,43 @@ function NoteContent({ note, trim, noChildrenList, highlightedTokens }: { note: console.warn(`Caught error while rendering note '${note.noteId}' of type '${note.type}'`); console.error(e); contentRef.current?.replaceChildren(t("collections.rendering_error")); - }) + }); }, [ note, highlightedTokens ]); return
; } -function NoteChildren({ note, parentNote, highlightedTokens, currentLevel, expandDepth }: { +function NoteChildren({ note, parentNote, highlightedTokens, currentLevel, expandDepth, includeArchived }: { note: FNote, parentNote: FNote, currentLevel: number, expandDepth: number, highlightedTokens: string[] | null | undefined + includeArchived: boolean; }) { const [ childNotes, setChildNotes ] = useState(); useEffect(() => { - filterChildNotes(note).then(setChildNotes); - }, [ note ]); + filterChildNotes(note, includeArchived).then(setChildNotes); + }, [ note, includeArchived ]); return childNotes?.map(childNote => ) + includeArchived={includeArchived} + />); } function getNotePath(parentNote: FNote, childNote: FNote) { if (parentNote.type === "search") { // for search note parent, we want to display a non-search path return childNote.noteId; - } else { - return `${parentNote.noteId}/${childNote.noteId}` } + return `${parentNote.noteId}/${childNote.noteId}`; + } function useExpansionDepth(note: FNote) { @@ -206,7 +217,7 @@ function useExpansionDepth(note: FNote) { return 1; } else if (expandDepth === "all") { return Number.MAX_SAFE_INTEGER; - } else { - return parseInt(expandDepth, 10); } + return parseInt(expandDepth, 10); + } diff --git a/apps/client/src/widgets/collections/legacy/ListPrintView.tsx b/apps/client/src/widgets/collections/legacy/ListPrintView.tsx index 07e140b17..c2a284e7d 100644 --- a/apps/client/src/widgets/collections/legacy/ListPrintView.tsx +++ b/apps/client/src/widgets/collections/legacy/ListPrintView.tsx @@ -1,7 +1,9 @@ import { useEffect, useLayoutEffect, useState } from "preact/hooks"; -import froca from "../../../services/froca"; + import type FNote from "../../../entities/fnote"; +import type { PrintReport } from "../../../print"; import content_renderer from "../../../services/content_renderer"; +import froca from "../../../services/froca"; import type { ViewModeProps } from "../interface"; import { filterChildNotes, useFilteredNoteIds } from "./utils"; @@ -12,27 +14,35 @@ interface NotesWithContent { export function ListPrintView({ note, noteIds: unfilteredNoteIds, onReady, onProgressChanged }: ViewModeProps<{}>) { const noteIds = useFilteredNoteIds(note, unfilteredNoteIds); - const [ notesWithContent, setNotesWithContent ] = useState(); + const [ state, setState ] = useState<{ + notesWithContent?: NotesWithContent[], + data?: PrintReport + }>({}); useLayoutEffect(() => { const noteIdsSet = new Set(); froca.getNotes(noteIds).then(async (notes) => { const noteIdsWithChildren = await note.getSubtreeNoteIds(true); + const ignoredNoteIds: string[] = []; const notesWithContent: NotesWithContent[] = []; async function processNote(note: FNote, depth: number) { - const content = await content_renderer.getRenderedContent(note, { - trim: false, - noChildrenList: true - }); + if (isNotePrintable(note)) { + const content = await content_renderer.getRenderedContent(note, { + trim: false, + noChildrenList: true + }); - const contentEl = content.$renderedContent[0]; + const contentEl = content.$renderedContent[0]; - insertPageTitle(contentEl, note.title); - rewriteHeadings(contentEl, depth); - noteIdsSet.add(note.noteId); - notesWithContent.push({ note, contentEl }); + insertPageTitle(contentEl, note.title); + rewriteHeadings(contentEl, depth); + noteIdsSet.add(note.noteId); + notesWithContent.push({ note, contentEl }); + } else { + ignoredNoteIds.push(note.noteId); + } if (onProgressChanged) { onProgressChanged(notesWithContent.length / noteIdsWithChildren.length); @@ -55,22 +65,28 @@ export function ListPrintView({ note, noteIds: unfilteredNoteIds, onReady, onPro rewriteLinks(contentEl, noteIdsSet); } - setNotesWithContent(notesWithContent); + setState({ + notesWithContent, + data: { + type: "collection", + ignoredNoteIds + } + }); }); }, [noteIds]); useEffect(() => { - if (notesWithContent && onReady) { - onReady(); + if (onReady && state?.data) { + onReady(state.data); } - }, [ notesWithContent, onReady ]); + }, [ state, onReady ]); return (
@@ -78,6 +94,18 @@ export function ListPrintView({ note, noteIds: unfilteredNoteIds, onReady, onPro ); } +function isNotePrintable(note: FNote) { + if (!note.isContentAvailable()) { + return false; + } + + if (note.type === "file") { + return false; + } + + return true; +} + function insertPageTitle(contentEl: HTMLElement, title: string) { const pageTitleEl = document.createElement("h1"); pageTitleEl.textContent = title; diff --git a/apps/client/src/widgets/collections/legacy/utils.ts b/apps/client/src/widgets/collections/legacy/utils.ts index 6432ce1d2..5baa360e2 100644 --- a/apps/client/src/widgets/collections/legacy/utils.ts +++ b/apps/client/src/widgets/collections/legacy/utils.ts @@ -1,4 +1,5 @@ import { useMemo } from "preact/hooks"; + import FNote from "../../../entities/fnote"; /** @@ -12,9 +13,9 @@ export function useFilteredNoteIds(note: FNote, noteIds: string[]) { }, [ note, noteIds ]); } -export async function filterChildNotes(note: FNote) { +export async function filterChildNotes(note: FNote, includeArchived = true) { const imageLinks = note.getRelations("imageLink"); const imageLinkNoteIds = new Set(imageLinks.map(rel => rel.value)); const childNotes = await note.getChildNotes(); - return childNotes.filter((childNote) => !imageLinkNoteIds.has(childNote.noteId)); + return childNotes.filter((childNote) => !imageLinkNoteIds.has(childNote.noteId) && (includeArchived || !childNote.isArchived)); } diff --git a/apps/client/src/widgets/collections/presentation/model.spec.ts b/apps/client/src/widgets/collections/presentation/model.spec.ts index e5b5b49b6..435557650 100644 --- a/apps/client/src/widgets/collections/presentation/model.spec.ts +++ b/apps/client/src/widgets/collections/presentation/model.spec.ts @@ -1,6 +1,7 @@ import { beforeAll, describe, expect, it } from "vitest"; -import { buildNote } from "../../../test/easy-froca"; + import FNote from "../../../entities/fnote"; +import { buildNote } from "../../../test/easy-froca"; import { buildPresentationModel, PresentationModel } from "./model"; let presentationNote!: FNote; @@ -65,7 +66,7 @@ describe("Presentation model", () => { ] } ] - }) + }); }); it("empty slides don't render children", () => { @@ -73,11 +74,11 @@ describe("Presentation model", () => { }); it("rewrites links to other slides", () => { - expect(data.slides[1].content.__html).toStrictEqual(`

Go to First slide.

`); - expect(data.slides[1].verticalSlides![0].content.__html).toStrictEqual(`

Go to First-sub.

`); + expect(data.slides[1].content.__html).toStrictEqual(`

Go to First slide.

`); + expect(data.slides[1].verticalSlides![0].content.__html).toStrictEqual(`

Go to First-sub.

`); }); it("rewrites links even if they are not part of the slideshow", () => { - expect(data.slides[0].verticalSlides![0].content.__html).toStrictEqual(`

Go to Other note.

`); + expect(data.slides[0].verticalSlides![0].content.__html).toStrictEqual(`

Go to Other note.

`); }); }); diff --git a/apps/client/src/widgets/collections/table/TablePrintView.tsx b/apps/client/src/widgets/collections/table/TablePrintView.tsx index 534ba5764..236d74159 100644 --- a/apps/client/src/widgets/collections/table/TablePrintView.tsx +++ b/apps/client/src/widgets/collections/table/TablePrintView.tsx @@ -1,10 +1,12 @@ +import "./TablePrintView.css"; + import { useEffect, useRef, useState } from "preact/hooks"; +import { ExportModule, FormatModule, Tabulator as VanillaTabulator} from 'tabulator-tables'; + +import { RawHtmlBlock } from "../../react/RawHtml"; import { ViewModeProps } from "../interface"; import useData, { TableConfig } from "./data"; -import { ExportModule, FormatModule, Tabulator as VanillaTabulator} from 'tabulator-tables'; import Tabulator from "./tabulator"; -import { RawHtmlBlock } from "../../react/RawHtml"; -import "./TablePrintView.css"; export default function TablePrintView({ note, noteIds, viewConfig, onReady }: ViewModeProps) { const tabulatorRef = useRef(null); @@ -13,7 +15,10 @@ export default function TablePrintView({ note, noteIds, viewConfig, onReady }: V useEffect(() => { if (!html) return; - onReady?.(); + onReady?.({ + type: "collection", + ignoredNoteIds: [] + }); }, [ html ]); return rowData && ( @@ -45,5 +50,5 @@ export default function TablePrintView({ note, noteIds, viewConfig, onReady }: V
- ) + ); } diff --git a/apps/client/src/widgets/containers/right_pane_container.ts b/apps/client/src/widgets/containers/right_pane_container.ts index 1c88f3695..5e267851d 100644 --- a/apps/client/src/widgets/containers/right_pane_container.ts +++ b/apps/client/src/widgets/containers/right_pane_container.ts @@ -1,9 +1,9 @@ -import FlexContainer from "./flex_container.js"; -import splitService from "../../services/resizer.js"; -import type RightPanelWidget from "../right_panel_widget.js"; import type { EventData, EventNames } from "../../components/app_context.js"; +import splitService from "../../services/resizer.js"; +import type BasicWidget from "../basic_widget.js"; +import FlexContainer from "./flex_container.js"; -export default class RightPaneContainer extends FlexContainer { +export default class RightPaneContainer extends FlexContainer { private rightPaneHidden: boolean; private firstRender: boolean; diff --git a/apps/client/src/widgets/containers/scrolling_container.css b/apps/client/src/widgets/containers/scrolling_container.css index 25ceef124..36d277a17 100644 --- a/apps/client/src/widgets/containers/scrolling_container.css +++ b/apps/client/src/widgets/containers/scrolling_container.css @@ -2,9 +2,23 @@ overflow: auto; scroll-behavior: smooth; position: relative; + + > .inline-title, + > .note-detail > .note-detail-editable-text, + > .note-list-widget:not(.full-height) { + padding-inline: 24px; + } + } -.note-split.type-code:not(.mime-text-x-sqlite) > .scrolling-container { - background-color: var(--code-background-color); - --scrollbar-background-color: var(--main-background-color); +.note-split.type-code:not(.mime-text-x-sqlite) { + &> .scrolling-container { + background-color: var(--code-background-color); + --scrollbar-background-color: var(--main-background-color); + } + + .inline-title, + .title-actions { + background-color: var(--main-background-color); + } } diff --git a/apps/client/src/widgets/dialogs/PopupEditor.css b/apps/client/src/widgets/dialogs/PopupEditor.css index 4a8352174..68172e629 100644 --- a/apps/client/src/widgets/dialogs/PopupEditor.css +++ b/apps/client/src/widgets/dialogs/PopupEditor.css @@ -54,7 +54,7 @@ body.mobile .modal.popup-editor-dialog .modal-dialog { min-height: unset; } -.modal.popup-editor-dialog div.note-title-widget { +:root div.modal.popup-editor-dialog div.note-title-widget { --note-title-padding-inline: 8px; } @@ -106,4 +106,4 @@ body.mobile .modal.popup-editor-dialog .modal-dialog { margin: 0; border-radius: 0; } -} +} \ No newline at end of file diff --git a/apps/client/src/widgets/icon_list.ts b/apps/client/src/widgets/icon_list.ts deleted file mode 100644 index 367b360ce..000000000 --- a/apps/client/src/widgets/icon_list.ts +++ /dev/null @@ -1,10274 +0,0 @@ -// taken from the HTML source of https://boxicons.com/ - -export interface Category { - name: string; - id: number; -} - -export interface Icon { - name: string; - slug: string; - category_id: number; - type_of_icon: "REGULAR" | "SOLID" | "LOGO"; - term?: string[]; - className?: string; -} - -const categories: Category[] = [ - { name: "All categories", id: 0 }, - { - name: "Accessibility", - id: 94 - }, - { - name: "Alert", - id: 95 - }, - { - name: "Animals", - id: 125 - }, - { - name: "Arrow", - id: 96 - }, - { - name: "Brands", - id: 97 - }, - { - name: "Building", - id: 98 - }, - { - name: "Business", - id: 99 - }, - { - name: "Code", - id: 100 - }, - { - name: "Communication", - id: 101 - }, - { - name: "Design", - id: 102 - }, - { - name: "Device", - id: 103 - }, - { - name: "E-Commerce", - id: 104 - }, - { - name: "Emoji", - id: 105 - }, - { - name: "Files \u0026 Folders", - id: 106 - }, - { - name: "Finance", - id: 107 - }, - { - name: "Food \u0026 Beverage", - id: 108 - }, - { - name: "Health", - id: 109 - }, - { - name: "Interface", - id: 110 - }, - { - name: "Layout", - id: 111 - }, - { - name: "Loader", - id: 112 - }, - { - name: "Misc", - id: 113 - }, - { - name: "Music", - id: 114 - }, - { - name: "Network", - id: 115 - }, - { - name: "Object", - id: 116 - }, - { - name: "Photo \u0026 Video", - id: 117 - }, - { - name: "Shape", - id: 118 - }, - { - name: "Sports \u0026 Games", - id: 119 - }, - { - name: "Time", - id: 120 - }, - { - name: "Travel", - id: 121 - }, - { - name: "User", - id: 122 - }, - { - name: "Weather", - id: 123 - }, - { - name: "Writing", - id: 124 - } -]; - -const icons: Icon[] = [ - { - name: "empty", - slug: "empty", - category_id: 113, - type_of_icon: "REGULAR" - }, - { - name: "child", - slug: "child-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "balloon", - slug: "balloon-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "coffee-bean", - slug: "coffee-bean-solid", - category_id: 108, - type_of_icon: "SOLID" - }, - { - name: "pear", - slug: "pear-solid", - category_id: 108, - type_of_icon: "SOLID" - }, - { - name: "sushi", - slug: "sushi-solid", - category_id: 108, - type_of_icon: "SOLID" - }, - { - name: "sushi", - slug: "sushi-regular", - category_id: 108, - type_of_icon: "REGULAR" - }, - { - name: "shower", - slug: "shower-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "shower", - slug: "shower-regular", - category_id: 109, - type_of_icon: "REGULAR" - }, - { - name: "typescript", - slug: "typescript-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "graphql", - slug: "graphql-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "rfid", - slug: "rfid-regular", - category_id: 115, - type_of_icon: "REGULAR" - }, - { - name: "universal-access", - slug: "universal-access-solid", - category_id: 94, - type_of_icon: "SOLID" - }, - { - name: "universal-access", - slug: "universal-access-regular", - category_id: 94, - type_of_icon: "REGULAR" - }, - { - name: "castle", - slug: "castle-solid", - category_id: 98, - type_of_icon: "SOLID", - term: ["fort", "secure"] - }, - { - name: "shield-minus", - slug: "shield-minus-solid", - category_id: 100, - type_of_icon: "SOLID" - }, - { - name: "shield-minus", - slug: "shield-minus-regular", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "shield-plus", - slug: "shield-plus-solid", - category_id: 100, - type_of_icon: "SOLID" - }, - { - name: "shield-plus", - slug: "shield-plus-regular", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "vertical-bottom", - slug: "vertical-bottom-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "vertical-top", - slug: "vertical-top-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "horizontal-right", - slug: "horizontal-right-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "horizontal-left", - slug: "horizontal-left-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "objects-vertical-bottom", - slug: "objects-vertical-bottom-solid", - category_id: 111, - type_of_icon: "SOLID" - }, - { - name: "objects-vertical-bottom", - slug: "objects-vertical-bottom-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "objects-vertical-center", - slug: "objects-vertical-center-solid", - category_id: 111, - type_of_icon: "SOLID" - }, - { - name: "objects-vertical-center", - slug: "objects-vertical-center-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "objects-vertical-top", - slug: "objects-vertical-top-solid", - category_id: 111, - type_of_icon: "SOLID" - }, - { - name: "objects-vertical-top", - slug: "objects-vertical-top-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "objects-horizontal-right", - slug: "objects-horizontal-right-solid", - category_id: 111, - type_of_icon: "SOLID" - }, - { - name: "objects-horizontal-right", - slug: "objects-horizontal-right-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "objects-horizontal-center", - slug: "objects-horizontal-center-solid", - category_id: 111, - type_of_icon: "SOLID" - }, - { - name: "objects-horizontal-center", - slug: "objects-horizontal-center-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "objects-horizontal-left", - slug: "objects-horizontal-left-solid", - category_id: 111, - type_of_icon: "SOLID" - }, - { - name: "objects-horizontal-left", - slug: "objects-horizontal-left-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "color", - slug: "color-solid", - category_id: 102, - type_of_icon: "SOLID", - term: ["palette", "wheel"] - }, - { - name: "color", - slug: "color-regular", - category_id: 102, - type_of_icon: "REGULAR", - term: ["palette", "wheel"] - }, - { - name: "reflect-horizontal", - slug: "reflect-horizontal-regular", - category_id: 111, - type_of_icon: "REGULAR", - term: ["flip"] - }, - { - name: "reflect-vertical", - slug: "reflect-vertical-regular", - category_id: 111, - type_of_icon: "REGULAR", - term: ["flip"] - }, - { - name: "postgresql", - slug: "postgresql-logo", - category_id: 100, - type_of_icon: "LOGO", - term: ["database", "db", "sql"] - }, - { - name: "mongodb", - slug: "mongodb-logo", - category_id: 100, - type_of_icon: "LOGO", - term: ["database", "db"] - }, - { - name: "deezer", - slug: "deezer-logo", - category_id: 114, - type_of_icon: "LOGO", - term: ["music"] - }, - { - name: "xing", - slug: "xing-logo", - category_id: 97, - type_of_icon: "LOGO", - term: ["search"] - }, - { - name: "cart-add", - slug: "cart-add-regular", - category_id: 104, - type_of_icon: "REGULAR", - term: ["buy"] - }, - { - name: "cart-download", - slug: "cart-download-regular", - category_id: 104, - type_of_icon: "REGULAR", - term: ["buy"] - }, - { - name: "no-signal", - slug: "no-signal-regular", - category_id: 115, - type_of_icon: "REGULAR", - term: ["network", "connection"] - }, - { - name: "signal-5", - slug: "signal-5-regular", - category_id: 115, - type_of_icon: "REGULAR", - term: ["network", "connection"] - }, - { - name: "signal-4", - slug: "signal-4-regular", - category_id: 115, - type_of_icon: "REGULAR", - term: ["network", "connection"] - }, - { - name: "signal-3", - slug: "signal-3-regular", - category_id: 115, - type_of_icon: "REGULAR", - term: ["network", "connection"] - }, - { - name: "signal-2", - slug: "signal-2-regular", - category_id: 115, - type_of_icon: "REGULAR", - term: ["network", "connection"] - }, - { - name: "signal-1", - slug: "signal-1-regular", - category_id: 115, - type_of_icon: "REGULAR", - term: ["network", "connection"] - }, - { - name: "cheese", - slug: "cheese-solid", - category_id: 108, - type_of_icon: "SOLID" - }, - { - name: "cheese", - slug: "cheese-regular", - category_id: 108, - type_of_icon: "REGULAR" - }, - { - name: "hard-hat", - slug: "hard-hat-solid", - category_id: 98, - type_of_icon: "SOLID", - term: ["construction", "worker", "labour"] - }, - { - name: "hard-hat", - slug: "hard-hat-regular", - category_id: 98, - type_of_icon: "REGULAR", - term: ["construction", "worker", "labour"] - }, - { - name: "home-alt-2", - slug: "home-alt-2-solid", - category_id: 98, - type_of_icon: "SOLID" - }, - { - name: "home-alt-2", - slug: "home-alt-2-regular", - category_id: 98, - type_of_icon: "REGULAR" - }, - { - name: "meta", - slug: "meta-logo", - category_id: 97, - type_of_icon: "LOGO", - term: ["facebook", "social media"] - }, - { - name: "lemon", - slug: "lemon-solid", - category_id: 108, - type_of_icon: "SOLID", - term: ["lime", "fruit", "vegetable"] - }, - { - name: "lemon", - slug: "lemon-regular", - category_id: 108, - type_of_icon: "REGULAR", - term: ["lime", "fruit", "vegetable"] - }, - { - name: "cable-car", - slug: "cable-car-solid", - category_id: 121, - type_of_icon: "SOLID", - term: ["transportation", "hill", "travel"] - }, - { - name: "cable-car", - slug: "cable-car-regular", - category_id: 121, - type_of_icon: "REGULAR", - term: ["transportation", "hill", "travel"] - }, - { - name: "cricket-ball", - slug: "cricket-ball-solid", - category_id: 119, - type_of_icon: "SOLID", - term: ["sport"] - }, - { - name: "cricket-ball", - slug: "cricket-ball-regular", - category_id: 119, - type_of_icon: "REGULAR", - term: ["sport"] - }, - { - name: "tree-alt", - slug: "tree-alt-solid", - category_id: 121, - type_of_icon: "SOLID", - term: ["forest", "christmas"] - }, - { - name: "male-female", - slug: "male-female-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "invader", - slug: "invader-solid", - category_id: 119, - type_of_icon: "SOLID" - }, - { - name: "baguette", - slug: "baguette-solid", - category_id: 108, - type_of_icon: "SOLID", - term: ["bread", "bake", "baking", "food", "nutrition"] - }, - { - name: "baguette", - slug: "baguette-regular", - category_id: 108, - type_of_icon: "REGULAR", - term: ["bread", "bake", "baking", "food", "nutrition"] - }, - { - name: "fork", - slug: "fork-regular", - category_id: 108, - type_of_icon: "REGULAR", - term: ["utensil", "restaurant"] - }, - { - name: "knife", - slug: "knife-regular", - category_id: 108, - type_of_icon: "REGULAR", - term: ["utensil", "restaurant"] - }, - { - name: "circle-half", - slug: "circle-half-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "circle-half", - slug: "circle-half-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "circle-three-quarter", - slug: "circle-three-quarter-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "circle-three-quarter", - slug: "circle-three-quarter-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "circle-quarter", - slug: "circle-quarter-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "circle-quarter", - slug: "circle-quarter-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "bowl-rice", - slug: "bowl-rice-solid", - category_id: 108, - type_of_icon: "SOLID", - term: ["food"] - }, - { - name: "bowl-rice", - slug: "bowl-rice-regular", - category_id: 108, - type_of_icon: "REGULAR", - term: ["food"] - }, - { - name: "bowl-hot", - slug: "bowl-hot-solid", - category_id: 108, - type_of_icon: "SOLID", - term: ["food", "heat"] - }, - { - name: "bowl-hot", - slug: "bowl-hot-regular", - category_id: 108, - type_of_icon: "REGULAR", - term: ["food", "heat"] - }, - { - name: "popsicle", - slug: "popsicle-solid", - category_id: 108, - type_of_icon: "SOLID", - term: ["ice cream", "dessert"] - }, - { - name: "popsicle", - slug: "popsicle-regular", - category_id: 108, - type_of_icon: "REGULAR", - term: ["ice cream", "dessert"] - }, - { - name: "cross", - slug: "cross-regular", - category_id: 119, - type_of_icon: "REGULAR", - term: ["gaming", "crosshair", "aim"] - }, - { - name: "scatter-chart", - slug: "scatter-chart-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "money-withdraw", - slug: "money-withdraw-regular", - category_id: 107, - type_of_icon: "REGULAR", - term: ["atm"] - }, - { - name: "candles", - slug: "candles-regular", - category_id: 107, - type_of_icon: "REGULAR", - term: ["trading", "stock"] - }, - { - name: "math", - slug: "math-regular", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "party", - slug: "party-regular", - category_id: 105, - type_of_icon: "REGULAR", - term: ["celebration"] - }, - { - name: "leaf", - slug: "leaf-regular", - category_id: 123, - type_of_icon: "REGULAR", - term: ["plant", "crop", "nature"] - }, - { - name: "injection", - slug: "injection-regular", - category_id: 109, - type_of_icon: "REGULAR", - term: ["syringe", "dose"] - }, - { - name: "expand-vertical", - slug: "expand-vertical-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "expand-horizontal", - slug: "expand-horizontal-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "collapse-vertical", - slug: "collapse-vertical-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "collapse-horizontal", - slug: "collapse-horizontal-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "collapse-alt", - slug: "collapse-alt-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "party", - slug: "party-solid", - category_id: 105, - type_of_icon: "SOLID", - term: ["celebration"] - }, - { - name: "leaf", - slug: "leaf-solid", - category_id: 123, - type_of_icon: "SOLID", - term: ["plant", "crop", "nature"] - }, - { - name: "injection", - slug: "injection-solid", - category_id: 109, - type_of_icon: "SOLID", - term: ["syringe", "dose"] - }, - { - name: "dog", - slug: "dog-solid", - category_id: 125, - type_of_icon: "SOLID", - term: ["pet", "canine"] - }, - { - name: "cat", - slug: "cat-solid", - category_id: 125, - type_of_icon: "SOLID", - term: ["pet"] - }, - { - name: "upwork", - slug: "upwork-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "netlify", - slug: "netlify-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "java", - slug: "java-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "heroku", - slug: "heroku-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "go-lang", - slug: "go-lang-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "gmail", - slug: "gmail-logo", - category_id: 101, - type_of_icon: "LOGO" - }, - { - name: "flask", - slug: "flask-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "99designs", - slug: "99designs-logo", - category_id: 102, - type_of_icon: "LOGO" - }, - { - name: "venmo", - slug: "venmo-logo", - category_id: 107, - type_of_icon: "LOGO" - }, - { - name: "qr", - slug: "qr-REGULAR", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "qr-scan", - slug: "qr-scan-logo", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "docker", - slug: "docker-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "aws", - slug: "aws-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "hand", - slug: "hand", - category_id: 113, - type_of_icon: "SOLID", - term: ["palm", "stop"] - }, - { - name: "podcast", - slug: "podcast-regular", - category_id: 114, - type_of_icon: "REGULAR", - term: ["audiobook", "radio"] - }, - { - name: "checkbox-minus", - slug: "checkbox-minus-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "checkbox-minus", - slug: "checkbox-minus-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "speaker", - slug: "speaker-solid", - category_id: 114, - type_of_icon: "SOLID" - }, - { - name: "speaker", - slug: "speaker-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "registered", - slug: "registered-solid", - category_id: 97, - type_of_icon: "SOLID" - }, - { - name: "registered", - slug: "registered-regular", - category_id: 97, - type_of_icon: "REGULAR" - }, - { - name: "phone-off", - slug: "phone-off-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "phone-off", - slug: "phone-off-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "tiktok", - slug: "tiktok-logo", - category_id: 97, - type_of_icon: "LOGO", - term: ["social media", "entertainment"] - }, - { - name: "sketch", - slug: "sketch-logo", - category_id: 97, - type_of_icon: "LOGO", - term: ["web design"] - }, - { - name: "steam", - slug: "steam-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "trip-advisor", - slug: "trip-advisor-logo", - category_id: 97, - type_of_icon: "LOGO", - term: ["travel"] - }, - { - name: "visual-studio", - slug: "visual-studio-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "unity", - slug: "unity-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "php", - slug: "php-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "discord-alt", - slug: "discord-alt-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "flutter", - slug: "flutter-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "mastodon", - slug: "mastodon-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "tailwind-css", - slug: "tailwind-css-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "buildings", - slug: "buildings-regular", - category_id: 98, - type_of_icon: "REGULAR", - term: ["city", "colony", "skyline", "skyscrapers"] - }, - { - name: "buildings", - slug: "buildings-solid", - category_id: 98, - type_of_icon: "SOLID", - term: ["city", "colony", "skyline", "skyscrapers"] - }, - { - name: "store-alt", - slug: "store-alt-regular", - category_id: 104, - type_of_icon: "REGULAR", - term: ["shop", "market"] - }, - { - name: "store-alt", - slug: "store-alt-solid", - category_id: 104, - type_of_icon: "SOLID", - term: ["shop", "market"] - }, - { - name: "bar-chart-alt-2", - slug: "bar-chart-alt-2-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "bar-chart-alt-2", - slug: "bar-chart-alt-2-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "message-dots", - slug: "message-dots-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["loading", "chat", "comment"] - }, - { - name: "message-dots", - slug: "message-dots-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["loading", "chat", "comment"] - }, - { - name: "message-rounded-dots", - slug: "message-rounded-dots-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["loading", "chat", "comment"] - }, - { - name: "message-rounded-dots", - slug: "message-rounded-dots-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["loading", "chat", "comment"] - }, - { - name: "devices", - slug: "devices-solid", - category_id: 103, - type_of_icon: "SOLID", - term: ["mobile", "tab"] - }, - { - name: "memory-card", - slug: "memory-card-regular", - category_id: 103, - type_of_icon: "REGULAR", - term: ["sd card", "storage"] - }, - { - name: "memory-card", - slug: "memory-card-solid", - category_id: 103, - type_of_icon: "SOLID", - term: ["sd card", "storage"] - }, - { - name: "wallet-alt", - slug: "wallet-alt-regular", - category_id: 107, - type_of_icon: "REGULAR", - term: ["money"] - }, - { - name: "wallet-alt", - slug: "wallet-alt-solid", - category_id: 107, - type_of_icon: "SOLID", - term: ["money"] - }, - { - name: "bank", - slug: "bank-solid", - category_id: 98, - type_of_icon: "SOLID", - term: ["institution", "money", "safe"] - }, - { - name: "slideshow", - slug: "slideshow-regular", - category_id: 99, - type_of_icon: "REGULAR", - term: ["presentation", "keynote"] - }, - { - name: "slideshow", - slug: "slideshow-solid", - category_id: 99, - type_of_icon: "SOLID", - term: ["presentation", "keynote"] - }, - { - name: "message-square", - slug: "message-square-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message-square-dots", - slug: "message-square-dots-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["loading", "chat", "comment"] - }, - { - name: "message-square", - slug: "message-square-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "message-square-dots", - slug: "message-square-dots-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["loading", "chat", "comment"] - }, - { - name: "book-content", - slug: "book-content-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "book-content", - slug: "book-content-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "chat", - slug: "chat-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["discussion", "talk", "comments", "messages"] - }, - { - name: "chat", - slug: "chat-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["discussion", "talk", "comments", "messages"] - }, - { - name: "edit-alt", - slug: "edit-alt-regular", - category_id: 124, - type_of_icon: "REGULAR", - term: ["writing", "note", "pencil"] - }, - { - name: "edit-alt", - slug: "edit-alt-solid", - category_id: 124, - type_of_icon: "SOLID", - term: ["writing", "note", "pencil"] - }, - { - name: "mouse-alt", - slug: "mouse-alt-regular", - category_id: 103, - type_of_icon: "REGULAR" - }, - { - name: "mouse-alt", - slug: "mouse-alt-solid", - category_id: 103, - type_of_icon: "SOLID" - }, - { - name: "bug-alt", - slug: "bug-alt-regular", - category_id: 100, - type_of_icon: "REGULAR", - term: ["error", "warning"] - }, - { - name: "bug-alt", - slug: "bug-alt-solid", - category_id: 100, - type_of_icon: "SOLID", - term: ["error", "warning"] - }, - { - name: "notepad", - slug: "notepad-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "notepad", - slug: "notepad-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "video-recording", - slug: "video-recording-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "video-recording", - slug: "video-recording-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "shape-square", - slug: "shape-square-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "shape-triangle", - slug: "shape-triangle-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "direction-left", - slug: "direction-left-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "ghost", - slug: "ghost-regular", - category_id: 105, - type_of_icon: "REGULAR", - term: ["spooky", "horror", "scary"] - }, - { - name: "ghost", - slug: "ghost-solid", - category_id: 105, - type_of_icon: "SOLID", - term: ["spooky", "horror", "scary"] - }, - { - name: "mail-send", - slug: "mail-send-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "code-alt", - slug: "code-alt-regular", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "grid", - slug: "grid-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "quote-single-left", - slug: "quote-single-left-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "quote-single-right", - slug: "quote-single-right-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "user-pin", - slug: "user-pin-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "user-pin", - slug: "user-pin-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "run", - slug: "run-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "copy-alt", - slug: "copy-alt-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "copy-alt", - slug: "copy-alt-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "transfer-alt", - slug: "transfer-alt-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "file-doc", - slug: "file-doc-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "file-html", - slug: "file-html-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "comment-detail", - slug: "comment-detail-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "comment-add", - slug: "comment-add-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["chat", "message", "new", "plus"] - }, - { - name: "file-css", - slug: "file-css-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "file-js", - slug: "file-js-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "file-json", - slug: "file-json-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "file-md", - slug: "file-md-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "file-txt", - slug: "file-txt-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "file-png", - slug: "file-png-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "file-jpg", - slug: "file-jpg-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "file-gif", - slug: "file-gif-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "analyse", - slug: "analyse-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "book-open", - slug: "book-open-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "plane-take-off", - slug: "plane-take-off-solid", - category_id: 121, - type_of_icon: "SOLID", - term: ["flight", "fly"] - }, - { - name: "plane-land", - slug: "plane-land-solid", - category_id: 121, - type_of_icon: "SOLID", - term: ["flight", "fly", "landing"] - }, - { - name: "parking", - slug: "parking-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "id-card", - slug: "id-card-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "adjust-alt", - slug: "adjust-alt-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "landscape", - slug: "landscape-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "landscape", - slug: "landscape-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "traffic", - slug: "traffic-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "comment", - slug: "comment-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "comment", - slug: "comment-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "comment-dots", - slug: "comment-dots-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["loading", "message", "chat"] - }, - { - name: "comment-dots", - slug: "comment-dots-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["loading", "message", "chat"] - }, - { - name: "wine", - slug: "wine-solid", - category_id: 108, - type_of_icon: "SOLID" - }, - { - name: "pyramid", - slug: "pyramid-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "pyramid", - slug: "pyramid-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "cylinder", - slug: "cylinder-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "cylinder", - slug: "cylinder-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "graduation", - slug: "graduation-solid", - category_id: 124, - type_of_icon: "SOLID", - term: ["scholar", "college"] - }, - { - name: "lock-alt", - slug: "lock-alt-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "lock-alt", - slug: "lock-alt-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "lock-open-alt", - slug: "lock-open-alt-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "lock-open-alt", - slug: "lock-open-alt-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "hourglass-top", - slug: "hourglass-top-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "hourglass-bottom", - slug: "hourglass-bottom-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "left-arrow-alt", - slug: "left-arrow-alt-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "right-arrow-alt", - slug: "right-arrow-alt-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "up-arrow-alt", - slug: "up-arrow-alt-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "down-arrow-alt", - slug: "down-arrow-alt-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "shape-circle", - slug: "shape-circle-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "cycling", - slug: "cycling-regular", - category_id: 119, - type_of_icon: "REGULAR" - }, - { - name: "dna", - slug: "dna-regular", - category_id: 109, - type_of_icon: "REGULAR" - }, - { - name: "bowling-ball", - slug: "bowling-ball-regular", - category_id: 119, - type_of_icon: "REGULAR" - }, - { - name: "bowling-ball", - slug: "bowling-ball-solid", - category_id: 119, - type_of_icon: "SOLID" - }, - { - name: "search-alt-2", - slug: "search-alt-2-regular", - category_id: 110, - type_of_icon: "REGULAR", - term: ["magnifying glass"] - }, - { - name: "search-alt-2", - slug: "search-alt-2-solid", - category_id: 110, - type_of_icon: "SOLID", - term: ["magnifying glass"] - }, - { - name: "plus-medical", - slug: "plus-medical-regular", - category_id: 109, - type_of_icon: "REGULAR", - term: ["hospital", "doctor", "medicine"] - }, - { - name: "street-view", - slug: "street-view-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "droplet", - slug: "droplet-regular", - category_id: 123, - type_of_icon: "REGULAR" - }, - { - name: "droplet-half", - slug: "droplet-half-solid", - category_id: 102, - type_of_icon: "SOLID" - }, - { - name: "paint-roll", - slug: "paint-roll-regular", - category_id: 102, - type_of_icon: "REGULAR" - }, - { - name: "paint-roll", - slug: "paint-roll-solid", - category_id: 102, - type_of_icon: "SOLID" - }, - { - name: "shield-alt-2", - slug: "shield-alt-2-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "shield-alt-2", - slug: "shield-alt-2-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "error-alt", - slug: "error-alt-regular", - category_id: 95, - type_of_icon: "REGULAR" - }, - { - name: "error-alt", - slug: "error-alt-solid", - category_id: 95, - type_of_icon: "SOLID" - }, - { - name: "square", - slug: "square-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "square", - slug: "square-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "square-rounded", - slug: "square-rounded-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "square-rounded", - slug: "square-rounded-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "polygon", - slug: "polygon-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "polygon", - slug: "polygon-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "cube-alt", - slug: "cube-alt-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "cube-alt", - slug: "cube-alt-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "cuboid", - slug: "cuboid-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "cuboid", - slug: "cuboid-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "user-voice", - slug: "user-voice-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "user-voice", - slug: "user-voice-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "accessibility", - slug: "accessibility-regular", - category_id: 94, - type_of_icon: "REGULAR", - term: ["handicap", "wheelchair", "injury"] - }, - { - name: "building-house", - slug: "building-house-regular", - category_id: 98, - type_of_icon: "REGULAR" - }, - { - name: "building-house", - slug: "building-house-solid", - category_id: 98, - type_of_icon: "SOLID" - }, - { - name: "doughnut-chart", - slug: "doughnut-chart-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "doughnut-chart", - slug: "doughnut-chart-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "circle", - slug: "circle-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "log-in-circle", - slug: "log-in-circle-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "log-in-circle", - slug: "log-in-circle-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "log-out-circle", - slug: "log-out-circle-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "log-out-circle", - slug: "log-out-circle-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "log-in", - slug: "log-in-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "log-out", - slug: "log-out-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "notification", - slug: "notification-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "notification-off", - slug: "notification-off-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "check-square", - slug: "check-square-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "check-square", - slug: "check-square-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "message-alt", - slug: "message-alt-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message-alt", - slug: "message-alt-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "message-alt-dots", - slug: "message-alt-dots-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["loading", "chat", "comment"] - }, - { - name: "message-alt-dots", - slug: "message-alt-dots-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["loading", "chat", "comment"] - }, - { - name: "no-entry", - slug: "no-entry-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "no-entry", - slug: "no-entry-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "traffic-barrier", - slug: "traffic-barrier-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "component", - slug: "component-solid", - category_id: 100, - type_of_icon: "SOLID" - }, - { - name: "plane-alt", - slug: "plane-alt-solid", - category_id: 121, - type_of_icon: "SOLID", - term: ["flight", "fly"] - }, - { - name: "palette", - slug: "palette-regular", - category_id: 102, - type_of_icon: "REGULAR", - term: ["color", "colour", "painting"] - }, - { - name: "palette", - slug: "palette-solid", - category_id: 102, - type_of_icon: "SOLID", - term: ["color", "colour", "painting"] - }, - { - name: "basket", - slug: "basket-regular", - category_id: 104, - type_of_icon: "REGULAR" - }, - { - name: "basket", - slug: "basket-solid", - category_id: 104, - type_of_icon: "SOLID" - }, - { - name: "purchase-tag-alt", - slug: "purchase-tag-alt-regular", - category_id: 104, - type_of_icon: "REGULAR", - term: ["price", "cost"] - }, - { - name: "purchase-tag-alt", - slug: "purchase-tag-alt-solid", - category_id: 104, - type_of_icon: "SOLID", - term: ["price", "cost"] - }, - { - name: "receipt", - slug: "receipt-regular", - category_id: 104, - type_of_icon: "REGULAR" - }, - { - name: "receipt", - slug: "receipt-solid", - category_id: 104, - type_of_icon: "SOLID" - }, - { - name: "line-chart", - slug: "line-chart-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "map-pin", - slug: "map-pin-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "map-pin", - slug: "map-pin-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "hive", - slug: "hive-regular", - category_id: 113, - type_of_icon: "REGULAR" - }, - { - name: "band-aid", - slug: "band-aid-regular", - category_id: 109, - type_of_icon: "REGULAR" - }, - { - name: "band-aid", - slug: "band-aid-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "credit-card-alt", - slug: "credit-card-alt-regular", - category_id: 107, - type_of_icon: "REGULAR", - term: ["finance", "money", "debit"] - }, - { - name: "credit-card-alt", - slug: "credit-card-alt-solid", - category_id: 107, - type_of_icon: "SOLID", - term: ["finance", "money", "debit"] - }, - { - name: "credit-card", - slug: "credit-card-solid", - category_id: 107, - type_of_icon: "SOLID", - term: ["finance", "money", "debit"] - }, - { - name: "wifi-off", - slug: "wifi-off-regular", - category_id: 115, - type_of_icon: "REGULAR" - }, - { - name: "paint", - slug: "paint-solid", - category_id: 102, - type_of_icon: "SOLID" - }, - { - name: "brightness-half", - slug: "brightness-half-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "brightness-half", - slug: "brightness-half-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "brightness", - slug: "brightness-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "brightness", - slug: "brightness-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "filter-alt", - slug: "filter-alt-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "dialpad-alt", - slug: "dialpad-alt-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["keypad"] - }, - { - name: "border-inline-end", - slug: "border-inline-end-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "border-left", - slug: "border-left-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "border-top", - slug: "border-top-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "border-bottom", - slug: "border-bottom-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "border-all", - slug: "border-all-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "mobile-landscape", - slug: "mobile-landscape-regular", - category_id: 103, - type_of_icon: "REGULAR" - }, - { - name: "mobile-vibration", - slug: "mobile-vibration-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "rectangle", - slug: "rectangle-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "right-arrow", - slug: "right-arrow-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "left-arrow", - slug: "left-arrow-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "up-arrow", - slug: "up-arrow-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "down-arrow", - slug: "down-arrow-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "right-top-arrow-circle", - slug: "right-top-arrow-circle-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "right-down-arrow-circle", - slug: "right-down-arrow-circle-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "left-top-arrow-circle", - slug: "left-top-arrow-circle-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "left-down-arrow-circle", - slug: "left-down-arrow-circle-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "institution", - slug: "institution-solid", - category_id: 98, - type_of_icon: "SOLID" - }, - { - name: "school", - slug: "school-solid", - category_id: 98, - type_of_icon: "SOLID" - }, - { - name: "chalkboard", - slug: "chalkboard-solid", - category_id: 99, - type_of_icon: "SOLID", - term: ["whiteboard", "teaching"] - }, - { - name: "skip-previous-circle", - slug: "skip-previous-circle-solid", - category_id: 114, - type_of_icon: "SOLID" - }, - { - name: "skip-next-circle", - slug: "skip-next-circle-solid", - category_id: 114, - type_of_icon: "SOLID" - }, - { - name: "data", - slug: "data-solid", - category_id: 100, - type_of_icon: "SOLID" - }, - { - name: "mobile", - slug: "mobile-solid", - category_id: 103, - type_of_icon: "SOLID" - }, - { - name: "folder-minus", - slug: "folder-minus-solid", - category_id: 106, - type_of_icon: "SOLID", - term: ["remove", "delete"] - }, - { - name: "bell-plus", - slug: "bell-plus-solid", - category_id: 95, - type_of_icon: "SOLID", - term: ["alert", "notification"] - }, - { - name: "bell-minus", - slug: "bell-minus-solid", - category_id: 95, - type_of_icon: "SOLID", - term: ["alert", "notification"] - }, - { - name: "search", - slug: "search-solid", - category_id: 110, - type_of_icon: "SOLID", - term: ["magnifying glass"] - }, - { - name: "zoom-in", - slug: "zoom-in-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "zoom-out", - slug: "zoom-out-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "grid", - slug: "grid-solid", - category_id: 111, - type_of_icon: "SOLID" - }, - { - name: "user-x", - slug: "user-x-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "user-check", - slug: "user-check-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "compass", - slug: "compass-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "gas-pump", - slug: "gas-pump-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "stopwatch", - slug: "stopwatch-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "timer", - slug: "timer-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "time", - slug: "time-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "pie-chart-alt-2", - slug: "pie-chart-alt-2-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "pie-chart-alt-2", - slug: "pie-chart-alt-2-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "time-five", - slug: "time-five-regular", - category_id: 120, - type_of_icon: "REGULAR" - }, - { - name: "time-five", - slug: "time-five-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "instagram-alt", - slug: "instagram-alt-logo", - category_id: 97, - type_of_icon: "LOGO", - term: ["social media"] - }, - { - name: "bookmarks", - slug: "bookmarks-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "bookmark-minus", - slug: "bookmark-minus-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "briefcase-alt-2", - slug: "briefcase-alt-2-regular", - category_id: 99, - type_of_icon: "REGULAR", - term: ["work", "travel", "suitcase"] - }, - { - name: "briefcase-alt-2", - slug: "briefcase-alt-2-solid", - category_id: 99, - type_of_icon: "SOLID", - term: ["work", "travel", "suitcase"] - }, - { - name: "brush-alt", - slug: "brush-alt-regular", - category_id: 102, - type_of_icon: "REGULAR" - }, - { - name: "calendar", - slug: "calendar-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "calendar-alt", - slug: "calendar-alt-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "calendar-plus", - slug: "calendar-plus-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "calendar-minus", - slug: "calendar-minus-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "calendar-x", - slug: "calendar-x-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "calendar-check", - slug: "calendar-check-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "calendar-event", - slug: "calendar-event-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "customize", - slug: "customize-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "customize", - slug: "customize-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "carousel", - slug: "carousel-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "rewind-circle", - slug: "rewind-circle-solid", - category_id: 114, - type_of_icon: "SOLID" - }, - { - name: "fast-forward-circle", - slug: "fast-forward-circle-solid", - category_id: 114, - type_of_icon: "SOLID" - }, - { - name: "mobile-vibration", - slug: "mobile-vibration-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "quote-alt-left", - slug: "quote-alt-left-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "quote-alt-right", - slug: "quote-alt-right-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "layout", - slug: "layout-solid", - category_id: 111, - type_of_icon: "SOLID" - }, - { - name: "radio", - slug: "radio-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "printer", - slug: "printer-regular", - category_id: 103, - type_of_icon: "REGULAR" - }, - { - name: "sort-a-z", - slug: "sort-a-z-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "sort-z-a", - slug: "sort-z-a-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "conversation", - slug: "conversation-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["chat", "discussion"] - }, - { - name: "brush-alt", - slug: "brush-alt-solid", - category_id: 102, - type_of_icon: "SOLID" - }, - { - name: "exit", - slug: "exit-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "exit", - slug: "exit-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "extension", - slug: "extension-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "extension", - slug: "extension-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "file-find", - slug: "file-find-solid", - category_id: 106, - type_of_icon: "SOLID", - term: ["search"] - }, - { - name: "face", - slug: "face-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "face", - slug: "face-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "file-find", - slug: "file-find-regular", - category_id: 106, - type_of_icon: "REGULAR", - term: ["search"] - }, - { - name: "label", - slug: "label-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "label", - slug: "label-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "check-shield", - slug: "check-shield-regular", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "check-shield", - slug: "check-shield-solid", - category_id: 100, - type_of_icon: "SOLID" - }, - { - name: "border-radius", - slug: "border-radius-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "add-to-queue", - slug: "add-to-queue-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "add-to-queue", - slug: "add-to-queue-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "archive-in", - slug: "archive-in-regular", - category_id: 106, - type_of_icon: "REGULAR" - }, - { - name: "archive-in", - slug: "archive-in-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "archive-out", - slug: "archive-out-regular", - category_id: 106, - type_of_icon: "REGULAR" - }, - { - name: "archive-out", - slug: "archive-out-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "alarm-add", - slug: "alarm-add-regular", - category_id: 120, - type_of_icon: "REGULAR" - }, - { - name: "alarm-add", - slug: "alarm-add-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "space-bar", - slug: "space-bar-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "image-alt", - slug: "image-alt-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "image-add", - slug: "image-add-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "image-add", - slug: "image-add-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "fridge", - slug: "fridge-regular", - category_id: 108, - type_of_icon: "REGULAR" - }, - { - name: "fridge", - slug: "fridge-solid", - category_id: 108, - type_of_icon: "SOLID" - }, - { - name: "dish", - slug: "dish-regular", - category_id: 108, - type_of_icon: "REGULAR" - }, - { - name: "dish", - slug: "dish-solid", - category_id: 108, - type_of_icon: "SOLID" - }, - { - name: "spa", - slug: "spa-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "spa", - slug: "spa-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "cake", - slug: "cake-regular", - category_id: 108, - type_of_icon: "REGULAR" - }, - { - name: "cake", - slug: "cake-solid", - category_id: 108, - type_of_icon: "SOLID" - }, - { - name: "city", - slug: "city-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "bolt-circle", - slug: "bolt-circle-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "bolt-circle", - slug: "bolt-circle-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "tone", - slug: "tone-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "bitcoin", - slug: "bitcoin-regular", - category_id: 107, - type_of_icon: "REGULAR" - }, - { - name: "lira", - slug: "lira-regular", - category_id: 107, - type_of_icon: "REGULAR" - }, - { - name: "ruble", - slug: "ruble-regular", - category_id: 107, - type_of_icon: "REGULAR" - }, - { - name: "caret-up-circle", - slug: "caret-up-circle-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "caret-down-circle", - slug: "caret-down-circle-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "caret-left-circle", - slug: "caret-left-circle-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "caret-right-circle", - slug: "caret-right-circle-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "rupee", - slug: "rupee-regular", - category_id: 107, - type_of_icon: "REGULAR" - }, - { - name: "euro", - slug: "euro-regular", - category_id: 107, - type_of_icon: "REGULAR" - }, - { - name: "pound", - slug: "pound-regular", - category_id: 107, - type_of_icon: "REGULAR" - }, - { - name: "won", - slug: "won-regular", - category_id: 107, - type_of_icon: "REGULAR" - }, - { - name: "yen", - slug: "yen-regular", - category_id: 107, - type_of_icon: "REGULAR" - }, - { - name: "shekel", - slug: "shekel-regular", - category_id: 107, - type_of_icon: "REGULAR" - }, - { - name: "facebook-circle", - slug: "facebook-circle-logo", - category_id: 97, - type_of_icon: "LOGO", - term: ["social media"] - }, - { - name: "jquery", - slug: "jquery-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "imdb", - slug: "imdb-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "pinterest-alt", - slug: "pinterest-alt-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "tone", - slug: "tone-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "health", - slug: "health-regular", - category_id: 109, - type_of_icon: "REGULAR" - }, - { - name: "baby-carriage", - slug: "baby-carriage-solid", - category_id: 94, - type_of_icon: "SOLID", - term: ["child", "pregnancy", "birth"] - }, - { - name: "clinic", - slug: "clinic-regular", - category_id: 109, - type_of_icon: "REGULAR" - }, - { - name: "hand-up", - slug: "hand-up-solid", - category_id: 96, - type_of_icon: "SOLID", - term: ["finger", "point", "direction"] - }, - { - name: "hand-right", - slug: "hand-right-solid", - category_id: 96, - type_of_icon: "SOLID", - term: ["finger", "point", "direction"] - }, - { - name: "hand-down", - slug: "hand-down-solid", - category_id: 96, - type_of_icon: "SOLID", - term: ["finger", "point", "direction"] - }, - { - name: "hand-left", - slug: "hand-left-solid", - category_id: 96, - type_of_icon: "SOLID", - term: ["finger", "point", "direction"] - }, - { - name: "male", - slug: "male-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "female", - slug: "female-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "male-sign", - slug: "male-sign-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "female-sign", - slug: "female-sign-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "clinic", - slug: "clinic-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "offer", - slug: "offer-solid", - category_id: 104, - type_of_icon: "SOLID" - }, - { - name: "food-tag", - slug: "food-tag-regular", - category_id: 108, - type_of_icon: "REGULAR" - }, - { - name: "food-menu", - slug: "food-menu-regular", - category_id: 108, - type_of_icon: "REGULAR" - }, - { - name: "food-menu", - slug: "food-menu-solid", - category_id: 108, - type_of_icon: "SOLID" - }, - { - name: "camera-plus", - slug: "camera-plus-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "business", - slug: "business-solid", - category_id: 98, - type_of_icon: "SOLID", - term: ["skyline", "skyscraper", "city"] - }, - { - name: "meh-alt", - slug: "meh-alt-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "wink-tongue", - slug: "wink-tongue-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "happy-alt", - slug: "happy-alt-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "cool", - slug: "cool-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "tired", - slug: "tired-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "smile", - slug: "smile-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "angry", - slug: "angry-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "happy-heart-eyes", - slug: "happy-heart-eyes-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "dizzy", - slug: "dizzy-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "wink-smile", - slug: "wink-smile-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "confused", - slug: "confused-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "sleepy", - slug: "sleepy-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "shocked", - slug: "shocked-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "happy-beaming", - slug: "happy-beaming-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "meh-blank", - slug: "meh-blank-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "laugh", - slug: "laugh-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "upside-down", - slug: "upside-down-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "angry", - slug: "angry-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "happy-heart-eyes", - slug: "happy-heart-eyes-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "dizzy", - slug: "dizzy-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "wink-smile", - slug: "wink-smile-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "smile", - slug: "smile-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "meh", - slug: "meh-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "meh-alt", - slug: "meh-alt-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "confused", - slug: "confused-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "sleepy", - slug: "sleepy-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "sad", - slug: "sad-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "happy", - slug: "happy-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "shocked", - slug: "shocked-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "happy-beaming", - slug: "happy-beaming-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "tired", - slug: "tired-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "cool", - slug: "cool-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "meh-blank", - slug: "meh-blank-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "laugh", - slug: "laugh-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "happy-alt", - slug: "happy-alt-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "upside-down", - slug: "upside-down-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "wink-tongue", - slug: "wink-tongue-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "adobe", - slug: "adobe-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "algolia", - slug: "algolia-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "audible", - slug: "audible-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "figma", - slug: "figma-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "etsy", - slug: "etsy-logo", - category_id: 104, - type_of_icon: "LOGO" - }, - { - name: "gitlab", - slug: "gitlab-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "patreon", - slug: "patreon-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "redbubble", - slug: "redbubble-logo", - category_id: 104, - type_of_icon: "LOGO" - }, - { - name: "diamond", - slug: "diamond-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "comment-error", - slug: "comment-error-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "vial", - slug: "vial-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "align-left", - slug: "align-left-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "align-middle", - slug: "align-middle-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "align-right", - slug: "align-right-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "arrow-back", - slug: "arrow-back-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "bell-minus", - slug: "bell-minus-regular", - category_id: 95, - type_of_icon: "REGULAR", - term: ["alert", "notification"] - }, - { - name: "bell-off", - slug: "bell-off-regular", - category_id: 95, - type_of_icon: "REGULAR", - term: ["alert", "notification", "silent"] - }, - { - name: "bell-plus", - slug: "bell-plus-regular", - category_id: 95, - type_of_icon: "REGULAR", - term: ["alert", "notification"] - }, - { - name: "bell", - slug: "bell-regular", - category_id: 95, - type_of_icon: "REGULAR", - term: ["alert", "notification"] - }, - { - name: "bookmark", - slug: "bookmark-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "bookmarks", - slug: "bookmarks-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "bullseye", - slug: "bullseye-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "camera-off", - slug: "camera-off-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "camera", - slug: "camera-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "captions", - slug: "captions-regular", - category_id: 94, - type_of_icon: "REGULAR", - term: ["subtitles", "subs", "cc"] - }, - { - name: "checkbox-checked", - slug: "checkbox-checked-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "checkbox", - slug: "checkbox-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "checkbox-square", - slug: "checkbox-square-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "chevron-down", - slug: "chevron-down-regular", - category_id: 96, - type_of_icon: "REGULAR", - term: ["arrow"] - }, - { - name: "chevron-up", - slug: "chevron-up-regular", - category_id: 96, - type_of_icon: "REGULAR", - term: ["arrow"] - }, - { - name: "chevron-left", - slug: "chevron-left-regular", - category_id: 96, - type_of_icon: "REGULAR", - term: ["arrow"] - }, - { - name: "chevron-right", - slug: "chevron-right-regular", - category_id: 96, - type_of_icon: "REGULAR", - term: ["arrow"] - }, - { - name: "chevrons-down", - slug: "chevrons-down-regular", - category_id: 96, - type_of_icon: "REGULAR", - term: ["arrow"] - }, - { - name: "chevrons-up", - slug: "chevrons-up-regular", - category_id: 96, - type_of_icon: "REGULAR", - term: ["arrow"] - }, - { - name: "chevrons-right", - slug: "chevrons-right-regular", - category_id: 96, - type_of_icon: "REGULAR", - term: ["arrow"] - }, - { - name: "chevrons-left", - slug: "chevrons-left-regular", - category_id: 96, - type_of_icon: "REGULAR", - term: ["arrow"] - }, - { - name: "clipboard", - slug: "clipboard-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "code-curly", - slug: "code-curly-regular", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "code", - slug: "code-regular", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "coffee", - slug: "coffee-regular", - category_id: 108, - type_of_icon: "REGULAR" - }, - { - name: "copy", - slug: "copy-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "copyright", - slug: "copyright-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "down-arrow-circle", - slug: "down-arrow-circle-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "error-circle", - slug: "error-circle-regular", - category_id: 95, - type_of_icon: "REGULAR" - }, - { - name: "error", - slug: "error-regular", - category_id: 95, - type_of_icon: "REGULAR" - }, - { - name: "exit-fullscreen", - slug: "exit-fullscreen-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "fast-forward-circle", - slug: "fast-forward-circle-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "fast-forward", - slug: "fast-forward-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "first-page", - slug: "first-page-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "folder-minus", - slug: "folder-minus-regular", - category_id: 106, - type_of_icon: "REGULAR", - term: ["remove", "delete"] - }, - { - name: "folder-plus", - slug: "folder-plus-regular", - category_id: 106, - type_of_icon: "REGULAR", - term: ["add", "folder add", "new folder"] - }, - { - name: "folder", - slug: "folder-regular", - category_id: 106, - type_of_icon: "REGULAR" - }, - { - name: "fullscreen", - slug: "fullscreen-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "hide", - slug: "hide-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "image", - slug: "image-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "info-circle", - slug: "info-circle-regular", - category_id: 94, - type_of_icon: "REGULAR" - }, - { - name: "align-justify", - slug: "align-justify-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "key", - slug: "key-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "last-page", - slug: "last-page-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "left-arrow-circle", - slug: "left-arrow-circle-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "left-down-arrow-circle", - slug: "left-down-arrow-circle-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "left-indent", - slug: "left-indent-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "left-top-arrow-circle", - slug: "left-top-arrow-circle-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "menu", - slug: "menu-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "microphone", - slug: "microphone-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "minus-circle", - slug: "minus-circle-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "moon", - slug: "moon-regular", - category_id: 123, - type_of_icon: "REGULAR" - }, - { - name: "pause-circle", - slug: "pause-circle-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "pause", - slug: "pause-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "play-circle", - slug: "play-circle-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "play", - slug: "play-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "plus-circle", - slug: "plus-circle-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "question-mark", - slug: "question-mark-regular", - category_id: 94, - type_of_icon: "REGULAR" - }, - { - name: "radio-circle-marked", - slug: "radio-circle-marked-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "radio-circle", - slug: "radio-circle-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "rectangle", - slug: "rectangle-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "rewind", - slug: "rewind-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "reset", - slug: "reset-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "right-arrow-circle", - slug: "right-arrow-circle-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "right-down-arrow-circle", - slug: "right-down-arrow-circle-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "right-indent", - slug: "right-indent-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "right-top-arrow-circle", - slug: "right-top-arrow-circle-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "rss", - slug: "rss-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "search", - slug: "search-regular", - category_id: 110, - type_of_icon: "REGULAR", - term: ["magnifying glass"] - }, - { - name: "show", - slug: "show-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "skip-next", - slug: "skip-next-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "skip-previous", - slug: "skip-previous-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "stop-circle", - slug: "stop-circle-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "stop", - slug: "stop-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "stopwatch", - slug: "stopwatch-regular", - category_id: 120, - type_of_icon: "REGULAR" - }, - { - name: "sync", - slug: "sync-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "time", - slug: "time-regular", - category_id: 120, - type_of_icon: "REGULAR" - }, - { - name: "toggle-left", - slug: "toggle-left-regular", - category_id: 110, - type_of_icon: "REGULAR", - term: ["switch"] - }, - { - name: "toggle-right", - slug: "toggle-right-regular", - category_id: 110, - type_of_icon: "REGULAR", - term: ["switch"] - }, - { - name: "trending-down", - slug: "trending-down-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "trending-up", - slug: "trending-up-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "up-arrow-circle", - slug: "up-arrow-circle-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "vertical-center", - slug: "vertical-center-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "video", - slug: "video-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "volume-full", - slug: "volume-full-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "volume-low", - slug: "volume-low-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "volume-mute", - slug: "volume-mute-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "volume", - slug: "volume-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "x-circle", - slug: "x-circle-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "zoom-in", - slug: "zoom-in-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "zoom-out", - slug: "zoom-out-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "archive", - slug: "archive-regular", - category_id: 106, - type_of_icon: "REGULAR" - }, - { - name: "at", - slug: "at-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "bar-chart-alt", - slug: "bar-chart-alt-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "bar-chart-square", - slug: "bar-chart-square-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "bar-chart", - slug: "bar-chart-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "basketball", - slug: "basketball-regular", - category_id: 119, - type_of_icon: "REGULAR", - term: ["nba"] - }, - { - name: "block", - slug: "block-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "book-bookmark", - slug: "book-bookmark-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "book", - slug: "book-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "bookmark-minus", - slug: "bookmark-minus-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "bookmark-plus", - slug: "bookmark-plus-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "briefcase", - slug: "briefcase-regular", - category_id: 99, - type_of_icon: "REGULAR", - term: ["work", "travel", "suitcase"] - }, - { - name: "broadcast", - slug: "broadcast-regular", - category_id: 115, - type_of_icon: "REGULAR" - }, - { - name: "building", - slug: "building-regular", - category_id: 98, - type_of_icon: "REGULAR" - }, - { - name: "bug", - slug: "bug-regular", - category_id: 100, - type_of_icon: "REGULAR", - term: ["error", "warning"] - }, - { - name: "bluetooth", - slug: "bluetooth-regular", - category_id: 115, - type_of_icon: "REGULAR" - }, - { - name: "bulb", - slug: "bulb-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "buoy", - slug: "buoy-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "calendar-plus", - slug: "calendar-plus-regular", - category_id: 120, - type_of_icon: "REGULAR" - }, - { - name: "calendar-check", - slug: "calendar-check-regular", - category_id: 120, - type_of_icon: "REGULAR" - }, - { - name: "calendar-minus", - slug: "calendar-minus-regular", - category_id: 120, - type_of_icon: "REGULAR" - }, - { - name: "calendar-x", - slug: "calendar-x-regular", - category_id: 120, - type_of_icon: "REGULAR" - }, - { - name: "calendar", - slug: "calendar-regular", - category_id: 120, - type_of_icon: "REGULAR" - }, - { - name: "chart", - slug: "chart-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "cloud-download", - slug: "cloud-download-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "cloud-upload", - slug: "cloud-upload-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "cloud", - slug: "cloud-regular", - category_id: 123, - type_of_icon: "REGULAR" - }, - { - name: "terminal", - slug: "terminal-regular", - category_id: 100, - type_of_icon: "REGULAR", - term: ["command line"] - }, - { - name: "crosshair", - slug: "crosshair-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "compass", - slug: "compass-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "data", - slug: "data-regular", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "desktop", - slug: "desktop-regular", - category_id: 103, - type_of_icon: "REGULAR", - term: ["monitor", "display"] - }, - { - name: "directions", - slug: "directions-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "dollar", - slug: "dollar-regular", - category_id: 107, - type_of_icon: "REGULAR" - }, - { - name: "dots-horizontal-rounded", - slug: "dots-horizontal-rounded-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "dots-horizontal", - slug: "dots-horizontal-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "dots-vertical-rounded", - slug: "dots-vertical-rounded-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "dots-vertical", - slug: "dots-vertical-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "download", - slug: "download-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "envelope", - slug: "envelope-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["letter", "mail", "email", "communication"] - }, - { - name: "gift", - slug: "gift-regular", - category_id: 104, - type_of_icon: "REGULAR" - }, - { - name: "globe", - slug: "globe-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "devices", - slug: "devices-regular", - category_id: 103, - type_of_icon: "REGULAR", - term: ["mobile", "tab"] - }, - { - name: "headphone", - slug: "headphone-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "heart", - slug: "heart-regular", - category_id: 109, - type_of_icon: "REGULAR", - term: ["health"] - }, - { - name: "home", - slug: "home-regular", - category_id: 98, - type_of_icon: "REGULAR" - }, - { - name: "laptop", - slug: "laptop-regular", - category_id: 103, - type_of_icon: "REGULAR" - }, - { - name: "layer", - slug: "layer-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "link-alt", - slug: "link-alt-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "link", - slug: "link-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "list-plus", - slug: "list-plus-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "list-ul", - slug: "list-ul-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "list-minus", - slug: "list-minus-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "lock-open", - slug: "lock-open-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "lock", - slug: "lock-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "map-alt", - slug: "map-alt-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "map", - slug: "map-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "message-rounded", - slug: "message-rounded-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message", - slug: "message-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "mobile-alt", - slug: "mobile-alt-regular", - category_id: 103, - type_of_icon: "REGULAR" - }, - { - name: "mobile", - slug: "mobile-regular", - category_id: 103, - type_of_icon: "REGULAR" - }, - { - name: "navigation", - slug: "navigation-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "phone", - slug: "phone-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "pie-chart", - slug: "pie-chart-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "send", - slug: "send-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "sidebar", - slug: "sidebar-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "sitemap", - slug: "sitemap-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "spreadsheet", - slug: "spreadsheet-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "tab", - slug: "tab-regular", - category_id: 103, - type_of_icon: "REGULAR" - }, - { - name: "tag", - slug: "tag-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "target-lock", - slug: "target-lock-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "tennis-ball", - slug: "tennis-ball-regular", - category_id: 119, - type_of_icon: "REGULAR", - term: ["deuce"] - }, - { - name: "alarm", - slug: "alarm-regular", - category_id: 120, - type_of_icon: "REGULAR", - term: ["alert"] - }, - { - name: "upload", - slug: "upload-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "usb", - slug: "usb-regular", - category_id: 103, - type_of_icon: "REGULAR" - }, - { - name: "video-off", - slug: "video-off-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "voicemail", - slug: "voicemail-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "wifi", - slug: "wifi-regular", - category_id: 115, - type_of_icon: "REGULAR" - }, - { - name: "window-open", - slug: "window-open-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "window", - slug: "window-regular", - category_id: 110, - type_of_icon: "REGULAR", - term: ["browser"] - }, - { - name: "windows", - slug: "windows-regular", - category_id: 110, - type_of_icon: "REGULAR", - term: ["browser"] - }, - { - name: "duplicate", - slug: "duplicate-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "table", - slug: "table-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "x", - slug: "x-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "adjust", - slug: "adjust-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "album", - slug: "album-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "anchor", - slug: "anchor-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "award", - slug: "award-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "bold", - slug: "bold-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "calculator", - slug: "calculator-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "cart", - slug: "cart-regular", - category_id: 104, - type_of_icon: "REGULAR" - }, - { - name: "check", - slug: "check-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "cloud-drizzle", - slug: "cloud-drizzle-regular", - category_id: 123, - type_of_icon: "REGULAR" - }, - { - name: "cloud-light-rain", - slug: "cloud-light-rain-regular", - category_id: 123, - type_of_icon: "REGULAR" - }, - { - name: "cloud-lightning", - slug: "cloud-lightning-regular", - category_id: 123, - type_of_icon: "REGULAR" - }, - { - name: "cloud-rain", - slug: "cloud-rain-regular", - category_id: 123, - type_of_icon: "REGULAR" - }, - { - name: "cloud-snow", - slug: "cloud-snow-regular", - category_id: 123, - type_of_icon: "REGULAR" - }, - { - name: "cog", - slug: "cog-regular", - category_id: 110, - type_of_icon: "REGULAR", - term: ["gear", "setting"] - }, - { - name: "columns", - slug: "columns-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "credit-card", - slug: "credit-card-regular", - category_id: 107, - type_of_icon: "REGULAR", - term: ["finance", "money", "debit"] - }, - { - name: "crop", - slug: "crop-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "cube", - slug: "cube-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "cut", - slug: "cut-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "detail", - slug: "detail-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "shield-quarter", - slug: "shield-quarter-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "edit", - slug: "edit-regular", - category_id: 124, - type_of_icon: "REGULAR", - term: ["writing", "note", "pencil"] - }, - { - name: "file", - slug: "file-regular", - category_id: 106, - type_of_icon: "REGULAR" - }, - { - name: "filter", - slug: "filter-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "font", - slug: "font-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "git-branch", - slug: "git-branch-regular", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "git-commit", - slug: "git-commit-regular", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "git-compare", - slug: "git-compare-regular", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "git-merge", - slug: "git-merge-regular", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "git-pull-request", - slug: "git-pull-request-regular", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "git-repo-forked", - slug: "git-repo-forked-regular", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "group", - slug: "group-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "hash", - slug: "hash-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "heading", - slug: "heading-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "home-alt", - slug: "home-alt-regular", - category_id: 98, - type_of_icon: "REGULAR" - }, - { - name: "italic", - slug: "italic-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "joystick", - slug: "joystick-regular", - category_id: 103, - type_of_icon: "REGULAR" - }, - { - name: "link-external", - slug: "link-external-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "log-in", - slug: "log-in-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "log-out", - slug: "log-out-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "microphone-off", - slug: "microphone-off-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "minus", - slug: "minus-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "mouse", - slug: "mouse-regular", - category_id: 103, - type_of_icon: "REGULAR" - }, - { - name: "move", - slug: "move-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "music", - slug: "music-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "notification", - slug: "notification-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "package", - slug: "package-regular", - category_id: 104, - type_of_icon: "REGULAR", - term: ["box", "shipping", "delivery"] - }, - { - name: "paragraph", - slug: "paragraph-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "paste", - slug: "paste-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "pencil", - slug: "pencil-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "pin", - slug: "pin-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "plus", - slug: "plus-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "power-off", - slug: "power-off-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "pulse", - slug: "pulse-regular", - category_id: 109, - type_of_icon: "REGULAR" - }, - { - name: "save", - slug: "save-regular", - category_id: 116, - type_of_icon: "REGULAR", - term: ["floppy disk"] - }, - { - name: "screenshot", - slug: "screenshot-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "select-multiple", - slug: "select-multiple-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "share-alt", - slug: "share-alt-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "share", - slug: "share-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "shield-alt", - slug: "shield-alt-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "shield", - slug: "shield-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "shopping-bag", - slug: "shopping-bag-regular", - category_id: 104, - type_of_icon: "REGULAR" - }, - { - name: "shuffle", - slug: "shuffle-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "sort", - slug: "sort-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "star", - slug: "star-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "sun", - slug: "sun-regular", - category_id: 123, - type_of_icon: "REGULAR" - }, - { - name: "text", - slug: "text-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "trash", - slug: "trash-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "trophy", - slug: "trophy-regular", - category_id: 119, - type_of_icon: "REGULAR" - }, - { - name: "underline", - slug: "underline-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "user-check", - slug: "user-check-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "user-circle", - slug: "user-circle-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "user-minus", - slug: "user-minus-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "user-plus", - slug: "user-plus-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "user-x", - slug: "user-x-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "user", - slug: "user-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "barcode", - slug: "barcode-regular", - category_id: 104, - type_of_icon: "REGULAR" - }, - { - name: "crown", - slug: "crown-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "dislike", - slug: "dislike-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "down-arrow", - slug: "down-arrow-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "export", - slug: "export-regular", - category_id: 106, - type_of_icon: "REGULAR" - }, - { - name: "facebook", - slug: "facebook-logo", - category_id: 97, - type_of_icon: "LOGO", - term: ["social media"] - }, - { - name: "first-aid", - slug: "first-aid-regular", - category_id: 109, - type_of_icon: "REGULAR" - }, - { - name: "flag", - slug: "flag-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "github", - slug: "github-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "google", - slug: "google-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "history", - slug: "history-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "instagram", - slug: "instagram-logo", - category_id: 97, - type_of_icon: "LOGO", - term: ["social media"] - }, - { - name: "joystick-alt", - slug: "joystick-alt-regular", - category_id: 103, - type_of_icon: "REGULAR" - }, - { - name: "left-arrow", - slug: "left-arrow-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "like", - slug: "like-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "list-check", - slug: "list-check-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "poll", - slug: "poll-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "radar", - slug: "radar-regular", - category_id: 103, - type_of_icon: "REGULAR" - }, - { - name: "redo", - slug: "redo-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "reply-all", - slug: "reply-all-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "reply", - slug: "reply-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "repost", - slug: "repost-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "revision", - slug: "revision-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "right-arrow", - slug: "right-arrow-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "subdirectory-left", - slug: "subdirectory-left-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "subdirectory-right", - slug: "subdirectory-right-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "support", - slug: "support-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "timer", - slug: "timer-regular", - category_id: 120, - type_of_icon: "REGULAR" - }, - { - name: "twitter", - slug: "twitter-logo", - category_id: 97, - type_of_icon: "LOGO", - term: ["social media"] - }, - { - name: "undo", - slug: "undo-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "up-arrow", - slug: "up-arrow-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "youtube", - slug: "youtube-logo", - category_id: 117, - type_of_icon: "LOGO" - }, - { - name: "whatsapp", - slug: "whatsapp-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "tumblr", - slug: "tumblr-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "phone-call", - slug: "phone-call-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "behance", - slug: "behance-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "dribbble", - slug: "dribbble-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "aperture", - slug: "aperture-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "film", - slug: "film-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "folder-open", - slug: "folder-open-regular", - category_id: 106, - type_of_icon: "REGULAR" - }, - { - name: "task", - slug: "task-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "server", - slug: "server-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "battery", - slug: "battery-regular", - category_id: 103, - type_of_icon: "REGULAR" - }, - { - name: "calendar-alt", - slug: "calendar-alt-regular", - category_id: 120, - type_of_icon: "REGULAR" - }, - { - name: "import", - slug: "import-regular", - category_id: 106, - type_of_icon: "REGULAR" - }, - { - name: "ruler", - slug: "ruler-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "horizontal-center", - slug: "horizontal-center-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "rotate-right", - slug: "rotate-right-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "rename", - slug: "rename-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "collapse", - slug: "collapse-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "phone-incoming", - slug: "phone-incoming-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "phone-outgoing", - slug: "phone-outgoing-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "body", - slug: "body-regular", - category_id: 94, - type_of_icon: "REGULAR", - term: ["male"] - }, - { - name: "cast", - slug: "cast-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "chip", - slug: "chip-regular", - category_id: 103, - type_of_icon: "REGULAR" - }, - { - name: "skip-next-circle", - slug: "skip-next-circle-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "skip-previous-circle", - slug: "skip-previous-circle-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "hdd", - slug: "hdd-regular", - category_id: 103, - type_of_icon: "REGULAR", - term: ["storage", "hard drive"] - }, - { - name: "store", - slug: "store-regular", - category_id: 104, - type_of_icon: "REGULAR", - term: ["shop", "market"] - }, - { - name: "globe-alt", - slug: "globe-alt-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "vimeo", - slug: "vimeo-logo", - category_id: 117, - type_of_icon: "LOGO" - }, - { - name: "upvote", - slug: "upvote-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "downvote", - slug: "downvote-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "news", - slug: "news-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "pie-chart-alt", - slug: "pie-chart-alt-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "images", - slug: "images-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "purchase-tag", - slug: "purchase-tag-regular", - category_id: 104, - type_of_icon: "REGULAR", - term: ["price", "cost"] - }, - { - name: "pen", - slug: "pen-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "expand", - slug: "expand-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "paperclip", - slug: "paperclip-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "closet", - slug: "closet-regular", - category_id: 104, - type_of_icon: "REGULAR" - }, - { - name: "tv", - slug: "tv-regular", - category_id: 103, - type_of_icon: "REGULAR", - term: ["television", "monitor"] - }, - { - name: "collection", - slug: "collection-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "station", - slug: "station-regular", - category_id: 115, - type_of_icon: "REGULAR" - }, - { - name: "wallet", - slug: "wallet-regular", - category_id: 107, - type_of_icon: "REGULAR", - term: ["money"] - }, - { - name: "briefcase-alt", - slug: "briefcase-alt-regular", - category_id: 99, - type_of_icon: "REGULAR", - term: ["work", "travel", "suitcase"] - }, - { - name: "hourglass", - slug: "hourglass-regular", - category_id: 120, - type_of_icon: "REGULAR" - }, - { - name: "carousel", - slug: "carousel-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "infinite", - slug: "infinite-regular", - category_id: 113, - type_of_icon: "REGULAR" - }, - { - name: "plug", - slug: "plug-regular", - category_id: 116, - type_of_icon: "REGULAR", - term: ["charging"] - }, - { - name: "notification-off", - slug: "notification-off-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "window-close", - slug: "window-close-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "command", - slug: "command-regular", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "grid-alt", - slug: "grid-alt-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "trash-alt", - slug: "trash-alt-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "chalkboard", - slug: "chalkboard-regular", - category_id: 99, - type_of_icon: "REGULAR", - term: ["whiteboard", "teaching"] - }, - { - name: "loader", - slug: "loader-regular", - category_id: 112, - type_of_icon: "REGULAR" - }, - { - name: "slider", - slug: "slider-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "paper-plane", - slug: "paper-plane-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "selection", - slug: "selection-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "linkedin", - slug: "linkedin-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "world", - slug: "world-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "dock-bottom", - slug: "dock-bottom-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "dock-right", - slug: "dock-right-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "dock-top", - slug: "dock-top-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "dock-left", - slug: "dock-left-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "layout", - slug: "layout-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "bitcoin", - slug: "bitcoin-logo", - category_id: 107, - type_of_icon: "LOGO" - }, - { - name: "facebook-square", - slug: "facebook-square-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "alarm-off", - slug: "alarm-off-regular", - category_id: 120, - type_of_icon: "REGULAR", - term: ["alert", "silent"] - }, - { - name: "wrench", - slug: "wrench-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "loader-circle", - slug: "loader-circle-regular", - category_id: 112, - type_of_icon: "REGULAR" - }, - { - name: "loader-alt", - slug: "loader-alt-regular", - category_id: 112, - type_of_icon: "REGULAR" - }, - { - name: "car", - slug: "car-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "cart-alt", - slug: "cart-alt-regular", - category_id: 104, - type_of_icon: "REGULAR" - }, - { - name: "adjust", - slug: "adjust-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "alarm", - slug: "alarm-solid", - category_id: 120, - type_of_icon: "SOLID", - term: ["alert"] - }, - { - name: "alarm-off", - slug: "alarm-off-solid", - category_id: 120, - type_of_icon: "SOLID", - term: ["alert", "silent"] - }, - { - name: "album", - slug: "album-solid", - category_id: 114, - type_of_icon: "SOLID" - }, - { - name: "archive", - slug: "archive-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "camera", - slug: "camera-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "camera-off", - slug: "camera-off-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "folder", - slug: "folder-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "folder-plus", - slug: "folder-plus-solid", - category_id: 106, - type_of_icon: "SOLID", - term: ["add", "folder add", "new folder"] - }, - { - name: "award", - slug: "award-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "bar-chart-square", - slug: "bar-chart-square-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "barcode", - slug: "barcode-solid", - category_id: 104, - type_of_icon: "SOLID" - }, - { - name: "battery", - slug: "battery-solid", - category_id: 103, - type_of_icon: "SOLID" - }, - { - name: "battery-charging", - slug: "battery-charging-solid", - category_id: 103, - type_of_icon: "SOLID" - }, - { - name: "battery-full", - slug: "battery-full-solid", - category_id: 103, - type_of_icon: "SOLID" - }, - { - name: "bell", - slug: "bell-solid", - category_id: 95, - type_of_icon: "SOLID", - term: ["alert", "notification"] - }, - { - name: "bell-off", - slug: "bell-off-solid", - category_id: 95, - type_of_icon: "SOLID", - term: ["alert", "notification", "silent"] - }, - { - name: "bolt", - slug: "bolt-solid", - category_id: 123, - type_of_icon: "SOLID", - term: ["zap"] - }, - { - name: "book", - slug: "book-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "book-bookmark", - slug: "book-bookmark-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "bookmark", - slug: "bookmark-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "bookmark-plus", - slug: "bookmark-plus-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "book-open", - slug: "book-open-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "bookmark-star", - slug: "bookmark-star-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "briefcase", - slug: "briefcase-solid", - category_id: 99, - type_of_icon: "SOLID", - term: ["work", "travel", "suitcase"] - }, - { - name: "briefcase-alt", - slug: "briefcase-alt-solid", - category_id: 99, - type_of_icon: "SOLID", - term: ["work", "travel", "suitcase"] - }, - { - name: "bug", - slug: "bug-solid", - category_id: 100, - type_of_icon: "SOLID", - term: ["error", "warning"] - }, - { - name: "building", - slug: "building-solid", - category_id: 98, - type_of_icon: "SOLID" - }, - { - name: "bulb", - slug: "bulb-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "buoy", - slug: "buoy-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "calculator", - slug: "calculator-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "captions", - slug: "captions-solid", - category_id: 94, - type_of_icon: "SOLID", - term: ["subtitles", "subs", "cc"] - }, - { - name: "car", - slug: "car-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "cart-alt", - slug: "cart-alt-solid", - category_id: 104, - type_of_icon: "SOLID" - }, - { - name: "cart", - slug: "cart-solid", - category_id: 104, - type_of_icon: "SOLID" - }, - { - name: "chart", - slug: "chart-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "chip", - slug: "chip-solid", - category_id: 103, - type_of_icon: "SOLID" - }, - { - name: "cloud-download", - slug: "cloud-download-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "cloud-upload", - slug: "cloud-upload-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "cloud", - slug: "cloud-solid", - category_id: 123, - type_of_icon: "SOLID" - }, - { - name: "coffee", - slug: "coffee-solid", - category_id: 108, - type_of_icon: "SOLID" - }, - { - name: "cog", - slug: "cog-solid", - category_id: 110, - type_of_icon: "SOLID", - term: ["gear", "setting"] - }, - { - name: "collection", - slug: "collection-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "contact", - slug: "contact-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "copy", - slug: "copy-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "coupon", - slug: "coupon-solid", - category_id: 104, - type_of_icon: "SOLID" - }, - { - name: "crown", - slug: "crown-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "cube", - slug: "cube-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "detail", - slug: "detail-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "discount", - slug: "discount-solid", - category_id: 104, - type_of_icon: "SOLID" - }, - { - name: "dislike", - slug: "dislike-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "dock-bottom", - slug: "dock-bottom-solid", - category_id: 111, - type_of_icon: "SOLID" - }, - { - name: "dock-left", - slug: "dock-left-solid", - category_id: 111, - type_of_icon: "SOLID" - }, - { - name: "dock-right", - slug: "dock-right-solid", - category_id: 111, - type_of_icon: "SOLID" - }, - { - name: "dock-top", - slug: "dock-top-solid", - category_id: 111, - type_of_icon: "SOLID" - }, - { - name: "down-arrow-circle", - slug: "down-arrow-circle-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "download", - slug: "download-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "downvote", - slug: "downvote-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "drink", - slug: "drink-solid", - category_id: 108, - type_of_icon: "SOLID" - }, - { - name: "droplet", - slug: "droplet-solid", - category_id: 123, - type_of_icon: "SOLID" - }, - { - name: "duplicate", - slug: "duplicate-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "eject", - slug: "eject-solid", - category_id: 114, - type_of_icon: "SOLID" - }, - { - name: "envelope", - slug: "envelope-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["letter", "mail", "email", "communication"] - }, - { - name: "error-circle", - slug: "error-circle-solid", - category_id: 95, - type_of_icon: "SOLID" - }, - { - name: "error", - slug: "error-solid", - category_id: 95, - type_of_icon: "SOLID" - }, - { - name: "file-image", - slug: "file-image-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "file", - slug: "file-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "filter-alt", - slug: "filter-alt-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "first-aid", - slug: "first-aid-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "flag-alt", - slug: "flag-alt-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "flag", - slug: "flag-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "gift", - slug: "gift-solid", - category_id: 104, - type_of_icon: "SOLID" - }, - { - name: "grid-alt", - slug: "grid-alt-solid", - category_id: 111, - type_of_icon: "SOLID" - }, - { - name: "group", - slug: "group-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "hdd", - slug: "hdd-solid", - category_id: 103, - type_of_icon: "SOLID", - term: ["storage", "hard drive"] - }, - { - name: "heart", - slug: "heart-solid", - category_id: 109, - type_of_icon: "SOLID", - term: ["health"] - }, - { - name: "hide", - slug: "hide-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "home", - slug: "home-solid", - category_id: 98, - type_of_icon: "SOLID" - }, - { - name: "hot", - slug: "hot-solid", - category_id: 123, - type_of_icon: "SOLID", - term: ["fire"] - }, - { - name: "hourglass", - slug: "hourglass-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "image", - slug: "image-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "inbox", - slug: "inbox-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "info-circle", - slug: "info-circle-solid", - category_id: 94, - type_of_icon: "SOLID" - }, - { - name: "joystick-alt", - slug: "joystick-alt-solid", - category_id: 103, - type_of_icon: "SOLID" - }, - { - name: "joystick", - slug: "joystick-solid", - category_id: 103, - type_of_icon: "SOLID" - }, - { - name: "layer", - slug: "layer-solid", - category_id: 111, - type_of_icon: "SOLID" - }, - { - name: "left-arrow-circle", - slug: "left-arrow-circle-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "like", - slug: "like-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "lock-open", - slug: "lock-open-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "lock", - slug: "lock-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "map-alt", - slug: "map-alt-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "map", - slug: "map-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "message-rounded", - slug: "message-rounded-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "message", - slug: "message-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "microphone-off", - slug: "microphone-off-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "microphone", - slug: "microphone-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "minus-circle", - slug: "minus-circle-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "moon", - slug: "moon-solid", - category_id: 123, - type_of_icon: "SOLID" - }, - { - name: "mouse", - slug: "mouse-solid", - category_id: 103, - type_of_icon: "SOLID" - }, - { - name: "music", - slug: "music-solid", - category_id: 114, - type_of_icon: "SOLID" - }, - { - name: "navigation", - slug: "navigation-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "news", - slug: "news-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "package", - slug: "package-solid", - category_id: 104, - type_of_icon: "SOLID", - term: ["box", "shipping", "delivery"] - }, - { - name: "paper-plane", - slug: "paper-plane-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "paste", - slug: "paste-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "pen", - slug: "pen-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "pencil", - slug: "pencil-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "phone-call", - slug: "phone-call-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "phone-incoming", - slug: "phone-incoming-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "phone-outgoing", - slug: "phone-outgoing-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "phone", - slug: "phone-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "pie-chart-alt", - slug: "pie-chart-alt-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "pie-chart", - slug: "pie-chart-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "pin", - slug: "pin-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "playlist", - slug: "playlist-solid", - category_id: 114, - type_of_icon: "SOLID" - }, - { - name: "plug", - slug: "plug-solid", - category_id: 116, - type_of_icon: "SOLID", - term: ["charging"] - }, - { - name: "plus-circle", - slug: "plus-circle-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "printer", - slug: "printer-solid", - category_id: 103, - type_of_icon: "SOLID" - }, - { - name: "purchase-tag", - slug: "purchase-tag-solid", - category_id: 104, - type_of_icon: "SOLID", - term: ["price", "cost"] - }, - { - name: "quote-left", - slug: "quote-left-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "quote-right", - slug: "quote-right-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "radio", - slug: "radio-solid", - category_id: 114, - type_of_icon: "SOLID" - }, - { - name: "rename", - slug: "rename-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "report", - slug: "report-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "right-arrow-circle", - slug: "right-arrow-circle-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "ruler", - slug: "ruler-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "save", - slug: "save-solid", - category_id: 116, - type_of_icon: "SOLID", - term: ["floppy disk"] - }, - { - name: "sort-alt", - slug: "sort-alt-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "select-multiple", - slug: "select-multiple-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "send", - slug: "send-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "server", - slug: "server-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "share-alt", - slug: "share-alt-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "share", - slug: "share-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "shield", - slug: "shield-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "shopping-bag-alt", - slug: "shopping-bag-alt-solid", - category_id: 104, - type_of_icon: "SOLID" - }, - { - name: "shopping-bag", - slug: "shopping-bag-solid", - category_id: 104, - type_of_icon: "SOLID" - }, - { - name: "show", - slug: "show-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "happy", - slug: "happy-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "meh", - slug: "meh-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "sad", - slug: "sad-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "spreadsheet", - slug: "spreadsheet-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "star", - slug: "star-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "store", - slug: "store-solid", - category_id: 104, - type_of_icon: "SOLID", - term: ["shop", "market"] - }, - { - name: "sun", - slug: "sun-solid", - category_id: 123, - type_of_icon: "SOLID" - }, - { - name: "t-shirt", - slug: "t-shirt-solid", - category_id: 104, - type_of_icon: "SOLID" - }, - { - name: "tag-x", - slug: "tag-x-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "tag", - slug: "tag-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "tennis-ball", - slug: "tennis-ball-solid", - category_id: 119, - type_of_icon: "SOLID", - term: ["deuce"] - }, - { - name: "terminal", - slug: "terminal-solid", - category_id: 100, - type_of_icon: "SOLID", - term: ["command line"] - }, - { - name: "to-top", - slug: "to-top-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "toggle-left", - slug: "toggle-left-solid", - category_id: 110, - type_of_icon: "SOLID", - term: ["switch"] - }, - { - name: "toggle-right", - slug: "toggle-right-solid", - category_id: 110, - type_of_icon: "SOLID", - term: ["switch"] - }, - { - name: "torch", - slug: "torch-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "trash-alt", - slug: "trash-alt-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "trash", - slug: "trash-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "trophy", - slug: "trophy-solid", - category_id: 119, - type_of_icon: "SOLID" - }, - { - name: "truck", - slug: "truck-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "up-arrow-circle", - slug: "up-arrow-circle-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "upvote", - slug: "upvote-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "user-circle", - slug: "user-circle-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "user-detail", - slug: "user-detail-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "user-minus", - slug: "user-minus-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "user-plus", - slug: "user-plus-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "user", - slug: "user-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "video-off", - slug: "video-off-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "video", - slug: "video-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "videos", - slug: "videos-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "volume-full", - slug: "volume-full-solid", - category_id: 114, - type_of_icon: "SOLID" - }, - { - name: "volume-low", - slug: "volume-low-solid", - category_id: 114, - type_of_icon: "SOLID" - }, - { - name: "volume-mute", - slug: "volume-mute-solid", - category_id: 114, - type_of_icon: "SOLID" - }, - { - name: "volume", - slug: "volume-solid", - category_id: 114, - type_of_icon: "SOLID" - }, - { - name: "wallet", - slug: "wallet-solid", - category_id: 107, - type_of_icon: "SOLID", - term: ["money"] - }, - { - name: "watch-alt", - slug: "watch-alt-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "watch", - slug: "watch-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "widget", - slug: "widget-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "wrench", - slug: "wrench-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "x-circle", - slug: "x-circle-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "zap", - slug: "zap-solid", - category_id: 123, - type_of_icon: "SOLID", - term: ["bolt"] - }, - { - name: "folder-open", - slug: "folder-open-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "battery-low", - slug: "battery-low-solid", - category_id: 103, - type_of_icon: "SOLID" - }, - { - name: "conversation", - slug: "conversation-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["chat", "discussion"] - }, - { - name: "dashboard", - slug: "dashboard-solid", - category_id: 103, - type_of_icon: "SOLID" - }, - { - name: "file-plus", - slug: "file-plus-solid", - category_id: 106, - type_of_icon: "SOLID", - term: ["add", "file add", "new file"] - }, - { - name: "slider-alt", - slug: "slider-alt-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "google-plus", - slug: "google-plus-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "google-plus-circle", - slug: "google-plus-circle-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "linkedin-square", - slug: "linkedin-square-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "medium", - slug: "medium-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "medium-square", - slug: "medium-square-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "skype", - slug: "skype-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "slack-old", - slug: "slack-old-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "slack", - slug: "slack-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "twitch", - slug: "twitch-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "discord", - slug: "discord-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "reddit", - slug: "reddit-logo", - category_id: 97, - type_of_icon: "LOGO", - term: ["social media"] - }, - { - name: "pinterest", - slug: "pinterest-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "blogger", - slug: "blogger-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "certification", - slug: "certification-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "certification", - slug: "certification-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "rocket", - slug: "rocket-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "rocket", - slug: "rocket-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "check-circle", - slug: "check-circle-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "check-circle", - slug: "check-circle-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "checkbox", - slug: "checkbox-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "checkbox-checked", - slug: "checkbox-checked-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "star-half", - slug: "star-half-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "bus", - slug: "bus-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "bus", - slug: "bus-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "check-double", - slug: "check-double-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "dumbbell", - slug: "dumbbell-regular", - category_id: 109, - type_of_icon: "REGULAR", - term: ["gym", "workout"] - }, - { - name: "bot", - slug: "bot-regular", - category_id: 105, - type_of_icon: "REGULAR" - }, - { - name: "area", - slug: "area-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "bot", - slug: "bot-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "area", - slug: "area-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "bed", - slug: "bed-regular", - category_id: 109, - type_of_icon: "REGULAR", - term: ["sleep"] - }, - { - name: "bed", - slug: "bed-solid", - category_id: 109, - type_of_icon: "SOLID", - term: ["sleep"] - }, - { - name: "bath", - slug: "bath-regular", - category_id: 109, - type_of_icon: "REGULAR" - }, - { - name: "bath", - slug: "bath-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "train", - slug: "train-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "train", - slug: "train-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "taxi", - slug: "taxi-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "taxi", - slug: "taxi-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "movie", - slug: "movie-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "movie", - slug: "movie-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "hotel", - slug: "hotel-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "planet", - slug: "planet-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "planet", - slug: "planet-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "list-ol", - slug: "list-ol-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "video-plus", - slug: "video-plus-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "video-plus", - slug: "video-plus-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "menu-alt-left", - slug: "menu-alt-left-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "menu-alt-right", - slug: "menu-alt-right-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "box", - slug: "box-regular", - category_id: 106, - type_of_icon: "REGULAR", - term: ["archive"] - }, - { - name: "box", - slug: "box-solid", - category_id: 106, - type_of_icon: "SOLID", - term: ["archive"] - }, - { - name: "key", - slug: "key-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "restaurant", - slug: "restaurant-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "swim", - slug: "swim-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "water", - slug: "water-regular", - category_id: 123, - type_of_icon: "REGULAR" - }, - { - name: "wind", - slug: "wind-regular", - category_id: 123, - type_of_icon: "REGULAR", - term: ["breeze", "gust", "air"] - }, - { - name: "dialpad", - slug: "dialpad-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["keypad"] - }, - { - name: "handicap", - slug: "handicap-regular", - category_id: 94, - type_of_icon: "REGULAR", - term: ["wheelchair", "injury"] - }, - { - name: "font-size", - slug: "font-size-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "code-block", - slug: "code-block-regular", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "photo-album", - slug: "photo-album-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "photo-album", - slug: "photo-album-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "bell-ring", - slug: "bell-ring-solid", - category_id: 95, - type_of_icon: "SOLID", - term: ["alert", "notification"] - }, - { - name: "apple", - slug: "apple-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "android", - slug: "android-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "play-store", - slug: "play-store-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "windows", - slug: "windows-logo", - category_id: 97, - type_of_icon: "LOGO", - term: ["browser"] - }, - { - name: "vk", - slug: "vk-logo", - category_id: 97, - type_of_icon: "LOGO", - term: ["social media"] - }, - { - name: "pocket", - slug: "pocket-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "strikethrough", - slug: "strikethrough-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "file-blank", - slug: "file-blank-regular", - category_id: 106, - type_of_icon: "REGULAR" - }, - { - name: "file-blank", - slug: "file-blank-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "highlight", - slug: "highlight-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "font-color", - slug: "font-color-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "fingerprint", - slug: "fingerprint-regular", - category_id: 103, - type_of_icon: "REGULAR" - }, - { - name: "transfer", - slug: "transfer-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "circle", - slug: "circle-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "edit", - slug: "edit-solid", - category_id: 124, - type_of_icon: "SOLID", - term: ["writing", "note", "pencil"] - }, - { - name: "ball", - slug: "ball-regular", - category_id: 119, - type_of_icon: "REGULAR", - term: ["football", "rugby"] - }, - { - name: "ball", - slug: "ball-solid", - category_id: 119, - type_of_icon: "SOLID", - term: ["football", "rugby"] - }, - { - name: "football", - slug: "football-regular", - category_id: 119, - type_of_icon: "REGULAR", - term: ["soccer", "goal"] - }, - { - name: "film", - slug: "film-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "dollar-circle", - slug: "dollar-circle-regular", - category_id: 107, - type_of_icon: "REGULAR" - }, - { - name: "dollar-circle", - slug: "dollar-circle-solid", - category_id: 107, - type_of_icon: "SOLID" - }, - { - name: "skull", - slug: "skull-solid", - category_id: 105, - type_of_icon: "SOLID" - }, - { - name: "messenger", - slug: "messenger-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "search-alt", - slug: "search-alt-regular", - category_id: 110, - type_of_icon: "REGULAR", - term: ["magnifying glass"] - }, - { - name: "image-alt", - slug: "image-alt-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "microphone-alt", - slug: "microphone-alt-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "analyse", - slug: "analyse-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "x-square", - slug: "x-square-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "plus-square", - slug: "plus-square-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "minus-square", - slug: "minus-square-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "disc", - slug: "disc-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "disc", - slug: "disc-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "equalizer", - slug: "equalizer-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "stats", - slug: "stats-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "move-horizontal", - slug: "move-horizontal-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "move-vertical", - slug: "move-vertical-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "flame", - slug: "flame-solid", - category_id: 123, - type_of_icon: "SOLID" - }, - { - name: "grid-horizontal", - slug: "grid-horizontal-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "grid-vertical", - slug: "grid-vertical-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "grid-small", - slug: "grid-small-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "badge", - slug: "badge-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "badge", - slug: "badge-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "id-card", - slug: "id-card-regular", - category_id: 122, - type_of_icon: "REGULAR" - }, - { - name: "sort-up", - slug: "sort-up-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "sort-down", - slug: "sort-down-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "note", - slug: "note-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "note", - slug: "note-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "test-tube", - slug: "test-tube-regular", - category_id: 109, - type_of_icon: "REGULAR" - }, - { - name: "help-circle", - slug: "help-circle-regular", - category_id: 94, - type_of_icon: "REGULAR" - }, - { - name: "help-circle", - slug: "help-circle-solid", - category_id: 94, - type_of_icon: "SOLID" - }, - { - name: "card", - slug: "card-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "card", - slug: "card-solid", - category_id: 111, - type_of_icon: "SOLID" - }, - { - name: "rewind-circle", - slug: "rewind-circle-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "magnet", - slug: "magnet-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "magnet", - slug: "magnet-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "500px", - slug: "500px-logo", - category_id: 117, - type_of_icon: "LOGO" - }, - { - name: "angular", - slug: "angular-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "codepen", - slug: "codepen-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "creative-commons", - slug: "creative-commons-logo", - category_id: 117, - type_of_icon: "LOGO" - }, - { - name: "digitalocean", - slug: "digitalocean-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "deviantart", - slug: "deviantart-logo", - category_id: 117, - type_of_icon: "LOGO" - }, - { - name: "discourse", - slug: "discourse-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "dropbox", - slug: "dropbox-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "drupal", - slug: "drupal-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "ebay", - slug: "ebay-logo", - category_id: 104, - type_of_icon: "LOGO" - }, - { - name: "amazon", - slug: "amazon-logo", - category_id: 104, - type_of_icon: "LOGO" - }, - { - name: "digg", - slug: "digg-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "unsplash", - slug: "unsplash-logo", - category_id: 117, - type_of_icon: "LOGO" - }, - { - name: "wikipedia", - slug: "wikipedia-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "sass", - slug: "sass-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "foursquare", - slug: "foursquare-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "invision", - slug: "invision-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "opera", - slug: "opera-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "airbnb", - slug: "airbnb-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "yelp", - slug: "yelp-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "quora", - slug: "quora-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "git", - slug: "git-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "html5", - slug: "html5-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "product-hunt", - slug: "product-hunt-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "magento", - slug: "magento-logo", - category_id: 104, - type_of_icon: "LOGO" - }, - { - name: "stack-overflow", - slug: "stack-overflow-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "firefox", - slug: "firefox-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "javascript", - slug: "javascript-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "nodejs", - slug: "nodejs-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "kickstarter", - slug: "kickstarter-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "vuejs", - slug: "vuejs-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "bing", - slug: "bing-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "react", - slug: "react-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "periscope", - slug: "periscope-logo", - category_id: 117, - type_of_icon: "LOGO" - }, - { - name: "wordpress", - slug: "wordpress-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "telegram", - slug: "telegram-logo", - category_id: 101, - type_of_icon: "LOGO" - }, - { - name: "stripe", - slug: "stripe-logo", - category_id: 107, - type_of_icon: "LOGO" - }, - { - name: "edge", - slug: "edge-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "paypal", - slug: "paypal-logo", - category_id: 107, - type_of_icon: "LOGO" - }, - { - name: "internet-explorer", - slug: "internet-explorer-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "joomla", - slug: "joomla-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "dailymotion", - slug: "dailymotion-logo", - category_id: 117, - type_of_icon: "LOGO" - }, - { - name: "chrome", - slug: "chrome-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "baidu", - slug: "baidu-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "visa", - slug: "visa-logo", - category_id: 107, - type_of_icon: "LOGO" - }, - { - name: "mastercard", - slug: "mastercard-logo", - category_id: 107, - type_of_icon: "LOGO" - }, - { - name: "redux", - slug: "redux-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "bootstrap", - slug: "bootstrap-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "yahoo", - slug: "yahoo-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "microsoft", - slug: "microsoft-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "css3", - slug: "css3-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "jsfiddle", - slug: "jsfiddle-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "shopify", - slug: "shopify-logo", - category_id: 104, - type_of_icon: "LOGO" - }, - { - name: "flickr", - slug: "flickr-logo", - category_id: 117, - type_of_icon: "LOGO" - }, - { - name: "less", - slug: "less-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "snapchat", - slug: "snapchat-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "soundcloud", - slug: "soundcloud-logo", - category_id: 114, - type_of_icon: "LOGO" - }, - { - name: "spotify", - slug: "spotify-logo", - category_id: 114, - type_of_icon: "LOGO" - }, - { - name: "trello", - slug: "trello-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "wix", - slug: "wix-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "mailchimp", - slug: "mailchimp-logo", - category_id: 101, - type_of_icon: "LOGO" - }, - { - name: "medium-old", - slug: "medium-old-logo", - category_id: 124, - type_of_icon: "LOGO" - }, - { - name: "squarespace", - slug: "squarespace-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "whatsapp-square", - slug: "whatsapp-square-logo", - category_id: 101, - type_of_icon: "LOGO" - }, - { - name: "flickr-square", - slug: "flickr-square-logo", - category_id: 117, - type_of_icon: "LOGO" - }, - { - name: "ambulance", - slug: "ambulance-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "left-arrow-square", - slug: "left-arrow-square-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "up-arrow-square", - slug: "up-arrow-square-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "down-arrow-square", - slug: "down-arrow-square-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "right-arrow-square", - slug: "right-arrow-square-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "user-badge", - slug: "user-badge-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "calendar-event", - slug: "calendar-event-regular", - category_id: 120, - type_of_icon: "REGULAR" - }, - { - name: "caret-left", - slug: "caret-left-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "caret-up", - slug: "caret-up-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "caret-right", - slug: "caret-right-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "caret-down", - slug: "caret-down-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "gas-pump", - slug: "gas-pump-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "landmark", - slug: "landmark-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "show-alt", - slug: "show-alt-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "badge-check", - slug: "badge-check-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "badge-check", - slug: "badge-check-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "rotate-left", - slug: "rotate-left-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "coffee-alt", - slug: "coffee-alt-solid", - category_id: 108, - type_of_icon: "SOLID" - }, - { - name: "brush", - slug: "brush-regular", - category_id: 102, - type_of_icon: "REGULAR", - term: ["color", "colour", "painting"] - }, - { - name: "brush", - slug: "brush-solid", - category_id: 102, - type_of_icon: "SOLID", - term: ["color", "colour", "painting"] - }, - { - name: "keyboard", - slug: "keyboard-solid", - category_id: 103, - type_of_icon: "SOLID" - }, - { - name: "megaphone", - slug: "megaphone-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "directions", - slug: "directions-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "direction-right", - slug: "direction-right-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "unlink", - slug: "unlink-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "paint", - slug: "paint-regular", - category_id: 102, - type_of_icon: "REGULAR" - }, - { - name: "joystick-button", - slug: "joystick-button-regular", - category_id: 103, - type_of_icon: "REGULAR" - }, - { - name: "joystick-button", - slug: "joystick-button-solid", - category_id: 103, - type_of_icon: "SOLID" - }, - { - name: "font-family", - slug: "font-family-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "flask", - slug: "flask-solid", - category_id: 108, - type_of_icon: "SOLID" - }, - { - name: "capsule", - slug: "capsule-solid", - category_id: 109, - type_of_icon: "SOLID", - term: ["medicine"] - }, - { - name: "color-fill", - slug: "color-fill-solid", - category_id: 102, - type_of_icon: "SOLID" - }, - { - name: "hotel", - slug: "hotel-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "magic-wand", - slug: "magic-wand-solid", - category_id: 102, - type_of_icon: "SOLID" - }, - { - name: "repeat", - slug: "repeat-regular", - category_id: 114, - type_of_icon: "REGULAR" - }, - { - name: "eraser", - slug: "eraser-solid", - category_id: 102, - type_of_icon: "SOLID", - term: ["rubber"] - }, - { - name: "cloud-rain", - slug: "cloud-rain-solid", - category_id: 123, - type_of_icon: "SOLID" - }, - { - name: "cloud-lightning", - slug: "cloud-lightning-solid", - category_id: 123, - type_of_icon: "SOLID" - }, - { - name: "eyedropper", - slug: "eyedropper-solid", - category_id: 102, - type_of_icon: "SOLID" - }, - { - name: "user-rectangle", - slug: "user-rectangle-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "plane", - slug: "plane-solid", - category_id: 121, - type_of_icon: "SOLID", - term: ["flight", "fly"] - }, - { - name: "tree", - slug: "tree-solid", - category_id: 121, - type_of_icon: "SOLID", - term: ["forest", "christmas"] - }, - { - name: "factory", - slug: "factory-solid", - category_id: 98, - type_of_icon: "SOLID" - }, - { - name: "ship", - slug: "ship-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "walk", - slug: "walk-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "yin-yang", - slug: "yin-yang-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "file-pdf", - slug: "file-pdf-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "money", - slug: "money-regular", - category_id: 107, - type_of_icon: "REGULAR" - }, - { - name: "home-circle", - slug: "home-circle-regular", - category_id: 98, - type_of_icon: "REGULAR" - }, - { - name: "home-circle", - slug: "home-circle-solid", - category_id: 98, - type_of_icon: "SOLID" - }, - { - name: "location-plus", - slug: "location-plus-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "location-plus", - slug: "location-plus-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "arch", - slug: "arch-regular", - category_id: 98, - type_of_icon: "REGULAR" - }, - { - name: "arch", - slug: "arch-solid", - category_id: 98, - type_of_icon: "SOLID" - }, - { - name: "atom", - slug: "atom-regular", - category_id: 113, - type_of_icon: "REGULAR" - }, - { - name: "badge-dollar", - slug: "badge-dollar-solid", - category_id: 104, - type_of_icon: "SOLID" - }, - { - name: "baseball", - slug: "baseball-regular", - category_id: 119, - type_of_icon: "REGULAR" - }, - { - name: "beer", - slug: "beer-regular", - category_id: 108, - type_of_icon: "REGULAR" - }, - { - name: "beer", - slug: "beer-solid", - category_id: 108, - type_of_icon: "SOLID" - }, - { - name: "bible", - slug: "bible-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "bible", - slug: "bible-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "bomb", - slug: "bomb-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "bomb", - slug: "bomb-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "bus-school", - slug: "bus-school-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "bus-school", - slug: "bus-school-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "cabinet", - slug: "cabinet-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "cabinet", - slug: "cabinet-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "calendar-edit", - slug: "calendar-edit-regular", - category_id: 120, - type_of_icon: "REGULAR" - }, - { - name: "calendar-edit", - slug: "calendar-edit-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "car-wash", - slug: "car-wash-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "car-garage", - slug: "car-garage-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "car-mechanic", - slug: "car-mechanic-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "car-crash", - slug: "car-crash-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "coffee-togo", - slug: "coffee-togo-regular", - category_id: 108, - type_of_icon: "REGULAR" - }, - { - name: "coffee-togo", - slug: "coffee-togo-solid", - category_id: 108, - type_of_icon: "SOLID" - }, - { - name: "chess", - slug: "chess-solid", - category_id: 119, - type_of_icon: "SOLID", - term: ["strategy"] - }, - { - name: "dryer", - slug: "dryer-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "washer", - slug: "washer-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "pointer", - slug: "pointer-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "pointer", - slug: "pointer-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "microchip", - slug: "microchip-regular", - category_id: 103, - type_of_icon: "REGULAR" - }, - { - name: "microchip", - slug: "microchip-solid", - category_id: 103, - type_of_icon: "SOLID" - }, - { - name: "piano", - slug: "piano-solid", - category_id: 103, - type_of_icon: "SOLID" - }, - { - name: "file-export", - slug: "file-export-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "file-import", - slug: "file-import-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "flag-checkered", - slug: "flag-checkered-solid", - category_id: 119, - type_of_icon: "SOLID", - term: ["f1", "racing"] - }, - { - name: "heart-circle", - slug: "heart-circle-regular", - category_id: 109, - type_of_icon: "REGULAR" - }, - { - name: "heart-circle", - slug: "heart-circle-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "heart-square", - slug: "heart-square-regular", - category_id: 109, - type_of_icon: "REGULAR" - }, - { - name: "heart-square", - slug: "heart-square-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "home-heart", - slug: "home-heart-regular", - category_id: 98, - type_of_icon: "REGULAR" - }, - { - name: "home-heart", - slug: "home-heart-solid", - category_id: 98, - type_of_icon: "SOLID" - }, - { - name: "info-square", - slug: "info-square-regular", - category_id: 94, - type_of_icon: "REGULAR" - }, - { - name: "info-square", - slug: "info-square-solid", - category_id: 94, - type_of_icon: "SOLID" - }, - { - name: "layer-plus", - slug: "layer-plus-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "layer-plus", - slug: "layer-plus-solid", - category_id: 111, - type_of_icon: "SOLID" - }, - { - name: "layer-minus", - slug: "layer-minus-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "layer-minus", - slug: "layer-minus-solid", - category_id: 111, - type_of_icon: "SOLID" - }, - { - name: "recycle", - slug: "recycle-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "traffic-cone", - slug: "traffic-cone-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "traffic-cone", - slug: "traffic-cone-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "wifi-2", - slug: "wifi-2-regular", - category_id: 115, - type_of_icon: "REGULAR" - }, - { - name: "wifi-1", - slug: "wifi-1-regular", - category_id: 115, - type_of_icon: "REGULAR" - }, - { - name: "wifi-0", - slug: "wifi-0-regular", - category_id: 115, - type_of_icon: "REGULAR" - }, - { - name: "mask", - slug: "mask-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "mask", - slug: "mask-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "low-vision", - slug: "low-vision-regular", - category_id: 94, - type_of_icon: "REGULAR", - term: ["eye", "view", "visibility"] - }, - { - name: "low-vision", - slug: "low-vision-solid", - category_id: 94, - type_of_icon: "SOLID", - term: ["eye", "view", "visibility"] - }, - { - name: "radiation", - slug: "radiation-solid", - category_id: 95, - type_of_icon: "SOLID", - term: ["hazard", "danger"] - }, - { - name: "been-here", - slug: "been-here-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "been-here", - slug: "been-here-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "current-location", - slug: "current-location-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "arrow-from-top", - slug: "arrow-from-top-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "arrow-from-top", - slug: "arrow-from-top-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "arrow-from-bottom", - slug: "arrow-from-bottom-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "arrow-from-bottom", - slug: "arrow-from-bottom-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "arrow-from-left", - slug: "arrow-from-left-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "arrow-from-left", - slug: "arrow-from-left-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "arrow-from-right", - slug: "arrow-from-right-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "arrow-from-right", - slug: "arrow-from-right-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "arrow-to-right", - slug: "arrow-to-right-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "arrow-to-right", - slug: "arrow-to-right-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "arrow-to-left", - slug: "arrow-to-left-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "arrow-to-left", - slug: "arrow-to-left-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "arrow-to-top", - slug: "arrow-to-top-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "arrow-to-top", - slug: "arrow-to-top-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "arrow-to-bottom", - slug: "arrow-to-bottom-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "arrow-to-bottom", - slug: "arrow-to-bottom-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "book-reader", - slug: "book-reader-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "book-reader", - slug: "book-reader-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "edit-location", - slug: "edit-location-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "ev-station", - slug: "ev-station-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "shapes", - slug: "shapes-solid", - category_id: 118, - type_of_icon: "SOLID" - }, - { - name: "florist", - slug: "florist-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "pizza", - slug: "pizza-solid", - category_id: 108, - type_of_icon: "SOLID" - }, - { - name: "scan", - slug: "scan-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "calendar-week", - slug: "calendar-week-regular", - category_id: 120, - type_of_icon: "REGULAR" - }, - { - name: "calendar-week", - slug: "calendar-week-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "glasses", - slug: "glasses-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "glasses-alt", - slug: "glasses-alt-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "border-none", - slug: "border-none-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "border-inner", - slug: "border-inner-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "dice-1", - slug: "dice-1-regular", - category_id: 119, - type_of_icon: "REGULAR", - term: ["game", "random"] - }, - { - name: "dice-1", - slug: "dice-1-solid", - category_id: 119, - type_of_icon: "SOLID", - term: ["game", "random"] - }, - { - name: "dice-2", - slug: "dice-2-regular", - category_id: 119, - type_of_icon: "REGULAR", - term: ["game", "random"] - }, - { - name: "dice-2", - slug: "dice-2-solid", - category_id: 119, - type_of_icon: "SOLID", - term: ["game", "random"] - }, - { - name: "dice-3", - slug: "dice-3-regular", - category_id: 119, - type_of_icon: "REGULAR", - term: ["game", "random"] - }, - { - name: "dice-3", - slug: "dice-3-solid", - category_id: 119, - type_of_icon: "SOLID", - term: ["game", "random"] - }, - { - name: "dice-4", - slug: "dice-4-regular", - category_id: 119, - type_of_icon: "REGULAR", - term: ["game", "random"] - }, - { - name: "dice-4", - slug: "dice-4-solid", - category_id: 119, - type_of_icon: "SOLID", - term: ["game", "random"] - }, - { - name: "dice-5", - slug: "dice-5-regular", - category_id: 119, - type_of_icon: "REGULAR", - term: ["game", "random"] - }, - { - name: "dice-5", - slug: "dice-5-solid", - category_id: 119, - type_of_icon: "SOLID", - term: ["game", "random"] - }, - { - name: "dice-6", - slug: "dice-6-regular", - category_id: 119, - type_of_icon: "REGULAR", - term: ["game", "random"] - }, - { - name: "dice-6", - slug: "dice-6-solid", - category_id: 119, - type_of_icon: "SOLID", - term: ["game", "random"] - }, - { - name: "webcam", - slug: "webcam-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "webcam", - slug: "webcam-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "spray-can", - slug: "spray-can-regular", - category_id: 102, - type_of_icon: "REGULAR", - term: ["color", "colour", "paint spray"] - }, - { - name: "spray-can", - slug: "spray-can-solid", - category_id: 102, - type_of_icon: "SOLID", - term: ["color", "colour", "paint spray"] - }, - { - name: "file-archive", - slug: "file-archive-solid", - category_id: 106, - type_of_icon: "SOLID" - }, - { - name: "sticker", - slug: "sticker-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "sticker", - slug: "sticker-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "tachometer", - slug: "tachometer-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "tachometer", - slug: "tachometer-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "thermometer", - slug: "thermometer-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "game", - slug: "game-regular", - category_id: 119, - type_of_icon: "REGULAR", - term: ["pacman"] - }, - { - name: "game", - slug: "game-solid", - category_id: 119, - type_of_icon: "SOLID", - term: ["pacman"] - }, - { - name: "abacus", - slug: "abacus-regular", - category_id: 119, - type_of_icon: "REGULAR" - }, - { - name: "alarm-snooze", - slug: "alarm-snooze-regular", - category_id: 120, - type_of_icon: "REGULAR", - term: ["alert", "zzz", "sleep"] - }, - { - name: "alarm-snooze", - slug: "alarm-snooze-solid", - category_id: 120, - type_of_icon: "SOLID", - term: ["alert", "zzz", "sleep"] - }, - { - name: "alarm-exclamation", - slug: "alarm-exclamation-regular", - category_id: 120, - type_of_icon: "REGULAR", - term: ["alert", "error"] - }, - { - name: "alarm-exclamation", - slug: "alarm-exclamation-solid", - category_id: 120, - type_of_icon: "SOLID", - term: ["alert", "error"] - }, - { - name: "chevrons-left", - slug: "chevrons-left-solid", - category_id: 96, - type_of_icon: "SOLID", - term: ["arrow"] - }, - { - name: "chevrons-right", - slug: "chevrons-right-solid", - category_id: 96, - type_of_icon: "SOLID", - term: ["arrow"] - }, - { - name: "chevrons-up", - slug: "chevrons-up-solid", - category_id: 96, - type_of_icon: "SOLID", - term: ["arrow"] - }, - { - name: "chevrons-down", - slug: "chevrons-down-solid", - category_id: 96, - type_of_icon: "SOLID", - term: ["arrow"] - }, - { - name: "chevron-down", - slug: "chevron-down-solid", - category_id: 96, - type_of_icon: "SOLID", - term: ["arrow"] - }, - { - name: "chevron-up", - slug: "chevron-up-solid", - category_id: 96, - type_of_icon: "SOLID", - term: ["arrow"] - }, - { - name: "chevron-right", - slug: "chevron-right-solid", - category_id: 96, - type_of_icon: "SOLID", - term: ["arrow"] - }, - { - name: "chevron-left", - slug: "chevron-left-solid", - category_id: 96, - type_of_icon: "SOLID", - term: ["arrow"] - }, - { - name: "guitar-amp", - slug: "guitar-amp-solid", - category_id: 114, - type_of_icon: "SOLID" - }, - { - name: "up-arrow-alt", - slug: "up-arrow-alt-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "down-arrow-alt", - slug: "down-arrow-alt-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "left-arrow-alt", - slug: "left-arrow-alt-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "right-arrow-alt", - slug: "right-arrow-alt-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "medal", - slug: "medal-regular", - category_id: 119, - type_of_icon: "REGULAR", - term: ["honor", "honour", "achievement"] - }, - { - name: "medal", - slug: "medal-solid", - category_id: 119, - type_of_icon: "SOLID", - term: ["honor", "honour", "achievement"] - }, - { - name: "shopping-bags", - slug: "shopping-bags-solid", - category_id: 104, - type_of_icon: "SOLID" - }, - { - name: "baseball", - slug: "baseball-solid", - category_id: 119, - type_of_icon: "SOLID" - }, - { - name: "task-x", - slug: "task-x-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "basketball", - slug: "basketball-solid", - category_id: 119, - type_of_icon: "SOLID", - term: ["nba"] - }, - { - name: "barcode-reader", - slug: "barcode-reader-regular", - category_id: 103, - type_of_icon: "REGULAR" - }, - { - name: "blanket", - slug: "blanket-regular", - category_id: 109, - type_of_icon: "REGULAR" - }, - { - name: "blanket", - slug: "blanket-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "binoculars", - slug: "binoculars-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "bone", - slug: "bone-regular", - category_id: 109, - type_of_icon: "REGULAR" - }, - { - name: "bone", - slug: "bone-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "bong", - slug: "bong-regular", - category_id: 109, - type_of_icon: "REGULAR" - }, - { - name: "bong", - slug: "bong-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "book-alt", - slug: "book-alt-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "book-alt", - slug: "book-alt-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "book-heart", - slug: "book-heart-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "book-heart", - slug: "book-heart-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "book-add", - slug: "book-add-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "book-add", - slug: "book-add-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "bracket", - slug: "bracket-regular", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "brain", - slug: "brain-regular", - category_id: 109, - type_of_icon: "REGULAR" - }, - { - name: "brain", - slug: "brain-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "border-outer", - slug: "border-outer-regular", - category_id: 111, - type_of_icon: "REGULAR" - }, - { - name: "braille", - slug: "braille-regular", - category_id: 94, - type_of_icon: "REGULAR" - }, - { - name: "window-alt", - slug: "window-alt-regular", - category_id: 110, - type_of_icon: "REGULAR", - term: ["browser"] - }, - { - name: "window-alt", - slug: "window-alt-solid", - category_id: 110, - type_of_icon: "SOLID", - term: ["browser"] - }, - { - name: "calendar-heart", - slug: "calendar-heart-regular", - category_id: 120, - type_of_icon: "REGULAR" - }, - { - name: "calendar-heart", - slug: "calendar-heart-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "wine", - slug: "wine-regular", - category_id: 108, - type_of_icon: "REGULAR" - }, - { - name: "vial", - slug: "vial-regular", - category_id: 109, - type_of_icon: "REGULAR" - }, - { - name: "color-fill", - slug: "color-fill-regular", - category_id: 102, - type_of_icon: "REGULAR" - }, - { - name: "capsule", - slug: "capsule-regular", - category_id: 109, - type_of_icon: "REGULAR", - term: ["medicine"] - }, - { - name: "eraser", - slug: "eraser-regular", - category_id: 102, - type_of_icon: "REGULAR", - term: ["rubber"] - }, - { - name: "drink", - slug: "drink-regular", - category_id: 108, - type_of_icon: "REGULAR" - }, - { - name: "cctv", - slug: "cctv-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "cctv", - slug: "cctv-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "chair", - slug: "chair-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "network-chart", - slug: "network-chart-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "network-chart", - slug: "network-chart-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "vector", - slug: "vector-regular", - category_id: 102, - type_of_icon: "REGULAR" - }, - { - name: "vector", - slug: "vector-solid", - category_id: 102, - type_of_icon: "SOLID" - }, - { - name: "calendar-exclamation", - slug: "calendar-exclamation-regular", - category_id: 120, - type_of_icon: "REGULAR" - }, - { - name: "calendar-exclamation", - slug: "calendar-exclamation-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "calendar-star", - slug: "calendar-star-regular", - category_id: 120, - type_of_icon: "REGULAR" - }, - { - name: "calendar-star", - slug: "calendar-star-solid", - category_id: 120, - type_of_icon: "SOLID" - }, - { - name: "camera-home", - slug: "camera-home-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "camera-home", - slug: "camera-home-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "camera-movie", - slug: "camera-movie-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "camera-movie", - slug: "camera-movie-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "backpack", - slug: "backpack-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "cart-download", - slug: "cart-download-solid", - category_id: 104, - type_of_icon: "SOLID" - }, - { - name: "cart-add", - slug: "cart-add-solid", - category_id: 104, - type_of_icon: "SOLID" - }, - { - name: "car-battery", - slug: "car-battery-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "caret-right-circle", - slug: "caret-right-circle-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "caret-left-circle", - slug: "caret-left-circle-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "caret-up-circle", - slug: "caret-up-circle-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "caret-down-circle", - slug: "caret-down-circle-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "caret-right-square", - slug: "caret-right-square-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "caret-right-square", - slug: "caret-right-square-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "caret-up-square", - slug: "caret-up-square-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "caret-up-square", - slug: "caret-up-square-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "caret-left-square", - slug: "caret-left-square-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "caret-left-square", - slug: "caret-left-square-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "caret-down-square", - slug: "caret-down-square-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "caret-down-square", - slug: "caret-down-square-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "shield-x", - slug: "shield-x-regular", - category_id: 100, - type_of_icon: "REGULAR" - }, - { - name: "shield-x", - slug: "shield-x-solid", - category_id: 100, - type_of_icon: "SOLID" - }, - { - name: "line-chart-down", - slug: "line-chart-down-regular", - category_id: 99, - type_of_icon: "REGULAR" - }, - { - name: "chevron-down-circle", - slug: "chevron-down-circle-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "chevron-down-circle", - slug: "chevron-down-circle-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "chevron-up-circle", - slug: "chevron-up-circle-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "chevron-up-circle", - slug: "chevron-up-circle-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "chevron-left-circle", - slug: "chevron-left-circle-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "chevron-left-circle", - slug: "chevron-left-circle-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "chevron-right-circle", - slug: "chevron-right-circle-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "chevron-right-circle", - slug: "chevron-right-circle-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "chevron-down-square", - slug: "chevron-down-square-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "chevron-down-square", - slug: "chevron-down-square-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "chevron-up-square", - slug: "chevron-up-square-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "chevron-up-square", - slug: "chevron-up-square-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "chevron-left-square", - slug: "chevron-left-square-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "chevron-left-square", - slug: "chevron-left-square-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "chevron-right-square", - slug: "chevron-right-square-regular", - category_id: 96, - type_of_icon: "REGULAR" - }, - { - name: "chevron-right-square", - slug: "chevron-right-square-solid", - category_id: 96, - type_of_icon: "SOLID" - }, - { - name: "church", - slug: "church-regular", - category_id: 98, - type_of_icon: "REGULAR" - }, - { - name: "church", - slug: "church-solid", - category_id: 98, - type_of_icon: "SOLID" - }, - { - name: "coin", - slug: "coin-regular", - category_id: 107, - type_of_icon: "REGULAR" - }, - { - name: "coin", - slug: "coin-solid", - category_id: 107, - type_of_icon: "SOLID" - }, - { - name: "coin-stack", - slug: "coin-stack-regular", - category_id: 107, - type_of_icon: "REGULAR" - }, - { - name: "coin-stack", - slug: "coin-stack-solid", - category_id: 107, - type_of_icon: "SOLID" - }, - { - name: "unite", - slug: "unite-regular", - category_id: 102, - type_of_icon: "REGULAR" - }, - { - name: "minus-front", - slug: "minus-front-regular", - category_id: 102, - type_of_icon: "REGULAR" - }, - { - name: "intersect", - slug: "intersect-regular", - category_id: 102, - type_of_icon: "REGULAR" - }, - { - name: "exclude", - slug: "exclude-regular", - category_id: 102, - type_of_icon: "REGULAR" - }, - { - name: "minus-back", - slug: "minus-back-regular", - category_id: 102, - type_of_icon: "REGULAR" - }, - { - name: "merge", - slug: "merge-regular", - category_id: 102, - type_of_icon: "REGULAR" - }, - { - name: "trim", - slug: "trim-regular", - category_id: 102, - type_of_icon: "REGULAR" - }, - { - name: "outline", - slug: "outline-regular", - category_id: 102, - type_of_icon: "REGULAR" - }, - { - name: "bullseye", - slug: "bullseye-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "meteor", - slug: "meteor-regular", - category_id: 116, - type_of_icon: "REGULAR" - }, - { - name: "meteor", - slug: "meteor-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "refresh", - slug: "refresh-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "home-smile", - slug: "home-smile-regular", - category_id: 98, - type_of_icon: "REGULAR" - }, - { - name: "home-smile", - slug: "home-smile-solid", - category_id: 98, - type_of_icon: "SOLID" - }, - { - name: "envelope-open", - slug: "envelope-open-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "envelope-open", - slug: "envelope-open-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "dev-to", - slug: "dev-to-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "message-alt-add", - slug: "message-alt-add-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["chat", "comment", "new", "plus"] - }, - { - name: "message-alt-add", - slug: "message-alt-add-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["chat", "comment", "new", "plus"] - }, - { - name: "message-alt-check", - slug: "message-alt-check-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message-alt-check", - slug: "message-alt-check-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "message-alt-error", - slug: "message-alt-error-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message-alt-error", - slug: "message-alt-error-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "message-alt-x", - slug: "message-alt-x-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["chat", "comment", "remove", "delete"] - }, - { - name: "message-alt-x", - slug: "message-alt-x-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["chat", "comment", "remove", "delete"] - }, - { - name: "message-alt-minus", - slug: "message-alt-minus-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["chat", "comment", "remove", "delete"] - }, - { - name: "message-alt-minus", - slug: "message-alt-minus-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["chat", "comment", "remove", "delete"] - }, - { - name: "message-alt-edit", - slug: "message-alt-edit-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message-alt-edit", - slug: "message-alt-edit-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "message-alt-detail", - slug: "message-alt-detail-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message-alt-detail", - slug: "message-alt-detail-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "message-rounded-check", - slug: "message-rounded-check-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message-rounded-check", - slug: "message-rounded-check-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "message-rounded-error", - slug: "message-rounded-error-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message-rounded-error", - slug: "message-rounded-error-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "message-rounded-x", - slug: "message-rounded-x-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["chat", "comment", "remove", "delete"] - }, - { - name: "message-rounded-x", - slug: "message-rounded-x-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["chat", "comment", "remove", "delete"] - }, - { - name: "message-rounded-minus", - slug: "message-rounded-minus-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["chat", "comment", "remove", "delete"] - }, - { - name: "message-rounded-minus", - slug: "message-rounded-minus-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["chat", "comment", "remove", "delete"] - }, - { - name: "message-rounded-edit", - slug: "message-rounded-edit-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message-rounded-edit", - slug: "message-rounded-edit-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "message-rounded-add", - slug: "message-rounded-add-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["chat", "comment", "new", "plus"] - }, - { - name: "message-rounded-add", - slug: "message-rounded-add-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["chat", "comment", "new", "plus"] - }, - { - name: "message-rounded-detail", - slug: "message-rounded-detail-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message-rounded-detail", - slug: "message-rounded-detail-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "message-check", - slug: "message-check-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message-check", - slug: "message-check-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "message-error", - slug: "message-error-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message-error", - slug: "message-error-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "message-x", - slug: "message-x-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["chat", "comment", "remove", "delete"] - }, - { - name: "message-x", - slug: "message-x-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["chat", "comment", "remove", "delete"] - }, - { - name: "message-minus", - slug: "message-minus-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["chat", "comment", "remove", "delete"] - }, - { - name: "message-minus", - slug: "message-minus-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["chat", "comment", "remove", "delete"] - }, - { - name: "message-edit", - slug: "message-edit-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message-edit", - slug: "message-edit-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "message-add", - slug: "message-add-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["chat", "comment", "new", "plus"] - }, - { - name: "message-add", - slug: "message-add-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["chat", "comment", "new", "plus"] - }, - { - name: "message-detail", - slug: "message-detail-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message-detail", - slug: "message-detail-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "message-square-check", - slug: "message-square-check-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message-square-check", - slug: "message-square-check-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "message-square-error", - slug: "message-square-error-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message-square-error", - slug: "message-square-error-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "message-square-x", - slug: "message-square-x-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["chat", "comment", "remove", "delete"] - }, - { - name: "message-square-x", - slug: "message-square-x-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["chat", "comment", "remove", "delete"] - }, - { - name: "message-square-minus", - slug: "message-square-minus-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["chat", "comment", "remove", "delete"] - }, - { - name: "message-square-minus", - slug: "message-square-minus-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["chat", "comment", "remove", "delete"] - }, - { - name: "message-square-edit", - slug: "message-square-edit-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message-square-edit", - slug: "message-square-edit-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "message-square-add", - slug: "message-square-add-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["chat", "comment", "new", "plus"] - }, - { - name: "message-square-add", - slug: "message-square-add-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["chat", "comment", "new", "plus"] - }, - { - name: "message-square-detail", - slug: "message-square-detail-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "message-square-detail", - slug: "message-square-detail-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "comment-check", - slug: "comment-check-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "comment-check", - slug: "comment-check-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "comment-error", - slug: "comment-error-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "comment-x", - slug: "comment-x-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["chat", "message", "remove", "delete"] - }, - { - name: "comment-x", - slug: "comment-x-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["chat", "message", "remove", "delete"] - }, - { - name: "comment-edit", - slug: "comment-edit-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "comment-edit", - slug: "comment-edit-solid", - category_id: 101, - type_of_icon: "SOLID" - }, - { - name: "comment-minus", - slug: "comment-minus-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["chat", "message", "remove", "delete"] - }, - { - name: "comment-minus", - slug: "comment-minus-solid", - category_id: 101, - type_of_icon: "SOLID", - term: ["chat", "message", "remove", "delete"] - }, - { - name: "comment-add", - slug: "comment-add-regular", - category_id: 101, - type_of_icon: "REGULAR", - term: ["chat", "message", "new", "plus"] - }, - { - name: "comment-detail", - slug: "comment-detail-regular", - category_id: 101, - type_of_icon: "REGULAR" - }, - { - name: "cookie", - slug: "cookie-regular", - category_id: 108, - type_of_icon: "REGULAR", - term: ["biscuit"] - }, - { - name: "cookie", - slug: "cookie-solid", - category_id: 108, - type_of_icon: "SOLID", - term: ["biscuit"] - }, - { - name: "copyright", - slug: "copyright-solid", - category_id: 99, - type_of_icon: "SOLID" - }, - { - name: "credit-card-front", - slug: "credit-card-front-regular", - category_id: 107, - type_of_icon: "REGULAR", - term: ["finance", "money", "debit"] - }, - { - name: "credit-card-front", - slug: "credit-card-front-solid", - category_id: 107, - type_of_icon: "SOLID", - term: ["finance", "money", "debit"] - }, - { - name: "crop", - slug: "crop-solid", - category_id: 102, - type_of_icon: "SOLID" - }, - { - name: "diamond", - slug: "diamond-solid", - category_id: 116, - type_of_icon: "SOLID" - }, - { - name: "door-open", - slug: "door-open-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "door-open", - slug: "door-open-solid", - category_id: 121, - type_of_icon: "SOLID" - }, - { - name: "donate-heart", - slug: "donate-heart-regular", - category_id: 107, - type_of_icon: "REGULAR", - term: ["donation", "contribution"] - }, - { - name: "donate-heart", - slug: "donate-heart-solid", - category_id: 107, - type_of_icon: "SOLID", - term: ["donation", "contribution"] - }, - { - name: "donate-blood", - slug: "donate-blood-regular", - category_id: 109, - type_of_icon: "REGULAR" - }, - { - name: "donate-blood", - slug: "donate-blood-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "shape-polygon", - slug: "shape-polygon-regular", - category_id: 118, - type_of_icon: "REGULAR" - }, - { - name: "zoom", - slug: "zoom-logo", - category_id: 117, - type_of_icon: "LOGO" - }, - { - name: "microsoft-teams", - slug: "microsoft-teams-logo", - category_id: 99, - type_of_icon: "LOGO" - }, - { - name: "blender", - slug: "blender-logo", - category_id: 102, - type_of_icon: "LOGO" - }, - { - name: "kubernetes", - slug: "kubernetes-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "google-cloud", - slug: "google-cloud-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "django", - slug: "django-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "spring-boot", - slug: "spring-boot-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "tux", - slug: "tux-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "markdown", - slug: "markdown-logo", - category_id: 124, - type_of_icon: "LOGO" - }, - { - name: "python", - slug: "python-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "ok-ru", - slug: "ok-ru-logo", - category_id: 97, - type_of_icon: "LOGO" - }, - { - name: "firebase", - slug: "firebase-logo", - category_id: 100, - type_of_icon: "LOGO" - }, - { - name: "c-plus-plus", - slug: "c-plus-plus-logo", - category_id: 100, - type_of_icon: "LOGO", - term: ["c++"] - }, - { - name: "bookmark-heart", - slug: "bookmark-heart-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "bookmark-heart", - slug: "bookmark-heart-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "sort-alt-2", - slug: "sort-alt-2-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "category", - slug: "category-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "category", - slug: "category-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "category-alt", - slug: "category-alt-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "category-alt", - slug: "category-alt-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "bookmark-alt", - slug: "bookmark-alt-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "bookmark-alt", - slug: "bookmark-alt-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "bookmark-alt-plus", - slug: "bookmark-alt-plus-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "bookmark-alt-plus", - slug: "bookmark-alt-plus-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "bookmark-alt-minus", - slug: "bookmark-alt-minus-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "bookmark-alt-minus", - slug: "bookmark-alt-minus-solid", - category_id: 124, - type_of_icon: "SOLID" - }, - { - name: "face-mask", - slug: "face-mask-solid", - category_id: 109, - type_of_icon: "SOLID" - }, - { - name: "tv", - slug: "tv-solid", - category_id: 116, - type_of_icon: "SOLID", - term: ["television", "monitor"] - }, - { - name: "tag-alt", - slug: "tag-alt-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "tag-alt", - slug: "tag-alt-solid", - category_id: 110, - type_of_icon: "SOLID" - }, - { - name: "movie-play", - slug: "movie-play-regular", - category_id: 117, - type_of_icon: "REGULAR" - }, - { - name: "movie-play", - slug: "movie-play-solid", - category_id: 117, - type_of_icon: "SOLID" - }, - { - name: "user-account", - slug: "user-account-solid", - category_id: 122, - type_of_icon: "SOLID" - }, - { - name: "expand-alt", - slug: "expand-alt-regular", - category_id: 110, - type_of_icon: "REGULAR" - }, - { - name: "library", - slug: "library-regular", - category_id: 124, - type_of_icon: "REGULAR" - }, - { - name: "trip", - slug: "trip-regular", - category_id: 121, - type_of_icon: "REGULAR" - }, - { - name: "virus", - slug: "virus-solid", - category_id: 109, - type_of_icon: "SOLID", - term: ["disease", "covid", "corona"] - }, - { - name: "virus-block", - slug: "virus-block-solid", - category_id: 109, - type_of_icon: "SOLID" - } -]; - -function getIconClass(icon: Icon) { - if (icon.type_of_icon === "LOGO") { - return `bxl-${icon.name}`; - } else if (icon.type_of_icon === "SOLID") { - return `bxs-${icon.name}`; - } - return `bx-${icon.name}`; - -} - -for (const icon of icons) { - icon.className = getIconClass(icon); -} - -export default { - categories, - icons -}; diff --git a/apps/client/src/widgets/launch_bar/GenericButtons.tsx b/apps/client/src/widgets/launch_bar/GenericButtons.tsx index 9af775760..70fe0fcce 100644 --- a/apps/client/src/widgets/launch_bar/GenericButtons.tsx +++ b/apps/client/src/widgets/launch_bar/GenericButtons.tsx @@ -1,8 +1,9 @@ import { useCallback } from "preact/hooks"; + import appContext from "../../components/app_context"; import FNote from "../../entities/fnote"; import link_context_menu from "../../menus/link_context_menu"; -import { escapeHtml, isCtrlKey } from "../../services/utils"; +import { isCtrlKey } from "../../services/utils"; import { useGlobalShortcut, useNoteLabel } from "../react/hooks"; import { LaunchBarActionButton, useLauncherIconAndTitle } from "./launch_bar_widgets"; @@ -26,10 +27,10 @@ export function CustomNoteLauncher({ launcherNote, getTargetNoteId, getHoistedNo const ctrlKey = isCtrlKey(evt); if ((evt.which === 1 && ctrlKey) || evt.which === 2) { - const activate = evt.shiftKey ? true : false; + const activate = !!evt.shiftKey; await appContext.tabManager.openInNewTab(targetNoteId, hoistedNoteIdWithDefault, activate); } else { - await appContext.tabManager.openInSameTab(targetNoteId); + await appContext.tabManager.openInSameTab(targetNoteId, hoistedNoteIdWithDefault); } }, [ launcherNote, getTargetNoteId, getHoistedNoteId ]); @@ -40,7 +41,7 @@ export function CustomNoteLauncher({ launcherNote, getTargetNoteId, getHoistedNo return ( { @@ -51,5 +52,5 @@ export function CustomNoteLauncher({ launcherNote, getTargetNoteId, getHoistedNo } }} /> - ) + ); } diff --git a/apps/client/src/widgets/launch_bar/LauncherDefinitions.tsx b/apps/client/src/widgets/launch_bar/LauncherDefinitions.tsx index a0c379b22..5aa289257 100644 --- a/apps/client/src/widgets/launch_bar/LauncherDefinitions.tsx +++ b/apps/client/src/widgets/launch_bar/LauncherDefinitions.tsx @@ -1,17 +1,20 @@ import { useCallback, useContext, useEffect, useMemo, useState } from "preact/hooks"; + +import appContext, { CommandNames } from "../../components/app_context"; +import FNote from "../../entities/fnote"; +import date_notes from "../../services/date_notes"; +import dialog from "../../services/dialog"; +import { LauncherWidgetDefinitionWithType } from "../../services/frontend_script_api_preact"; +import { t } from "../../services/i18n"; +import toast from "../../services/toast"; +import { getErrorMessage, isMobile } from "../../services/utils"; +import BasicWidget from "../basic_widget"; +import NoteContextAwareWidget from "../note_context_aware_widget"; +import QuickSearchWidget from "../quick_search"; import { useGlobalShortcut, useLegacyWidget, useNoteLabel, useNoteRelationTarget, useTriliumOptionBool } from "../react/hooks"; import { ParentComponent } from "../react/react_utils"; -import BasicWidget from "../basic_widget"; -import FNote from "../../entities/fnote"; -import QuickSearchWidget from "../quick_search"; -import { getErrorMessage, isMobile } from "../../services/utils"; -import date_notes from "../../services/date_notes"; import { CustomNoteLauncher } from "./GenericButtons"; import { LaunchBarActionButton, LaunchBarContext, LauncherNoteProps, useLauncherIconAndTitle } from "./launch_bar_widgets"; -import dialog from "../../services/dialog"; -import { t } from "../../services/i18n"; -import appContext, { CommandNames } from "../../components/app_context"; -import toast from "../../services/toast"; export function CommandButton({ launcherNote }: LauncherNoteProps) { const { icon, title } = useLauncherIconAndTitle(launcherNote); @@ -23,7 +26,7 @@ export function CommandButton({ launcherNote }: LauncherNoteProps) { text={title} triggerCommand={command as CommandNames} /> - ) + ); } // we're intentionally displaying the launcher title and icon instead of the target, @@ -75,7 +78,7 @@ export function ScriptLauncher({ launcherNote }: LauncherNoteProps) { text={title} onClick={launch} /> - ) + ); } export function AiChatButton({ launcherNote }: LauncherNoteProps) { @@ -88,7 +91,7 @@ export function AiChatButton({ launcherNote }: LauncherNoteProps) { text={title} triggerCommand="createAiChat" /> - ) + ); } export function TodayLauncher({ launcherNote }: LauncherNoteProps) { @@ -114,12 +117,13 @@ export function QuickSearchLauncherWidget() {
{isEnabled && }
- ) + ); } export function CustomWidget({ launcherNote }: LauncherNoteProps) { const [ widgetNote ] = useNoteRelationTarget(launcherNote, "widget"); - const [ widget, setWidget ] = useState(); + const [ widget, setWidget ] = useState(); + const parentComponent = useContext(ParentComponent) as BasicWidget | null; parentComponent?.contentSized(); @@ -146,9 +150,13 @@ export function CustomWidget({ launcherNote }: LauncherNoteProps) { return (
- {widget && } + {widget && ( + ("type" in widget && widget.type === "preact-launcher-widget") + ? + : + )}
- ) + ); } export function LegacyWidgetRenderer({ widget }: { widget: BasicWidget }) { @@ -158,3 +166,8 @@ export function LegacyWidgetRenderer({ widget }: { widget: BasicWidget }) { return widgetEl; } + +function ReactWidgetRenderer({ widget }: { widget: LauncherWidgetDefinitionWithType }) { + const El = widget.render; + return ; +} diff --git a/apps/client/src/widgets/launch_bar/launch_bar_widgets.tsx b/apps/client/src/widgets/launch_bar/launch_bar_widgets.tsx index e3f219c93..0cb7c9906 100644 --- a/apps/client/src/widgets/launch_bar/launch_bar_widgets.tsx +++ b/apps/client/src/widgets/launch_bar/launch_bar_widgets.tsx @@ -1,17 +1,17 @@ import { createContext } from "preact"; +import { useContext } from "preact/hooks"; + import FNote from "../../entities/fnote"; -import { escapeHtml } from "../../services/utils"; import ActionButton, { ActionButtonProps } from "../react/ActionButton"; import Dropdown, { DropdownProps } from "../react/Dropdown"; import { useNoteLabel, useNoteProperty } from "../react/hooks"; import Icon from "../react/Icon"; -import { useContext } from "preact/hooks"; export const LaunchBarContext = createContext<{ isHorizontalLayout: boolean; }>({ isHorizontalLayout: false -}) +}); export interface LauncherNoteProps { /** The corresponding {@link FNote} of type {@code launcher} in the hidden subtree of this launcher. Generally this launcher note holds information about the launcher via labels and relations, but also the title and the icon of the launcher. Not to be confused with the target note, which is specific to some launchers. */ @@ -28,7 +28,7 @@ export function LaunchBarActionButton(props: Omit - ) + ); } export function LaunchBarDropdownButton({ children, icon, dropdownOptions, ...props }: Pick & { icon: string }) { @@ -50,7 +50,7 @@ export function LaunchBarDropdownButton({ children, icon, dropdownOptions, ...pr }} {...props} >{children} - ) + ); } export function useLauncherIconAndTitle(note: FNote) { @@ -62,6 +62,6 @@ export function useLauncherIconAndTitle(note: FNote) { return { icon: note.getIcon(), - title: escapeHtml(title ?? "") + title: title ?? "" }; } diff --git a/apps/client/src/widgets/layout/Breadcrumb.css b/apps/client/src/widgets/layout/Breadcrumb.css index 572392757..18f88ac0c 100644 --- a/apps/client/src/widgets/layout/Breadcrumb.css +++ b/apps/client/src/widgets/layout/Breadcrumb.css @@ -35,7 +35,7 @@ align-items: center; min-width: 0; - .bx { + .tn-icon { margin-inline: 6px; } @@ -55,9 +55,9 @@ .icon-action { font-size: .9rem !important; - .bxs-chevron-right { + &.breadcrumb-separator { transform: translateY(8%); - + &::before { opacity: .75; } @@ -87,12 +87,10 @@ color: var(--custom-color, inherit) !important; } - .dropdown .breadcrumb-child-list { + .dropdown.breadcrumb-child-list { /* Icon */ li > span:first-child { opacity: .75; - padding-inline-end: 4px; - translate: none; }; } diff --git a/apps/client/src/widgets/layout/Breadcrumb.tsx b/apps/client/src/widgets/layout/Breadcrumb.tsx index bc1494d3d..8c393f9da 100644 --- a/apps/client/src/widgets/layout/Breadcrumb.tsx +++ b/apps/client/src/widgets/layout/Breadcrumb.tsx @@ -25,17 +25,17 @@ import ActionButton from "../react/ActionButton"; import { Badge } from "../react/Badge"; import Dropdown from "../react/Dropdown"; import { FormDropdownDivider, FormListItem } from "../react/FormList"; -import { useActiveNoteContext, useChildNotes, useNote, useNoteColorClass, useNoteIcon, useNoteLabel, useNoteLabelBoolean, useNoteProperty, useStaticTooltip, useTriliumOptionBool } from "../react/hooks"; +import { useActiveNoteContext, useChildNotes, useNote, useNoteColorClass, useNoteIcon, useNoteLabel, useNoteLabelBoolean, useNoteTitle, useStaticTooltip, useTriliumOptionBool } from "../react/hooks"; import Icon from "../react/Icon"; import { NewNoteLink } from "../react/NoteLink"; import { ParentComponent } from "../react/react_utils"; const COLLAPSE_THRESHOLD = 5; const INITIAL_ITEMS = 2; -const FINAL_ITEMS = 2; +const FINAL_ITEMS = 3; export default function Breadcrumb() { - const { note, notePath, notePaths, noteContext } = useNotePaths(); + const { notePath, notePaths, noteContext } = useNotePaths(); const parentComponent = useContext(ParentComponent); const [ hideArchivedNotes ] = useTriliumOptionBool("hideArchivedNotes_main"); const separatorProps: Omit = { noteContext, hideArchivedNotes }; @@ -57,6 +57,7 @@ export default function Breadcrumb() { ))} + ) : ( notePaths.map((item, index) => ( @@ -65,8 +66,7 @@ export default function Breadcrumb() { ? : } - {(index < notePaths.length - 1 || note?.hasChildren()) && - } + )) )} @@ -134,9 +134,9 @@ function BreadcrumbHoistedNoteRoot({ noteId }: { noteId: string }) { function BreadcrumbLastItem({ notePath, parentComponent }: { notePath: string, parentComponent: Component | null }) { const linkRef = useRef(null); - const noteId = notePath.split("/").at(-1); + const { noteId, parentNoteId } = tree.getNoteIdAndParentIdFromUrl(notePath); const [ note ] = useState(() => froca.getNoteFromCache(noteId!)); - const title = useNoteProperty(note, "title"); + const title = useNoteTitle(noteId, parentNoteId); const colorClass = useNoteColorClass(note); const [ archived ] = useNoteLabelBoolean(note, "archived"); useStaticTooltip(linkRef, { @@ -180,8 +180,8 @@ function BreadcrumbItem({ index, notePath, noteContext, notePathLength, parentCo } interface BreadcrumbSeparatorProps { - notePath: string, - activeNotePath: string, + notePath: string | undefined, + activeNotePath?: string, noteContext: NoteContext | undefined, hideArchivedNotes: boolean; } @@ -191,9 +191,9 @@ function BreadcrumbSeparator(props: BreadcrumbSeparatorProps) { } noSelectButtonStyle - buttonClassName="icon-action" + buttonClassName="icon-action breadcrumb-separator" hideToggleArrow - dropdownContainerClassName="tn-dropdown-menu-scrollable" + dropdownContainerClassName="tn-dropdown-menu-scrollable breadcrumb-child-list" dropdownOptions={{ popperConfig: { strategy: "fixed", placement: "top" } }} > @@ -202,12 +202,12 @@ function BreadcrumbSeparator(props: BreadcrumbSeparatorProps) { } function BreadcrumbSeparatorDropdownContent({ notePath, noteContext, activeNotePath, hideArchivedNotes }: BreadcrumbSeparatorProps) { - const notePathComponents = notePath.split("/"); + const notePathComponents = (notePath ?? "").split("/"); const parentNoteId = notePathComponents.at(-1); const childNotes = useChildNotes(parentNoteId); return ( -
    + <> {childNotes.map((note) => { if (note.noteId === "_hidden") return; if (hideArchivedNotes && note.isArchived) return null; @@ -226,12 +226,12 @@ function BreadcrumbSeparatorDropdownContent({ notePath, noteContext, activeNoteP ; })} - + {childNotes.length > 0 && } note_create.createNote(notePath, { activate: true })} >{t("breadcrumb.create_new_note")} -
+ ); } @@ -244,26 +244,25 @@ function BreadcrumbCollapsed({ items, noteContext }: { text={} noSelectButtonStyle buttonClassName="icon-action" + dropdownContainerClassName="breadcrumb-child-list" hideToggleArrow dropdownOptions={{ popperConfig: { strategy: "fixed" } }} > -
    - {items.map((notePath) => { - const notePathComponents = notePath.split("/"); - const noteId = notePathComponents[notePathComponents.length - 1]; - const note = froca.getNoteFromCache(noteId); - if (!note) return null; + {items.map((notePath) => { + const notePathComponents = notePath.split("/"); + const noteId = notePathComponents[notePathComponents.length - 1]; + const note = froca.getNoteFromCache(noteId); + if (!note) return null; - return
  • - noteContext?.setNote(notePath)} - > - {note.title} - -
  • ; - })} -
+ return
  • + noteContext?.setNote(notePath)} + > + {note.title} + +
  • ; + })}
    ); } diff --git a/apps/client/src/widgets/layout/InlineTitle.css b/apps/client/src/widgets/layout/InlineTitle.css index 613c845e3..33ececc47 100644 --- a/apps/client/src/widgets/layout/InlineTitle.css +++ b/apps/client/src/widgets/layout/InlineTitle.css @@ -9,7 +9,7 @@ .inline-title { max-width: var(--max-content-width); container-type: inline-size; - padding-inline-start: 24px; + padding-top: 20px; & > .inline-title-row { --icon-size: 35px; @@ -75,10 +75,6 @@ } } -.note-split.type-code:not(.mime-text-x-sqlite) .inline-title { - background-color: var(--main-background-color); -} - body.prefers-centered-content .inline-title { margin-inline: auto; } @@ -99,58 +95,3 @@ body.prefers-centered-content .inline-title { font-weight: 500; } } - -@keyframes note-type-switcher-intro { - from { - opacity: 0; - } to { - opacity: 1; - } -} - -.note-type-switcher { - --badge-radius: 12px; - - position: relative; - top: 5px; - padding: .25em 0; - display: flex; - align-items: center; - overflow-x: auto; - min-width: 0; - gap: 5px; - min-height: 35px; - - >* { - flex-shrink: 0; - animation: note-type-switcher-intro 200ms ease-in; - } - - .ext-badge { - --color: var(--input-background-color); - color: var(--main-text-color); - font-size: 0.9rem; - flex-shrink: 0; - } -} - -.edited-notes { - padding: 1.5em 0; - - .collapsible-inner-body { - display: flex; - flex-wrap: wrap; - gap: 0.3em; - - .badge { - margin: 0; - a.tn-link { - color: inherit; - text-transform: none; - text-decoration: none; - display: inline-block; - } - } - } - -} diff --git a/apps/client/src/widgets/layout/InlineTitle.tsx b/apps/client/src/widgets/layout/InlineTitle.tsx index bb043cca2..ce44681e6 100644 --- a/apps/client/src/widgets/layout/InlineTitle.tsx +++ b/apps/client/src/widgets/layout/InlineTitle.tsx @@ -1,30 +1,19 @@ import "./InlineTitle.css"; import { NoteType } from "@triliumnext/commons"; +import { Tooltip } from "bootstrap"; import clsx from "clsx"; import { ComponentChild } from "preact"; -import { useEffect, useLayoutEffect, useMemo, useRef, useState } from "preact/hooks"; +import { useLayoutEffect, useMemo, useRef, useState } from "preact/hooks"; import { Trans } from "react-i18next"; -import FNote from "../../entities/fnote"; -import attributes from "../../services/attributes"; -import froca from "../../services/froca"; -import { t } from "../../services/i18n"; import { ViewScope } from "../../services/link"; -import { NOTE_TYPES, NoteTypeMapping } from "../../services/note_types"; -import server from "../../services/server"; import { formatDateTime } from "../../utils/formatters"; import NoteIcon from "../note_icon"; import NoteTitleWidget from "../note_title"; -import SimpleBadge, { Badge, BadgeWithDropdown } from "../react/Badge"; -import Collapsible from "../react/Collapsible"; -import { FormDropdownDivider, FormListItem } from "../react/FormList"; -import { useNoteBlob, useNoteContext, useNoteLabel, useNoteProperty, useStaticTooltip, useTriliumEvent, useTriliumOptionBool } from "../react/hooks"; -import NoteLink from "../react/NoteLink"; +import { useNoteContext, useNoteProperty, useStaticTooltip } from "../react/hooks"; import { joinElements } from "../react/react_utils"; -import { useEditedNotes } from "../ribbon/EditedNotesTab"; import { useNoteMetadata } from "../ribbon/NoteInfoTab"; -import { onWheelHorizontalScroll } from "../widget_utils"; const supportedNoteTypes = new Set([ "text", "code" @@ -76,9 +65,6 @@ export default function InlineTitle() {
    - - - ); } @@ -123,11 +109,13 @@ function TextWithValue({ i18nKey, value, valueTooltip }: { valueTooltip: string; }) { const listItemRef = useRef(null); - useStaticTooltip(listItemRef, { + const tooltipConfig: Partial = useMemo(() => ({ selector: "span.value", title: valueTooltip, - popperConfig: { placement: "bottom" } - }); + popperConfig: { placement: "bottom" }, + animation: false + }), [ valueTooltip ]); + useStaticTooltip(listItemRef, tooltipConfig); return (
  • @@ -142,205 +130,4 @@ function TextWithValue({ i18nKey, value, valueTooltip }: { } //#endregion -//#region Note type switcher -const SWITCHER_PINNED_NOTE_TYPES = new Set([ "text", "code", "book", "canvas" ]); -function NoteTypeSwitcher() { - const { note } = useNoteContext(); - const blob = useNoteBlob(note); - const currentNoteType = useNoteProperty(note, "type"); - const { pinnedNoteTypes, restNoteTypes } = useMemo(() => { - const pinnedNoteTypes: NoteTypeMapping[] = []; - const restNoteTypes: NoteTypeMapping[] = []; - for (const noteType of NOTE_TYPES) { - if (noteType.reserved || noteType.static || noteType.type === "book") continue; - if (SWITCHER_PINNED_NOTE_TYPES.has(noteType.type)) { - pinnedNoteTypes.push(noteType); - } else { - restNoteTypes.push(noteType); - } - } - return { pinnedNoteTypes, restNoteTypes }; - }, []); - const currentNoteTypeData = useMemo(() => NOTE_TYPES.find(t => t.type === currentNoteType), [ currentNoteType ]); - const { builtinTemplates, collectionTemplates } = useBuiltinTemplates(); - - return (currentNoteType && supportedNoteTypes.has(currentNoteType) && -
    - {note && blob?.contentLength === 0 && ( - <> -
    {t("note_title.note_type_switcher_label", { type: currentNoteTypeData?.title.toLocaleLowerCase() })}
    - {pinnedNoteTypes.map(noteType => noteType.type !== currentNoteType && ( - switchNoteType(note.noteId, noteType)} - /> - ))} - {collectionTemplates.length > 0 && } - {builtinTemplates.length > 0 && } - {restNoteTypes.length > 0 && } - - )} -
    - ); -} - -function MoreNoteTypes({ noteId, restNoteTypes }: { noteId: string, restNoteTypes: NoteTypeMapping[] }) { - return ( - - {restNoteTypes.map(noteType => ( - switchNoteType(noteId, noteType)} - >{noteType.title} - ))} - - ); -} - -function CollectionNoteTypes({ noteId, collectionTemplates }: { noteId: string, collectionTemplates: FNote[] }) { - return ( - - {collectionTemplates.map(collectionTemplate => ( - setTemplate(noteId, collectionTemplate.noteId)} - >{collectionTemplate.title} - ))} - - ); -} - -function TemplateNoteTypes({ noteId, builtinTemplates }: { noteId: string, builtinTemplates: FNote[] }) { - const [ userTemplates, setUserTemplates ] = useState([]); - - async function refreshTemplates() { - const templateNoteIds = await server.get("search-templates"); - const templateNotes = await froca.getNotes(templateNoteIds); - setUserTemplates(templateNotes); - } - - // First load. - useEffect(() => { - refreshTemplates(); - }, []); - - // React to external changes. - useTriliumEvent("entitiesReloaded", ({ loadResults }) => { - if (loadResults.getAttributeRows().some(attr => attr.type === "label" && attr.name === "template")) { - refreshTemplates(); - } - }); - - return ( - - {userTemplates.map(template => )} - {userTemplates.length > 0 && } - {builtinTemplates.map(template => )} - - ); -} - -function TemplateItem({ noteId, template }: { noteId: string, template: FNote }) { - return ( - setTemplate(noteId, template.noteId)} - >{template.title} - ); -} - -function switchNoteType(noteId: string, { type, mime }: NoteTypeMapping) { - return server.put(`notes/${noteId}/type`, { type, mime }); -} - -function setTemplate(noteId: string, templateId: string) { - return attributes.setRelation(noteId, "template", templateId); -} - -function useBuiltinTemplates() { - const [ templates, setTemplates ] = useState<{ - builtinTemplates: FNote[]; - collectionTemplates: FNote[]; - }>({ - builtinTemplates: [], - collectionTemplates: [] - }); - - async function loadBuiltinTemplates() { - const templatesRoot = await froca.getNote("_templates"); - if (!templatesRoot) return; - const childNotes = await templatesRoot.getChildNotes(); - const builtinTemplates: FNote[] = []; - const collectionTemplates: FNote[] = []; - for (const childNote of childNotes) { - if (!childNote.hasLabel("template")) continue; - if (childNote.hasLabel("collection")) { - collectionTemplates.push(childNote); - } else { - builtinTemplates.push(childNote); - } - } - setTemplates({ builtinTemplates, collectionTemplates }); - } - - useEffect(() => { - loadBuiltinTemplates(); - }, []); - - return templates; -} -//#endregion - -//#region Edited Notes -function EditedNotes() { - const { note } = useNoteContext(); - const [ dateNote ] = useNoteLabel(note, "dateNote"); - const [ editedNotesOpenInRibbon ] = useTriliumOptionBool("editedNotesOpenInRibbon"); - - return (note && dateNote && - - - - ); -} - -function EditedNotesContent({ note }: { note: FNote }) { - const editedNotes = useEditedNotes(note); - - return (editedNotes !== undefined && - (editedNotes.length > 0 ? editedNotes?.map(editedNote => ( - - )} - /> - )) : ( -
    {t("edited_notes.no_edited_notes_found")}
    - ))); -} -//#endregion diff --git a/apps/client/src/widgets/layout/NoteBadges.css b/apps/client/src/widgets/layout/NoteBadges.css index 39fafd90e..8de12b810 100644 --- a/apps/client/src/widgets/layout/NoteBadges.css +++ b/apps/client/src/widgets/layout/NoteBadges.css @@ -16,6 +16,13 @@ &.share-badge {--color: var(--badge-share-background-color);} &.clipped-note-badge {--color: var(--badge-clipped-note-background-color);} &.execute-badge {--color: var(--badge-execute-background-color);} + min-width: 0; + + .text { + overflow: hidden; + text-overflow: ellipsis; + min-width: 0; + } } .dropdown-badge { diff --git a/apps/client/src/widgets/layout/NoteTitleActions.css b/apps/client/src/widgets/layout/NoteTitleActions.css index 7d025ef87..b1aa37d89 100644 --- a/apps/client/src/widgets/layout/NoteTitleActions.css +++ b/apps/client/src/widgets/layout/NoteTitleActions.css @@ -4,8 +4,56 @@ body.experimental-feature-new-layout { } .title-actions { - &.visible:not(:empty) { - padding: 0.75em 15px; + --title-actions-padding-start: 12px; + --title-actions-padding-end: 8px; + + display: flex; + max-width: var(--max-content-width); + flex-direction: column; + gap: 0.5em; + padding-inline: var(--title-actions-padding-start) var(--title-actions-padding-end); + + body.prefers-centered-content .note-split:not(.full-content-width) & { + margin-inline: auto; + } + + &:not(:empty) { + padding-block: 0.75em; + } + + .edited-notes { + .collapsible-inner-body { + display: flex; + flex-wrap: wrap; + gap: 0.3em; + + .badge { + margin: 0; + color: inherit; + text-transform: none; + text-decoration: none; + display: inline-block; + transition: background-color 250ms ease-in, color 250ms ease-in; + + &:hover { + background-color: var(--link-hover-background); + color: var(--link-hover-color); + } + } + } + } + + .promoted-attributes-widget { + .promoted-attributes-container { + margin: 0; + padding: 0; + } + } + + > .collapsible, + > .note-type-switcher { + padding-inline-start: calc(24px - var(--title-actions-padding-start)); + padding-inline-end: calc(24px - var(--title-actions-padding-end)); } } } diff --git a/apps/client/src/widgets/layout/NoteTitleActions.tsx b/apps/client/src/widgets/layout/NoteTitleActions.tsx index 2e13c5f10..dd1ed2342 100644 --- a/apps/client/src/widgets/layout/NoteTitleActions.tsx +++ b/apps/client/src/widgets/layout/NoteTitleActions.tsx @@ -1,7 +1,7 @@ import "./NoteTitleActions.css"; import clsx from "clsx"; -import { useEffect, useRef, useState } from "preact/hooks"; +import { useEffect, useState } from "preact/hooks"; import NoteContext from "../../components/note_context"; import FNote from "../../entities/fnote"; @@ -9,29 +9,31 @@ import { t } from "../../services/i18n"; import CollectionProperties from "../note_bars/CollectionProperties"; import { checkFullHeight, getExtendedWidgetType } from "../NoteDetail"; import { PromotedAttributesContent, usePromotedAttributeData } from "../PromotedAttributes"; +import SimpleBadge from "../react/Badge"; import Collapsible, { ExternallyControlledCollapsible } from "../react/Collapsible"; -import { useNoteContext, useNoteProperty, useTriliumEvent } from "../react/hooks"; +import { useNoteContext, useNoteLabel, useNoteProperty, useTriliumEvent, useTriliumOptionBool } from "../react/hooks"; +import NoteLink, { NewNoteLink } from "../react/NoteLink"; +import { useEditedNotes } from "../ribbon/EditedNotesTab"; import SearchDefinitionTab from "../ribbon/SearchDefinitionTab"; +import NoteTypeSwitcher from "./NoteTypeSwitcher"; export default function NoteTitleActions() { const { note, ntxId, componentId, noteContext } = useNoteContext(); const isHiddenNote = note && note.noteId !== "_search" && note.noteId.startsWith("_"); const noteType = useNoteProperty(note, "type"); - const items = [ - note && , - note && noteType === "search" && , - note && !isHiddenNote && noteType === "book" && - ].filter(Boolean); - return ( -
    0 && "visible")}> - {items} +
    + + {noteType === "search" && } + {!isHiddenNote && note && noteType === "book" && } + +
    ); } -function SearchProperties({ note, ntxId }: { note: FNote, ntxId: string | null | undefined }) { +function SearchProperties({ note, ntxId }: { note: FNote | null | undefined, ntxId: string | null | undefined }) { return (note && )); } + +//#region Edited Notes +function EditedNotes() { + const { note } = useNoteContext(); + const [ dateNote ] = useNoteLabel(note, "dateNote"); + const [ editedNotesOpenInRibbon ] = useTriliumOptionBool("editedNotesOpenInRibbon"); + + return (note && dateNote && + + + + ); +} + +function EditedNotesContent({ note }: { note: FNote }) { + const editedNotes = useEditedNotes(note); + + return (editedNotes !== undefined && + (editedNotes.length > 0 ? editedNotes?.map(editedNote => ( + + )) : ( +
    {t("edited_notes.no_edited_notes_found")}
    + ))); +} +//#endregion diff --git a/apps/client/src/widgets/layout/NoteTypeSwitcher.css b/apps/client/src/widgets/layout/NoteTypeSwitcher.css new file mode 100644 index 000000000..574924d03 --- /dev/null +++ b/apps/client/src/widgets/layout/NoteTypeSwitcher.css @@ -0,0 +1,33 @@ +@keyframes note-type-switcher-intro { + from { + opacity: 0; + } to { + opacity: 1; + } +} + +.note-type-switcher { + --badge-radius: 12px; + + position: relative; + top: 5px; + padding: .25em 0; + display: flex; + align-items: center; + overflow-x: auto; + min-width: 0; + gap: 5px; + min-height: 35px; + + >* { + flex-shrink: 0; + animation: note-type-switcher-intro 200ms ease-in; + } + + .ext-badge { + --color: var(--input-background-color); + color: var(--main-text-color); + font-size: 0.9rem; + flex-shrink: 0; + } +} diff --git a/apps/client/src/widgets/layout/NoteTypeSwitcher.tsx b/apps/client/src/widgets/layout/NoteTypeSwitcher.tsx new file mode 100644 index 000000000..8ac68ae83 --- /dev/null +++ b/apps/client/src/widgets/layout/NoteTypeSwitcher.tsx @@ -0,0 +1,182 @@ +import "./NoteTypeSwitcher.css"; + +import { NoteType } from "@triliumnext/commons"; +import { useEffect, useMemo, useState } from "preact/hooks"; + +import FNote from "../../entities/fnote"; +import attributes from "../../services/attributes"; +import froca from "../../services/froca"; +import { t } from "../../services/i18n"; +import { NOTE_TYPES, NoteTypeMapping } from "../../services/note_types"; +import server from "../../services/server"; +import { Badge, BadgeWithDropdown } from "../react/Badge"; +import { FormDropdownDivider, FormListItem } from "../react/FormList"; +import { useNoteContext, useNoteProperty, useNoteSavedData, useTriliumEvent } from "../react/hooks"; +import { onWheelHorizontalScroll } from "../widget_utils"; + +const SWITCHER_PINNED_NOTE_TYPES = new Set([ "text", "code", "book", "canvas" ]); +const supportedNoteTypes = new Set([ + "text", "code" +]); + +export default function NoteTypeSwitcher() { + const { note } = useNoteContext(); + const blob = useNoteSavedData(note?.noteId); + const currentNoteType = useNoteProperty(note, "type"); + const { pinnedNoteTypes, restNoteTypes } = useMemo(() => { + const pinnedNoteTypes: NoteTypeMapping[] = []; + const restNoteTypes: NoteTypeMapping[] = []; + for (const noteType of NOTE_TYPES) { + if (noteType.reserved || noteType.static || noteType.type === "book") continue; + if (SWITCHER_PINNED_NOTE_TYPES.has(noteType.type)) { + pinnedNoteTypes.push(noteType); + } else { + restNoteTypes.push(noteType); + } + } + return { pinnedNoteTypes, restNoteTypes }; + }, []); + const currentNoteTypeData = useMemo(() => NOTE_TYPES.find(t => t.type === currentNoteType), [ currentNoteType ]); + const { builtinTemplates, collectionTemplates } = useBuiltinTemplates(); + + return (currentNoteType && supportedNoteTypes.has(currentNoteType) && +
    + {note && blob?.length === 0 && ( + <> +
    {t("note_title.note_type_switcher_label", { type: currentNoteTypeData?.title.toLocaleLowerCase() })}
    + {pinnedNoteTypes.map(noteType => noteType.type !== currentNoteType && ( + switchNoteType(note.noteId, noteType)} + /> + ))} + {collectionTemplates.length > 0 && } + {builtinTemplates.length > 0 && } + {restNoteTypes.length > 0 && } + + )} +
    + ); +} + +function MoreNoteTypes({ noteId, restNoteTypes }: { noteId: string, restNoteTypes: NoteTypeMapping[] }) { + return ( + + {restNoteTypes.map(noteType => ( + switchNoteType(noteId, noteType)} + >{noteType.title} + ))} + + ); +} + +function CollectionNoteTypes({ noteId, collectionTemplates }: { noteId: string, collectionTemplates: FNote[] }) { + return ( + + {collectionTemplates.map(collectionTemplate => ( + setTemplate(noteId, collectionTemplate.noteId)} + >{collectionTemplate.title} + ))} + + ); +} + +function TemplateNoteTypes({ noteId, builtinTemplates }: { noteId: string, builtinTemplates: FNote[] }) { + const [ userTemplates, setUserTemplates ] = useState([]); + + async function refreshTemplates() { + const templateNoteIds = await server.get("search-templates"); + const templateNotes = await froca.getNotes(templateNoteIds); + setUserTemplates(templateNotes); + } + + // First load. + useEffect(() => { + refreshTemplates(); + }, []); + + // React to external changes. + useTriliumEvent("entitiesReloaded", ({ loadResults }) => { + if (loadResults.getAttributeRows().some(attr => attr.type === "label" && attr.name === "template")) { + refreshTemplates(); + } + }); + + return ( + + {userTemplates.map(template => )} + {userTemplates.length > 0 && } + {builtinTemplates.map(template => )} + + ); +} + +function TemplateItem({ noteId, template }: { noteId: string, template: FNote }) { + return ( + setTemplate(noteId, template.noteId)} + >{template.title} + ); +} + +function switchNoteType(noteId: string, { type, mime }: NoteTypeMapping) { + return server.put(`notes/${noteId}/type`, { type, mime }); +} + +function setTemplate(noteId: string, templateId: string) { + return attributes.setRelation(noteId, "template", templateId); +} + +function useBuiltinTemplates() { + const [ templates, setTemplates ] = useState<{ + builtinTemplates: FNote[]; + collectionTemplates: FNote[]; + }>({ + builtinTemplates: [], + collectionTemplates: [] + }); + + async function loadBuiltinTemplates() { + const templatesRoot = await froca.getNote("_templates"); + if (!templatesRoot) return; + const childNotes = await templatesRoot.getChildNotes(); + const builtinTemplates: FNote[] = []; + const collectionTemplates: FNote[] = []; + for (const childNote of childNotes) { + if (!childNote.hasLabel("template")) continue; + if (childNote.hasLabel("collection")) { + collectionTemplates.push(childNote); + } else { + builtinTemplates.push(childNote); + } + } + setTemplates({ builtinTemplates, collectionTemplates }); + } + + useEffect(() => { + loadBuiltinTemplates(); + }, []); + + return templates; +} diff --git a/apps/client/src/widgets/layout/StatusBar.css b/apps/client/src/widgets/layout/StatusBar.css index c5129223b..c421c3d65 100644 --- a/apps/client/src/widgets/layout/StatusBar.css +++ b/apps/client/src/widgets/layout/StatusBar.css @@ -1,6 +1,6 @@ .component.status-bar { contain: none; - border-top: 1px solid var(--main-border-color); + border-top: 1px solid var(--status-bar-border-color); > .status-bar-main-row { min-height: 28px; @@ -9,7 +9,7 @@ background-color: var(--left-pane-background-color); padding-inline: 0.25em; font-size: 0.85em; - + > .breadcrumb { flex-grow: 1; --icon-button-size: 23px; @@ -104,7 +104,7 @@ /* Note path card */ li { --border-radius: 6px; - + position: relative; background: var(--card-background-color); padding: 8px 20px 8px 25px; @@ -120,7 +120,7 @@ & + li { margin-top: 2px; } - + /* Current path arrow */ &.path-current::before { position: absolute; @@ -180,7 +180,7 @@ &:last-child { border-radius: 0 0 var(--border-radius) var(--border-radius); } - + /* Card header */ & > span:first-child { display: block; @@ -202,7 +202,7 @@ } /* Note icon */ - > .bx { + > .tn-icon { color: var(--menu-item-icon-color); } @@ -298,6 +298,11 @@ margin: 0 !important; padding: 0; + body.layout-horizontal.background-effects & { + /* Do not apply Mica over the bottom panel in the horizontal layout */ + background: var(--right-pane-background-color); + } + .bottom-panel-title-bar { display: flex; padding: 6px 12px; @@ -319,6 +324,7 @@ padding: 8px 12px; max-height: 40vh; overflow-y: auto; + animation: fade-in 200ms ease-in; } } diff --git a/apps/client/src/widgets/layout/StatusBar.tsx b/apps/client/src/widgets/layout/StatusBar.tsx index 73938b502..3c852ba14 100644 --- a/apps/client/src/widgets/layout/StatusBar.tsx +++ b/apps/client/src/widgets/layout/StatusBar.tsx @@ -1,9 +1,9 @@ import "./StatusBar.css"; -import { KeyboardActionNames, Locale } from "@triliumnext/commons"; +import { Locale, NoteType } from "@triliumnext/commons"; import { Dropdown as BootstrapDropdown } from "bootstrap"; import clsx from "clsx"; -import { type ComponentChildren } from "preact"; +import { type ComponentChildren, RefObject } from "preact"; import { createPortal } from "preact/compat"; import { useContext, useEffect, useMemo, useRef, useState } from "preact/hooks"; @@ -216,13 +216,12 @@ interface NoteInfoContext extends StatusBarContext { setSimilarNotesShown: (value: boolean) => void; } -export function NoteInfoBadge({ note, similarNotesShown, setSimilarNotesShown }: NoteInfoContext) { +export function NoteInfoBadge(context: NoteInfoContext) { const dropdownRef = useRef(null); - const { metadata, ...sizeProps } = useNoteMetadata(note); - const [ originalFileName ] = useNoteLabel(note, "originalFileName"); + const [ dropdownShown, setDropdownShown ] = useState(false); + const { note, similarNotesShown, setSimilarNotesShown } = context; const noteType = useNoteProperty(note, "type"); - const noteTypeMapping = useMemo(() => NOTE_TYPES.find(t => t.type === noteType), [ noteType ]); - const enabled = note && noteType && noteTypeMapping; + const enabled = note && noteType; // Keyboard shortcut. useTriliumEvent("toggleRibbonTabNoteInfo", () => enabled && dropdownRef.current?.show()); @@ -234,13 +233,30 @@ export function NoteInfoBadge({ note, similarNotesShown, setSimilarNotesShown }: title={t("status_bar.note_info_title")} dropdownRef={dropdownRef} dropdownContainerClassName="dropdown-note-info" - dropdownOptions={{ autoClose: "outside" }} + dropdownOptions={{autoClose: "outside" }} + onShown={() => setDropdownShown(true)} + onHidden={() => setDropdownShown(false)} > + {dropdownShown && } + + ); +} + +function NoteInfoContent({ note, setSimilarNotesShown, noteType, dropdownRef }: NoteInfoContext & { + dropdownRef: RefObject; + noteType: NoteType; +}) { + const { metadata, ...sizeProps } = useNoteMetadata(note); + const [ originalFileName ] = useNoteLabel(note, "originalFileName"); + const noteTypeMapping = useMemo(() => NOTE_TYPES.find(t => t.type === noteType), [ noteType ]); + + return ( + <>
      {originalFileName && } - {" "}{noteTypeMapping?.title}} /> + {noteTypeMapping && {" "}{noteTypeMapping?.title}} />} {note.mime && } {note.noteId}} /> } /> @@ -253,7 +269,7 @@ export function NoteInfoBadge({ note, similarNotesShown, setSimilarNotesShown }: setSimilarNotesShown(true); }} /> - + ); } @@ -269,10 +285,10 @@ function NoteInfoValue({ text, title, value }: { text: string; title?: string, v function SimilarNotesPane({ note, similarNotesShown, setSimilarNotesShown }: NoteInfoContext) { return (similarNotesShown && + className="similar-notes-pane" + visible={similarNotesShown} + setVisible={setSimilarNotesShown} + > ); @@ -324,7 +340,7 @@ function AttributesButton({ note, attributesShown, setAttributesShown }: Attribu // React to note changes. useEffect(() => { - setCount(note.attributes.length); + setCount(note.getAttributes().filter(a => !a.isAutoLink).length); }, [ note ]); // React to changes in count. @@ -372,10 +388,10 @@ function AttributesPane({ note, noteContext, attributesShown, setAttributesShown return (context && - + className="attribute-list" + visible={attributesShown} + setVisible={setAttributesShown}> + {t("inherited_attribute_list.title")} @@ -428,7 +444,7 @@ function CodeNoteSwitcher({ note }: StatusBarContext) { return (note.type === "code" && <>
      {title} - +
      {children}
      -
    + ; } -//#endregion \ No newline at end of file +//#endregion diff --git a/apps/client/src/widgets/note_icon.css b/apps/client/src/widgets/note_icon.css index e715d5699..4ed6df648 100644 --- a/apps/client/src/widgets/note_icon.css +++ b/apps/client/src/widgets/note_icon.css @@ -32,17 +32,14 @@ div.note-icon-widget { } .note-icon-widget .filter-row { - padding-top: 10px; - padding-bottom: 10px; - padding-inline-end: 20px; + padding: 10px; display: flex; - align-items: baseline; + align-items: center; + gap: 1em; } .note-icon-widget .filter-row span { display: block; - padding-inline-start: 15px; - padding-inline-end: 15px; font-weight: bold; } @@ -75,6 +72,14 @@ div.note-icon-widget { height: 1em; } +.note-icon-widget { + .no-results { + padding: 20px; + text-align: center; + color: var(--muted-text-color); + } +} + body.experimental-feature-new-layout { .note-icon-widget button.note-icon { --input-focus-outline-color: var(--note-icon-hover-background-color); @@ -111,4 +116,4 @@ body.experimental-feature-new-layout { transition: background 200ms ease-out; } } -} \ No newline at end of file +} diff --git a/apps/client/src/widgets/note_icon.tsx b/apps/client/src/widgets/note_icon.tsx index 28b118b1a..7bbbd3e34 100644 --- a/apps/client/src/widgets/note_icon.tsx +++ b/apps/client/src/widgets/note_icon.tsx @@ -1,37 +1,36 @@ -import Dropdown from "./react/Dropdown"; import "./note_icon.css"; + +import { IconRegistry } from "@triliumnext/commons"; +import { Dropdown as BootstrapDropdown } from "bootstrap"; +import clsx from "clsx"; import { t } from "i18next"; -import { useNoteContext, useNoteLabel } from "./react/hooks"; -import { useEffect, useRef, useState } from "preact/hooks"; -import server from "../services/server"; -import type { Category, Icon } from "./icon_list"; -import FormTextBox from "./react/FormTextBox"; -import FormSelect from "./react/FormSelect"; +import { CSSProperties, RefObject } from "preact"; +import { useEffect, useMemo, useRef, useState } from "preact/hooks"; +import { CellComponentProps, Grid } from "react-window"; + import FNote from "../entities/fnote"; import attributes from "../services/attributes"; -import Button from "./react/Button"; +import server from "../services/server"; +import ActionButton from "./react/ActionButton"; +import Dropdown from "./react/Dropdown"; +import { FormDropdownDivider, FormListItem } from "./react/FormList"; +import FormTextBox from "./react/FormTextBox"; +import { useNoteContext, useNoteLabel, useStaticTooltip } from "./react/hooks"; interface IconToCountCache { iconClassToCountMap: Record; } -interface IconData { - iconToCount: Record; - categories: Category[]; - icons: Icon[]; -} - -let fullIconData: { - categories: Category[]; - icons: Icon[]; -}; let iconToCountCache!: Promise | null; +type IconWithName = (IconRegistry["sources"][number]["icons"][number] & { iconPack: string }); + export default function NoteIcon() { const { note, viewScope } = useNoteContext(); const [ icon, setIcon ] = useState(); const [ iconClass ] = useNoteLabel(note, "iconClass"); const [ workspaceIconClass ] = useNoteLabel(note, "workspaceIconClass"); + const dropdownRef = useRef(null); useEffect(() => { setIcon(note?.getIcon()); @@ -41,130 +40,219 @@ export default function NoteIcon() { - { note && } + { note && } - ) + ); } -function NoteIconList({ note }: { note: FNote }) { +function NoteIconList({ note, dropdownRef }: { + note: FNote, + dropdownRef: RefObject; +}) { const searchBoxRef = useRef(null); + const iconListRef = useRef(null); const [ search, setSearch ] = useState(); - const [ categoryId, setCategoryId ] = useState("0"); - const [ iconData, setIconData ] = useState(); + const [ filterByPrefix, setFilterByPrefix ] = useState(null); + useStaticTooltip(iconListRef, { + selector: "span", + customClass: "pre-wrap-text", + animation: false, + title() { return this.getAttribute("title") || ""; }, + }); - useEffect(() => { - async function loadIcons() { - if (!fullIconData) { - fullIconData = (await import("./icon_list.js")).default; - } - - // Filter by text and/or category. - let icons: Icon[] = fullIconData.icons; - const processedSearch = search?.trim()?.toLowerCase(); - if (processedSearch || categoryId) { - icons = icons.filter((icon) => { - if (categoryId !== "0" && String(icon.category_id) !== categoryId) { - return false; - } - - if (processedSearch) { - if (!icon.name.includes(processedSearch) && - !icon.term?.find((t) => t.includes(processedSearch))) { - return false; - } - } - - return true; - }); - } - - // Sort by count. - const iconToCount = await getIconToCountMap(); - if (iconToCount) { - icons.sort((a, b) => { - const countA = iconToCount[a.className ?? ""] || 0; - const countB = iconToCount[b.className ?? ""] || 0; - - return countB - countA; - }); - } - - setIconData({ - iconToCount, - icons, - categories: fullIconData.categories - }) - } - - loadIcons(); - }, [ search, categoryId ]); + const allIcons = useAllIcons(); + const filteredIcons = useFilteredIcons(allIcons, search, filterByPrefix); return ( <>
    - {t("note_icon.category")} - - {t("note_icon.search")} s.prefix === filterByPrefix)?.name ?? "" + }) + : t("note_icon.search_placeholder", { number: filteredIcons.length ?? 0, count: glob.iconRegistry.sources.length })} currentValue={search} onChange={setSearch} autoFocus /> -
    -
    { - const clickedTarget = e.target as HTMLElement; - - if (!clickedTarget.classList.contains("bx")) { - return; - } - - const iconClass = Array.from(clickedTarget.classList.values()).join(" "); - if (note) { - const attributeToSet = note.hasOwnedLabel("workspace") ? "workspaceIconClass" : "iconClass"; - attributes.setLabel(note.noteId, attributeToSet, iconClass); - } - }} - > {getIconLabels(note).length > 0 && (
    -
    )} - {(iconData?.icons ?? []).map(({className, name}) => ( - - ))} + {glob.iconRegistry.sources.length > 0 && + + } +
    + +
    { + // Make sure we are not clicking on something else than a button. + const clickedTarget = e.target as HTMLElement; + if (!clickedTarget.classList.contains("tn-icon")) return; + + const iconClass = Array.from(clickedTarget.classList.values()).filter(c => c !== "tn-icon").join(" "); + if (note) { + const attributeToSet = note.hasOwnedLabel("workspace") ? "workspaceIconClass" : "iconClass"; + attributes.setLabel(note.noteId, attributeToSet, iconClass); + } + dropdownRef?.current?.hide(); + }} + > + {filteredIcons.length ? ( + + ) : ( +
    {t("note_icon.no_results")}
    + )}
    ); } +function IconItemCell({ rowIndex, columnIndex, style, filteredIcons }: CellComponentProps<{ + filteredIcons: IconWithName[]; +}>): React.JSX.Element { + const iconIndex = rowIndex * 12 + columnIndex; + const iconData = filteredIcons[iconIndex] as IconWithName | undefined; + if (!iconData) return <>; + + const { id, terms, iconPack } = iconData; + return ( + + ); +} + +function IconFilterContent({ filterByPrefix, setFilterByPrefix }: { + filterByPrefix: string | null; + setFilterByPrefix: (value: string | null) => void; +}) { + return ( + <> + setFilterByPrefix(null)} + >{t("note_icon.filter-none")} + setFilterByPrefix("bx")} + >{t("note_icon.filter-default")} + + + {glob.iconRegistry.sources.map(({ prefix, name, icon }) => ( + prefix !== "bx" && setFilterByPrefix(prefix)} + icon={icon} + checked={filterByPrefix === prefix} + >{name} + ))} + + ); +} + +function useAllIcons() { + const [ allIcons, setAllIcons ] = useState(); + + useEffect(() => { + getIconToCountMap().then((iconsToCount) => { + const allIcons = [ + ...glob.iconRegistry.sources.flatMap(s => s.icons.map((i) => ({ + ...i, + iconPack: s.name, + }))) + ]; + + // Sort by count. + if (iconsToCount) { + allIcons.sort((a, b) => { + const countA = iconsToCount[a.id ?? ""] || 0; + const countB = iconsToCount[b.id ?? ""] || 0; + + return countB - countA; + }); + } + + setAllIcons(allIcons); + }); + }, []); + + return allIcons; +} + +function useFilteredIcons(allIcons: IconWithName[] | undefined, search: string | undefined, filterByPrefix: string | null) { + // Filter by text and/or icon pack. + const filteredIcons = useMemo(() => { + let icons: IconWithName[] = allIcons ?? []; + const processedSearch = search?.trim()?.toLowerCase(); + if (processedSearch || filterByPrefix !== null) { + icons = icons.filter((icon) => { + if (filterByPrefix) { + if (!icon.id?.startsWith(`${filterByPrefix} `)) { + return false; + } + } + + if (processedSearch) { + if (!icon.terms?.some((t) => t.includes(processedSearch))) { + return false; + } + } + + return true; + }); + } + return icons; + }, [ allIcons, search, filterByPrefix ]); + return filteredIcons; +} + async function getIconToCountMap() { if (!iconToCountCache) { iconToCountCache = server.get("other/icon-usage"); @@ -180,5 +268,5 @@ function getIconLabels(note: FNote) { } return note.getOwnedLabels() .filter((label) => ["workspaceIconClass", "iconClass"] - .includes(label.name)); + .includes(label.name)); } diff --git a/apps/client/src/widgets/note_title.css b/apps/client/src/widgets/note_title.css index 637661095..50be6afc7 100644 --- a/apps/client/src/widgets/note_title.css +++ b/apps/client/src/widgets/note_title.css @@ -18,6 +18,11 @@ div.note-title-widget { line-height: 1; padding-block: 0; padding-inline: var(--note-title-padding-inline); + + &::selection { + color: var(--main-text-color); + background: var(--selection-background-color); + } } .note-title-widget input.note-title[readonly] { @@ -37,7 +42,7 @@ body.experimental-feature-new-layout { .title-row { container-type: size; transition: border 400ms ease-out; - + &.note-split-title { border-bottom: 1px solid var(--main-border-color); @@ -56,13 +61,13 @@ body.experimental-feature-new-layout { --note-icon-container-padding-size: 6px; margin-inline: 0; } - + .note-title-widget { --note-title-size: 18px; --note-title-padding-inline: 0; } - @container (max-width: 700px) { + @container (max-width: 600px) { .note-title-widget { --note-title-size: 1.25rem; --note-title-padding-inline: 4px; @@ -80,14 +85,14 @@ body.experimental-feature-new-layout { .ext-badge .text { display: none; } - + .ext-badge { --size: 2em; width: var(--size); height: var(--size); padding: 0; - .bx { + .tn-icon { opacity: 1; margin: 0; } diff --git a/apps/client/src/widgets/note_tree.ts b/apps/client/src/widgets/note_tree.ts index c5ee99d86..0a907895c 100644 --- a/apps/client/src/widgets/note_tree.ts +++ b/apps/client/src/widgets/note_tree.ts @@ -1,38 +1,39 @@ -import hoistedNoteService from "../services/hoisted_note.js"; -import treeService from "../services/tree.js"; -import utils from "../services/utils.js"; -import contextMenu from "../menus/context_menu.js"; -import froca from "../services/froca.js"; -import branchService from "../services/branches.js"; -import ws from "../services/ws.js"; -import NoteContextAwareWidget from "./note_context_aware_widget.js"; -import server from "../services/server.js"; -import noteCreateService from "../services/note_create.js"; -import toastService from "../services/toast.js"; -import appContext, { type CommandListenerData, type EventData } from "../components/app_context.js"; -import keyboardActionsService from "../services/keyboard_actions.js"; -import clipboard from "../services/clipboard.js"; -import protectedSessionService from "../services/protected_session.js"; -import linkService from "../services/link.js"; -import options from "../services/options.js"; -import protectedSessionHolder from "../services/protected_session_holder.js"; -import dialogService from "../services/dialog.js"; -import shortcutService from "../services/shortcuts.js"; -import { t } from "../services/i18n.js"; -import type FBranch from "../entities/fbranch.js"; -import type LoadResults from "../services/load_results.js"; -import type FNote from "../entities/fnote.js"; -import type { NoteType } from "../entities/fnote.js"; -import type { AttributeRow, BranchRow } from "../services/load_results.js"; -import type { SetNoteOpts } from "../components/note_context.js"; -import type { TouchBarItem } from "../components/touch_bar.js"; -import type { TreeCommandNames } from "../menus/tree_context_menu.js"; import "jquery.fancytree"; import "jquery.fancytree/dist/modules/jquery.fancytree.dnd5.js"; import "jquery.fancytree/dist/modules/jquery.fancytree.clones.js"; import "jquery.fancytree/dist/modules/jquery.fancytree.filter.js"; import "../stylesheets/tree.css"; +import appContext, { type CommandListenerData, type EventData } from "../components/app_context.js"; +import type { SetNoteOpts } from "../components/note_context.js"; +import type { TouchBarItem } from "../components/touch_bar.js"; +import type FBranch from "../entities/fbranch.js"; +import type FNote from "../entities/fnote.js"; +import type { NoteType } from "../entities/fnote.js"; +import contextMenu from "../menus/context_menu.js"; +import type { TreeCommandNames } from "../menus/tree_context_menu.js"; +import branchService from "../services/branches.js"; +import clipboard from "../services/clipboard.js"; +import dialogService from "../services/dialog.js"; +import froca from "../services/froca.js"; +import hoistedNoteService from "../services/hoisted_note.js"; +import { t } from "../services/i18n.js"; +import keyboardActionsService from "../services/keyboard_actions.js"; +import linkService from "../services/link.js"; +import type LoadResults from "../services/load_results.js"; +import type { AttributeRow, BranchRow } from "../services/load_results.js"; +import noteCreateService from "../services/note_create.js"; +import options from "../services/options.js"; +import protectedSessionService from "../services/protected_session.js"; +import protectedSessionHolder from "../services/protected_session_holder.js"; +import server from "../services/server.js"; +import shortcutService from "../services/shortcuts.js"; +import toastService from "../services/toast.js"; +import treeService from "../services/tree.js"; +import utils from "../services/utils.js"; +import ws from "../services/ws.js"; +import NoteContextAwareWidget from "./note_context_aware_widget.js"; + const TPL = /*html*/`
    + + + + +

    boxicons

    + +
    + + + +
    + bx-8-ball +
    +
    + + + +
    + bx-a-arrow-down +
    +
    + + + +
    + bx-a-arrow-up +
    +
    + + + +
    + bx-accessibility +
    +
    + + + +
    + bx-acorn +
    +
    + + + +
    + bx-address-book +
    +
    + + + +
    + bx-air-conditioner +
    +
    + + + +
    + bx-air +
    +
    + + + +
    + bx-airplay +
    +
    + + + +
    + bx-alarm-alt +
    +
    + + + +
    + bx-alarm-check +
    +
    + + + +
    + bx-alarm-exclamation +
    +
    + + + +
    + bx-alarm-minus +
    +
    + + + +
    + bx-alarm-plus +
    +
    + + + +
    + bx-alarm-slash +
    +
    + + + +
    + bx-alarm-z +
    +
    + + + +
    + bx-alarm +
    +
    + + + +
    + bx-album-covers +
    +
    + + + +
    + bx-alert-circle +
    +
    + + + +
    + bx-alert-octagon +
    +
    + + + +
    + bx-alert-shield +
    +
    + + + +
    + bx-alert-square +
    +
    + + + +
    + bx-alert-triangle +
    +
    + + + +
    + bx-alien +
    +
    + + + +
    + bx-align-center +
    +
    + + + +
    + bx-align-horizontal-justify-center +
    +
    + + + +
    + bx-align-horizontal-justify-end +
    +
    + + + +
    + bx-align-horizontal-justify-start +
    +
    + + + +
    + bx-align-horizontal-space-between +
    +
    + + + +
    + bx-align-justify +
    +
    + + + +
    + bx-align-left +
    +
    + + + +
    + bx-align-right +
    +
    + + + +
    + bx-align-vertical-justify-center +
    +
    + + + +
    + bx-align-vertical-justify-end +
    +
    + + + +
    + bx-align-vertical-justify-start +
    +
    + + + +
    + bx-align-vertical-space-between +
    +
    + + + +
    + bx-ambulance +
    +
    + + + +
    + bx-ampersand +
    +
    + + + +
    + bx-analyze +
    +
    + + + +
    + bx-anchor +
    +
    + + + +
    + bx-angle +
    +
    + + + +
    + bx-angry +
    +
    + + + +
    + bx-animation-bounce +
    +
    + + + +
    + bx-apartment +
    +
    + + + +
    + bx-approximate +
    +
    + + + +
    + bx-apps-alt +
    +
    + + + +
    + bx-apps +
    +
    + + + +
    + bx-arch +
    +
    + + + +
    + bx-archive-alt +
    +
    + + + +
    + bx-archive-arrow-down +
    +
    + + + +
    + bx-archive-arrow-up +
    +
    + + + +
    + bx-archive +
    +
    + + + +
    + bx-area +
    +
    + + + +
    + bx-arrow-big-down-line +
    +
    + + + +
    + bx-arrow-big-down +
    +
    + + + +
    + bx-arrow-big-left-line +
    +
    + + + +
    + bx-arrow-big-left +
    +
    + + + +
    + bx-arrow-big-right-line +
    +
    + + + +
    + bx-arrow-big-right +
    +
    + + + +
    + bx-arrow-big-up-line +
    +
    + + + +
    + bx-arrow-big-up +
    +
    + + + +
    + bx-arrow-cross +
    +
    + + + +
    + bx-arrow-down-a-z +
    +
    + + + +
    + bx-arrow-down-circle +
    +
    + + + +
    + bx-arrow-down-left-circle +
    +
    + + + +
    + bx-arrow-down-left-square +
    +
    + + + +
    + bx-arrow-down-left-stroke-circle +
    +
    + + + +
    + bx-arrow-down-left-stroke-square +
    +
    + + + +
    + bx-arrow-down-left-stroke +
    +
    + + + +
    + bx-arrow-down-left +
    +
    + + + +
    + bx-arrow-down-narrow-wide +
    +
    + + + +
    + bx-arrow-down-right-circle +
    +
    + + + +
    + bx-arrow-down-right-square +
    +
    + + + +
    + bx-arrow-down-right-stroke-circle +
    +
    + + + +
    + bx-arrow-down-right-stroke-square +
    +
    + + + +
    + bx-arrow-down-right-stroke +
    +
    + + + +
    + bx-arrow-down-right +
    +
    + + + +
    + bx-arrow-down-square +
    +
    + + + +
    + bx-arrow-down-stroke-circle +
    +
    + + + +
    + bx-arrow-down-stroke-square +
    +
    + + + +
    + bx-arrow-down-stroke +
    +
    + + + +
    + bx-arrow-down-up +
    +
    + + + +
    + bx-arrow-down-wide-narrow +
    +
    + + + +
    + bx-arrow-down +
    +
    + + + +
    + bx-arrow-from-bottom-stroke +
    +
    + + + +
    + bx-arrow-from-bottom +
    +
    + + + +
    + bx-arrow-from-left-stroke +
    +
    + + + +
    + bx-arrow-from-left +
    +
    + + + +
    + bx-arrow-from-right-stroke +
    +
    + + + +
    + bx-arrow-from-right +
    +
    + + + +
    + bx-arrow-from-top-stroke +
    +
    + + + +
    + bx-arrow-from-top +
    +
    + + + +
    + bx-arrow-in-down-circle-half +
    +
    + + + +
    + bx-arrow-in-down-left-circle +
    +
    + + + +
    + bx-arrow-in-down-left-square +
    +
    + + + +
    + bx-arrow-in-down-left-stroke-circle +
    +
    + + + +
    + bx-arrow-in-down-left-stroke-square +
    +
    + + + +
    + bx-arrow-in-down-right-circle +
    +
    + + + +
    + bx-arrow-in-down-right-square +
    +
    + + + +
    + bx-arrow-in-down-right-stroke-circle +
    +
    + + + +
    + bx-arrow-in-down-right-stroke-square +
    +
    + + + +
    + bx-arrow-in-down-square-half +
    +
    + + + +
    + bx-arrow-in-down-stroke-circle-half +
    +
    + + + +
    + bx-arrow-in-left-circle-half +
    +
    + + + +
    + bx-arrow-in-left-square-half +
    +
    + + + +
    + bx-arrow-in-left-stroke-circle-half +
    +
    + + + +
    + bx-arrow-in-right-circle-half +
    +
    + + + +
    + bx-arrow-in-right-square-half +
    +
    + + + +
    + bx-arrow-in-right-stroke-circle-half +
    +
    + + + +
    + bx-arrow-in-up-circle-half +
    +
    + + + +
    + bx-arrow-in-up-left-circle +
    +
    + + + +
    + bx-arrow-in-up-left-square +
    +
    + + + +
    + bx-arrow-in-up-left-stroke-circle +
    +
    + + + +
    + bx-arrow-in-up-left-stroke-square +
    +
    + + + +
    + bx-arrow-in-up-right-circle +
    +
    + + + +
    + bx-arrow-in-up-right-square +
    +
    + + + +
    + bx-arrow-in-up-right-stroke-circle +
    +
    + + + +
    + bx-arrow-in-up-right-stroke-square +
    +
    + + + +
    + bx-arrow-in-up-square-half +
    +
    + + + +
    + bx-arrow-in-up-stroke-circle-half +
    +
    + + + +
    + bx-arrow-left-circle +
    +
    + + + +
    + bx-arrow-left-right +
    +
    + + + +
    + bx-arrow-left-square +
    +
    + + + +
    + bx-arrow-left-stroke-circle +
    +
    + + + +
    + bx-arrow-left-stroke-square +
    +
    + + + +
    + bx-arrow-left-stroke +
    +
    + + + +
    + bx-arrow-left +
    +
    + + + +
    + bx-arrow-out-down-circle-half +
    +
    + + + +
    + bx-arrow-out-down-left-circle +
    +
    + + + +
    + bx-arrow-out-down-left-square +
    +
    + + + +
    + bx-arrow-out-down-left-stroke-circle +
    +
    + + + +
    + bx-arrow-out-down-left-stroke-square +
    +
    + + + +
    + bx-arrow-out-down-right-circle +
    +
    + + + +
    + bx-arrow-out-down-right-square +
    +
    + + + +
    + bx-arrow-out-down-right-stroke-circle +
    +
    + + + +
    + bx-arrow-out-down-right-stroke-square +
    +
    + + + +
    + bx-arrow-out-down-square-half +
    +
    + + + +
    + bx-arrow-out-down-stroke-circle-half +
    +
    + + + +
    + bx-arrow-out-left-circle-half +
    +
    + + + +
    + bx-arrow-out-left-square-half +
    +
    + + + +
    + bx-arrow-out-left-stroke-circle-half +
    +
    + + + +
    + bx-arrow-out-right-circle-half +
    +
    + + + +
    + bx-arrow-out-right-square-half +
    +
    + + + +
    + bx-arrow-out-right-stroke-circle-half +
    +
    + + + +
    + bx-arrow-out-up-circle-half +
    +
    + + + +
    + bx-arrow-out-up-left-circle +
    +
    + + + +
    + bx-arrow-out-up-left-square +
    +
    + + + +
    + bx-arrow-out-up-left-stroke-circle +
    +
    + + + +
    + bx-arrow-out-up-left-stroke-square +
    +
    + + + +
    + bx-arrow-out-up-right-circle +
    +
    + + + +
    + bx-arrow-out-up-right-square +
    +
    + + + +
    + bx-arrow-out-up-right-stroke-circle +
    +
    + + + +
    + bx-arrow-out-up-right-stroke-square +
    +
    + + + +
    + bx-arrow-out-up-square-half +
    +
    + + + +
    + bx-arrow-out-up-stroke-circle-half +
    +
    + + + +
    + bx-arrow-right-circle +
    +
    + + + +
    + bx-arrow-right-left +
    +
    + + + +
    + bx-arrow-right-square +
    +
    + + + +
    + bx-arrow-right-stroke-circle +
    +
    + + + +
    + bx-arrow-right-stroke-square +
    +
    + + + +
    + bx-arrow-right-stroke +
    +
    + + + +
    + bx-arrow-right +
    +
    + + + +
    + bx-arrow-s-down +
    +
    + + + +
    + bx-arrow-s-left +
    +
    + + + +
    + bx-arrow-s-right +
    +
    + + + +
    + bx-arrow-s-up +
    +
    + + + +
    + bx-arrow-to-bottom-stroke +
    +
    + + + +
    + bx-arrow-to-bottom +
    +
    + + + +
    + bx-arrow-to-left-stroke +
    +
    + + + +
    + bx-arrow-to-left +
    +
    + + + +
    + bx-arrow-to-right-stroke +
    +
    + + + +
    + bx-arrow-to-right +
    +
    + + + +
    + bx-arrow-to-top-stroke +
    +
    + + + +
    + bx-arrow-to-top +
    +
    + + + +
    + bx-arrow-up-a-z +
    +
    + + + +
    + bx-arrow-up-circle +
    +
    + + + +
    + bx-arrow-up-down +
    +
    + + + +
    + bx-arrow-up-left-circle +
    +
    + + + +
    + bx-arrow-up-left-square +
    +
    + + + +
    + bx-arrow-up-left-stroke-circle +
    +
    + + + +
    + bx-arrow-up-left-stroke-square +
    +
    + + + +
    + bx-arrow-up-left-stroke +
    +
    + + + +
    + bx-arrow-up-left +
    +
    + + + +
    + bx-arrow-up-narrow-wide +
    +
    + + + +
    + bx-arrow-up-right-circle +
    +
    + + + +
    + bx-arrow-up-right-square +
    +
    + + + +
    + bx-arrow-up-right-stroke-circle +
    +
    + + + +
    + bx-arrow-up-right-stroke-square +
    +
    + + + +
    + bx-arrow-up-right-stroke +
    +
    + + + +
    + bx-arrow-up-right +
    +
    + + + +
    + bx-arrow-up-square +
    +
    + + + +
    + bx-arrow-up-stroke-circle +
    +
    + + + +
    + bx-arrow-up-stroke-square +
    +
    + + + +
    + bx-arrow-up-stroke +
    +
    + + + +
    + bx-arrow-up-wide-narrow +
    +
    + + + +
    + bx-arrow-up +
    +
    + + + +
    + bx-article +
    +
    + + + +
    + bx-asterisk +
    +
    + + + +
    + bx-at +
    +
    + + + +
    + bx-atom +
    +
    + + + +
    + bx-avocado +
    +
    + + + +
    + bx-axe +
    +
    + + + +
    + bx-background-color-fill +
    +
    + + + +
    + bx-background +
    +
    + + + +
    + bx-backpack-star +
    +
    + + + +
    + bx-backpack +
    +
    + + + +
    + bx-backspace +
    +
    + + + +
    + bx-backward-slash +
    +
    + + + +
    + bx-bacon +
    +
    + + + +
    + bx-badge-check +
    +
    + + + +
    + bx-badge-exclamation +
    +
    + + + +
    + bx-badge-info +
    +
    + + + +
    + bx-badge +
    +
    + + + +
    + bx-baguette +
    +
    + + + +
    + bx-bahai +
    +
    + + + +
    + bx-balcony +
    +
    + + + +
    + bx-ball-throw +
    +
    + + + +
    + bx-balloon +
    +
    + + + +
    + bx-band-aid +
    +
    + + + +
    + bx-bank +
    +
    + + + +
    + bx-bar-chart-big +
    +
    + + + +
    + bx-bar-chart-square +
    +
    + + + +
    + bx-bar-chart +
    +
    + + + +
    + bx-barcode-square +
    +
    + + + +
    + bx-barcode +
    +
    + + + +
    + bx-barn +
    +
    + + + +
    + bx-baseball +
    +
    + + + +
    + bx-basket +
    +
    + + + +
    + bx-basketball +
    +
    + + + +
    + bx-bath +
    +
    + + + +
    + bx-battery-1 +
    +
    + + + +
    + bx-battery-2 +
    +
    + + + +
    + bx-battery-3 +
    +
    + + + +
    + bx-battery-full +
    +
    + + + +
    + bx-battery-low +
    +
    + + + +
    + bx-battery +
    +
    + + + +
    + bx-beach-ball +
    +
    + + + +
    + bx-beach +
    +
    + + + +
    + bx-beaker +
    +
    + + + +
    + bx-beanie +
    +
    + + + +
    + bx-bear +
    +
    + + + +
    + bx-bed-alt +
    +
    + + + +
    + bx-bed +
    +
    + + + +
    + bx-beer +
    +
    + + + +
    + bx-bell-check +
    +
    + + + +
    + bx-bell-minus +
    +
    + + + +
    + bx-bell-plus +
    +
    + + + +
    + bx-bell-ring +
    +
    + + + +
    + bx-bell-slash +
    +
    + + + +
    + bx-bell +
    +
    + + + +
    + bx-bench +
    +
    + + + +
    + bx-between-horizontal-end +
    +
    + + + +
    + bx-between-horizontal-start +
    +
    + + + +
    + bx-between-vertical-end +
    +
    + + + +
    + bx-between-vertical-start +
    +
    + + + +
    + bx-bible +
    +
    + + + +
    + bx-biceps +
    +
    + + + +
    + bx-binocular +
    +
    + + + +
    + bx-bird-alt +
    +
    + + + +
    + bx-bird +
    +
    + + + +
    + bx-birthday-cake +
    +
    + + + +
    + bx-bitcoin +
    +
    + + + +
    + bx-blanket +
    +
    + + + +
    + bx-blob +
    +
    + + + +
    + bx-block +
    +
    + + + +
    + bx-blockquote +
    +
    + + + +
    + bx-blocks +
    +
    + + + +
    + bx-bluetooth +
    +
    + + + +
    + bx-blur-alt +
    +
    + + + +
    + bx-blur +
    +
    + + + +
    + bx-body +
    +
    + + + +
    + bx-bold +
    +
    + + + +
    + bx-bolt-alt +
    +
    + + + +
    + bx-bolt-circle +
    +
    + + + +
    + bx-bolt-square +
    +
    + + + +
    + bx-bolt +
    +
    + + + +
    + bx-bomb +
    +
    + + + +
    + bx-bone +
    +
    + + + +
    + bx-bong +
    +
    + + + +
    + bx-book-add +
    +
    + + + +
    + bx-book-alt +
    +
    + + + +
    + bx-book-bookmark +
    +
    + + + +
    + bx-book-content +
    +
    + + + +
    + bx-book-heart +
    +
    + + + +
    + bx-book-library +
    +
    + + + +
    + bx-book-open +
    +
    + + + +
    + bx-book +
    +
    + + + +
    + bx-bookmark-alt +
    +
    + + + +
    + bx-bookmark-heart +
    +
    + + + +
    + bx-bookmark-minus-alt +
    +
    + + + +
    + bx-bookmark-minus +
    +
    + + + +
    + bx-bookmark-plus-alt +
    +
    + + + +
    + bx-bookmark-plus +
    +
    + + + +
    + bx-bookmark-star +
    +
    + + + +
    + bx-bookmark-x +
    +
    + + + +
    + bx-bookmark +
    +
    + + + +
    + bx-bookmarks +
    +
    + + + +
    + bx-boombox +
    +
    + + + +
    + bx-boot +
    +
    + + + +
    + bx-border-all +
    +
    + + + +
    + bx-border-bottom +
    +
    + + + +
    + bx-border-inner +
    +
    + + + +
    + bx-border-left +
    +
    + + + +
    + bx-border-none +
    +
    + + + +
    + bx-border-outer +
    +
    + + + +
    + bx-border-radius +
    +
    + + + +
    + bx-border-right +
    +
    + + + +
    + bx-border-top +
    +
    + + + +
    + bx-bow +
    +
    + + + +
    + bx-bowl-balls +
    +
    + + + +
    + bx-bowl-bubbles +
    +
    + + + +
    + bx-bowl-hot +
    +
    + + + +
    + bx-bowl-noodles-alt +
    +
    + + + +
    + bx-bowl-noodles +
    +
    + + + +
    + bx-bowl-rice +
    +
    + + + +
    + bx-bowling-ball +
    +
    + + + +
    + bx-box-alt +
    +
    + + + +
    + bx-box +
    +
    + + + +
    + bx-bracket-curly +
    +
    + + + +
    + bx-bracket-round +
    +
    + + + +
    + bx-bracket +
    +
    + + + +
    + bx-braille +
    +
    + + + +
    + bx-brain-circuit +
    +
    + + + +
    + bx-brain +
    +
    + + + +
    + bx-bread +
    +
    + + + +
    + bx-brick +
    +
    + + + +
    + bx-bridge +
    +
    + + + +
    + bx-briefcase-alt-2 +
    +
    + + + +
    + bx-briefcase-alt +
    +
    + + + +
    + bx-briefcase +
    +
    + + + +
    + bx-brightness-half +
    +
    + + + +
    + bx-brightness +
    +
    + + + +
    + bx-broadcast +
    +
    + + + +
    + bx-browser-activity +
    +
    + + + +
    + bx-brush-sparkles +
    +
    + + + +
    + bx-brush +
    +
    + + + +
    + bx-buddhism +
    +
    + + + +
    + bx-bug-alt +
    +
    + + + +
    + bx-bug +
    +
    + + + +
    + bx-building-house +
    +
    + + + +
    + bx-building +
    +
    + + + +
    + bx-buildings +
    +
    + + + +
    + bx-bullseye +
    +
    + + + +
    + bx-buoy +
    +
    + + + +
    + bx-burger-alt +
    +
    + + + +
    + bx-burger +
    +
    + + + +
    + bx-bus +
    +
    + + + +
    + bx-business +
    +
    + + + +
    + bx-button-rounded +
    +
    + + + +
    + bx-button +
    +
    + + + +
    + bx-cabinet +
    +
    + + + +
    + bx-cable-car +
    +
    + + + +
    + bx-cake-slice +
    +
    + + + +
    + bx-calculator +
    +
    + + + +
    + bx-calendar-alt-2 +
    +
    + + + +
    + bx-calendar-alt +
    +
    + + + +
    + bx-calendar-check +
    +
    + + + +
    + bx-calendar-cog +
    +
    + + + +
    + bx-calendar-detail +
    +
    + + + +
    + bx-calendar-down-arrow +
    +
    + + + +
    + bx-calendar-event +
    +
    + + + +
    + bx-calendar-heart +
    +
    + + + +
    + bx-calendar-minus +
    +
    + + + +
    + bx-calendar-plus +
    +
    + + + +
    + bx-calendar-search +
    +
    + + + +
    + bx-calendar-star +
    +
    + + + +
    + bx-calendar-up-arrow +
    +
    + + + +
    + bx-calendar-week +
    +
    + + + +
    + bx-calendar-x +
    +
    + + + +
    + bx-calendar +
    +
    + + + +
    + bx-camcoder +
    +
    + + + +
    + bx-camera-alt +
    +
    + + + +
    + bx-camera-flip +
    +
    + + + +
    + bx-camera-home +
    +
    + + + +
    + bx-camera-monochrome +
    +
    + + + +
    + bx-camera-plus +
    +
    + + + +
    + bx-camera-portrait +
    +
    + + + +
    + bx-camera-slash +
    +
    + + + +
    + bx-camera-switch +
    +
    + + + +
    + bx-camera +
    +
    + + + +
    + bx-campfire +
    +
    + + + +
    + bx-camping +
    +
    + + + +
    + bx-candlestick +
    +
    + + + +
    + bx-cannabis +
    +
    + + + +
    + bx-cap +
    +
    + + + +
    + bx-capitalize +
    +
    + + + +
    + bx-capsule +
    +
    + + + +
    + bx-captions-cc +
    +
    + + + +
    + bx-captions +
    +
    + + + +
    + bx-capture +
    +
    + + + +
    + bx-car-battery +
    +
    + + + +
    + bx-car-key +
    +
    + + + +
    + bx-car +
    +
    + + + +
    + bx-card-view-large +
    +
    + + + +
    + bx-card-view-no-title +
    +
    + + + +
    + bx-card-view-small +
    +
    + + + +
    + bx-card-view-tiles +
    +
    + + + +
    + bx-card-view +
    +
    + + + +
    + bx-caret-big-down +
    +
    + + + +
    + bx-caret-big-left +
    +
    + + + +
    + bx-caret-big-right +
    +
    + + + +
    + bx-caret-big-up +
    +
    + + + +
    + bx-caret-down-circle +
    +
    + + + +
    + bx-caret-down-square +
    +
    + + + +
    + bx-caret-down +
    +
    + + + +
    + bx-caret-left-circle +
    +
    + + + +
    + bx-caret-left-square +
    +
    + + + +
    + bx-caret-left +
    +
    + + + +
    + bx-caret-right-circle +
    +
    + + + +
    + bx-caret-right-square +
    +
    + + + +
    + bx-caret-right +
    +
    + + + +
    + bx-caret-up-circle +
    +
    + + + +
    + bx-caret-up-square +
    +
    + + + +
    + bx-caret-up +
    +
    + + + +
    + bx-carets-down-up +
    +
    + + + +
    + bx-carets-left-right +
    +
    + + + +
    + bx-carets-right-left +
    +
    + + + +
    + bx-carets-up-down +
    +
    + + + +
    + bx-carrot +
    +
    + + + +
    + bx-cart-minus +
    +
    + + + +
    + bx-cart-plus +
    +
    + + + +
    + bx-cart +
    +
    + + + +
    + bx-cast +
    +
    + + + +
    + bx-castle +
    +
    + + + +
    + bx-cat +
    +
    + + + +
    + bx-categories +
    +
    + + + +
    + bx-cctv +
    +
    + + + +
    + bx-certification +
    +
    + + + +
    + bx-chair +
    +
    + + + +
    + bx-champagne +
    +
    + + + +
    + bx-chart-area +
    +
    + + + +
    + bx-chart-bar-big-columns +
    +
    + + + +
    + bx-chart-bar-big-rows +
    +
    + + + +
    + bx-chart-bar-columns +
    +
    + + + +
    + bx-chart-bar-rows +
    +
    + + + +
    + bx-chart-bubble +
    +
    + + + +
    + bx-chart-gantt +
    +
    + + + +
    + bx-chart-line +
    +
    + + + +
    + bx-chart-network +
    +
    + + + +
    + bx-chart-scatter +
    +
    + + + +
    + bx-chart-spline +
    +
    + + + +
    + bx-chart-stacked-columns +
    +
    + + + +
    + bx-chart-stacked-rows +
    +
    + + + +
    + bx-chart-trend +
    +
    + + + +
    + bx-check-circle +
    +
    + + + +
    + bx-check-shield +
    +
    + + + +
    + bx-check-square +
    +
    + + + +
    + bx-check +
    +
    + + + +
    + bx-checkbox-checked +
    +
    + + + +
    + bx-checkbox-square +
    +
    + + + +
    + bx-checkbox +
    +
    + + + +
    + bx-checklist +
    +
    + + + +
    + bx-checks +
    +
    + + + +
    + bx-cheese +
    +
    + + + +
    + bx-chef-hat +
    +
    + + + +
    + bx-cherry +
    +
    + + + +
    + bx-chess-bishop +
    +
    + + + +
    + bx-chess-king +
    +
    + + + +
    + bx-chess-knight +
    +
    + + + +
    + bx-chess-pawn +
    +
    + + + +
    + bx-chess-queen +
    +
    + + + +
    + bx-chess-rook +
    +
    + + + +
    + bx-chess +
    +
    + + + +
    + bx-chevron-down-circle +
    +
    + + + +
    + bx-chevron-down-square +
    +
    + + + +
    + bx-chevron-down +
    +
    + + + +
    + bx-chevron-left-circle +
    +
    + + + +
    + bx-chevron-left-square +
    +
    + + + +
    + bx-chevron-left +
    +
    + + + +
    + bx-chevron-right-circle +
    +
    + + + +
    + bx-chevron-right-square +
    +
    + + + +
    + bx-chevron-right +
    +
    + + + +
    + bx-chevron-up-circle +
    +
    + + + +
    + bx-chevron-up-square +
    +
    + + + +
    + bx-chevron-up +
    +
    + + + +
    + bx-chevrons-down-up +
    +
    + + + +
    + bx-chevrons-down +
    +
    + + + +
    + bx-chevrons-left-right +
    +
    + + + +
    + bx-chevrons-left +
    +
    + + + +
    + bx-chevrons-right-left +
    +
    + + + +
    + bx-chevrons-right +
    +
    + + + +
    + bx-chevrons-up-down +
    +
    + + + +
    + bx-chevrons-up +
    +
    + + + +
    + bx-child +
    +
    + + + +
    + bx-chip +
    +
    + + + +
    + bx-christianity +
    +
    + + + +
    + bx-church +
    +
    + + + +
    + bx-cigarette +
    +
    + + + +
    + bx-circle-dashed-half +
    +
    + + + +
    + bx-circle-dashed +
    +
    + + + +
    + bx-circle-half-alt +
    +
    + + + +
    + bx-circle-half +
    +
    + + + +
    + bx-circle-hexagon +
    +
    + + + +
    + bx-circle-outer-dashed-circle +
    +
    + + + +
    + bx-circle-quarter-alt +
    +
    + + + +
    + bx-circle-quarter +
    +
    + + + +
    + bx-circle-three-quarter-alt +
    +
    + + + +
    + bx-circle-three-quarter +
    +
    + + + +
    + bx-circle +
    +
    + + + +
    + bx-circles-9 +
    +
    + + + +
    + bx-circles-alt +
    +
    + + + +
    + bx-circles +
    +
    + + + +
    + bx-circuit-board +
    +
    + + + +
    + bx-city +
    +
    + + + +
    + bx-clipboard-check +
    +
    + + + +
    + bx-clipboard-code +
    +
    + + + +
    + bx-clipboard-detail +
    +
    + + + +
    + bx-clipboard-minus +
    +
    + + + +
    + bx-clipboard-plus +
    +
    + + + +
    + bx-clipboard-x +
    +
    + + + +
    + bx-clipboard +
    +
    + + + +
    + bx-clock-1 +
    +
    + + + +
    + bx-clock-10 +
    +
    + + + +
    + bx-clock-11 +
    +
    + + + +
    + bx-clock-12 +
    +
    + + + +
    + bx-clock-2 +
    +
    + + + +
    + bx-clock-3 +
    +
    + + + +
    + bx-clock-4 +
    +
    + + + +
    + bx-clock-5 +
    +
    + + + +
    + bx-clock-6 +
    +
    + + + +
    + bx-clock-7 +
    +
    + + + +
    + bx-clock-8 +
    +
    + + + +
    + bx-clock-9 +
    +
    + + + +
    + bx-clock-dashed-half +
    +
    + + + +
    + bx-clock +
    +
    + + + +
    + bx-cloud-alt-2 +
    +
    + + + +
    + bx-cloud-alt +
    +
    + + + +
    + bx-cloud-drizzle +
    +
    + + + +
    + bx-cloud-fog +
    +
    + + + +
    + bx-cloud-lightning +
    +
    + + + +
    + bx-cloud-moon +
    +
    + + + +
    + bx-cloud-rain-wind +
    +
    + + + +
    + bx-cloud-rain +
    +
    + + + +
    + bx-cloud-snow +
    +
    + + + +
    + bx-cloud-sun +
    +
    + + + +
    + bx-cloud +
    +
    + + + +
    + bx-clover +
    +
    + + + +
    + bx-club +
    +
    + + + +
    + bx-cocktail +
    +
    + + + +
    + bx-code-alt +
    +
    + + + +
    + bx-code +
    +
    + + + +
    + bx-coffee-beans +
    +
    + + + +
    + bx-coffee-cup +
    +
    + + + +
    + bx-coffee +
    +
    + + + +
    + bx-cog +
    +
    + + + +
    + bx-cognition +
    +
    + + + +
    + bx-coin +
    +
    + + + +
    + bx-coins +
    +
    + + + +
    + bx-col-resize +
    +
    + + + +
    + bx-color-fill +
    +
    + + + +
    + bx-color-wheel +
    +
    + + + +
    + bx-columns-3 +
    +
    + + + +
    + bx-columns-4 +
    +
    + + + +
    + bx-columns +
    +
    + + + +
    + bx-comic-bubble +
    +
    + + + +
    + bx-command +
    +
    + + + +
    + bx-community +
    +
    + + + +
    + bx-compare-alt +
    +
    + + + +
    + bx-compare +
    +
    + + + +
    + bx-compass +
    +
    + + + +
    + bx-component +
    +
    + + + +
    + bx-computer +
    +
    + + + +
    + bx-confused +
    +
    + + + +
    + bx-connector +
    +
    + + + +
    + bx-contact-book +
    +
    + + + +
    + bx-contrast +
    +
    + + + +
    + bx-cookie +
    +
    + + + +
    + bx-cool +
    +
    + + + +
    + bx-copy-check +
    +
    + + + +
    + bx-copy-list +
    +
    + + + +
    + bx-copy-minus +
    +
    + + + +
    + bx-copy-plus +
    +
    + + + +
    + bx-copy-x +
    +
    + + + +
    + bx-copy +
    +
    + + + +
    + bx-copyright +
    +
    + + + +
    + bx-core +
    +
    + + + +
    + bx-credit-card-alt +
    +
    + + + +
    + bx-credit-card-front +
    +
    + + + +
    + bx-credit-card-insert +
    +
    + + + +
    + bx-credit-card +
    +
    + + + +
    + bx-cricket-ball +
    +
    + + + +
    + bx-crop +
    +
    + + + +
    + bx-cross-circle +
    +
    + + + +
    + bx-crosshair +
    +
    + + + +
    + bx-crown +
    +
    + + + +
    + bx-crypto-coin +
    +
    + + + +
    + bx-crypto +
    +
    + + + +
    + bx-cube-alt +
    +
    + + + +
    + bx-cube-inside +
    +
    + + + +
    + bx-cube +
    +
    + + + +
    + bx-cuboid +
    +
    + + + +
    + bx-cup-hot +
    +
    + + + +
    + bx-cup-saucer +
    +
    + + + +
    + bx-cup-tea +
    +
    + + + +
    + bx-cup +
    +
    + + + +
    + bx-cupboard-alt +
    +
    + + + +
    + bx-cupboard +
    +
    + + + +
    + bx-cupcake +
    +
    + + + +
    + bx-currency-note +
    +
    + + + +
    + bx-currency-notes +
    +
    + + + +
    + bx-cursor-add +
    +
    + + + +
    + bx-cursor-cell +
    +
    + + + +
    + bx-cursor-crosshair-dot +
    +
    + + + +
    + bx-cursor-crosshair +
    +
    + + + +
    + bx-cursor-pen +
    +
    + + + +
    + bx-cursor-pointer +
    +
    + + + +
    + bx-cursor +
    +
    + + + +
    + bx-cut +
    +
    + + + +
    + bx-cycling +
    +
    + + + +
    + bx-cylinder +
    +
    + + + +
    + bx-dashboard-alt +
    +
    + + + +
    + bx-dashboard +
    +
    + + + +
    + bx-database-alt +
    +
    + + + +
    + bx-database +
    +
    + + + +
    + bx-decrease-indent +
    +
    + + + +
    + bx-delta +
    +
    + + + +
    + bx-department-store +
    +
    + + + +
    + bx-desert +
    +
    + + + +
    + bx-desk +
    +
    + + + +
    + bx-desktop-alt +
    +
    + + + +
    + bx-desktop +
    +
    + + + +
    + bx-devices +
    +
    + + + +
    + bx-dialpad +
    +
    + + + +
    + bx-diameter +
    +
    + + + +
    + bx-diamond-alt +
    +
    + + + +
    + bx-diamond +
    +
    + + + +
    + bx-diamonds +
    +
    + + + +
    + bx-dice-1 +
    +
    + + + +
    + bx-dice-2 +
    +
    + + + +
    + bx-dice-3 +
    +
    + + + +
    + bx-dice-4 +
    +
    + + + +
    + bx-dice-5 +
    +
    + + + +
    + bx-dice-6 +
    +
    + + + +
    + bx-dice-roll +
    +
    + + + +
    + bx-dino +
    +
    + + + +
    + bx-directions +
    +
    + + + +
    + bx-disc +
    +
    + + + +
    + bx-discount +
    +
    + + + +
    + bx-discussion +
    +
    + + + +
    + bx-dish +
    +
    + + + +
    + bx-dishwasher +
    +
    + + + +
    + bx-dislike +
    +
    + + + +
    + bx-division +
    +
    + + + +
    + bx-dizzy +
    +
    + + + +
    + bx-dna +
    +
    + + + +
    + bx-dock-bottom-alt +
    +
    + + + +
    + bx-dock-bottom-arrow +
    +
    + + + +
    + bx-dock-bottom-left-alt +
    +
    + + + +
    + bx-dock-bottom-left +
    +
    + + + +
    + bx-dock-bottom-right-alt +
    +
    + + + +
    + bx-dock-bottom-right +
    +
    + + + +
    + bx-dock-bottom +
    +
    + + + +
    + bx-dock-left-alt +
    +
    + + + +
    + bx-dock-left-arrow +
    +
    + + + +
    + bx-dock-left +
    +
    + + + +
    + bx-dock-right-alt +
    +
    + + + +
    + bx-dock-right-arrow +
    +
    + + + +
    + bx-dock-right +
    +
    + + + +
    + bx-dock-top-alt +
    +
    + + + +
    + bx-dock-top-arrow +
    +
    + + + +
    + bx-dock-top-left-alt +
    +
    + + + +
    + bx-dock-top-left +
    +
    + + + +
    + bx-dock-top-right-alt +
    +
    + + + +
    + bx-dock-top-right +
    +
    + + + +
    + bx-dock-top +
    +
    + + + +
    + bx-dog-alt +
    +
    + + + +
    + bx-dog +
    +
    + + + +
    + bx-dollar-circle-stars +
    +
    + + + +
    + bx-dollar-circle +
    +
    + + + +
    + bx-dollar +
    +
    + + + +
    + bx-donate-blood +
    +
    + + + +
    + bx-donate-heart +
    +
    + + + +
    + bx-donut +
    +
    + + + +
    + bx-door-open +
    +
    + + + +
    + bx-door +
    +
    + + + +
    + bx-dots-horizontal-rounded-circle +
    +
    + + + +
    + bx-dots-horizontal-rounded +
    +
    + + + +
    + bx-dots-horizontal +
    +
    + + + +
    + bx-dots-vertical-rounded-circle +
    +
    + + + +
    + bx-dots-vertical-rounded +
    +
    + + + +
    + bx-dots-vertical +
    +
    + + + +
    + bx-doughnut-chart +
    +
    + + + +
    + bx-draw-ahead +
    +
    + + + +
    + bx-draw-behind +
    +
    + + + +
    + bx-draw-inside +
    +
    + + + +
    + bx-dress +
    +
    + + + +
    + bx-dribbling +
    +
    + + + +
    + bx-dropdown +
    +
    + + + +
    + bx-dryer +
    +
    + + + +
    + bx-duck +
    +
    + + + +
    + bx-dumbbell-alt +
    +
    + + + +
    + bx-dumbbell +
    +
    + + + +
    + bx-ear-alt +
    +
    + + + +
    + bx-ear-slash +
    +
    + + + +
    + bx-ear +
    +
    + + + +
    + bx-earbuds +
    +
    + + + +
    + bx-earth +
    +
    + + + +
    + bx-ease-in-out +
    +
    + + + +
    + bx-ease-in +
    +
    + + + +
    + bx-ease-out +
    +
    + + + +
    + bx-edit-alt +
    +
    + + + +
    + bx-edit +
    +
    + + + +
    + bx-education +
    +
    + + + +
    + bx-egg-fried +
    +
    + + + +
    + bx-egg-yolk +
    +
    + + + +
    + bx-egg +
    +
    + + + +
    + bx-eject +
    +
    + + + +
    + bx-element-of +
    +
    + + + +
    + bx-empty-set +
    +
    + + + +
    + bx-enter +
    +
    + + + +
    + bx-enterprise +
    +
    + + + +
    + bx-envelope-alt +
    +
    + + + +
    + bx-envelope-open +
    +
    + + + +
    + bx-envelope +
    +
    + + + +
    + bx-equal-circle +
    +
    + + + +
    + bx-equal-square +
    +
    + + + +
    + bx-equal +
    +
    + + + +
    + bx-equalizer +
    +
    + + + +
    + bx-eraser +
    +
    + + + +
    + bx-euro +
    +
    + + + +
    + bx-ev-station +
    +
    + + + +
    + bx-expand-left +
    +
    + + + +
    + bx-expand-right +
    +
    + + + +
    + bx-explosion +
    +
    + + + +
    + bx-exposure +
    +
    + + + +
    + bx-extension +
    +
    + + + +
    + bx-eye-alt +
    +
    + + + +
    + bx-eye-big +
    +
    + + + +
    + bx-eye-closed +
    +
    + + + +
    + bx-eye-slash +
    +
    + + + +
    + bx-eye +
    +
    + + + +
    + bx-eyedropper +
    +
    + + + +
    + bx-face-alt-2 +
    +
    + + + +
    + bx-face-alt-3 +
    +
    + + + +
    + bx-face-alt-4 +
    +
    + + + +
    + bx-face-alt +
    +
    + + + +
    + bx-face-child +
    +
    + + + +
    + bx-face-mask +
    +
    + + + +
    + bx-face +
    +
    + + + +
    + bx-factory +
    +
    + + + +
    + bx-fan +
    +
    + + + +
    + bx-fast-forward-circle +
    +
    + + + +
    + bx-fast-forward +
    +
    + + + +
    + bx-feather-alt +
    +
    + + + +
    + bx-feather-minus +
    +
    + + + +
    + bx-feather-plus +
    +
    + + + +
    + bx-feather +
    +
    + + + +
    + bx-female +
    +
    + + + +
    + bx-file-code +
    +
    + + + +
    + bx-file-cog +
    +
    + + + +
    + bx-file-detail +
    +
    + + + +
    + bx-file-heart +
    +
    + + + +
    + bx-file-minus +
    +
    + + + +
    + bx-file-plus +
    +
    + + + +
    + bx-file-report +
    +
    + + + +
    + bx-file-search +
    +
    + + + +
    + bx-file-star +
    +
    + + + +
    + bx-file-x +
    +
    + + + +
    + bx-file-zip +
    +
    + + + +
    + bx-file +
    +
    + + + +
    + bx-film-roll-alt +
    +
    + + + +
    + bx-film-roll +
    +
    + + + +
    + bx-film +
    +
    + + + +
    + bx-filter +
    +
    + + + +
    + bx-finger-down +
    +
    + + + +
    + bx-finger-left +
    +
    + + + +
    + bx-finger-right +
    +
    + + + +
    + bx-finger-swipe-down +
    +
    + + + +
    + bx-finger-swipe-left +
    +
    + + + +
    + bx-finger-swipe-right +
    +
    + + + +
    + bx-finger-swipe-up +
    +
    + + + +
    + bx-finger-touch +
    +
    + + + +
    + bx-finger-up +
    +
    + + + +
    + bx-fingerprint +
    +
    + + + +
    + bx-fire-alt +
    +
    + + + +
    + bx-fire-extinguisher +
    +
    + + + +
    + bx-fire +
    +
    + + + +
    + bx-first +
    +
    + + + +
    + bx-fish-alt +
    +
    + + + +
    + bx-fish +
    +
    + + + +
    + bx-flag-alt-2 +
    +
    + + + +
    + bx-flag-alt-3 +
    +
    + + + +
    + bx-flag-alt +
    +
    + + + +
    + bx-flag-chequered +
    +
    + + + +
    + bx-flag +
    +
    + + + +
    + bx-flame +
    +
    + + + +
    + bx-flask-round +
    +
    + + + +
    + bx-florist +
    +
    + + + +
    + bx-flower-alt-2 +
    +
    + + + +
    + bx-flower-alt +
    +
    + + + +
    + bx-flower +
    +
    + + + +
    + bx-folder-check +
    +
    + + + +
    + bx-folder-code +
    +
    + + + +
    + bx-folder-cog +
    +
    + + + +
    + bx-folder-down-arrow +
    +
    + + + +
    + bx-folder-heart +
    +
    + + + +
    + bx-folder-minus +
    +
    + + + +
    + bx-folder-open +
    +
    + + + +
    + bx-folder-plus +
    +
    + + + +
    + bx-folder-search +
    +
    + + + +
    + bx-folder-star +
    +
    + + + +
    + bx-folder-up-arrow +
    +
    + + + +
    + bx-folder-x +
    +
    + + + +
    + bx-folder-zip +
    +
    + + + +
    + bx-folder +
    +
    + + + +
    + bx-font-color +
    +
    + + + +
    + bx-font-family +
    +
    + + + +
    + bx-food-menu +
    +
    + + + +
    + bx-food-tag +
    +
    + + + +
    + bx-football-kick +
    +
    + + + +
    + bx-football-pitch +
    +
    + + + +
    + bx-football +
    +
    + + + +
    + bx-footsteps +
    +
    + + + +
    + bx-foreground +
    +
    + + + +
    + bx-fork-knife +
    +
    + + + +
    + bx-fork-spoon +
    +
    + + + +
    + bx-fork +
    +
    + + + +
    + bx-form +
    +
    + + + +
    + bx-forward-big +
    +
    + + + +
    + bx-forward-slash-circle +
    +
    + + + +
    + bx-forward-slash-square +
    +
    + + + +
    + bx-forward-slash +
    +
    + + + +
    + bx-forward-stroke +
    +
    + + + +
    + bx-forward +
    +
    + + + +
    + bx-frame +
    +
    + + + +
    + bx-fridge +
    +
    + + + +
    + bx-fullscreen-exit +
    +
    + + + +
    + bx-fullscreen +
    +
    + + + +
    + bx-function +
    +
    + + + +
    + bx-functions +
    +
    + + + +
    + bx-future +
    +
    + + + +
    + bx-gallery-horizontal-end +
    +
    + + + +
    + bx-gallery-horizontal +
    +
    + + + +
    + bx-gallery-thumbnails +
    +
    + + + +
    + bx-gallery-vertical-end +
    +
    + + + +
    + bx-gallery-vertical +
    +
    + + + +
    + bx-gaming +
    +
    + + + +
    + bx-garage +
    +
    + + + +
    + bx-gavel +
    +
    + + + +
    + bx-gear +
    +
    + + + +
    + bx-gem +
    +
    + + + +
    + bx-gestures +
    +
    + + + +
    + bx-ghost +
    +
    + + + +
    + bx-gift +
    +
    + + + +
    + bx-git-branch +
    +
    + + + +
    + bx-git-commit +
    +
    + + + +
    + bx-git-compare +
    +
    + + + +
    + bx-git-merge-queue +
    +
    + + + +
    + bx-git-merge +
    +
    + + + +
    + bx-git-pull-request-closed +
    +
    + + + +
    + bx-git-pull-request-draft +
    +
    + + + +
    + bx-git-pull-request +
    +
    + + + +
    + bx-git-repo-forked +
    +
    + + + +
    + bx-glasses-alt +
    +
    + + + +
    + bx-glasses +
    +
    + + + +
    + bx-globe-africa +
    +
    + + + +
    + bx-globe-alt-2 +
    +
    + + + +
    + bx-globe-alt +
    +
    + + + +
    + bx-globe-americas +
    +
    + + + +
    + bx-globe-antartica +
    +
    + + + +
    + bx-globe-asia +
    +
    + + + +
    + bx-globe-europe +
    +
    + + + +
    + bx-globe-oceania +
    +
    + + + +
    + bx-globe-stand +
    +
    + + + +
    + bx-globe +
    +
    + + + +
    + bx-golf-ball +
    +
    + + + +
    + bx-gradient +
    +
    + + + +
    + bx-greater-than-equal +
    +
    + + + +
    + bx-greater-than +
    +
    + + + +
    + bx-grid-9 +
    +
    + + + +
    + bx-grid-circle-diagonal-left +
    +
    + + + +
    + bx-grid-circle-diagonal-right +
    +
    + + + +
    + bx-grid-circle-plus +
    +
    + + + +
    + bx-grid-circle +
    +
    + + + +
    + bx-grid-column-left +
    +
    + + + +
    + bx-grid-column-right +
    +
    + + + +
    + bx-grid-lines-3 +
    +
    + + + +
    + bx-grid-lines +
    +
    + + + +
    + bx-grid-plus +
    +
    + + + +
    + bx-grid-row-bottom +
    +
    + + + +
    + bx-grid-row-top +
    +
    + + + +
    + bx-grid-search +
    +
    + + + +
    + bx-grid +
    +
    + + + +
    + bx-groceries +
    +
    + + + +
    + bx-group-alt +
    +
    + + + +
    + bx-group +
    +
    + + + +
    + bx-guitar-amp +
    +
    + + + +
    + bx-hail +
    +
    + + + +
    + bx-hand-rock +
    +
    + + + +
    + bx-hand +
    +
    + + + +
    + bx-handheld-alt-2 +
    +
    + + + +
    + bx-handheld-alt +
    +
    + + + +
    + bx-handheld +
    +
    + + + +
    + bx-handshake +
    +
    + + + +
    + bx-hanger +
    +
    + + + +
    + bx-happy-alt +
    +
    + + + +
    + bx-happy-beaming +
    +
    + + + +
    + bx-happy-heart-eyes +
    +
    + + + +
    + bx-happy +
    +
    + + + +
    + bx-hard-drive +
    +
    + + + +
    + bx-hard-hat +
    +
    + + + +
    + bx-hashtag +
    +
    + + + +
    + bx-hdmi +
    +
    + + + +
    + bx-head +
    +
    + + + +
    + bx-heading-1 +
    +
    + + + +
    + bx-heading-2 +
    +
    + + + +
    + bx-heading-3 +
    +
    + + + +
    + bx-heading +
    +
    + + + +
    + bx-headphone-alt-2 +
    +
    + + + +
    + bx-headphone-alt +
    +
    + + + +
    + bx-headphone-mic +
    +
    + + + +
    + bx-headphone +
    +
    + + + +
    + bx-heart-break +
    +
    + + + +
    + bx-heart-circle +
    +
    + + + +
    + bx-heart-half +
    +
    + + + +
    + bx-heart-plus +
    +
    + + + +
    + bx-heart-square +
    +
    + + + +
    + bx-heart +
    +
    + + + +
    + bx-heat-wave +
    +
    + + + +
    + bx-helmet +
    +
    + + + +
    + bx-help-circle +
    +
    + + + +
    + bx-help-octagon +
    +
    + + + +
    + bx-hexagon +
    +
    + + + +
    + bx-high-speed-train +
    +
    + + + +
    + bx-highlight +
    +
    + + + +
    + bx-highlights +
    +
    + + + +
    + bx-hinduism +
    +
    + + + +
    + bx-history +
    +
    + + + +
    + bx-home-add +
    +
    + + + +
    + bx-home-alt-2 +
    +
    + + + +
    + bx-home-alt-3 +
    +
    + + + +
    + bx-home-alt +
    +
    + + + +
    + bx-home-circle +
    +
    + + + +
    + bx-home-heart +
    +
    + + + +
    + bx-home +
    +
    + + + +
    + bx-honey +
    +
    + + + +
    + bx-horizon-sea +
    +
    + + + +
    + bx-horizontal-align-center +
    +
    + + + +
    + bx-horizontal-align-left +
    +
    + + + +
    + bx-horizontal-align-right +
    +
    + + + +
    + bx-horizontal-center +
    +
    + + + +
    + bx-horizontal-distribute-center +
    +
    + + + +
    + bx-horizontal-distribute-left +
    +
    + + + +
    + bx-horizontal-distribute-right +
    +
    + + + +
    + bx-horizontal-left +
    +
    + + + +
    + bx-horizontal-right +
    +
    + + + +
    + bx-horizontal-spacing +
    +
    + + + +
    + bx-hospital +
    +
    + + + +
    + bx-hot-tub-water +
    +
    + + + +
    + bx-hot-tub +
    +
    + + + +
    + bx-hot +
    +
    + + + +
    + bx-hourglass +
    +
    + + + +
    + bx-hurricane +
    +
    + + + +
    + bx-icecream +
    +
    + + + +
    + bx-iframe +
    +
    + + + +
    + bx-image-alt +
    +
    + + + +
    + bx-image-circle +
    +
    + + + +
    + bx-image-landscape +
    +
    + + + +
    + bx-image-no-background +
    +
    + + + +
    + bx-image-plus +
    +
    + + + +
    + bx-image-portrait +
    +
    + + + +
    + bx-image-sparkle +
    +
    + + + +
    + bx-image +
    +
    + + + +
    + bx-images +
    +
    + + + +
    + bx-inbox +
    +
    + + + +
    + bx-incognito +
    +
    + + + +
    + bx-infinite +
    +
    + + + +
    + bx-info-circle +
    +
    + + + +
    + bx-info-octagon +
    +
    + + + +
    + bx-info-shield +
    +
    + + + +
    + bx-info-square +
    +
    + + + +
    + bx-inner-shadow +
    +
    + + + +
    + bx-institution +
    +
    + + + +
    + bx-integral +
    +
    + + + +
    + bx-intellect +
    +
    + + + +
    + bx-invert-adjust +
    +
    + + + +
    + bx-invert +
    +
    + + + +
    + bx-islam +
    +
    + + + +
    + bx-island +
    +
    + + + +
    + bx-italic +
    +
    + + + +
    + bx-joystick-alt +
    +
    + + + +
    + bx-joystick-button-alt +
    +
    + + + +
    + bx-joystick-button +
    +
    + + + +
    + bx-joystick +
    +
    + + + +
    + bx-judaism +
    +
    + + + +
    + bx-key-alt +
    +
    + + + +
    + bx-key +
    +
    + + + +
    + bx-keyboard +
    +
    + + + +
    + bx-keyframe-ease-in +
    +
    + + + +
    + bx-keyframe-ease-out +
    +
    + + + +
    + bx-keyframe-easy-ease +
    +
    + + + +
    + bx-keyframe-hold-ease-in +
    +
    + + + +
    + bx-keyframe-hold-ease-out +
    +
    + + + +
    + bx-keyframe-hold-linear-in +
    +
    + + + +
    + bx-keyframe-hold-linear-out +
    +
    + + + +
    + bx-keyframe +
    +
    + + + +
    + bx-knife +
    +
    + + + +
    + bx-lambda +
    +
    + + + +
    + bx-landmark +
    +
    + + + +
    + bx-laptop-alt +
    +
    + + + +
    + bx-laptop +
    +
    + + + +
    + bx-lasso +
    +
    + + + +
    + bx-last +
    +
    + + + +
    + bx-laugh +
    +
    + + + +
    + bx-law +
    +
    + + + +
    + bx-layers-alt +
    +
    + + + +
    + bx-layers-down-left +
    +
    + + + +
    + bx-layers-down-right +
    +
    + + + +
    + bx-layers-minus-alt +
    +
    + + + +
    + bx-layers-plus-alt +
    +
    + + + +
    + bx-layers +
    +
    + + + +
    + bx-layout-check +
    +
    + + + +
    + bx-layout-minus +
    +
    + + + +
    + bx-layout-plus +
    +
    + + + +
    + bx-layout-search +
    +
    + + + +
    + bx-layout +
    +
    + + + +
    + bx-leaf-alt +
    +
    + + + +
    + bx-leaf +
    +
    + + + +
    + bx-left-indent +
    +
    + + + +
    + bx-lemon +
    +
    + + + +
    + bx-less-than-equal +
    +
    + + + +
    + bx-less-than +
    +
    + + + +
    + bx-letter-spacing-alt +
    +
    + + + +
    + bx-letter-spacing +
    +
    + + + +
    + bx-light-bulb-alt-2 +
    +
    + + + +
    + bx-light-bulb-alt +
    +
    + + + +
    + bx-light-bulb-on +
    +
    + + + +
    + bx-light-bulb +
    +
    + + + +
    + bx-like +
    +
    + + + +
    + bx-line-chart-square +
    +
    + + + +
    + bx-line-spacing-alt +
    +
    + + + +
    + bx-line-spacing +
    +
    + + + +
    + bx-link-alt +
    +
    + + + +
    + bx-link-break +
    +
    + + + +
    + bx-link +
    +
    + + + +
    + bx-lira +
    +
    + + + +
    + bx-list-minus +
    +
    + + + +
    + bx-list-music +
    +
    + + + +
    + bx-list-ol +
    +
    + + + +
    + bx-list-play +
    +
    + + + +
    + bx-list-plus +
    +
    + + + +
    + bx-list-square +
    +
    + + + +
    + bx-list-ul-square +
    +
    + + + +
    + bx-list-ul +
    +
    + + + +
    + bx-list-x +
    +
    + + + +
    + bx-list +
    +
    + + + +
    + bx-loader-dots +
    +
    + + + +
    + bx-loader-lines-alt +
    +
    + + + +
    + bx-loader-lines +
    +
    + + + +
    + bx-location-alt-2 +
    +
    + + + +
    + bx-location-alt +
    +
    + + + +
    + bx-location-blank +
    +
    + + + +
    + bx-location-check +
    +
    + + + +
    + bx-location-pin +
    +
    + + + +
    + bx-location-plus +
    +
    + + + +
    + bx-location-x +
    +
    + + + +
    + bx-location +
    +
    + + + +
    + bx-lock-keyhole-open-alt +
    +
    + + + +
    + bx-lock-keyhole-open +
    +
    + + + +
    + bx-lock-keyhole +
    +
    + + + +
    + bx-lock-open-alt +
    +
    + + + +
    + bx-lock-open +
    +
    + + + +
    + bx-lock +
    +
    + + + +
    + bx-lotion +
    +
    + + + +
    + bx-low-vision +
    +
    + + + +
    + bx-lowercase +
    +
    + + + +
    + bx-luggage +
    +
    + + + +
    + bx-lungs +
    +
    + + + +
    + bx-magic-wand +
    +
    + + + +
    + bx-magnet +
    +
    + + + +
    + bx-mail-open +
    +
    + + + +
    + bx-male +
    +
    + + + +
    + bx-man-woman +
    +
    + + + +
    + bx-man +
    +
    + + + +
    + bx-map +
    +
    + + + +
    + bx-margin-bottom +
    +
    + + + +
    + bx-margin-left +
    +
    + + + +
    + bx-margin-right +
    +
    + + + +
    + bx-margin-top +
    +
    + + + +
    + bx-martini +
    +
    + + + +
    + bx-mask +
    +
    + + + +
    + bx-math-alt +
    +
    + + + +
    + bx-math +
    +
    + + + +
    + bx-maximize +
    +
    + + + +
    + bx-meat +
    +
    + + + +
    + bx-medal-alt-2 +
    +
    + + + +
    + bx-medal-alt +
    +
    + + + +
    + bx-medal-star-alt-2 +
    +
    + + + +
    + bx-medal-star-alt +
    +
    + + + +
    + bx-medal-star +
    +
    + + + +
    + bx-medal +
    +
    + + + +
    + bx-medical-flask +
    +
    + + + +
    + bx-medical-kit +
    +
    + + + +
    + bx-megaphone-alt +
    +
    + + + +
    + bx-megaphone +
    +
    + + + +
    + bx-meh-alt +
    +
    + + + +
    + bx-meh-blank +
    +
    + + + +
    + bx-meh +
    +
    + + + +
    + bx-menorah +
    +
    + + + +
    + bx-menu-close +
    +
    + + + +
    + bx-menu-closer +
    +
    + + + +
    + bx-menu-filter +
    +
    + + + +
    + bx-menu-left +
    +
    + + + +
    + bx-menu-notification +
    +
    + + + +
    + bx-menu-right +
    +
    + + + +
    + bx-menu-search +
    +
    + + + +
    + bx-menu-select +
    +
    + + + +
    + bx-menu-wide +
    +
    + + + +
    + bx-menu-wider +
    +
    + + + +
    + bx-menu +
    +
    + + + +
    + bx-merge +
    +
    + + + +
    + bx-mesh +
    +
    + + + +
    + bx-message-bubble-captions +
    +
    + + + +
    + bx-message-bubble-check +
    +
    + + + +
    + bx-message-bubble-code +
    +
    + + + +
    + bx-message-bubble-detail +
    +
    + + + +
    + bx-message-bubble-dots-2 +
    +
    + + + +
    + bx-message-bubble-dots +
    +
    + + + +
    + bx-message-bubble-edit +
    +
    + + + +
    + bx-message-bubble-exclamation +
    +
    + + + +
    + bx-message-bubble-heart +
    +
    + + + +
    + bx-message-bubble-image +
    +
    + + + +
    + bx-message-bubble-minus +
    +
    + + + +
    + bx-message-bubble-notification +
    +
    + + + +
    + bx-message-bubble-plus +
    +
    + + + +
    + bx-message-bubble-question-mark +
    +
    + + + +
    + bx-message-bubble-reply +
    +
    + + + +
    + bx-message-bubble-star +
    +
    + + + +
    + bx-message-bubble-x +
    +
    + + + +
    + bx-message-bubble +
    +
    + + + +
    + bx-message-captions +
    +
    + + + +
    + bx-message-check +
    +
    + + + +
    + bx-message-circle-captions +
    +
    + + + +
    + bx-message-circle-check +
    +
    + + + +
    + bx-message-circle-code +
    +
    + + + +
    + bx-message-circle-detail +
    +
    + + + +
    + bx-message-circle-dots-2 +
    +
    + + + +
    + bx-message-circle-dots +
    +
    + + + +
    + bx-message-circle-edit +
    +
    + + + +
    + bx-message-circle-exclamation +
    +
    + + + +
    + bx-message-circle-heart +
    +
    + + + +
    + bx-message-circle-image +
    +
    + + + +
    + bx-message-circle-minus +
    +
    + + + +
    + bx-message-circle-notification +
    +
    + + + +
    + bx-message-circle-plus +
    +
    + + + +
    + bx-message-circle-question-mark +
    +
    + + + +
    + bx-message-circle-reply +
    +
    + + + +
    + bx-message-circle-star +
    +
    + + + +
    + bx-message-circle-x +
    +
    + + + +
    + bx-message-circle +
    +
    + + + +
    + bx-message-code +
    +
    + + + +
    + bx-message-detail +
    +
    + + + +
    + bx-message-dots-2 +
    +
    + + + +
    + bx-message-dots +
    +
    + + + +
    + bx-message-edit +
    +
    + + + +
    + bx-message-exclamation +
    +
    + + + +
    + bx-message-heart +
    +
    + + + +
    + bx-message-image +
    +
    + + + +
    + bx-message-minus +
    +
    + + + +
    + bx-message-notification +
    +
    + + + +
    + bx-message-plus +
    +
    + + + +
    + bx-message-question-mark +
    +
    + + + +
    + bx-message-reply +
    +
    + + + +
    + bx-message-star +
    +
    + + + +
    + bx-message-x +
    +
    + + + +
    + bx-message +
    +
    + + + +
    + bx-meteor +
    +
    + + + +
    + bx-microchip +
    +
    + + + +
    + bx-microphone-alt-2 +
    +
    + + + +
    + bx-microphone-alt +
    +
    + + + +
    + bx-microphone-big-alt +
    +
    + + + +
    + bx-microphone-big +
    +
    + + + +
    + bx-microphone-slash +
    +
    + + + +
    + bx-microphone +
    +
    + + + +
    + bx-microscope +
    +
    + + + +
    + bx-microwave-oven +
    +
    + + + +
    + bx-milk-bottle +
    +
    + + + +
    + bx-minimize +
    +
    + + + +
    + bx-minus-circle +
    +
    + + + +
    + bx-minus-plus +
    +
    + + + +
    + bx-minus-shield +
    +
    + + + +
    + bx-minus-square +
    +
    + + + +
    + bx-minus +
    +
    + + + +
    + bx-mobile-alt-2 +
    +
    + + + +
    + bx-mobile-alt +
    +
    + + + +
    + bx-mobile-back-alt-2 +
    +
    + + + +
    + bx-mobile-back-alt +
    +
    + + + +
    + bx-mobile-back +
    +
    + + + +
    + bx-mobile-ring +
    +
    + + + +
    + bx-mobile +
    +
    + + + +
    + bx-monitor-wallpaper +
    +
    + + + +
    + bx-monitor-wide +
    +
    + + + +
    + bx-monitor +
    +
    + + + +
    + bx-moon-crater +
    +
    + + + +
    + bx-moon-phase-0 +
    +
    + + + +
    + bx-moon-phase-1 +
    +
    + + + +
    + bx-moon-phase-2 +
    +
    + + + +
    + bx-moon-phase-3 +
    +
    + + + +
    + bx-moon-phase-4 +
    +
    + + + +
    + bx-moon-phase-5 +
    +
    + + + +
    + bx-moon-phase-6 +
    +
    + + + +
    + bx-moon-star +
    +
    + + + +
    + bx-moon +
    +
    + + + +
    + bx-mosque +
    +
    + + + +
    + bx-motion-alt +
    +
    + + + +
    + bx-motion +
    +
    + + + +
    + bx-motorcycle +
    +
    + + + +
    + bx-mountain-peak +
    +
    + + + +
    + bx-mountain-view +
    +
    + + + +
    + bx-mountain +
    +
    + + + +
    + bx-mouse-alt +
    +
    + + + +
    + bx-mouse +
    +
    + + + +
    + bx-move-diagonal-left +
    +
    + + + +
    + bx-move-diagonal-right +
    +
    + + + +
    + bx-move-horizontal +
    +
    + + + +
    + bx-move-vertical +
    +
    + + + +
    + bx-move +
    +
    + + + +
    + bx-movie-play +
    +
    + + + +
    + bx-movie +
    +
    + + + +
    + bx-music-alt-2 +
    +
    + + + +
    + bx-music-alt +
    +
    + + + +
    + bx-music-library +
    +
    + + + +
    + bx-music +
    +
    + + + +
    + bx-network-chart +
    +
    + + + +
    + bx-network-device +
    +
    + + + +
    + bx-news +
    +
    + + + +
    + bx-newspaper +
    +
    + + + +
    + bx-night-light +
    +
    + + + +
    + bx-no-entry +
    +
    + + + +
    + bx-noise +
    +
    + + + +
    + bx-not-element-of +
    +
    + + + +
    + bx-not-equal +
    +
    + + + +
    + bx-not-subset +
    +
    + + + +
    + bx-not-superset +
    +
    + + + +
    + bx-note-book +
    +
    + + + +
    + bx-note +
    +
    + + + +
    + bx-notification-slash +
    +
    + + + +
    + bx-notification +
    +
    + + + +
    + bx-nut +
    +
    + + + +
    + bx-octopus +
    +
    + + + +
    + bx-omega +
    +
    + + + +
    + bx-option +
    +
    + + + +
    + bx-outdoor-dining +
    +
    + + + +
    + bx-outer-shadow +
    +
    + + + +
    + bx-oval-vertical +
    +
    + + + +
    + bx-oval +
    +
    + + + +
    + bx-oven +
    +
    + + + +
    + bx-owl +
    +
    + + + +
    + bx-pacifism +
    +
    + + + +
    + bx-package +
    +
    + + + +
    + bx-pacman +
    +
    + + + +
    + bx-paint-alt +
    +
    + + + +
    + bx-paint-roll +
    +
    + + + +
    + bx-paint +
    +
    + + + +
    + bx-palette +
    +
    + + + +
    + bx-pant +
    +
    + + + +
    + bx-paper-plane +
    +
    + + + +
    + bx-paperclip +
    +
    + + + +
    + bx-paragraph-spacing +
    +
    + + + +
    + bx-paragraph +
    +
    + + + +
    + bx-parallel +
    +
    + + + +
    + bx-parent-child +
    +
    + + + +
    + bx-party +
    +
    + + + +
    + bx-paste +
    +
    + + + +
    + bx-path +
    +
    + + + +
    + bx-pause-circle +
    +
    + + + +
    + bx-pause +
    +
    + + + +
    + bx-paw-print +
    +
    + + + +
    + bx-pear +
    +
    + + + +
    + bx-pen-alt +
    +
    + + + +
    + bx-pen-draw +
    +
    + + + +
    + bx-pen-edit-circle +
    +
    + + + +
    + bx-pen-minus +
    +
    + + + +
    + bx-pen-plus +
    +
    + + + +
    + bx-pen +
    +
    + + + +
    + bx-pencil-circle +
    +
    + + + +
    + bx-pencil-draw +
    +
    + + + +
    + bx-pencil-edit-circle +
    +
    + + + +
    + bx-pencil-sparkles +
    +
    + + + +
    + bx-pencil-square +
    +
    + + + +
    + bx-pencil +
    +
    + + + +
    + bx-pentagon +
    +
    + + + +
    + bx-people-diversity +
    +
    + + + +
    + bx-people-handshake +
    +
    + + + +
    + bx-people-heart +
    +
    + + + +
    + bx-percentage +
    +
    + + + +
    + bx-perpendicular +
    +
    + + + +
    + bx-perspective +
    +
    + + + +
    + bx-petrol-pump +
    +
    + + + +
    + bx-pharmacy +
    +
    + + + +
    + bx-phone-book +
    +
    + + + +
    + bx-phone-forwarding +
    +
    + + + +
    + bx-phone-incoming +
    +
    + + + +
    + bx-phone-outgoing +
    +
    + + + +
    + bx-phone-plus +
    +
    + + + +
    + bx-phone-ring +
    +
    + + + +
    + bx-phone-x +
    +
    + + + +
    + bx-phone +
    +
    + + + +
    + bx-photo-album +
    +
    + + + +
    + bx-pi +
    +
    + + + +
    + bx-piano-alt +
    +
    + + + +
    + bx-piano-grand +
    +
    + + + +
    + bx-piano +
    +
    + + + +
    + bx-pickup-truck +
    +
    + + + +
    + bx-picture-in-picture-close +
    +
    + + + +
    + bx-picture-in-picture +
    +
    + + + +
    + bx-pie-chart-alt-2 +
    +
    + + + +
    + bx-pie-chart-alt +
    +
    + + + +
    + bx-pie-chart +
    +
    + + + +
    + bx-piggy-bank +
    +
    + + + +
    + bx-pill-bottle-alt +
    +
    + + + +
    + bx-pill-bottle +
    +
    + + + +
    + bx-pill +
    +
    + + + +
    + bx-pin-alt +
    +
    + + + +
    + bx-pin-slash-alt +
    +
    + + + +
    + bx-pin +
    +
    + + + +
    + bx-pizza-alt +
    +
    + + + +
    + bx-pizza +
    +
    + + + +
    + bx-plane-alt +
    +
    + + + +
    + bx-plane-land +
    +
    + + + +
    + bx-plane-take-off +
    +
    + + + +
    + bx-plane +
    +
    + + + +
    + bx-planet +
    +
    + + + +
    + bx-plant-pot +
    +
    + + + +
    + bx-play-circle-alt +
    +
    + + + +
    + bx-play-circle +
    +
    + + + +
    + bx-play +
    +
    + + + +
    + bx-plug-connect +
    +
    + + + +
    + bx-plus-big +
    +
    + + + +
    + bx-plus-circle +
    +
    + + + +
    + bx-plus-minus +
    +
    + + + +
    + bx-plus-shield +
    +
    + + + +
    + bx-plus-square +
    +
    + + + +
    + bx-plus +
    +
    + + + +
    + bx-podcast +
    +
    + + + +
    + bx-polar-chart +
    +
    + + + +
    + bx-poll +
    +
    + + + +
    + bx-polygon +
    +
    + + + +
    + bx-popsicle +
    +
    + + + +
    + bx-pound +
    +
    + + + +
    + bx-power +
    +
    + + + +
    + bx-prawn +
    +
    + + + +
    + bx-price-tag-alt +
    +
    + + + +
    + bx-price-tag +
    +
    + + + +
    + bx-print-dollar +
    +
    + + + +
    + bx-printer +
    +
    + + + +
    + bx-proper-subset +
    +
    + + + +
    + bx-proper-superset +
    +
    + + + +
    + bx-psychology +
    +
    + + + +
    + bx-puck +
    +
    + + + +
    + bx-pulse +
    +
    + + + +
    + bx-pyramid +
    +
    + + + +
    + bx-qr-scan +
    +
    + + + +
    + bx-qr +
    +
    + + + +
    + bx-queue +
    +
    + + + +
    + bx-quote-left-alt +
    +
    + + + +
    + bx-quote-left +
    +
    + + + +
    + bx-quote-right-alt +
    +
    + + + +
    + bx-quote-right +
    +
    + + + +
    + bx-quote-single-left +
    +
    + + + +
    + bx-quote-single-right +
    +
    + + + +
    + bx-radar +
    +
    + + + +
    + bx-radiation +
    +
    + + + +
    + bx-radio-circle-marked +
    +
    + + + +
    + bx-radio-circle +
    +
    + + + +
    + bx-radio +
    +
    + + + +
    + bx-rainbow +
    +
    + + + +
    + bx-reading-glass +
    +
    + + + +
    + bx-reading +
    +
    + + + +
    + bx-receipt +
    +
    + + + +
    + bx-rectangle-vertical +
    +
    + + + +
    + bx-rectangle-wide +
    +
    + + + +
    + bx-rectangle +
    +
    + + + +
    + bx-recycle +
    +
    + + + +
    + bx-redo-alt +
    +
    + + + +
    + bx-redo-stroke-alt +
    +
    + + + +
    + bx-redo-stroke +
    +
    + + + +
    + bx-redo +
    +
    + + + +
    + bx-reflect-horizontal-alt +
    +
    + + + +
    + bx-reflect-horizontal +
    +
    + + + +
    + bx-reflect-vertical-alt +
    +
    + + + +
    + bx-reflect-vertical +
    +
    + + + +
    + bx-refresh-ccw-alt-dot +
    +
    + + + +
    + bx-refresh-ccw-alt +
    +
    + + + +
    + bx-refresh-ccw-dot +
    +
    + + + +
    + bx-refresh-ccw +
    +
    + + + +
    + bx-refresh-cw-alt-dot +
    +
    + + + +
    + bx-refresh-cw-alt +
    +
    + + + +
    + bx-refresh-cw-dot +
    +
    + + + +
    + bx-refresh-cw +
    +
    + + + +
    + bx-registered +
    +
    + + + +
    + bx-rename +
    +
    + + + +
    + bx-repeat-alt-2 +
    +
    + + + +
    + bx-repeat-alt +
    +
    + + + +
    + bx-repeat +
    +
    + + + +
    + bx-reply-big +
    +
    + + + +
    + bx-reply-stroke +
    +
    + + + +
    + bx-reply +
    +
    + + + +
    + bx-report +
    +
    + + + +
    + bx-rewind-circle +
    +
    + + + +
    + bx-rewind +
    +
    + + + +
    + bx-rfid +
    +
    + + + +
    + bx-rgb +
    +
    + + + +
    + bx-right-angle-triangle-half +
    +
    + + + +
    + bx-right-angle-triangle +
    +
    + + + +
    + bx-right-indent +
    +
    + + + +
    + bx-robot +
    +
    + + + +
    + bx-rocket-alt +
    +
    + + + +
    + bx-rocket +
    +
    + + + +
    + bx-rotate-ccw-10 +
    +
    + + + +
    + bx-rotate-ccw-30 +
    +
    + + + +
    + bx-rotate-ccw-5 +
    +
    + + + +
    + bx-rotate-ccw-dot +
    +
    + + + +
    + bx-rotate-ccw +
    +
    + + + +
    + bx-rotate-cw-10 +
    +
    + + + +
    + bx-rotate-cw-30 +
    +
    + + + +
    + bx-rotate-cw-5 +
    +
    + + + +
    + bx-rotate-cw-dot +
    +
    + + + +
    + bx-rotate-cw +
    +
    + + + +
    + bx-rotate-square-ccw +
    +
    + + + +
    + bx-rotate-square-cw +
    +
    + + + +
    + bx-route +
    +
    + + + +
    + bx-row-resize +
    +
    + + + +
    + bx-rows-3 +
    +
    + + + +
    + bx-rows-4 +
    +
    + + + +
    + bx-rows +
    +
    + + + +
    + bx-rss +
    +
    + + + +
    + bx-ruble +
    +
    + + + +
    + bx-rugby-ball +
    +
    + + + +
    + bx-ruler +
    +
    + + + +
    + bx-running +
    +
    + + + +
    + bx-rupee +
    +
    + + + +
    + bx-sad +
    +
    + + + +
    + bx-safe +
    +
    + + + +
    + bx-sail +
    +
    + + + +
    + bx-sandwich +
    +
    + + + +
    + bx-sapling +
    +
    + + + +
    + bx-save +
    +
    + + + +
    + bx-scale +
    +
    + + + +
    + bx-scan-ar +
    +
    + + + +
    + bx-scan-barcode +
    +
    + + + +
    + bx-scan-detail +
    +
    + + + +
    + bx-scan-face +
    +
    + + + +
    + bx-scan-search +
    +
    + + + +
    + bx-scan +
    +
    + + + +
    + bx-school-bus +
    +
    + + + +
    + bx-school +
    +
    + + + +
    + bx-science +
    +
    + + + +
    + bx-scooter-delivery +
    +
    + + + +
    + bx-scooter +
    +
    + + + +
    + bx-screen-light +
    +
    + + + +
    + bx-screenshot +
    +
    + + + +
    + bx-scribble +
    +
    + + + +
    + bx-scroll +
    +
    + + + +
    + bx-sd-card +
    +
    + + + +
    + bx-sea-view +
    +
    + + + +
    + bx-seal-check +
    +
    + + + +
    + bx-seal +
    +
    + + + +
    + bx-search-alt +
    +
    + + + +
    + bx-search-big-code +
    +
    + + + +
    + bx-search-big-minus +
    +
    + + + +
    + bx-search-big-plus +
    +
    + + + +
    + bx-search-big-x +
    +
    + + + +
    + bx-search-big +
    +
    + + + +
    + bx-search-code +
    +
    + + + +
    + bx-search-minus +
    +
    + + + +
    + bx-search-plus +
    +
    + + + +
    + bx-search-x +
    +
    + + + +
    + bx-search +
    +
    + + + +
    + bx-select-all +
    +
    + + + +
    + bx-select-many +
    +
    + + + +
    + bx-select-none +
    +
    + + + +
    + bx-select +
    +
    + + + +
    + bx-self-care +
    +
    + + + +
    + bx-send-alt-2 +
    +
    + + + +
    + bx-send-alt +
    +
    + + + +
    + bx-send +
    +
    + + + +
    + bx-server +
    +
    + + + +
    + bx-set-intersection +
    +
    + + + +
    + bx-set-union +
    +
    + + + +
    + bx-shadows +
    +
    + + + +
    + bx-shape-exclude-alt +
    +
    + + + +
    + bx-shape-exclude +
    +
    + + + +
    + bx-shape-intersect-alt +
    +
    + + + +
    + bx-shape-intersect +
    +
    + + + +
    + bx-shape-outline-alt +
    +
    + + + +
    + bx-shape-outline +
    +
    + + + +
    + bx-shape-rotate-ccw +
    +
    + + + +
    + bx-shape-rotate-cw +
    +
    + + + +
    + bx-shape-subtract-alt +
    +
    + + + +
    + bx-shape-subtract +
    +
    + + + +
    + bx-shape-trim-alt +
    +
    + + + +
    + bx-shape-trim +
    +
    + + + +
    + bx-shape-unite-alt +
    +
    + + + +
    + bx-shape-unite +
    +
    + + + +
    + bx-shapes-alt-2 +
    +
    + + + +
    + bx-shapes-alt +
    +
    + + + +
    + bx-shapes +
    +
    + + + +
    + bx-share +
    +
    + + + +
    + bx-shekel +
    +
    + + + +
    + bx-shield-alt-2 +
    +
    + + + +
    + bx-shield-alt +
    +
    + + + +
    + bx-shield-circle +
    +
    + + + +
    + bx-shield-half +
    +
    + + + +
    + bx-shield-quarter +
    +
    + + + +
    + bx-shield +
    +
    + + + +
    + bx-shinto +
    +
    + + + +
    + bx-ship +
    +
    + + + +
    + bx-shocked +
    +
    + + + +
    + bx-shopping-bag-alt +
    +
    + + + +
    + bx-shopping-bag +
    +
    + + + +
    + bx-shower +
    +
    + + + +
    + bx-shrink-left +
    +
    + + + +
    + bx-shrink-right +
    +
    + + + +
    + bx-shuffle +
    +
    + + + +
    + bx-shutter-alt +
    +
    + + + +
    + bx-shutter +
    +
    + + + +
    + bx-shuttlecock +
    +
    + + + +
    + bx-sidebar-right +
    +
    + + + +
    + bx-sidebar +
    +
    + + + +
    + bx-sigma +
    +
    + + + +
    + bx-signal-1 +
    +
    + + + +
    + bx-signal-2 +
    +
    + + + +
    + bx-signal-3 +
    +
    + + + +
    + bx-signal-4 +
    +
    + + + +
    + bx-signal-5 +
    +
    + + + +
    + bx-signal-slash +
    +
    + + + +
    + bx-signature +
    +
    + + + +
    + bx-sikhism +
    +
    + + + +
    + bx-sine-wave +
    +
    + + + +
    + bx-siren-alt +
    +
    + + + +
    + bx-siren +
    +
    + + + +
    + bx-sitemap +
    +
    + + + +
    + bx-size-distort +
    +
    + + + +
    + bx-size-freeform +
    +
    + + + +
    + bx-size-uniform +
    +
    + + + +
    + bx-size-warp +
    +
    + + + +
    + bx-skateboard +
    +
    + + + +
    + bx-skip-next-circle +
    +
    + + + +
    + bx-skip-next +
    +
    + + + +
    + bx-skip-previous-circle +
    +
    + + + +
    + bx-skip-previous +
    +
    + + + +
    + bx-skirt +
    +
    + + + +
    + bx-skull +
    +
    + + + +
    + bx-sleepy +
    +
    + + + +
    + bx-slice +
    +
    + + + +
    + bx-slider-alt +
    +
    + + + +
    + bx-slider-vertical-alt +
    +
    + + + +
    + bx-slider-vertical +
    +
    + + + +
    + bx-slider +
    +
    + + + +
    + bx-slideshow +
    +
    + + + +
    + bx-smile +
    +
    + + + +
    + bx-smoke-alarm-alt-2 +
    +
    + + + +
    + bx-smoke-alarm-alt +
    +
    + + + +
    + bx-smoke-alarm +
    +
    + + + +
    + bx-sneaker +
    +
    + + + +
    + bx-snowflake +
    +
    + + + +
    + bx-sock +
    +
    + + + +
    + bx-solar-panel +
    +
    + + + +
    + bx-spa +
    +
    + + + +
    + bx-spacebar +
    +
    + + + +
    + bx-spade +
    +
    + + + +
    + bx-spanner +
    +
    + + + +
    + bx-sparkle-circle +
    +
    + + + +
    + bx-sparkle-square +
    +
    + + + +
    + bx-sparkle +
    +
    + + + +
    + bx-sparkles-alt +
    +
    + + + +
    + bx-sparkles +
    +
    + + + +
    + bx-speaker +
    +
    + + + +
    + bx-sphere +
    +
    + + + +
    + bx-split +
    +
    + + + +
    + bx-spoon +
    +
    + + + +
    + bx-spray-can +
    +
    + + + +
    + bx-square-dashed-half +
    +
    + + + +
    + bx-square-dashed +
    +
    + + + +
    + bx-square-root +
    +
    + + + +
    + bx-square-rounded +
    +
    + + + +
    + bx-square-small +
    +
    + + + +
    + bx-square +
    +
    + + + +
    + bx-squircle +
    +
    + + + +
    + bx-stadium +
    +
    + + + +
    + bx-stamp +
    +
    + + + +
    + bx-star-circle +
    +
    + + + +
    + bx-star-half +
    +
    + + + +
    + bx-star-square +
    +
    + + + +
    + bx-star +
    +
    + + + +
    + bx-station +
    +
    + + + +
    + bx-steering-wheel +
    +
    + + + +
    + bx-steps-down +
    +
    + + + +
    + bx-steps-up +
    +
    + + + +
    + bx-sticker +
    +
    + + + +
    + bx-stop-circle +
    +
    + + + +
    + bx-stop +
    +
    + + + +
    + bx-stopwatch +
    +
    + + + +
    + bx-store-alt-2 +
    +
    + + + +
    + bx-store-alt +
    +
    + + + +
    + bx-store +
    +
    + + + +
    + bx-strategy +
    +
    + + + +
    + bx-street-view +
    +
    + + + +
    + bx-strikethrough +
    +
    + + + +
    + bx-stroke-drawing +
    +
    + + + +
    + bx-stroke-freehand +
    +
    + + + +
    + bx-stroke-ink +
    +
    + + + +
    + bx-stroke-pen +
    +
    + + + +
    + bx-subscript +
    +
    + + + +
    + bx-subset +
    +
    + + + +
    + bx-subway +
    +
    + + + +
    + bx-sun-bright +
    +
    + + + +
    + bx-sun-dim +
    +
    + + + +
    + bx-sun-drizzle +
    +
    + + + +
    + bx-sun-fog +
    +
    + + + +
    + bx-sun-rain-wind +
    +
    + + + +
    + bx-sun-rain +
    +
    + + + +
    + bx-sun-rise +
    +
    + + + +
    + bx-sun-set +
    +
    + + + +
    + bx-sun-snow +
    +
    + + + +
    + bx-sun +
    +
    + + + +
    + bx-superscript +
    +
    + + + +
    + bx-superset +
    +
    + + + +
    + bx-surfboard +
    +
    + + + +
    + bx-sushi +
    +
    + + + +
    + bx-swap-diagonal +
    +
    + + + +
    + bx-swap-horizontal +
    +
    + + + +
    + bx-swap-vertical +
    +
    + + + +
    + bx-swatch +
    +
    + + + +
    + bx-swimming-pool +
    +
    + + + +
    + bx-swimming +
    +
    + + + +
    + bx-sword-alt +
    +
    + + + +
    + bx-sword +
    +
    + + + +
    + bx-syringe +
    +
    + + + +
    + bx-t-shirt +
    +
    + + + +
    + bx-tab +
    +
    + + + +
    + bx-table-cells-large +
    +
    + + + +
    + bx-table-cells +
    +
    + + + +
    + bx-table-columns-merge +
    +
    + + + +
    + bx-table-columns-split +
    +
    + + + +
    + bx-table-columns +
    +
    + + + +
    + bx-table-layout +
    +
    + + + +
    + bx-table-list +
    +
    + + + +
    + bx-table-rows-merge +
    +
    + + + +
    + bx-table-rows-split +
    +
    + + + +
    + bx-table-rows +
    +
    + + + +
    + bx-table-tennis +
    +
    + + + +
    + bx-table +
    +
    + + + +
    + bx-tablet +
    +
    + + + +
    + bx-tabs +
    +
    + + + +
    + bx-tachometer-alt +
    +
    + + + +
    + bx-tachometer +
    +
    + + + +
    + bx-taco +
    +
    + + + +
    + bx-tag-alt +
    +
    + + + +
    + bx-tag-x +
    +
    + + + +
    + bx-tag +
    +
    + + + +
    + bx-takeaway +
    +
    + + + +
    + bx-target +
    +
    + + + +
    + bx-taxi +
    +
    + + + +
    + bx-temple +
    +
    + + + +
    + bx-tennis-ball-alt +
    +
    + + + +
    + bx-tennis-ball +
    +
    + + + +
    + bx-tennis +
    +
    + + + +
    + bx-tent +
    +
    + + + +
    + bx-terminal +
    +
    + + + +
    + bx-test-tube +
    +
    + + + +
    + bx-text-height +
    +
    + + + +
    + bx-text-underline +
    +
    + + + +
    + bx-text-width +
    +
    + + + +
    + bx-texture +
    +
    + + + +
    + bx-thermometer +
    +
    + + + +
    + bx-thought-bubble +
    +
    + + + +
    + bx-thread-roll +
    +
    + + + +
    + bx-thumb-down +
    +
    + + + +
    + bx-thumb-up +
    +
    + + + +
    + bx-thunder +
    +
    + + + +
    + bx-ticket-star +
    +
    + + + +
    + bx-ticket +
    +
    + + + +
    + bx-tickets +
    +
    + + + +
    + bx-timer +
    +
    + + + +
    + bx-tiny-home +
    +
    + + + +
    + bx-tired +
    +
    + + + +
    + bx-toggle-big-left +
    +
    + + + +
    + bx-toggle-big-right +
    +
    + + + +
    + bx-toggle-left +
    +
    + + + +
    + bx-toggle-right +
    +
    + + + +
    + bx-toggles +
    +
    + + + +
    + bx-toilet-roll +
    +
    + + + +
    + bx-tooth +
    +
    + + + +
    + bx-torch +
    +
    + + + +
    + bx-tornado +
    +
    + + + +
    + bx-torus +
    +
    + + + +
    + bx-towel +
    +
    + + + +
    + bx-toy-car +
    +
    + + + +
    + bx-traffic-barrier +
    +
    + + + +
    + bx-traffic-cone +
    +
    + + + +
    + bx-train +
    +
    + + + +
    + bx-tram +
    +
    + + + +
    + bx-transgender +
    +
    + + + +
    + bx-translate +
    +
    + + + +
    + bx-transparency +
    +
    + + + +
    + bx-trash-alt +
    +
    + + + +
    + bx-trash-x +
    +
    + + + +
    + bx-trash +
    +
    + + + +
    + bx-treasure-chest +
    +
    + + + +
    + bx-tree-alt +
    +
    + + + +
    + bx-tree +
    +
    + + + +
    + bx-trees +
    +
    + + + +
    + bx-trending-down +
    +
    + + + +
    + bx-trending-up +
    +
    + + + +
    + bx-triangle-half +
    +
    + + + +
    + bx-triangle +
    +
    + + + +
    + bx-trip +
    +
    + + + +
    + bx-trophy-star +
    +
    + + + +
    + bx-trophy +
    +
    + + + +
    + bx-truck +
    +
    + + + +
    + bx-turkey-meat +
    +
    + + + +
    + bx-turn-down +
    +
    + + + +
    + bx-turn-left +
    +
    + + + +
    + bx-turn-right +
    +
    + + + +
    + bx-turn-up +
    +
    + + + +
    + bx-tv-alt +
    +
    + + + +
    + bx-tv +
    +
    + + + +
    + bx-ufo +
    +
    + + + +
    + bx-umbrella-alt +
    +
    + + + +
    + bx-umbrella +
    +
    + + + +
    + bx-underline-dashed +
    +
    + + + +
    + bx-underline-dotted +
    +
    + + + +
    + bx-underline-wavy +
    +
    + + + +
    + bx-underline +
    +
    + + + +
    + bx-undershirt +
    +
    + + + +
    + bx-undo-alt +
    +
    + + + +
    + bx-undo-stroke-alt +
    +
    + + + +
    + bx-undo-stroke +
    +
    + + + +
    + bx-undo +
    +
    + + + +
    + bx-universal-access +
    +
    + + + +
    + bx-unlink-alt +
    +
    + + + +
    + bx-unlink +
    +
    + + + +
    + bx-uppercase +
    +
    + + + +
    + bx-upside-down +
    +
    + + + +
    + bx-usb +
    +
    + + + +
    + bx-user-check +
    +
    + + + +
    + bx-user-circle +
    +
    + + + +
    + bx-user-hexagon +
    +
    + + + +
    + bx-user-id-card +
    +
    + + + +
    + bx-user-minus +
    +
    + + + +
    + bx-user-plus +
    +
    + + + +
    + bx-user-search +
    +
    + + + +
    + bx-user-square +
    +
    + + + +
    + bx-user-voice +
    +
    + + + +
    + bx-user-x +
    +
    + + + +
    + bx-user +
    +
    + + + +
    + bx-van +
    +
    + + + +
    + bx-variable +
    +
    + + + +
    + bx-vector-square +
    +
    + + + +
    + bx-vector-triangle +
    +
    + + + +
    + bx-vector +
    +
    + + + +
    + bx-vertical-align-bottom +
    +
    + + + +
    + bx-vertical-align-center +
    +
    + + + +
    + bx-vertical-align-top +
    +
    + + + +
    + bx-vertical-bottom +
    +
    + + + +
    + bx-vertical-center +
    +
    + + + +
    + bx-vertical-distribute-bottom +
    +
    + + + +
    + bx-vertical-distribute-center +
    +
    + + + +
    + bx-vertical-distribute-top +
    +
    + + + +
    + bx-vertical-spacing +
    +
    + + + +
    + bx-vertical-top +
    +
    + + + +
    + bx-vial-alt +
    +
    + + + +
    + bx-vial +
    +
    + + + +
    + bx-video-cinema +
    +
    + + + +
    + bx-video-plus +
    +
    + + + +
    + bx-video-slash +
    +
    + + + +
    + bx-video +
    +
    + + + +
    + bx-vignette +
    +
    + + + +
    + bx-virus-slash +
    +
    + + + +
    + bx-virus +
    +
    + + + +
    + bx-voicemail +
    +
    + + + +
    + bx-volleyball +
    +
    + + + +
    + bx-volume-full +
    +
    + + + +
    + bx-volume-low +
    +
    + + + +
    + bx-volume-mute +
    +
    + + + +
    + bx-volume +
    +
    + + + +
    + bx-vr-goggles +
    +
    + + + +
    + bx-vr-headset +
    +
    + + + +
    + bx-waffle +
    +
    + + + +
    + bx-walking +
    +
    + + + +
    + bx-wall +
    +
    + + + +
    + bx-wallet-alt +
    +
    + + + +
    + bx-wallet-cards +
    +
    + + + +
    + bx-wallet-note +
    +
    + + + +
    + bx-wallet +
    +
    + + + +
    + bx-warehouse +
    +
    + + + +
    + bx-washer +
    +
    + + + +
    + bx-water-drop-alt +
    +
    + + + +
    + bx-water-drop-half +
    +
    + + + +
    + bx-water-drop +
    +
    + + + +
    + bx-water-spray +
    +
    + + + +
    + bx-water +
    +
    + + + +
    + bx-watermelon +
    +
    + + + +
    + bx-waveform +
    +
    + + + +
    + bx-webcam +
    +
    + + + +
    + bx-webhook +
    +
    + + + +
    + bx-whiteboard-alt +
    +
    + + + +
    + bx-whiteboard +
    +
    + + + +
    + bx-widget-horizontal +
    +
    + + + +
    + bx-widget-small +
    +
    + + + +
    + bx-widget-vertical +
    +
    + + + +
    + bx-widget +
    +
    + + + +
    + bx-wifi-0 +
    +
    + + + +
    + bx-wifi-1 +
    +
    + + + +
    + bx-wifi-2 +
    +
    + + + +
    + bx-wifi-slash +
    +
    + + + +
    + bx-wifi +
    +
    + + + +
    + bx-wind +
    +
    + + + +
    + bx-window-arrow-in +
    +
    + + + +
    + bx-window-arrow-out +
    +
    + + + +
    + bx-window-mac-alt +
    +
    + + + +
    + bx-window-mac +
    +
    + + + +
    + bx-window +
    +
    + + + +
    + bx-windows +
    +
    + + + +
    + bx-wine-alt +
    +
    + + + +
    + bx-wine +
    +
    + + + +
    + bx-wink-smile +
    +
    + + + +
    + bx-wink-tongue +
    +
    + + + +
    + bx-woman +
    +
    + + + +
    + bx-won +
    +
    + + + +
    + bx-wrist-watch-alt +
    +
    + + + +
    + bx-wrist-watch-round-alt +
    +
    + + + +
    + bx-wrist-watch-round +
    +
    + + + +
    + bx-wrist-watch +
    +
    + + + +
    + bx-x-circle +
    +
    + + + +
    + bx-x-shield +
    +
    + + + +
    + bx-x-square +
    +
    + + + +
    + bx-x +
    +
    + + + +
    + bx-yarn-ball +
    +
    + + + +
    + bx-yen +
    +
    + + + +
    + bx-yin-yang +
    +
    + + + +
    + bxs-8-ball +
    +
    + + + +
    + bxs-a-arrow-down +
    +
    + + + +
    + bxs-a-arrow-up +
    +
    + + + +
    + bxs-accessibility +
    +
    + + + +
    + bxs-acorn +
    +
    + + + +
    + bxs-address-book +
    +
    + + + +
    + bxs-air-conditioner +
    +
    + + + +
    + bxs-air +
    +
    + + + +
    + bxs-airplay +
    +
    + + + +
    + bxs-alarm-alt +
    +
    + + + +
    + bxs-alarm-check +
    +
    + + + +
    + bxs-alarm-exclamation +
    +
    + + + +
    + bxs-alarm-minus +
    +
    + + + +
    + bxs-alarm-plus +
    +
    + + + +
    + bxs-alarm-slash +
    +
    + + + +
    + bxs-alarm-z +
    +
    + + + +
    + bxs-alarm +
    +
    + + + +
    + bxs-album-covers +
    +
    + + + +
    + bxs-alert-circle +
    +
    + + + +
    + bxs-alert-octagon +
    +
    + + + +
    + bxs-alert-shield +
    +
    + + + +
    + bxs-alert-square +
    +
    + + + +
    + bxs-alert-triangle +
    +
    + + + +
    + bxs-alien +
    +
    + + + +
    + bxs-align-center +
    +
    + + + +
    + bxs-align-horizontal-justify-center +
    +
    + + + +
    + bxs-align-horizontal-justify-end +
    +
    + + + +
    + bxs-align-horizontal-justify-start +
    +
    + + + +
    + bxs-align-horizontal-space-between +
    +
    + + + +
    + bxs-align-justify +
    +
    + + + +
    + bxs-align-left +
    +
    + + + +
    + bxs-align-right +
    +
    + + + +
    + bxs-align-vertical-justify-center +
    +
    + + + +
    + bxs-align-vertical-justify-end +
    +
    + + + +
    + bxs-align-vertical-justify-start +
    +
    + + + +
    + bxs-align-vertical-space-between +
    +
    + + + +
    + bxs-ambulance +
    +
    + + + +
    + bxs-ampersand +
    +
    + + + +
    + bxs-analyze +
    +
    + + + +
    + bxs-anchor +
    +
    + + + +
    + bxs-angle +
    +
    + + + +
    + bxs-angry +
    +
    + + + +
    + bxs-animation-bounce +
    +
    + + + +
    + bxs-apartment +
    +
    + + + +
    + bxs-approximate +
    +
    + + + +
    + bxs-apps-alt +
    +
    + + + +
    + bxs-apps +
    +
    + + + +
    + bxs-arch +
    +
    + + + +
    + bxs-archive-alt +
    +
    + + + +
    + bxs-archive-arrow-down +
    +
    + + + +
    + bxs-archive-arrow-up +
    +
    + + + +
    + bxs-archive +
    +
    + + + +
    + bxs-area +
    +
    + + + +
    + bxs-arrow-big-down-line +
    +
    + + + +
    + bxs-arrow-big-down +
    +
    + + + +
    + bxs-arrow-big-left-line +
    +
    + + + +
    + bxs-arrow-big-left +
    +
    + + + +
    + bxs-arrow-big-right-line +
    +
    + + + +
    + bxs-arrow-big-right +
    +
    + + + +
    + bxs-arrow-big-up-line +
    +
    + + + +
    + bxs-arrow-big-up +
    +
    + + + +
    + bxs-arrow-cross +
    +
    + + + +
    + bxs-arrow-down-a-z +
    +
    + + + +
    + bxs-arrow-down-circle +
    +
    + + + +
    + bxs-arrow-down-left-circle +
    +
    + + + +
    + bxs-arrow-down-left-square +
    +
    + + + +
    + bxs-arrow-down-left-stroke-circle +
    +
    + + + +
    + bxs-arrow-down-left-stroke-square +
    +
    + + + +
    + bxs-arrow-down-left-stroke +
    +
    + + + +
    + bxs-arrow-down-left +
    +
    + + + +
    + bxs-arrow-down-narrow-wide +
    +
    + + + +
    + bxs-arrow-down-right-circle +
    +
    + + + +
    + bxs-arrow-down-right-square +
    +
    + + + +
    + bxs-arrow-down-right-stroke-circle +
    +
    + + + +
    + bxs-arrow-down-right-stroke-square +
    +
    + + + +
    + bxs-arrow-down-right-stroke +
    +
    + + + +
    + bxs-arrow-down-right +
    +
    + + + +
    + bxs-arrow-down-square +
    +
    + + + +
    + bxs-arrow-down-stroke-circle +
    +
    + + + +
    + bxs-arrow-down-stroke-square +
    +
    + + + +
    + bxs-arrow-down-stroke +
    +
    + + + +
    + bxs-arrow-down-up +
    +
    + + + +
    + bxs-arrow-down-wide-narrow +
    +
    + + + +
    + bxs-arrow-down +
    +
    + + + +
    + bxs-arrow-from-bottom-stroke +
    +
    + + + +
    + bxs-arrow-from-bottom +
    +
    + + + +
    + bxs-arrow-from-left-stroke +
    +
    + + + +
    + bxs-arrow-from-left +
    +
    + + + +
    + bxs-arrow-from-right-stroke +
    +
    + + + +
    + bxs-arrow-from-right +
    +
    + + + +
    + bxs-arrow-from-top-stroke +
    +
    + + + +
    + bxs-arrow-from-top +
    +
    + + + +
    + bxs-arrow-in-down-circle-half +
    +
    + + + +
    + bxs-arrow-in-down-left-circle +
    +
    + + + +
    + bxs-arrow-in-down-left-square +
    +
    + + + +
    + bxs-arrow-in-down-left-stroke-circle +
    +
    + + + +
    + bxs-arrow-in-down-left-stroke-square +
    +
    + + + +
    + bxs-arrow-in-down-right-circle +
    +
    + + + +
    + bxs-arrow-in-down-right-square +
    +
    + + + +
    + bxs-arrow-in-down-right-stroke-circle +
    +
    + + + +
    + bxs-arrow-in-down-right-stroke-square +
    +
    + + + +
    + bxs-arrow-in-down-square-half +
    +
    + + + +
    + bxs-arrow-in-down-stroke-circle-half +
    +
    + + + +
    + bxs-arrow-in-left-circle-half +
    +
    + + + +
    + bxs-arrow-in-left-square-half +
    +
    + + + +
    + bxs-arrow-in-left-stroke-circle-half +
    +
    + + + +
    + bxs-arrow-in-right-circle-half +
    +
    + + + +
    + bxs-arrow-in-right-square-half +
    +
    + + + +
    + bxs-arrow-in-right-stroke-circle-half +
    +
    + + + +
    + bxs-arrow-in-up-circle-half +
    +
    + + + +
    + bxs-arrow-in-up-left-circle +
    +
    + + + +
    + bxs-arrow-in-up-left-square +
    +
    + + + +
    + bxs-arrow-in-up-left-stroke-circle +
    +
    + + + +
    + bxs-arrow-in-up-left-stroke-square +
    +
    + + + +
    + bxs-arrow-in-up-right-circle +
    +
    + + + +
    + bxs-arrow-in-up-right-square +
    +
    + + + +
    + bxs-arrow-in-up-right-stroke-circle +
    +
    + + + +
    + bxs-arrow-in-up-right-stroke-square +
    +
    + + + +
    + bxs-arrow-in-up-square-half +
    +
    + + + +
    + bxs-arrow-in-up-stroke-circle-half +
    +
    + + + +
    + bxs-arrow-left-circle +
    +
    + + + +
    + bxs-arrow-left-right +
    +
    + + + +
    + bxs-arrow-left-square +
    +
    + + + +
    + bxs-arrow-left-stroke-circle +
    +
    + + + +
    + bxs-arrow-left-stroke-square +
    +
    + + + +
    + bxs-arrow-left-stroke +
    +
    + + + +
    + bxs-arrow-left +
    +
    + + + +
    + bxs-arrow-out-down-circle-half +
    +
    + + + +
    + bxs-arrow-out-down-left-circle +
    +
    + + + +
    + bxs-arrow-out-down-left-square +
    +
    + + + +
    + bxs-arrow-out-down-left-stroke-circle +
    +
    + + + +
    + bxs-arrow-out-down-left-stroke-square +
    +
    + + + +
    + bxs-arrow-out-down-right-circle +
    +
    + + + +
    + bxs-arrow-out-down-right-square +
    +
    + + + +
    + bxs-arrow-out-down-right-stroke-circle +
    +
    + + + +
    + bxs-arrow-out-down-right-stroke-square +
    +
    + + + +
    + bxs-arrow-out-down-square-half +
    +
    + + + +
    + bxs-arrow-out-down-stroke-circle-half +
    +
    + + + +
    + bxs-arrow-out-left-circle-half +
    +
    + + + +
    + bxs-arrow-out-left-square-half +
    +
    + + + +
    + bxs-arrow-out-left-stroke-circle-half +
    +
    + + + +
    + bxs-arrow-out-right-circle-half +
    +
    + + + +
    + bxs-arrow-out-right-square-half +
    +
    + + + +
    + bxs-arrow-out-right-stroke-circle-half +
    +
    + + + +
    + bxs-arrow-out-up-circle-half +
    +
    + + + +
    + bxs-arrow-out-up-left-circle +
    +
    + + + +
    + bxs-arrow-out-up-left-square +
    +
    + + + +
    + bxs-arrow-out-up-left-stroke-circle +
    +
    + + + +
    + bxs-arrow-out-up-left-stroke-square +
    +
    + + + +
    + bxs-arrow-out-up-right-circle +
    +
    + + + +
    + bxs-arrow-out-up-right-square +
    +
    + + + +
    + bxs-arrow-out-up-right-stroke-circle +
    +
    + + + +
    + bxs-arrow-out-up-right-stroke-square +
    +
    + + + +
    + bxs-arrow-out-up-square-half +
    +
    + + + +
    + bxs-arrow-out-up-stroke-circle-half +
    +
    + + + +
    + bxs-arrow-right-circle +
    +
    + + + +
    + bxs-arrow-right-left +
    +
    + + + +
    + bxs-arrow-right-square +
    +
    + + + +
    + bxs-arrow-right-stroke-circle +
    +
    + + + +
    + bxs-arrow-right-stroke-square +
    +
    + + + +
    + bxs-arrow-right-stroke +
    +
    + + + +
    + bxs-arrow-right +
    +
    + + + +
    + bxs-arrow-s-down +
    +
    + + + +
    + bxs-arrow-s-left +
    +
    + + + +
    + bxs-arrow-s-right +
    +
    + + + +
    + bxs-arrow-s-up +
    +
    + + + +
    + bxs-arrow-to-bottom-stroke +
    +
    + + + +
    + bxs-arrow-to-bottom +
    +
    + + + +
    + bxs-arrow-to-left-stroke +
    +
    + + + +
    + bxs-arrow-to-left +
    +
    + + + +
    + bxs-arrow-to-right-stroke +
    +
    + + + +
    + bxs-arrow-to-right +
    +
    + + + +
    + bxs-arrow-to-top-stroke +
    +
    + + + +
    + bxs-arrow-to-top +
    +
    + + + +
    + bxs-arrow-up-a-z +
    +
    + + + +
    + bxs-arrow-up-circle +
    +
    + + + +
    + bxs-arrow-up-down +
    +
    + + + +
    + bxs-arrow-up-left-circle +
    +
    + + + +
    + bxs-arrow-up-left-square +
    +
    + + + +
    + bxs-arrow-up-left-stroke-circle +
    +
    + + + +
    + bxs-arrow-up-left-stroke-square +
    +
    + + + +
    + bxs-arrow-up-left-stroke +
    +
    + + + +
    + bxs-arrow-up-left +
    +
    + + + +
    + bxs-arrow-up-narrow-wide +
    +
    + + + +
    + bxs-arrow-up-right-circle +
    +
    + + + +
    + bxs-arrow-up-right-square +
    +
    + + + +
    + bxs-arrow-up-right-stroke-circle +
    +
    + + + +
    + bxs-arrow-up-right-stroke-square +
    +
    + + + +
    + bxs-arrow-up-right-stroke +
    +
    + + + +
    + bxs-arrow-up-right +
    +
    + + + +
    + bxs-arrow-up-square +
    +
    + + + +
    + bxs-arrow-up-stroke-circle +
    +
    + + + +
    + bxs-arrow-up-stroke-square +
    +
    + + + +
    + bxs-arrow-up-stroke +
    +
    + + + +
    + bxs-arrow-up-wide-narrow +
    +
    + + + +
    + bxs-arrow-up +
    +
    + + + +
    + bxs-article +
    +
    + + + +
    + bxs-asterisk +
    +
    + + + +
    + bxs-at +
    +
    + + + +
    + bxs-atom +
    +
    + + + +
    + bxs-avocado +
    +
    + + + +
    + bxs-axe +
    +
    + + + +
    + bxs-background-color-fill +
    +
    + + + +
    + bxs-background +
    +
    + + + +
    + bxs-backpack-star +
    +
    + + + +
    + bxs-backpack +
    +
    + + + +
    + bxs-backspace +
    +
    + + + +
    + bxs-backward-slash +
    +
    + + + +
    + bxs-bacon +
    +
    + + + +
    + bxs-badge-check +
    +
    + + + +
    + bxs-badge-exclamation +
    +
    + + + +
    + bxs-badge-info +
    +
    + + + +
    + bxs-badge +
    +
    + + + +
    + bxs-baguette +
    +
    + + + +
    + bxs-bahai +
    +
    + + + +
    + bxs-balcony +
    +
    + + + +
    + bxs-ball-throw +
    +
    + + + +
    + bxs-balloon +
    +
    + + + +
    + bxs-band-aid +
    +
    + + + +
    + bxs-bank +
    +
    + + + +
    + bxs-bar-chart-big +
    +
    + + + +
    + bxs-bar-chart-square +
    +
    + + + +
    + bxs-bar-chart +
    +
    + + + +
    + bxs-barcode-square +
    +
    + + + +
    + bxs-barcode +
    +
    + + + +
    + bxs-barn +
    +
    + + + +
    + bxs-baseball +
    +
    + + + +
    + bxs-basket +
    +
    + + + +
    + bxs-basketball +
    +
    + + + +
    + bxs-bath +
    +
    + + + +
    + bxs-battery-1 +
    +
    + + + +
    + bxs-battery-2 +
    +
    + + + +
    + bxs-battery-3 +
    +
    + + + +
    + bxs-battery-full +
    +
    + + + +
    + bxs-battery-low +
    +
    + + + +
    + bxs-battery +
    +
    + + + +
    + bxs-beach-ball +
    +
    + + + +
    + bxs-beach +
    +
    + + + +
    + bxs-beaker +
    +
    + + + +
    + bxs-beanie +
    +
    + + + +
    + bxs-bear +
    +
    + + + +
    + bxs-bed-alt +
    +
    + + + +
    + bxs-bed +
    +
    + + + +
    + bxs-beer +
    +
    + + + +
    + bxs-bell-check +
    +
    + + + +
    + bxs-bell-minus +
    +
    + + + +
    + bxs-bell-plus +
    +
    + + + +
    + bxs-bell-ring +
    +
    + + + +
    + bxs-bell-slash +
    +
    + + + +
    + bxs-bell +
    +
    + + + +
    + bxs-bench +
    +
    + + + +
    + bxs-between-horizontal-end +
    +
    + + + +
    + bxs-between-horizontal-start +
    +
    + + + +
    + bxs-between-vertical-end +
    +
    + + + +
    + bxs-between-vertical-start +
    +
    + + + +
    + bxs-bible +
    +
    + + + +
    + bxs-biceps +
    +
    + + + +
    + bxs-binocular +
    +
    + + + +
    + bxs-bird-alt +
    +
    + + + +
    + bxs-bird +
    +
    + + + +
    + bxs-birthday-cake +
    +
    + + + +
    + bxs-bitcoin +
    +
    + + + +
    + bxs-blanket +
    +
    + + + +
    + bxs-blob +
    +
    + + + +
    + bxs-block +
    +
    + + + +
    + bxs-blockquote +
    +
    + + + +
    + bxs-blocks +
    +
    + + + +
    + bxs-bluetooth +
    +
    + + + +
    + bxs-blur-alt +
    +
    + + + +
    + bxs-blur +
    +
    + + + +
    + bxs-body +
    +
    + + + +
    + bxs-bold +
    +
    + + + +
    + bxs-bolt-alt +
    +
    + + + +
    + bxs-bolt-circle +
    +
    + + + +
    + bxs-bolt-square +
    +
    + + + +
    + bxs-bolt +
    +
    + + + +
    + bxs-bomb +
    +
    + + + +
    + bxs-bone +
    +
    + + + +
    + bxs-bong +
    +
    + + + +
    + bxs-book-add +
    +
    + + + +
    + bxs-book-alt +
    +
    + + + +
    + bxs-book-bookmark +
    +
    + + + +
    + bxs-book-content +
    +
    + + + +
    + bxs-book-heart +
    +
    + + + +
    + bxs-book-library +
    +
    + + + +
    + bxs-book-open +
    +
    + + + +
    + bxs-book +
    +
    + + + +
    + bxs-bookmark-alt +
    +
    + + + +
    + bxs-bookmark-heart +
    +
    + + + +
    + bxs-bookmark-minus-alt +
    +
    + + + +
    + bxs-bookmark-minus +
    +
    + + + +
    + bxs-bookmark-plus-alt +
    +
    + + + +
    + bxs-bookmark-plus +
    +
    + + + +
    + bxs-bookmark-star +
    +
    + + + +
    + bxs-bookmark-x +
    +
    + + + +
    + bxs-bookmark +
    +
    + + + +
    + bxs-bookmarks +
    +
    + + + +
    + bxs-boombox +
    +
    + + + +
    + bxs-boot +
    +
    + + + +
    + bxs-border-all +
    +
    + + + +
    + bxs-border-bottom +
    +
    + + + +
    + bxs-border-inner +
    +
    + + + +
    + bxs-border-left +
    +
    + + + +
    + bxs-border-none +
    +
    + + + +
    + bxs-border-outer +
    +
    + + + +
    + bxs-border-radius +
    +
    + + + +
    + bxs-border-right +
    +
    + + + +
    + bxs-border-top +
    +
    + + + +
    + bxs-bow +
    +
    + + + +
    + bxs-bowl-balls +
    +
    + + + +
    + bxs-bowl-bubbles +
    +
    + + + +
    + bxs-bowl-hot +
    +
    + + + +
    + bxs-bowl-noodles-alt +
    +
    + + + +
    + bxs-bowl-noodles +
    +
    + + + +
    + bxs-bowl-rice +
    +
    + + + +
    + bxs-bowling-ball +
    +
    + + + +
    + bxs-box-alt +
    +
    + + + +
    + bxs-box +
    +
    + + + +
    + bxs-bracket-curly +
    +
    + + + +
    + bxs-bracket-round +
    +
    + + + +
    + bxs-bracket +
    +
    + + + +
    + bxs-braille +
    +
    + + + +
    + bxs-brain-circuit +
    +
    + + + +
    + bxs-brain +
    +
    + + + +
    + bxs-bread +
    +
    + + + +
    + bxs-brick +
    +
    + + + +
    + bxs-bridge +
    +
    + + + +
    + bxs-briefcase-alt-2 +
    +
    + + + +
    + bxs-briefcase-alt +
    +
    + + + +
    + bxs-briefcase +
    +
    + + + +
    + bxs-brightness-half +
    +
    + + + +
    + bxs-brightness +
    +
    + + + +
    + bxs-broadcast +
    +
    + + + +
    + bxs-browser-activity +
    +
    + + + +
    + bxs-brush-sparkles +
    +
    + + + +
    + bxs-brush +
    +
    + + + +
    + bxs-buddhism +
    +
    + + + +
    + bxs-bug-alt +
    +
    + + + +
    + bxs-bug +
    +
    + + + +
    + bxs-building-house +
    +
    + + + +
    + bxs-building +
    +
    + + + +
    + bxs-buildings +
    +
    + + + +
    + bxs-bullseye +
    +
    + + + +
    + bxs-buoy +
    +
    + + + +
    + bxs-burger-alt +
    +
    + + + +
    + bxs-burger +
    +
    + + + +
    + bxs-bus +
    +
    + + + +
    + bxs-business +
    +
    + + + +
    + bxs-button-rounded +
    +
    + + + +
    + bxs-button +
    +
    + + + +
    + bxs-cabinet +
    +
    + + + +
    + bxs-cable-car +
    +
    + + + +
    + bxs-cake-slice +
    +
    + + + +
    + bxs-calculator +
    +
    + + + +
    + bxs-calendar-alt-2 +
    +
    + + + +
    + bxs-calendar-alt +
    +
    + + + +
    + bxs-calendar-check +
    +
    + + + +
    + bxs-calendar-cog +
    +
    + + + +
    + bxs-calendar-detail +
    +
    + + + +
    + bxs-calendar-down-arrow +
    +
    + + + +
    + bxs-calendar-event +
    +
    + + + +
    + bxs-calendar-heart +
    +
    + + + +
    + bxs-calendar-minus +
    +
    + + + +
    + bxs-calendar-plus +
    +
    + + + +
    + bxs-calendar-search +
    +
    + + + +
    + bxs-calendar-star +
    +
    + + + +
    + bxs-calendar-up-arrow +
    +
    + + + +
    + bxs-calendar-week +
    +
    + + + +
    + bxs-calendar-x +
    +
    + + + +
    + bxs-calendar +
    +
    + + + +
    + bxs-camcoder +
    +
    + + + +
    + bxs-camera-alt +
    +
    + + + +
    + bxs-camera-flip +
    +
    + + + +
    + bxs-camera-home +
    +
    + + + +
    + bxs-camera-monochrome +
    +
    + + + +
    + bxs-camera-plus +
    +
    + + + +
    + bxs-camera-portrait +
    +
    + + + +
    + bxs-camera-slash +
    +
    + + + +
    + bxs-camera-switch +
    +
    + + + +
    + bxs-camera +
    +
    + + + +
    + bxs-campfire +
    +
    + + + +
    + bxs-camping +
    +
    + + + +
    + bxs-candlestick +
    +
    + + + +
    + bxs-cannabis +
    +
    + + + +
    + bxs-cap +
    +
    + + + +
    + bxs-capitalize +
    +
    + + + +
    + bxs-capsule +
    +
    + + + +
    + bxs-captions-cc +
    +
    + + + +
    + bxs-captions +
    +
    + + + +
    + bxs-capture +
    +
    + + + +
    + bxs-car-battery +
    +
    + + + +
    + bxs-car-key +
    +
    + + + +
    + bxs-car +
    +
    + + + +
    + bxs-card-view-large +
    +
    + + + +
    + bxs-card-view-no-title +
    +
    + + + +
    + bxs-card-view-small +
    +
    + + + +
    + bxs-card-view-tiles +
    +
    + + + +
    + bxs-card-view +
    +
    + + + +
    + bxs-caret-big-down +
    +
    + + + +
    + bxs-caret-big-left +
    +
    + + + +
    + bxs-caret-big-right +
    +
    + + + +
    + bxs-caret-big-up +
    +
    + + + +
    + bxs-caret-down-circle +
    +
    + + + +
    + bxs-caret-down-square +
    +
    + + + +
    + bxs-caret-down +
    +
    + + + +
    + bxs-caret-left-circle +
    +
    + + + +
    + bxs-caret-left-square +
    +
    + + + +
    + bxs-caret-left +
    +
    + + + +
    + bxs-caret-right-circle +
    +
    + + + +
    + bxs-caret-right-square +
    +
    + + + +
    + bxs-caret-right +
    +
    + + + +
    + bxs-caret-up-circle +
    +
    + + + +
    + bxs-caret-up-square +
    +
    + + + +
    + bxs-caret-up +
    +
    + + + +
    + bxs-carets-down-up +
    +
    + + + +
    + bxs-carets-left-right +
    +
    + + + +
    + bxs-carets-right-left +
    +
    + + + +
    + bxs-carets-up-down +
    +
    + + + +
    + bxs-carrot +
    +
    + + + +
    + bxs-cart-minus +
    +
    + + + +
    + bxs-cart-plus +
    +
    + + + +
    + bxs-cart +
    +
    + + + +
    + bxs-cast +
    +
    + + + +
    + bxs-castle +
    +
    + + + +
    + bxs-cat +
    +
    + + + +
    + bxs-categories +
    +
    + + + +
    + bxs-cctv +
    +
    + + + +
    + bxs-certification +
    +
    + + + +
    + bxs-chair +
    +
    + + + +
    + bxs-champagne +
    +
    + + + +
    + bxs-chart-area +
    +
    + + + +
    + bxs-chart-bar-big-columns +
    +
    + + + +
    + bxs-chart-bar-big-rows +
    +
    + + + +
    + bxs-chart-bar-columns +
    +
    + + + +
    + bxs-chart-bar-rows +
    +
    + + + +
    + bxs-chart-bubble +
    +
    + + + +
    + bxs-chart-gantt +
    +
    + + + +
    + bxs-chart-line +
    +
    + + + +
    + bxs-chart-network +
    +
    + + + +
    + bxs-chart-scatter +
    +
    + + + +
    + bxs-chart-spline +
    +
    + + + +
    + bxs-chart-stacked-columns +
    +
    + + + +
    + bxs-chart-stacked-rows +
    +
    + + + +
    + bxs-chart-trend +
    +
    + + + +
    + bxs-check-circle +
    +
    + + + +
    + bxs-check-shield +
    +
    + + + +
    + bxs-check-square +
    +
    + + + +
    + bxs-check +
    +
    + + + +
    + bxs-checkbox-checked +
    +
    + + + +
    + bxs-checkbox-square +
    +
    + + + +
    + bxs-checkbox +
    +
    + + + +
    + bxs-checklist +
    +
    + + + +
    + bxs-checks +
    +
    + + + +
    + bxs-cheese +
    +
    + + + +
    + bxs-chef-hat +
    +
    + + + +
    + bxs-cherry +
    +
    + + + +
    + bxs-chess-bishop +
    +
    + + + +
    + bxs-chess-king +
    +
    + + + +
    + bxs-chess-knight +
    +
    + + + +
    + bxs-chess-pawn +
    +
    + + + +
    + bxs-chess-queen +
    +
    + + + +
    + bxs-chess-rook +
    +
    + + + +
    + bxs-chess +
    +
    + + + +
    + bxs-chevron-down-circle +
    +
    + + + +
    + bxs-chevron-down-square +
    +
    + + + +
    + bxs-chevron-down +
    +
    + + + +
    + bxs-chevron-left-circle +
    +
    + + + +
    + bxs-chevron-left-square +
    +
    + + + +
    + bxs-chevron-left +
    +
    + + + +
    + bxs-chevron-right-circle +
    +
    + + + +
    + bxs-chevron-right-square +
    +
    + + + +
    + bxs-chevron-right +
    +
    + + + +
    + bxs-chevron-up-circle +
    +
    + + + +
    + bxs-chevron-up-square +
    +
    + + + +
    + bxs-chevron-up +
    +
    + + + +
    + bxs-chevrons-down-up +
    +
    + + + +
    + bxs-chevrons-down +
    +
    + + + +
    + bxs-chevrons-left-right +
    +
    + + + +
    + bxs-chevrons-left +
    +
    + + + +
    + bxs-chevrons-right-left +
    +
    + + + +
    + bxs-chevrons-right +
    +
    + + + +
    + bxs-chevrons-up-down +
    +
    + + + +
    + bxs-chevrons-up +
    +
    + + + +
    + bxs-child +
    +
    + + + +
    + bxs-chip +
    +
    + + + +
    + bxs-christianity +
    +
    + + + +
    + bxs-church +
    +
    + + + +
    + bxs-cigarette +
    +
    + + + +
    + bxs-circle-dashed-half +
    +
    + + + +
    + bxs-circle-dashed +
    +
    + + + +
    + bxs-circle-half-alt +
    +
    + + + +
    + bxs-circle-half +
    +
    + + + +
    + bxs-circle-hexagon +
    +
    + + + +
    + bxs-circle-outer-dashed-circle +
    +
    + + + +
    + bxs-circle-quarter-alt +
    +
    + + + +
    + bxs-circle-quarter +
    +
    + + + +
    + bxs-circle-three-quarter-alt +
    +
    + + + +
    + bxs-circle-three-quarter +
    +
    + + + +
    + bxs-circle +
    +
    + + + +
    + bxs-circles-9 +
    +
    + + + +
    + bxs-circles-alt +
    +
    + + + +
    + bxs-circles +
    +
    + + + +
    + bxs-circuit-board +
    +
    + + + +
    + bxs-city +
    +
    + + + +
    + bxs-clipboard-check +
    +
    + + + +
    + bxs-clipboard-code +
    +
    + + + +
    + bxs-clipboard-detail +
    +
    + + + +
    + bxs-clipboard-minus +
    +
    + + + +
    + bxs-clipboard-plus +
    +
    + + + +
    + bxs-clipboard-x +
    +
    + + + +
    + bxs-clipboard +
    +
    + + + +
    + bxs-clock-1 +
    +
    + + + +
    + bxs-clock-10 +
    +
    + + + +
    + bxs-clock-11 +
    +
    + + + +
    + bxs-clock-12 +
    +
    + + + +
    + bxs-clock-2 +
    +
    + + + +
    + bxs-clock-3 +
    +
    + + + +
    + bxs-clock-4 +
    +
    + + + +
    + bxs-clock-5 +
    +
    + + + +
    + bxs-clock-6 +
    +
    + + + +
    + bxs-clock-7 +
    +
    + + + +
    + bxs-clock-8 +
    +
    + + + +
    + bxs-clock-9 +
    +
    + + + +
    + bxs-clock-dashed-half +
    +
    + + + +
    + bxs-clock +
    +
    + + + +
    + bxs-cloud-alt-2 +
    +
    + + + +
    + bxs-cloud-alt +
    +
    + + + +
    + bxs-cloud-drizzle +
    +
    + + + +
    + bxs-cloud-fog +
    +
    + + + +
    + bxs-cloud-lightning +
    +
    + + + +
    + bxs-cloud-moon +
    +
    + + + +
    + bxs-cloud-rain-wind +
    +
    + + + +
    + bxs-cloud-rain +
    +
    + + + +
    + bxs-cloud-snow +
    +
    + + + +
    + bxs-cloud-sun +
    +
    + + + +
    + bxs-cloud +
    +
    + + + +
    + bxs-clover +
    +
    + + + +
    + bxs-club +
    +
    + + + +
    + bxs-cocktail +
    +
    + + + +
    + bxs-code-alt +
    +
    + + + +
    + bxs-code +
    +
    + + + +
    + bxs-coffee-beans +
    +
    + + + +
    + bxs-coffee-cup +
    +
    + + + +
    + bxs-coffee +
    +
    + + + +
    + bxs-cog +
    +
    + + + +
    + bxs-cognition +
    +
    + + + +
    + bxs-coin +
    +
    + + + +
    + bxs-coins +
    +
    + + + +
    + bxs-col-resize +
    +
    + + + +
    + bxs-color-fill +
    +
    + + + +
    + bxs-color-wheel +
    +
    + + + +
    + bxs-columns-3 +
    +
    + + + +
    + bxs-columns-4 +
    +
    + + + +
    + bxs-columns +
    +
    + + + +
    + bxs-comic-bubble +
    +
    + + + +
    + bxs-command +
    +
    + + + +
    + bxs-community +
    +
    + + + +
    + bxs-compare-alt +
    +
    + + + +
    + bxs-compare +
    +
    + + + +
    + bxs-compass +
    +
    + + + +
    + bxs-component +
    +
    + + + +
    + bxs-computer +
    +
    + + + +
    + bxs-confused +
    +
    + + + +
    + bxs-connector +
    +
    + + + +
    + bxs-contact-book +
    +
    + + + +
    + bxs-contrast +
    +
    + + + +
    + bxs-cookie +
    +
    + + + +
    + bxs-cool +
    +
    + + + +
    + bxs-copy-check +
    +
    + + + +
    + bxs-copy-list +
    +
    + + + +
    + bxs-copy-minus +
    +
    + + + +
    + bxs-copy-plus +
    +
    + + + +
    + bxs-copy-x +
    +
    + + + +
    + bxs-copy +
    +
    + + + +
    + bxs-copyright +
    +
    + + + +
    + bxs-core +
    +
    + + + +
    + bxs-credit-card-alt +
    +
    + + + +
    + bxs-credit-card-front +
    +
    + + + +
    + bxs-credit-card-insert +
    +
    + + + +
    + bxs-credit-card +
    +
    + + + +
    + bxs-cricket-ball +
    +
    + + + +
    + bxs-crop +
    +
    + + + +
    + bxs-cross-circle +
    +
    + + + +
    + bxs-crosshair +
    +
    + + + +
    + bxs-crown +
    +
    + + + +
    + bxs-crypto-coin +
    +
    + + + +
    + bxs-crypto +
    +
    + + + +
    + bxs-cube-alt +
    +
    + + + +
    + bxs-cube-inside +
    +
    + + + +
    + bxs-cube +
    +
    + + + +
    + bxs-cuboid +
    +
    + + + +
    + bxs-cup-hot +
    +
    + + + +
    + bxs-cup-saucer +
    +
    + + + +
    + bxs-cup-tea +
    +
    + + + +
    + bxs-cup +
    +
    + + + +
    + bxs-cupboard-alt +
    +
    + + + +
    + bxs-cupboard +
    +
    + + + +
    + bxs-cupcake +
    +
    + + + +
    + bxs-currency-note +
    +
    + + + +
    + bxs-currency-notes +
    +
    + + + +
    + bxs-cursor-add +
    +
    + + + +
    + bxs-cursor-cell +
    +
    + + + +
    + bxs-cursor-crosshair-dot +
    +
    + + + +
    + bxs-cursor-crosshair +
    +
    + + + +
    + bxs-cursor-pen +
    +
    + + + +
    + bxs-cursor-pointer +
    +
    + + + +
    + bxs-cursor +
    +
    + + + +
    + bxs-cut +
    +
    + + + +
    + bxs-cycling +
    +
    + + + +
    + bxs-cylinder +
    +
    + + + +
    + bxs-dashboard-alt +
    +
    + + + +
    + bxs-dashboard +
    +
    + + + +
    + bxs-database-alt +
    +
    + + + +
    + bxs-database +
    +
    + + + +
    + bxs-decrease-indent +
    +
    + + + +
    + bxs-delta +
    +
    + + + +
    + bxs-department-store +
    +
    + + + +
    + bxs-desert +
    +
    + + + +
    + bxs-desk +
    +
    + + + +
    + bxs-desktop-alt +
    +
    + + + +
    + bxs-desktop +
    +
    + + + +
    + bxs-devices +
    +
    + + + +
    + bxs-dialpad +
    +
    + + + +
    + bxs-diameter +
    +
    + + + +
    + bxs-diamond-alt +
    +
    + + + +
    + bxs-diamond +
    +
    + + + +
    + bxs-diamonds +
    +
    + + + +
    + bxs-dice-1 +
    +
    + + + +
    + bxs-dice-2 +
    +
    + + + +
    + bxs-dice-3 +
    +
    + + + +
    + bxs-dice-4 +
    +
    + + + +
    + bxs-dice-5 +
    +
    + + + +
    + bxs-dice-6 +
    +
    + + + +
    + bxs-dice-roll +
    +
    + + + +
    + bxs-dino +
    +
    + + + +
    + bxs-directions +
    +
    + + + +
    + bxs-disc +
    +
    + + + +
    + bxs-discount +
    +
    + + + +
    + bxs-discussion +
    +
    + + + +
    + bxs-dish +
    +
    + + + +
    + bxs-dishwasher +
    +
    + + + +
    + bxs-dislike +
    +
    + + + +
    + bxs-division +
    +
    + + + +
    + bxs-dizzy +
    +
    + + + +
    + bxs-dna +
    +
    + + + +
    + bxs-dock-bottom-alt +
    +
    + + + +
    + bxs-dock-bottom-arrow +
    +
    + + + +
    + bxs-dock-bottom-left-alt +
    +
    + + + +
    + bxs-dock-bottom-left +
    +
    + + + +
    + bxs-dock-bottom-right-alt +
    +
    + + + +
    + bxs-dock-bottom-right +
    +
    + + + +
    + bxs-dock-bottom +
    +
    + + + +
    + bxs-dock-left-alt +
    +
    + + + +
    + bxs-dock-left-arrow +
    +
    + + + +
    + bxs-dock-left +
    +
    + + + +
    + bxs-dock-right-alt +
    +
    + + + +
    + bxs-dock-right-arrow +
    +
    + + + +
    + bxs-dock-right +
    +
    + + + +
    + bxs-dock-top-alt +
    +
    + + + +
    + bxs-dock-top-arrow +
    +
    + + + +
    + bxs-dock-top-left-alt +
    +
    + + + +
    + bxs-dock-top-left +
    +
    + + + +
    + bxs-dock-top-right-alt +
    +
    + + + +
    + bxs-dock-top-right +
    +
    + + + +
    + bxs-dock-top +
    +
    + + + +
    + bxs-dog-alt +
    +
    + + + +
    + bxs-dog +
    +
    + + + +
    + bxs-dollar-circle-stars +
    +
    + + + +
    + bxs-dollar-circle +
    +
    + + + +
    + bxs-dollar +
    +
    + + + +
    + bxs-donate-blood +
    +
    + + + +
    + bxs-donate-heart +
    +
    + + + +
    + bxs-donut +
    +
    + + + +
    + bxs-door-open +
    +
    + + + +
    + bxs-door +
    +
    + + + +
    + bxs-dots-horizontal-rounded-circle +
    +
    + + + +
    + bxs-dots-horizontal-rounded +
    +
    + + + +
    + bxs-dots-horizontal +
    +
    + + + +
    + bxs-dots-vertical-rounded-circle +
    +
    + + + +
    + bxs-dots-vertical-rounded +
    +
    + + + +
    + bxs-dots-vertical +
    +
    + + + +
    + bxs-doughnut-chart +
    +
    + + + +
    + bxs-draw-ahead +
    +
    + + + +
    + bxs-draw-behind +
    +
    + + + +
    + bxs-draw-inside +
    +
    + + + +
    + bxs-dress +
    +
    + + + +
    + bxs-dribbling +
    +
    + + + +
    + bxs-dropdown +
    +
    + + + +
    + bxs-dryer +
    +
    + + + +
    + bxs-duck +
    +
    + + + +
    + bxs-dumbbell-alt +
    +
    + + + +
    + bxs-dumbbell +
    +
    + + + +
    + bxs-ear-alt +
    +
    + + + +
    + bxs-ear-slash +
    +
    + + + +
    + bxs-ear +
    +
    + + + +
    + bxs-earbuds +
    +
    + + + +
    + bxs-earth +
    +
    + + + +
    + bxs-ease-in-out +
    +
    + + + +
    + bxs-ease-in +
    +
    + + + +
    + bxs-ease-out +
    +
    + + + +
    + bxs-edit-alt +
    +
    + + + +
    + bxs-edit +
    +
    + + + +
    + bxs-education +
    +
    + + + +
    + bxs-egg-fried +
    +
    + + + +
    + bxs-egg-yolk +
    +
    + + + +
    + bxs-egg +
    +
    + + + +
    + bxs-eject +
    +
    + + + +
    + bxs-element-of +
    +
    + + + +
    + bxs-empty-set +
    +
    + + + +
    + bxs-enter +
    +
    + + + +
    + bxs-enterprise +
    +
    + + + +
    + bxs-envelope-alt +
    +
    + + + +
    + bxs-envelope-open +
    +
    + + + +
    + bxs-envelope +
    +
    + + + +
    + bxs-equal-circle +
    +
    + + + +
    + bxs-equal-square +
    +
    + + + +
    + bxs-equal +
    +
    + + + +
    + bxs-equalizer +
    +
    + + + +
    + bxs-eraser +
    +
    + + + +
    + bxs-euro +
    +
    + + + +
    + bxs-ev-station +
    +
    + + + +
    + bxs-expand-left +
    +
    + + + +
    + bxs-expand-right +
    +
    + + + +
    + bxs-explosion +
    +
    + + + +
    + bxs-exposure +
    +
    + + + +
    + bxs-extension +
    +
    + + + +
    + bxs-eye-alt +
    +
    + + + +
    + bxs-eye-big +
    +
    + + + +
    + bxs-eye-closed +
    +
    + + + +
    + bxs-eye-slash +
    +
    + + + +
    + bxs-eye +
    +
    + + + +
    + bxs-eyedropper +
    +
    + + + +
    + bxs-face-alt-2 +
    +
    + + + +
    + bxs-face-alt-3 +
    +
    + + + +
    + bxs-face-alt-4 +
    +
    + + + +
    + bxs-face-alt +
    +
    + + + +
    + bxs-face-child +
    +
    + + + +
    + bxs-face-mask +
    +
    + + + +
    + bxs-face +
    +
    + + + +
    + bxs-factory +
    +
    + + + +
    + bxs-fan +
    +
    + + + +
    + bxs-fast-forward-circle +
    +
    + + + +
    + bxs-fast-forward +
    +
    + + + +
    + bxs-feather-alt +
    +
    + + + +
    + bxs-feather-minus +
    +
    + + + +
    + bxs-feather-plus +
    +
    + + + +
    + bxs-feather +
    +
    + + + +
    + bxs-female +
    +
    + + + +
    + bxs-file-code +
    +
    + + + +
    + bxs-file-cog +
    +
    + + + +
    + bxs-file-detail +
    +
    + + + +
    + bxs-file-heart +
    +
    + + + +
    + bxs-file-minus +
    +
    + + + +
    + bxs-file-plus +
    +
    + + + +
    + bxs-file-report +
    +
    + + + +
    + bxs-file-search +
    +
    + + + +
    + bxs-file-star +
    +
    + + + +
    + bxs-file-x +
    +
    + + + +
    + bxs-file-zip +
    +
    + + + +
    + bxs-file +
    +
    + + + +
    + bxs-film-roll-alt +
    +
    + + + +
    + bxs-film-roll +
    +
    + + + +
    + bxs-film +
    +
    + + + +
    + bxs-filter +
    +
    + + + +
    + bxs-finger-down +
    +
    + + + +
    + bxs-finger-left +
    +
    + + + +
    + bxs-finger-right +
    +
    + + + +
    + bxs-finger-swipe-down +
    +
    + + + +
    + bxs-finger-swipe-left +
    +
    + + + +
    + bxs-finger-swipe-right +
    +
    + + + +
    + bxs-finger-swipe-up +
    +
    + + + +
    + bxs-finger-touch +
    +
    + + + +
    + bxs-finger-up +
    +
    + + + +
    + bxs-fingerprint +
    +
    + + + +
    + bxs-fire-alt +
    +
    + + + +
    + bxs-fire-extinguisher +
    +
    + + + +
    + bxs-fire +
    +
    + + + +
    + bxs-first +
    +
    + + + +
    + bxs-fish-alt +
    +
    + + + +
    + bxs-fish +
    +
    + + + +
    + bxs-flag-alt-2 +
    +
    + + + +
    + bxs-flag-alt-3 +
    +
    + + + +
    + bxs-flag-alt +
    +
    + + + +
    + bxs-flag-chequered +
    +
    + + + +
    + bxs-flag +
    +
    + + + +
    + bxs-flame +
    +
    + + + +
    + bxs-flask-round +
    +
    + + + +
    + bxs-florist +
    +
    + + + +
    + bxs-flower-alt-2 +
    +
    + + + +
    + bxs-flower-alt +
    +
    + + + +
    + bxs-flower +
    +
    + + + +
    + bxs-folder-check +
    +
    + + + +
    + bxs-folder-code +
    +
    + + + +
    + bxs-folder-cog +
    +
    + + + +
    + bxs-folder-down-arrow +
    +
    + + + +
    + bxs-folder-heart +
    +
    + + + +
    + bxs-folder-minus +
    +
    + + + +
    + bxs-folder-open +
    +
    + + + +
    + bxs-folder-plus +
    +
    + + + +
    + bxs-folder-search +
    +
    + + + +
    + bxs-folder-star +
    +
    + + + +
    + bxs-folder-up-arrow +
    +
    + + + +
    + bxs-folder-x +
    +
    + + + +
    + bxs-folder-zip +
    +
    + + + +
    + bxs-folder +
    +
    + + + +
    + bxs-font-color +
    +
    + + + +
    + bxs-font-family +
    +
    + + + +
    + bxs-food-menu +
    +
    + + + +
    + bxs-food-tag +
    +
    + + + +
    + bxs-football-kick +
    +
    + + + +
    + bxs-football-pitch +
    +
    + + + +
    + bxs-football +
    +
    + + + +
    + bxs-footsteps +
    +
    + + + +
    + bxs-foreground +
    +
    + + + +
    + bxs-fork-knife +
    +
    + + + +
    + bxs-fork-spoon +
    +
    + + + +
    + bxs-fork +
    +
    + + + +
    + bxs-form +
    +
    + + + +
    + bxs-forward-big +
    +
    + + + +
    + bxs-forward-slash-circle +
    +
    + + + +
    + bxs-forward-slash-square +
    +
    + + + +
    + bxs-forward-slash +
    +
    + + + +
    + bxs-forward-stroke +
    +
    + + + +
    + bxs-forward +
    +
    + + + +
    + bxs-frame +
    +
    + + + +
    + bxs-fridge +
    +
    + + + +
    + bxs-fullscreen-exit +
    +
    + + + +
    + bxs-fullscreen +
    +
    + + + +
    + bxs-function +
    +
    + + + +
    + bxs-functions +
    +
    + + + +
    + bxs-future +
    +
    + + + +
    + bxs-gallery-horizontal-end +
    +
    + + + +
    + bxs-gallery-horizontal +
    +
    + + + +
    + bxs-gallery-thumbnails +
    +
    + + + +
    + bxs-gallery-vertical-end +
    +
    + + + +
    + bxs-gallery-vertical +
    +
    + + + +
    + bxs-gaming +
    +
    + + + +
    + bxs-garage +
    +
    + + + +
    + bxs-gavel +
    +
    + + + +
    + bxs-gear +
    +
    + + + +
    + bxs-gem +
    +
    + + + +
    + bxs-gestures +
    +
    + + + +
    + bxs-ghost +
    +
    + + + +
    + bxs-gift +
    +
    + + + +
    + bxs-git-branch +
    +
    + + + +
    + bxs-git-commit +
    +
    + + + +
    + bxs-git-compare +
    +
    + + + +
    + bxs-git-merge-queue +
    +
    + + + +
    + bxs-git-merge +
    +
    + + + +
    + bxs-git-pull-request-closed +
    +
    + + + +
    + bxs-git-pull-request-draft +
    +
    + + + +
    + bxs-git-pull-request +
    +
    + + + +
    + bxs-git-repo-forked +
    +
    + + + +
    + bxs-glasses-alt +
    +
    + + + +
    + bxs-glasses +
    +
    + + + +
    + bxs-globe-africa +
    +
    + + + +
    + bxs-globe-alt-2 +
    +
    + + + +
    + bxs-globe-alt +
    +
    + + + +
    + bxs-globe-americas +
    +
    + + + +
    + bxs-globe-antartica +
    +
    + + + +
    + bxs-globe-asia +
    +
    + + + +
    + bxs-globe-europe +
    +
    + + + +
    + bxs-globe-oceania +
    +
    + + + +
    + bxs-globe-stand +
    +
    + + + +
    + bxs-globe +
    +
    + + + +
    + bxs-golf-ball +
    +
    + + + +
    + bxs-gradient +
    +
    + + + +
    + bxs-greater-than-equal +
    +
    + + + +
    + bxs-greater-than +
    +
    + + + +
    + bxs-grid-9 +
    +
    + + + +
    + bxs-grid-circle-diagonal-left +
    +
    + + + +
    + bxs-grid-circle-diagonal-right +
    +
    + + + +
    + bxs-grid-circle-plus +
    +
    + + + +
    + bxs-grid-circle +
    +
    + + + +
    + bxs-grid-column-left +
    +
    + + + +
    + bxs-grid-column-right +
    +
    + + + +
    + bxs-grid-lines-3 +
    +
    + + + +
    + bxs-grid-lines +
    +
    + + + +
    + bxs-grid-plus +
    +
    + + + +
    + bxs-grid-row-bottom +
    +
    + + + +
    + bxs-grid-row-top +
    +
    + + + +
    + bxs-grid-search +
    +
    + + + +
    + bxs-grid +
    +
    + + + +
    + bxs-groceries +
    +
    + + + +
    + bxs-group-alt +
    +
    + + + +
    + bxs-group +
    +
    + + + +
    + bxs-guitar-amp +
    +
    + + + +
    + bxs-hail +
    +
    + + + +
    + bxs-hand-rock +
    +
    + + + +
    + bxs-hand +
    +
    + + + +
    + bxs-handheld-alt-2 +
    +
    + + + +
    + bxs-handheld-alt +
    +
    + + + +
    + bxs-handheld +
    +
    + + + +
    + bxs-handshake +
    +
    + + + +
    + bxs-hanger +
    +
    + + + +
    + bxs-happy-alt +
    +
    + + + +
    + bxs-happy-beaming +
    +
    + + + +
    + bxs-happy-heart-eyes +
    +
    + + + +
    + bxs-happy +
    +
    + + + +
    + bxs-hard-drive +
    +
    + + + +
    + bxs-hard-hat +
    +
    + + + +
    + bxs-hashtag +
    +
    + + + +
    + bxs-hdmi +
    +
    + + + +
    + bxs-head +
    +
    + + + +
    + bxs-heading-1 +
    +
    + + + +
    + bxs-heading-2 +
    +
    + + + +
    + bxs-heading-3 +
    +
    + + + +
    + bxs-heading +
    +
    + + + +
    + bxs-headphone-alt-2 +
    +
    + + + +
    + bxs-headphone-alt +
    +
    + + + +
    + bxs-headphone-mic +
    +
    + + + +
    + bxs-headphone +
    +
    + + + +
    + bxs-heart-break +
    +
    + + + +
    + bxs-heart-circle +
    +
    + + + +
    + bxs-heart-half +
    +
    + + + +
    + bxs-heart-plus +
    +
    + + + +
    + bxs-heart-square +
    +
    + + + +
    + bxs-heart +
    +
    + + + +
    + bxs-heat-wave +
    +
    + + + +
    + bxs-helmet +
    +
    + + + +
    + bxs-help-circle +
    +
    + + + +
    + bxs-help-octagon +
    +
    + + + +
    + bxs-hexagon +
    +
    + + + +
    + bxs-high-speed-train +
    +
    + + + +
    + bxs-highlight +
    +
    + + + +
    + bxs-highlights +
    +
    + + + +
    + bxs-hinduism +
    +
    + + + +
    + bxs-history +
    +
    + + + +
    + bxs-home-add +
    +
    + + + +
    + bxs-home-alt-2 +
    +
    + + + +
    + bxs-home-alt-3 +
    +
    + + + +
    + bxs-home-alt +
    +
    + + + +
    + bxs-home-circle +
    +
    + + + +
    + bxs-home-heart +
    +
    + + + +
    + bxs-home +
    +
    + + + +
    + bxs-honey +
    +
    + + + +
    + bxs-horizon-sea +
    +
    + + + +
    + bxs-horizontal-align-center +
    +
    + + + +
    + bxs-horizontal-align-left +
    +
    + + + +
    + bxs-horizontal-align-right +
    +
    + + + +
    + bxs-horizontal-center +
    +
    + + + +
    + bxs-horizontal-distribute-center +
    +
    + + + +
    + bxs-horizontal-distribute-left +
    +
    + + + +
    + bxs-horizontal-distribute-right +
    +
    + + + +
    + bxs-horizontal-left +
    +
    + + + +
    + bxs-horizontal-right +
    +
    + + + +
    + bxs-horizontal-spacing +
    +
    + + + +
    + bxs-hospital +
    +
    + + + +
    + bxs-hot-tub-water +
    +
    + + + +
    + bxs-hot-tub +
    +
    + + + +
    + bxs-hot +
    +
    + + + +
    + bxs-hourglass +
    +
    + + + +
    + bxs-hurricane +
    +
    + + + +
    + bxs-icecream +
    +
    + + + +
    + bxs-iframe +
    +
    + + + +
    + bxs-image-alt +
    +
    + + + +
    + bxs-image-circle +
    +
    + + + +
    + bxs-image-landscape +
    +
    + + + +
    + bxs-image-no-background +
    +
    + + + +
    + bxs-image-plus +
    +
    + + + +
    + bxs-image-portrait +
    +
    + + + +
    + bxs-image-sparkle +
    +
    + + + +
    + bxs-image +
    +
    + + + +
    + bxs-images +
    +
    + + + +
    + bxs-inbox +
    +
    + + + +
    + bxs-incognito +
    +
    + + + +
    + bxs-infinite +
    +
    + + + +
    + bxs-info-circle +
    +
    + + + +
    + bxs-info-octagon +
    +
    + + + +
    + bxs-info-shield +
    +
    + + + +
    + bxs-info-square +
    +
    + + + +
    + bxs-inner-shadow +
    +
    + + + +
    + bxs-institution +
    +
    + + + +
    + bxs-integral +
    +
    + + + +
    + bxs-intellect +
    +
    + + + +
    + bxs-invert-adjust +
    +
    + + + +
    + bxs-invert +
    +
    + + + +
    + bxs-islam +
    +
    + + + +
    + bxs-island +
    +
    + + + +
    + bxs-italic +
    +
    + + + +
    + bxs-joystick-alt +
    +
    + + + +
    + bxs-joystick-button-alt +
    +
    + + + +
    + bxs-joystick-button +
    +
    + + + +
    + bxs-joystick +
    +
    + + + +
    + bxs-judaism +
    +
    + + + +
    + bxs-key-alt +
    +
    + + + +
    + bxs-key +
    +
    + + + +
    + bxs-keyboard +
    +
    + + + +
    + bxs-keyframe-ease-in +
    +
    + + + +
    + bxs-keyframe-ease-out +
    +
    + + + +
    + bxs-keyframe-easy-ease +
    +
    + + + +
    + bxs-keyframe-hold-ease-in +
    +
    + + + +
    + bxs-keyframe-hold-ease-out +
    +
    + + + +
    + bxs-keyframe-hold-linear-in +
    +
    + + + +
    + bxs-keyframe-hold-linear-out +
    +
    + + + +
    + bxs-keyframe +
    +
    + + + +
    + bxs-knife +
    +
    + + + +
    + bxs-lambda +
    +
    + + + +
    + bxs-landmark +
    +
    + + + +
    + bxs-laptop-alt +
    +
    + + + +
    + bxs-laptop +
    +
    + + + +
    + bxs-lasso +
    +
    + + + +
    + bxs-last +
    +
    + + + +
    + bxs-laugh +
    +
    + + + +
    + bxs-law +
    +
    + + + +
    + bxs-layers-alt +
    +
    + + + +
    + bxs-layers-down-left +
    +
    + + + +
    + bxs-layers-down-right +
    +
    + + + +
    + bxs-layers-minus-alt +
    +
    + + + +
    + bxs-layers-plus-alt +
    +
    + + + +
    + bxs-layers +
    +
    + + + +
    + bxs-layout-check +
    +
    + + + +
    + bxs-layout-minus +
    +
    + + + +
    + bxs-layout-plus +
    +
    + + + +
    + bxs-layout-search +
    +
    + + + +
    + bxs-layout +
    +
    + + + +
    + bxs-leaf-alt +
    +
    + + + +
    + bxs-leaf +
    +
    + + + +
    + bxs-left-indent +
    +
    + + + +
    + bxs-lemon +
    +
    + + + +
    + bxs-less-than-equal +
    +
    + + + +
    + bxs-less-than +
    +
    + + + +
    + bxs-letter-spacing-alt +
    +
    + + + +
    + bxs-letter-spacing +
    +
    + + + +
    + bxs-light-bulb-alt-2 +
    +
    + + + +
    + bxs-light-bulb-alt +
    +
    + + + +
    + bxs-light-bulb-on +
    +
    + + + +
    + bxs-light-bulb +
    +
    + + + +
    + bxs-like +
    +
    + + + +
    + bxs-line-chart-square +
    +
    + + + +
    + bxs-line-spacing-alt +
    +
    + + + +
    + bxs-line-spacing +
    +
    + + + +
    + bxs-link-alt +
    +
    + + + +
    + bxs-link-break +
    +
    + + + +
    + bxs-link +
    +
    + + + +
    + bxs-lira +
    +
    + + + +
    + bxs-list-minus +
    +
    + + + +
    + bxs-list-music +
    +
    + + + +
    + bxs-list-ol +
    +
    + + + +
    + bxs-list-play +
    +
    + + + +
    + bxs-list-plus +
    +
    + + + +
    + bxs-list-square +
    +
    + + + +
    + bxs-list-ul-square +
    +
    + + + +
    + bxs-list-ul +
    +
    + + + +
    + bxs-list-x +
    +
    + + + +
    + bxs-list +
    +
    + + + +
    + bxs-loader-dots +
    +
    + + + +
    + bxs-loader-lines-alt +
    +
    + + + +
    + bxs-loader-lines +
    +
    + + + +
    + bxs-location-alt-2 +
    +
    + + + +
    + bxs-location-alt +
    +
    + + + +
    + bxs-location-blank +
    +
    + + + +
    + bxs-location-check +
    +
    + + + +
    + bxs-location-pin +
    +
    + + + +
    + bxs-location-plus +
    +
    + + + +
    + bxs-location-x +
    +
    + + + +
    + bxs-location +
    +
    + + + +
    + bxs-lock-keyhole-open-alt +
    +
    + + + +
    + bxs-lock-keyhole-open +
    +
    + + + +
    + bxs-lock-keyhole +
    +
    + + + +
    + bxs-lock-open-alt +
    +
    + + + +
    + bxs-lock-open +
    +
    + + + +
    + bxs-lock +
    +
    + + + +
    + bxs-lotion +
    +
    + + + +
    + bxs-low-vision +
    +
    + + + +
    + bxs-lowercase +
    +
    + + + +
    + bxs-luggage +
    +
    + + + +
    + bxs-lungs +
    +
    + + + +
    + bxs-magic-wand +
    +
    + + + +
    + bxs-magnet +
    +
    + + + +
    + bxs-mail-open +
    +
    + + + +
    + bxs-male +
    +
    + + + +
    + bxs-man-woman +
    +
    + + + +
    + bxs-man +
    +
    + + + +
    + bxs-map +
    +
    + + + +
    + bxs-margin-bottom +
    +
    + + + +
    + bxs-margin-left +
    +
    + + + +
    + bxs-margin-right +
    +
    + + + +
    + bxs-margin-top +
    +
    + + + +
    + bxs-martini +
    +
    + + + +
    + bxs-mask +
    +
    + + + +
    + bxs-math-alt +
    +
    + + + +
    + bxs-math +
    +
    + + + +
    + bxs-maximize +
    +
    + + + +
    + bxs-meat +
    +
    + + + +
    + bxs-medal-alt-2 +
    +
    + + + +
    + bxs-medal-alt +
    +
    + + + +
    + bxs-medal-star-alt-2 +
    +
    + + + +
    + bxs-medal-star-alt +
    +
    + + + +
    + bxs-medal-star +
    +
    + + + +
    + bxs-medal +
    +
    + + + +
    + bxs-medical-flask +
    +
    + + + +
    + bxs-medical-kit +
    +
    + + + +
    + bxs-megaphone-alt +
    +
    + + + +
    + bxs-megaphone +
    +
    + + + +
    + bxs-meh-alt +
    +
    + + + +
    + bxs-meh-blank +
    +
    + + + +
    + bxs-meh +
    +
    + + + +
    + bxs-menorah +
    +
    + + + +
    + bxs-menu-close +
    +
    + + + +
    + bxs-menu-closer +
    +
    + + + +
    + bxs-menu-filter +
    +
    + + + +
    + bxs-menu-left +
    +
    + + + +
    + bxs-menu-notification +
    +
    + + + +
    + bxs-menu-right +
    +
    + + + +
    + bxs-menu-search +
    +
    + + + +
    + bxs-menu-select +
    +
    + + + +
    + bxs-menu-wide +
    +
    + + + +
    + bxs-menu-wider +
    +
    + + + +
    + bxs-menu +
    +
    + + + +
    + bxs-merge +
    +
    + + + +
    + bxs-mesh +
    +
    + + + +
    + bxs-message-bubble-captions +
    +
    + + + +
    + bxs-message-bubble-check +
    +
    + + + +
    + bxs-message-bubble-code +
    +
    + + + +
    + bxs-message-bubble-detail +
    +
    + + + +
    + bxs-message-bubble-dots-2 +
    +
    + + + +
    + bxs-message-bubble-dots +
    +
    + + + +
    + bxs-message-bubble-edit +
    +
    + + + +
    + bxs-message-bubble-exclamation +
    +
    + + + +
    + bxs-message-bubble-heart +
    +
    + + + +
    + bxs-message-bubble-image +
    +
    + + + +
    + bxs-message-bubble-minus +
    +
    + + + +
    + bxs-message-bubble-notification +
    +
    + + + +
    + bxs-message-bubble-plus +
    +
    + + + +
    + bxs-message-bubble-question-mark +
    +
    + + + +
    + bxs-message-bubble-reply +
    +
    + + + +
    + bxs-message-bubble-star +
    +
    + + + +
    + bxs-message-bubble-x +
    +
    + + + +
    + bxs-message-bubble +
    +
    + + + +
    + bxs-message-captions +
    +
    + + + +
    + bxs-message-check +
    +
    + + + +
    + bxs-message-circle-captions +
    +
    + + + +
    + bxs-message-circle-check +
    +
    + + + +
    + bxs-message-circle-code +
    +
    + + + +
    + bxs-message-circle-detail +
    +
    + + + +
    + bxs-message-circle-dots-2 +
    +
    + + + +
    + bxs-message-circle-dots +
    +
    + + + +
    + bxs-message-circle-edit +
    +
    + + + +
    + bxs-message-circle-exclamation +
    +
    + + + +
    + bxs-message-circle-heart +
    +
    + + + +
    + bxs-message-circle-image +
    +
    + + + +
    + bxs-message-circle-minus +
    +
    + + + +
    + bxs-message-circle-notification +
    +
    + + + +
    + bxs-message-circle-plus +
    +
    + + + +
    + bxs-message-circle-question-mark +
    +
    + + + +
    + bxs-message-circle-reply +
    +
    + + + +
    + bxs-message-circle-star +
    +
    + + + +
    + bxs-message-circle-x +
    +
    + + + +
    + bxs-message-circle +
    +
    + + + +
    + bxs-message-code +
    +
    + + + +
    + bxs-message-detail +
    +
    + + + +
    + bxs-message-dots-2 +
    +
    + + + +
    + bxs-message-dots +
    +
    + + + +
    + bxs-message-edit +
    +
    + + + +
    + bxs-message-exclamation +
    +
    + + + +
    + bxs-message-heart +
    +
    + + + +
    + bxs-message-image +
    +
    + + + +
    + bxs-message-minus +
    +
    + + + +
    + bxs-message-notification +
    +
    + + + +
    + bxs-message-plus +
    +
    + + + +
    + bxs-message-question-mark +
    +
    + + + +
    + bxs-message-reply +
    +
    + + + +
    + bxs-message-star +
    +
    + + + +
    + bxs-message-x +
    +
    + + + +
    + bxs-message +
    +
    + + + +
    + bxs-meteor +
    +
    + + + +
    + bxs-microchip +
    +
    + + + +
    + bxs-microphone-alt-2 +
    +
    + + + +
    + bxs-microphone-alt +
    +
    + + + +
    + bxs-microphone-big-alt +
    +
    + + + +
    + bxs-microphone-big +
    +
    + + + +
    + bxs-microphone-slash +
    +
    + + + +
    + bxs-microphone +
    +
    + + + +
    + bxs-microscope +
    +
    + + + +
    + bxs-microwave-oven +
    +
    + + + +
    + bxs-milk-bottle +
    +
    + + + +
    + bxs-minimize +
    +
    + + + +
    + bxs-minus-circle +
    +
    + + + +
    + bxs-minus-plus +
    +
    + + + +
    + bxs-minus-shield +
    +
    + + + +
    + bxs-minus-square +
    +
    + + + +
    + bxs-minus +
    +
    + + + +
    + bxs-mobile-alt-2 +
    +
    + + + +
    + bxs-mobile-alt +
    +
    + + + +
    + bxs-mobile-back-alt-2 +
    +
    + + + +
    + bxs-mobile-back-alt +
    +
    + + + +
    + bxs-mobile-back +
    +
    + + + +
    + bxs-mobile-ring +
    +
    + + + +
    + bxs-mobile +
    +
    + + + +
    + bxs-monitor-wallpaper +
    +
    + + + +
    + bxs-monitor-wide +
    +
    + + + +
    + bxs-monitor +
    +
    + + + +
    + bxs-moon-crater +
    +
    + + + +
    + bxs-moon-phase-0 +
    +
    + + + +
    + bxs-moon-phase-1 +
    +
    + + + +
    + bxs-moon-phase-2 +
    +
    + + + +
    + bxs-moon-phase-3 +
    +
    + + + +
    + bxs-moon-phase-4 +
    +
    + + + +
    + bxs-moon-phase-5 +
    +
    + + + +
    + bxs-moon-phase-6 +
    +
    + + + +
    + bxs-moon-star +
    +
    + + + +
    + bxs-moon +
    +
    + + + +
    + bxs-mosque +
    +
    + + + +
    + bxs-motion-alt +
    +
    + + + +
    + bxs-motion +
    +
    + + + +
    + bxs-motorcycle +
    +
    + + + +
    + bxs-mountain-peak +
    +
    + + + +
    + bxs-mountain-view +
    +
    + + + +
    + bxs-mountain +
    +
    + + + +
    + bxs-mouse-alt +
    +
    + + + +
    + bxs-mouse +
    +
    + + + +
    + bxs-move-diagonal-left +
    +
    + + + +
    + bxs-move-diagonal-right +
    +
    + + + +
    + bxs-move-horizontal +
    +
    + + + +
    + bxs-move-vertical +
    +
    + + + +
    + bxs-move +
    +
    + + + +
    + bxs-movie-play +
    +
    + + + +
    + bxs-movie +
    +
    + + + +
    + bxs-music-alt-2 +
    +
    + + + +
    + bxs-music-alt +
    +
    + + + +
    + bxs-music-library +
    +
    + + + +
    + bxs-music +
    +
    + + + +
    + bxs-network-chart +
    +
    + + + +
    + bxs-network-device +
    +
    + + + +
    + bxs-news +
    +
    + + + +
    + bxs-newspaper +
    +
    + + + +
    + bxs-night-light +
    +
    + + + +
    + bxs-no-entry +
    +
    + + + +
    + bxs-noise +
    +
    + + + +
    + bxs-not-element-of +
    +
    + + + +
    + bxs-not-equal +
    +
    + + + +
    + bxs-not-subset +
    +
    + + + +
    + bxs-not-superset +
    +
    + + + +
    + bxs-note-book +
    +
    + + + +
    + bxs-note +
    +
    + + + +
    + bxs-notification-slash +
    +
    + + + +
    + bxs-notification +
    +
    + + + +
    + bxs-nut +
    +
    + + + +
    + bxs-octopus +
    +
    + + + +
    + bxs-omega +
    +
    + + + +
    + bxs-option +
    +
    + + + +
    + bxs-outdoor-dining +
    +
    + + + +
    + bxs-outer-shadow +
    +
    + + + +
    + bxs-oval-vertical +
    +
    + + + +
    + bxs-oval +
    +
    + + + +
    + bxs-oven +
    +
    + + + +
    + bxs-owl +
    +
    + + + +
    + bxs-pacifism +
    +
    + + + +
    + bxs-package +
    +
    + + + +
    + bxs-pacman +
    +
    + + + +
    + bxs-paint-alt +
    +
    + + + +
    + bxs-paint-roll +
    +
    + + + +
    + bxs-paint +
    +
    + + + +
    + bxs-palette +
    +
    + + + +
    + bxs-pant +
    +
    + + + +
    + bxs-paper-plane +
    +
    + + + +
    + bxs-paperclip +
    +
    + + + +
    + bxs-paragraph-spacing +
    +
    + + + +
    + bxs-paragraph +
    +
    + + + +
    + bxs-parallel +
    +
    + + + +
    + bxs-parent-child +
    +
    + + + +
    + bxs-party +
    +
    + + + +
    + bxs-paste +
    +
    + + + +
    + bxs-path +
    +
    + + + +
    + bxs-pause-circle +
    +
    + + + +
    + bxs-pause +
    +
    + + + +
    + bxs-paw-print +
    +
    + + + +
    + bxs-pear +
    +
    + + + +
    + bxs-pen-alt +
    +
    + + + +
    + bxs-pen-draw +
    +
    + + + +
    + bxs-pen-edit-circle +
    +
    + + + +
    + bxs-pen-minus +
    +
    + + + +
    + bxs-pen-plus +
    +
    + + + +
    + bxs-pen +
    +
    + + + +
    + bxs-pencil-circle +
    +
    + + + +
    + bxs-pencil-draw +
    +
    + + + +
    + bxs-pencil-edit-circle +
    +
    + + + +
    + bxs-pencil-sparkles +
    +
    + + + +
    + bxs-pencil-square +
    +
    + + + +
    + bxs-pencil +
    +
    + + + +
    + bxs-pentagon +
    +
    + + + +
    + bxs-people-diversity +
    +
    + + + +
    + bxs-people-handshake +
    +
    + + + +
    + bxs-people-heart +
    +
    + + + +
    + bxs-percentage +
    +
    + + + +
    + bxs-perpendicular +
    +
    + + + +
    + bxs-perspective +
    +
    + + + +
    + bxs-petrol-pump +
    +
    + + + +
    + bxs-pharmacy +
    +
    + + + +
    + bxs-phone-book +
    +
    + + + +
    + bxs-phone-forwarding +
    +
    + + + +
    + bxs-phone-incoming +
    +
    + + + +
    + bxs-phone-outgoing +
    +
    + + + +
    + bxs-phone-plus +
    +
    + + + +
    + bxs-phone-ring +
    +
    + + + +
    + bxs-phone-x +
    +
    + + + +
    + bxs-phone +
    +
    + + + +
    + bxs-photo-album +
    +
    + + + +
    + bxs-pi +
    +
    + + + +
    + bxs-piano-alt +
    +
    + + + +
    + bxs-piano-grand +
    +
    + + + +
    + bxs-piano +
    +
    + + + +
    + bxs-pickup-truck +
    +
    + + + +
    + bxs-picture-in-picture-close +
    +
    + + + +
    + bxs-picture-in-picture +
    +
    + + + +
    + bxs-pie-chart-alt-2 +
    +
    + + + +
    + bxs-pie-chart-alt +
    +
    + + + +
    + bxs-pie-chart +
    +
    + + + +
    + bxs-piggy-bank +
    +
    + + + +
    + bxs-pill-bottle-alt +
    +
    + + + +
    + bxs-pill-bottle +
    +
    + + + +
    + bxs-pill +
    +
    + + + +
    + bxs-pin-alt +
    +
    + + + +
    + bxs-pin-slash-alt +
    +
    + + + +
    + bxs-pin +
    +
    + + + +
    + bxs-pizza-alt +
    +
    + + + +
    + bxs-pizza +
    +
    + + + +
    + bxs-plane-alt +
    +
    + + + +
    + bxs-plane-land +
    +
    + + + +
    + bxs-plane-take-off +
    +
    + + + +
    + bxs-plane +
    +
    + + + +
    + bxs-planet +
    +
    + + + +
    + bxs-plant-pot +
    +
    + + + +
    + bxs-play-circle-alt +
    +
    + + + +
    + bxs-play-circle +
    +
    + + + +
    + bxs-play +
    +
    + + + +
    + bxs-plug-connect +
    +
    + + + +
    + bxs-plus-big +
    +
    + + + +
    + bxs-plus-circle +
    +
    + + + +
    + bxs-plus-minus +
    +
    + + + +
    + bxs-plus-shield +
    +
    + + + +
    + bxs-plus-square +
    +
    + + + +
    + bxs-plus +
    +
    + + + +
    + bxs-podcast +
    +
    + + + +
    + bxs-polar-chart +
    +
    + + + +
    + bxs-poll +
    +
    + + + +
    + bxs-polygon +
    +
    + + + +
    + bxs-popsicle +
    +
    + + + +
    + bxs-pound +
    +
    + + + +
    + bxs-power +
    +
    + + + +
    + bxs-prawn +
    +
    + + + +
    + bxs-price-tag-alt +
    +
    + + + +
    + bxs-price-tag +
    +
    + + + +
    + bxs-print-dollar +
    +
    + + + +
    + bxs-printer +
    +
    + + + +
    + bxs-proper-subset +
    +
    + + + +
    + bxs-proper-superset +
    +
    + + + +
    + bxs-psychology +
    +
    + + + +
    + bxs-puck +
    +
    + + + +
    + bxs-pulse +
    +
    + + + +
    + bxs-pyramid +
    +
    + + + +
    + bxs-qr-scan +
    +
    + + + +
    + bxs-qr +
    +
    + + + +
    + bxs-queue +
    +
    + + + +
    + bxs-quote-left-alt +
    +
    + + + +
    + bxs-quote-left +
    +
    + + + +
    + bxs-quote-right-alt +
    +
    + + + +
    + bxs-quote-right +
    +
    + + + +
    + bxs-quote-single-left +
    +
    + + + +
    + bxs-quote-single-right +
    +
    + + + +
    + bxs-radar +
    +
    + + + +
    + bxs-radiation +
    +
    + + + +
    + bxs-radio-circle-marked +
    +
    + + + +
    + bxs-radio-circle +
    +
    + + + +
    + bxs-radio +
    +
    + + + +
    + bxs-rainbow +
    +
    + + + +
    + bxs-reading-glass +
    +
    + + + +
    + bxs-reading +
    +
    + + + +
    + bxs-receipt +
    +
    + + + +
    + bxs-rectangle-vertical +
    +
    + + + +
    + bxs-rectangle-wide +
    +
    + + + +
    + bxs-rectangle +
    +
    + + + +
    + bxs-recycle +
    +
    + + + +
    + bxs-redo-alt +
    +
    + + + +
    + bxs-redo-stroke-alt +
    +
    + + + +
    + bxs-redo-stroke +
    +
    + + + +
    + bxs-redo +
    +
    + + + +
    + bxs-reflect-horizontal-alt +
    +
    + + + +
    + bxs-reflect-horizontal +
    +
    + + + +
    + bxs-reflect-vertical-alt +
    +
    + + + +
    + bxs-reflect-vertical +
    +
    + + + +
    + bxs-refresh-ccw-alt-dot +
    +
    + + + +
    + bxs-refresh-ccw-alt +
    +
    + + + +
    + bxs-refresh-ccw-dot +
    +
    + + + +
    + bxs-refresh-ccw +
    +
    + + + +
    + bxs-refresh-cw-alt-dot +
    +
    + + + +
    + bxs-refresh-cw-alt +
    +
    + + + +
    + bxs-refresh-cw-dot +
    +
    + + + +
    + bxs-refresh-cw +
    +
    + + + +
    + bxs-registered +
    +
    + + + +
    + bxs-rename +
    +
    + + + +
    + bxs-repeat-alt-2 +
    +
    + + + +
    + bxs-repeat-alt +
    +
    + + + +
    + bxs-repeat +
    +
    + + + +
    + bxs-reply-big +
    +
    + + + +
    + bxs-reply-stroke +
    +
    + + + +
    + bxs-reply +
    +
    + + + +
    + bxs-report +
    +
    + + + +
    + bxs-rewind-circle +
    +
    + + + +
    + bxs-rewind +
    +
    + + + +
    + bxs-rfid +
    +
    + + + +
    + bxs-rgb +
    +
    + + + +
    + bxs-right-angle-triangle-half +
    +
    + + + +
    + bxs-right-angle-triangle +
    +
    + + + +
    + bxs-right-indent +
    +
    + + + +
    + bxs-robot +
    +
    + + + +
    + bxs-rocket-alt +
    +
    + + + +
    + bxs-rocket +
    +
    + + + +
    + bxs-rotate-ccw-10 +
    +
    + + + +
    + bxs-rotate-ccw-30 +
    +
    + + + +
    + bxs-rotate-ccw-5 +
    +
    + + + +
    + bxs-rotate-ccw-dot +
    +
    + + + +
    + bxs-rotate-ccw +
    +
    + + + +
    + bxs-rotate-cw-10 +
    +
    + + + +
    + bxs-rotate-cw-30 +
    +
    + + + +
    + bxs-rotate-cw-5 +
    +
    + + + +
    + bxs-rotate-cw-dot +
    +
    + + + +
    + bxs-rotate-cw +
    +
    + + + +
    + bxs-rotate-square-ccw +
    +
    + + + +
    + bxs-rotate-square-cw +
    +
    + + + +
    + bxs-route +
    +
    + + + +
    + bxs-row-resize +
    +
    + + + +
    + bxs-rows-3 +
    +
    + + + +
    + bxs-rows-4 +
    +
    + + + +
    + bxs-rows +
    +
    + + + +
    + bxs-rss +
    +
    + + + +
    + bxs-ruble +
    +
    + + + +
    + bxs-rugby-ball +
    +
    + + + +
    + bxs-ruler +
    +
    + + + +
    + bxs-running +
    +
    + + + +
    + bxs-rupee +
    +
    + + + +
    + bxs-sad +
    +
    + + + +
    + bxs-safe +
    +
    + + + +
    + bxs-sail +
    +
    + + + +
    + bxs-sandwich +
    +
    + + + +
    + bxs-sapling +
    +
    + + + +
    + bxs-save +
    +
    + + + +
    + bxs-scale +
    +
    + + + +
    + bxs-scan-ar +
    +
    + + + +
    + bxs-scan-barcode +
    +
    + + + +
    + bxs-scan-detail +
    +
    + + + +
    + bxs-scan-face +
    +
    + + + +
    + bxs-scan-search +
    +
    + + + +
    + bxs-scan +
    +
    + + + +
    + bxs-school-bus +
    +
    + + + +
    + bxs-school +
    +
    + + + +
    + bxs-science +
    +
    + + + +
    + bxs-scooter-delivery +
    +
    + + + +
    + bxs-scooter +
    +
    + + + +
    + bxs-screen-light +
    +
    + + + +
    + bxs-screenshot +
    +
    + + + +
    + bxs-scribble +
    +
    + + + +
    + bxs-scroll +
    +
    + + + +
    + bxs-sd-card +
    +
    + + + +
    + bxs-sea-view +
    +
    + + + +
    + bxs-seal-check +
    +
    + + + +
    + bxs-seal +
    +
    + + + +
    + bxs-search-alt +
    +
    + + + +
    + bxs-search-big-code +
    +
    + + + +
    + bxs-search-big-minus +
    +
    + + + +
    + bxs-search-big-plus +
    +
    + + + +
    + bxs-search-big-x +
    +
    + + + +
    + bxs-search-big +
    +
    + + + +
    + bxs-search-code +
    +
    + + + +
    + bxs-search-minus +
    +
    + + + +
    + bxs-search-plus +
    +
    + + + +
    + bxs-search-x +
    +
    + + + +
    + bxs-search +
    +
    + + + +
    + bxs-select-all +
    +
    + + + +
    + bxs-select-many +
    +
    + + + +
    + bxs-select-none +
    +
    + + + +
    + bxs-select +
    +
    + + + +
    + bxs-self-care +
    +
    + + + +
    + bxs-send-alt-2 +
    +
    + + + +
    + bxs-send-alt +
    +
    + + + +
    + bxs-send +
    +
    + + + +
    + bxs-server +
    +
    + + + +
    + bxs-set-intersection +
    +
    + + + +
    + bxs-set-union +
    +
    + + + +
    + bxs-shadows +
    +
    + + + +
    + bxs-shape-exclude-alt +
    +
    + + + +
    + bxs-shape-exclude +
    +
    + + + +
    + bxs-shape-intersect-alt +
    +
    + + + +
    + bxs-shape-intersect +
    +
    + + + +
    + bxs-shape-outline-alt +
    +
    + + + +
    + bxs-shape-outline +
    +
    + + + +
    + bxs-shape-rotate-ccw +
    +
    + + + +
    + bxs-shape-rotate-cw +
    +
    + + + +
    + bxs-shape-subtract-alt +
    +
    + + + +
    + bxs-shape-subtract +
    +
    + + + +
    + bxs-shape-trim-alt +
    +
    + + + +
    + bxs-shape-trim +
    +
    + + + +
    + bxs-shape-unite-alt +
    +
    + + + +
    + bxs-shape-unite +
    +
    + + + +
    + bxs-shapes-alt-2 +
    +
    + + + +
    + bxs-shapes-alt +
    +
    + + + +
    + bxs-shapes +
    +
    + + + +
    + bxs-share +
    +
    + + + +
    + bxs-shekel +
    +
    + + + +
    + bxs-shield-alt-2 +
    +
    + + + +
    + bxs-shield-alt +
    +
    + + + +
    + bxs-shield-circle +
    +
    + + + +
    + bxs-shield-half +
    +
    + + + +
    + bxs-shield-quarter +
    +
    + + + +
    + bxs-shield +
    +
    + + + +
    + bxs-shinto +
    +
    + + + +
    + bxs-ship +
    +
    + + + +
    + bxs-shocked +
    +
    + + + +
    + bxs-shopping-bag-alt +
    +
    + + + +
    + bxs-shopping-bag +
    +
    + + + +
    + bxs-shower +
    +
    + + + +
    + bxs-shrink-left +
    +
    + + + +
    + bxs-shrink-right +
    +
    + + + +
    + bxs-shuffle +
    +
    + + + +
    + bxs-shutter-alt +
    +
    + + + +
    + bxs-shutter +
    +
    + + + +
    + bxs-shuttlecock +
    +
    + + + +
    + bxs-sidebar-right +
    +
    + + + +
    + bxs-sidebar +
    +
    + + + +
    + bxs-sigma +
    +
    + + + +
    + bxs-signal-1 +
    +
    + + + +
    + bxs-signal-2 +
    +
    + + + +
    + bxs-signal-3 +
    +
    + + + +
    + bxs-signal-4 +
    +
    + + + +
    + bxs-signal-5 +
    +
    + + + +
    + bxs-signal-slash +
    +
    + + + +
    + bxs-signature +
    +
    + + + +
    + bxs-sikhism +
    +
    + + + +
    + bxs-sine-wave +
    +
    + + + +
    + bxs-siren-alt +
    +
    + + + +
    + bxs-siren +
    +
    + + + +
    + bxs-sitemap +
    +
    + + + +
    + bxs-size-distort +
    +
    + + + +
    + bxs-size-freeform +
    +
    + + + +
    + bxs-size-uniform +
    +
    + + + +
    + bxs-size-warp +
    +
    + + + +
    + bxs-skateboard +
    +
    + + + +
    + bxs-skip-next-circle +
    +
    + + + +
    + bxs-skip-next +
    +
    + + + +
    + bxs-skip-previous-circle +
    +
    + + + +
    + bxs-skip-previous +
    +
    + + + +
    + bxs-skirt +
    +
    + + + +
    + bxs-skull +
    +
    + + + +
    + bxs-sleepy +
    +
    + + + +
    + bxs-slice +
    +
    + + + +
    + bxs-slider-alt +
    +
    + + + +
    + bxs-slider-vertical-alt +
    +
    + + + +
    + bxs-slider-vertical +
    +
    + + + +
    + bxs-slider +
    +
    + + + +
    + bxs-slideshow +
    +
    + + + +
    + bxs-smile +
    +
    + + + +
    + bxs-smoke-alarm-alt-2 +
    +
    + + + +
    + bxs-smoke-alarm-alt +
    +
    + + + +
    + bxs-smoke-alarm +
    +
    + + + +
    + bxs-sneaker +
    +
    + + + +
    + bxs-snowflake +
    +
    + + + +
    + bxs-sock +
    +
    + + + +
    + bxs-solar-panel +
    +
    + + + +
    + bxs-spa +
    +
    + + + +
    + bxs-spacebar +
    +
    + + + +
    + bxs-spade +
    +
    + + + +
    + bxs-spanner +
    +
    + + + +
    + bxs-sparkle-circle +
    +
    + + + +
    + bxs-sparkle-square +
    +
    + + + +
    + bxs-sparkle +
    +
    + + + +
    + bxs-sparkles-alt +
    +
    + + + +
    + bxs-sparkles +
    +
    + + + +
    + bxs-speaker +
    +
    + + + +
    + bxs-sphere +
    +
    + + + +
    + bxs-split +
    +
    + + + +
    + bxs-spoon +
    +
    + + + +
    + bxs-spray-can +
    +
    + + + +
    + bxs-square-dashed-half +
    +
    + + + +
    + bxs-square-dashed +
    +
    + + + +
    + bxs-square-root +
    +
    + + + +
    + bxs-square-rounded +
    +
    + + + +
    + bxs-square-small +
    +
    + + + +
    + bxs-square +
    +
    + + + +
    + bxs-squircle +
    +
    + + + +
    + bxs-stadium +
    +
    + + + +
    + bxs-stamp +
    +
    + + + +
    + bxs-star-circle +
    +
    + + + +
    + bxs-star-half +
    +
    + + + +
    + bxs-star-square +
    +
    + + + +
    + bxs-star +
    +
    + + + +
    + bxs-station +
    +
    + + + +
    + bxs-steering-wheel +
    +
    + + + +
    + bxs-steps-down +
    +
    + + + +
    + bxs-steps-up +
    +
    + + + +
    + bxs-sticker +
    +
    + + + +
    + bxs-stop-circle +
    +
    + + + +
    + bxs-stop +
    +
    + + + +
    + bxs-stopwatch +
    +
    + + + +
    + bxs-store-alt-2 +
    +
    + + + +
    + bxs-store-alt +
    +
    + + + +
    + bxs-store +
    +
    + + + +
    + bxs-strategy +
    +
    + + + +
    + bxs-street-view +
    +
    + + + +
    + bxs-strikethrough +
    +
    + + + +
    + bxs-stroke-drawing +
    +
    + + + +
    + bxs-stroke-freehand +
    +
    + + + +
    + bxs-stroke-ink +
    +
    + + + +
    + bxs-stroke-pen +
    +
    + + + +
    + bxs-subscript +
    +
    + + + +
    + bxs-subset +
    +
    + + + +
    + bxs-subway +
    +
    + + + +
    + bxs-sun-bright +
    +
    + + + +
    + bxs-sun-dim +
    +
    + + + +
    + bxs-sun-drizzle +
    +
    + + + +
    + bxs-sun-fog +
    +
    + + + +
    + bxs-sun-rain-wind +
    +
    + + + +
    + bxs-sun-rain +
    +
    + + + +
    + bxs-sun-rise +
    +
    + + + +
    + bxs-sun-set +
    +
    + + + +
    + bxs-sun-snow +
    +
    + + + +
    + bxs-sun +
    +
    + + + +
    + bxs-superscript +
    +
    + + + +
    + bxs-superset +
    +
    + + + +
    + bxs-surfboard +
    +
    + + + +
    + bxs-sushi +
    +
    + + + +
    + bxs-swap-diagonal +
    +
    + + + +
    + bxs-swap-horizontal +
    +
    + + + +
    + bxs-swap-vertical +
    +
    + + + +
    + bxs-swatch +
    +
    + + + +
    + bxs-swimming-pool +
    +
    + + + +
    + bxs-swimming +
    +
    + + + +
    + bxs-sword-alt +
    +
    + + + +
    + bxs-sword +
    +
    + + + +
    + bxs-syringe +
    +
    + + + +
    + bxs-t-shirt +
    +
    + + + +
    + bxs-tab +
    +
    + + + +
    + bxs-table-cells-large +
    +
    + + + +
    + bxs-table-cells +
    +
    + + + +
    + bxs-table-columns-merge +
    +
    + + + +
    + bxs-table-columns-split +
    +
    + + + +
    + bxs-table-columns +
    +
    + + + +
    + bxs-table-layout +
    +
    + + + +
    + bxs-table-list +
    +
    + + + +
    + bxs-table-rows-merge +
    +
    + + + +
    + bxs-table-rows-split +
    +
    + + + +
    + bxs-table-rows +
    +
    + + + +
    + bxs-table-tennis +
    +
    + + + +
    + bxs-table +
    +
    + + + +
    + bxs-tablet +
    +
    + + + +
    + bxs-tabs +
    +
    + + + +
    + bxs-tachometer-alt +
    +
    + + + +
    + bxs-tachometer +
    +
    + + + +
    + bxs-taco +
    +
    + + + +
    + bxs-tag-alt +
    +
    + + + +
    + bxs-tag-x +
    +
    + + + +
    + bxs-tag +
    +
    + + + +
    + bxs-takeaway +
    +
    + + + +
    + bxs-target +
    +
    + + + +
    + bxs-taxi +
    +
    + + + +
    + bxs-temple +
    +
    + + + +
    + bxs-tennis-ball-alt +
    +
    + + + +
    + bxs-tennis-ball +
    +
    + + + +
    + bxs-tennis +
    +
    + + + +
    + bxs-tent +
    +
    + + + +
    + bxs-terminal +
    +
    + + + +
    + bxs-test-tube +
    +
    + + + +
    + bxs-text-height +
    +
    + + + +
    + bxs-text-underline +
    +
    + + + +
    + bxs-text-width +
    +
    + + + +
    + bxs-texture +
    +
    + + + +
    + bxs-thermometer +
    +
    + + + +
    + bxs-thought-bubble +
    +
    + + + +
    + bxs-thread-roll +
    +
    + + + +
    + bxs-thumb-down +
    +
    + + + +
    + bxs-thumb-up +
    +
    + + + +
    + bxs-thunder +
    +
    + + + +
    + bxs-ticket-star +
    +
    + + + +
    + bxs-ticket +
    +
    + + + +
    + bxs-tickets +
    +
    + + + +
    + bxs-timer +
    +
    + + + +
    + bxs-tiny-home +
    +
    + + + +
    + bxs-tired +
    +
    + + + +
    + bxs-toggle-big-left +
    +
    + + + +
    + bxs-toggle-big-right +
    +
    + + + +
    + bxs-toggle-left +
    +
    + + + +
    + bxs-toggle-right +
    +
    + + + +
    + bxs-toggles +
    +
    + + + +
    + bxs-toilet-roll +
    +
    + + + +
    + bxs-tooth +
    +
    + + + +
    + bxs-torch +
    +
    + + + +
    + bxs-tornado +
    +
    + + + +
    + bxs-torus +
    +
    + + + +
    + bxs-towel +
    +
    + + + +
    + bxs-toy-car +
    +
    + + + +
    + bxs-traffic-barrier +
    +
    + + + +
    + bxs-traffic-cone +
    +
    + + + +
    + bxs-train +
    +
    + + + +
    + bxs-tram +
    +
    + + + +
    + bxs-transgender +
    +
    + + + +
    + bxs-translate +
    +
    + + + +
    + bxs-transparency +
    +
    + + + +
    + bxs-trash-alt +
    +
    + + + +
    + bxs-trash-x +
    +
    + + + +
    + bxs-trash +
    +
    + + + +
    + bxs-treasure-chest +
    +
    + + + +
    + bxs-tree-alt +
    +
    + + + +
    + bxs-tree +
    +
    + + + +
    + bxs-trees +
    +
    + + + +
    + bxs-trending-down +
    +
    + + + +
    + bxs-trending-up +
    +
    + + + +
    + bxs-triangle-half +
    +
    + + + +
    + bxs-triangle +
    +
    + + + +
    + bxs-trip +
    +
    + + + +
    + bxs-trophy-star +
    +
    + + + +
    + bxs-trophy +
    +
    + + + +
    + bxs-truck +
    +
    + + + +
    + bxs-turkey-meat +
    +
    + + + +
    + bxs-turn-down +
    +
    + + + +
    + bxs-turn-left +
    +
    + + + +
    + bxs-turn-right +
    +
    + + + +
    + bxs-turn-up +
    +
    + + + +
    + bxs-tv-alt +
    +
    + + + +
    + bxs-tv +
    +
    + + + +
    + bxs-ufo +
    +
    + + + +
    + bxs-umbrella-alt +
    +
    + + + +
    + bxs-umbrella +
    +
    + + + +
    + bxs-underline-dashed +
    +
    + + + +
    + bxs-underline-dotted +
    +
    + + + +
    + bxs-underline-wavy +
    +
    + + + +
    + bxs-underline +
    +
    + + + +
    + bxs-undershirt +
    +
    + + + +
    + bxs-undo-alt +
    +
    + + + +
    + bxs-undo-stroke-alt +
    +
    + + + +
    + bxs-undo-stroke +
    +
    + + + +
    + bxs-undo +
    +
    + + + +
    + bxs-universal-access +
    +
    + + + +
    + bxs-unlink-alt +
    +
    + + + +
    + bxs-unlink +
    +
    + + + +
    + bxs-uppercase +
    +
    + + + +
    + bxs-upside-down +
    +
    + + + +
    + bxs-usb +
    +
    + + + +
    + bxs-user-check +
    +
    + + + +
    + bxs-user-circle +
    +
    + + + +
    + bxs-user-hexagon +
    +
    + + + +
    + bxs-user-id-card +
    +
    + + + +
    + bxs-user-minus +
    +
    + + + +
    + bxs-user-plus +
    +
    + + + +
    + bxs-user-search +
    +
    + + + +
    + bxs-user-square +
    +
    + + + +
    + bxs-user-voice +
    +
    + + + +
    + bxs-user-x +
    +
    + + + +
    + bxs-user +
    +
    + + + +
    + bxs-van +
    +
    + + + +
    + bxs-variable +
    +
    + + + +
    + bxs-vector-square +
    +
    + + + +
    + bxs-vector-triangle +
    +
    + + + +
    + bxs-vector +
    +
    + + + +
    + bxs-vertical-align-bottom +
    +
    + + + +
    + bxs-vertical-align-center +
    +
    + + + +
    + bxs-vertical-align-top +
    +
    + + + +
    + bxs-vertical-bottom +
    +
    + + + +
    + bxs-vertical-center +
    +
    + + + +
    + bxs-vertical-distribute-bottom +
    +
    + + + +
    + bxs-vertical-distribute-center +
    +
    + + + +
    + bxs-vertical-distribute-top +
    +
    + + + +
    + bxs-vertical-spacing +
    +
    + + + +
    + bxs-vertical-top +
    +
    + + + +
    + bxs-vial-alt +
    +
    + + + +
    + bxs-vial +
    +
    + + + +
    + bxs-video-cinema +
    +
    + + + +
    + bxs-video-plus +
    +
    + + + +
    + bxs-video-slash +
    +
    + + + +
    + bxs-video +
    +
    + + + +
    + bxs-vignette +
    +
    + + + +
    + bxs-virus-slash +
    +
    + + + +
    + bxs-virus +
    +
    + + + +
    + bxs-voicemail +
    +
    + + + +
    + bxs-volleyball +
    +
    + + + +
    + bxs-volume-full +
    +
    + + + +
    + bxs-volume-low +
    +
    + + + +
    + bxs-volume-mute +
    +
    + + + +
    + bxs-volume +
    +
    + + + +
    + bxs-vr-goggles +
    +
    + + + +
    + bxs-vr-headset +
    +
    + + + +
    + bxs-waffle +
    +
    + + + +
    + bxs-walking +
    +
    + + + +
    + bxs-wall +
    +
    + + + +
    + bxs-wallet-alt +
    +
    + + + +
    + bxs-wallet-cards +
    +
    + + + +
    + bxs-wallet-note +
    +
    + + + +
    + bxs-wallet +
    +
    + + + +
    + bxs-warehouse +
    +
    + + + +
    + bxs-washer +
    +
    + + + +
    + bxs-water-drop-alt +
    +
    + + + +
    + bxs-water-drop-half +
    +
    + + + +
    + bxs-water-drop +
    +
    + + + +
    + bxs-water-spray +
    +
    + + + +
    + bxs-water +
    +
    + + + +
    + bxs-watermelon +
    +
    + + + +
    + bxs-waveform +
    +
    + + + +
    + bxs-webcam +
    +
    + + + +
    + bxs-webhook +
    +
    + + + +
    + bxs-whiteboard-alt +
    +
    + + + +
    + bxs-whiteboard +
    +
    + + + +
    + bxs-widget-horizontal +
    +
    + + + +
    + bxs-widget-small +
    +
    + + + +
    + bxs-widget-vertical +
    +
    + + + +
    + bxs-widget +
    +
    + + + +
    + bxs-wifi-0 +
    +
    + + + +
    + bxs-wifi-1 +
    +
    + + + +
    + bxs-wifi-2 +
    +
    + + + +
    + bxs-wifi-slash +
    +
    + + + +
    + bxs-wifi +
    +
    + + + +
    + bxs-wind +
    +
    + + + +
    + bxs-window-arrow-in +
    +
    + + + +
    + bxs-window-arrow-out +
    +
    + + + +
    + bxs-window-mac-alt +
    +
    + + + +
    + bxs-window-mac +
    +
    + + + +
    + bxs-window +
    +
    + + + +
    + bxs-windows +
    +
    + + + +
    + bxs-wine-alt +
    +
    + + + +
    + bxs-wine +
    +
    + + + +
    + bxs-wink-smile +
    +
    + + + +
    + bxs-wink-tongue +
    +
    + + + +
    + bxs-woman +
    +
    + + + +
    + bxs-won +
    +
    + + + +
    + bxs-wrist-watch-alt +
    +
    + + + +
    + bxs-wrist-watch-round-alt +
    +
    + + + +
    + bxs-wrist-watch-round +
    +
    + + + +
    + bxs-wrist-watch +
    +
    + + + +
    + bxs-x-circle +
    +
    + + + +
    + bxs-x-shield +
    +
    + + + +
    + bxs-x-square +
    +
    + + + +
    + bxs-x +
    +
    + + + +
    + bxs-yarn-ball +
    +
    + + + +
    + bxs-yen +
    +
    + + + +
    + bxs-yin-yang +
    + + \ No newline at end of file diff --git a/apps/icon-pack-builder/boxicons-free/fonts/basic/boxicons.json b/apps/icon-pack-builder/boxicons-free/fonts/basic/boxicons.json new file mode 100644 index 000000000..10c5ae797 --- /dev/null +++ b/apps/icon-pack-builder/boxicons-free/fonts/basic/boxicons.json @@ -0,0 +1,3702 @@ +{ + "variable-selector-00": 64286, + "variable-selector-01": 65024, + "variable-selector-02": 65025, + "variable-selector-03": 65026, + "variable-selector-04": 65027, + "variable-selector-05": 65028, + "variable-selector-06": 65029, + "variable-selector-07": 65030, + "variable-selector-08": 65031, + "variable-selector-09": 65032, + "variable-selector-10": 65033, + "variable-selector-11": 65034, + "variable-selector-12": 65035, + "variable-selector-13": 65036, + "variable-selector-14": 65037, + "variable-selector-15": 65038, + "variable-selector-16": 65039, + "variable-selector-017": 65056, + "variable-selector-018": 65057, + "variable-selector-019": 65058, + "variable-selector-020": 65059, + "variable-selector-021": 65060, + "variable-selector-022": 65061, + "variable-selector-023": 65062, + "variable-selector-024": 65063, + "variable-selector-025": 65064, + "variable-selector-026": 65065, + "variable-selector-027": 65066, + "variable-selector-028": 65067, + "variable-selector-029": 65068, + "variable-selector-030": 65069, + "variable-selector-031": 65070, + "variable-selector-032": 65071, + "variable-selector-033": 65279, + "bx-8-ball": 61697, + "bx-a-arrow-down": 61698, + "bx-a-arrow-up": 61699, + "bx-accessibility": 61700, + "bx-acorn": 61701, + "bx-address-book": 61702, + "bx-air-conditioner": 61703, + "bx-air": 61704, + "bx-airplay": 61705, + "bx-alarm-alt": 61706, + "bx-alarm-check": 61707, + "bx-alarm-exclamation": 61708, + "bx-alarm-minus": 61709, + "bx-alarm-plus": 61710, + "bx-alarm-slash": 61711, + "bx-alarm-z": 61712, + "bx-alarm": 61713, + "bx-album-covers": 61714, + "bx-alert-circle": 61715, + "bx-alert-octagon": 61716, + "bx-alert-shield": 61717, + "bx-alert-square": 61718, + "bx-alert-triangle": 61719, + "bx-alien": 61720, + "bx-align-center": 61721, + "bx-align-horizontal-justify-center": 61722, + "bx-align-horizontal-justify-end": 61723, + "bx-align-horizontal-justify-start": 61724, + "bx-align-horizontal-space-between": 61725, + "bx-align-justify": 61726, + "bx-align-left": 61727, + "bx-align-right": 61728, + "bx-align-vertical-justify-center": 61729, + "bx-align-vertical-justify-end": 61730, + "bx-align-vertical-justify-start": 61731, + "bx-align-vertical-space-between": 61732, + "bx-ambulance": 61733, + "bx-ampersand": 61734, + "bx-analyze": 61735, + "bx-anchor": 61736, + "bx-angle": 61737, + "bx-angry": 61738, + "bx-animation-bounce": 61739, + "bx-apartment": 61740, + "bx-approximate": 61741, + "bx-apps-alt": 61742, + "bx-apps": 61743, + "bx-arch": 61744, + "bx-archive-alt": 61745, + "bx-archive-arrow-down": 61746, + "bx-archive-arrow-up": 61747, + "bx-archive": 61748, + "bx-area": 61749, + "bx-arrow-big-down-line": 61750, + "bx-arrow-big-down": 61751, + "bx-arrow-big-left-line": 61752, + "bx-arrow-big-left": 61753, + "bx-arrow-big-right-line": 61754, + "bx-arrow-big-right": 61755, + "bx-arrow-big-up-line": 61756, + "bx-arrow-big-up": 61757, + "bx-arrow-cross": 61758, + "bx-arrow-down-a-z": 61759, + "bx-arrow-down-circle": 61760, + "bx-arrow-down-left-circle": 61761, + "bx-arrow-down-left-square": 61762, + "bx-arrow-down-left-stroke-circle": 61763, + "bx-arrow-down-left-stroke-square": 61764, + "bx-arrow-down-left-stroke": 61765, + "bx-arrow-down-left": 61766, + "bx-arrow-down-narrow-wide": 61767, + "bx-arrow-down-right-circle": 61768, + "bx-arrow-down-right-square": 61769, + "bx-arrow-down-right-stroke-circle": 61770, + "bx-arrow-down-right-stroke-square": 61771, + "bx-arrow-down-right-stroke": 61772, + "bx-arrow-down-right": 61773, + "bx-arrow-down-square": 61774, + "bx-arrow-down-stroke-circle": 61775, + "bx-arrow-down-stroke-square": 61776, + "bx-arrow-down-stroke": 61777, + "bx-arrow-down-up": 61778, + "bx-arrow-down-wide-narrow": 61779, + "bx-arrow-down": 61780, + "bx-arrow-from-bottom-stroke": 61781, + "bx-arrow-from-bottom": 61782, + "bx-arrow-from-left-stroke": 61783, + "bx-arrow-from-left": 61784, + "bx-arrow-from-right-stroke": 61785, + "bx-arrow-from-right": 61786, + "bx-arrow-from-top-stroke": 61787, + "bx-arrow-from-top": 61788, + "bx-arrow-in-down-circle-half": 61789, + "bx-arrow-in-down-left-circle": 61790, + "bx-arrow-in-down-left-square": 61791, + "bx-arrow-in-down-left-stroke-circle": 61792, + "bx-arrow-in-down-left-stroke-square": 61793, + "bx-arrow-in-down-right-circle": 61794, + "bx-arrow-in-down-right-square": 61795, + "bx-arrow-in-down-right-stroke-circle": 61796, + "bx-arrow-in-down-right-stroke-square": 61797, + "bx-arrow-in-down-square-half": 61798, + "bx-arrow-in-down-stroke-circle-half": 61799, + "bx-arrow-in-left-circle-half": 61800, + "bx-arrow-in-left-square-half": 61801, + "bx-arrow-in-left-stroke-circle-half": 61802, + "bx-arrow-in-right-circle-half": 61803, + "bx-arrow-in-right-square-half": 61804, + "bx-arrow-in-right-stroke-circle-half": 61805, + "bx-arrow-in-up-circle-half": 61806, + "bx-arrow-in-up-left-circle": 61807, + "bx-arrow-in-up-left-square": 61808, + "bx-arrow-in-up-left-stroke-circle": 61809, + "bx-arrow-in-up-left-stroke-square": 61810, + "bx-arrow-in-up-right-circle": 61811, + "bx-arrow-in-up-right-square": 61812, + "bx-arrow-in-up-right-stroke-circle": 61813, + "bx-arrow-in-up-right-stroke-square": 61814, + "bx-arrow-in-up-square-half": 61815, + "bx-arrow-in-up-stroke-circle-half": 61816, + "bx-arrow-left-circle": 61817, + "bx-arrow-left-right": 61818, + "bx-arrow-left-square": 61819, + "bx-arrow-left-stroke-circle": 61820, + "bx-arrow-left-stroke-square": 61821, + "bx-arrow-left-stroke": 61822, + "bx-arrow-left": 61823, + "bx-arrow-out-down-circle-half": 61824, + "bx-arrow-out-down-left-circle": 61825, + "bx-arrow-out-down-left-square": 61826, + "bx-arrow-out-down-left-stroke-circle": 61827, + "bx-arrow-out-down-left-stroke-square": 61828, + "bx-arrow-out-down-right-circle": 61829, + "bx-arrow-out-down-right-square": 61830, + "bx-arrow-out-down-right-stroke-circle": 61831, + "bx-arrow-out-down-right-stroke-square": 61832, + "bx-arrow-out-down-square-half": 61833, + "bx-arrow-out-down-stroke-circle-half": 61834, + "bx-arrow-out-left-circle-half": 61835, + "bx-arrow-out-left-square-half": 61836, + "bx-arrow-out-left-stroke-circle-half": 61837, + "bx-arrow-out-right-circle-half": 61838, + "bx-arrow-out-right-square-half": 61839, + "bx-arrow-out-right-stroke-circle-half": 61840, + "bx-arrow-out-up-circle-half": 61841, + "bx-arrow-out-up-left-circle": 61842, + "bx-arrow-out-up-left-square": 61843, + "bx-arrow-out-up-left-stroke-circle": 61844, + "bx-arrow-out-up-left-stroke-square": 61845, + "bx-arrow-out-up-right-circle": 61846, + "bx-arrow-out-up-right-square": 61847, + "bx-arrow-out-up-right-stroke-circle": 61848, + "bx-arrow-out-up-right-stroke-square": 61849, + "bx-arrow-out-up-square-half": 61850, + "bx-arrow-out-up-stroke-circle-half": 61851, + "bx-arrow-right-circle": 61852, + "bx-arrow-right-left": 61853, + "bx-arrow-right-square": 61854, + "bx-arrow-right-stroke-circle": 61855, + "bx-arrow-right-stroke-square": 61856, + "bx-arrow-right-stroke": 61857, + "bx-arrow-right": 61858, + "bx-arrow-s-down": 61859, + "bx-arrow-s-left": 61860, + "bx-arrow-s-right": 61861, + "bx-arrow-s-up": 61862, + "bx-arrow-to-bottom-stroke": 61863, + "bx-arrow-to-bottom": 61864, + "bx-arrow-to-left-stroke": 61865, + "bx-arrow-to-left": 61866, + "bx-arrow-to-right-stroke": 61867, + "bx-arrow-to-right": 61868, + "bx-arrow-to-top-stroke": 61869, + "bx-arrow-to-top": 61870, + "bx-arrow-up-a-z": 61871, + "bx-arrow-up-circle": 61872, + "bx-arrow-up-down": 61873, + "bx-arrow-up-left-circle": 61874, + "bx-arrow-up-left-square": 61875, + "bx-arrow-up-left-stroke-circle": 61876, + "bx-arrow-up-left-stroke-square": 61877, + "bx-arrow-up-left-stroke": 61878, + "bx-arrow-up-left": 61879, + "bx-arrow-up-narrow-wide": 61880, + "bx-arrow-up-right-circle": 61881, + "bx-arrow-up-right-square": 61882, + "bx-arrow-up-right-stroke-circle": 61883, + "bx-arrow-up-right-stroke-square": 61884, + "bx-arrow-up-right-stroke": 61885, + "bx-arrow-up-right": 61886, + "bx-arrow-up-square": 61887, + "bx-arrow-up-stroke-circle": 61888, + "bx-arrow-up-stroke-square": 61889, + "bx-arrow-up-stroke": 61890, + "bx-arrow-up-wide-narrow": 61891, + "bx-arrow-up": 61892, + "bx-article": 61893, + "bx-asterisk": 61894, + "bx-at": 61895, + "bx-atom": 61896, + "bx-avocado": 61897, + "bx-axe": 61898, + "bx-background-color-fill": 61899, + "bx-background": 61900, + "bx-backpack-star": 61901, + "bx-backpack": 61902, + "bx-backspace": 61903, + "bx-backward-slash": 61904, + "bx-bacon": 61905, + "bx-badge-check": 61906, + "bx-badge-exclamation": 61907, + "bx-badge-info": 61908, + "bx-badge": 61909, + "bx-baguette": 61910, + "bx-bahai": 61911, + "bx-balcony": 61912, + "bx-ball-throw": 61913, + "bx-balloon": 61914, + "bx-band-aid": 61915, + "bx-bank": 61916, + "bx-bar-chart-big": 61917, + "bx-bar-chart-square": 61918, + "bx-bar-chart": 61919, + "bx-barcode-square": 61920, + "bx-barcode": 61921, + "bx-barn": 61922, + "bx-baseball": 61923, + "bx-basket": 61924, + "bx-basketball": 61925, + "bx-bath": 61926, + "bx-battery-1": 61927, + "bx-battery-2": 61928, + "bx-battery-3": 61929, + "bx-battery-full": 61930, + "bx-battery-low": 61931, + "bx-battery": 61932, + "bx-beach-ball": 61933, + "bx-beach": 61934, + "bx-beaker": 61935, + "bx-beanie": 61936, + "bx-bear": 61937, + "bx-bed-alt": 61938, + "bx-bed": 61939, + "bx-beer": 61940, + "bx-bell-check": 61941, + "bx-bell-minus": 61942, + "bx-bell-plus": 61943, + "bx-bell-ring": 61944, + "bx-bell-slash": 61945, + "bx-bell": 61946, + "bx-bench": 61947, + "bx-between-horizontal-end": 61948, + "bx-between-horizontal-start": 61949, + "bx-between-vertical-end": 61950, + "bx-between-vertical-start": 61951, + "bx-bible": 61952, + "bx-biceps": 61953, + "bx-binocular": 61954, + "bx-bird-alt": 61955, + "bx-bird": 61956, + "bx-birthday-cake": 61957, + "bx-bitcoin": 61958, + "bx-blanket": 61959, + "bx-blob": 61960, + "bx-block": 61961, + "bx-blockquote": 61962, + "bx-blocks": 61963, + "bx-bluetooth": 61964, + "bx-blur-alt": 61965, + "bx-blur": 61966, + "bx-body": 61967, + "bx-bold": 61968, + "bx-bolt-alt": 61969, + "bx-bolt-circle": 61970, + "bx-bolt-square": 61971, + "bx-bolt": 61972, + "bx-bomb": 61973, + "bx-bone": 61974, + "bx-bong": 61975, + "bx-book-add": 61976, + "bx-book-alt": 61977, + "bx-book-bookmark": 61978, + "bx-book-content": 61979, + "bx-book-heart": 61980, + "bx-book-library": 61981, + "bx-book-open": 61982, + "bx-book": 61983, + "bx-bookmark-alt": 61984, + "bx-bookmark-heart": 61985, + "bx-bookmark-minus-alt": 61986, + "bx-bookmark-minus": 61987, + "bx-bookmark-plus-alt": 61988, + "bx-bookmark-plus": 61989, + "bx-bookmark-star": 61990, + "bx-bookmark-x": 61991, + "bx-bookmark": 61992, + "bx-bookmarks": 61993, + "bx-boombox": 61994, + "bx-boot": 61995, + "bx-border-all": 61996, + "bx-border-bottom": 61997, + "bx-border-inner": 61998, + "bx-border-left": 61999, + "bx-border-none": 62000, + "bx-border-outer": 62001, + "bx-border-radius": 62002, + "bx-border-right": 62003, + "bx-border-top": 62004, + "bx-bow": 62005, + "bx-bowl-balls": 62006, + "bx-bowl-bubbles": 62007, + "bx-bowl-hot": 62008, + "bx-bowl-noodles-alt": 62009, + "bx-bowl-noodles": 62010, + "bx-bowl-rice": 62011, + "bx-bowling-ball": 62012, + "bx-box-alt": 62013, + "bx-box": 62014, + "bx-bracket-curly": 62015, + "bx-bracket-round": 62016, + "bx-bracket": 62017, + "bx-braille": 62018, + "bx-brain-circuit": 62019, + "bx-brain": 62020, + "bx-bread": 62021, + "bx-brick": 62022, + "bx-bridge": 62023, + "bx-briefcase-alt-2": 62024, + "bx-briefcase-alt": 62025, + "bx-briefcase": 62026, + "bx-brightness-half": 62027, + "bx-brightness": 62028, + "bx-broadcast": 62029, + "bx-browser-activity": 62030, + "bx-brush-sparkles": 62031, + "bx-brush": 62032, + "bx-buddhism": 62033, + "bx-bug-alt": 62034, + "bx-bug": 62035, + "bx-building-house": 62036, + "bx-building": 62037, + "bx-buildings": 62038, + "bx-bullseye": 62039, + "bx-buoy": 62040, + "bx-burger-alt": 62041, + "bx-burger": 62042, + "bx-bus": 62043, + "bx-business": 62044, + "bx-button-rounded": 62045, + "bx-button": 62046, + "bx-cabinet": 62047, + "bx-cable-car": 62048, + "bx-cake-slice": 62049, + "bx-calculator": 62050, + "bx-calendar-alt-2": 62051, + "bx-calendar-alt": 62052, + "bx-calendar-check": 62053, + "bx-calendar-cog": 62054, + "bx-calendar-detail": 62055, + "bx-calendar-down-arrow": 62056, + "bx-calendar-event": 62057, + "bx-calendar-heart": 62058, + "bx-calendar-minus": 62059, + "bx-calendar-plus": 62060, + "bx-calendar-search": 62061, + "bx-calendar-star": 62062, + "bx-calendar-up-arrow": 62063, + "bx-calendar-week": 62064, + "bx-calendar-x": 62065, + "bx-calendar": 62066, + "bx-camcoder": 62067, + "bx-camera-alt": 62068, + "bx-camera-flip": 62069, + "bx-camera-home": 62070, + "bx-camera-monochrome": 62071, + "bx-camera-plus": 62072, + "bx-camera-portrait": 62073, + "bx-camera-slash": 62074, + "bx-camera-switch": 62075, + "bx-camera": 62076, + "bx-campfire": 62077, + "bx-camping": 62078, + "bx-candlestick": 62079, + "bx-cannabis": 62080, + "bx-cap": 62081, + "bx-capitalize": 62082, + "bx-capsule": 62083, + "bx-captions-cc": 62084, + "bx-captions": 62085, + "bx-capture": 62086, + "bx-car-battery": 62087, + "bx-car-key": 62088, + "bx-car": 62089, + "bx-card-view-large": 62090, + "bx-card-view-no-title": 62091, + "bx-card-view-small": 62092, + "bx-card-view-tiles": 62093, + "bx-card-view": 62094, + "bx-caret-big-down": 62095, + "bx-caret-big-left": 62096, + "bx-caret-big-right": 62097, + "bx-caret-big-up": 62098, + "bx-caret-down-circle": 62099, + "bx-caret-down-square": 62100, + "bx-caret-down": 62101, + "bx-caret-left-circle": 62102, + "bx-caret-left-square": 62103, + "bx-caret-left": 62104, + "bx-caret-right-circle": 62105, + "bx-caret-right-square": 62106, + "bx-caret-right": 62107, + "bx-caret-up-circle": 62108, + "bx-caret-up-square": 62109, + "bx-caret-up": 62110, + "bx-carets-down-up": 62111, + "bx-carets-left-right": 62112, + "bx-carets-right-left": 62113, + "bx-carets-up-down": 62114, + "bx-carrot": 62115, + "bx-cart-minus": 62116, + "bx-cart-plus": 62117, + "bx-cart": 62118, + "bx-cast": 62119, + "bx-castle": 62120, + "bx-cat": 62121, + "bx-categories": 62122, + "bx-cctv": 62123, + "bx-certification": 62124, + "bx-chair": 62125, + "bx-champagne": 62126, + "bx-chart-area": 62127, + "bx-chart-bar-big-columns": 62128, + "bx-chart-bar-big-rows": 62129, + "bx-chart-bar-columns": 62130, + "bx-chart-bar-rows": 62131, + "bx-chart-bubble": 62132, + "bx-chart-gantt": 62133, + "bx-chart-line": 62134, + "bx-chart-network": 62135, + "bx-chart-scatter": 62136, + "bx-chart-spline": 62137, + "bx-chart-stacked-columns": 62138, + "bx-chart-stacked-rows": 62139, + "bx-chart-trend": 62140, + "bx-check-circle": 62141, + "bx-check-shield": 62142, + "bx-check-square": 62143, + "bx-check": 62144, + "bx-checkbox-checked": 62145, + "bx-checkbox-square": 62146, + "bx-checkbox": 62147, + "bx-checklist": 62148, + "bx-checks": 62149, + "bx-cheese": 62150, + "bx-chef-hat": 62151, + "bx-cherry": 62152, + "bx-chess-bishop": 62153, + "bx-chess-king": 62154, + "bx-chess-knight": 62155, + "bx-chess-pawn": 62156, + "bx-chess-queen": 62157, + "bx-chess-rook": 62158, + "bx-chess": 62159, + "bx-chevron-down-circle": 62160, + "bx-chevron-down-square": 62161, + "bx-chevron-down": 62162, + "bx-chevron-left-circle": 62163, + "bx-chevron-left-square": 62164, + "bx-chevron-left": 62165, + "bx-chevron-right-circle": 62166, + "bx-chevron-right-square": 62167, + "bx-chevron-right": 62168, + "bx-chevron-up-circle": 62169, + "bx-chevron-up-square": 62170, + "bx-chevron-up": 62171, + "bx-chevrons-down-up": 62172, + "bx-chevrons-down": 62173, + "bx-chevrons-left-right": 62174, + "bx-chevrons-left": 62175, + "bx-chevrons-right-left": 62176, + "bx-chevrons-right": 62177, + "bx-chevrons-up-down": 62178, + "bx-chevrons-up": 62179, + "bx-child": 62180, + "bx-chip": 62181, + "bx-christianity": 62182, + "bx-church": 62183, + "bx-cigarette": 62184, + "bx-circle-dashed-half": 62185, + "bx-circle-dashed": 62186, + "bx-circle-half-alt": 62187, + "bx-circle-half": 62188, + "bx-circle-hexagon": 62189, + "bx-circle-outer-dashed-circle": 62190, + "bx-circle-quarter-alt": 62191, + "bx-circle-quarter": 62192, + "bx-circle-three-quarter-alt": 62193, + "bx-circle-three-quarter": 62194, + "bx-circle": 62195, + "bx-circles-9": 62196, + "bx-circles-alt": 62197, + "bx-circles": 62198, + "bx-circuit-board": 62199, + "bx-city": 62200, + "bx-clipboard-check": 62201, + "bx-clipboard-code": 62202, + "bx-clipboard-detail": 62203, + "bx-clipboard-minus": 62204, + "bx-clipboard-plus": 62205, + "bx-clipboard-x": 62206, + "bx-clipboard": 62207, + "bx-clock-1": 62208, + "bx-clock-10": 62209, + "bx-clock-11": 62210, + "bx-clock-12": 62211, + "bx-clock-2": 62212, + "bx-clock-3": 62213, + "bx-clock-4": 62214, + "bx-clock-5": 62215, + "bx-clock-6": 62216, + "bx-clock-7": 62217, + "bx-clock-8": 62218, + "bx-clock-9": 62219, + "bx-clock-dashed-half": 62220, + "bx-clock": 62221, + "bx-cloud-alt-2": 62222, + "bx-cloud-alt": 62223, + "bx-cloud-drizzle": 62224, + "bx-cloud-fog": 62225, + "bx-cloud-lightning": 62226, + "bx-cloud-moon": 62227, + "bx-cloud-rain-wind": 62228, + "bx-cloud-rain": 62229, + "bx-cloud-snow": 62230, + "bx-cloud-sun": 62231, + "bx-cloud": 62232, + "bx-clover": 62233, + "bx-club": 62234, + "bx-cocktail": 62235, + "bx-code-alt": 62236, + "bx-code": 62237, + "bx-coffee-beans": 62238, + "bx-coffee-cup": 62239, + "bx-coffee": 62240, + "bx-cog": 62241, + "bx-cognition": 62242, + "bx-coin": 62243, + "bx-coins": 62244, + "bx-col-resize": 62245, + "bx-color-fill": 62246, + "bx-color-wheel": 62247, + "bx-columns-3": 62248, + "bx-columns-4": 62249, + "bx-columns": 62250, + "bx-comic-bubble": 62251, + "bx-command": 62252, + "bx-community": 62253, + "bx-compare-alt": 62254, + "bx-compare": 62255, + "bx-compass": 62256, + "bx-component": 62257, + "bx-computer": 62258, + "bx-confused": 62259, + "bx-connector": 62260, + "bx-contact-book": 62261, + "bx-contrast": 62262, + "bx-cookie": 62263, + "bx-cool": 62264, + "bx-copy-check": 62265, + "bx-copy-list": 62266, + "bx-copy-minus": 62267, + "bx-copy-plus": 62268, + "bx-copy-x": 62269, + "bx-copy": 62270, + "bx-copyright": 62271, + "bx-core": 62272, + "bx-credit-card-alt": 62273, + "bx-credit-card-front": 62274, + "bx-credit-card-insert": 62275, + "bx-credit-card": 62276, + "bx-cricket-ball": 62277, + "bx-crop": 62278, + "bx-cross-circle": 62279, + "bx-crosshair": 62280, + "bx-crown": 62281, + "bx-crypto-coin": 62282, + "bx-crypto": 62283, + "bx-cube-alt": 62284, + "bx-cube-inside": 62285, + "bx-cube": 62286, + "bx-cuboid": 62287, + "bx-cup-hot": 62288, + "bx-cup-saucer": 62289, + "bx-cup-tea": 62290, + "bx-cup": 62291, + "bx-cupboard-alt": 62292, + "bx-cupboard": 62293, + "bx-cupcake": 62294, + "bx-currency-note": 62295, + "bx-currency-notes": 62296, + "bx-cursor-add": 62297, + "bx-cursor-cell": 62298, + "bx-cursor-crosshair-dot": 62299, + "bx-cursor-crosshair": 62300, + "bx-cursor-pen": 62301, + "bx-cursor-pointer": 62302, + "bx-cursor": 62303, + "bx-cut": 62304, + "bx-cycling": 62305, + "bx-cylinder": 62306, + "bx-dashboard-alt": 62307, + "bx-dashboard": 62308, + "bx-database-alt": 62309, + "bx-database": 62310, + "bx-decrease-indent": 62311, + "bx-delta": 62312, + "bx-department-store": 62313, + "bx-desert": 62314, + "bx-desk": 62315, + "bx-desktop-alt": 62316, + "bx-desktop": 62317, + "bx-devices": 62318, + "bx-dialpad": 62319, + "bx-diameter": 62320, + "bx-diamond-alt": 62321, + "bx-diamond": 62322, + "bx-diamonds": 62323, + "bx-dice-1": 62324, + "bx-dice-2": 62325, + "bx-dice-3": 62326, + "bx-dice-4": 62327, + "bx-dice-5": 62328, + "bx-dice-6": 62329, + "bx-dice-roll": 62330, + "bx-dino": 62331, + "bx-directions": 62332, + "bx-disc": 62333, + "bx-discount": 62334, + "bx-discussion": 62335, + "bx-dish": 62336, + "bx-dishwasher": 62337, + "bx-dislike": 62338, + "bx-division": 62339, + "bx-dizzy": 62340, + "bx-dna": 62341, + "bx-dock-bottom-alt": 62342, + "bx-dock-bottom-arrow": 62343, + "bx-dock-bottom-left-alt": 62344, + "bx-dock-bottom-left": 62345, + "bx-dock-bottom-right-alt": 62346, + "bx-dock-bottom-right": 62347, + "bx-dock-bottom": 62348, + "bx-dock-left-alt": 62349, + "bx-dock-left-arrow": 62350, + "bx-dock-left": 62351, + "bx-dock-right-alt": 62352, + "bx-dock-right-arrow": 62353, + "bx-dock-right": 62354, + "bx-dock-top-alt": 62355, + "bx-dock-top-arrow": 62356, + "bx-dock-top-left-alt": 62357, + "bx-dock-top-left": 62358, + "bx-dock-top-right-alt": 62359, + "bx-dock-top-right": 62360, + "bx-dock-top": 62361, + "bx-dog-alt": 62362, + "bx-dog": 62363, + "bx-dollar-circle-stars": 62364, + "bx-dollar-circle": 62365, + "bx-dollar": 62366, + "bx-donate-blood": 62367, + "bx-donate-heart": 62368, + "bx-donut": 62369, + "bx-door-open": 62370, + "bx-door": 62371, + "bx-dots-horizontal-rounded-circle": 62372, + "bx-dots-horizontal-rounded": 62373, + "bx-dots-horizontal": 62374, + "bx-dots-vertical-rounded-circle": 62375, + "bx-dots-vertical-rounded": 62376, + "bx-dots-vertical": 62377, + "bx-doughnut-chart": 62378, + "bx-draw-ahead": 62379, + "bx-draw-behind": 62380, + "bx-draw-inside": 62381, + "bx-dress": 62382, + "bx-dribbling": 62383, + "bx-dropdown": 62384, + "bx-dryer": 62385, + "bx-duck": 62386, + "bx-dumbbell-alt": 62387, + "bx-dumbbell": 62388, + "bx-ear-alt": 62389, + "bx-ear-slash": 62390, + "bx-ear": 62391, + "bx-earbuds": 62392, + "bx-earth": 62393, + "bx-ease-in-out": 62394, + "bx-ease-in": 62395, + "bx-ease-out": 62396, + "bx-edit-alt": 62397, + "bx-edit": 62398, + "bx-education": 62399, + "bx-egg-fried": 62400, + "bx-egg-yolk": 62401, + "bx-egg": 62402, + "bx-eject": 62403, + "bx-element-of": 62404, + "bx-empty-set": 62405, + "bx-enter": 62406, + "bx-enterprise": 62407, + "bx-envelope-alt": 62408, + "bx-envelope-open": 62409, + "bx-envelope": 62410, + "bx-equal-circle": 62411, + "bx-equal-square": 62412, + "bx-equal": 62413, + "bx-equalizer": 62414, + "bx-eraser": 62415, + "bx-euro": 62416, + "bx-ev-station": 62417, + "bx-expand-left": 62418, + "bx-expand-right": 62419, + "bx-explosion": 62420, + "bx-exposure": 62421, + "bx-extension": 62422, + "bx-eye-alt": 62423, + "bx-eye-big": 62424, + "bx-eye-closed": 62425, + "bx-eye-slash": 62426, + "bx-eye": 62427, + "bx-eyedropper": 62428, + "bx-face-alt-2": 62429, + "bx-face-alt-3": 62430, + "bx-face-alt-4": 62431, + "bx-face-alt": 62432, + "bx-face-child": 62433, + "bx-face-mask": 62434, + "bx-face": 62435, + "bx-factory": 62436, + "bx-fan": 62437, + "bx-fast-forward-circle": 62438, + "bx-fast-forward": 62439, + "bx-feather-alt": 62440, + "bx-feather-minus": 62441, + "bx-feather-plus": 62442, + "bx-feather": 62443, + "bx-female": 62444, + "bx-file-code": 62445, + "bx-file-cog": 62446, + "bx-file-detail": 62447, + "bx-file-heart": 62448, + "bx-file-minus": 62449, + "bx-file-plus": 62450, + "bx-file-report": 62451, + "bx-file-search": 62452, + "bx-file-star": 62453, + "bx-file-x": 62454, + "bx-file-zip": 62455, + "bx-file": 62456, + "bx-film-roll-alt": 62457, + "bx-film-roll": 62458, + "bx-film": 62459, + "bx-filter": 62460, + "bx-finger-down": 62461, + "bx-finger-left": 62462, + "bx-finger-right": 62463, + "bx-finger-swipe-down": 62464, + "bx-finger-swipe-left": 62465, + "bx-finger-swipe-right": 62466, + "bx-finger-swipe-up": 62467, + "bx-finger-touch": 62468, + "bx-finger-up": 62469, + "bx-fingerprint": 62470, + "bx-fire-alt": 62471, + "bx-fire-extinguisher": 62472, + "bx-fire": 62473, + "bx-first": 62474, + "bx-fish-alt": 62475, + "bx-fish": 62476, + "bx-flag-alt-2": 62477, + "bx-flag-alt-3": 62478, + "bx-flag-alt": 62479, + "bx-flag-chequered": 62480, + "bx-flag": 62481, + "bx-flame": 62482, + "bx-flask-round": 62483, + "bx-florist": 62484, + "bx-flower-alt-2": 62485, + "bx-flower-alt": 62486, + "bx-flower": 62487, + "bx-folder-check": 62488, + "bx-folder-code": 62489, + "bx-folder-cog": 62490, + "bx-folder-down-arrow": 62491, + "bx-folder-heart": 62492, + "bx-folder-minus": 62493, + "bx-folder-open": 62494, + "bx-folder-plus": 62495, + "bx-folder-search": 62496, + "bx-folder-star": 62497, + "bx-folder-up-arrow": 62498, + "bx-folder-x": 62499, + "bx-folder-zip": 62500, + "bx-folder": 62501, + "bx-font-color": 62502, + "bx-font-family": 62503, + "bx-food-menu": 62504, + "bx-food-tag": 62505, + "bx-football-kick": 62506, + "bx-football-pitch": 62507, + "bx-football": 62508, + "bx-footsteps": 62509, + "bx-foreground": 62510, + "bx-fork-knife": 62511, + "bx-fork-spoon": 62512, + "bx-fork": 62513, + "bx-form": 62514, + "bx-forward-big": 62515, + "bx-forward-slash-circle": 62516, + "bx-forward-slash-square": 62517, + "bx-forward-slash": 62518, + "bx-forward-stroke": 62519, + "bx-forward": 62520, + "bx-frame": 62521, + "bx-fridge": 62522, + "bx-fullscreen-exit": 62523, + "bx-fullscreen": 62524, + "bx-function": 62525, + "bx-functions": 62526, + "bx-future": 62527, + "bx-gallery-horizontal-end": 62528, + "bx-gallery-horizontal": 62529, + "bx-gallery-thumbnails": 62530, + "bx-gallery-vertical-end": 62531, + "bx-gallery-vertical": 62532, + "bx-gaming": 62533, + "bx-garage": 62534, + "bx-gavel": 62535, + "bx-gear": 62536, + "bx-gem": 62537, + "bx-gestures": 62538, + "bx-ghost": 62539, + "bx-gift": 62540, + "bx-git-branch": 62541, + "bx-git-commit": 62542, + "bx-git-compare": 62543, + "bx-git-merge-queue": 62544, + "bx-git-merge": 62545, + "bx-git-pull-request-closed": 62546, + "bx-git-pull-request-draft": 62547, + "bx-git-pull-request": 62548, + "bx-git-repo-forked": 62549, + "bx-glasses-alt": 62550, + "bx-glasses": 62551, + "bx-globe-africa": 62552, + "bx-globe-alt-2": 62553, + "bx-globe-alt": 62554, + "bx-globe-americas": 62555, + "bx-globe-antartica": 62556, + "bx-globe-asia": 62557, + "bx-globe-europe": 62558, + "bx-globe-oceania": 62559, + "bx-globe-stand": 62560, + "bx-globe": 62561, + "bx-golf-ball": 62562, + "bx-gradient": 62563, + "bx-greater-than-equal": 62564, + "bx-greater-than": 62565, + "bx-grid-9": 62566, + "bx-grid-circle-diagonal-left": 62567, + "bx-grid-circle-diagonal-right": 62568, + "bx-grid-circle-plus": 62569, + "bx-grid-circle": 62570, + "bx-grid-column-left": 62571, + "bx-grid-column-right": 62572, + "bx-grid-lines-3": 62573, + "bx-grid-lines": 62574, + "bx-grid-plus": 62575, + "bx-grid-row-bottom": 62576, + "bx-grid-row-top": 62577, + "bx-grid-search": 62578, + "bx-grid": 62579, + "bx-groceries": 62580, + "bx-group-alt": 62581, + "bx-group": 62582, + "bx-guitar-amp": 62583, + "bx-hail": 62584, + "bx-hand-rock": 62585, + "bx-hand": 62586, + "bx-handheld-alt-2": 62587, + "bx-handheld-alt": 62588, + "bx-handheld": 62589, + "bx-handshake": 62590, + "bx-hanger": 62591, + "bx-happy-alt": 62592, + "bx-happy-beaming": 62593, + "bx-happy-heart-eyes": 62594, + "bx-happy": 62595, + "bx-hard-drive": 62596, + "bx-hard-hat": 62597, + "bx-hashtag": 62598, + "bx-hdmi": 62599, + "bx-head": 62600, + "bx-heading-1": 62601, + "bx-heading-2": 62602, + "bx-heading-3": 62603, + "bx-heading": 62604, + "bx-headphone-alt-2": 62605, + "bx-headphone-alt": 62606, + "bx-headphone-mic": 62607, + "bx-headphone": 62608, + "bx-heart-break": 62609, + "bx-heart-circle": 62610, + "bx-heart-half": 62611, + "bx-heart-plus": 62612, + "bx-heart-square": 62613, + "bx-heart": 62614, + "bx-heat-wave": 62615, + "bx-helmet": 62616, + "bx-help-circle": 62617, + "bx-help-octagon": 62618, + "bx-hexagon": 62619, + "bx-high-speed-train": 62620, + "bx-highlight": 62621, + "bx-highlights": 62622, + "bx-hinduism": 62623, + "bx-history": 62624, + "bx-home-add": 62625, + "bx-home-alt-2": 62626, + "bx-home-alt-3": 62627, + "bx-home-alt": 62628, + "bx-home-circle": 62629, + "bx-home-heart": 62630, + "bx-home": 62631, + "bx-honey": 62632, + "bx-horizon-sea": 62633, + "bx-horizontal-align-center": 62634, + "bx-horizontal-align-left": 62635, + "bx-horizontal-align-right": 62636, + "bx-horizontal-center": 62637, + "bx-horizontal-distribute-center": 62638, + "bx-horizontal-distribute-left": 62639, + "bx-horizontal-distribute-right": 62640, + "bx-horizontal-left": 62641, + "bx-horizontal-right": 62642, + "bx-horizontal-spacing": 62643, + "bx-hospital": 62644, + "bx-hot-tub-water": 62645, + "bx-hot-tub": 62646, + "bx-hot": 62647, + "bx-hourglass": 62648, + "bx-hurricane": 62649, + "bx-icecream": 62650, + "bx-iframe": 62651, + "bx-image-alt": 62652, + "bx-image-circle": 62653, + "bx-image-landscape": 62654, + "bx-image-no-background": 62655, + "bx-image-plus": 62656, + "bx-image-portrait": 62657, + "bx-image-sparkle": 62658, + "bx-image": 62659, + "bx-images": 62660, + "bx-inbox": 62661, + "bx-incognito": 62662, + "bx-infinite": 62663, + "bx-info-circle": 62664, + "bx-info-octagon": 62665, + "bx-info-shield": 62666, + "bx-info-square": 62667, + "bx-inner-shadow": 62668, + "bx-institution": 62669, + "bx-integral": 62670, + "bx-intellect": 62671, + "bx-invert-adjust": 62672, + "bx-invert": 62673, + "bx-islam": 62674, + "bx-island": 62675, + "bx-italic": 62676, + "bx-joystick-alt": 62677, + "bx-joystick-button-alt": 62678, + "bx-joystick-button": 62679, + "bx-joystick": 62680, + "bx-judaism": 62681, + "bx-key-alt": 62682, + "bx-key": 62683, + "bx-keyboard": 62684, + "bx-keyframe-ease-in": 62685, + "bx-keyframe-ease-out": 62686, + "bx-keyframe-easy-ease": 62687, + "bx-keyframe-hold-ease-in": 62688, + "bx-keyframe-hold-ease-out": 62689, + "bx-keyframe-hold-linear-in": 62690, + "bx-keyframe-hold-linear-out": 62691, + "bx-keyframe": 62692, + "bx-knife": 62693, + "bx-lambda": 62694, + "bx-landmark": 62695, + "bx-laptop-alt": 62696, + "bx-laptop": 62697, + "bx-lasso": 62698, + "bx-last": 62699, + "bx-laugh": 62700, + "bx-law": 62701, + "bx-layers-alt": 62702, + "bx-layers-down-left": 62703, + "bx-layers-down-right": 62704, + "bx-layers-minus-alt": 62705, + "bx-layers-plus-alt": 62706, + "bx-layers": 62707, + "bx-layout-check": 62708, + "bx-layout-minus": 62709, + "bx-layout-plus": 62710, + "bx-layout-search": 62711, + "bx-layout": 62712, + "bx-leaf-alt": 62713, + "bx-leaf": 62714, + "bx-left-indent": 62715, + "bx-lemon": 62716, + "bx-less-than-equal": 62717, + "bx-less-than": 62718, + "bx-letter-spacing-alt": 62719, + "bx-letter-spacing": 62720, + "bx-light-bulb-alt-2": 62721, + "bx-light-bulb-alt": 62722, + "bx-light-bulb-on": 62723, + "bx-light-bulb": 62724, + "bx-like": 62725, + "bx-line-chart-square": 62726, + "bx-line-spacing-alt": 62727, + "bx-line-spacing": 62728, + "bx-link-alt": 62729, + "bx-link-break": 62730, + "bx-link": 62731, + "bx-lira": 62732, + "bx-list-minus": 62733, + "bx-list-music": 62734, + "bx-list-ol": 62735, + "bx-list-play": 62736, + "bx-list-plus": 62737, + "bx-list-square": 62738, + "bx-list-ul-square": 62739, + "bx-list-ul": 62740, + "bx-list-x": 62741, + "bx-list": 62742, + "bx-loader-dots": 62743, + "bx-loader-lines-alt": 62744, + "bx-loader-lines": 62745, + "bx-location-alt-2": 62746, + "bx-location-alt": 62747, + "bx-location-blank": 62748, + "bx-location-check": 62749, + "bx-location-pin": 62750, + "bx-location-plus": 62751, + "bx-location-x": 62752, + "bx-location": 62753, + "bx-lock-keyhole-open-alt": 62754, + "bx-lock-keyhole-open": 62755, + "bx-lock-keyhole": 62756, + "bx-lock-open-alt": 62757, + "bx-lock-open": 62758, + "bx-lock": 62759, + "bx-lotion": 62760, + "bx-low-vision": 62761, + "bx-lowercase": 62762, + "bx-luggage": 62763, + "bx-lungs": 62764, + "bx-magic-wand": 62765, + "bx-magnet": 62766, + "bx-mail-open": 62767, + "bx-male": 62768, + "bx-man-woman": 62769, + "bx-man": 62770, + "bx-map": 62771, + "bx-margin-bottom": 62772, + "bx-margin-left": 62773, + "bx-margin-right": 62774, + "bx-margin-top": 62775, + "bx-martini": 62776, + "bx-mask": 62777, + "bx-math-alt": 62778, + "bx-math": 62779, + "bx-maximize": 62780, + "bx-meat": 62781, + "bx-medal-alt-2": 62782, + "bx-medal-alt": 62783, + "bx-medal-star-alt-2": 62784, + "bx-medal-star-alt": 62785, + "bx-medal-star": 62786, + "bx-medal": 62787, + "bx-medical-flask": 62788, + "bx-medical-kit": 62789, + "bx-megaphone-alt": 62790, + "bx-megaphone": 62791, + "bx-meh-alt": 62792, + "bx-meh-blank": 62793, + "bx-meh": 62794, + "bx-menorah": 62795, + "bx-menu-close": 62796, + "bx-menu-closer": 62797, + "bx-menu-filter": 62798, + "bx-menu-left": 62799, + "bx-menu-notification": 62800, + "bx-menu-right": 62801, + "bx-menu-search": 62802, + "bx-menu-select": 62803, + "bx-menu-wide": 62804, + "bx-menu-wider": 62805, + "bx-menu": 62806, + "bx-merge": 62807, + "bx-mesh": 62808, + "bx-message-bubble-captions": 62809, + "bx-message-bubble-check": 62810, + "bx-message-bubble-code": 62811, + "bx-message-bubble-detail": 62812, + "bx-message-bubble-dots-2": 62813, + "bx-message-bubble-dots": 62814, + "bx-message-bubble-edit": 62815, + "bx-message-bubble-exclamation": 62816, + "bx-message-bubble-heart": 62817, + "bx-message-bubble-image": 62818, + "bx-message-bubble-minus": 62819, + "bx-message-bubble-notification": 62820, + "bx-message-bubble-plus": 62821, + "bx-message-bubble-question-mark": 62822, + "bx-message-bubble-reply": 62823, + "bx-message-bubble-star": 62824, + "bx-message-bubble-x": 62825, + "bx-message-bubble": 62826, + "bx-message-captions": 62827, + "bx-message-check": 62828, + "bx-message-circle-captions": 62829, + "bx-message-circle-check": 62830, + "bx-message-circle-code": 62831, + "bx-message-circle-detail": 62832, + "bx-message-circle-dots-2": 62833, + "bx-message-circle-dots": 62834, + "bx-message-circle-edit": 62835, + "bx-message-circle-exclamation": 62836, + "bx-message-circle-heart": 62837, + "bx-message-circle-image": 62838, + "bx-message-circle-minus": 62839, + "bx-message-circle-notification": 62840, + "bx-message-circle-plus": 62841, + "bx-message-circle-question-mark": 62842, + "bx-message-circle-reply": 62843, + "bx-message-circle-star": 62844, + "bx-message-circle-x": 62845, + "bx-message-circle": 62846, + "bx-message-code": 62847, + "bx-message-detail": 62848, + "bx-message-dots-2": 62849, + "bx-message-dots": 62850, + "bx-message-edit": 62851, + "bx-message-exclamation": 62852, + "bx-message-heart": 62853, + "bx-message-image": 62854, + "bx-message-minus": 62855, + "bx-message-notification": 62856, + "bx-message-plus": 62857, + "bx-message-question-mark": 62858, + "bx-message-reply": 62859, + "bx-message-star": 62860, + "bx-message-x": 62861, + "bx-message": 62862, + "bx-meteor": 62863, + "bx-microchip": 62864, + "bx-microphone-alt-2": 62865, + "bx-microphone-alt": 62866, + "bx-microphone-big-alt": 62867, + "bx-microphone-big": 62868, + "bx-microphone-slash": 62869, + "bx-microphone": 62870, + "bx-microscope": 62871, + "bx-microwave-oven": 62872, + "bx-milk-bottle": 62873, + "bx-minimize": 62874, + "bx-minus-circle": 62875, + "bx-minus-plus": 62876, + "bx-minus-shield": 62877, + "bx-minus-square": 62878, + "bx-minus": 62879, + "bx-mobile-alt-2": 62880, + "bx-mobile-alt": 62881, + "bx-mobile-back-alt-2": 62882, + "bx-mobile-back-alt": 62883, + "bx-mobile-back": 62884, + "bx-mobile-ring": 62885, + "bx-mobile": 62886, + "bx-monitor-wallpaper": 62887, + "bx-monitor-wide": 62888, + "bx-monitor": 62889, + "bx-moon-crater": 62890, + "bx-moon-phase-0": 62891, + "bx-moon-phase-1": 62892, + "bx-moon-phase-2": 62893, + "bx-moon-phase-3": 62894, + "bx-moon-phase-4": 62895, + "bx-moon-phase-5": 62896, + "bx-moon-phase-6": 62897, + "bx-moon-star": 62898, + "bx-moon": 62899, + "bx-mosque": 62900, + "bx-motion-alt": 62901, + "bx-motion": 62902, + "bx-motorcycle": 62903, + "bx-mountain-peak": 62904, + "bx-mountain-view": 62905, + "bx-mountain": 62906, + "bx-mouse-alt": 62907, + "bx-mouse": 62908, + "bx-move-diagonal-left": 62909, + "bx-move-diagonal-right": 62910, + "bx-move-horizontal": 62911, + "bx-move-vertical": 62912, + "bx-move": 62913, + "bx-movie-play": 62914, + "bx-movie": 62915, + "bx-music-alt-2": 62916, + "bx-music-alt": 62917, + "bx-music-library": 62918, + "bx-music": 62919, + "bx-network-chart": 62920, + "bx-network-device": 62921, + "bx-news": 62922, + "bx-newspaper": 62923, + "bx-night-light": 62924, + "bx-no-entry": 62925, + "bx-noise": 62926, + "bx-not-element-of": 62927, + "bx-not-equal": 62928, + "bx-not-subset": 62929, + "bx-not-superset": 62930, + "bx-note-book": 62931, + "bx-note": 62932, + "bx-notification-slash": 62933, + "bx-notification": 62934, + "bx-nut": 62935, + "bx-octopus": 62936, + "bx-omega": 62937, + "bx-option": 62938, + "bx-outdoor-dining": 62939, + "bx-outer-shadow": 62940, + "bx-oval-vertical": 62941, + "bx-oval": 62942, + "bx-oven": 62943, + "bx-owl": 62944, + "bx-pacifism": 62945, + "bx-package": 62946, + "bx-pacman": 62947, + "bx-paint-alt": 62948, + "bx-paint-roll": 62949, + "bx-paint": 62950, + "bx-palette": 62951, + "bx-pant": 62952, + "bx-paper-plane": 62953, + "bx-paperclip": 62954, + "bx-paragraph-spacing": 62955, + "bx-paragraph": 62956, + "bx-parallel": 62957, + "bx-parent-child": 62958, + "bx-party": 62959, + "bx-paste": 62960, + "bx-path": 62961, + "bx-pause-circle": 62962, + "bx-pause": 62963, + "bx-paw-print": 62964, + "bx-pear": 62965, + "bx-pen-alt": 62966, + "bx-pen-draw": 62967, + "bx-pen-edit-circle": 62968, + "bx-pen-minus": 62969, + "bx-pen-plus": 62970, + "bx-pen": 62971, + "bx-pencil-circle": 62972, + "bx-pencil-draw": 62973, + "bx-pencil-edit-circle": 62974, + "bx-pencil-sparkles": 62975, + "bx-pencil-square": 62976, + "bx-pencil": 62977, + "bx-pentagon": 62978, + "bx-people-diversity": 62979, + "bx-people-handshake": 62980, + "bx-people-heart": 62981, + "bx-percentage": 62982, + "bx-perpendicular": 62983, + "bx-perspective": 62984, + "bx-petrol-pump": 62985, + "bx-pharmacy": 62986, + "bx-phone-book": 62987, + "bx-phone-forwarding": 62988, + "bx-phone-incoming": 62989, + "bx-phone-outgoing": 62990, + "bx-phone-plus": 62991, + "bx-phone-ring": 62992, + "bx-phone-x": 62993, + "bx-phone": 62994, + "bx-photo-album": 62995, + "bx-pi": 62996, + "bx-piano-alt": 62997, + "bx-piano-grand": 62998, + "bx-piano": 62999, + "bx-pickup-truck": 63000, + "bx-picture-in-picture-close": 63001, + "bx-picture-in-picture": 63002, + "bx-pie-chart-alt-2": 63003, + "bx-pie-chart-alt": 63004, + "bx-pie-chart": 63005, + "bx-piggy-bank": 63006, + "bx-pill-bottle-alt": 63007, + "bx-pill-bottle": 63008, + "bx-pill": 63009, + "bx-pin-alt": 63010, + "bx-pin-slash-alt": 63011, + "bx-pin": 63012, + "bx-pizza-alt": 63013, + "bx-pizza": 63014, + "bx-plane-alt": 63015, + "bx-plane-land": 63016, + "bx-plane-take-off": 63017, + "bx-plane": 63018, + "bx-planet": 63019, + "bx-plant-pot": 63020, + "bx-play-circle-alt": 63021, + "bx-play-circle": 63022, + "bx-play": 63023, + "bx-plug-connect": 63024, + "bx-plus-big": 63025, + "bx-plus-circle": 63026, + "bx-plus-minus": 63027, + "bx-plus-shield": 63028, + "bx-plus-square": 63029, + "bx-plus": 63030, + "bx-podcast": 63031, + "bx-polar-chart": 63032, + "bx-poll": 63033, + "bx-polygon": 63034, + "bx-popsicle": 63035, + "bx-pound": 63036, + "bx-power": 63037, + "bx-prawn": 63038, + "bx-price-tag-alt": 63039, + "bx-price-tag": 63040, + "bx-print-dollar": 63041, + "bx-printer": 63042, + "bx-proper-subset": 63043, + "bx-proper-superset": 63044, + "bx-psychology": 63045, + "bx-puck": 63046, + "bx-pulse": 63047, + "bx-pyramid": 63048, + "bx-qr-scan": 63049, + "bx-qr": 63050, + "bx-queue": 63051, + "bx-quote-left-alt": 63052, + "bx-quote-left": 63053, + "bx-quote-right-alt": 63054, + "bx-quote-right": 63055, + "bx-quote-single-left": 63056, + "bx-quote-single-right": 63057, + "bx-radar": 63058, + "bx-radiation": 63059, + "bx-radio-circle-marked": 63060, + "bx-radio-circle": 63061, + "bx-radio": 63062, + "bx-rainbow": 63063, + "bx-reading-glass": 63064, + "bx-reading": 63065, + "bx-receipt": 63066, + "bx-rectangle-vertical": 63067, + "bx-rectangle-wide": 63068, + "bx-rectangle": 63069, + "bx-recycle": 63070, + "bx-redo-alt": 63071, + "bx-redo-stroke-alt": 63072, + "bx-redo-stroke": 63073, + "bx-redo": 63074, + "bx-reflect-horizontal-alt": 63075, + "bx-reflect-horizontal": 63076, + "bx-reflect-vertical-alt": 63077, + "bx-reflect-vertical": 63078, + "bx-refresh-ccw-alt-dot": 63079, + "bx-refresh-ccw-alt": 63080, + "bx-refresh-ccw-dot": 63081, + "bx-refresh-ccw": 63082, + "bx-refresh-cw-alt-dot": 63083, + "bx-refresh-cw-alt": 63084, + "bx-refresh-cw-dot": 63085, + "bx-refresh-cw": 63086, + "bx-registered": 63087, + "bx-rename": 63088, + "bx-repeat-alt-2": 63089, + "bx-repeat-alt": 63090, + "bx-repeat": 63091, + "bx-reply-big": 63092, + "bx-reply-stroke": 63093, + "bx-reply": 63094, + "bx-report": 63095, + "bx-rewind-circle": 63096, + "bx-rewind": 63097, + "bx-rfid": 63098, + "bx-rgb": 63099, + "bx-right-angle-triangle-half": 63100, + "bx-right-angle-triangle": 63101, + "bx-right-indent": 63102, + "bx-robot": 63103, + "bx-rocket-alt": 63104, + "bx-rocket": 63105, + "bx-rotate-ccw-10": 63106, + "bx-rotate-ccw-30": 63107, + "bx-rotate-ccw-5": 63108, + "bx-rotate-ccw-dot": 63109, + "bx-rotate-ccw": 63110, + "bx-rotate-cw-10": 63111, + "bx-rotate-cw-30": 63112, + "bx-rotate-cw-5": 63113, + "bx-rotate-cw-dot": 63114, + "bx-rotate-cw": 63115, + "bx-rotate-square-ccw": 63116, + "bx-rotate-square-cw": 63117, + "bx-route": 63118, + "bx-row-resize": 63119, + "bx-rows-3": 63120, + "bx-rows-4": 63121, + "bx-rows": 63122, + "bx-rss": 63123, + "bx-ruble": 63124, + "bx-rugby-ball": 63125, + "bx-ruler": 63126, + "bx-running": 63127, + "bx-rupee": 63128, + "bx-sad": 63129, + "bx-safe": 63130, + "bx-sail": 63131, + "bx-sandwich": 63132, + "bx-sapling": 63133, + "bx-save": 63134, + "bx-scale": 63135, + "bx-scan-ar": 63136, + "bx-scan-barcode": 63137, + "bx-scan-detail": 63138, + "bx-scan-face": 63139, + "bx-scan-search": 63140, + "bx-scan": 63141, + "bx-school-bus": 63142, + "bx-school": 63143, + "bx-science": 63144, + "bx-scooter-delivery": 63145, + "bx-scooter": 63146, + "bx-screen-light": 63147, + "bx-screenshot": 63148, + "bx-scribble": 63149, + "bx-scroll": 63150, + "bx-sd-card": 63151, + "bx-sea-view": 63152, + "bx-seal-check": 63153, + "bx-seal": 63154, + "bx-search-alt": 63155, + "bx-search-big-code": 63156, + "bx-search-big-minus": 63157, + "bx-search-big-plus": 63158, + "bx-search-big-x": 63159, + "bx-search-big": 63160, + "bx-search-code": 63161, + "bx-search-minus": 63162, + "bx-search-plus": 63163, + "bx-search-x": 63164, + "bx-search": 63165, + "bx-select-all": 63166, + "bx-select-many": 63167, + "bx-select-none": 63168, + "bx-select": 63169, + "bx-self-care": 63170, + "bx-send-alt-2": 63171, + "bx-send-alt": 63172, + "bx-send": 63173, + "bx-server": 63174, + "bx-set-intersection": 63175, + "bx-set-union": 63176, + "bx-shadows": 63177, + "bx-shape-exclude-alt": 63178, + "bx-shape-exclude": 63179, + "bx-shape-intersect-alt": 63180, + "bx-shape-intersect": 63181, + "bx-shape-outline-alt": 63182, + "bx-shape-outline": 63183, + "bx-shape-rotate-ccw": 63184, + "bx-shape-rotate-cw": 63185, + "bx-shape-subtract-alt": 63186, + "bx-shape-subtract": 63187, + "bx-shape-trim-alt": 63188, + "bx-shape-trim": 63189, + "bx-shape-unite-alt": 63190, + "bx-shape-unite": 63191, + "bx-shapes-alt-2": 63192, + "bx-shapes-alt": 63193, + "bx-shapes": 63194, + "bx-share": 63195, + "bx-shekel": 63196, + "bx-shield-alt-2": 63197, + "bx-shield-alt": 63198, + "bx-shield-circle": 63199, + "bx-shield-half": 63200, + "bx-shield-quarter": 63201, + "bx-shield": 63202, + "bx-shinto": 63203, + "bx-ship": 63204, + "bx-shocked": 63205, + "bx-shopping-bag-alt": 63206, + "bx-shopping-bag": 63207, + "bx-shower": 63208, + "bx-shrink-left": 63209, + "bx-shrink-right": 63210, + "bx-shuffle": 63211, + "bx-shutter-alt": 63212, + "bx-shutter": 63213, + "bx-shuttlecock": 63214, + "bx-sidebar-right": 63215, + "bx-sidebar": 63216, + "bx-sigma": 63217, + "bx-signal-1": 63218, + "bx-signal-2": 63219, + "bx-signal-3": 63220, + "bx-signal-4": 63221, + "bx-signal-5": 63222, + "bx-signal-slash": 63223, + "bx-signature": 63224, + "bx-sikhism": 63225, + "bx-sine-wave": 63226, + "bx-siren-alt": 63227, + "bx-siren": 63228, + "bx-sitemap": 63229, + "bx-size-distort": 63230, + "bx-size-freeform": 63231, + "bx-size-uniform": 63232, + "bx-size-warp": 63233, + "bx-skateboard": 63234, + "bx-skip-next-circle": 63235, + "bx-skip-next": 63236, + "bx-skip-previous-circle": 63237, + "bx-skip-previous": 63238, + "bx-skirt": 63239, + "bx-skull": 63240, + "bx-sleepy": 63241, + "bx-slice": 63242, + "bx-slider-alt": 63243, + "bx-slider-vertical-alt": 63244, + "bx-slider-vertical": 63245, + "bx-slider": 63246, + "bx-slideshow": 63247, + "bx-smile": 63248, + "bx-smoke-alarm-alt-2": 63249, + "bx-smoke-alarm-alt": 63250, + "bx-smoke-alarm": 63251, + "bx-sneaker": 63252, + "bx-snowflake": 63253, + "bx-sock": 63254, + "bx-solar-panel": 63255, + "bx-spa": 63256, + "bx-spacebar": 63257, + "bx-spade": 63258, + "bx-spanner": 63259, + "bx-sparkle-circle": 63260, + "bx-sparkle-square": 63261, + "bx-sparkle": 63262, + "bx-sparkles-alt": 63263, + "bx-sparkles": 63264, + "bx-speaker": 63265, + "bx-sphere": 63266, + "bx-split": 63267, + "bx-spoon": 63268, + "bx-spray-can": 63269, + "bx-square-dashed-half": 63270, + "bx-square-dashed": 63271, + "bx-square-root": 63272, + "bx-square-rounded": 63273, + "bx-square-small": 63274, + "bx-square": 63275, + "bx-squircle": 63276, + "bx-stadium": 63277, + "bx-stamp": 63278, + "bx-star-circle": 63279, + "bx-star-half": 63280, + "bx-star-square": 63281, + "bx-star": 63282, + "bx-station": 63283, + "bx-steering-wheel": 63284, + "bx-steps-down": 63285, + "bx-steps-up": 63286, + "bx-sticker": 63287, + "bx-stop-circle": 63288, + "bx-stop": 63289, + "bx-stopwatch": 63290, + "bx-store-alt-2": 63291, + "bx-store-alt": 63292, + "bx-store": 63293, + "bx-strategy": 63294, + "bx-street-view": 63295, + "bx-strikethrough": 63296, + "bx-stroke-drawing": 63297, + "bx-stroke-freehand": 63298, + "bx-stroke-ink": 63299, + "bx-stroke-pen": 63300, + "bx-subscript": 63301, + "bx-subset": 63302, + "bx-subway": 63303, + "bx-sun-bright": 63304, + "bx-sun-dim": 63305, + "bx-sun-drizzle": 63306, + "bx-sun-fog": 63307, + "bx-sun-rain-wind": 63308, + "bx-sun-rain": 63309, + "bx-sun-rise": 63310, + "bx-sun-set": 63311, + "bx-sun-snow": 63312, + "bx-sun": 63313, + "bx-superscript": 63314, + "bx-superset": 63315, + "bx-surfboard": 63316, + "bx-sushi": 63317, + "bx-swap-diagonal": 63318, + "bx-swap-horizontal": 63319, + "bx-swap-vertical": 63320, + "bx-swatch": 63321, + "bx-swimming-pool": 63322, + "bx-swimming": 63323, + "bx-sword-alt": 63324, + "bx-sword": 63325, + "bx-syringe": 63326, + "bx-t-shirt": 63327, + "bx-tab": 63328, + "bx-table-cells-large": 63329, + "bx-table-cells": 63330, + "bx-table-columns-merge": 63331, + "bx-table-columns-split": 63332, + "bx-table-columns": 63333, + "bx-table-layout": 63334, + "bx-table-list": 63335, + "bx-table-rows-merge": 63336, + "bx-table-rows-split": 63337, + "bx-table-rows": 63338, + "bx-table-tennis": 63339, + "bx-table": 63340, + "bx-tablet": 63341, + "bx-tabs": 63342, + "bx-tachometer-alt": 63343, + "bx-tachometer": 63344, + "bx-taco": 63345, + "bx-tag-alt": 63346, + "bx-tag-x": 63347, + "bx-tag": 63348, + "bx-takeaway": 63349, + "bx-target": 63350, + "bx-taxi": 63351, + "bx-temple": 63352, + "bx-tennis-ball-alt": 63353, + "bx-tennis-ball": 63354, + "bx-tennis": 63355, + "bx-tent": 63356, + "bx-terminal": 63357, + "bx-test-tube": 63358, + "bx-text-height": 63359, + "bx-text-underline": 63360, + "bx-text-width": 63361, + "bx-texture": 63362, + "bx-thermometer": 63363, + "bx-thought-bubble": 63364, + "bx-thread-roll": 63365, + "bx-thumb-down": 63366, + "bx-thumb-up": 63367, + "bx-thunder": 63368, + "bx-ticket-star": 63369, + "bx-ticket": 63370, + "bx-tickets": 63371, + "bx-timer": 63372, + "bx-tiny-home": 63373, + "bx-tired": 63374, + "bx-toggle-big-left": 63375, + "bx-toggle-big-right": 63376, + "bx-toggle-left": 63377, + "bx-toggle-right": 63378, + "bx-toggles": 63379, + "bx-toilet-roll": 63380, + "bx-tooth": 63381, + "bx-torch": 63382, + "bx-tornado": 63383, + "bx-torus": 63384, + "bx-towel": 63385, + "bx-toy-car": 63386, + "bx-traffic-barrier": 63387, + "bx-traffic-cone": 63388, + "bx-train": 63389, + "bx-tram": 63390, + "bx-transgender": 63391, + "bx-translate": 63392, + "bx-transparency": 63393, + "bx-trash-alt": 63394, + "bx-trash-x": 63395, + "bx-trash": 63396, + "bx-treasure-chest": 63397, + "bx-tree-alt": 63398, + "bx-tree": 63399, + "bx-trees": 63400, + "bx-trending-down": 63401, + "bx-trending-up": 63402, + "bx-triangle-half": 63403, + "bx-triangle": 63404, + "bx-trip": 63405, + "bx-trophy-star": 63406, + "bx-trophy": 63407, + "bx-truck": 63408, + "bx-turkey-meat": 63409, + "bx-turn-down": 63410, + "bx-turn-left": 63411, + "bx-turn-right": 63412, + "bx-turn-up": 63413, + "bx-tv-alt": 63414, + "bx-tv": 63415, + "bx-ufo": 63416, + "bx-umbrella-alt": 63417, + "bx-umbrella": 63418, + "bx-underline-dashed": 63419, + "bx-underline-dotted": 63420, + "bx-underline-wavy": 63421, + "bx-underline": 63422, + "bx-undershirt": 63423, + "bx-undo-alt": 63424, + "bx-undo-stroke-alt": 63425, + "bx-undo-stroke": 63426, + "bx-undo": 63427, + "bx-universal-access": 63428, + "bx-unlink-alt": 63429, + "bx-unlink": 63430, + "bx-uppercase": 63431, + "bx-upside-down": 63432, + "bx-usb": 63433, + "bx-user-check": 63434, + "bx-user-circle": 63435, + "bx-user-hexagon": 63436, + "bx-user-id-card": 63437, + "bx-user-minus": 63438, + "bx-user-plus": 63439, + "bx-user-search": 63440, + "bx-user-square": 63441, + "bx-user-voice": 63442, + "bx-user-x": 63443, + "bx-user": 63444, + "bx-van": 63445, + "bx-variable": 63446, + "bx-vector-square": 63447, + "bx-vector-triangle": 63448, + "bx-vector": 63449, + "bx-vertical-align-bottom": 63450, + "bx-vertical-align-center": 63451, + "bx-vertical-align-top": 63452, + "bx-vertical-bottom": 63453, + "bx-vertical-center": 63454, + "bx-vertical-distribute-bottom": 63455, + "bx-vertical-distribute-center": 63456, + "bx-vertical-distribute-top": 63457, + "bx-vertical-spacing": 63458, + "bx-vertical-top": 63459, + "bx-vial-alt": 63460, + "bx-vial": 63461, + "bx-video-cinema": 63462, + "bx-video-plus": 63463, + "bx-video-slash": 63464, + "bx-video": 63465, + "bx-vignette": 63466, + "bx-virus-slash": 63467, + "bx-virus": 63468, + "bx-voicemail": 63469, + "bx-volleyball": 63470, + "bx-volume-full": 63471, + "bx-volume-low": 63472, + "bx-volume-mute": 63473, + "bx-volume": 63474, + "bx-vr-goggles": 63475, + "bx-vr-headset": 63476, + "bx-waffle": 63477, + "bx-walking": 63478, + "bx-wall": 63479, + "bx-wallet-alt": 63480, + "bx-wallet-cards": 63481, + "bx-wallet-note": 63482, + "bx-wallet": 63483, + "bx-warehouse": 63484, + "bx-washer": 63485, + "bx-water-drop-alt": 63486, + "bx-water-drop-half": 63487, + "bx-water-drop": 63488, + "bx-water-spray": 63489, + "bx-water": 63490, + "bx-watermelon": 63491, + "bx-waveform": 63492, + "bx-webcam": 63493, + "bx-webhook": 63494, + "bx-whiteboard-alt": 63495, + "bx-whiteboard": 63496, + "bx-widget-horizontal": 63497, + "bx-widget-small": 63498, + "bx-widget-vertical": 63499, + "bx-widget": 63500, + "bx-wifi-0": 63501, + "bx-wifi-1": 63502, + "bx-wifi-2": 63503, + "bx-wifi-slash": 63504, + "bx-wifi": 63505, + "bx-wind": 63506, + "bx-window-arrow-in": 63507, + "bx-window-arrow-out": 63508, + "bx-window-mac-alt": 63509, + "bx-window-mac": 63510, + "bx-window": 63511, + "bx-windows": 63512, + "bx-wine-alt": 63513, + "bx-wine": 63514, + "bx-wink-smile": 63515, + "bx-wink-tongue": 63516, + "bx-woman": 63517, + "bx-won": 63518, + "bx-wrist-watch-alt": 63519, + "bx-wrist-watch-round-alt": 63520, + "bx-wrist-watch-round": 63521, + "bx-wrist-watch": 63522, + "bx-x-circle": 63523, + "bx-x-shield": 63524, + "bx-x-square": 63525, + "bx-x": 63526, + "bx-yarn-ball": 63527, + "bx-yen": 63528, + "bx-yin-yang": 63529, + "bxs-8-ball": 63530, + "bxs-a-arrow-down": 63531, + "bxs-a-arrow-up": 63532, + "bxs-accessibility": 63533, + "bxs-acorn": 63534, + "bxs-address-book": 63535, + "bxs-air-conditioner": 63536, + "bxs-air": 63537, + "bxs-airplay": 63538, + "bxs-alarm-alt": 63539, + "bxs-alarm-check": 63540, + "bxs-alarm-exclamation": 63541, + "bxs-alarm-minus": 63542, + "bxs-alarm-plus": 63543, + "bxs-alarm-slash": 63544, + "bxs-alarm-z": 63545, + "bxs-alarm": 63546, + "bxs-album-covers": 63547, + "bxs-alert-circle": 63548, + "bxs-alert-octagon": 63549, + "bxs-alert-shield": 63550, + "bxs-alert-square": 63551, + "bxs-alert-triangle": 63552, + "bxs-alien": 63553, + "bxs-align-center": 63554, + "bxs-align-horizontal-justify-center": 63555, + "bxs-align-horizontal-justify-end": 63556, + "bxs-align-horizontal-justify-start": 63557, + "bxs-align-horizontal-space-between": 63558, + "bxs-align-justify": 63559, + "bxs-align-left": 63560, + "bxs-align-right": 63561, + "bxs-align-vertical-justify-center": 63562, + "bxs-align-vertical-justify-end": 63563, + "bxs-align-vertical-justify-start": 63564, + "bxs-align-vertical-space-between": 63565, + "bxs-ambulance": 63566, + "bxs-ampersand": 63567, + "bxs-analyze": 63568, + "bxs-anchor": 63569, + "bxs-angle": 63570, + "bxs-angry": 63571, + "bxs-animation-bounce": 63572, + "bxs-apartment": 63573, + "bxs-approximate": 63574, + "bxs-apps-alt": 63575, + "bxs-apps": 63576, + "bxs-arch": 63577, + "bxs-archive-alt": 63578, + "bxs-archive-arrow-down": 63579, + "bxs-archive-arrow-up": 63580, + "bxs-archive": 63581, + "bxs-area": 63582, + "bxs-arrow-big-down-line": 63583, + "bxs-arrow-big-down": 63584, + "bxs-arrow-big-left-line": 63585, + "bxs-arrow-big-left": 63586, + "bxs-arrow-big-right-line": 63587, + "bxs-arrow-big-right": 63588, + "bxs-arrow-big-up-line": 63589, + "bxs-arrow-big-up": 63590, + "bxs-arrow-cross": 63591, + "bxs-arrow-down-a-z": 63592, + "bxs-arrow-down-circle": 63593, + "bxs-arrow-down-left-circle": 63594, + "bxs-arrow-down-left-square": 63595, + "bxs-arrow-down-left-stroke-circle": 63596, + "bxs-arrow-down-left-stroke-square": 63597, + "bxs-arrow-down-left-stroke": 63598, + "bxs-arrow-down-left": 63599, + "bxs-arrow-down-narrow-wide": 63600, + "bxs-arrow-down-right-circle": 63601, + "bxs-arrow-down-right-square": 63602, + "bxs-arrow-down-right-stroke-circle": 63603, + "bxs-arrow-down-right-stroke-square": 63604, + "bxs-arrow-down-right-stroke": 63605, + "bxs-arrow-down-right": 63606, + "bxs-arrow-down-square": 63607, + "bxs-arrow-down-stroke-circle": 63608, + "bxs-arrow-down-stroke-square": 63609, + "bxs-arrow-down-stroke": 63610, + "bxs-arrow-down-up": 63611, + "bxs-arrow-down-wide-narrow": 63612, + "bxs-arrow-down": 63613, + "bxs-arrow-from-bottom-stroke": 63614, + "bxs-arrow-from-bottom": 63615, + "bxs-arrow-from-left-stroke": 63616, + "bxs-arrow-from-left": 63617, + "bxs-arrow-from-right-stroke": 63618, + "bxs-arrow-from-right": 63619, + "bxs-arrow-from-top-stroke": 63620, + "bxs-arrow-from-top": 63621, + "bxs-arrow-in-down-circle-half": 63622, + "bxs-arrow-in-down-left-circle": 63623, + "bxs-arrow-in-down-left-square": 63624, + "bxs-arrow-in-down-left-stroke-circle": 63625, + "bxs-arrow-in-down-left-stroke-square": 63626, + "bxs-arrow-in-down-right-circle": 63627, + "bxs-arrow-in-down-right-square": 63628, + "bxs-arrow-in-down-right-stroke-circle": 63629, + "bxs-arrow-in-down-right-stroke-square": 63630, + "bxs-arrow-in-down-square-half": 63631, + "bxs-arrow-in-down-stroke-circle-half": 63632, + "bxs-arrow-in-left-circle-half": 63633, + "bxs-arrow-in-left-square-half": 63634, + "bxs-arrow-in-left-stroke-circle-half": 63635, + "bxs-arrow-in-right-circle-half": 63636, + "bxs-arrow-in-right-square-half": 63637, + "bxs-arrow-in-right-stroke-circle-half": 63638, + "bxs-arrow-in-up-circle-half": 63639, + "bxs-arrow-in-up-left-circle": 63640, + "bxs-arrow-in-up-left-square": 63641, + "bxs-arrow-in-up-left-stroke-circle": 63642, + "bxs-arrow-in-up-left-stroke-square": 63643, + "bxs-arrow-in-up-right-circle": 63644, + "bxs-arrow-in-up-right-square": 63645, + "bxs-arrow-in-up-right-stroke-circle": 63646, + "bxs-arrow-in-up-right-stroke-square": 63647, + "bxs-arrow-in-up-square-half": 63648, + "bxs-arrow-in-up-stroke-circle-half": 63649, + "bxs-arrow-left-circle": 63650, + "bxs-arrow-left-right": 63651, + "bxs-arrow-left-square": 63652, + "bxs-arrow-left-stroke-circle": 63653, + "bxs-arrow-left-stroke-square": 63654, + "bxs-arrow-left-stroke": 63655, + "bxs-arrow-left": 63656, + "bxs-arrow-out-down-circle-half": 63657, + "bxs-arrow-out-down-left-circle": 63658, + "bxs-arrow-out-down-left-square": 63659, + "bxs-arrow-out-down-left-stroke-circle": 63660, + "bxs-arrow-out-down-left-stroke-square": 63661, + "bxs-arrow-out-down-right-circle": 63662, + "bxs-arrow-out-down-right-square": 63663, + "bxs-arrow-out-down-right-stroke-circle": 63664, + "bxs-arrow-out-down-right-stroke-square": 63665, + "bxs-arrow-out-down-square-half": 63666, + "bxs-arrow-out-down-stroke-circle-half": 63667, + "bxs-arrow-out-left-circle-half": 63668, + "bxs-arrow-out-left-square-half": 63669, + "bxs-arrow-out-left-stroke-circle-half": 63670, + "bxs-arrow-out-right-circle-half": 63671, + "bxs-arrow-out-right-square-half": 63672, + "bxs-arrow-out-right-stroke-circle-half": 63673, + "bxs-arrow-out-up-circle-half": 63674, + "bxs-arrow-out-up-left-circle": 63675, + "bxs-arrow-out-up-left-square": 63676, + "bxs-arrow-out-up-left-stroke-circle": 63677, + "bxs-arrow-out-up-left-stroke-square": 63678, + "bxs-arrow-out-up-right-circle": 63679, + "bxs-arrow-out-up-right-square": 63680, + "bxs-arrow-out-up-right-stroke-circle": 63681, + "bxs-arrow-out-up-right-stroke-square": 63682, + "bxs-arrow-out-up-square-half": 63683, + "bxs-arrow-out-up-stroke-circle-half": 63684, + "bxs-arrow-right-circle": 63685, + "bxs-arrow-right-left": 63686, + "bxs-arrow-right-square": 63687, + "bxs-arrow-right-stroke-circle": 63688, + "bxs-arrow-right-stroke-square": 63689, + "bxs-arrow-right-stroke": 63690, + "bxs-arrow-right": 63691, + "bxs-arrow-s-down": 63692, + "bxs-arrow-s-left": 63693, + "bxs-arrow-s-right": 63694, + "bxs-arrow-s-up": 63695, + "bxs-arrow-to-bottom-stroke": 63696, + "bxs-arrow-to-bottom": 63697, + "bxs-arrow-to-left-stroke": 63698, + "bxs-arrow-to-left": 63699, + "bxs-arrow-to-right-stroke": 63700, + "bxs-arrow-to-right": 63701, + "bxs-arrow-to-top-stroke": 63702, + "bxs-arrow-to-top": 63703, + "bxs-arrow-up-a-z": 63704, + "bxs-arrow-up-circle": 63705, + "bxs-arrow-up-down": 63706, + "bxs-arrow-up-left-circle": 63707, + "bxs-arrow-up-left-square": 63708, + "bxs-arrow-up-left-stroke-circle": 63709, + "bxs-arrow-up-left-stroke-square": 63710, + "bxs-arrow-up-left-stroke": 63711, + "bxs-arrow-up-left": 63712, + "bxs-arrow-up-narrow-wide": 63713, + "bxs-arrow-up-right-circle": 63714, + "bxs-arrow-up-right-square": 63715, + "bxs-arrow-up-right-stroke-circle": 63716, + "bxs-arrow-up-right-stroke-square": 63717, + "bxs-arrow-up-right-stroke": 63718, + "bxs-arrow-up-right": 63719, + "bxs-arrow-up-square": 63720, + "bxs-arrow-up-stroke-circle": 63721, + "bxs-arrow-up-stroke-square": 63722, + "bxs-arrow-up-stroke": 63723, + "bxs-arrow-up-wide-narrow": 63724, + "bxs-arrow-up": 63725, + "bxs-article": 63726, + "bxs-asterisk": 63727, + "bxs-at": 63728, + "bxs-atom": 63729, + "bxs-avocado": 63730, + "bxs-axe": 63731, + "bxs-background-color-fill": 63732, + "bxs-background": 63733, + "bxs-backpack-star": 63734, + "bxs-backpack": 63735, + "bxs-backspace": 63736, + "bxs-backward-slash": 63737, + "bxs-bacon": 63738, + "bxs-badge-check": 63739, + "bxs-badge-exclamation": 63740, + "bxs-badge-info": 63741, + "bxs-badge": 63742, + "bxs-baguette": 63743, + "bxs-bahai": 63744, + "bxs-balcony": 63745, + "bxs-ball-throw": 63746, + "bxs-balloon": 63747, + "bxs-band-aid": 63748, + "bxs-bank": 63749, + "bxs-bar-chart-big": 63750, + "bxs-bar-chart-square": 63751, + "bxs-bar-chart": 63752, + "bxs-barcode-square": 63753, + "bxs-barcode": 63754, + "bxs-barn": 63755, + "bxs-baseball": 63756, + "bxs-basket": 63757, + "bxs-basketball": 63758, + "bxs-bath": 63759, + "bxs-battery-1": 63760, + "bxs-battery-2": 63761, + "bxs-battery-3": 63762, + "bxs-battery-full": 63763, + "bxs-battery-low": 63764, + "bxs-battery": 63765, + "bxs-beach-ball": 63766, + "bxs-beach": 63767, + "bxs-beaker": 63768, + "bxs-beanie": 63769, + "bxs-bear": 63770, + "bxs-bed-alt": 63771, + "bxs-bed": 63772, + "bxs-beer": 63773, + "bxs-bell-check": 63774, + "bxs-bell-minus": 63775, + "bxs-bell-plus": 63776, + "bxs-bell-ring": 63777, + "bxs-bell-slash": 63778, + "bxs-bell": 63779, + "bxs-bench": 63780, + "bxs-between-horizontal-end": 63781, + "bxs-between-horizontal-start": 63782, + "bxs-between-vertical-end": 63783, + "bxs-between-vertical-start": 63784, + "bxs-bible": 63785, + "bxs-biceps": 63786, + "bxs-binocular": 63787, + "bxs-bird-alt": 63788, + "bxs-bird": 63789, + "bxs-birthday-cake": 63790, + "bxs-bitcoin": 63791, + "bxs-blanket": 63792, + "bxs-blob": 63793, + "bxs-block": 63794, + "bxs-blockquote": 63795, + "bxs-blocks": 63796, + "bxs-bluetooth": 63797, + "bxs-blur-alt": 63798, + "bxs-blur": 63799, + "bxs-body": 63800, + "bxs-bold": 63801, + "bxs-bolt-alt": 63802, + "bxs-bolt-circle": 63803, + "bxs-bolt-square": 63804, + "bxs-bolt": 63805, + "bxs-bomb": 63806, + "bxs-bone": 63807, + "bxs-bong": 63808, + "bxs-book-add": 63809, + "bxs-book-alt": 63810, + "bxs-book-bookmark": 63811, + "bxs-book-content": 63812, + "bxs-book-heart": 63813, + "bxs-book-library": 63814, + "bxs-book-open": 63815, + "bxs-book": 63816, + "bxs-bookmark-alt": 63817, + "bxs-bookmark-heart": 63818, + "bxs-bookmark-minus-alt": 63819, + "bxs-bookmark-minus": 63820, + "bxs-bookmark-plus-alt": 63821, + "bxs-bookmark-plus": 63822, + "bxs-bookmark-star": 63823, + "bxs-bookmark-x": 63824, + "bxs-bookmark": 63825, + "bxs-bookmarks": 63826, + "bxs-boombox": 63827, + "bxs-boot": 63828, + "bxs-border-all": 63829, + "bxs-border-bottom": 63830, + "bxs-border-inner": 63831, + "bxs-border-left": 63832, + "bxs-border-none": 63833, + "bxs-border-outer": 63834, + "bxs-border-radius": 63835, + "bxs-border-right": 63836, + "bxs-border-top": 63837, + "bxs-bow": 63838, + "bxs-bowl-balls": 63839, + "bxs-bowl-bubbles": 63840, + "bxs-bowl-hot": 63841, + "bxs-bowl-noodles-alt": 63842, + "bxs-bowl-noodles": 63843, + "bxs-bowl-rice": 63844, + "bxs-bowling-ball": 63845, + "bxs-box-alt": 63846, + "bxs-box": 63847, + "bxs-bracket-curly": 63848, + "bxs-bracket-round": 63849, + "bxs-bracket": 63850, + "bxs-braille": 63851, + "bxs-brain-circuit": 63852, + "bxs-brain": 63853, + "bxs-bread": 63854, + "bxs-brick": 63855, + "bxs-bridge": 63856, + "bxs-briefcase-alt-2": 63857, + "bxs-briefcase-alt": 63858, + "bxs-briefcase": 63859, + "bxs-brightness-half": 63860, + "bxs-brightness": 63861, + "bxs-broadcast": 63862, + "bxs-browser-activity": 63863, + "bxs-brush-sparkles": 63864, + "bxs-brush": 63865, + "bxs-buddhism": 63866, + "bxs-bug-alt": 63867, + "bxs-bug": 63868, + "bxs-building-house": 63869, + "bxs-building": 63870, + "bxs-buildings": 63871, + "bxs-bullseye": 63872, + "bxs-buoy": 63873, + "bxs-burger-alt": 63874, + "bxs-burger": 63875, + "bxs-bus": 63876, + "bxs-business": 63877, + "bxs-button-rounded": 63878, + "bxs-button": 63879, + "bxs-cabinet": 63880, + "bxs-cable-car": 63881, + "bxs-cake-slice": 63882, + "bxs-calculator": 63883, + "bxs-calendar-alt-2": 63884, + "bxs-calendar-alt": 63885, + "bxs-calendar-check": 63886, + "bxs-calendar-cog": 63887, + "bxs-calendar-detail": 63888, + "bxs-calendar-down-arrow": 63889, + "bxs-calendar-event": 63890, + "bxs-calendar-heart": 63891, + "bxs-calendar-minus": 63892, + "bxs-calendar-plus": 63893, + "bxs-calendar-search": 63894, + "bxs-calendar-star": 63895, + "bxs-calendar-up-arrow": 63896, + "bxs-calendar-week": 63897, + "bxs-calendar-x": 63898, + "bxs-calendar": 63899, + "bxs-camcoder": 63900, + "bxs-camera-alt": 63901, + "bxs-camera-flip": 63902, + "bxs-camera-home": 63903, + "bxs-camera-monochrome": 63904, + "bxs-camera-plus": 63905, + "bxs-camera-portrait": 63906, + "bxs-camera-slash": 63907, + "bxs-camera-switch": 63908, + "bxs-camera": 63909, + "bxs-campfire": 63910, + "bxs-camping": 63911, + "bxs-candlestick": 63912, + "bxs-cannabis": 63913, + "bxs-cap": 63914, + "bxs-capitalize": 63915, + "bxs-capsule": 63916, + "bxs-captions-cc": 63917, + "bxs-captions": 63918, + "bxs-capture": 63919, + "bxs-car-battery": 63920, + "bxs-car-key": 63921, + "bxs-car": 63922, + "bxs-card-view-large": 63923, + "bxs-card-view-no-title": 63924, + "bxs-card-view-small": 63925, + "bxs-card-view-tiles": 63926, + "bxs-card-view": 63927, + "bxs-caret-big-down": 63928, + "bxs-caret-big-left": 63929, + "bxs-caret-big-right": 63930, + "bxs-caret-big-up": 63931, + "bxs-caret-down-circle": 63932, + "bxs-caret-down-square": 63933, + "bxs-caret-down": 63934, + "bxs-caret-left-circle": 63935, + "bxs-caret-left-square": 63936, + "bxs-caret-left": 63937, + "bxs-caret-right-circle": 63938, + "bxs-caret-right-square": 63939, + "bxs-caret-right": 63940, + "bxs-caret-up-circle": 63941, + "bxs-caret-up-square": 63942, + "bxs-caret-up": 63943, + "bxs-carets-down-up": 63944, + "bxs-carets-left-right": 63945, + "bxs-carets-right-left": 63946, + "bxs-carets-up-down": 63947, + "bxs-carrot": 63948, + "bxs-cart-minus": 63949, + "bxs-cart-plus": 63950, + "bxs-cart": 63951, + "bxs-cast": 63952, + "bxs-castle": 63953, + "bxs-cat": 63954, + "bxs-categories": 63955, + "bxs-cctv": 63956, + "bxs-certification": 63957, + "bxs-chair": 63958, + "bxs-champagne": 63959, + "bxs-chart-area": 63960, + "bxs-chart-bar-big-columns": 63961, + "bxs-chart-bar-big-rows": 63962, + "bxs-chart-bar-columns": 63963, + "bxs-chart-bar-rows": 63964, + "bxs-chart-bubble": 63965, + "bxs-chart-gantt": 63966, + "bxs-chart-line": 63967, + "bxs-chart-network": 63968, + "bxs-chart-scatter": 63969, + "bxs-chart-spline": 63970, + "bxs-chart-stacked-columns": 63971, + "bxs-chart-stacked-rows": 63972, + "bxs-chart-trend": 63973, + "bxs-check-circle": 63974, + "bxs-check-shield": 63975, + "bxs-check-square": 63976, + "bxs-check": 63977, + "bxs-checkbox-checked": 63978, + "bxs-checkbox-square": 63979, + "bxs-checkbox": 63980, + "bxs-checklist": 63981, + "bxs-checks": 63982, + "bxs-cheese": 63983, + "bxs-chef-hat": 63984, + "bxs-cherry": 63985, + "bxs-chess-bishop": 63986, + "bxs-chess-king": 63987, + "bxs-chess-knight": 63988, + "bxs-chess-pawn": 63989, + "bxs-chess-queen": 63990, + "bxs-chess-rook": 63991, + "bxs-chess": 63992, + "bxs-chevron-down-circle": 63993, + "bxs-chevron-down-square": 63994, + "bxs-chevron-down": 63995, + "bxs-chevron-left-circle": 63996, + "bxs-chevron-left-square": 63997, + "bxs-chevron-left": 63998, + "bxs-chevron-right-circle": 63999, + "bxs-chevron-right-square": 64000, + "bxs-chevron-right": 64001, + "bxs-chevron-up-circle": 64002, + "bxs-chevron-up-square": 64003, + "bxs-chevron-up": 64004, + "bxs-chevrons-down-up": 64005, + "bxs-chevrons-down": 64006, + "bxs-chevrons-left-right": 64007, + "bxs-chevrons-left": 64008, + "bxs-chevrons-right-left": 64009, + "bxs-chevrons-right": 64010, + "bxs-chevrons-up-down": 64011, + "bxs-chevrons-up": 64012, + "bxs-child": 64013, + "bxs-chip": 64014, + "bxs-christianity": 64015, + "bxs-church": 64016, + "bxs-cigarette": 64017, + "bxs-circle-dashed-half": 64018, + "bxs-circle-dashed": 64019, + "bxs-circle-half-alt": 64020, + "bxs-circle-half": 64021, + "bxs-circle-hexagon": 64022, + "bxs-circle-outer-dashed-circle": 64023, + "bxs-circle-quarter-alt": 64024, + "bxs-circle-quarter": 64025, + "bxs-circle-three-quarter-alt": 64026, + "bxs-circle-three-quarter": 64027, + "bxs-circle": 64028, + "bxs-circles-9": 64029, + "bxs-circles-alt": 64030, + "bxs-circles": 64031, + "bxs-circuit-board": 64032, + "bxs-city": 64033, + "bxs-clipboard-check": 64034, + "bxs-clipboard-code": 64035, + "bxs-clipboard-detail": 64036, + "bxs-clipboard-minus": 64037, + "bxs-clipboard-plus": 64038, + "bxs-clipboard-x": 64039, + "bxs-clipboard": 64040, + "bxs-clock-1": 64041, + "bxs-clock-10": 64042, + "bxs-clock-11": 64043, + "bxs-clock-12": 64044, + "bxs-clock-2": 64045, + "bxs-clock-3": 64046, + "bxs-clock-4": 64047, + "bxs-clock-5": 64048, + "bxs-clock-6": 64049, + "bxs-clock-7": 64050, + "bxs-clock-8": 64051, + "bxs-clock-9": 64052, + "bxs-clock-dashed-half": 64053, + "bxs-clock": 64054, + "bxs-cloud-alt-2": 64055, + "bxs-cloud-alt": 64056, + "bxs-cloud-drizzle": 64057, + "bxs-cloud-fog": 64058, + "bxs-cloud-lightning": 64059, + "bxs-cloud-moon": 64060, + "bxs-cloud-rain-wind": 64061, + "bxs-cloud-rain": 64062, + "bxs-cloud-snow": 64063, + "bxs-cloud-sun": 64064, + "bxs-cloud": 64065, + "bxs-clover": 64066, + "bxs-club": 64067, + "bxs-cocktail": 64068, + "bxs-code-alt": 64069, + "bxs-code": 64070, + "bxs-coffee-beans": 64071, + "bxs-coffee-cup": 64072, + "bxs-coffee": 64073, + "bxs-cog": 64074, + "bxs-cognition": 64075, + "bxs-coin": 64076, + "bxs-coins": 64077, + "bxs-col-resize": 64078, + "bxs-color-fill": 64079, + "bxs-color-wheel": 64080, + "bxs-columns-3": 64081, + "bxs-columns-4": 64082, + "bxs-columns": 64083, + "bxs-comic-bubble": 64084, + "bxs-command": 64085, + "bxs-community": 64086, + "bxs-compare-alt": 64087, + "bxs-compare": 64088, + "bxs-compass": 64089, + "bxs-component": 64090, + "bxs-computer": 64091, + "bxs-confused": 64092, + "bxs-connector": 64093, + "bxs-contact-book": 64094, + "bxs-contrast": 64095, + "bxs-cookie": 64096, + "bxs-cool": 64097, + "bxs-copy-check": 64098, + "bxs-copy-list": 64099, + "bxs-copy-minus": 64100, + "bxs-copy-plus": 64101, + "bxs-copy-x": 64102, + "bxs-copy": 64103, + "bxs-copyright": 64104, + "bxs-core": 64105, + "bxs-credit-card-alt": 64106, + "bxs-credit-card-front": 64107, + "bxs-credit-card-insert": 64108, + "bxs-credit-card": 64109, + "bxs-cricket-ball": 64110, + "bxs-crop": 64111, + "bxs-cross-circle": 64112, + "bxs-crosshair": 64113, + "bxs-crown": 64114, + "bxs-crypto-coin": 64115, + "bxs-crypto": 64116, + "bxs-cube-alt": 64117, + "bxs-cube-inside": 64118, + "bxs-cube": 64119, + "bxs-cuboid": 64120, + "bxs-cup-hot": 64121, + "bxs-cup-saucer": 64122, + "bxs-cup-tea": 64123, + "bxs-cup": 64124, + "bxs-cupboard-alt": 64125, + "bxs-cupboard": 64126, + "bxs-cupcake": 64127, + "bxs-currency-note": 64128, + "bxs-currency-notes": 64129, + "bxs-cursor-add": 64130, + "bxs-cursor-cell": 64131, + "bxs-cursor-crosshair-dot": 64132, + "bxs-cursor-crosshair": 64133, + "bxs-cursor-pen": 64134, + "bxs-cursor-pointer": 64135, + "bxs-cursor": 64136, + "bxs-cut": 64137, + "bxs-cycling": 64138, + "bxs-cylinder": 64139, + "bxs-dashboard-alt": 64140, + "bxs-dashboard": 64141, + "bxs-database-alt": 64142, + "bxs-database": 64143, + "bxs-decrease-indent": 64144, + "bxs-delta": 64145, + "bxs-department-store": 64146, + "bxs-desert": 64147, + "bxs-desk": 64148, + "bxs-desktop-alt": 64149, + "bxs-desktop": 64150, + "bxs-devices": 64151, + "bxs-dialpad": 64152, + "bxs-diameter": 64153, + "bxs-diamond-alt": 64154, + "bxs-diamond": 64155, + "bxs-diamonds": 64156, + "bxs-dice-1": 64157, + "bxs-dice-2": 64158, + "bxs-dice-3": 64159, + "bxs-dice-4": 64160, + "bxs-dice-5": 64161, + "bxs-dice-6": 64162, + "bxs-dice-roll": 64163, + "bxs-dino": 64164, + "bxs-directions": 64165, + "bxs-disc": 64166, + "bxs-discount": 64167, + "bxs-discussion": 64168, + "bxs-dish": 64169, + "bxs-dishwasher": 64170, + "bxs-dislike": 64171, + "bxs-division": 64172, + "bxs-dizzy": 64173, + "bxs-dna": 64174, + "bxs-dock-bottom-alt": 64175, + "bxs-dock-bottom-arrow": 64176, + "bxs-dock-bottom-left-alt": 64177, + "bxs-dock-bottom-left": 64178, + "bxs-dock-bottom-right-alt": 64179, + "bxs-dock-bottom-right": 64180, + "bxs-dock-bottom": 64181, + "bxs-dock-left-alt": 64182, + "bxs-dock-left-arrow": 64183, + "bxs-dock-left": 64184, + "bxs-dock-right-alt": 64185, + "bxs-dock-right-arrow": 64186, + "bxs-dock-right": 64187, + "bxs-dock-top-alt": 64188, + "bxs-dock-top-arrow": 64189, + "bxs-dock-top-left-alt": 64190, + "bxs-dock-top-left": 64191, + "bxs-dock-top-right-alt": 64192, + "bxs-dock-top-right": 64193, + "bxs-dock-top": 64194, + "bxs-dog-alt": 64195, + "bxs-dog": 64196, + "bxs-dollar-circle-stars": 64197, + "bxs-dollar-circle": 64198, + "bxs-dollar": 64199, + "bxs-donate-blood": 64200, + "bxs-donate-heart": 64201, + "bxs-donut": 64202, + "bxs-door-open": 64203, + "bxs-door": 64204, + "bxs-dots-horizontal-rounded-circle": 64205, + "bxs-dots-horizontal-rounded": 64206, + "bxs-dots-horizontal": 64207, + "bxs-dots-vertical-rounded-circle": 64208, + "bxs-dots-vertical-rounded": 64209, + "bxs-dots-vertical": 64210, + "bxs-doughnut-chart": 64211, + "bxs-draw-ahead": 64212, + "bxs-draw-behind": 64213, + "bxs-draw-inside": 64214, + "bxs-dress": 64215, + "bxs-dribbling": 64216, + "bxs-dropdown": 64217, + "bxs-dryer": 64218, + "bxs-duck": 64219, + "bxs-dumbbell-alt": 64220, + "bxs-dumbbell": 64221, + "bxs-ear-alt": 64222, + "bxs-ear-slash": 64223, + "bxs-ear": 64224, + "bxs-earbuds": 64225, + "bxs-earth": 64226, + "bxs-ease-in-out": 64227, + "bxs-ease-in": 64228, + "bxs-ease-out": 64229, + "bxs-edit-alt": 64230, + "bxs-edit": 64231, + "bxs-education": 64232, + "bxs-egg-fried": 64233, + "bxs-egg-yolk": 64234, + "bxs-egg": 64235, + "bxs-eject": 64236, + "bxs-element-of": 64237, + "bxs-empty-set": 64238, + "bxs-enter": 64239, + "bxs-enterprise": 64240, + "bxs-envelope-alt": 64241, + "bxs-envelope-open": 64242, + "bxs-envelope": 64243, + "bxs-equal-circle": 64244, + "bxs-equal-square": 64245, + "bxs-equal": 64246, + "bxs-equalizer": 64247, + "bxs-eraser": 64248, + "bxs-euro": 64249, + "bxs-ev-station": 64250, + "bxs-expand-left": 64251, + "bxs-expand-right": 64252, + "bxs-explosion": 64253, + "bxs-exposure": 64254, + "bxs-extension": 64255, + "bxs-eye-alt": 64256, + "bxs-eye-big": 64257, + "bxs-eye-closed": 64258, + "bxs-eye-slash": 64259, + "bxs-eye": 64260, + "bxs-eyedropper": 64261, + "bxs-face-alt-2": 64262, + "bxs-face-alt-3": 64263, + "bxs-face-alt-4": 64264, + "bxs-face-alt": 64265, + "bxs-face-child": 64266, + "bxs-face-mask": 64267, + "bxs-face": 64268, + "bxs-factory": 64269, + "bxs-fan": 64270, + "bxs-fast-forward-circle": 64271, + "bxs-fast-forward": 64272, + "bxs-feather-alt": 64273, + "bxs-feather-minus": 64274, + "bxs-feather-plus": 64275, + "bxs-feather": 64276, + "bxs-female": 64277, + "bxs-file-code": 64278, + "bxs-file-cog": 64279, + "bxs-file-detail": 64280, + "bxs-file-heart": 64281, + "bxs-file-minus": 64282, + "bxs-file-plus": 64283, + "bxs-file-report": 64284, + "bxs-file-search": 64285, + "bxs-file-star": 64287, + "bxs-file-x": 64288, + "bxs-file-zip": 64289, + "bxs-file": 64290, + "bxs-film-roll-alt": 64291, + "bxs-film-roll": 64292, + "bxs-film": 64293, + "bxs-filter": 64294, + "bxs-finger-down": 64295, + "bxs-finger-left": 64296, + "bxs-finger-right": 64297, + "bxs-finger-swipe-down": 64298, + "bxs-finger-swipe-left": 64299, + "bxs-finger-swipe-right": 64300, + "bxs-finger-swipe-up": 64301, + "bxs-finger-touch": 64302, + "bxs-finger-up": 64303, + "bxs-fingerprint": 64304, + "bxs-fire-alt": 64305, + "bxs-fire-extinguisher": 64306, + "bxs-fire": 64307, + "bxs-first": 64308, + "bxs-fish-alt": 64309, + "bxs-fish": 64310, + "bxs-flag-alt-2": 64311, + "bxs-flag-alt-3": 64312, + "bxs-flag-alt": 64313, + "bxs-flag-chequered": 64314, + "bxs-flag": 64315, + "bxs-flame": 64316, + "bxs-flask-round": 64317, + "bxs-florist": 64318, + "bxs-flower-alt-2": 64319, + "bxs-flower-alt": 64320, + "bxs-flower": 64321, + "bxs-folder-check": 64322, + "bxs-folder-code": 64323, + "bxs-folder-cog": 64324, + "bxs-folder-down-arrow": 64325, + "bxs-folder-heart": 64326, + "bxs-folder-minus": 64327, + "bxs-folder-open": 64328, + "bxs-folder-plus": 64329, + "bxs-folder-search": 64330, + "bxs-folder-star": 64331, + "bxs-folder-up-arrow": 64332, + "bxs-folder-x": 64333, + "bxs-folder-zip": 64334, + "bxs-folder": 64335, + "bxs-font-color": 64336, + "bxs-font-family": 64337, + "bxs-food-menu": 64338, + "bxs-food-tag": 64339, + "bxs-football-kick": 64340, + "bxs-football-pitch": 64341, + "bxs-football": 64342, + "bxs-footsteps": 64343, + "bxs-foreground": 64344, + "bxs-fork-knife": 64345, + "bxs-fork-spoon": 64346, + "bxs-fork": 64347, + "bxs-form": 64348, + "bxs-forward-big": 64349, + "bxs-forward-slash-circle": 64350, + "bxs-forward-slash-square": 64351, + "bxs-forward-slash": 64352, + "bxs-forward-stroke": 64353, + "bxs-forward": 64354, + "bxs-frame": 64355, + "bxs-fridge": 64356, + "bxs-fullscreen-exit": 64357, + "bxs-fullscreen": 64358, + "bxs-function": 64359, + "bxs-functions": 64360, + "bxs-future": 64361, + "bxs-gallery-horizontal-end": 64362, + "bxs-gallery-horizontal": 64363, + "bxs-gallery-thumbnails": 64364, + "bxs-gallery-vertical-end": 64365, + "bxs-gallery-vertical": 64366, + "bxs-gaming": 64367, + "bxs-garage": 64368, + "bxs-gavel": 64369, + "bxs-gear": 64370, + "bxs-gem": 64371, + "bxs-gestures": 64372, + "bxs-ghost": 64373, + "bxs-gift": 64374, + "bxs-git-branch": 64375, + "bxs-git-commit": 64376, + "bxs-git-compare": 64377, + "bxs-git-merge-queue": 64378, + "bxs-git-merge": 64379, + "bxs-git-pull-request-closed": 64380, + "bxs-git-pull-request-draft": 64381, + "bxs-git-pull-request": 64382, + "bxs-git-repo-forked": 64383, + "bxs-glasses-alt": 64384, + "bxs-glasses": 64385, + "bxs-globe-africa": 64386, + "bxs-globe-alt-2": 64387, + "bxs-globe-alt": 64388, + "bxs-globe-americas": 64389, + "bxs-globe-antartica": 64390, + "bxs-globe-asia": 64391, + "bxs-globe-europe": 64392, + "bxs-globe-oceania": 64393, + "bxs-globe-stand": 64394, + "bxs-globe": 64395, + "bxs-golf-ball": 64396, + "bxs-gradient": 64397, + "bxs-greater-than-equal": 64398, + "bxs-greater-than": 64399, + "bxs-grid-9": 64400, + "bxs-grid-circle-diagonal-left": 64401, + "bxs-grid-circle-diagonal-right": 64402, + "bxs-grid-circle-plus": 64403, + "bxs-grid-circle": 64404, + "bxs-grid-column-left": 64405, + "bxs-grid-column-right": 64406, + "bxs-grid-lines-3": 64407, + "bxs-grid-lines": 64408, + "bxs-grid-plus": 64409, + "bxs-grid-row-bottom": 64410, + "bxs-grid-row-top": 64411, + "bxs-grid-search": 64412, + "bxs-grid": 64413, + "bxs-groceries": 64414, + "bxs-group-alt": 64415, + "bxs-group": 64416, + "bxs-guitar-amp": 64417, + "bxs-hail": 64418, + "bxs-hand-rock": 64419, + "bxs-hand": 64420, + "bxs-handheld-alt-2": 64421, + "bxs-handheld-alt": 64422, + "bxs-handheld": 64423, + "bxs-handshake": 64424, + "bxs-hanger": 64425, + "bxs-happy-alt": 64426, + "bxs-happy-beaming": 64427, + "bxs-happy-heart-eyes": 64428, + "bxs-happy": 64429, + "bxs-hard-drive": 64430, + "bxs-hard-hat": 64431, + "bxs-hashtag": 64432, + "bxs-hdmi": 64433, + "bxs-head": 64434, + "bxs-heading-1": 64435, + "bxs-heading-2": 64436, + "bxs-heading-3": 64437, + "bxs-heading": 64438, + "bxs-headphone-alt-2": 64439, + "bxs-headphone-alt": 64440, + "bxs-headphone-mic": 64441, + "bxs-headphone": 64442, + "bxs-heart-break": 64443, + "bxs-heart-circle": 64444, + "bxs-heart-half": 64445, + "bxs-heart-plus": 64446, + "bxs-heart-square": 64447, + "bxs-heart": 64448, + "bxs-heat-wave": 64449, + "bxs-helmet": 64450, + "bxs-help-circle": 64451, + "bxs-help-octagon": 64452, + "bxs-hexagon": 64453, + "bxs-high-speed-train": 64454, + "bxs-highlight": 64455, + "bxs-highlights": 64456, + "bxs-hinduism": 64457, + "bxs-history": 64458, + "bxs-home-add": 64459, + "bxs-home-alt-2": 64460, + "bxs-home-alt-3": 64461, + "bxs-home-alt": 64462, + "bxs-home-circle": 64463, + "bxs-home-heart": 64464, + "bxs-home": 64465, + "bxs-honey": 64466, + "bxs-horizon-sea": 64467, + "bxs-horizontal-align-center": 64468, + "bxs-horizontal-align-left": 64469, + "bxs-horizontal-align-right": 64470, + "bxs-horizontal-center": 64471, + "bxs-horizontal-distribute-center": 64472, + "bxs-horizontal-distribute-left": 64473, + "bxs-horizontal-distribute-right": 64474, + "bxs-horizontal-left": 64475, + "bxs-horizontal-right": 64476, + "bxs-horizontal-spacing": 64477, + "bxs-hospital": 64478, + "bxs-hot-tub-water": 64479, + "bxs-hot-tub": 64480, + "bxs-hot": 64481, + "bxs-hourglass": 64482, + "bxs-hurricane": 64483, + "bxs-icecream": 64484, + "bxs-iframe": 64485, + "bxs-image-alt": 64486, + "bxs-image-circle": 64487, + "bxs-image-landscape": 64488, + "bxs-image-no-background": 64489, + "bxs-image-plus": 64490, + "bxs-image-portrait": 64491, + "bxs-image-sparkle": 64492, + "bxs-image": 64493, + "bxs-images": 64494, + "bxs-inbox": 64495, + "bxs-incognito": 64496, + "bxs-infinite": 64497, + "bxs-info-circle": 64498, + "bxs-info-octagon": 64499, + "bxs-info-shield": 64500, + "bxs-info-square": 64501, + "bxs-inner-shadow": 64502, + "bxs-institution": 64503, + "bxs-integral": 64504, + "bxs-intellect": 64505, + "bxs-invert-adjust": 64506, + "bxs-invert": 64507, + "bxs-islam": 64508, + "bxs-island": 64509, + "bxs-italic": 64510, + "bxs-joystick-alt": 64511, + "bxs-joystick-button-alt": 64512, + "bxs-joystick-button": 64513, + "bxs-joystick": 64514, + "bxs-judaism": 64515, + "bxs-key-alt": 64516, + "bxs-key": 64517, + "bxs-keyboard": 64518, + "bxs-keyframe-ease-in": 64519, + "bxs-keyframe-ease-out": 64520, + "bxs-keyframe-easy-ease": 64521, + "bxs-keyframe-hold-ease-in": 64522, + "bxs-keyframe-hold-ease-out": 64523, + "bxs-keyframe-hold-linear-in": 64524, + "bxs-keyframe-hold-linear-out": 64525, + "bxs-keyframe": 64526, + "bxs-knife": 64527, + "bxs-lambda": 64528, + "bxs-landmark": 64529, + "bxs-laptop-alt": 64530, + "bxs-laptop": 64531, + "bxs-lasso": 64532, + "bxs-last": 64533, + "bxs-laugh": 64534, + "bxs-law": 64535, + "bxs-layers-alt": 64536, + "bxs-layers-down-left": 64537, + "bxs-layers-down-right": 64538, + "bxs-layers-minus-alt": 64539, + "bxs-layers-plus-alt": 64540, + "bxs-layers": 64541, + "bxs-layout-check": 64542, + "bxs-layout-minus": 64543, + "bxs-layout-plus": 64544, + "bxs-layout-search": 64545, + "bxs-layout": 64546, + "bxs-leaf-alt": 64547, + "bxs-leaf": 64548, + "bxs-left-indent": 64549, + "bxs-lemon": 64550, + "bxs-less-than-equal": 64551, + "bxs-less-than": 64552, + "bxs-letter-spacing-alt": 64553, + "bxs-letter-spacing": 64554, + "bxs-light-bulb-alt-2": 64555, + "bxs-light-bulb-alt": 64556, + "bxs-light-bulb-on": 64557, + "bxs-light-bulb": 64558, + "bxs-like": 64559, + "bxs-line-chart-square": 64560, + "bxs-line-spacing-alt": 64561, + "bxs-line-spacing": 64562, + "bxs-link-alt": 64563, + "bxs-link-break": 64564, + "bxs-link": 64565, + "bxs-lira": 64566, + "bxs-list-minus": 64567, + "bxs-list-music": 64568, + "bxs-list-ol": 64569, + "bxs-list-play": 64570, + "bxs-list-plus": 64571, + "bxs-list-square": 64572, + "bxs-list-ul-square": 64573, + "bxs-list-ul": 64574, + "bxs-list-x": 64575, + "bxs-list": 64576, + "bxs-loader-dots": 64577, + "bxs-loader-lines-alt": 64578, + "bxs-loader-lines": 64579, + "bxs-location-alt-2": 64580, + "bxs-location-alt": 64581, + "bxs-location-blank": 64582, + "bxs-location-check": 64583, + "bxs-location-pin": 64584, + "bxs-location-plus": 64585, + "bxs-location-x": 64586, + "bxs-location": 64587, + "bxs-lock-keyhole-open-alt": 64588, + "bxs-lock-keyhole-open": 64589, + "bxs-lock-keyhole": 64590, + "bxs-lock-open-alt": 64591, + "bxs-lock-open": 64592, + "bxs-lock": 64593, + "bxs-lotion": 64594, + "bxs-low-vision": 64595, + "bxs-lowercase": 64596, + "bxs-luggage": 64597, + "bxs-lungs": 64598, + "bxs-magic-wand": 64599, + "bxs-magnet": 64600, + "bxs-mail-open": 64601, + "bxs-male": 64602, + "bxs-man-woman": 64603, + "bxs-man": 64604, + "bxs-map": 64605, + "bxs-margin-bottom": 64606, + "bxs-margin-left": 64607, + "bxs-margin-right": 64608, + "bxs-margin-top": 64609, + "bxs-martini": 64610, + "bxs-mask": 64611, + "bxs-math-alt": 64612, + "bxs-math": 64613, + "bxs-maximize": 64614, + "bxs-meat": 64615, + "bxs-medal-alt-2": 64616, + "bxs-medal-alt": 64617, + "bxs-medal-star-alt-2": 64618, + "bxs-medal-star-alt": 64619, + "bxs-medal-star": 64620, + "bxs-medal": 64621, + "bxs-medical-flask": 64622, + "bxs-medical-kit": 64623, + "bxs-megaphone-alt": 64624, + "bxs-megaphone": 64625, + "bxs-meh-alt": 64626, + "bxs-meh-blank": 64627, + "bxs-meh": 64628, + "bxs-menorah": 64629, + "bxs-menu-close": 64630, + "bxs-menu-closer": 64631, + "bxs-menu-filter": 64632, + "bxs-menu-left": 64633, + "bxs-menu-notification": 64634, + "bxs-menu-right": 64635, + "bxs-menu-search": 64636, + "bxs-menu-select": 64637, + "bxs-menu-wide": 64638, + "bxs-menu-wider": 64639, + "bxs-menu": 64640, + "bxs-merge": 64641, + "bxs-mesh": 64642, + "bxs-message-bubble-captions": 64643, + "bxs-message-bubble-check": 64644, + "bxs-message-bubble-code": 64645, + "bxs-message-bubble-detail": 64646, + "bxs-message-bubble-dots-2": 64647, + "bxs-message-bubble-dots": 64648, + "bxs-message-bubble-edit": 64649, + "bxs-message-bubble-exclamation": 64650, + "bxs-message-bubble-heart": 64651, + "bxs-message-bubble-image": 64652, + "bxs-message-bubble-minus": 64653, + "bxs-message-bubble-notification": 64654, + "bxs-message-bubble-plus": 64655, + "bxs-message-bubble-question-mark": 64656, + "bxs-message-bubble-reply": 64657, + "bxs-message-bubble-star": 64658, + "bxs-message-bubble-x": 64659, + "bxs-message-bubble": 64660, + "bxs-message-captions": 64661, + "bxs-message-check": 64662, + "bxs-message-circle-captions": 64663, + "bxs-message-circle-check": 64664, + "bxs-message-circle-code": 64665, + "bxs-message-circle-detail": 64666, + "bxs-message-circle-dots-2": 64667, + "bxs-message-circle-dots": 64668, + "bxs-message-circle-edit": 64669, + "bxs-message-circle-exclamation": 64670, + "bxs-message-circle-heart": 64671, + "bxs-message-circle-image": 64672, + "bxs-message-circle-minus": 64673, + "bxs-message-circle-notification": 64674, + "bxs-message-circle-plus": 64675, + "bxs-message-circle-question-mark": 64676, + "bxs-message-circle-reply": 64677, + "bxs-message-circle-star": 64678, + "bxs-message-circle-x": 64679, + "bxs-message-circle": 64680, + "bxs-message-code": 64681, + "bxs-message-detail": 64682, + "bxs-message-dots-2": 64683, + "bxs-message-dots": 64684, + "bxs-message-edit": 64685, + "bxs-message-exclamation": 64686, + "bxs-message-heart": 64687, + "bxs-message-image": 64688, + "bxs-message-minus": 64689, + "bxs-message-notification": 64690, + "bxs-message-plus": 64691, + "bxs-message-question-mark": 64692, + "bxs-message-reply": 64693, + "bxs-message-star": 64694, + "bxs-message-x": 64695, + "bxs-message": 64696, + "bxs-meteor": 64697, + "bxs-microchip": 64698, + "bxs-microphone-alt-2": 64699, + "bxs-microphone-alt": 64700, + "bxs-microphone-big-alt": 64701, + "bxs-microphone-big": 64702, + "bxs-microphone-slash": 64703, + "bxs-microphone": 64704, + "bxs-microscope": 64705, + "bxs-microwave-oven": 64706, + "bxs-milk-bottle": 64707, + "bxs-minimize": 64708, + "bxs-minus-circle": 64709, + "bxs-minus-plus": 64710, + "bxs-minus-shield": 64711, + "bxs-minus-square": 64712, + "bxs-minus": 64713, + "bxs-mobile-alt-2": 64714, + "bxs-mobile-alt": 64715, + "bxs-mobile-back-alt-2": 64716, + "bxs-mobile-back-alt": 64717, + "bxs-mobile-back": 64718, + "bxs-mobile-ring": 64719, + "bxs-mobile": 64720, + "bxs-monitor-wallpaper": 64721, + "bxs-monitor-wide": 64722, + "bxs-monitor": 64723, + "bxs-moon-crater": 64724, + "bxs-moon-phase-0": 64725, + "bxs-moon-phase-1": 64726, + "bxs-moon-phase-2": 64727, + "bxs-moon-phase-3": 64728, + "bxs-moon-phase-4": 64729, + "bxs-moon-phase-5": 64730, + "bxs-moon-phase-6": 64731, + "bxs-moon-star": 64732, + "bxs-moon": 64733, + "bxs-mosque": 64734, + "bxs-motion-alt": 64735, + "bxs-motion": 64736, + "bxs-motorcycle": 64737, + "bxs-mountain-peak": 64738, + "bxs-mountain-view": 64739, + "bxs-mountain": 64740, + "bxs-mouse-alt": 64741, + "bxs-mouse": 64742, + "bxs-move-diagonal-left": 64743, + "bxs-move-diagonal-right": 64744, + "bxs-move-horizontal": 64745, + "bxs-move-vertical": 64746, + "bxs-move": 64747, + "bxs-movie-play": 64748, + "bxs-movie": 64749, + "bxs-music-alt-2": 64750, + "bxs-music-alt": 64751, + "bxs-music-library": 64752, + "bxs-music": 64753, + "bxs-network-chart": 64754, + "bxs-network-device": 64755, + "bxs-news": 64756, + "bxs-newspaper": 64757, + "bxs-night-light": 64758, + "bxs-no-entry": 64759, + "bxs-noise": 64760, + "bxs-not-element-of": 64761, + "bxs-not-equal": 64762, + "bxs-not-subset": 64763, + "bxs-not-superset": 64764, + "bxs-note-book": 64765, + "bxs-note": 64766, + "bxs-notification-slash": 64767, + "bxs-notification": 64768, + "bxs-nut": 64769, + "bxs-octopus": 64770, + "bxs-omega": 64771, + "bxs-option": 64772, + "bxs-outdoor-dining": 64773, + "bxs-outer-shadow": 64774, + "bxs-oval-vertical": 64775, + "bxs-oval": 64776, + "bxs-oven": 64777, + "bxs-owl": 64778, + "bxs-pacifism": 64779, + "bxs-package": 64780, + "bxs-pacman": 64781, + "bxs-paint-alt": 64782, + "bxs-paint-roll": 64783, + "bxs-paint": 64784, + "bxs-palette": 64785, + "bxs-pant": 64786, + "bxs-paper-plane": 64787, + "bxs-paperclip": 64788, + "bxs-paragraph-spacing": 64789, + "bxs-paragraph": 64790, + "bxs-parallel": 64791, + "bxs-parent-child": 64792, + "bxs-party": 64793, + "bxs-paste": 64794, + "bxs-path": 64795, + "bxs-pause-circle": 64796, + "bxs-pause": 64797, + "bxs-paw-print": 64798, + "bxs-pear": 64799, + "bxs-pen-alt": 64800, + "bxs-pen-draw": 64801, + "bxs-pen-edit-circle": 64802, + "bxs-pen-minus": 64803, + "bxs-pen-plus": 64804, + "bxs-pen": 64805, + "bxs-pencil-circle": 64806, + "bxs-pencil-draw": 64807, + "bxs-pencil-edit-circle": 64808, + "bxs-pencil-sparkles": 64809, + "bxs-pencil-square": 64810, + "bxs-pencil": 64811, + "bxs-pentagon": 64812, + "bxs-people-diversity": 64813, + "bxs-people-handshake": 64814, + "bxs-people-heart": 64815, + "bxs-percentage": 64816, + "bxs-perpendicular": 64817, + "bxs-perspective": 64818, + "bxs-petrol-pump": 64819, + "bxs-pharmacy": 64820, + "bxs-phone-book": 64821, + "bxs-phone-forwarding": 64822, + "bxs-phone-incoming": 64823, + "bxs-phone-outgoing": 64824, + "bxs-phone-plus": 64825, + "bxs-phone-ring": 64826, + "bxs-phone-x": 64827, + "bxs-phone": 64828, + "bxs-photo-album": 64829, + "bxs-pi": 64830, + "bxs-piano-alt": 64831, + "bxs-piano-grand": 64832, + "bxs-piano": 64833, + "bxs-pickup-truck": 64834, + "bxs-picture-in-picture-close": 64835, + "bxs-picture-in-picture": 64836, + "bxs-pie-chart-alt-2": 64837, + "bxs-pie-chart-alt": 64838, + "bxs-pie-chart": 64839, + "bxs-piggy-bank": 64840, + "bxs-pill-bottle-alt": 64841, + "bxs-pill-bottle": 64842, + "bxs-pill": 64843, + "bxs-pin-alt": 64844, + "bxs-pin-slash-alt": 64845, + "bxs-pin": 64846, + "bxs-pizza-alt": 64847, + "bxs-pizza": 64848, + "bxs-plane-alt": 64849, + "bxs-plane-land": 64850, + "bxs-plane-take-off": 64851, + "bxs-plane": 64852, + "bxs-planet": 64853, + "bxs-plant-pot": 64854, + "bxs-play-circle-alt": 64855, + "bxs-play-circle": 64856, + "bxs-play": 64857, + "bxs-plug-connect": 64858, + "bxs-plus-big": 64859, + "bxs-plus-circle": 64860, + "bxs-plus-minus": 64861, + "bxs-plus-shield": 64862, + "bxs-plus-square": 64863, + "bxs-plus": 64864, + "bxs-podcast": 64865, + "bxs-polar-chart": 64866, + "bxs-poll": 64867, + "bxs-polygon": 64868, + "bxs-popsicle": 64869, + "bxs-pound": 64870, + "bxs-power": 64871, + "bxs-prawn": 64872, + "bxs-price-tag-alt": 64873, + "bxs-price-tag": 64874, + "bxs-print-dollar": 64875, + "bxs-printer": 64876, + "bxs-proper-subset": 64877, + "bxs-proper-superset": 64878, + "bxs-psychology": 64879, + "bxs-puck": 64880, + "bxs-pulse": 64881, + "bxs-pyramid": 64882, + "bxs-qr-scan": 64883, + "bxs-qr": 64884, + "bxs-queue": 64885, + "bxs-quote-left-alt": 64886, + "bxs-quote-left": 64887, + "bxs-quote-right-alt": 64888, + "bxs-quote-right": 64889, + "bxs-quote-single-left": 64890, + "bxs-quote-single-right": 64891, + "bxs-radar": 64892, + "bxs-radiation": 64893, + "bxs-radio-circle-marked": 64894, + "bxs-radio-circle": 64895, + "bxs-radio": 64896, + "bxs-rainbow": 64897, + "bxs-reading-glass": 64898, + "bxs-reading": 64899, + "bxs-receipt": 64900, + "bxs-rectangle-vertical": 64901, + "bxs-rectangle-wide": 64902, + "bxs-rectangle": 64903, + "bxs-recycle": 64904, + "bxs-redo-alt": 64905, + "bxs-redo-stroke-alt": 64906, + "bxs-redo-stroke": 64907, + "bxs-redo": 64908, + "bxs-reflect-horizontal-alt": 64909, + "bxs-reflect-horizontal": 64910, + "bxs-reflect-vertical-alt": 64911, + "bxs-reflect-vertical": 64912, + "bxs-refresh-ccw-alt-dot": 64913, + "bxs-refresh-ccw-alt": 64914, + "bxs-refresh-ccw-dot": 64915, + "bxs-refresh-ccw": 64916, + "bxs-refresh-cw-alt-dot": 64917, + "bxs-refresh-cw-alt": 64918, + "bxs-refresh-cw-dot": 64919, + "bxs-refresh-cw": 64920, + "bxs-registered": 64921, + "bxs-rename": 64922, + "bxs-repeat-alt-2": 64923, + "bxs-repeat-alt": 64924, + "bxs-repeat": 64925, + "bxs-reply-big": 64926, + "bxs-reply-stroke": 64927, + "bxs-reply": 64928, + "bxs-report": 64929, + "bxs-rewind-circle": 64930, + "bxs-rewind": 64931, + "bxs-rfid": 64932, + "bxs-rgb": 64933, + "bxs-right-angle-triangle-half": 64934, + "bxs-right-angle-triangle": 64935, + "bxs-right-indent": 64936, + "bxs-robot": 64937, + "bxs-rocket-alt": 64938, + "bxs-rocket": 64939, + "bxs-rotate-ccw-10": 64940, + "bxs-rotate-ccw-30": 64941, + "bxs-rotate-ccw-5": 64942, + "bxs-rotate-ccw-dot": 64943, + "bxs-rotate-ccw": 64944, + "bxs-rotate-cw-10": 64945, + "bxs-rotate-cw-30": 64946, + "bxs-rotate-cw-5": 64947, + "bxs-rotate-cw-dot": 64948, + "bxs-rotate-cw": 64949, + "bxs-rotate-square-ccw": 64950, + "bxs-rotate-square-cw": 64951, + "bxs-route": 64952, + "bxs-row-resize": 64953, + "bxs-rows-3": 64954, + "bxs-rows-4": 64955, + "bxs-rows": 64956, + "bxs-rss": 64957, + "bxs-ruble": 64958, + "bxs-rugby-ball": 64959, + "bxs-ruler": 64960, + "bxs-running": 64961, + "bxs-rupee": 64962, + "bxs-sad": 64963, + "bxs-safe": 64964, + "bxs-sail": 64965, + "bxs-sandwich": 64966, + "bxs-sapling": 64967, + "bxs-save": 64968, + "bxs-scale": 64969, + "bxs-scan-ar": 64970, + "bxs-scan-barcode": 64971, + "bxs-scan-detail": 64972, + "bxs-scan-face": 64973, + "bxs-scan-search": 64974, + "bxs-scan": 64975, + "bxs-school-bus": 64976, + "bxs-school": 64977, + "bxs-science": 64978, + "bxs-scooter-delivery": 64979, + "bxs-scooter": 64980, + "bxs-screen-light": 64981, + "bxs-screenshot": 64982, + "bxs-scribble": 64983, + "bxs-scroll": 64984, + "bxs-sd-card": 64985, + "bxs-sea-view": 64986, + "bxs-seal-check": 64987, + "bxs-seal": 64988, + "bxs-search-alt": 64989, + "bxs-search-big-code": 64990, + "bxs-search-big-minus": 64991, + "bxs-search-big-plus": 64992, + "bxs-search-big-x": 64993, + "bxs-search-big": 64994, + "bxs-search-code": 64995, + "bxs-search-minus": 64996, + "bxs-search-plus": 64997, + "bxs-search-x": 64998, + "bxs-search": 64999, + "bxs-select-all": 65000, + "bxs-select-many": 65001, + "bxs-select-none": 65002, + "bxs-select": 65003, + "bxs-self-care": 65004, + "bxs-send-alt-2": 65005, + "bxs-send-alt": 65006, + "bxs-send": 65007, + "bxs-server": 65008, + "bxs-set-intersection": 65009, + "bxs-set-union": 65010, + "bxs-shadows": 65011, + "bxs-shape-exclude-alt": 65012, + "bxs-shape-exclude": 65013, + "bxs-shape-intersect-alt": 65014, + "bxs-shape-intersect": 65015, + "bxs-shape-outline-alt": 65016, + "bxs-shape-outline": 65017, + "bxs-shape-rotate-ccw": 65018, + "bxs-shape-rotate-cw": 65019, + "bxs-shape-subtract-alt": 65020, + "bxs-shape-subtract": 65021, + "bxs-shape-trim-alt": 65022, + "bxs-shape-trim": 65023, + "bxs-shape-unite-alt": 65040, + "bxs-shape-unite": 65041, + "bxs-shapes-alt-2": 65042, + "bxs-shapes-alt": 65043, + "bxs-shapes": 65044, + "bxs-share": 65045, + "bxs-shekel": 65046, + "bxs-shield-alt-2": 65047, + "bxs-shield-alt": 65048, + "bxs-shield-circle": 65049, + "bxs-shield-half": 65050, + "bxs-shield-quarter": 65051, + "bxs-shield": 65052, + "bxs-shinto": 65053, + "bxs-ship": 65054, + "bxs-shocked": 65055, + "bxs-shopping-bag-alt": 65072, + "bxs-shopping-bag": 65073, + "bxs-shower": 65074, + "bxs-shrink-left": 65075, + "bxs-shrink-right": 65076, + "bxs-shuffle": 65077, + "bxs-shutter-alt": 65078, + "bxs-shutter": 65079, + "bxs-shuttlecock": 65080, + "bxs-sidebar-right": 65081, + "bxs-sidebar": 65082, + "bxs-sigma": 65083, + "bxs-signal-1": 65084, + "bxs-signal-2": 65085, + "bxs-signal-3": 65086, + "bxs-signal-4": 65087, + "bxs-signal-5": 65088, + "bxs-signal-slash": 65089, + "bxs-signature": 65090, + "bxs-sikhism": 65091, + "bxs-sine-wave": 65092, + "bxs-siren-alt": 65093, + "bxs-siren": 65094, + "bxs-sitemap": 65095, + "bxs-size-distort": 65096, + "bxs-size-freeform": 65097, + "bxs-size-uniform": 65098, + "bxs-size-warp": 65099, + "bxs-skateboard": 65100, + "bxs-skip-next-circle": 65101, + "bxs-skip-next": 65102, + "bxs-skip-previous-circle": 65103, + "bxs-skip-previous": 65104, + "bxs-skirt": 65105, + "bxs-skull": 65106, + "bxs-sleepy": 65107, + "bxs-slice": 65108, + "bxs-slider-alt": 65109, + "bxs-slider-vertical-alt": 65110, + "bxs-slider-vertical": 65111, + "bxs-slider": 65112, + "bxs-slideshow": 65113, + "bxs-smile": 65114, + "bxs-smoke-alarm-alt-2": 65115, + "bxs-smoke-alarm-alt": 65116, + "bxs-smoke-alarm": 65117, + "bxs-sneaker": 65118, + "bxs-snowflake": 65119, + "bxs-sock": 65120, + "bxs-solar-panel": 65121, + "bxs-spa": 65122, + "bxs-spacebar": 65123, + "bxs-spade": 65124, + "bxs-spanner": 65125, + "bxs-sparkle-circle": 65126, + "bxs-sparkle-square": 65127, + "bxs-sparkle": 65128, + "bxs-sparkles-alt": 65129, + "bxs-sparkles": 65130, + "bxs-speaker": 65131, + "bxs-sphere": 65132, + "bxs-split": 65133, + "bxs-spoon": 65134, + "bxs-spray-can": 65135, + "bxs-square-dashed-half": 65136, + "bxs-square-dashed": 65137, + "bxs-square-root": 65138, + "bxs-square-rounded": 65139, + "bxs-square-small": 65140, + "bxs-square": 65141, + "bxs-squircle": 65142, + "bxs-stadium": 65143, + "bxs-stamp": 65144, + "bxs-star-circle": 65145, + "bxs-star-half": 65146, + "bxs-star-square": 65147, + "bxs-star": 65148, + "bxs-station": 65149, + "bxs-steering-wheel": 65150, + "bxs-steps-down": 65151, + "bxs-steps-up": 65152, + "bxs-sticker": 65153, + "bxs-stop-circle": 65154, + "bxs-stop": 65155, + "bxs-stopwatch": 65156, + "bxs-store-alt-2": 65157, + "bxs-store-alt": 65158, + "bxs-store": 65159, + "bxs-strategy": 65160, + "bxs-street-view": 65161, + "bxs-strikethrough": 65162, + "bxs-stroke-drawing": 65163, + "bxs-stroke-freehand": 65164, + "bxs-stroke-ink": 65165, + "bxs-stroke-pen": 65166, + "bxs-subscript": 65167, + "bxs-subset": 65168, + "bxs-subway": 65169, + "bxs-sun-bright": 65170, + "bxs-sun-dim": 65171, + "bxs-sun-drizzle": 65172, + "bxs-sun-fog": 65173, + "bxs-sun-rain-wind": 65174, + "bxs-sun-rain": 65175, + "bxs-sun-rise": 65176, + "bxs-sun-set": 65177, + "bxs-sun-snow": 65178, + "bxs-sun": 65179, + "bxs-superscript": 65180, + "bxs-superset": 65181, + "bxs-surfboard": 65182, + "bxs-sushi": 65183, + "bxs-swap-diagonal": 65184, + "bxs-swap-horizontal": 65185, + "bxs-swap-vertical": 65186, + "bxs-swatch": 65187, + "bxs-swimming-pool": 65188, + "bxs-swimming": 65189, + "bxs-sword-alt": 65190, + "bxs-sword": 65191, + "bxs-syringe": 65192, + "bxs-t-shirt": 65193, + "bxs-tab": 65194, + "bxs-table-cells-large": 65195, + "bxs-table-cells": 65196, + "bxs-table-columns-merge": 65197, + "bxs-table-columns-split": 65198, + "bxs-table-columns": 65199, + "bxs-table-layout": 65200, + "bxs-table-list": 65201, + "bxs-table-rows-merge": 65202, + "bxs-table-rows-split": 65203, + "bxs-table-rows": 65204, + "bxs-table-tennis": 65205, + "bxs-table": 65206, + "bxs-tablet": 65207, + "bxs-tabs": 65208, + "bxs-tachometer-alt": 65209, + "bxs-tachometer": 65210, + "bxs-taco": 65211, + "bxs-tag-alt": 65212, + "bxs-tag-x": 65213, + "bxs-tag": 65214, + "bxs-takeaway": 65215, + "bxs-target": 65216, + "bxs-taxi": 65217, + "bxs-temple": 65218, + "bxs-tennis-ball-alt": 65219, + "bxs-tennis-ball": 65220, + "bxs-tennis": 65221, + "bxs-tent": 65222, + "bxs-terminal": 65223, + "bxs-test-tube": 65224, + "bxs-text-height": 65225, + "bxs-text-underline": 65226, + "bxs-text-width": 65227, + "bxs-texture": 65228, + "bxs-thermometer": 65229, + "bxs-thought-bubble": 65230, + "bxs-thread-roll": 65231, + "bxs-thumb-down": 65232, + "bxs-thumb-up": 65233, + "bxs-thunder": 65234, + "bxs-ticket-star": 65235, + "bxs-ticket": 65236, + "bxs-tickets": 65237, + "bxs-timer": 65238, + "bxs-tiny-home": 65239, + "bxs-tired": 65240, + "bxs-toggle-big-left": 65241, + "bxs-toggle-big-right": 65242, + "bxs-toggle-left": 65243, + "bxs-toggle-right": 65244, + "bxs-toggles": 65245, + "bxs-toilet-roll": 65246, + "bxs-tooth": 65247, + "bxs-torch": 65248, + "bxs-tornado": 65249, + "bxs-torus": 65250, + "bxs-towel": 65251, + "bxs-toy-car": 65252, + "bxs-traffic-barrier": 65253, + "bxs-traffic-cone": 65254, + "bxs-train": 65255, + "bxs-tram": 65256, + "bxs-transgender": 65257, + "bxs-translate": 65258, + "bxs-transparency": 65259, + "bxs-trash-alt": 65260, + "bxs-trash-x": 65261, + "bxs-trash": 65262, + "bxs-treasure-chest": 65263, + "bxs-tree-alt": 65264, + "bxs-tree": 65265, + "bxs-trees": 65266, + "bxs-trending-down": 65267, + "bxs-trending-up": 65268, + "bxs-triangle-half": 65269, + "bxs-triangle": 65270, + "bxs-trip": 65271, + "bxs-trophy-star": 65272, + "bxs-trophy": 65273, + "bxs-truck": 65274, + "bxs-turkey-meat": 65275, + "bxs-turn-down": 65276, + "bxs-turn-left": 65277, + "bxs-turn-right": 65278, + "bxs-turn-up": 65280, + "bxs-tv-alt": 65281, + "bxs-tv": 65282, + "bxs-ufo": 65283, + "bxs-umbrella-alt": 65284, + "bxs-umbrella": 65285, + "bxs-underline-dashed": 65286, + "bxs-underline-dotted": 65287, + "bxs-underline-wavy": 65288, + "bxs-underline": 65289, + "bxs-undershirt": 65290, + "bxs-undo-alt": 65291, + "bxs-undo-stroke-alt": 65292, + "bxs-undo-stroke": 65293, + "bxs-undo": 65294, + "bxs-universal-access": 65295, + "bxs-unlink-alt": 65296, + "bxs-unlink": 65297, + "bxs-uppercase": 65298, + "bxs-upside-down": 65299, + "bxs-usb": 65300, + "bxs-user-check": 65301, + "bxs-user-circle": 65302, + "bxs-user-hexagon": 65303, + "bxs-user-id-card": 65304, + "bxs-user-minus": 65305, + "bxs-user-plus": 65306, + "bxs-user-search": 65307, + "bxs-user-square": 65308, + "bxs-user-voice": 65309, + "bxs-user-x": 65310, + "bxs-user": 65311, + "bxs-van": 65312, + "bxs-variable": 65313, + "bxs-vector-square": 65314, + "bxs-vector-triangle": 65315, + "bxs-vector": 65316, + "bxs-vertical-align-bottom": 65317, + "bxs-vertical-align-center": 65318, + "bxs-vertical-align-top": 65319, + "bxs-vertical-bottom": 65320, + "bxs-vertical-center": 65321, + "bxs-vertical-distribute-bottom": 65322, + "bxs-vertical-distribute-center": 65323, + "bxs-vertical-distribute-top": 65324, + "bxs-vertical-spacing": 65325, + "bxs-vertical-top": 65326, + "bxs-vial-alt": 65327, + "bxs-vial": 65328, + "bxs-video-cinema": 65329, + "bxs-video-plus": 65330, + "bxs-video-slash": 65331, + "bxs-video": 65332, + "bxs-vignette": 65333, + "bxs-virus-slash": 65334, + "bxs-virus": 65335, + "bxs-voicemail": 65336, + "bxs-volleyball": 65337, + "bxs-volume-full": 65338, + "bxs-volume-low": 65339, + "bxs-volume-mute": 65340, + "bxs-volume": 65341, + "bxs-vr-goggles": 65342, + "bxs-vr-headset": 65343, + "bxs-waffle": 65344, + "bxs-walking": 65345, + "bxs-wall": 65346, + "bxs-wallet-alt": 65347, + "bxs-wallet-cards": 65348, + "bxs-wallet-note": 65349, + "bxs-wallet": 65350, + "bxs-warehouse": 65351, + "bxs-washer": 65352, + "bxs-water-drop-alt": 65353, + "bxs-water-drop-half": 65354, + "bxs-water-drop": 65355, + "bxs-water-spray": 65356, + "bxs-water": 65357, + "bxs-watermelon": 65358, + "bxs-waveform": 65359, + "bxs-webcam": 65360, + "bxs-webhook": 65361, + "bxs-whiteboard-alt": 65362, + "bxs-whiteboard": 65363, + "bxs-widget-horizontal": 65364, + "bxs-widget-small": 65365, + "bxs-widget-vertical": 65366, + "bxs-widget": 65367, + "bxs-wifi-0": 65368, + "bxs-wifi-1": 65369, + "bxs-wifi-2": 65370, + "bxs-wifi-slash": 65371, + "bxs-wifi": 65372, + "bxs-wind": 65373, + "bxs-window-arrow-in": 65374, + "bxs-window-arrow-out": 65375, + "bxs-window-mac-alt": 65376, + "bxs-window-mac": 65377, + "bxs-window": 65378, + "bxs-windows": 65379, + "bxs-wine-alt": 65380, + "bxs-wine": 65381, + "bxs-wink-smile": 65382, + "bxs-wink-tongue": 65383, + "bxs-woman": 65384, + "bxs-won": 65385, + "bxs-wrist-watch-alt": 65386, + "bxs-wrist-watch-round-alt": 65387, + "bxs-wrist-watch-round": 65388, + "bxs-wrist-watch": 65389, + "bxs-x-circle": 65390, + "bxs-x-shield": 65391, + "bxs-x-square": 65392, + "bxs-x": 65393, + "bxs-yarn-ball": 65394, + "bxs-yen": 65395, + "bxs-yin-yang": 65396 +} \ No newline at end of file diff --git a/apps/icon-pack-builder/boxicons-free/fonts/basic/boxicons.min.css b/apps/icon-pack-builder/boxicons-free/fonts/basic/boxicons.min.css new file mode 100644 index 000000000..8b2556ecc --- /dev/null +++ b/apps/icon-pack-builder/boxicons-free/fonts/basic/boxicons.min.css @@ -0,0 +1 @@ +@font-face{font-family:boxicons;src:url(./boxicons.ttf?c0b9bc9bd7f598c1f9eaacfb4f0974f8) format("truetype"),url(./boxicons.woff?c0b9bc9bd7f598c1f9eaacfb4f0974f8) format("woff"),url(./boxicons.woff2?c0b9bc9bd7f598c1f9eaacfb4f0974f8) format("woff2");font-weight:400}.bx,[class*=" bx"],[class^=bx]{font-family:boxicons!important;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;display:inline-block;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.variable-selector-00:before{content:"\fb1e"}.variable-selector-01:before{content:"\fe00"}.variable-selector-02:before{content:"\fe01"}.variable-selector-03:before{content:"\fe02"}.variable-selector-04:before{content:"\fe03"}.variable-selector-05:before{content:"\fe04"}.variable-selector-06:before{content:"\fe05"}.variable-selector-07:before{content:"\fe06"}.variable-selector-08:before{content:"\fe07"}.variable-selector-09:before{content:"\fe08"}.variable-selector-10:before{content:"\fe09"}.variable-selector-11:before{content:"\fe0a"}.variable-selector-12:before{content:"\fe0b"}.variable-selector-13:before{content:"\fe0c"}.variable-selector-14:before{content:"\fe0d"}.variable-selector-15:before{content:"\fe0e"}.variable-selector-16:before{content:"\fe0f"}.variable-selector-017:before{content:"\fe20"}.variable-selector-018:before{content:"\fe21"}.variable-selector-019:before{content:"\fe22"}.variable-selector-020:before{content:"\fe23"}.variable-selector-021:before{content:"\fe24"}.variable-selector-022:before{content:"\fe25"}.variable-selector-023:before{content:"\fe26"}.variable-selector-024:before{content:"\fe27"}.variable-selector-025:before{content:"\fe28"}.variable-selector-026:before{content:"\fe29"}.variable-selector-027:before{content:"\fe2a"}.variable-selector-028:before{content:"\fe2b"}.variable-selector-029:before{content:"\fe2c"}.variable-selector-030:before{content:"\fe2d"}.variable-selector-031:before{content:"\fe2e"}.variable-selector-032:before{content:"\fe2f"}.variable-selector-033:before{content:"\feff"}.bx-8-ball:before{content:"\f101"}.bx-a-arrow-down:before{content:"\f102"}.bx-a-arrow-up:before{content:"\f103"}.bx-accessibility:before{content:"\f104"}.bx-acorn:before{content:"\f105"}.bx-address-book:before{content:"\f106"}.bx-air-conditioner:before{content:"\f107"}.bx-air:before{content:"\f108"}.bx-airplay:before{content:"\f109"}.bx-alarm-alt:before{content:"\f10a"}.bx-alarm-check:before{content:"\f10b"}.bx-alarm-exclamation:before{content:"\f10c"}.bx-alarm-minus:before{content:"\f10d"}.bx-alarm-plus:before{content:"\f10e"}.bx-alarm-slash:before{content:"\f10f"}.bx-alarm-z:before{content:"\f110"}.bx-alarm:before{content:"\f111"}.bx-album-covers:before{content:"\f112"}.bx-alert-circle:before{content:"\f113"}.bx-alert-octagon:before{content:"\f114"}.bx-alert-shield:before{content:"\f115"}.bx-alert-square:before{content:"\f116"}.bx-alert-triangle:before{content:"\f117"}.bx-alien:before{content:"\f118"}.bx-align-center:before{content:"\f119"}.bx-align-horizontal-justify-center:before{content:"\f11a"}.bx-align-horizontal-justify-end:before{content:"\f11b"}.bx-align-horizontal-justify-start:before{content:"\f11c"}.bx-align-horizontal-space-between:before{content:"\f11d"}.bx-align-justify:before{content:"\f11e"}.bx-align-left:before{content:"\f11f"}.bx-align-right:before{content:"\f120"}.bx-align-vertical-justify-center:before{content:"\f121"}.bx-align-vertical-justify-end:before{content:"\f122"}.bx-align-vertical-justify-start:before{content:"\f123"}.bx-align-vertical-space-between:before{content:"\f124"}.bx-ambulance:before{content:"\f125"}.bx-ampersand:before{content:"\f126"}.bx-analyze:before{content:"\f127"}.bx-anchor:before{content:"\f128"}.bx-angle:before{content:"\f129"}.bx-angry:before{content:"\f12a"}.bx-animation-bounce:before{content:"\f12b"}.bx-apartment:before{content:"\f12c"}.bx-approximate:before{content:"\f12d"}.bx-apps-alt:before{content:"\f12e"}.bx-apps:before{content:"\f12f"}.bx-arch:before{content:"\f130"}.bx-archive-alt:before{content:"\f131"}.bx-archive-arrow-down:before{content:"\f132"}.bx-archive-arrow-up:before{content:"\f133"}.bx-archive:before{content:"\f134"}.bx-area:before{content:"\f135"}.bx-arrow-big-down-line:before{content:"\f136"}.bx-arrow-big-down:before{content:"\f137"}.bx-arrow-big-left-line:before{content:"\f138"}.bx-arrow-big-left:before{content:"\f139"}.bx-arrow-big-right-line:before{content:"\f13a"}.bx-arrow-big-right:before{content:"\f13b"}.bx-arrow-big-up-line:before{content:"\f13c"}.bx-arrow-big-up:before{content:"\f13d"}.bx-arrow-cross:before{content:"\f13e"}.bx-arrow-down-a-z:before{content:"\f13f"}.bx-arrow-down-circle:before{content:"\f140"}.bx-arrow-down-left-circle:before{content:"\f141"}.bx-arrow-down-left-square:before{content:"\f142"}.bx-arrow-down-left-stroke-circle:before{content:"\f143"}.bx-arrow-down-left-stroke-square:before{content:"\f144"}.bx-arrow-down-left-stroke:before{content:"\f145"}.bx-arrow-down-left:before{content:"\f146"}.bx-arrow-down-narrow-wide:before{content:"\f147"}.bx-arrow-down-right-circle:before{content:"\f148"}.bx-arrow-down-right-square:before{content:"\f149"}.bx-arrow-down-right-stroke-circle:before{content:"\f14a"}.bx-arrow-down-right-stroke-square:before{content:"\f14b"}.bx-arrow-down-right-stroke:before{content:"\f14c"}.bx-arrow-down-right:before{content:"\f14d"}.bx-arrow-down-square:before{content:"\f14e"}.bx-arrow-down-stroke-circle:before{content:"\f14f"}.bx-arrow-down-stroke-square:before{content:"\f150"}.bx-arrow-down-stroke:before{content:"\f151"}.bx-arrow-down-up:before{content:"\f152"}.bx-arrow-down-wide-narrow:before{content:"\f153"}.bx-arrow-down:before{content:"\f154"}.bx-arrow-from-bottom-stroke:before{content:"\f155"}.bx-arrow-from-bottom:before{content:"\f156"}.bx-arrow-from-left-stroke:before{content:"\f157"}.bx-arrow-from-left:before{content:"\f158"}.bx-arrow-from-right-stroke:before{content:"\f159"}.bx-arrow-from-right:before{content:"\f15a"}.bx-arrow-from-top-stroke:before{content:"\f15b"}.bx-arrow-from-top:before{content:"\f15c"}.bx-arrow-in-down-circle-half:before{content:"\f15d"}.bx-arrow-in-down-left-circle:before{content:"\f15e"}.bx-arrow-in-down-left-square:before{content:"\f15f"}.bx-arrow-in-down-left-stroke-circle:before{content:"\f160"}.bx-arrow-in-down-left-stroke-square:before{content:"\f161"}.bx-arrow-in-down-right-circle:before{content:"\f162"}.bx-arrow-in-down-right-square:before{content:"\f163"}.bx-arrow-in-down-right-stroke-circle:before{content:"\f164"}.bx-arrow-in-down-right-stroke-square:before{content:"\f165"}.bx-arrow-in-down-square-half:before{content:"\f166"}.bx-arrow-in-down-stroke-circle-half:before{content:"\f167"}.bx-arrow-in-left-circle-half:before{content:"\f168"}.bx-arrow-in-left-square-half:before{content:"\f169"}.bx-arrow-in-left-stroke-circle-half:before{content:"\f16a"}.bx-arrow-in-right-circle-half:before{content:"\f16b"}.bx-arrow-in-right-square-half:before{content:"\f16c"}.bx-arrow-in-right-stroke-circle-half:before{content:"\f16d"}.bx-arrow-in-up-circle-half:before{content:"\f16e"}.bx-arrow-in-up-left-circle:before{content:"\f16f"}.bx-arrow-in-up-left-square:before{content:"\f170"}.bx-arrow-in-up-left-stroke-circle:before{content:"\f171"}.bx-arrow-in-up-left-stroke-square:before{content:"\f172"}.bx-arrow-in-up-right-circle:before{content:"\f173"}.bx-arrow-in-up-right-square:before{content:"\f174"}.bx-arrow-in-up-right-stroke-circle:before{content:"\f175"}.bx-arrow-in-up-right-stroke-square:before{content:"\f176"}.bx-arrow-in-up-square-half:before{content:"\f177"}.bx-arrow-in-up-stroke-circle-half:before{content:"\f178"}.bx-arrow-left-circle:before{content:"\f179"}.bx-arrow-left-right:before{content:"\f17a"}.bx-arrow-left-square:before{content:"\f17b"}.bx-arrow-left-stroke-circle:before{content:"\f17c"}.bx-arrow-left-stroke-square:before{content:"\f17d"}.bx-arrow-left-stroke:before{content:"\f17e"}.bx-arrow-left:before{content:"\f17f"}.bx-arrow-out-down-circle-half:before{content:"\f180"}.bx-arrow-out-down-left-circle:before{content:"\f181"}.bx-arrow-out-down-left-square:before{content:"\f182"}.bx-arrow-out-down-left-stroke-circle:before{content:"\f183"}.bx-arrow-out-down-left-stroke-square:before{content:"\f184"}.bx-arrow-out-down-right-circle:before{content:"\f185"}.bx-arrow-out-down-right-square:before{content:"\f186"}.bx-arrow-out-down-right-stroke-circle:before{content:"\f187"}.bx-arrow-out-down-right-stroke-square:before{content:"\f188"}.bx-arrow-out-down-square-half:before{content:"\f189"}.bx-arrow-out-down-stroke-circle-half:before{content:"\f18a"}.bx-arrow-out-left-circle-half:before{content:"\f18b"}.bx-arrow-out-left-square-half:before{content:"\f18c"}.bx-arrow-out-left-stroke-circle-half:before{content:"\f18d"}.bx-arrow-out-right-circle-half:before{content:"\f18e"}.bx-arrow-out-right-square-half:before{content:"\f18f"}.bx-arrow-out-right-stroke-circle-half:before{content:"\f190"}.bx-arrow-out-up-circle-half:before{content:"\f191"}.bx-arrow-out-up-left-circle:before{content:"\f192"}.bx-arrow-out-up-left-square:before{content:"\f193"}.bx-arrow-out-up-left-stroke-circle:before{content:"\f194"}.bx-arrow-out-up-left-stroke-square:before{content:"\f195"}.bx-arrow-out-up-right-circle:before{content:"\f196"}.bx-arrow-out-up-right-square:before{content:"\f197"}.bx-arrow-out-up-right-stroke-circle:before{content:"\f198"}.bx-arrow-out-up-right-stroke-square:before{content:"\f199"}.bx-arrow-out-up-square-half:before{content:"\f19a"}.bx-arrow-out-up-stroke-circle-half:before{content:"\f19b"}.bx-arrow-right-circle:before{content:"\f19c"}.bx-arrow-right-left:before{content:"\f19d"}.bx-arrow-right-square:before{content:"\f19e"}.bx-arrow-right-stroke-circle:before{content:"\f19f"}.bx-arrow-right-stroke-square:before{content:"\f1a0"}.bx-arrow-right-stroke:before{content:"\f1a1"}.bx-arrow-right:before{content:"\f1a2"}.bx-arrow-s-down:before{content:"\f1a3"}.bx-arrow-s-left:before{content:"\f1a4"}.bx-arrow-s-right:before{content:"\f1a5"}.bx-arrow-s-up:before{content:"\f1a6"}.bx-arrow-to-bottom-stroke:before{content:"\f1a7"}.bx-arrow-to-bottom:before{content:"\f1a8"}.bx-arrow-to-left-stroke:before{content:"\f1a9"}.bx-arrow-to-left:before{content:"\f1aa"}.bx-arrow-to-right-stroke:before{content:"\f1ab"}.bx-arrow-to-right:before{content:"\f1ac"}.bx-arrow-to-top-stroke:before{content:"\f1ad"}.bx-arrow-to-top:before{content:"\f1ae"}.bx-arrow-up-a-z:before{content:"\f1af"}.bx-arrow-up-circle:before{content:"\f1b0"}.bx-arrow-up-down:before{content:"\f1b1"}.bx-arrow-up-left-circle:before{content:"\f1b2"}.bx-arrow-up-left-square:before{content:"\f1b3"}.bx-arrow-up-left-stroke-circle:before{content:"\f1b4"}.bx-arrow-up-left-stroke-square:before{content:"\f1b5"}.bx-arrow-up-left-stroke:before{content:"\f1b6"}.bx-arrow-up-left:before{content:"\f1b7"}.bx-arrow-up-narrow-wide:before{content:"\f1b8"}.bx-arrow-up-right-circle:before{content:"\f1b9"}.bx-arrow-up-right-square:before{content:"\f1ba"}.bx-arrow-up-right-stroke-circle:before{content:"\f1bb"}.bx-arrow-up-right-stroke-square:before{content:"\f1bc"}.bx-arrow-up-right-stroke:before{content:"\f1bd"}.bx-arrow-up-right:before{content:"\f1be"}.bx-arrow-up-square:before{content:"\f1bf"}.bx-arrow-up-stroke-circle:before{content:"\f1c0"}.bx-arrow-up-stroke-square:before{content:"\f1c1"}.bx-arrow-up-stroke:before{content:"\f1c2"}.bx-arrow-up-wide-narrow:before{content:"\f1c3"}.bx-arrow-up:before{content:"\f1c4"}.bx-article:before{content:"\f1c5"}.bx-asterisk:before{content:"\f1c6"}.bx-at:before{content:"\f1c7"}.bx-atom:before{content:"\f1c8"}.bx-avocado:before{content:"\f1c9"}.bx-axe:before{content:"\f1ca"}.bx-background-color-fill:before{content:"\f1cb"}.bx-background:before{content:"\f1cc"}.bx-backpack-star:before{content:"\f1cd"}.bx-backpack:before{content:"\f1ce"}.bx-backspace:before{content:"\f1cf"}.bx-backward-slash:before{content:"\f1d0"}.bx-bacon:before{content:"\f1d1"}.bx-badge-check:before{content:"\f1d2"}.bx-badge-exclamation:before{content:"\f1d3"}.bx-badge-info:before{content:"\f1d4"}.bx-badge:before{content:"\f1d5"}.bx-baguette:before{content:"\f1d6"}.bx-bahai:before{content:"\f1d7"}.bx-balcony:before{content:"\f1d8"}.bx-ball-throw:before{content:"\f1d9"}.bx-balloon:before{content:"\f1da"}.bx-band-aid:before{content:"\f1db"}.bx-bank:before{content:"\f1dc"}.bx-bar-chart-big:before{content:"\f1dd"}.bx-bar-chart-square:before{content:"\f1de"}.bx-bar-chart:before{content:"\f1df"}.bx-barcode-square:before{content:"\f1e0"}.bx-barcode:before{content:"\f1e1"}.bx-barn:before{content:"\f1e2"}.bx-baseball:before{content:"\f1e3"}.bx-basket:before{content:"\f1e4"}.bx-basketball:before{content:"\f1e5"}.bx-bath:before{content:"\f1e6"}.bx-battery-1:before{content:"\f1e7"}.bx-battery-2:before{content:"\f1e8"}.bx-battery-3:before{content:"\f1e9"}.bx-battery-full:before{content:"\f1ea"}.bx-battery-low:before{content:"\f1eb"}.bx-battery:before{content:"\f1ec"}.bx-beach-ball:before{content:"\f1ed"}.bx-beach:before{content:"\f1ee"}.bx-beaker:before{content:"\f1ef"}.bx-beanie:before{content:"\f1f0"}.bx-bear:before{content:"\f1f1"}.bx-bed-alt:before{content:"\f1f2"}.bx-bed:before{content:"\f1f3"}.bx-beer:before{content:"\f1f4"}.bx-bell-check:before{content:"\f1f5"}.bx-bell-minus:before{content:"\f1f6"}.bx-bell-plus:before{content:"\f1f7"}.bx-bell-ring:before{content:"\f1f8"}.bx-bell-slash:before{content:"\f1f9"}.bx-bell:before{content:"\f1fa"}.bx-bench:before{content:"\f1fb"}.bx-between-horizontal-end:before{content:"\f1fc"}.bx-between-horizontal-start:before{content:"\f1fd"}.bx-between-vertical-end:before{content:"\f1fe"}.bx-between-vertical-start:before{content:"\f1ff"}.bx-bible:before{content:"\f200"}.bx-biceps:before{content:"\f201"}.bx-binocular:before{content:"\f202"}.bx-bird-alt:before{content:"\f203"}.bx-bird:before{content:"\f204"}.bx-birthday-cake:before{content:"\f205"}.bx-bitcoin:before{content:"\f206"}.bx-blanket:before{content:"\f207"}.bx-blob:before{content:"\f208"}.bx-block:before{content:"\f209"}.bx-blockquote:before{content:"\f20a"}.bx-blocks:before{content:"\f20b"}.bx-bluetooth:before{content:"\f20c"}.bx-blur-alt:before{content:"\f20d"}.bx-blur:before{content:"\f20e"}.bx-body:before{content:"\f20f"}.bx-bold:before{content:"\f210"}.bx-bolt-alt:before{content:"\f211"}.bx-bolt-circle:before{content:"\f212"}.bx-bolt-square:before{content:"\f213"}.bx-bolt:before{content:"\f214"}.bx-bomb:before{content:"\f215"}.bx-bone:before{content:"\f216"}.bx-bong:before{content:"\f217"}.bx-book-add:before{content:"\f218"}.bx-book-alt:before{content:"\f219"}.bx-book-bookmark:before{content:"\f21a"}.bx-book-content:before{content:"\f21b"}.bx-book-heart:before{content:"\f21c"}.bx-book-library:before{content:"\f21d"}.bx-book-open:before{content:"\f21e"}.bx-book:before{content:"\f21f"}.bx-bookmark-alt:before{content:"\f220"}.bx-bookmark-heart:before{content:"\f221"}.bx-bookmark-minus-alt:before{content:"\f222"}.bx-bookmark-minus:before{content:"\f223"}.bx-bookmark-plus-alt:before{content:"\f224"}.bx-bookmark-plus:before{content:"\f225"}.bx-bookmark-star:before{content:"\f226"}.bx-bookmark-x:before{content:"\f227"}.bx-bookmark:before{content:"\f228"}.bx-bookmarks:before{content:"\f229"}.bx-boombox:before{content:"\f22a"}.bx-boot:before{content:"\f22b"}.bx-border-all:before{content:"\f22c"}.bx-border-bottom:before{content:"\f22d"}.bx-border-inner:before{content:"\f22e"}.bx-border-left:before{content:"\f22f"}.bx-border-none:before{content:"\f230"}.bx-border-outer:before{content:"\f231"}.bx-border-radius:before{content:"\f232"}.bx-border-right:before{content:"\f233"}.bx-border-top:before{content:"\f234"}.bx-bow:before{content:"\f235"}.bx-bowl-balls:before{content:"\f236"}.bx-bowl-bubbles:before{content:"\f237"}.bx-bowl-hot:before{content:"\f238"}.bx-bowl-noodles-alt:before{content:"\f239"}.bx-bowl-noodles:before{content:"\f23a"}.bx-bowl-rice:before{content:"\f23b"}.bx-bowling-ball:before{content:"\f23c"}.bx-box-alt:before{content:"\f23d"}.bx-box:before{content:"\f23e"}.bx-bracket-curly:before{content:"\f23f"}.bx-bracket-round:before{content:"\f240"}.bx-bracket:before{content:"\f241"}.bx-braille:before{content:"\f242"}.bx-brain-circuit:before{content:"\f243"}.bx-brain:before{content:"\f244"}.bx-bread:before{content:"\f245"}.bx-brick:before{content:"\f246"}.bx-bridge:before{content:"\f247"}.bx-briefcase-alt-2:before{content:"\f248"}.bx-briefcase-alt:before{content:"\f249"}.bx-briefcase:before{content:"\f24a"}.bx-brightness-half:before{content:"\f24b"}.bx-brightness:before{content:"\f24c"}.bx-broadcast:before{content:"\f24d"}.bx-browser-activity:before{content:"\f24e"}.bx-brush-sparkles:before{content:"\f24f"}.bx-brush:before{content:"\f250"}.bx-buddhism:before{content:"\f251"}.bx-bug-alt:before{content:"\f252"}.bx-bug:before{content:"\f253"}.bx-building-house:before{content:"\f254"}.bx-building:before{content:"\f255"}.bx-buildings:before{content:"\f256"}.bx-bullseye:before{content:"\f257"}.bx-buoy:before{content:"\f258"}.bx-burger-alt:before{content:"\f259"}.bx-burger:before{content:"\f25a"}.bx-bus:before{content:"\f25b"}.bx-business:before{content:"\f25c"}.bx-button-rounded:before{content:"\f25d"}.bx-button:before{content:"\f25e"}.bx-cabinet:before{content:"\f25f"}.bx-cable-car:before{content:"\f260"}.bx-cake-slice:before{content:"\f261"}.bx-calculator:before{content:"\f262"}.bx-calendar-alt-2:before{content:"\f263"}.bx-calendar-alt:before{content:"\f264"}.bx-calendar-check:before{content:"\f265"}.bx-calendar-cog:before{content:"\f266"}.bx-calendar-detail:before{content:"\f267"}.bx-calendar-down-arrow:before{content:"\f268"}.bx-calendar-event:before{content:"\f269"}.bx-calendar-heart:before{content:"\f26a"}.bx-calendar-minus:before{content:"\f26b"}.bx-calendar-plus:before{content:"\f26c"}.bx-calendar-search:before{content:"\f26d"}.bx-calendar-star:before{content:"\f26e"}.bx-calendar-up-arrow:before{content:"\f26f"}.bx-calendar-week:before{content:"\f270"}.bx-calendar-x:before{content:"\f271"}.bx-calendar:before{content:"\f272"}.bx-camcoder:before{content:"\f273"}.bx-camera-alt:before{content:"\f274"}.bx-camera-flip:before{content:"\f275"}.bx-camera-home:before{content:"\f276"}.bx-camera-monochrome:before{content:"\f277"}.bx-camera-plus:before{content:"\f278"}.bx-camera-portrait:before{content:"\f279"}.bx-camera-slash:before{content:"\f27a"}.bx-camera-switch:before{content:"\f27b"}.bx-camera:before{content:"\f27c"}.bx-campfire:before{content:"\f27d"}.bx-camping:before{content:"\f27e"}.bx-candlestick:before{content:"\f27f"}.bx-cannabis:before{content:"\f280"}.bx-cap:before{content:"\f281"}.bx-capitalize:before{content:"\f282"}.bx-capsule:before{content:"\f283"}.bx-captions-cc:before{content:"\f284"}.bx-captions:before{content:"\f285"}.bx-capture:before{content:"\f286"}.bx-car-battery:before{content:"\f287"}.bx-car-key:before{content:"\f288"}.bx-car:before{content:"\f289"}.bx-card-view-large:before{content:"\f28a"}.bx-card-view-no-title:before{content:"\f28b"}.bx-card-view-small:before{content:"\f28c"}.bx-card-view-tiles:before{content:"\f28d"}.bx-card-view:before{content:"\f28e"}.bx-caret-big-down:before{content:"\f28f"}.bx-caret-big-left:before{content:"\f290"}.bx-caret-big-right:before{content:"\f291"}.bx-caret-big-up:before{content:"\f292"}.bx-caret-down-circle:before{content:"\f293"}.bx-caret-down-square:before{content:"\f294"}.bx-caret-down:before{content:"\f295"}.bx-caret-left-circle:before{content:"\f296"}.bx-caret-left-square:before{content:"\f297"}.bx-caret-left:before{content:"\f298"}.bx-caret-right-circle:before{content:"\f299"}.bx-caret-right-square:before{content:"\f29a"}.bx-caret-right:before{content:"\f29b"}.bx-caret-up-circle:before{content:"\f29c"}.bx-caret-up-square:before{content:"\f29d"}.bx-caret-up:before{content:"\f29e"}.bx-carets-down-up:before{content:"\f29f"}.bx-carets-left-right:before{content:"\f2a0"}.bx-carets-right-left:before{content:"\f2a1"}.bx-carets-up-down:before{content:"\f2a2"}.bx-carrot:before{content:"\f2a3"}.bx-cart-minus:before{content:"\f2a4"}.bx-cart-plus:before{content:"\f2a5"}.bx-cart:before{content:"\f2a6"}.bx-cast:before{content:"\f2a7"}.bx-castle:before{content:"\f2a8"}.bx-cat:before{content:"\f2a9"}.bx-categories:before{content:"\f2aa"}.bx-cctv:before{content:"\f2ab"}.bx-certification:before{content:"\f2ac"}.bx-chair:before{content:"\f2ad"}.bx-champagne:before{content:"\f2ae"}.bx-chart-area:before{content:"\f2af"}.bx-chart-bar-big-columns:before{content:"\f2b0"}.bx-chart-bar-big-rows:before{content:"\f2b1"}.bx-chart-bar-columns:before{content:"\f2b2"}.bx-chart-bar-rows:before{content:"\f2b3"}.bx-chart-bubble:before{content:"\f2b4"}.bx-chart-gantt:before{content:"\f2b5"}.bx-chart-line:before{content:"\f2b6"}.bx-chart-network:before{content:"\f2b7"}.bx-chart-scatter:before{content:"\f2b8"}.bx-chart-spline:before{content:"\f2b9"}.bx-chart-stacked-columns:before{content:"\f2ba"}.bx-chart-stacked-rows:before{content:"\f2bb"}.bx-chart-trend:before{content:"\f2bc"}.bx-check-circle:before{content:"\f2bd"}.bx-check-shield:before{content:"\f2be"}.bx-check-square:before{content:"\f2bf"}.bx-check:before{content:"\f2c0"}.bx-checkbox-checked:before{content:"\f2c1"}.bx-checkbox-square:before{content:"\f2c2"}.bx-checkbox:before{content:"\f2c3"}.bx-checklist:before{content:"\f2c4"}.bx-checks:before{content:"\f2c5"}.bx-cheese:before{content:"\f2c6"}.bx-chef-hat:before{content:"\f2c7"}.bx-cherry:before{content:"\f2c8"}.bx-chess-bishop:before{content:"\f2c9"}.bx-chess-king:before{content:"\f2ca"}.bx-chess-knight:before{content:"\f2cb"}.bx-chess-pawn:before{content:"\f2cc"}.bx-chess-queen:before{content:"\f2cd"}.bx-chess-rook:before{content:"\f2ce"}.bx-chess:before{content:"\f2cf"}.bx-chevron-down-circle:before{content:"\f2d0"}.bx-chevron-down-square:before{content:"\f2d1"}.bx-chevron-down:before{content:"\f2d2"}.bx-chevron-left-circle:before{content:"\f2d3"}.bx-chevron-left-square:before{content:"\f2d4"}.bx-chevron-left:before{content:"\f2d5"}.bx-chevron-right-circle:before{content:"\f2d6"}.bx-chevron-right-square:before{content:"\f2d7"}.bx-chevron-right:before{content:"\f2d8"}.bx-chevron-up-circle:before{content:"\f2d9"}.bx-chevron-up-square:before{content:"\f2da"}.bx-chevron-up:before{content:"\f2db"}.bx-chevrons-down-up:before{content:"\f2dc"}.bx-chevrons-down:before{content:"\f2dd"}.bx-chevrons-left-right:before{content:"\f2de"}.bx-chevrons-left:before{content:"\f2df"}.bx-chevrons-right-left:before{content:"\f2e0"}.bx-chevrons-right:before{content:"\f2e1"}.bx-chevrons-up-down:before{content:"\f2e2"}.bx-chevrons-up:before{content:"\f2e3"}.bx-child:before{content:"\f2e4"}.bx-chip:before{content:"\f2e5"}.bx-christianity:before{content:"\f2e6"}.bx-church:before{content:"\f2e7"}.bx-cigarette:before{content:"\f2e8"}.bx-circle-dashed-half:before{content:"\f2e9"}.bx-circle-dashed:before{content:"\f2ea"}.bx-circle-half-alt:before{content:"\f2eb"}.bx-circle-half:before{content:"\f2ec"}.bx-circle-hexagon:before{content:"\f2ed"}.bx-circle-outer-dashed-circle:before{content:"\f2ee"}.bx-circle-quarter-alt:before{content:"\f2ef"}.bx-circle-quarter:before{content:"\f2f0"}.bx-circle-three-quarter-alt:before{content:"\f2f1"}.bx-circle-three-quarter:before{content:"\f2f2"}.bx-circle:before{content:"\f2f3"}.bx-circles-9:before{content:"\f2f4"}.bx-circles-alt:before{content:"\f2f5"}.bx-circles:before{content:"\f2f6"}.bx-circuit-board:before{content:"\f2f7"}.bx-city:before{content:"\f2f8"}.bx-clipboard-check:before{content:"\f2f9"}.bx-clipboard-code:before{content:"\f2fa"}.bx-clipboard-detail:before{content:"\f2fb"}.bx-clipboard-minus:before{content:"\f2fc"}.bx-clipboard-plus:before{content:"\f2fd"}.bx-clipboard-x:before{content:"\f2fe"}.bx-clipboard:before{content:"\f2ff"}.bx-clock-1:before{content:"\f300"}.bx-clock-10:before{content:"\f301"}.bx-clock-11:before{content:"\f302"}.bx-clock-12:before{content:"\f303"}.bx-clock-2:before{content:"\f304"}.bx-clock-3:before{content:"\f305"}.bx-clock-4:before{content:"\f306"}.bx-clock-5:before{content:"\f307"}.bx-clock-6:before{content:"\f308"}.bx-clock-7:before{content:"\f309"}.bx-clock-8:before{content:"\f30a"}.bx-clock-9:before{content:"\f30b"}.bx-clock-dashed-half:before{content:"\f30c"}.bx-clock:before{content:"\f30d"}.bx-cloud-alt-2:before{content:"\f30e"}.bx-cloud-alt:before{content:"\f30f"}.bx-cloud-drizzle:before{content:"\f310"}.bx-cloud-fog:before{content:"\f311"}.bx-cloud-lightning:before{content:"\f312"}.bx-cloud-moon:before{content:"\f313"}.bx-cloud-rain-wind:before{content:"\f314"}.bx-cloud-rain:before{content:"\f315"}.bx-cloud-snow:before{content:"\f316"}.bx-cloud-sun:before{content:"\f317"}.bx-cloud:before{content:"\f318"}.bx-clover:before{content:"\f319"}.bx-club:before{content:"\f31a"}.bx-cocktail:before{content:"\f31b"}.bx-code-alt:before{content:"\f31c"}.bx-code:before{content:"\f31d"}.bx-coffee-beans:before{content:"\f31e"}.bx-coffee-cup:before{content:"\f31f"}.bx-coffee:before{content:"\f320"}.bx-cog:before{content:"\f321"}.bx-cognition:before{content:"\f322"}.bx-coin:before{content:"\f323"}.bx-coins:before{content:"\f324"}.bx-col-resize:before{content:"\f325"}.bx-color-fill:before{content:"\f326"}.bx-color-wheel:before{content:"\f327"}.bx-columns-3:before{content:"\f328"}.bx-columns-4:before{content:"\f329"}.bx-columns:before{content:"\f32a"}.bx-comic-bubble:before{content:"\f32b"}.bx-command:before{content:"\f32c"}.bx-community:before{content:"\f32d"}.bx-compare-alt:before{content:"\f32e"}.bx-compare:before{content:"\f32f"}.bx-compass:before{content:"\f330"}.bx-component:before{content:"\f331"}.bx-computer:before{content:"\f332"}.bx-confused:before{content:"\f333"}.bx-connector:before{content:"\f334"}.bx-contact-book:before{content:"\f335"}.bx-contrast:before{content:"\f336"}.bx-cookie:before{content:"\f337"}.bx-cool:before{content:"\f338"}.bx-copy-check:before{content:"\f339"}.bx-copy-list:before{content:"\f33a"}.bx-copy-minus:before{content:"\f33b"}.bx-copy-plus:before{content:"\f33c"}.bx-copy-x:before{content:"\f33d"}.bx-copy:before{content:"\f33e"}.bx-copyright:before{content:"\f33f"}.bx-core:before{content:"\f340"}.bx-credit-card-alt:before{content:"\f341"}.bx-credit-card-front:before{content:"\f342"}.bx-credit-card-insert:before{content:"\f343"}.bx-credit-card:before{content:"\f344"}.bx-cricket-ball:before{content:"\f345"}.bx-crop:before{content:"\f346"}.bx-cross-circle:before{content:"\f347"}.bx-crosshair:before{content:"\f348"}.bx-crown:before{content:"\f349"}.bx-crypto-coin:before{content:"\f34a"}.bx-crypto:before{content:"\f34b"}.bx-cube-alt:before{content:"\f34c"}.bx-cube-inside:before{content:"\f34d"}.bx-cube:before{content:"\f34e"}.bx-cuboid:before{content:"\f34f"}.bx-cup-hot:before{content:"\f350"}.bx-cup-saucer:before{content:"\f351"}.bx-cup-tea:before{content:"\f352"}.bx-cup:before{content:"\f353"}.bx-cupboard-alt:before{content:"\f354"}.bx-cupboard:before{content:"\f355"}.bx-cupcake:before{content:"\f356"}.bx-currency-note:before{content:"\f357"}.bx-currency-notes:before{content:"\f358"}.bx-cursor-add:before{content:"\f359"}.bx-cursor-cell:before{content:"\f35a"}.bx-cursor-crosshair-dot:before{content:"\f35b"}.bx-cursor-crosshair:before{content:"\f35c"}.bx-cursor-pen:before{content:"\f35d"}.bx-cursor-pointer:before{content:"\f35e"}.bx-cursor:before{content:"\f35f"}.bx-cut:before{content:"\f360"}.bx-cycling:before{content:"\f361"}.bx-cylinder:before{content:"\f362"}.bx-dashboard-alt:before{content:"\f363"}.bx-dashboard:before{content:"\f364"}.bx-database-alt:before{content:"\f365"}.bx-database:before{content:"\f366"}.bx-decrease-indent:before{content:"\f367"}.bx-delta:before{content:"\f368"}.bx-department-store:before{content:"\f369"}.bx-desert:before{content:"\f36a"}.bx-desk:before{content:"\f36b"}.bx-desktop-alt:before{content:"\f36c"}.bx-desktop:before{content:"\f36d"}.bx-devices:before{content:"\f36e"}.bx-dialpad:before{content:"\f36f"}.bx-diameter:before{content:"\f370"}.bx-diamond-alt:before{content:"\f371"}.bx-diamond:before{content:"\f372"}.bx-diamonds:before{content:"\f373"}.bx-dice-1:before{content:"\f374"}.bx-dice-2:before{content:"\f375"}.bx-dice-3:before{content:"\f376"}.bx-dice-4:before{content:"\f377"}.bx-dice-5:before{content:"\f378"}.bx-dice-6:before{content:"\f379"}.bx-dice-roll:before{content:"\f37a"}.bx-dino:before{content:"\f37b"}.bx-directions:before{content:"\f37c"}.bx-disc:before{content:"\f37d"}.bx-discount:before{content:"\f37e"}.bx-discussion:before{content:"\f37f"}.bx-dish:before{content:"\f380"}.bx-dishwasher:before{content:"\f381"}.bx-dislike:before{content:"\f382"}.bx-division:before{content:"\f383"}.bx-dizzy:before{content:"\f384"}.bx-dna:before{content:"\f385"}.bx-dock-bottom-alt:before{content:"\f386"}.bx-dock-bottom-arrow:before{content:"\f387"}.bx-dock-bottom-left-alt:before{content:"\f388"}.bx-dock-bottom-left:before{content:"\f389"}.bx-dock-bottom-right-alt:before{content:"\f38a"}.bx-dock-bottom-right:before{content:"\f38b"}.bx-dock-bottom:before{content:"\f38c"}.bx-dock-left-alt:before{content:"\f38d"}.bx-dock-left-arrow:before{content:"\f38e"}.bx-dock-left:before{content:"\f38f"}.bx-dock-right-alt:before{content:"\f390"}.bx-dock-right-arrow:before{content:"\f391"}.bx-dock-right:before{content:"\f392"}.bx-dock-top-alt:before{content:"\f393"}.bx-dock-top-arrow:before{content:"\f394"}.bx-dock-top-left-alt:before{content:"\f395"}.bx-dock-top-left:before{content:"\f396"}.bx-dock-top-right-alt:before{content:"\f397"}.bx-dock-top-right:before{content:"\f398"}.bx-dock-top:before{content:"\f399"}.bx-dog-alt:before{content:"\f39a"}.bx-dog:before{content:"\f39b"}.bx-dollar-circle-stars:before{content:"\f39c"}.bx-dollar-circle:before{content:"\f39d"}.bx-dollar:before{content:"\f39e"}.bx-donate-blood:before{content:"\f39f"}.bx-donate-heart:before{content:"\f3a0"}.bx-donut:before{content:"\f3a1"}.bx-door-open:before{content:"\f3a2"}.bx-door:before{content:"\f3a3"}.bx-dots-horizontal-rounded-circle:before{content:"\f3a4"}.bx-dots-horizontal-rounded:before{content:"\f3a5"}.bx-dots-horizontal:before{content:"\f3a6"}.bx-dots-vertical-rounded-circle:before{content:"\f3a7"}.bx-dots-vertical-rounded:before{content:"\f3a8"}.bx-dots-vertical:before{content:"\f3a9"}.bx-doughnut-chart:before{content:"\f3aa"}.bx-draw-ahead:before{content:"\f3ab"}.bx-draw-behind:before{content:"\f3ac"}.bx-draw-inside:before{content:"\f3ad"}.bx-dress:before{content:"\f3ae"}.bx-dribbling:before{content:"\f3af"}.bx-dropdown:before{content:"\f3b0"}.bx-dryer:before{content:"\f3b1"}.bx-duck:before{content:"\f3b2"}.bx-dumbbell-alt:before{content:"\f3b3"}.bx-dumbbell:before{content:"\f3b4"}.bx-ear-alt:before{content:"\f3b5"}.bx-ear-slash:before{content:"\f3b6"}.bx-ear:before{content:"\f3b7"}.bx-earbuds:before{content:"\f3b8"}.bx-earth:before{content:"\f3b9"}.bx-ease-in-out:before{content:"\f3ba"}.bx-ease-in:before{content:"\f3bb"}.bx-ease-out:before{content:"\f3bc"}.bx-edit-alt:before{content:"\f3bd"}.bx-edit:before{content:"\f3be"}.bx-education:before{content:"\f3bf"}.bx-egg-fried:before{content:"\f3c0"}.bx-egg-yolk:before{content:"\f3c1"}.bx-egg:before{content:"\f3c2"}.bx-eject:before{content:"\f3c3"}.bx-element-of:before{content:"\f3c4"}.bx-empty-set:before{content:"\f3c5"}.bx-enter:before{content:"\f3c6"}.bx-enterprise:before{content:"\f3c7"}.bx-envelope-alt:before{content:"\f3c8"}.bx-envelope-open:before{content:"\f3c9"}.bx-envelope:before{content:"\f3ca"}.bx-equal-circle:before{content:"\f3cb"}.bx-equal-square:before{content:"\f3cc"}.bx-equal:before{content:"\f3cd"}.bx-equalizer:before{content:"\f3ce"}.bx-eraser:before{content:"\f3cf"}.bx-euro:before{content:"\f3d0"}.bx-ev-station:before{content:"\f3d1"}.bx-expand-left:before{content:"\f3d2"}.bx-expand-right:before{content:"\f3d3"}.bx-explosion:before{content:"\f3d4"}.bx-exposure:before{content:"\f3d5"}.bx-extension:before{content:"\f3d6"}.bx-eye-alt:before{content:"\f3d7"}.bx-eye-big:before{content:"\f3d8"}.bx-eye-closed:before{content:"\f3d9"}.bx-eye-slash:before{content:"\f3da"}.bx-eye:before{content:"\f3db"}.bx-eyedropper:before{content:"\f3dc"}.bx-face-alt-2:before{content:"\f3dd"}.bx-face-alt-3:before{content:"\f3de"}.bx-face-alt-4:before{content:"\f3df"}.bx-face-alt:before{content:"\f3e0"}.bx-face-child:before{content:"\f3e1"}.bx-face-mask:before{content:"\f3e2"}.bx-face:before{content:"\f3e3"}.bx-factory:before{content:"\f3e4"}.bx-fan:before{content:"\f3e5"}.bx-fast-forward-circle:before{content:"\f3e6"}.bx-fast-forward:before{content:"\f3e7"}.bx-feather-alt:before{content:"\f3e8"}.bx-feather-minus:before{content:"\f3e9"}.bx-feather-plus:before{content:"\f3ea"}.bx-feather:before{content:"\f3eb"}.bx-female:before{content:"\f3ec"}.bx-file-code:before{content:"\f3ed"}.bx-file-cog:before{content:"\f3ee"}.bx-file-detail:before{content:"\f3ef"}.bx-file-heart:before{content:"\f3f0"}.bx-file-minus:before{content:"\f3f1"}.bx-file-plus:before{content:"\f3f2"}.bx-file-report:before{content:"\f3f3"}.bx-file-search:before{content:"\f3f4"}.bx-file-star:before{content:"\f3f5"}.bx-file-x:before{content:"\f3f6"}.bx-file-zip:before{content:"\f3f7"}.bx-file:before{content:"\f3f8"}.bx-film-roll-alt:before{content:"\f3f9"}.bx-film-roll:before{content:"\f3fa"}.bx-film:before{content:"\f3fb"}.bx-filter:before{content:"\f3fc"}.bx-finger-down:before{content:"\f3fd"}.bx-finger-left:before{content:"\f3fe"}.bx-finger-right:before{content:"\f3ff"}.bx-finger-swipe-down:before{content:"\f400"}.bx-finger-swipe-left:before{content:"\f401"}.bx-finger-swipe-right:before{content:"\f402"}.bx-finger-swipe-up:before{content:"\f403"}.bx-finger-touch:before{content:"\f404"}.bx-finger-up:before{content:"\f405"}.bx-fingerprint:before{content:"\f406"}.bx-fire-alt:before{content:"\f407"}.bx-fire-extinguisher:before{content:"\f408"}.bx-fire:before{content:"\f409"}.bx-first:before{content:"\f40a"}.bx-fish-alt:before{content:"\f40b"}.bx-fish:before{content:"\f40c"}.bx-flag-alt-2:before{content:"\f40d"}.bx-flag-alt-3:before{content:"\f40e"}.bx-flag-alt:before{content:"\f40f"}.bx-flag-chequered:before{content:"\f410"}.bx-flag:before{content:"\f411"}.bx-flame:before{content:"\f412"}.bx-flask-round:before{content:"\f413"}.bx-florist:before{content:"\f414"}.bx-flower-alt-2:before{content:"\f415"}.bx-flower-alt:before{content:"\f416"}.bx-flower:before{content:"\f417"}.bx-folder-check:before{content:"\f418"}.bx-folder-code:before{content:"\f419"}.bx-folder-cog:before{content:"\f41a"}.bx-folder-down-arrow:before{content:"\f41b"}.bx-folder-heart:before{content:"\f41c"}.bx-folder-minus:before{content:"\f41d"}.bx-folder-open:before{content:"\f41e"}.bx-folder-plus:before{content:"\f41f"}.bx-folder-search:before{content:"\f420"}.bx-folder-star:before{content:"\f421"}.bx-folder-up-arrow:before{content:"\f422"}.bx-folder-x:before{content:"\f423"}.bx-folder-zip:before{content:"\f424"}.bx-folder:before{content:"\f425"}.bx-font-color:before{content:"\f426"}.bx-font-family:before{content:"\f427"}.bx-food-menu:before{content:"\f428"}.bx-food-tag:before{content:"\f429"}.bx-football-kick:before{content:"\f42a"}.bx-football-pitch:before{content:"\f42b"}.bx-football:before{content:"\f42c"}.bx-footsteps:before{content:"\f42d"}.bx-foreground:before{content:"\f42e"}.bx-fork-knife:before{content:"\f42f"}.bx-fork-spoon:before{content:"\f430"}.bx-fork:before{content:"\f431"}.bx-form:before{content:"\f432"}.bx-forward-big:before{content:"\f433"}.bx-forward-slash-circle:before{content:"\f434"}.bx-forward-slash-square:before{content:"\f435"}.bx-forward-slash:before{content:"\f436"}.bx-forward-stroke:before{content:"\f437"}.bx-forward:before{content:"\f438"}.bx-frame:before{content:"\f439"}.bx-fridge:before{content:"\f43a"}.bx-fullscreen-exit:before{content:"\f43b"}.bx-fullscreen:before{content:"\f43c"}.bx-function:before{content:"\f43d"}.bx-functions:before{content:"\f43e"}.bx-future:before{content:"\f43f"}.bx-gallery-horizontal-end:before{content:"\f440"}.bx-gallery-horizontal:before{content:"\f441"}.bx-gallery-thumbnails:before{content:"\f442"}.bx-gallery-vertical-end:before{content:"\f443"}.bx-gallery-vertical:before{content:"\f444"}.bx-gaming:before{content:"\f445"}.bx-garage:before{content:"\f446"}.bx-gavel:before{content:"\f447"}.bx-gear:before{content:"\f448"}.bx-gem:before{content:"\f449"}.bx-gestures:before{content:"\f44a"}.bx-ghost:before{content:"\f44b"}.bx-gift:before{content:"\f44c"}.bx-git-branch:before{content:"\f44d"}.bx-git-commit:before{content:"\f44e"}.bx-git-compare:before{content:"\f44f"}.bx-git-merge-queue:before{content:"\f450"}.bx-git-merge:before{content:"\f451"}.bx-git-pull-request-closed:before{content:"\f452"}.bx-git-pull-request-draft:before{content:"\f453"}.bx-git-pull-request:before{content:"\f454"}.bx-git-repo-forked:before{content:"\f455"}.bx-glasses-alt:before{content:"\f456"}.bx-glasses:before{content:"\f457"}.bx-globe-africa:before{content:"\f458"}.bx-globe-alt-2:before{content:"\f459"}.bx-globe-alt:before{content:"\f45a"}.bx-globe-americas:before{content:"\f45b"}.bx-globe-antartica:before{content:"\f45c"}.bx-globe-asia:before{content:"\f45d"}.bx-globe-europe:before{content:"\f45e"}.bx-globe-oceania:before{content:"\f45f"}.bx-globe-stand:before{content:"\f460"}.bx-globe:before{content:"\f461"}.bx-golf-ball:before{content:"\f462"}.bx-gradient:before{content:"\f463"}.bx-greater-than-equal:before{content:"\f464"}.bx-greater-than:before{content:"\f465"}.bx-grid-9:before{content:"\f466"}.bx-grid-circle-diagonal-left:before{content:"\f467"}.bx-grid-circle-diagonal-right:before{content:"\f468"}.bx-grid-circle-plus:before{content:"\f469"}.bx-grid-circle:before{content:"\f46a"}.bx-grid-column-left:before{content:"\f46b"}.bx-grid-column-right:before{content:"\f46c"}.bx-grid-lines-3:before{content:"\f46d"}.bx-grid-lines:before{content:"\f46e"}.bx-grid-plus:before{content:"\f46f"}.bx-grid-row-bottom:before{content:"\f470"}.bx-grid-row-top:before{content:"\f471"}.bx-grid-search:before{content:"\f472"}.bx-grid:before{content:"\f473"}.bx-groceries:before{content:"\f474"}.bx-group-alt:before{content:"\f475"}.bx-group:before{content:"\f476"}.bx-guitar-amp:before{content:"\f477"}.bx-hail:before{content:"\f478"}.bx-hand-rock:before{content:"\f479"}.bx-hand:before{content:"\f47a"}.bx-handheld-alt-2:before{content:"\f47b"}.bx-handheld-alt:before{content:"\f47c"}.bx-handheld:before{content:"\f47d"}.bx-handshake:before{content:"\f47e"}.bx-hanger:before{content:"\f47f"}.bx-happy-alt:before{content:"\f480"}.bx-happy-beaming:before{content:"\f481"}.bx-happy-heart-eyes:before{content:"\f482"}.bx-happy:before{content:"\f483"}.bx-hard-drive:before{content:"\f484"}.bx-hard-hat:before{content:"\f485"}.bx-hashtag:before{content:"\f486"}.bx-hdmi:before{content:"\f487"}.bx-head:before{content:"\f488"}.bx-heading-1:before{content:"\f489"}.bx-heading-2:before{content:"\f48a"}.bx-heading-3:before{content:"\f48b"}.bx-heading:before{content:"\f48c"}.bx-headphone-alt-2:before{content:"\f48d"}.bx-headphone-alt:before{content:"\f48e"}.bx-headphone-mic:before{content:"\f48f"}.bx-headphone:before{content:"\f490"}.bx-heart-break:before{content:"\f491"}.bx-heart-circle:before{content:"\f492"}.bx-heart-half:before{content:"\f493"}.bx-heart-plus:before{content:"\f494"}.bx-heart-square:before{content:"\f495"}.bx-heart:before{content:"\f496"}.bx-heat-wave:before{content:"\f497"}.bx-helmet:before{content:"\f498"}.bx-help-circle:before{content:"\f499"}.bx-help-octagon:before{content:"\f49a"}.bx-hexagon:before{content:"\f49b"}.bx-high-speed-train:before{content:"\f49c"}.bx-highlight:before{content:"\f49d"}.bx-highlights:before{content:"\f49e"}.bx-hinduism:before{content:"\f49f"}.bx-history:before{content:"\f4a0"}.bx-home-add:before{content:"\f4a1"}.bx-home-alt-2:before{content:"\f4a2"}.bx-home-alt-3:before{content:"\f4a3"}.bx-home-alt:before{content:"\f4a4"}.bx-home-circle:before{content:"\f4a5"}.bx-home-heart:before{content:"\f4a6"}.bx-home:before{content:"\f4a7"}.bx-honey:before{content:"\f4a8"}.bx-horizon-sea:before{content:"\f4a9"}.bx-horizontal-align-center:before{content:"\f4aa"}.bx-horizontal-align-left:before{content:"\f4ab"}.bx-horizontal-align-right:before{content:"\f4ac"}.bx-horizontal-center:before{content:"\f4ad"}.bx-horizontal-distribute-center:before{content:"\f4ae"}.bx-horizontal-distribute-left:before{content:"\f4af"}.bx-horizontal-distribute-right:before{content:"\f4b0"}.bx-horizontal-left:before{content:"\f4b1"}.bx-horizontal-right:before{content:"\f4b2"}.bx-horizontal-spacing:before{content:"\f4b3"}.bx-hospital:before{content:"\f4b4"}.bx-hot-tub-water:before{content:"\f4b5"}.bx-hot-tub:before{content:"\f4b6"}.bx-hot:before{content:"\f4b7"}.bx-hourglass:before{content:"\f4b8"}.bx-hurricane:before{content:"\f4b9"}.bx-icecream:before{content:"\f4ba"}.bx-iframe:before{content:"\f4bb"}.bx-image-alt:before{content:"\f4bc"}.bx-image-circle:before{content:"\f4bd"}.bx-image-landscape:before{content:"\f4be"}.bx-image-no-background:before{content:"\f4bf"}.bx-image-plus:before{content:"\f4c0"}.bx-image-portrait:before{content:"\f4c1"}.bx-image-sparkle:before{content:"\f4c2"}.bx-image:before{content:"\f4c3"}.bx-images:before{content:"\f4c4"}.bx-inbox:before{content:"\f4c5"}.bx-incognito:before{content:"\f4c6"}.bx-infinite:before{content:"\f4c7"}.bx-info-circle:before{content:"\f4c8"}.bx-info-octagon:before{content:"\f4c9"}.bx-info-shield:before{content:"\f4ca"}.bx-info-square:before{content:"\f4cb"}.bx-inner-shadow:before{content:"\f4cc"}.bx-institution:before{content:"\f4cd"}.bx-integral:before{content:"\f4ce"}.bx-intellect:before{content:"\f4cf"}.bx-invert-adjust:before{content:"\f4d0"}.bx-invert:before{content:"\f4d1"}.bx-islam:before{content:"\f4d2"}.bx-island:before{content:"\f4d3"}.bx-italic:before{content:"\f4d4"}.bx-joystick-alt:before{content:"\f4d5"}.bx-joystick-button-alt:before{content:"\f4d6"}.bx-joystick-button:before{content:"\f4d7"}.bx-joystick:before{content:"\f4d8"}.bx-judaism:before{content:"\f4d9"}.bx-key-alt:before{content:"\f4da"}.bx-key:before{content:"\f4db"}.bx-keyboard:before{content:"\f4dc"}.bx-keyframe-ease-in:before{content:"\f4dd"}.bx-keyframe-ease-out:before{content:"\f4de"}.bx-keyframe-easy-ease:before{content:"\f4df"}.bx-keyframe-hold-ease-in:before{content:"\f4e0"}.bx-keyframe-hold-ease-out:before{content:"\f4e1"}.bx-keyframe-hold-linear-in:before{content:"\f4e2"}.bx-keyframe-hold-linear-out:before{content:"\f4e3"}.bx-keyframe:before{content:"\f4e4"}.bx-knife:before{content:"\f4e5"}.bx-lambda:before{content:"\f4e6"}.bx-landmark:before{content:"\f4e7"}.bx-laptop-alt:before{content:"\f4e8"}.bx-laptop:before{content:"\f4e9"}.bx-lasso:before{content:"\f4ea"}.bx-last:before{content:"\f4eb"}.bx-laugh:before{content:"\f4ec"}.bx-law:before{content:"\f4ed"}.bx-layers-alt:before{content:"\f4ee"}.bx-layers-down-left:before{content:"\f4ef"}.bx-layers-down-right:before{content:"\f4f0"}.bx-layers-minus-alt:before{content:"\f4f1"}.bx-layers-plus-alt:before{content:"\f4f2"}.bx-layers:before{content:"\f4f3"}.bx-layout-check:before{content:"\f4f4"}.bx-layout-minus:before{content:"\f4f5"}.bx-layout-plus:before{content:"\f4f6"}.bx-layout-search:before{content:"\f4f7"}.bx-layout:before{content:"\f4f8"}.bx-leaf-alt:before{content:"\f4f9"}.bx-leaf:before{content:"\f4fa"}.bx-left-indent:before{content:"\f4fb"}.bx-lemon:before{content:"\f4fc"}.bx-less-than-equal:before{content:"\f4fd"}.bx-less-than:before{content:"\f4fe"}.bx-letter-spacing-alt:before{content:"\f4ff"}.bx-letter-spacing:before{content:"\f500"}.bx-light-bulb-alt-2:before{content:"\f501"}.bx-light-bulb-alt:before{content:"\f502"}.bx-light-bulb-on:before{content:"\f503"}.bx-light-bulb:before{content:"\f504"}.bx-like:before{content:"\f505"}.bx-line-chart-square:before{content:"\f506"}.bx-line-spacing-alt:before{content:"\f507"}.bx-line-spacing:before{content:"\f508"}.bx-link-alt:before{content:"\f509"}.bx-link-break:before{content:"\f50a"}.bx-link:before{content:"\f50b"}.bx-lira:before{content:"\f50c"}.bx-list-minus:before{content:"\f50d"}.bx-list-music:before{content:"\f50e"}.bx-list-ol:before{content:"\f50f"}.bx-list-play:before{content:"\f510"}.bx-list-plus:before{content:"\f511"}.bx-list-square:before{content:"\f512"}.bx-list-ul-square:before{content:"\f513"}.bx-list-ul:before{content:"\f514"}.bx-list-x:before{content:"\f515"}.bx-list:before{content:"\f516"}.bx-loader-dots:before{content:"\f517"}.bx-loader-lines-alt:before{content:"\f518"}.bx-loader-lines:before{content:"\f519"}.bx-location-alt-2:before{content:"\f51a"}.bx-location-alt:before{content:"\f51b"}.bx-location-blank:before{content:"\f51c"}.bx-location-check:before{content:"\f51d"}.bx-location-pin:before{content:"\f51e"}.bx-location-plus:before{content:"\f51f"}.bx-location-x:before{content:"\f520"}.bx-location:before{content:"\f521"}.bx-lock-keyhole-open-alt:before{content:"\f522"}.bx-lock-keyhole-open:before{content:"\f523"}.bx-lock-keyhole:before{content:"\f524"}.bx-lock-open-alt:before{content:"\f525"}.bx-lock-open:before{content:"\f526"}.bx-lock:before{content:"\f527"}.bx-lotion:before{content:"\f528"}.bx-low-vision:before{content:"\f529"}.bx-lowercase:before{content:"\f52a"}.bx-luggage:before{content:"\f52b"}.bx-lungs:before{content:"\f52c"}.bx-magic-wand:before{content:"\f52d"}.bx-magnet:before{content:"\f52e"}.bx-mail-open:before{content:"\f52f"}.bx-male:before{content:"\f530"}.bx-man-woman:before{content:"\f531"}.bx-man:before{content:"\f532"}.bx-map:before{content:"\f533"}.bx-margin-bottom:before{content:"\f534"}.bx-margin-left:before{content:"\f535"}.bx-margin-right:before{content:"\f536"}.bx-margin-top:before{content:"\f537"}.bx-martini:before{content:"\f538"}.bx-mask:before{content:"\f539"}.bx-math-alt:before{content:"\f53a"}.bx-math:before{content:"\f53b"}.bx-maximize:before{content:"\f53c"}.bx-meat:before{content:"\f53d"}.bx-medal-alt-2:before{content:"\f53e"}.bx-medal-alt:before{content:"\f53f"}.bx-medal-star-alt-2:before{content:"\f540"}.bx-medal-star-alt:before{content:"\f541"}.bx-medal-star:before{content:"\f542"}.bx-medal:before{content:"\f543"}.bx-medical-flask:before{content:"\f544"}.bx-medical-kit:before{content:"\f545"}.bx-megaphone-alt:before{content:"\f546"}.bx-megaphone:before{content:"\f547"}.bx-meh-alt:before{content:"\f548"}.bx-meh-blank:before{content:"\f549"}.bx-meh:before{content:"\f54a"}.bx-menorah:before{content:"\f54b"}.bx-menu-close:before{content:"\f54c"}.bx-menu-closer:before{content:"\f54d"}.bx-menu-filter:before{content:"\f54e"}.bx-menu-left:before{content:"\f54f"}.bx-menu-notification:before{content:"\f550"}.bx-menu-right:before{content:"\f551"}.bx-menu-search:before{content:"\f552"}.bx-menu-select:before{content:"\f553"}.bx-menu-wide:before{content:"\f554"}.bx-menu-wider:before{content:"\f555"}.bx-menu:before{content:"\f556"}.bx-merge:before{content:"\f557"}.bx-mesh:before{content:"\f558"}.bx-message-bubble-captions:before{content:"\f559"}.bx-message-bubble-check:before{content:"\f55a"}.bx-message-bubble-code:before{content:"\f55b"}.bx-message-bubble-detail:before{content:"\f55c"}.bx-message-bubble-dots-2:before{content:"\f55d"}.bx-message-bubble-dots:before{content:"\f55e"}.bx-message-bubble-edit:before{content:"\f55f"}.bx-message-bubble-exclamation:before{content:"\f560"}.bx-message-bubble-heart:before{content:"\f561"}.bx-message-bubble-image:before{content:"\f562"}.bx-message-bubble-minus:before{content:"\f563"}.bx-message-bubble-notification:before{content:"\f564"}.bx-message-bubble-plus:before{content:"\f565"}.bx-message-bubble-question-mark:before{content:"\f566"}.bx-message-bubble-reply:before{content:"\f567"}.bx-message-bubble-star:before{content:"\f568"}.bx-message-bubble-x:before{content:"\f569"}.bx-message-bubble:before{content:"\f56a"}.bx-message-captions:before{content:"\f56b"}.bx-message-check:before{content:"\f56c"}.bx-message-circle-captions:before{content:"\f56d"}.bx-message-circle-check:before{content:"\f56e"}.bx-message-circle-code:before{content:"\f56f"}.bx-message-circle-detail:before{content:"\f570"}.bx-message-circle-dots-2:before{content:"\f571"}.bx-message-circle-dots:before{content:"\f572"}.bx-message-circle-edit:before{content:"\f573"}.bx-message-circle-exclamation:before{content:"\f574"}.bx-message-circle-heart:before{content:"\f575"}.bx-message-circle-image:before{content:"\f576"}.bx-message-circle-minus:before{content:"\f577"}.bx-message-circle-notification:before{content:"\f578"}.bx-message-circle-plus:before{content:"\f579"}.bx-message-circle-question-mark:before{content:"\f57a"}.bx-message-circle-reply:before{content:"\f57b"}.bx-message-circle-star:before{content:"\f57c"}.bx-message-circle-x:before{content:"\f57d"}.bx-message-circle:before{content:"\f57e"}.bx-message-code:before{content:"\f57f"}.bx-message-detail:before{content:"\f580"}.bx-message-dots-2:before{content:"\f581"}.bx-message-dots:before{content:"\f582"}.bx-message-edit:before{content:"\f583"}.bx-message-exclamation:before{content:"\f584"}.bx-message-heart:before{content:"\f585"}.bx-message-image:before{content:"\f586"}.bx-message-minus:before{content:"\f587"}.bx-message-notification:before{content:"\f588"}.bx-message-plus:before{content:"\f589"}.bx-message-question-mark:before{content:"\f58a"}.bx-message-reply:before{content:"\f58b"}.bx-message-star:before{content:"\f58c"}.bx-message-x:before{content:"\f58d"}.bx-message:before{content:"\f58e"}.bx-meteor:before{content:"\f58f"}.bx-microchip:before{content:"\f590"}.bx-microphone-alt-2:before{content:"\f591"}.bx-microphone-alt:before{content:"\f592"}.bx-microphone-big-alt:before{content:"\f593"}.bx-microphone-big:before{content:"\f594"}.bx-microphone-slash:before{content:"\f595"}.bx-microphone:before{content:"\f596"}.bx-microscope:before{content:"\f597"}.bx-microwave-oven:before{content:"\f598"}.bx-milk-bottle:before{content:"\f599"}.bx-minimize:before{content:"\f59a"}.bx-minus-circle:before{content:"\f59b"}.bx-minus-plus:before{content:"\f59c"}.bx-minus-shield:before{content:"\f59d"}.bx-minus-square:before{content:"\f59e"}.bx-minus:before{content:"\f59f"}.bx-mobile-alt-2:before{content:"\f5a0"}.bx-mobile-alt:before{content:"\f5a1"}.bx-mobile-back-alt-2:before{content:"\f5a2"}.bx-mobile-back-alt:before{content:"\f5a3"}.bx-mobile-back:before{content:"\f5a4"}.bx-mobile-ring:before{content:"\f5a5"}.bx-mobile:before{content:"\f5a6"}.bx-monitor-wallpaper:before{content:"\f5a7"}.bx-monitor-wide:before{content:"\f5a8"}.bx-monitor:before{content:"\f5a9"}.bx-moon-crater:before{content:"\f5aa"}.bx-moon-phase-0:before{content:"\f5ab"}.bx-moon-phase-1:before{content:"\f5ac"}.bx-moon-phase-2:before{content:"\f5ad"}.bx-moon-phase-3:before{content:"\f5ae"}.bx-moon-phase-4:before{content:"\f5af"}.bx-moon-phase-5:before{content:"\f5b0"}.bx-moon-phase-6:before{content:"\f5b1"}.bx-moon-star:before{content:"\f5b2"}.bx-moon:before{content:"\f5b3"}.bx-mosque:before{content:"\f5b4"}.bx-motion-alt:before{content:"\f5b5"}.bx-motion:before{content:"\f5b6"}.bx-motorcycle:before{content:"\f5b7"}.bx-mountain-peak:before{content:"\f5b8"}.bx-mountain-view:before{content:"\f5b9"}.bx-mountain:before{content:"\f5ba"}.bx-mouse-alt:before{content:"\f5bb"}.bx-mouse:before{content:"\f5bc"}.bx-move-diagonal-left:before{content:"\f5bd"}.bx-move-diagonal-right:before{content:"\f5be"}.bx-move-horizontal:before{content:"\f5bf"}.bx-move-vertical:before{content:"\f5c0"}.bx-move:before{content:"\f5c1"}.bx-movie-play:before{content:"\f5c2"}.bx-movie:before{content:"\f5c3"}.bx-music-alt-2:before{content:"\f5c4"}.bx-music-alt:before{content:"\f5c5"}.bx-music-library:before{content:"\f5c6"}.bx-music:before{content:"\f5c7"}.bx-network-chart:before{content:"\f5c8"}.bx-network-device:before{content:"\f5c9"}.bx-news:before{content:"\f5ca"}.bx-newspaper:before{content:"\f5cb"}.bx-night-light:before{content:"\f5cc"}.bx-no-entry:before{content:"\f5cd"}.bx-noise:before{content:"\f5ce"}.bx-not-element-of:before{content:"\f5cf"}.bx-not-equal:before{content:"\f5d0"}.bx-not-subset:before{content:"\f5d1"}.bx-not-superset:before{content:"\f5d2"}.bx-note-book:before{content:"\f5d3"}.bx-note:before{content:"\f5d4"}.bx-notification-slash:before{content:"\f5d5"}.bx-notification:before{content:"\f5d6"}.bx-nut:before{content:"\f5d7"}.bx-octopus:before{content:"\f5d8"}.bx-omega:before{content:"\f5d9"}.bx-option:before{content:"\f5da"}.bx-outdoor-dining:before{content:"\f5db"}.bx-outer-shadow:before{content:"\f5dc"}.bx-oval-vertical:before{content:"\f5dd"}.bx-oval:before{content:"\f5de"}.bx-oven:before{content:"\f5df"}.bx-owl:before{content:"\f5e0"}.bx-pacifism:before{content:"\f5e1"}.bx-package:before{content:"\f5e2"}.bx-pacman:before{content:"\f5e3"}.bx-paint-alt:before{content:"\f5e4"}.bx-paint-roll:before{content:"\f5e5"}.bx-paint:before{content:"\f5e6"}.bx-palette:before{content:"\f5e7"}.bx-pant:before{content:"\f5e8"}.bx-paper-plane:before{content:"\f5e9"}.bx-paperclip:before{content:"\f5ea"}.bx-paragraph-spacing:before{content:"\f5eb"}.bx-paragraph:before{content:"\f5ec"}.bx-parallel:before{content:"\f5ed"}.bx-parent-child:before{content:"\f5ee"}.bx-party:before{content:"\f5ef"}.bx-paste:before{content:"\f5f0"}.bx-path:before{content:"\f5f1"}.bx-pause-circle:before{content:"\f5f2"}.bx-pause:before{content:"\f5f3"}.bx-paw-print:before{content:"\f5f4"}.bx-pear:before{content:"\f5f5"}.bx-pen-alt:before{content:"\f5f6"}.bx-pen-draw:before{content:"\f5f7"}.bx-pen-edit-circle:before{content:"\f5f8"}.bx-pen-minus:before{content:"\f5f9"}.bx-pen-plus:before{content:"\f5fa"}.bx-pen:before{content:"\f5fb"}.bx-pencil-circle:before{content:"\f5fc"}.bx-pencil-draw:before{content:"\f5fd"}.bx-pencil-edit-circle:before{content:"\f5fe"}.bx-pencil-sparkles:before{content:"\f5ff"}.bx-pencil-square:before{content:"\f600"}.bx-pencil:before{content:"\f601"}.bx-pentagon:before{content:"\f602"}.bx-people-diversity:before{content:"\f603"}.bx-people-handshake:before{content:"\f604"}.bx-people-heart:before{content:"\f605"}.bx-percentage:before{content:"\f606"}.bx-perpendicular:before{content:"\f607"}.bx-perspective:before{content:"\f608"}.bx-petrol-pump:before{content:"\f609"}.bx-pharmacy:before{content:"\f60a"}.bx-phone-book:before{content:"\f60b"}.bx-phone-forwarding:before{content:"\f60c"}.bx-phone-incoming:before{content:"\f60d"}.bx-phone-outgoing:before{content:"\f60e"}.bx-phone-plus:before{content:"\f60f"}.bx-phone-ring:before{content:"\f610"}.bx-phone-x:before{content:"\f611"}.bx-phone:before{content:"\f612"}.bx-photo-album:before{content:"\f613"}.bx-pi:before{content:"\f614"}.bx-piano-alt:before{content:"\f615"}.bx-piano-grand:before{content:"\f616"}.bx-piano:before{content:"\f617"}.bx-pickup-truck:before{content:"\f618"}.bx-picture-in-picture-close:before{content:"\f619"}.bx-picture-in-picture:before{content:"\f61a"}.bx-pie-chart-alt-2:before{content:"\f61b"}.bx-pie-chart-alt:before{content:"\f61c"}.bx-pie-chart:before{content:"\f61d"}.bx-piggy-bank:before{content:"\f61e"}.bx-pill-bottle-alt:before{content:"\f61f"}.bx-pill-bottle:before{content:"\f620"}.bx-pill:before{content:"\f621"}.bx-pin-alt:before{content:"\f622"}.bx-pin-slash-alt:before{content:"\f623"}.bx-pin:before{content:"\f624"}.bx-pizza-alt:before{content:"\f625"}.bx-pizza:before{content:"\f626"}.bx-plane-alt:before{content:"\f627"}.bx-plane-land:before{content:"\f628"}.bx-plane-take-off:before{content:"\f629"}.bx-plane:before{content:"\f62a"}.bx-planet:before{content:"\f62b"}.bx-plant-pot:before{content:"\f62c"}.bx-play-circle-alt:before{content:"\f62d"}.bx-play-circle:before{content:"\f62e"}.bx-play:before{content:"\f62f"}.bx-plug-connect:before{content:"\f630"}.bx-plus-big:before{content:"\f631"}.bx-plus-circle:before{content:"\f632"}.bx-plus-minus:before{content:"\f633"}.bx-plus-shield:before{content:"\f634"}.bx-plus-square:before{content:"\f635"}.bx-plus:before{content:"\f636"}.bx-podcast:before{content:"\f637"}.bx-polar-chart:before{content:"\f638"}.bx-poll:before{content:"\f639"}.bx-polygon:before{content:"\f63a"}.bx-popsicle:before{content:"\f63b"}.bx-pound:before{content:"\f63c"}.bx-power:before{content:"\f63d"}.bx-prawn:before{content:"\f63e"}.bx-price-tag-alt:before{content:"\f63f"}.bx-price-tag:before{content:"\f640"}.bx-print-dollar:before{content:"\f641"}.bx-printer:before{content:"\f642"}.bx-proper-subset:before{content:"\f643"}.bx-proper-superset:before{content:"\f644"}.bx-psychology:before{content:"\f645"}.bx-puck:before{content:"\f646"}.bx-pulse:before{content:"\f647"}.bx-pyramid:before{content:"\f648"}.bx-qr-scan:before{content:"\f649"}.bx-qr:before{content:"\f64a"}.bx-queue:before{content:"\f64b"}.bx-quote-left-alt:before{content:"\f64c"}.bx-quote-left:before{content:"\f64d"}.bx-quote-right-alt:before{content:"\f64e"}.bx-quote-right:before{content:"\f64f"}.bx-quote-single-left:before{content:"\f650"}.bx-quote-single-right:before{content:"\f651"}.bx-radar:before{content:"\f652"}.bx-radiation:before{content:"\f653"}.bx-radio-circle-marked:before{content:"\f654"}.bx-radio-circle:before{content:"\f655"}.bx-radio:before{content:"\f656"}.bx-rainbow:before{content:"\f657"}.bx-reading-glass:before{content:"\f658"}.bx-reading:before{content:"\f659"}.bx-receipt:before{content:"\f65a"}.bx-rectangle-vertical:before{content:"\f65b"}.bx-rectangle-wide:before{content:"\f65c"}.bx-rectangle:before{content:"\f65d"}.bx-recycle:before{content:"\f65e"}.bx-redo-alt:before{content:"\f65f"}.bx-redo-stroke-alt:before{content:"\f660"}.bx-redo-stroke:before{content:"\f661"}.bx-redo:before{content:"\f662"}.bx-reflect-horizontal-alt:before{content:"\f663"}.bx-reflect-horizontal:before{content:"\f664"}.bx-reflect-vertical-alt:before{content:"\f665"}.bx-reflect-vertical:before{content:"\f666"}.bx-refresh-ccw-alt-dot:before{content:"\f667"}.bx-refresh-ccw-alt:before{content:"\f668"}.bx-refresh-ccw-dot:before{content:"\f669"}.bx-refresh-ccw:before{content:"\f66a"}.bx-refresh-cw-alt-dot:before{content:"\f66b"}.bx-refresh-cw-alt:before{content:"\f66c"}.bx-refresh-cw-dot:before{content:"\f66d"}.bx-refresh-cw:before{content:"\f66e"}.bx-registered:before{content:"\f66f"}.bx-rename:before{content:"\f670"}.bx-repeat-alt-2:before{content:"\f671"}.bx-repeat-alt:before{content:"\f672"}.bx-repeat:before{content:"\f673"}.bx-reply-big:before{content:"\f674"}.bx-reply-stroke:before{content:"\f675"}.bx-reply:before{content:"\f676"}.bx-report:before{content:"\f677"}.bx-rewind-circle:before{content:"\f678"}.bx-rewind:before{content:"\f679"}.bx-rfid:before{content:"\f67a"}.bx-rgb:before{content:"\f67b"}.bx-right-angle-triangle-half:before{content:"\f67c"}.bx-right-angle-triangle:before{content:"\f67d"}.bx-right-indent:before{content:"\f67e"}.bx-robot:before{content:"\f67f"}.bx-rocket-alt:before{content:"\f680"}.bx-rocket:before{content:"\f681"}.bx-rotate-ccw-10:before{content:"\f682"}.bx-rotate-ccw-30:before{content:"\f683"}.bx-rotate-ccw-5:before{content:"\f684"}.bx-rotate-ccw-dot:before{content:"\f685"}.bx-rotate-ccw:before{content:"\f686"}.bx-rotate-cw-10:before{content:"\f687"}.bx-rotate-cw-30:before{content:"\f688"}.bx-rotate-cw-5:before{content:"\f689"}.bx-rotate-cw-dot:before{content:"\f68a"}.bx-rotate-cw:before{content:"\f68b"}.bx-rotate-square-ccw:before{content:"\f68c"}.bx-rotate-square-cw:before{content:"\f68d"}.bx-route:before{content:"\f68e"}.bx-row-resize:before{content:"\f68f"}.bx-rows-3:before{content:"\f690"}.bx-rows-4:before{content:"\f691"}.bx-rows:before{content:"\f692"}.bx-rss:before{content:"\f693"}.bx-ruble:before{content:"\f694"}.bx-rugby-ball:before{content:"\f695"}.bx-ruler:before{content:"\f696"}.bx-running:before{content:"\f697"}.bx-rupee:before{content:"\f698"}.bx-sad:before{content:"\f699"}.bx-safe:before{content:"\f69a"}.bx-sail:before{content:"\f69b"}.bx-sandwich:before{content:"\f69c"}.bx-sapling:before{content:"\f69d"}.bx-save:before{content:"\f69e"}.bx-scale:before{content:"\f69f"}.bx-scan-ar:before{content:"\f6a0"}.bx-scan-barcode:before{content:"\f6a1"}.bx-scan-detail:before{content:"\f6a2"}.bx-scan-face:before{content:"\f6a3"}.bx-scan-search:before{content:"\f6a4"}.bx-scan:before{content:"\f6a5"}.bx-school-bus:before{content:"\f6a6"}.bx-school:before{content:"\f6a7"}.bx-science:before{content:"\f6a8"}.bx-scooter-delivery:before{content:"\f6a9"}.bx-scooter:before{content:"\f6aa"}.bx-screen-light:before{content:"\f6ab"}.bx-screenshot:before{content:"\f6ac"}.bx-scribble:before{content:"\f6ad"}.bx-scroll:before{content:"\f6ae"}.bx-sd-card:before{content:"\f6af"}.bx-sea-view:before{content:"\f6b0"}.bx-seal-check:before{content:"\f6b1"}.bx-seal:before{content:"\f6b2"}.bx-search-alt:before{content:"\f6b3"}.bx-search-big-code:before{content:"\f6b4"}.bx-search-big-minus:before{content:"\f6b5"}.bx-search-big-plus:before{content:"\f6b6"}.bx-search-big-x:before{content:"\f6b7"}.bx-search-big:before{content:"\f6b8"}.bx-search-code:before{content:"\f6b9"}.bx-search-minus:before{content:"\f6ba"}.bx-search-plus:before{content:"\f6bb"}.bx-search-x:before{content:"\f6bc"}.bx-search:before{content:"\f6bd"}.bx-select-all:before{content:"\f6be"}.bx-select-many:before{content:"\f6bf"}.bx-select-none:before{content:"\f6c0"}.bx-select:before{content:"\f6c1"}.bx-self-care:before{content:"\f6c2"}.bx-send-alt-2:before{content:"\f6c3"}.bx-send-alt:before{content:"\f6c4"}.bx-send:before{content:"\f6c5"}.bx-server:before{content:"\f6c6"}.bx-set-intersection:before{content:"\f6c7"}.bx-set-union:before{content:"\f6c8"}.bx-shadows:before{content:"\f6c9"}.bx-shape-exclude-alt:before{content:"\f6ca"}.bx-shape-exclude:before{content:"\f6cb"}.bx-shape-intersect-alt:before{content:"\f6cc"}.bx-shape-intersect:before{content:"\f6cd"}.bx-shape-outline-alt:before{content:"\f6ce"}.bx-shape-outline:before{content:"\f6cf"}.bx-shape-rotate-ccw:before{content:"\f6d0"}.bx-shape-rotate-cw:before{content:"\f6d1"}.bx-shape-subtract-alt:before{content:"\f6d2"}.bx-shape-subtract:before{content:"\f6d3"}.bx-shape-trim-alt:before{content:"\f6d4"}.bx-shape-trim:before{content:"\f6d5"}.bx-shape-unite-alt:before{content:"\f6d6"}.bx-shape-unite:before{content:"\f6d7"}.bx-shapes-alt-2:before{content:"\f6d8"}.bx-shapes-alt:before{content:"\f6d9"}.bx-shapes:before{content:"\f6da"}.bx-share:before{content:"\f6db"}.bx-shekel:before{content:"\f6dc"}.bx-shield-alt-2:before{content:"\f6dd"}.bx-shield-alt:before{content:"\f6de"}.bx-shield-circle:before{content:"\f6df"}.bx-shield-half:before{content:"\f6e0"}.bx-shield-quarter:before{content:"\f6e1"}.bx-shield:before{content:"\f6e2"}.bx-shinto:before{content:"\f6e3"}.bx-ship:before{content:"\f6e4"}.bx-shocked:before{content:"\f6e5"}.bx-shopping-bag-alt:before{content:"\f6e6"}.bx-shopping-bag:before{content:"\f6e7"}.bx-shower:before{content:"\f6e8"}.bx-shrink-left:before{content:"\f6e9"}.bx-shrink-right:before{content:"\f6ea"}.bx-shuffle:before{content:"\f6eb"}.bx-shutter-alt:before{content:"\f6ec"}.bx-shutter:before{content:"\f6ed"}.bx-shuttlecock:before{content:"\f6ee"}.bx-sidebar-right:before{content:"\f6ef"}.bx-sidebar:before{content:"\f6f0"}.bx-sigma:before{content:"\f6f1"}.bx-signal-1:before{content:"\f6f2"}.bx-signal-2:before{content:"\f6f3"}.bx-signal-3:before{content:"\f6f4"}.bx-signal-4:before{content:"\f6f5"}.bx-signal-5:before{content:"\f6f6"}.bx-signal-slash:before{content:"\f6f7"}.bx-signature:before{content:"\f6f8"}.bx-sikhism:before{content:"\f6f9"}.bx-sine-wave:before{content:"\f6fa"}.bx-siren-alt:before{content:"\f6fb"}.bx-siren:before{content:"\f6fc"}.bx-sitemap:before{content:"\f6fd"}.bx-size-distort:before{content:"\f6fe"}.bx-size-freeform:before{content:"\f6ff"}.bx-size-uniform:before{content:"\f700"}.bx-size-warp:before{content:"\f701"}.bx-skateboard:before{content:"\f702"}.bx-skip-next-circle:before{content:"\f703"}.bx-skip-next:before{content:"\f704"}.bx-skip-previous-circle:before{content:"\f705"}.bx-skip-previous:before{content:"\f706"}.bx-skirt:before{content:"\f707"}.bx-skull:before{content:"\f708"}.bx-sleepy:before{content:"\f709"}.bx-slice:before{content:"\f70a"}.bx-slider-alt:before{content:"\f70b"}.bx-slider-vertical-alt:before{content:"\f70c"}.bx-slider-vertical:before{content:"\f70d"}.bx-slider:before{content:"\f70e"}.bx-slideshow:before{content:"\f70f"}.bx-smile:before{content:"\f710"}.bx-smoke-alarm-alt-2:before{content:"\f711"}.bx-smoke-alarm-alt:before{content:"\f712"}.bx-smoke-alarm:before{content:"\f713"}.bx-sneaker:before{content:"\f714"}.bx-snowflake:before{content:"\f715"}.bx-sock:before{content:"\f716"}.bx-solar-panel:before{content:"\f717"}.bx-spa:before{content:"\f718"}.bx-spacebar:before{content:"\f719"}.bx-spade:before{content:"\f71a"}.bx-spanner:before{content:"\f71b"}.bx-sparkle-circle:before{content:"\f71c"}.bx-sparkle-square:before{content:"\f71d"}.bx-sparkle:before{content:"\f71e"}.bx-sparkles-alt:before{content:"\f71f"}.bx-sparkles:before{content:"\f720"}.bx-speaker:before{content:"\f721"}.bx-sphere:before{content:"\f722"}.bx-split:before{content:"\f723"}.bx-spoon:before{content:"\f724"}.bx-spray-can:before{content:"\f725"}.bx-square-dashed-half:before{content:"\f726"}.bx-square-dashed:before{content:"\f727"}.bx-square-root:before{content:"\f728"}.bx-square-rounded:before{content:"\f729"}.bx-square-small:before{content:"\f72a"}.bx-square:before{content:"\f72b"}.bx-squircle:before{content:"\f72c"}.bx-stadium:before{content:"\f72d"}.bx-stamp:before{content:"\f72e"}.bx-star-circle:before{content:"\f72f"}.bx-star-half:before{content:"\f730"}.bx-star-square:before{content:"\f731"}.bx-star:before{content:"\f732"}.bx-station:before{content:"\f733"}.bx-steering-wheel:before{content:"\f734"}.bx-steps-down:before{content:"\f735"}.bx-steps-up:before{content:"\f736"}.bx-sticker:before{content:"\f737"}.bx-stop-circle:before{content:"\f738"}.bx-stop:before{content:"\f739"}.bx-stopwatch:before{content:"\f73a"}.bx-store-alt-2:before{content:"\f73b"}.bx-store-alt:before{content:"\f73c"}.bx-store:before{content:"\f73d"}.bx-strategy:before{content:"\f73e"}.bx-street-view:before{content:"\f73f"}.bx-strikethrough:before{content:"\f740"}.bx-stroke-drawing:before{content:"\f741"}.bx-stroke-freehand:before{content:"\f742"}.bx-stroke-ink:before{content:"\f743"}.bx-stroke-pen:before{content:"\f744"}.bx-subscript:before{content:"\f745"}.bx-subset:before{content:"\f746"}.bx-subway:before{content:"\f747"}.bx-sun-bright:before{content:"\f748"}.bx-sun-dim:before{content:"\f749"}.bx-sun-drizzle:before{content:"\f74a"}.bx-sun-fog:before{content:"\f74b"}.bx-sun-rain-wind:before{content:"\f74c"}.bx-sun-rain:before{content:"\f74d"}.bx-sun-rise:before{content:"\f74e"}.bx-sun-set:before{content:"\f74f"}.bx-sun-snow:before{content:"\f750"}.bx-sun:before{content:"\f751"}.bx-superscript:before{content:"\f752"}.bx-superset:before{content:"\f753"}.bx-surfboard:before{content:"\f754"}.bx-sushi:before{content:"\f755"}.bx-swap-diagonal:before{content:"\f756"}.bx-swap-horizontal:before{content:"\f757"}.bx-swap-vertical:before{content:"\f758"}.bx-swatch:before{content:"\f759"}.bx-swimming-pool:before{content:"\f75a"}.bx-swimming:before{content:"\f75b"}.bx-sword-alt:before{content:"\f75c"}.bx-sword:before{content:"\f75d"}.bx-syringe:before{content:"\f75e"}.bx-t-shirt:before{content:"\f75f"}.bx-tab:before{content:"\f760"}.bx-table-cells-large:before{content:"\f761"}.bx-table-cells:before{content:"\f762"}.bx-table-columns-merge:before{content:"\f763"}.bx-table-columns-split:before{content:"\f764"}.bx-table-columns:before{content:"\f765"}.bx-table-layout:before{content:"\f766"}.bx-table-list:before{content:"\f767"}.bx-table-rows-merge:before{content:"\f768"}.bx-table-rows-split:before{content:"\f769"}.bx-table-rows:before{content:"\f76a"}.bx-table-tennis:before{content:"\f76b"}.bx-table:before{content:"\f76c"}.bx-tablet:before{content:"\f76d"}.bx-tabs:before{content:"\f76e"}.bx-tachometer-alt:before{content:"\f76f"}.bx-tachometer:before{content:"\f770"}.bx-taco:before{content:"\f771"}.bx-tag-alt:before{content:"\f772"}.bx-tag-x:before{content:"\f773"}.bx-tag:before{content:"\f774"}.bx-takeaway:before{content:"\f775"}.bx-target:before{content:"\f776"}.bx-taxi:before{content:"\f777"}.bx-temple:before{content:"\f778"}.bx-tennis-ball-alt:before{content:"\f779"}.bx-tennis-ball:before{content:"\f77a"}.bx-tennis:before{content:"\f77b"}.bx-tent:before{content:"\f77c"}.bx-terminal:before{content:"\f77d"}.bx-test-tube:before{content:"\f77e"}.bx-text-height:before{content:"\f77f"}.bx-text-underline:before{content:"\f780"}.bx-text-width:before{content:"\f781"}.bx-texture:before{content:"\f782"}.bx-thermometer:before{content:"\f783"}.bx-thought-bubble:before{content:"\f784"}.bx-thread-roll:before{content:"\f785"}.bx-thumb-down:before{content:"\f786"}.bx-thumb-up:before{content:"\f787"}.bx-thunder:before{content:"\f788"}.bx-ticket-star:before{content:"\f789"}.bx-ticket:before{content:"\f78a"}.bx-tickets:before{content:"\f78b"}.bx-timer:before{content:"\f78c"}.bx-tiny-home:before{content:"\f78d"}.bx-tired:before{content:"\f78e"}.bx-toggle-big-left:before{content:"\f78f"}.bx-toggle-big-right:before{content:"\f790"}.bx-toggle-left:before{content:"\f791"}.bx-toggle-right:before{content:"\f792"}.bx-toggles:before{content:"\f793"}.bx-toilet-roll:before{content:"\f794"}.bx-tooth:before{content:"\f795"}.bx-torch:before{content:"\f796"}.bx-tornado:before{content:"\f797"}.bx-torus:before{content:"\f798"}.bx-towel:before{content:"\f799"}.bx-toy-car:before{content:"\f79a"}.bx-traffic-barrier:before{content:"\f79b"}.bx-traffic-cone:before{content:"\f79c"}.bx-train:before{content:"\f79d"}.bx-tram:before{content:"\f79e"}.bx-transgender:before{content:"\f79f"}.bx-translate:before{content:"\f7a0"}.bx-transparency:before{content:"\f7a1"}.bx-trash-alt:before{content:"\f7a2"}.bx-trash-x:before{content:"\f7a3"}.bx-trash:before{content:"\f7a4"}.bx-treasure-chest:before{content:"\f7a5"}.bx-tree-alt:before{content:"\f7a6"}.bx-tree:before{content:"\f7a7"}.bx-trees:before{content:"\f7a8"}.bx-trending-down:before{content:"\f7a9"}.bx-trending-up:before{content:"\f7aa"}.bx-triangle-half:before{content:"\f7ab"}.bx-triangle:before{content:"\f7ac"}.bx-trip:before{content:"\f7ad"}.bx-trophy-star:before{content:"\f7ae"}.bx-trophy:before{content:"\f7af"}.bx-truck:before{content:"\f7b0"}.bx-turkey-meat:before{content:"\f7b1"}.bx-turn-down:before{content:"\f7b2"}.bx-turn-left:before{content:"\f7b3"}.bx-turn-right:before{content:"\f7b4"}.bx-turn-up:before{content:"\f7b5"}.bx-tv-alt:before{content:"\f7b6"}.bx-tv:before{content:"\f7b7"}.bx-ufo:before{content:"\f7b8"}.bx-umbrella-alt:before{content:"\f7b9"}.bx-umbrella:before{content:"\f7ba"}.bx-underline-dashed:before{content:"\f7bb"}.bx-underline-dotted:before{content:"\f7bc"}.bx-underline-wavy:before{content:"\f7bd"}.bx-underline:before{content:"\f7be"}.bx-undershirt:before{content:"\f7bf"}.bx-undo-alt:before{content:"\f7c0"}.bx-undo-stroke-alt:before{content:"\f7c1"}.bx-undo-stroke:before{content:"\f7c2"}.bx-undo:before{content:"\f7c3"}.bx-universal-access:before{content:"\f7c4"}.bx-unlink-alt:before{content:"\f7c5"}.bx-unlink:before{content:"\f7c6"}.bx-uppercase:before{content:"\f7c7"}.bx-upside-down:before{content:"\f7c8"}.bx-usb:before{content:"\f7c9"}.bx-user-check:before{content:"\f7ca"}.bx-user-circle:before{content:"\f7cb"}.bx-user-hexagon:before{content:"\f7cc"}.bx-user-id-card:before{content:"\f7cd"}.bx-user-minus:before{content:"\f7ce"}.bx-user-plus:before{content:"\f7cf"}.bx-user-search:before{content:"\f7d0"}.bx-user-square:before{content:"\f7d1"}.bx-user-voice:before{content:"\f7d2"}.bx-user-x:before{content:"\f7d3"}.bx-user:before{content:"\f7d4"}.bx-van:before{content:"\f7d5"}.bx-variable:before{content:"\f7d6"}.bx-vector-square:before{content:"\f7d7"}.bx-vector-triangle:before{content:"\f7d8"}.bx-vector:before{content:"\f7d9"}.bx-vertical-align-bottom:before{content:"\f7da"}.bx-vertical-align-center:before{content:"\f7db"}.bx-vertical-align-top:before{content:"\f7dc"}.bx-vertical-bottom:before{content:"\f7dd"}.bx-vertical-center:before{content:"\f7de"}.bx-vertical-distribute-bottom:before{content:"\f7df"}.bx-vertical-distribute-center:before{content:"\f7e0"}.bx-vertical-distribute-top:before{content:"\f7e1"}.bx-vertical-spacing:before{content:"\f7e2"}.bx-vertical-top:before{content:"\f7e3"}.bx-vial-alt:before{content:"\f7e4"}.bx-vial:before{content:"\f7e5"}.bx-video-cinema:before{content:"\f7e6"}.bx-video-plus:before{content:"\f7e7"}.bx-video-slash:before{content:"\f7e8"}.bx-video:before{content:"\f7e9"}.bx-vignette:before{content:"\f7ea"}.bx-virus-slash:before{content:"\f7eb"}.bx-virus:before{content:"\f7ec"}.bx-voicemail:before{content:"\f7ed"}.bx-volleyball:before{content:"\f7ee"}.bx-volume-full:before{content:"\f7ef"}.bx-volume-low:before{content:"\f7f0"}.bx-volume-mute:before{content:"\f7f1"}.bx-volume:before{content:"\f7f2"}.bx-vr-goggles:before{content:"\f7f3"}.bx-vr-headset:before{content:"\f7f4"}.bx-waffle:before{content:"\f7f5"}.bx-walking:before{content:"\f7f6"}.bx-wall:before{content:"\f7f7"}.bx-wallet-alt:before{content:"\f7f8"}.bx-wallet-cards:before{content:"\f7f9"}.bx-wallet-note:before{content:"\f7fa"}.bx-wallet:before{content:"\f7fb"}.bx-warehouse:before{content:"\f7fc"}.bx-washer:before{content:"\f7fd"}.bx-water-drop-alt:before{content:"\f7fe"}.bx-water-drop-half:before{content:"\f7ff"}.bx-water-drop:before{content:"\f800"}.bx-water-spray:before{content:"\f801"}.bx-water:before{content:"\f802"}.bx-watermelon:before{content:"\f803"}.bx-waveform:before{content:"\f804"}.bx-webcam:before{content:"\f805"}.bx-webhook:before{content:"\f806"}.bx-whiteboard-alt:before{content:"\f807"}.bx-whiteboard:before{content:"\f808"}.bx-widget-horizontal:before{content:"\f809"}.bx-widget-small:before{content:"\f80a"}.bx-widget-vertical:before{content:"\f80b"}.bx-widget:before{content:"\f80c"}.bx-wifi-0:before{content:"\f80d"}.bx-wifi-1:before{content:"\f80e"}.bx-wifi-2:before{content:"\f80f"}.bx-wifi-slash:before{content:"\f810"}.bx-wifi:before{content:"\f811"}.bx-wind:before{content:"\f812"}.bx-window-arrow-in:before{content:"\f813"}.bx-window-arrow-out:before{content:"\f814"}.bx-window-mac-alt:before{content:"\f815"}.bx-window-mac:before{content:"\f816"}.bx-window:before{content:"\f817"}.bx-windows:before{content:"\f818"}.bx-wine-alt:before{content:"\f819"}.bx-wine:before{content:"\f81a"}.bx-wink-smile:before{content:"\f81b"}.bx-wink-tongue:before{content:"\f81c"}.bx-woman:before{content:"\f81d"}.bx-won:before{content:"\f81e"}.bx-wrist-watch-alt:before{content:"\f81f"}.bx-wrist-watch-round-alt:before{content:"\f820"}.bx-wrist-watch-round:before{content:"\f821"}.bx-wrist-watch:before{content:"\f822"}.bx-x-circle:before{content:"\f823"}.bx-x-shield:before{content:"\f824"}.bx-x-square:before{content:"\f825"}.bx-x:before{content:"\f826"}.bx-yarn-ball:before{content:"\f827"}.bx-yen:before{content:"\f828"}.bx-yin-yang:before{content:"\f829"}.bxs-8-ball:before{content:"\f82a"}.bxs-a-arrow-down:before{content:"\f82b"}.bxs-a-arrow-up:before{content:"\f82c"}.bxs-accessibility:before{content:"\f82d"}.bxs-acorn:before{content:"\f82e"}.bxs-address-book:before{content:"\f82f"}.bxs-air-conditioner:before{content:"\f830"}.bxs-air:before{content:"\f831"}.bxs-airplay:before{content:"\f832"}.bxs-alarm-alt:before{content:"\f833"}.bxs-alarm-check:before{content:"\f834"}.bxs-alarm-exclamation:before{content:"\f835"}.bxs-alarm-minus:before{content:"\f836"}.bxs-alarm-plus:before{content:"\f837"}.bxs-alarm-slash:before{content:"\f838"}.bxs-alarm-z:before{content:"\f839"}.bxs-alarm:before{content:"\f83a"}.bxs-album-covers:before{content:"\f83b"}.bxs-alert-circle:before{content:"\f83c"}.bxs-alert-octagon:before{content:"\f83d"}.bxs-alert-shield:before{content:"\f83e"}.bxs-alert-square:before{content:"\f83f"}.bxs-alert-triangle:before{content:"\f840"}.bxs-alien:before{content:"\f841"}.bxs-align-center:before{content:"\f842"}.bxs-align-horizontal-justify-center:before{content:"\f843"}.bxs-align-horizontal-justify-end:before{content:"\f844"}.bxs-align-horizontal-justify-start:before{content:"\f845"}.bxs-align-horizontal-space-between:before{content:"\f846"}.bxs-align-justify:before{content:"\f847"}.bxs-align-left:before{content:"\f848"}.bxs-align-right:before{content:"\f849"}.bxs-align-vertical-justify-center:before{content:"\f84a"}.bxs-align-vertical-justify-end:before{content:"\f84b"}.bxs-align-vertical-justify-start:before{content:"\f84c"}.bxs-align-vertical-space-between:before{content:"\f84d"}.bxs-ambulance:before{content:"\f84e"}.bxs-ampersand:before{content:"\f84f"}.bxs-analyze:before{content:"\f850"}.bxs-anchor:before{content:"\f851"}.bxs-angle:before{content:"\f852"}.bxs-angry:before{content:"\f853"}.bxs-animation-bounce:before{content:"\f854"}.bxs-apartment:before{content:"\f855"}.bxs-approximate:before{content:"\f856"}.bxs-apps-alt:before{content:"\f857"}.bxs-apps:before{content:"\f858"}.bxs-arch:before{content:"\f859"}.bxs-archive-alt:before{content:"\f85a"}.bxs-archive-arrow-down:before{content:"\f85b"}.bxs-archive-arrow-up:before{content:"\f85c"}.bxs-archive:before{content:"\f85d"}.bxs-area:before{content:"\f85e"}.bxs-arrow-big-down-line:before{content:"\f85f"}.bxs-arrow-big-down:before{content:"\f860"}.bxs-arrow-big-left-line:before{content:"\f861"}.bxs-arrow-big-left:before{content:"\f862"}.bxs-arrow-big-right-line:before{content:"\f863"}.bxs-arrow-big-right:before{content:"\f864"}.bxs-arrow-big-up-line:before{content:"\f865"}.bxs-arrow-big-up:before{content:"\f866"}.bxs-arrow-cross:before{content:"\f867"}.bxs-arrow-down-a-z:before{content:"\f868"}.bxs-arrow-down-circle:before{content:"\f869"}.bxs-arrow-down-left-circle:before{content:"\f86a"}.bxs-arrow-down-left-square:before{content:"\f86b"}.bxs-arrow-down-left-stroke-circle:before{content:"\f86c"}.bxs-arrow-down-left-stroke-square:before{content:"\f86d"}.bxs-arrow-down-left-stroke:before{content:"\f86e"}.bxs-arrow-down-left:before{content:"\f86f"}.bxs-arrow-down-narrow-wide:before{content:"\f870"}.bxs-arrow-down-right-circle:before{content:"\f871"}.bxs-arrow-down-right-square:before{content:"\f872"}.bxs-arrow-down-right-stroke-circle:before{content:"\f873"}.bxs-arrow-down-right-stroke-square:before{content:"\f874"}.bxs-arrow-down-right-stroke:before{content:"\f875"}.bxs-arrow-down-right:before{content:"\f876"}.bxs-arrow-down-square:before{content:"\f877"}.bxs-arrow-down-stroke-circle:before{content:"\f878"}.bxs-arrow-down-stroke-square:before{content:"\f879"}.bxs-arrow-down-stroke:before{content:"\f87a"}.bxs-arrow-down-up:before{content:"\f87b"}.bxs-arrow-down-wide-narrow:before{content:"\f87c"}.bxs-arrow-down:before{content:"\f87d"}.bxs-arrow-from-bottom-stroke:before{content:"\f87e"}.bxs-arrow-from-bottom:before{content:"\f87f"}.bxs-arrow-from-left-stroke:before{content:"\f880"}.bxs-arrow-from-left:before{content:"\f881"}.bxs-arrow-from-right-stroke:before{content:"\f882"}.bxs-arrow-from-right:before{content:"\f883"}.bxs-arrow-from-top-stroke:before{content:"\f884"}.bxs-arrow-from-top:before{content:"\f885"}.bxs-arrow-in-down-circle-half:before{content:"\f886"}.bxs-arrow-in-down-left-circle:before{content:"\f887"}.bxs-arrow-in-down-left-square:before{content:"\f888"}.bxs-arrow-in-down-left-stroke-circle:before{content:"\f889"}.bxs-arrow-in-down-left-stroke-square:before{content:"\f88a"}.bxs-arrow-in-down-right-circle:before{content:"\f88b"}.bxs-arrow-in-down-right-square:before{content:"\f88c"}.bxs-arrow-in-down-right-stroke-circle:before{content:"\f88d"}.bxs-arrow-in-down-right-stroke-square:before{content:"\f88e"}.bxs-arrow-in-down-square-half:before{content:"\f88f"}.bxs-arrow-in-down-stroke-circle-half:before{content:"\f890"}.bxs-arrow-in-left-circle-half:before{content:"\f891"}.bxs-arrow-in-left-square-half:before{content:"\f892"}.bxs-arrow-in-left-stroke-circle-half:before{content:"\f893"}.bxs-arrow-in-right-circle-half:before{content:"\f894"}.bxs-arrow-in-right-square-half:before{content:"\f895"}.bxs-arrow-in-right-stroke-circle-half:before{content:"\f896"}.bxs-arrow-in-up-circle-half:before{content:"\f897"}.bxs-arrow-in-up-left-circle:before{content:"\f898"}.bxs-arrow-in-up-left-square:before{content:"\f899"}.bxs-arrow-in-up-left-stroke-circle:before{content:"\f89a"}.bxs-arrow-in-up-left-stroke-square:before{content:"\f89b"}.bxs-arrow-in-up-right-circle:before{content:"\f89c"}.bxs-arrow-in-up-right-square:before{content:"\f89d"}.bxs-arrow-in-up-right-stroke-circle:before{content:"\f89e"}.bxs-arrow-in-up-right-stroke-square:before{content:"\f89f"}.bxs-arrow-in-up-square-half:before{content:"\f8a0"}.bxs-arrow-in-up-stroke-circle-half:before{content:"\f8a1"}.bxs-arrow-left-circle:before{content:"\f8a2"}.bxs-arrow-left-right:before{content:"\f8a3"}.bxs-arrow-left-square:before{content:"\f8a4"}.bxs-arrow-left-stroke-circle:before{content:"\f8a5"}.bxs-arrow-left-stroke-square:before{content:"\f8a6"}.bxs-arrow-left-stroke:before{content:"\f8a7"}.bxs-arrow-left:before{content:"\f8a8"}.bxs-arrow-out-down-circle-half:before{content:"\f8a9"}.bxs-arrow-out-down-left-circle:before{content:"\f8aa"}.bxs-arrow-out-down-left-square:before{content:"\f8ab"}.bxs-arrow-out-down-left-stroke-circle:before{content:"\f8ac"}.bxs-arrow-out-down-left-stroke-square:before{content:"\f8ad"}.bxs-arrow-out-down-right-circle:before{content:"\f8ae"}.bxs-arrow-out-down-right-square:before{content:"\f8af"}.bxs-arrow-out-down-right-stroke-circle:before{content:"\f8b0"}.bxs-arrow-out-down-right-stroke-square:before{content:"\f8b1"}.bxs-arrow-out-down-square-half:before{content:"\f8b2"}.bxs-arrow-out-down-stroke-circle-half:before{content:"\f8b3"}.bxs-arrow-out-left-circle-half:before{content:"\f8b4"}.bxs-arrow-out-left-square-half:before{content:"\f8b5"}.bxs-arrow-out-left-stroke-circle-half:before{content:"\f8b6"}.bxs-arrow-out-right-circle-half:before{content:"\f8b7"}.bxs-arrow-out-right-square-half:before{content:"\f8b8"}.bxs-arrow-out-right-stroke-circle-half:before{content:"\f8b9"}.bxs-arrow-out-up-circle-half:before{content:"\f8ba"}.bxs-arrow-out-up-left-circle:before{content:"\f8bb"}.bxs-arrow-out-up-left-square:before{content:"\f8bc"}.bxs-arrow-out-up-left-stroke-circle:before{content:"\f8bd"}.bxs-arrow-out-up-left-stroke-square:before{content:"\f8be"}.bxs-arrow-out-up-right-circle:before{content:"\f8bf"}.bxs-arrow-out-up-right-square:before{content:"\f8c0"}.bxs-arrow-out-up-right-stroke-circle:before{content:"\f8c1"}.bxs-arrow-out-up-right-stroke-square:before{content:"\f8c2"}.bxs-arrow-out-up-square-half:before{content:"\f8c3"}.bxs-arrow-out-up-stroke-circle-half:before{content:"\f8c4"}.bxs-arrow-right-circle:before{content:"\f8c5"}.bxs-arrow-right-left:before{content:"\f8c6"}.bxs-arrow-right-square:before{content:"\f8c7"}.bxs-arrow-right-stroke-circle:before{content:"\f8c8"}.bxs-arrow-right-stroke-square:before{content:"\f8c9"}.bxs-arrow-right-stroke:before{content:"\f8ca"}.bxs-arrow-right:before{content:"\f8cb"}.bxs-arrow-s-down:before{content:"\f8cc"}.bxs-arrow-s-left:before{content:"\f8cd"}.bxs-arrow-s-right:before{content:"\f8ce"}.bxs-arrow-s-up:before{content:"\f8cf"}.bxs-arrow-to-bottom-stroke:before{content:"\f8d0"}.bxs-arrow-to-bottom:before{content:"\f8d1"}.bxs-arrow-to-left-stroke:before{content:"\f8d2"}.bxs-arrow-to-left:before{content:"\f8d3"}.bxs-arrow-to-right-stroke:before{content:"\f8d4"}.bxs-arrow-to-right:before{content:"\f8d5"}.bxs-arrow-to-top-stroke:before{content:"\f8d6"}.bxs-arrow-to-top:before{content:"\f8d7"}.bxs-arrow-up-a-z:before{content:"\f8d8"}.bxs-arrow-up-circle:before{content:"\f8d9"}.bxs-arrow-up-down:before{content:"\f8da"}.bxs-arrow-up-left-circle:before{content:"\f8db"}.bxs-arrow-up-left-square:before{content:"\f8dc"}.bxs-arrow-up-left-stroke-circle:before{content:"\f8dd"}.bxs-arrow-up-left-stroke-square:before{content:"\f8de"}.bxs-arrow-up-left-stroke:before{content:"\f8df"}.bxs-arrow-up-left:before{content:"\f8e0"}.bxs-arrow-up-narrow-wide:before{content:"\f8e1"}.bxs-arrow-up-right-circle:before{content:"\f8e2"}.bxs-arrow-up-right-square:before{content:"\f8e3"}.bxs-arrow-up-right-stroke-circle:before{content:"\f8e4"}.bxs-arrow-up-right-stroke-square:before{content:"\f8e5"}.bxs-arrow-up-right-stroke:before{content:"\f8e6"}.bxs-arrow-up-right:before{content:"\f8e7"}.bxs-arrow-up-square:before{content:"\f8e8"}.bxs-arrow-up-stroke-circle:before{content:"\f8e9"}.bxs-arrow-up-stroke-square:before{content:"\f8ea"}.bxs-arrow-up-stroke:before{content:"\f8eb"}.bxs-arrow-up-wide-narrow:before{content:"\f8ec"}.bxs-arrow-up:before{content:"\f8ed"}.bxs-article:before{content:"\f8ee"}.bxs-asterisk:before{content:"\f8ef"}.bxs-at:before{content:"\f8f0"}.bxs-atom:before{content:"\f8f1"}.bxs-avocado:before{content:"\f8f2"}.bxs-axe:before{content:"\f8f3"}.bxs-background-color-fill:before{content:"\f8f4"}.bxs-background:before{content:"\f8f5"}.bxs-backpack-star:before{content:"\f8f6"}.bxs-backpack:before{content:"\f8f7"}.bxs-backspace:before{content:"\f8f8"}.bxs-backward-slash:before{content:"\f8f9"}.bxs-bacon:before{content:"\f8fa"}.bxs-badge-check:before{content:"\f8fb"}.bxs-badge-exclamation:before{content:"\f8fc"}.bxs-badge-info:before{content:"\f8fd"}.bxs-badge:before{content:"\f8fe"}.bxs-baguette:before{content:"\f8ff"}.bxs-bahai:before{content:"\f900"}.bxs-balcony:before{content:"\f901"}.bxs-ball-throw:before{content:"\f902"}.bxs-balloon:before{content:"\f903"}.bxs-band-aid:before{content:"\f904"}.bxs-bank:before{content:"\f905"}.bxs-bar-chart-big:before{content:"\f906"}.bxs-bar-chart-square:before{content:"\f907"}.bxs-bar-chart:before{content:"\f908"}.bxs-barcode-square:before{content:"\f909"}.bxs-barcode:before{content:"\f90a"}.bxs-barn:before{content:"\f90b"}.bxs-baseball:before{content:"\f90c"}.bxs-basket:before{content:"\f90d"}.bxs-basketball:before{content:"\f90e"}.bxs-bath:before{content:"\f90f"}.bxs-battery-1:before{content:"\f910"}.bxs-battery-2:before{content:"\f911"}.bxs-battery-3:before{content:"\f912"}.bxs-battery-full:before{content:"\f913"}.bxs-battery-low:before{content:"\f914"}.bxs-battery:before{content:"\f915"}.bxs-beach-ball:before{content:"\f916"}.bxs-beach:before{content:"\f917"}.bxs-beaker:before{content:"\f918"}.bxs-beanie:before{content:"\f919"}.bxs-bear:before{content:"\f91a"}.bxs-bed-alt:before{content:"\f91b"}.bxs-bed:before{content:"\f91c"}.bxs-beer:before{content:"\f91d"}.bxs-bell-check:before{content:"\f91e"}.bxs-bell-minus:before{content:"\f91f"}.bxs-bell-plus:before{content:"\f920"}.bxs-bell-ring:before{content:"\f921"}.bxs-bell-slash:before{content:"\f922"}.bxs-bell:before{content:"\f923"}.bxs-bench:before{content:"\f924"}.bxs-between-horizontal-end:before{content:"\f925"}.bxs-between-horizontal-start:before{content:"\f926"}.bxs-between-vertical-end:before{content:"\f927"}.bxs-between-vertical-start:before{content:"\f928"}.bxs-bible:before{content:"\f929"}.bxs-biceps:before{content:"\f92a"}.bxs-binocular:before{content:"\f92b"}.bxs-bird-alt:before{content:"\f92c"}.bxs-bird:before{content:"\f92d"}.bxs-birthday-cake:before{content:"\f92e"}.bxs-bitcoin:before{content:"\f92f"}.bxs-blanket:before{content:"\f930"}.bxs-blob:before{content:"\f931"}.bxs-block:before{content:"\f932"}.bxs-blockquote:before{content:"\f933"}.bxs-blocks:before{content:"\f934"}.bxs-bluetooth:before{content:"\f935"}.bxs-blur-alt:before{content:"\f936"}.bxs-blur:before{content:"\f937"}.bxs-body:before{content:"\f938"}.bxs-bold:before{content:"\f939"}.bxs-bolt-alt:before{content:"\f93a"}.bxs-bolt-circle:before{content:"\f93b"}.bxs-bolt-square:before{content:"\f93c"}.bxs-bolt:before{content:"\f93d"}.bxs-bomb:before{content:"\f93e"}.bxs-bone:before{content:"\f93f"}.bxs-bong:before{content:"\f940"}.bxs-book-add:before{content:"\f941"}.bxs-book-alt:before{content:"\f942"}.bxs-book-bookmark:before{content:"\f943"}.bxs-book-content:before{content:"\f944"}.bxs-book-heart:before{content:"\f945"}.bxs-book-library:before{content:"\f946"}.bxs-book-open:before{content:"\f947"}.bxs-book:before{content:"\f948"}.bxs-bookmark-alt:before{content:"\f949"}.bxs-bookmark-heart:before{content:"\f94a"}.bxs-bookmark-minus-alt:before{content:"\f94b"}.bxs-bookmark-minus:before{content:"\f94c"}.bxs-bookmark-plus-alt:before{content:"\f94d"}.bxs-bookmark-plus:before{content:"\f94e"}.bxs-bookmark-star:before{content:"\f94f"}.bxs-bookmark-x:before{content:"\f950"}.bxs-bookmark:before{content:"\f951"}.bxs-bookmarks:before{content:"\f952"}.bxs-boombox:before{content:"\f953"}.bxs-boot:before{content:"\f954"}.bxs-border-all:before{content:"\f955"}.bxs-border-bottom:before{content:"\f956"}.bxs-border-inner:before{content:"\f957"}.bxs-border-left:before{content:"\f958"}.bxs-border-none:before{content:"\f959"}.bxs-border-outer:before{content:"\f95a"}.bxs-border-radius:before{content:"\f95b"}.bxs-border-right:before{content:"\f95c"}.bxs-border-top:before{content:"\f95d"}.bxs-bow:before{content:"\f95e"}.bxs-bowl-balls:before{content:"\f95f"}.bxs-bowl-bubbles:before{content:"\f960"}.bxs-bowl-hot:before{content:"\f961"}.bxs-bowl-noodles-alt:before{content:"\f962"}.bxs-bowl-noodles:before{content:"\f963"}.bxs-bowl-rice:before{content:"\f964"}.bxs-bowling-ball:before{content:"\f965"}.bxs-box-alt:before{content:"\f966"}.bxs-box:before{content:"\f967"}.bxs-bracket-curly:before{content:"\f968"}.bxs-bracket-round:before{content:"\f969"}.bxs-bracket:before{content:"\f96a"}.bxs-braille:before{content:"\f96b"}.bxs-brain-circuit:before{content:"\f96c"}.bxs-brain:before{content:"\f96d"}.bxs-bread:before{content:"\f96e"}.bxs-brick:before{content:"\f96f"}.bxs-bridge:before{content:"\f970"}.bxs-briefcase-alt-2:before{content:"\f971"}.bxs-briefcase-alt:before{content:"\f972"}.bxs-briefcase:before{content:"\f973"}.bxs-brightness-half:before{content:"\f974"}.bxs-brightness:before{content:"\f975"}.bxs-broadcast:before{content:"\f976"}.bxs-browser-activity:before{content:"\f977"}.bxs-brush-sparkles:before{content:"\f978"}.bxs-brush:before{content:"\f979"}.bxs-buddhism:before{content:"\f97a"}.bxs-bug-alt:before{content:"\f97b"}.bxs-bug:before{content:"\f97c"}.bxs-building-house:before{content:"\f97d"}.bxs-building:before{content:"\f97e"}.bxs-buildings:before{content:"\f97f"}.bxs-bullseye:before{content:"\f980"}.bxs-buoy:before{content:"\f981"}.bxs-burger-alt:before{content:"\f982"}.bxs-burger:before{content:"\f983"}.bxs-bus:before{content:"\f984"}.bxs-business:before{content:"\f985"}.bxs-button-rounded:before{content:"\f986"}.bxs-button:before{content:"\f987"}.bxs-cabinet:before{content:"\f988"}.bxs-cable-car:before{content:"\f989"}.bxs-cake-slice:before{content:"\f98a"}.bxs-calculator:before{content:"\f98b"}.bxs-calendar-alt-2:before{content:"\f98c"}.bxs-calendar-alt:before{content:"\f98d"}.bxs-calendar-check:before{content:"\f98e"}.bxs-calendar-cog:before{content:"\f98f"}.bxs-calendar-detail:before{content:"\f990"}.bxs-calendar-down-arrow:before{content:"\f991"}.bxs-calendar-event:before{content:"\f992"}.bxs-calendar-heart:before{content:"\f993"}.bxs-calendar-minus:before{content:"\f994"}.bxs-calendar-plus:before{content:"\f995"}.bxs-calendar-search:before{content:"\f996"}.bxs-calendar-star:before{content:"\f997"}.bxs-calendar-up-arrow:before{content:"\f998"}.bxs-calendar-week:before{content:"\f999"}.bxs-calendar-x:before{content:"\f99a"}.bxs-calendar:before{content:"\f99b"}.bxs-camcoder:before{content:"\f99c"}.bxs-camera-alt:before{content:"\f99d"}.bxs-camera-flip:before{content:"\f99e"}.bxs-camera-home:before{content:"\f99f"}.bxs-camera-monochrome:before{content:"\f9a0"}.bxs-camera-plus:before{content:"\f9a1"}.bxs-camera-portrait:before{content:"\f9a2"}.bxs-camera-slash:before{content:"\f9a3"}.bxs-camera-switch:before{content:"\f9a4"}.bxs-camera:before{content:"\f9a5"}.bxs-campfire:before{content:"\f9a6"}.bxs-camping:before{content:"\f9a7"}.bxs-candlestick:before{content:"\f9a8"}.bxs-cannabis:before{content:"\f9a9"}.bxs-cap:before{content:"\f9aa"}.bxs-capitalize:before{content:"\f9ab"}.bxs-capsule:before{content:"\f9ac"}.bxs-captions-cc:before{content:"\f9ad"}.bxs-captions:before{content:"\f9ae"}.bxs-capture:before{content:"\f9af"}.bxs-car-battery:before{content:"\f9b0"}.bxs-car-key:before{content:"\f9b1"}.bxs-car:before{content:"\f9b2"}.bxs-card-view-large:before{content:"\f9b3"}.bxs-card-view-no-title:before{content:"\f9b4"}.bxs-card-view-small:before{content:"\f9b5"}.bxs-card-view-tiles:before{content:"\f9b6"}.bxs-card-view:before{content:"\f9b7"}.bxs-caret-big-down:before{content:"\f9b8"}.bxs-caret-big-left:before{content:"\f9b9"}.bxs-caret-big-right:before{content:"\f9ba"}.bxs-caret-big-up:before{content:"\f9bb"}.bxs-caret-down-circle:before{content:"\f9bc"}.bxs-caret-down-square:before{content:"\f9bd"}.bxs-caret-down:before{content:"\f9be"}.bxs-caret-left-circle:before{content:"\f9bf"}.bxs-caret-left-square:before{content:"\f9c0"}.bxs-caret-left:before{content:"\f9c1"}.bxs-caret-right-circle:before{content:"\f9c2"}.bxs-caret-right-square:before{content:"\f9c3"}.bxs-caret-right:before{content:"\f9c4"}.bxs-caret-up-circle:before{content:"\f9c5"}.bxs-caret-up-square:before{content:"\f9c6"}.bxs-caret-up:before{content:"\f9c7"}.bxs-carets-down-up:before{content:"\f9c8"}.bxs-carets-left-right:before{content:"\f9c9"}.bxs-carets-right-left:before{content:"\f9ca"}.bxs-carets-up-down:before{content:"\f9cb"}.bxs-carrot:before{content:"\f9cc"}.bxs-cart-minus:before{content:"\f9cd"}.bxs-cart-plus:before{content:"\f9ce"}.bxs-cart:before{content:"\f9cf"}.bxs-cast:before{content:"\f9d0"}.bxs-castle:before{content:"\f9d1"}.bxs-cat:before{content:"\f9d2"}.bxs-categories:before{content:"\f9d3"}.bxs-cctv:before{content:"\f9d4"}.bxs-certification:before{content:"\f9d5"}.bxs-chair:before{content:"\f9d6"}.bxs-champagne:before{content:"\f9d7"}.bxs-chart-area:before{content:"\f9d8"}.bxs-chart-bar-big-columns:before{content:"\f9d9"}.bxs-chart-bar-big-rows:before{content:"\f9da"}.bxs-chart-bar-columns:before{content:"\f9db"}.bxs-chart-bar-rows:before{content:"\f9dc"}.bxs-chart-bubble:before{content:"\f9dd"}.bxs-chart-gantt:before{content:"\f9de"}.bxs-chart-line:before{content:"\f9df"}.bxs-chart-network:before{content:"\f9e0"}.bxs-chart-scatter:before{content:"\f9e1"}.bxs-chart-spline:before{content:"\f9e2"}.bxs-chart-stacked-columns:before{content:"\f9e3"}.bxs-chart-stacked-rows:before{content:"\f9e4"}.bxs-chart-trend:before{content:"\f9e5"}.bxs-check-circle:before{content:"\f9e6"}.bxs-check-shield:before{content:"\f9e7"}.bxs-check-square:before{content:"\f9e8"}.bxs-check:before{content:"\f9e9"}.bxs-checkbox-checked:before{content:"\f9ea"}.bxs-checkbox-square:before{content:"\f9eb"}.bxs-checkbox:before{content:"\f9ec"}.bxs-checklist:before{content:"\f9ed"}.bxs-checks:before{content:"\f9ee"}.bxs-cheese:before{content:"\f9ef"}.bxs-chef-hat:before{content:"\f9f0"}.bxs-cherry:before{content:"\f9f1"}.bxs-chess-bishop:before{content:"\f9f2"}.bxs-chess-king:before{content:"\f9f3"}.bxs-chess-knight:before{content:"\f9f4"}.bxs-chess-pawn:before{content:"\f9f5"}.bxs-chess-queen:before{content:"\f9f6"}.bxs-chess-rook:before{content:"\f9f7"}.bxs-chess:before{content:"\f9f8"}.bxs-chevron-down-circle:before{content:"\f9f9"}.bxs-chevron-down-square:before{content:"\f9fa"}.bxs-chevron-down:before{content:"\f9fb"}.bxs-chevron-left-circle:before{content:"\f9fc"}.bxs-chevron-left-square:before{content:"\f9fd"}.bxs-chevron-left:before{content:"\f9fe"}.bxs-chevron-right-circle:before{content:"\f9ff"}.bxs-chevron-right-square:before{content:"\fa00"}.bxs-chevron-right:before{content:"\fa01"}.bxs-chevron-up-circle:before{content:"\fa02"}.bxs-chevron-up-square:before{content:"\fa03"}.bxs-chevron-up:before{content:"\fa04"}.bxs-chevrons-down-up:before{content:"\fa05"}.bxs-chevrons-down:before{content:"\fa06"}.bxs-chevrons-left-right:before{content:"\fa07"}.bxs-chevrons-left:before{content:"\fa08"}.bxs-chevrons-right-left:before{content:"\fa09"}.bxs-chevrons-right:before{content:"\fa0a"}.bxs-chevrons-up-down:before{content:"\fa0b"}.bxs-chevrons-up:before{content:"\fa0c"}.bxs-child:before{content:"\fa0d"}.bxs-chip:before{content:"\fa0e"}.bxs-christianity:before{content:"\fa0f"}.bxs-church:before{content:"\fa10"}.bxs-cigarette:before{content:"\fa11"}.bxs-circle-dashed-half:before{content:"\fa12"}.bxs-circle-dashed:before{content:"\fa13"}.bxs-circle-half-alt:before{content:"\fa14"}.bxs-circle-half:before{content:"\fa15"}.bxs-circle-hexagon:before{content:"\fa16"}.bxs-circle-outer-dashed-circle:before{content:"\fa17"}.bxs-circle-quarter-alt:before{content:"\fa18"}.bxs-circle-quarter:before{content:"\fa19"}.bxs-circle-three-quarter-alt:before{content:"\fa1a"}.bxs-circle-three-quarter:before{content:"\fa1b"}.bxs-circle:before{content:"\fa1c"}.bxs-circles-9:before{content:"\fa1d"}.bxs-circles-alt:before{content:"\fa1e"}.bxs-circles:before{content:"\fa1f"}.bxs-circuit-board:before{content:"\fa20"}.bxs-city:before{content:"\fa21"}.bxs-clipboard-check:before{content:"\fa22"}.bxs-clipboard-code:before{content:"\fa23"}.bxs-clipboard-detail:before{content:"\fa24"}.bxs-clipboard-minus:before{content:"\fa25"}.bxs-clipboard-plus:before{content:"\fa26"}.bxs-clipboard-x:before{content:"\fa27"}.bxs-clipboard:before{content:"\fa28"}.bxs-clock-1:before{content:"\fa29"}.bxs-clock-10:before{content:"\fa2a"}.bxs-clock-11:before{content:"\fa2b"}.bxs-clock-12:before{content:"\fa2c"}.bxs-clock-2:before{content:"\fa2d"}.bxs-clock-3:before{content:"\fa2e"}.bxs-clock-4:before{content:"\fa2f"}.bxs-clock-5:before{content:"\fa30"}.bxs-clock-6:before{content:"\fa31"}.bxs-clock-7:before{content:"\fa32"}.bxs-clock-8:before{content:"\fa33"}.bxs-clock-9:before{content:"\fa34"}.bxs-clock-dashed-half:before{content:"\fa35"}.bxs-clock:before{content:"\fa36"}.bxs-cloud-alt-2:before{content:"\fa37"}.bxs-cloud-alt:before{content:"\fa38"}.bxs-cloud-drizzle:before{content:"\fa39"}.bxs-cloud-fog:before{content:"\fa3a"}.bxs-cloud-lightning:before{content:"\fa3b"}.bxs-cloud-moon:before{content:"\fa3c"}.bxs-cloud-rain-wind:before{content:"\fa3d"}.bxs-cloud-rain:before{content:"\fa3e"}.bxs-cloud-snow:before{content:"\fa3f"}.bxs-cloud-sun:before{content:"\fa40"}.bxs-cloud:before{content:"\fa41"}.bxs-clover:before{content:"\fa42"}.bxs-club:before{content:"\fa43"}.bxs-cocktail:before{content:"\fa44"}.bxs-code-alt:before{content:"\fa45"}.bxs-code:before{content:"\fa46"}.bxs-coffee-beans:before{content:"\fa47"}.bxs-coffee-cup:before{content:"\fa48"}.bxs-coffee:before{content:"\fa49"}.bxs-cog:before{content:"\fa4a"}.bxs-cognition:before{content:"\fa4b"}.bxs-coin:before{content:"\fa4c"}.bxs-coins:before{content:"\fa4d"}.bxs-col-resize:before{content:"\fa4e"}.bxs-color-fill:before{content:"\fa4f"}.bxs-color-wheel:before{content:"\fa50"}.bxs-columns-3:before{content:"\fa51"}.bxs-columns-4:before{content:"\fa52"}.bxs-columns:before{content:"\fa53"}.bxs-comic-bubble:before{content:"\fa54"}.bxs-command:before{content:"\fa55"}.bxs-community:before{content:"\fa56"}.bxs-compare-alt:before{content:"\fa57"}.bxs-compare:before{content:"\fa58"}.bxs-compass:before{content:"\fa59"}.bxs-component:before{content:"\fa5a"}.bxs-computer:before{content:"\fa5b"}.bxs-confused:before{content:"\fa5c"}.bxs-connector:before{content:"\fa5d"}.bxs-contact-book:before{content:"\fa5e"}.bxs-contrast:before{content:"\fa5f"}.bxs-cookie:before{content:"\fa60"}.bxs-cool:before{content:"\fa61"}.bxs-copy-check:before{content:"\fa62"}.bxs-copy-list:before{content:"\fa63"}.bxs-copy-minus:before{content:"\fa64"}.bxs-copy-plus:before{content:"\fa65"}.bxs-copy-x:before{content:"\fa66"}.bxs-copy:before{content:"\fa67"}.bxs-copyright:before{content:"\fa68"}.bxs-core:before{content:"\fa69"}.bxs-credit-card-alt:before{content:"\fa6a"}.bxs-credit-card-front:before{content:"\fa6b"}.bxs-credit-card-insert:before{content:"\fa6c"}.bxs-credit-card:before{content:"\fa6d"}.bxs-cricket-ball:before{content:"\fa6e"}.bxs-crop:before{content:"\fa6f"}.bxs-cross-circle:before{content:"\fa70"}.bxs-crosshair:before{content:"\fa71"}.bxs-crown:before{content:"\fa72"}.bxs-crypto-coin:before{content:"\fa73"}.bxs-crypto:before{content:"\fa74"}.bxs-cube-alt:before{content:"\fa75"}.bxs-cube-inside:before{content:"\fa76"}.bxs-cube:before{content:"\fa77"}.bxs-cuboid:before{content:"\fa78"}.bxs-cup-hot:before{content:"\fa79"}.bxs-cup-saucer:before{content:"\fa7a"}.bxs-cup-tea:before{content:"\fa7b"}.bxs-cup:before{content:"\fa7c"}.bxs-cupboard-alt:before{content:"\fa7d"}.bxs-cupboard:before{content:"\fa7e"}.bxs-cupcake:before{content:"\fa7f"}.bxs-currency-note:before{content:"\fa80"}.bxs-currency-notes:before{content:"\fa81"}.bxs-cursor-add:before{content:"\fa82"}.bxs-cursor-cell:before{content:"\fa83"}.bxs-cursor-crosshair-dot:before{content:"\fa84"}.bxs-cursor-crosshair:before{content:"\fa85"}.bxs-cursor-pen:before{content:"\fa86"}.bxs-cursor-pointer:before{content:"\fa87"}.bxs-cursor:before{content:"\fa88"}.bxs-cut:before{content:"\fa89"}.bxs-cycling:before{content:"\fa8a"}.bxs-cylinder:before{content:"\fa8b"}.bxs-dashboard-alt:before{content:"\fa8c"}.bxs-dashboard:before{content:"\fa8d"}.bxs-database-alt:before{content:"\fa8e"}.bxs-database:before{content:"\fa8f"}.bxs-decrease-indent:before{content:"\fa90"}.bxs-delta:before{content:"\fa91"}.bxs-department-store:before{content:"\fa92"}.bxs-desert:before{content:"\fa93"}.bxs-desk:before{content:"\fa94"}.bxs-desktop-alt:before{content:"\fa95"}.bxs-desktop:before{content:"\fa96"}.bxs-devices:before{content:"\fa97"}.bxs-dialpad:before{content:"\fa98"}.bxs-diameter:before{content:"\fa99"}.bxs-diamond-alt:before{content:"\fa9a"}.bxs-diamond:before{content:"\fa9b"}.bxs-diamonds:before{content:"\fa9c"}.bxs-dice-1:before{content:"\fa9d"}.bxs-dice-2:before{content:"\fa9e"}.bxs-dice-3:before{content:"\fa9f"}.bxs-dice-4:before{content:"\faa0"}.bxs-dice-5:before{content:"\faa1"}.bxs-dice-6:before{content:"\faa2"}.bxs-dice-roll:before{content:"\faa3"}.bxs-dino:before{content:"\faa4"}.bxs-directions:before{content:"\faa5"}.bxs-disc:before{content:"\faa6"}.bxs-discount:before{content:"\faa7"}.bxs-discussion:before{content:"\faa8"}.bxs-dish:before{content:"\faa9"}.bxs-dishwasher:before{content:"\faaa"}.bxs-dislike:before{content:"\faab"}.bxs-division:before{content:"\faac"}.bxs-dizzy:before{content:"\faad"}.bxs-dna:before{content:"\faae"}.bxs-dock-bottom-alt:before{content:"\faaf"}.bxs-dock-bottom-arrow:before{content:"\fab0"}.bxs-dock-bottom-left-alt:before{content:"\fab1"}.bxs-dock-bottom-left:before{content:"\fab2"}.bxs-dock-bottom-right-alt:before{content:"\fab3"}.bxs-dock-bottom-right:before{content:"\fab4"}.bxs-dock-bottom:before{content:"\fab5"}.bxs-dock-left-alt:before{content:"\fab6"}.bxs-dock-left-arrow:before{content:"\fab7"}.bxs-dock-left:before{content:"\fab8"}.bxs-dock-right-alt:before{content:"\fab9"}.bxs-dock-right-arrow:before{content:"\faba"}.bxs-dock-right:before{content:"\fabb"}.bxs-dock-top-alt:before{content:"\fabc"}.bxs-dock-top-arrow:before{content:"\fabd"}.bxs-dock-top-left-alt:before{content:"\fabe"}.bxs-dock-top-left:before{content:"\fabf"}.bxs-dock-top-right-alt:before{content:"\fac0"}.bxs-dock-top-right:before{content:"\fac1"}.bxs-dock-top:before{content:"\fac2"}.bxs-dog-alt:before{content:"\fac3"}.bxs-dog:before{content:"\fac4"}.bxs-dollar-circle-stars:before{content:"\fac5"}.bxs-dollar-circle:before{content:"\fac6"}.bxs-dollar:before{content:"\fac7"}.bxs-donate-blood:before{content:"\fac8"}.bxs-donate-heart:before{content:"\fac9"}.bxs-donut:before{content:"\faca"}.bxs-door-open:before{content:"\facb"}.bxs-door:before{content:"\facc"}.bxs-dots-horizontal-rounded-circle:before{content:"\facd"}.bxs-dots-horizontal-rounded:before{content:"\face"}.bxs-dots-horizontal:before{content:"\facf"}.bxs-dots-vertical-rounded-circle:before{content:"\fad0"}.bxs-dots-vertical-rounded:before{content:"\fad1"}.bxs-dots-vertical:before{content:"\fad2"}.bxs-doughnut-chart:before{content:"\fad3"}.bxs-draw-ahead:before{content:"\fad4"}.bxs-draw-behind:before{content:"\fad5"}.bxs-draw-inside:before{content:"\fad6"}.bxs-dress:before{content:"\fad7"}.bxs-dribbling:before{content:"\fad8"}.bxs-dropdown:before{content:"\fad9"}.bxs-dryer:before{content:"\fada"}.bxs-duck:before{content:"\fadb"}.bxs-dumbbell-alt:before{content:"\fadc"}.bxs-dumbbell:before{content:"\fadd"}.bxs-ear-alt:before{content:"\fade"}.bxs-ear-slash:before{content:"\fadf"}.bxs-ear:before{content:"\fae0"}.bxs-earbuds:before{content:"\fae1"}.bxs-earth:before{content:"\fae2"}.bxs-ease-in-out:before{content:"\fae3"}.bxs-ease-in:before{content:"\fae4"}.bxs-ease-out:before{content:"\fae5"}.bxs-edit-alt:before{content:"\fae6"}.bxs-edit:before{content:"\fae7"}.bxs-education:before{content:"\fae8"}.bxs-egg-fried:before{content:"\fae9"}.bxs-egg-yolk:before{content:"\faea"}.bxs-egg:before{content:"\faeb"}.bxs-eject:before{content:"\faec"}.bxs-element-of:before{content:"\faed"}.bxs-empty-set:before{content:"\faee"}.bxs-enter:before{content:"\faef"}.bxs-enterprise:before{content:"\faf0"}.bxs-envelope-alt:before{content:"\faf1"}.bxs-envelope-open:before{content:"\faf2"}.bxs-envelope:before{content:"\faf3"}.bxs-equal-circle:before{content:"\faf4"}.bxs-equal-square:before{content:"\faf5"}.bxs-equal:before{content:"\faf6"}.bxs-equalizer:before{content:"\faf7"}.bxs-eraser:before{content:"\faf8"}.bxs-euro:before{content:"\faf9"}.bxs-ev-station:before{content:"\fafa"}.bxs-expand-left:before{content:"\fafb"}.bxs-expand-right:before{content:"\fafc"}.bxs-explosion:before{content:"\fafd"}.bxs-exposure:before{content:"\fafe"}.bxs-extension:before{content:"\faff"}.bxs-eye-alt:before{content:"\fb00"}.bxs-eye-big:before{content:"\fb01"}.bxs-eye-closed:before{content:"\fb02"}.bxs-eye-slash:before{content:"\fb03"}.bxs-eye:before{content:"\fb04"}.bxs-eyedropper:before{content:"\fb05"}.bxs-face-alt-2:before{content:"\fb06"}.bxs-face-alt-3:before{content:"\fb07"}.bxs-face-alt-4:before{content:"\fb08"}.bxs-face-alt:before{content:"\fb09"}.bxs-face-child:before{content:"\fb0a"}.bxs-face-mask:before{content:"\fb0b"}.bxs-face:before{content:"\fb0c"}.bxs-factory:before{content:"\fb0d"}.bxs-fan:before{content:"\fb0e"}.bxs-fast-forward-circle:before{content:"\fb0f"}.bxs-fast-forward:before{content:"\fb10"}.bxs-feather-alt:before{content:"\fb11"}.bxs-feather-minus:before{content:"\fb12"}.bxs-feather-plus:before{content:"\fb13"}.bxs-feather:before{content:"\fb14"}.bxs-female:before{content:"\fb15"}.bxs-file-code:before{content:"\fb16"}.bxs-file-cog:before{content:"\fb17"}.bxs-file-detail:before{content:"\fb18"}.bxs-file-heart:before{content:"\fb19"}.bxs-file-minus:before{content:"\fb1a"}.bxs-file-plus:before{content:"\fb1b"}.bxs-file-report:before{content:"\fb1c"}.bxs-file-search:before{content:"\fb1d"}.bxs-file-star:before{content:"\fb1f"}.bxs-file-x:before{content:"\fb20"}.bxs-file-zip:before{content:"\fb21"}.bxs-file:before{content:"\fb22"}.bxs-film-roll-alt:before{content:"\fb23"}.bxs-film-roll:before{content:"\fb24"}.bxs-film:before{content:"\fb25"}.bxs-filter:before{content:"\fb26"}.bxs-finger-down:before{content:"\fb27"}.bxs-finger-left:before{content:"\fb28"}.bxs-finger-right:before{content:"\fb29"}.bxs-finger-swipe-down:before{content:"\fb2a"}.bxs-finger-swipe-left:before{content:"\fb2b"}.bxs-finger-swipe-right:before{content:"\fb2c"}.bxs-finger-swipe-up:before{content:"\fb2d"}.bxs-finger-touch:before{content:"\fb2e"}.bxs-finger-up:before{content:"\fb2f"}.bxs-fingerprint:before{content:"\fb30"}.bxs-fire-alt:before{content:"\fb31"}.bxs-fire-extinguisher:before{content:"\fb32"}.bxs-fire:before{content:"\fb33"}.bxs-first:before{content:"\fb34"}.bxs-fish-alt:before{content:"\fb35"}.bxs-fish:before{content:"\fb36"}.bxs-flag-alt-2:before{content:"\fb37"}.bxs-flag-alt-3:before{content:"\fb38"}.bxs-flag-alt:before{content:"\fb39"}.bxs-flag-chequered:before{content:"\fb3a"}.bxs-flag:before{content:"\fb3b"}.bxs-flame:before{content:"\fb3c"}.bxs-flask-round:before{content:"\fb3d"}.bxs-florist:before{content:"\fb3e"}.bxs-flower-alt-2:before{content:"\fb3f"}.bxs-flower-alt:before{content:"\fb40"}.bxs-flower:before{content:"\fb41"}.bxs-folder-check:before{content:"\fb42"}.bxs-folder-code:before{content:"\fb43"}.bxs-folder-cog:before{content:"\fb44"}.bxs-folder-down-arrow:before{content:"\fb45"}.bxs-folder-heart:before{content:"\fb46"}.bxs-folder-minus:before{content:"\fb47"}.bxs-folder-open:before{content:"\fb48"}.bxs-folder-plus:before{content:"\fb49"}.bxs-folder-search:before{content:"\fb4a"}.bxs-folder-star:before{content:"\fb4b"}.bxs-folder-up-arrow:before{content:"\fb4c"}.bxs-folder-x:before{content:"\fb4d"}.bxs-folder-zip:before{content:"\fb4e"}.bxs-folder:before{content:"\fb4f"}.bxs-font-color:before{content:"\fb50"}.bxs-font-family:before{content:"\fb51"}.bxs-food-menu:before{content:"\fb52"}.bxs-food-tag:before{content:"\fb53"}.bxs-football-kick:before{content:"\fb54"}.bxs-football-pitch:before{content:"\fb55"}.bxs-football:before{content:"\fb56"}.bxs-footsteps:before{content:"\fb57"}.bxs-foreground:before{content:"\fb58"}.bxs-fork-knife:before{content:"\fb59"}.bxs-fork-spoon:before{content:"\fb5a"}.bxs-fork:before{content:"\fb5b"}.bxs-form:before{content:"\fb5c"}.bxs-forward-big:before{content:"\fb5d"}.bxs-forward-slash-circle:before{content:"\fb5e"}.bxs-forward-slash-square:before{content:"\fb5f"}.bxs-forward-slash:before{content:"\fb60"}.bxs-forward-stroke:before{content:"\fb61"}.bxs-forward:before{content:"\fb62"}.bxs-frame:before{content:"\fb63"}.bxs-fridge:before{content:"\fb64"}.bxs-fullscreen-exit:before{content:"\fb65"}.bxs-fullscreen:before{content:"\fb66"}.bxs-function:before{content:"\fb67"}.bxs-functions:before{content:"\fb68"}.bxs-future:before{content:"\fb69"}.bxs-gallery-horizontal-end:before{content:"\fb6a"}.bxs-gallery-horizontal:before{content:"\fb6b"}.bxs-gallery-thumbnails:before{content:"\fb6c"}.bxs-gallery-vertical-end:before{content:"\fb6d"}.bxs-gallery-vertical:before{content:"\fb6e"}.bxs-gaming:before{content:"\fb6f"}.bxs-garage:before{content:"\fb70"}.bxs-gavel:before{content:"\fb71"}.bxs-gear:before{content:"\fb72"}.bxs-gem:before{content:"\fb73"}.bxs-gestures:before{content:"\fb74"}.bxs-ghost:before{content:"\fb75"}.bxs-gift:before{content:"\fb76"}.bxs-git-branch:before{content:"\fb77"}.bxs-git-commit:before{content:"\fb78"}.bxs-git-compare:before{content:"\fb79"}.bxs-git-merge-queue:before{content:"\fb7a"}.bxs-git-merge:before{content:"\fb7b"}.bxs-git-pull-request-closed:before{content:"\fb7c"}.bxs-git-pull-request-draft:before{content:"\fb7d"}.bxs-git-pull-request:before{content:"\fb7e"}.bxs-git-repo-forked:before{content:"\fb7f"}.bxs-glasses-alt:before{content:"\fb80"}.bxs-glasses:before{content:"\fb81"}.bxs-globe-africa:before{content:"\fb82"}.bxs-globe-alt-2:before{content:"\fb83"}.bxs-globe-alt:before{content:"\fb84"}.bxs-globe-americas:before{content:"\fb85"}.bxs-globe-antartica:before{content:"\fb86"}.bxs-globe-asia:before{content:"\fb87"}.bxs-globe-europe:before{content:"\fb88"}.bxs-globe-oceania:before{content:"\fb89"}.bxs-globe-stand:before{content:"\fb8a"}.bxs-globe:before{content:"\fb8b"}.bxs-golf-ball:before{content:"\fb8c"}.bxs-gradient:before{content:"\fb8d"}.bxs-greater-than-equal:before{content:"\fb8e"}.bxs-greater-than:before{content:"\fb8f"}.bxs-grid-9:before{content:"\fb90"}.bxs-grid-circle-diagonal-left:before{content:"\fb91"}.bxs-grid-circle-diagonal-right:before{content:"\fb92"}.bxs-grid-circle-plus:before{content:"\fb93"}.bxs-grid-circle:before{content:"\fb94"}.bxs-grid-column-left:before{content:"\fb95"}.bxs-grid-column-right:before{content:"\fb96"}.bxs-grid-lines-3:before{content:"\fb97"}.bxs-grid-lines:before{content:"\fb98"}.bxs-grid-plus:before{content:"\fb99"}.bxs-grid-row-bottom:before{content:"\fb9a"}.bxs-grid-row-top:before{content:"\fb9b"}.bxs-grid-search:before{content:"\fb9c"}.bxs-grid:before{content:"\fb9d"}.bxs-groceries:before{content:"\fb9e"}.bxs-group-alt:before{content:"\fb9f"}.bxs-group:before{content:"\fba0"}.bxs-guitar-amp:before{content:"\fba1"}.bxs-hail:before{content:"\fba2"}.bxs-hand-rock:before{content:"\fba3"}.bxs-hand:before{content:"\fba4"}.bxs-handheld-alt-2:before{content:"\fba5"}.bxs-handheld-alt:before{content:"\fba6"}.bxs-handheld:before{content:"\fba7"}.bxs-handshake:before{content:"\fba8"}.bxs-hanger:before{content:"\fba9"}.bxs-happy-alt:before{content:"\fbaa"}.bxs-happy-beaming:before{content:"\fbab"}.bxs-happy-heart-eyes:before{content:"\fbac"}.bxs-happy:before{content:"\fbad"}.bxs-hard-drive:before{content:"\fbae"}.bxs-hard-hat:before{content:"\fbaf"}.bxs-hashtag:before{content:"\fbb0"}.bxs-hdmi:before{content:"\fbb1"}.bxs-head:before{content:"\fbb2"}.bxs-heading-1:before{content:"\fbb3"}.bxs-heading-2:before{content:"\fbb4"}.bxs-heading-3:before{content:"\fbb5"}.bxs-heading:before{content:"\fbb6"}.bxs-headphone-alt-2:before{content:"\fbb7"}.bxs-headphone-alt:before{content:"\fbb8"}.bxs-headphone-mic:before{content:"\fbb9"}.bxs-headphone:before{content:"\fbba"}.bxs-heart-break:before{content:"\fbbb"}.bxs-heart-circle:before{content:"\fbbc"}.bxs-heart-half:before{content:"\fbbd"}.bxs-heart-plus:before{content:"\fbbe"}.bxs-heart-square:before{content:"\fbbf"}.bxs-heart:before{content:"\fbc0"}.bxs-heat-wave:before{content:"\fbc1"}.bxs-helmet:before{content:"\fbc2"}.bxs-help-circle:before{content:"\fbc3"}.bxs-help-octagon:before{content:"\fbc4"}.bxs-hexagon:before{content:"\fbc5"}.bxs-high-speed-train:before{content:"\fbc6"}.bxs-highlight:before{content:"\fbc7"}.bxs-highlights:before{content:"\fbc8"}.bxs-hinduism:before{content:"\fbc9"}.bxs-history:before{content:"\fbca"}.bxs-home-add:before{content:"\fbcb"}.bxs-home-alt-2:before{content:"\fbcc"}.bxs-home-alt-3:before{content:"\fbcd"}.bxs-home-alt:before{content:"\fbce"}.bxs-home-circle:before{content:"\fbcf"}.bxs-home-heart:before{content:"\fbd0"}.bxs-home:before{content:"\fbd1"}.bxs-honey:before{content:"\fbd2"}.bxs-horizon-sea:before{content:"\fbd3"}.bxs-horizontal-align-center:before{content:"\fbd4"}.bxs-horizontal-align-left:before{content:"\fbd5"}.bxs-horizontal-align-right:before{content:"\fbd6"}.bxs-horizontal-center:before{content:"\fbd7"}.bxs-horizontal-distribute-center:before{content:"\fbd8"}.bxs-horizontal-distribute-left:before{content:"\fbd9"}.bxs-horizontal-distribute-right:before{content:"\fbda"}.bxs-horizontal-left:before{content:"\fbdb"}.bxs-horizontal-right:before{content:"\fbdc"}.bxs-horizontal-spacing:before{content:"\fbdd"}.bxs-hospital:before{content:"\fbde"}.bxs-hot-tub-water:before{content:"\fbdf"}.bxs-hot-tub:before{content:"\fbe0"}.bxs-hot:before{content:"\fbe1"}.bxs-hourglass:before{content:"\fbe2"}.bxs-hurricane:before{content:"\fbe3"}.bxs-icecream:before{content:"\fbe4"}.bxs-iframe:before{content:"\fbe5"}.bxs-image-alt:before{content:"\fbe6"}.bxs-image-circle:before{content:"\fbe7"}.bxs-image-landscape:before{content:"\fbe8"}.bxs-image-no-background:before{content:"\fbe9"}.bxs-image-plus:before{content:"\fbea"}.bxs-image-portrait:before{content:"\fbeb"}.bxs-image-sparkle:before{content:"\fbec"}.bxs-image:before{content:"\fbed"}.bxs-images:before{content:"\fbee"}.bxs-inbox:before{content:"\fbef"}.bxs-incognito:before{content:"\fbf0"}.bxs-infinite:before{content:"\fbf1"}.bxs-info-circle:before{content:"\fbf2"}.bxs-info-octagon:before{content:"\fbf3"}.bxs-info-shield:before{content:"\fbf4"}.bxs-info-square:before{content:"\fbf5"}.bxs-inner-shadow:before{content:"\fbf6"}.bxs-institution:before{content:"\fbf7"}.bxs-integral:before{content:"\fbf8"}.bxs-intellect:before{content:"\fbf9"}.bxs-invert-adjust:before{content:"\fbfa"}.bxs-invert:before{content:"\fbfb"}.bxs-islam:before{content:"\fbfc"}.bxs-island:before{content:"\fbfd"}.bxs-italic:before{content:"\fbfe"}.bxs-joystick-alt:before{content:"\fbff"}.bxs-joystick-button-alt:before{content:"\fc00"}.bxs-joystick-button:before{content:"\fc01"}.bxs-joystick:before{content:"\fc02"}.bxs-judaism:before{content:"\fc03"}.bxs-key-alt:before{content:"\fc04"}.bxs-key:before{content:"\fc05"}.bxs-keyboard:before{content:"\fc06"}.bxs-keyframe-ease-in:before{content:"\fc07"}.bxs-keyframe-ease-out:before{content:"\fc08"}.bxs-keyframe-easy-ease:before{content:"\fc09"}.bxs-keyframe-hold-ease-in:before{content:"\fc0a"}.bxs-keyframe-hold-ease-out:before{content:"\fc0b"}.bxs-keyframe-hold-linear-in:before{content:"\fc0c"}.bxs-keyframe-hold-linear-out:before{content:"\fc0d"}.bxs-keyframe:before{content:"\fc0e"}.bxs-knife:before{content:"\fc0f"}.bxs-lambda:before{content:"\fc10"}.bxs-landmark:before{content:"\fc11"}.bxs-laptop-alt:before{content:"\fc12"}.bxs-laptop:before{content:"\fc13"}.bxs-lasso:before{content:"\fc14"}.bxs-last:before{content:"\fc15"}.bxs-laugh:before{content:"\fc16"}.bxs-law:before{content:"\fc17"}.bxs-layers-alt:before{content:"\fc18"}.bxs-layers-down-left:before{content:"\fc19"}.bxs-layers-down-right:before{content:"\fc1a"}.bxs-layers-minus-alt:before{content:"\fc1b"}.bxs-layers-plus-alt:before{content:"\fc1c"}.bxs-layers:before{content:"\fc1d"}.bxs-layout-check:before{content:"\fc1e"}.bxs-layout-minus:before{content:"\fc1f"}.bxs-layout-plus:before{content:"\fc20"}.bxs-layout-search:before{content:"\fc21"}.bxs-layout:before{content:"\fc22"}.bxs-leaf-alt:before{content:"\fc23"}.bxs-leaf:before{content:"\fc24"}.bxs-left-indent:before{content:"\fc25"}.bxs-lemon:before{content:"\fc26"}.bxs-less-than-equal:before{content:"\fc27"}.bxs-less-than:before{content:"\fc28"}.bxs-letter-spacing-alt:before{content:"\fc29"}.bxs-letter-spacing:before{content:"\fc2a"}.bxs-light-bulb-alt-2:before{content:"\fc2b"}.bxs-light-bulb-alt:before{content:"\fc2c"}.bxs-light-bulb-on:before{content:"\fc2d"}.bxs-light-bulb:before{content:"\fc2e"}.bxs-like:before{content:"\fc2f"}.bxs-line-chart-square:before{content:"\fc30"}.bxs-line-spacing-alt:before{content:"\fc31"}.bxs-line-spacing:before{content:"\fc32"}.bxs-link-alt:before{content:"\fc33"}.bxs-link-break:before{content:"\fc34"}.bxs-link:before{content:"\fc35"}.bxs-lira:before{content:"\fc36"}.bxs-list-minus:before{content:"\fc37"}.bxs-list-music:before{content:"\fc38"}.bxs-list-ol:before{content:"\fc39"}.bxs-list-play:before{content:"\fc3a"}.bxs-list-plus:before{content:"\fc3b"}.bxs-list-square:before{content:"\fc3c"}.bxs-list-ul-square:before{content:"\fc3d"}.bxs-list-ul:before{content:"\fc3e"}.bxs-list-x:before{content:"\fc3f"}.bxs-list:before{content:"\fc40"}.bxs-loader-dots:before{content:"\fc41"}.bxs-loader-lines-alt:before{content:"\fc42"}.bxs-loader-lines:before{content:"\fc43"}.bxs-location-alt-2:before{content:"\fc44"}.bxs-location-alt:before{content:"\fc45"}.bxs-location-blank:before{content:"\fc46"}.bxs-location-check:before{content:"\fc47"}.bxs-location-pin:before{content:"\fc48"}.bxs-location-plus:before{content:"\fc49"}.bxs-location-x:before{content:"\fc4a"}.bxs-location:before{content:"\fc4b"}.bxs-lock-keyhole-open-alt:before{content:"\fc4c"}.bxs-lock-keyhole-open:before{content:"\fc4d"}.bxs-lock-keyhole:before{content:"\fc4e"}.bxs-lock-open-alt:before{content:"\fc4f"}.bxs-lock-open:before{content:"\fc50"}.bxs-lock:before{content:"\fc51"}.bxs-lotion:before{content:"\fc52"}.bxs-low-vision:before{content:"\fc53"}.bxs-lowercase:before{content:"\fc54"}.bxs-luggage:before{content:"\fc55"}.bxs-lungs:before{content:"\fc56"}.bxs-magic-wand:before{content:"\fc57"}.bxs-magnet:before{content:"\fc58"}.bxs-mail-open:before{content:"\fc59"}.bxs-male:before{content:"\fc5a"}.bxs-man-woman:before{content:"\fc5b"}.bxs-man:before{content:"\fc5c"}.bxs-map:before{content:"\fc5d"}.bxs-margin-bottom:before{content:"\fc5e"}.bxs-margin-left:before{content:"\fc5f"}.bxs-margin-right:before{content:"\fc60"}.bxs-margin-top:before{content:"\fc61"}.bxs-martini:before{content:"\fc62"}.bxs-mask:before{content:"\fc63"}.bxs-math-alt:before{content:"\fc64"}.bxs-math:before{content:"\fc65"}.bxs-maximize:before{content:"\fc66"}.bxs-meat:before{content:"\fc67"}.bxs-medal-alt-2:before{content:"\fc68"}.bxs-medal-alt:before{content:"\fc69"}.bxs-medal-star-alt-2:before{content:"\fc6a"}.bxs-medal-star-alt:before{content:"\fc6b"}.bxs-medal-star:before{content:"\fc6c"}.bxs-medal:before{content:"\fc6d"}.bxs-medical-flask:before{content:"\fc6e"}.bxs-medical-kit:before{content:"\fc6f"}.bxs-megaphone-alt:before{content:"\fc70"}.bxs-megaphone:before{content:"\fc71"}.bxs-meh-alt:before{content:"\fc72"}.bxs-meh-blank:before{content:"\fc73"}.bxs-meh:before{content:"\fc74"}.bxs-menorah:before{content:"\fc75"}.bxs-menu-close:before{content:"\fc76"}.bxs-menu-closer:before{content:"\fc77"}.bxs-menu-filter:before{content:"\fc78"}.bxs-menu-left:before{content:"\fc79"}.bxs-menu-notification:before{content:"\fc7a"}.bxs-menu-right:before{content:"\fc7b"}.bxs-menu-search:before{content:"\fc7c"}.bxs-menu-select:before{content:"\fc7d"}.bxs-menu-wide:before{content:"\fc7e"}.bxs-menu-wider:before{content:"\fc7f"}.bxs-menu:before{content:"\fc80"}.bxs-merge:before{content:"\fc81"}.bxs-mesh:before{content:"\fc82"}.bxs-message-bubble-captions:before{content:"\fc83"}.bxs-message-bubble-check:before{content:"\fc84"}.bxs-message-bubble-code:before{content:"\fc85"}.bxs-message-bubble-detail:before{content:"\fc86"}.bxs-message-bubble-dots-2:before{content:"\fc87"}.bxs-message-bubble-dots:before{content:"\fc88"}.bxs-message-bubble-edit:before{content:"\fc89"}.bxs-message-bubble-exclamation:before{content:"\fc8a"}.bxs-message-bubble-heart:before{content:"\fc8b"}.bxs-message-bubble-image:before{content:"\fc8c"}.bxs-message-bubble-minus:before{content:"\fc8d"}.bxs-message-bubble-notification:before{content:"\fc8e"}.bxs-message-bubble-plus:before{content:"\fc8f"}.bxs-message-bubble-question-mark:before{content:"\fc90"}.bxs-message-bubble-reply:before{content:"\fc91"}.bxs-message-bubble-star:before{content:"\fc92"}.bxs-message-bubble-x:before{content:"\fc93"}.bxs-message-bubble:before{content:"\fc94"}.bxs-message-captions:before{content:"\fc95"}.bxs-message-check:before{content:"\fc96"}.bxs-message-circle-captions:before{content:"\fc97"}.bxs-message-circle-check:before{content:"\fc98"}.bxs-message-circle-code:before{content:"\fc99"}.bxs-message-circle-detail:before{content:"\fc9a"}.bxs-message-circle-dots-2:before{content:"\fc9b"}.bxs-message-circle-dots:before{content:"\fc9c"}.bxs-message-circle-edit:before{content:"\fc9d"}.bxs-message-circle-exclamation:before{content:"\fc9e"}.bxs-message-circle-heart:before{content:"\fc9f"}.bxs-message-circle-image:before{content:"\fca0"}.bxs-message-circle-minus:before{content:"\fca1"}.bxs-message-circle-notification:before{content:"\fca2"}.bxs-message-circle-plus:before{content:"\fca3"}.bxs-message-circle-question-mark:before{content:"\fca4"}.bxs-message-circle-reply:before{content:"\fca5"}.bxs-message-circle-star:before{content:"\fca6"}.bxs-message-circle-x:before{content:"\fca7"}.bxs-message-circle:before{content:"\fca8"}.bxs-message-code:before{content:"\fca9"}.bxs-message-detail:before{content:"\fcaa"}.bxs-message-dots-2:before{content:"\fcab"}.bxs-message-dots:before{content:"\fcac"}.bxs-message-edit:before{content:"\fcad"}.bxs-message-exclamation:before{content:"\fcae"}.bxs-message-heart:before{content:"\fcaf"}.bxs-message-image:before{content:"\fcb0"}.bxs-message-minus:before{content:"\fcb1"}.bxs-message-notification:before{content:"\fcb2"}.bxs-message-plus:before{content:"\fcb3"}.bxs-message-question-mark:before{content:"\fcb4"}.bxs-message-reply:before{content:"\fcb5"}.bxs-message-star:before{content:"\fcb6"}.bxs-message-x:before{content:"\fcb7"}.bxs-message:before{content:"\fcb8"}.bxs-meteor:before{content:"\fcb9"}.bxs-microchip:before{content:"\fcba"}.bxs-microphone-alt-2:before{content:"\fcbb"}.bxs-microphone-alt:before{content:"\fcbc"}.bxs-microphone-big-alt:before{content:"\fcbd"}.bxs-microphone-big:before{content:"\fcbe"}.bxs-microphone-slash:before{content:"\fcbf"}.bxs-microphone:before{content:"\fcc0"}.bxs-microscope:before{content:"\fcc1"}.bxs-microwave-oven:before{content:"\fcc2"}.bxs-milk-bottle:before{content:"\fcc3"}.bxs-minimize:before{content:"\fcc4"}.bxs-minus-circle:before{content:"\fcc5"}.bxs-minus-plus:before{content:"\fcc6"}.bxs-minus-shield:before{content:"\fcc7"}.bxs-minus-square:before{content:"\fcc8"}.bxs-minus:before{content:"\fcc9"}.bxs-mobile-alt-2:before{content:"\fcca"}.bxs-mobile-alt:before{content:"\fccb"}.bxs-mobile-back-alt-2:before{content:"\fccc"}.bxs-mobile-back-alt:before{content:"\fccd"}.bxs-mobile-back:before{content:"\fcce"}.bxs-mobile-ring:before{content:"\fccf"}.bxs-mobile:before{content:"\fcd0"}.bxs-monitor-wallpaper:before{content:"\fcd1"}.bxs-monitor-wide:before{content:"\fcd2"}.bxs-monitor:before{content:"\fcd3"}.bxs-moon-crater:before{content:"\fcd4"}.bxs-moon-phase-0:before{content:"\fcd5"}.bxs-moon-phase-1:before{content:"\fcd6"}.bxs-moon-phase-2:before{content:"\fcd7"}.bxs-moon-phase-3:before{content:"\fcd8"}.bxs-moon-phase-4:before{content:"\fcd9"}.bxs-moon-phase-5:before{content:"\fcda"}.bxs-moon-phase-6:before{content:"\fcdb"}.bxs-moon-star:before{content:"\fcdc"}.bxs-moon:before{content:"\fcdd"}.bxs-mosque:before{content:"\fcde"}.bxs-motion-alt:before{content:"\fcdf"}.bxs-motion:before{content:"\fce0"}.bxs-motorcycle:before{content:"\fce1"}.bxs-mountain-peak:before{content:"\fce2"}.bxs-mountain-view:before{content:"\fce3"}.bxs-mountain:before{content:"\fce4"}.bxs-mouse-alt:before{content:"\fce5"}.bxs-mouse:before{content:"\fce6"}.bxs-move-diagonal-left:before{content:"\fce7"}.bxs-move-diagonal-right:before{content:"\fce8"}.bxs-move-horizontal:before{content:"\fce9"}.bxs-move-vertical:before{content:"\fcea"}.bxs-move:before{content:"\fceb"}.bxs-movie-play:before{content:"\fcec"}.bxs-movie:before{content:"\fced"}.bxs-music-alt-2:before{content:"\fcee"}.bxs-music-alt:before{content:"\fcef"}.bxs-music-library:before{content:"\fcf0"}.bxs-music:before{content:"\fcf1"}.bxs-network-chart:before{content:"\fcf2"}.bxs-network-device:before{content:"\fcf3"}.bxs-news:before{content:"\fcf4"}.bxs-newspaper:before{content:"\fcf5"}.bxs-night-light:before{content:"\fcf6"}.bxs-no-entry:before{content:"\fcf7"}.bxs-noise:before{content:"\fcf8"}.bxs-not-element-of:before{content:"\fcf9"}.bxs-not-equal:before{content:"\fcfa"}.bxs-not-subset:before{content:"\fcfb"}.bxs-not-superset:before{content:"\fcfc"}.bxs-note-book:before{content:"\fcfd"}.bxs-note:before{content:"\fcfe"}.bxs-notification-slash:before{content:"\fcff"}.bxs-notification:before{content:"\fd00"}.bxs-nut:before{content:"\fd01"}.bxs-octopus:before{content:"\fd02"}.bxs-omega:before{content:"\fd03"}.bxs-option:before{content:"\fd04"}.bxs-outdoor-dining:before{content:"\fd05"}.bxs-outer-shadow:before{content:"\fd06"}.bxs-oval-vertical:before{content:"\fd07"}.bxs-oval:before{content:"\fd08"}.bxs-oven:before{content:"\fd09"}.bxs-owl:before{content:"\fd0a"}.bxs-pacifism:before{content:"\fd0b"}.bxs-package:before{content:"\fd0c"}.bxs-pacman:before{content:"\fd0d"}.bxs-paint-alt:before{content:"\fd0e"}.bxs-paint-roll:before{content:"\fd0f"}.bxs-paint:before{content:"\fd10"}.bxs-palette:before{content:"\fd11"}.bxs-pant:before{content:"\fd12"}.bxs-paper-plane:before{content:"\fd13"}.bxs-paperclip:before{content:"\fd14"}.bxs-paragraph-spacing:before{content:"\fd15"}.bxs-paragraph:before{content:"\fd16"}.bxs-parallel:before{content:"\fd17"}.bxs-parent-child:before{content:"\fd18"}.bxs-party:before{content:"\fd19"}.bxs-paste:before{content:"\fd1a"}.bxs-path:before{content:"\fd1b"}.bxs-pause-circle:before{content:"\fd1c"}.bxs-pause:before{content:"\fd1d"}.bxs-paw-print:before{content:"\fd1e"}.bxs-pear:before{content:"\fd1f"}.bxs-pen-alt:before{content:"\fd20"}.bxs-pen-draw:before{content:"\fd21"}.bxs-pen-edit-circle:before{content:"\fd22"}.bxs-pen-minus:before{content:"\fd23"}.bxs-pen-plus:before{content:"\fd24"}.bxs-pen:before{content:"\fd25"}.bxs-pencil-circle:before{content:"\fd26"}.bxs-pencil-draw:before{content:"\fd27"}.bxs-pencil-edit-circle:before{content:"\fd28"}.bxs-pencil-sparkles:before{content:"\fd29"}.bxs-pencil-square:before{content:"\fd2a"}.bxs-pencil:before{content:"\fd2b"}.bxs-pentagon:before{content:"\fd2c"}.bxs-people-diversity:before{content:"\fd2d"}.bxs-people-handshake:before{content:"\fd2e"}.bxs-people-heart:before{content:"\fd2f"}.bxs-percentage:before{content:"\fd30"}.bxs-perpendicular:before{content:"\fd31"}.bxs-perspective:before{content:"\fd32"}.bxs-petrol-pump:before{content:"\fd33"}.bxs-pharmacy:before{content:"\fd34"}.bxs-phone-book:before{content:"\fd35"}.bxs-phone-forwarding:before{content:"\fd36"}.bxs-phone-incoming:before{content:"\fd37"}.bxs-phone-outgoing:before{content:"\fd38"}.bxs-phone-plus:before{content:"\fd39"}.bxs-phone-ring:before{content:"\fd3a"}.bxs-phone-x:before{content:"\fd3b"}.bxs-phone:before{content:"\fd3c"}.bxs-photo-album:before{content:"\fd3d"}.bxs-pi:before{content:"\fd3e"}.bxs-piano-alt:before{content:"\fd3f"}.bxs-piano-grand:before{content:"\fd40"}.bxs-piano:before{content:"\fd41"}.bxs-pickup-truck:before{content:"\fd42"}.bxs-picture-in-picture-close:before{content:"\fd43"}.bxs-picture-in-picture:before{content:"\fd44"}.bxs-pie-chart-alt-2:before{content:"\fd45"}.bxs-pie-chart-alt:before{content:"\fd46"}.bxs-pie-chart:before{content:"\fd47"}.bxs-piggy-bank:before{content:"\fd48"}.bxs-pill-bottle-alt:before{content:"\fd49"}.bxs-pill-bottle:before{content:"\fd4a"}.bxs-pill:before{content:"\fd4b"}.bxs-pin-alt:before{content:"\fd4c"}.bxs-pin-slash-alt:before{content:"\fd4d"}.bxs-pin:before{content:"\fd4e"}.bxs-pizza-alt:before{content:"\fd4f"}.bxs-pizza:before{content:"\fd50"}.bxs-plane-alt:before{content:"\fd51"}.bxs-plane-land:before{content:"\fd52"}.bxs-plane-take-off:before{content:"\fd53"}.bxs-plane:before{content:"\fd54"}.bxs-planet:before{content:"\fd55"}.bxs-plant-pot:before{content:"\fd56"}.bxs-play-circle-alt:before{content:"\fd57"}.bxs-play-circle:before{content:"\fd58"}.bxs-play:before{content:"\fd59"}.bxs-plug-connect:before{content:"\fd5a"}.bxs-plus-big:before{content:"\fd5b"}.bxs-plus-circle:before{content:"\fd5c"}.bxs-plus-minus:before{content:"\fd5d"}.bxs-plus-shield:before{content:"\fd5e"}.bxs-plus-square:before{content:"\fd5f"}.bxs-plus:before{content:"\fd60"}.bxs-podcast:before{content:"\fd61"}.bxs-polar-chart:before{content:"\fd62"}.bxs-poll:before{content:"\fd63"}.bxs-polygon:before{content:"\fd64"}.bxs-popsicle:before{content:"\fd65"}.bxs-pound:before{content:"\fd66"}.bxs-power:before{content:"\fd67"}.bxs-prawn:before{content:"\fd68"}.bxs-price-tag-alt:before{content:"\fd69"}.bxs-price-tag:before{content:"\fd6a"}.bxs-print-dollar:before{content:"\fd6b"}.bxs-printer:before{content:"\fd6c"}.bxs-proper-subset:before{content:"\fd6d"}.bxs-proper-superset:before{content:"\fd6e"}.bxs-psychology:before{content:"\fd6f"}.bxs-puck:before{content:"\fd70"}.bxs-pulse:before{content:"\fd71"}.bxs-pyramid:before{content:"\fd72"}.bxs-qr-scan:before{content:"\fd73"}.bxs-qr:before{content:"\fd74"}.bxs-queue:before{content:"\fd75"}.bxs-quote-left-alt:before{content:"\fd76"}.bxs-quote-left:before{content:"\fd77"}.bxs-quote-right-alt:before{content:"\fd78"}.bxs-quote-right:before{content:"\fd79"}.bxs-quote-single-left:before{content:"\fd7a"}.bxs-quote-single-right:before{content:"\fd7b"}.bxs-radar:before{content:"\fd7c"}.bxs-radiation:before{content:"\fd7d"}.bxs-radio-circle-marked:before{content:"\fd7e"}.bxs-radio-circle:before{content:"\fd7f"}.bxs-radio:before{content:"\fd80"}.bxs-rainbow:before{content:"\fd81"}.bxs-reading-glass:before{content:"\fd82"}.bxs-reading:before{content:"\fd83"}.bxs-receipt:before{content:"\fd84"}.bxs-rectangle-vertical:before{content:"\fd85"}.bxs-rectangle-wide:before{content:"\fd86"}.bxs-rectangle:before{content:"\fd87"}.bxs-recycle:before{content:"\fd88"}.bxs-redo-alt:before{content:"\fd89"}.bxs-redo-stroke-alt:before{content:"\fd8a"}.bxs-redo-stroke:before{content:"\fd8b"}.bxs-redo:before{content:"\fd8c"}.bxs-reflect-horizontal-alt:before{content:"\fd8d"}.bxs-reflect-horizontal:before{content:"\fd8e"}.bxs-reflect-vertical-alt:before{content:"\fd8f"}.bxs-reflect-vertical:before{content:"\fd90"}.bxs-refresh-ccw-alt-dot:before{content:"\fd91"}.bxs-refresh-ccw-alt:before{content:"\fd92"}.bxs-refresh-ccw-dot:before{content:"\fd93"}.bxs-refresh-ccw:before{content:"\fd94"}.bxs-refresh-cw-alt-dot:before{content:"\fd95"}.bxs-refresh-cw-alt:before{content:"\fd96"}.bxs-refresh-cw-dot:before{content:"\fd97"}.bxs-refresh-cw:before{content:"\fd98"}.bxs-registered:before{content:"\fd99"}.bxs-rename:before{content:"\fd9a"}.bxs-repeat-alt-2:before{content:"\fd9b"}.bxs-repeat-alt:before{content:"\fd9c"}.bxs-repeat:before{content:"\fd9d"}.bxs-reply-big:before{content:"\fd9e"}.bxs-reply-stroke:before{content:"\fd9f"}.bxs-reply:before{content:"\fda0"}.bxs-report:before{content:"\fda1"}.bxs-rewind-circle:before{content:"\fda2"}.bxs-rewind:before{content:"\fda3"}.bxs-rfid:before{content:"\fda4"}.bxs-rgb:before{content:"\fda5"}.bxs-right-angle-triangle-half:before{content:"\fda6"}.bxs-right-angle-triangle:before{content:"\fda7"}.bxs-right-indent:before{content:"\fda8"}.bxs-robot:before{content:"\fda9"}.bxs-rocket-alt:before{content:"\fdaa"}.bxs-rocket:before{content:"\fdab"}.bxs-rotate-ccw-10:before{content:"\fdac"}.bxs-rotate-ccw-30:before{content:"\fdad"}.bxs-rotate-ccw-5:before{content:"\fdae"}.bxs-rotate-ccw-dot:before{content:"\fdaf"}.bxs-rotate-ccw:before{content:"\fdb0"}.bxs-rotate-cw-10:before{content:"\fdb1"}.bxs-rotate-cw-30:before{content:"\fdb2"}.bxs-rotate-cw-5:before{content:"\fdb3"}.bxs-rotate-cw-dot:before{content:"\fdb4"}.bxs-rotate-cw:before{content:"\fdb5"}.bxs-rotate-square-ccw:before{content:"\fdb6"}.bxs-rotate-square-cw:before{content:"\fdb7"}.bxs-route:before{content:"\fdb8"}.bxs-row-resize:before{content:"\fdb9"}.bxs-rows-3:before{content:"\fdba"}.bxs-rows-4:before{content:"\fdbb"}.bxs-rows:before{content:"\fdbc"}.bxs-rss:before{content:"\fdbd"}.bxs-ruble:before{content:"\fdbe"}.bxs-rugby-ball:before{content:"\fdbf"}.bxs-ruler:before{content:"\fdc0"}.bxs-running:before{content:"\fdc1"}.bxs-rupee:before{content:"\fdc2"}.bxs-sad:before{content:"\fdc3"}.bxs-safe:before{content:"\fdc4"}.bxs-sail:before{content:"\fdc5"}.bxs-sandwich:before{content:"\fdc6"}.bxs-sapling:before{content:"\fdc7"}.bxs-save:before{content:"\fdc8"}.bxs-scale:before{content:"\fdc9"}.bxs-scan-ar:before{content:"\fdca"}.bxs-scan-barcode:before{content:"\fdcb"}.bxs-scan-detail:before{content:"\fdcc"}.bxs-scan-face:before{content:"\fdcd"}.bxs-scan-search:before{content:"\fdce"}.bxs-scan:before{content:"\fdcf"}.bxs-school-bus:before{content:"\fdd0"}.bxs-school:before{content:"\fdd1"}.bxs-science:before{content:"\fdd2"}.bxs-scooter-delivery:before{content:"\fdd3"}.bxs-scooter:before{content:"\fdd4"}.bxs-screen-light:before{content:"\fdd5"}.bxs-screenshot:before{content:"\fdd6"}.bxs-scribble:before{content:"\fdd7"}.bxs-scroll:before{content:"\fdd8"}.bxs-sd-card:before{content:"\fdd9"}.bxs-sea-view:before{content:"\fdda"}.bxs-seal-check:before{content:"\fddb"}.bxs-seal:before{content:"\fddc"}.bxs-search-alt:before{content:"\fddd"}.bxs-search-big-code:before{content:"\fdde"}.bxs-search-big-minus:before{content:"\fddf"}.bxs-search-big-plus:before{content:"\fde0"}.bxs-search-big-x:before{content:"\fde1"}.bxs-search-big:before{content:"\fde2"}.bxs-search-code:before{content:"\fde3"}.bxs-search-minus:before{content:"\fde4"}.bxs-search-plus:before{content:"\fde5"}.bxs-search-x:before{content:"\fde6"}.bxs-search:before{content:"\fde7"}.bxs-select-all:before{content:"\fde8"}.bxs-select-many:before{content:"\fde9"}.bxs-select-none:before{content:"\fdea"}.bxs-select:before{content:"\fdeb"}.bxs-self-care:before{content:"\fdec"}.bxs-send-alt-2:before{content:"\fded"}.bxs-send-alt:before{content:"\fdee"}.bxs-send:before{content:"\fdef"}.bxs-server:before{content:"\fdf0"}.bxs-set-intersection:before{content:"\fdf1"}.bxs-set-union:before{content:"\fdf2"}.bxs-shadows:before{content:"\fdf3"}.bxs-shape-exclude-alt:before{content:"\fdf4"}.bxs-shape-exclude:before{content:"\fdf5"}.bxs-shape-intersect-alt:before{content:"\fdf6"}.bxs-shape-intersect:before{content:"\fdf7"}.bxs-shape-outline-alt:before{content:"\fdf8"}.bxs-shape-outline:before{content:"\fdf9"}.bxs-shape-rotate-ccw:before{content:"\fdfa"}.bxs-shape-rotate-cw:before{content:"\fdfb"}.bxs-shape-subtract-alt:before{content:"\fdfc"}.bxs-shape-subtract:before{content:"\fdfd"}.bxs-shape-trim-alt:before{content:"\fdfe"}.bxs-shape-trim:before{content:"\fdff"}.bxs-shape-unite-alt:before{content:"\fe10"}.bxs-shape-unite:before{content:"\fe11"}.bxs-shapes-alt-2:before{content:"\fe12"}.bxs-shapes-alt:before{content:"\fe13"}.bxs-shapes:before{content:"\fe14"}.bxs-share:before{content:"\fe15"}.bxs-shekel:before{content:"\fe16"}.bxs-shield-alt-2:before{content:"\fe17"}.bxs-shield-alt:before{content:"\fe18"}.bxs-shield-circle:before{content:"\fe19"}.bxs-shield-half:before{content:"\fe1a"}.bxs-shield-quarter:before{content:"\fe1b"}.bxs-shield:before{content:"\fe1c"}.bxs-shinto:before{content:"\fe1d"}.bxs-ship:before{content:"\fe1e"}.bxs-shocked:before{content:"\fe1f"}.bxs-shopping-bag-alt:before{content:"\fe30"}.bxs-shopping-bag:before{content:"\fe31"}.bxs-shower:before{content:"\fe32"}.bxs-shrink-left:before{content:"\fe33"}.bxs-shrink-right:before{content:"\fe34"}.bxs-shuffle:before{content:"\fe35"}.bxs-shutter-alt:before{content:"\fe36"}.bxs-shutter:before{content:"\fe37"}.bxs-shuttlecock:before{content:"\fe38"}.bxs-sidebar-right:before{content:"\fe39"}.bxs-sidebar:before{content:"\fe3a"}.bxs-sigma:before{content:"\fe3b"}.bxs-signal-1:before{content:"\fe3c"}.bxs-signal-2:before{content:"\fe3d"}.bxs-signal-3:before{content:"\fe3e"}.bxs-signal-4:before{content:"\fe3f"}.bxs-signal-5:before{content:"\fe40"}.bxs-signal-slash:before{content:"\fe41"}.bxs-signature:before{content:"\fe42"}.bxs-sikhism:before{content:"\fe43"}.bxs-sine-wave:before{content:"\fe44"}.bxs-siren-alt:before{content:"\fe45"}.bxs-siren:before{content:"\fe46"}.bxs-sitemap:before{content:"\fe47"}.bxs-size-distort:before{content:"\fe48"}.bxs-size-freeform:before{content:"\fe49"}.bxs-size-uniform:before{content:"\fe4a"}.bxs-size-warp:before{content:"\fe4b"}.bxs-skateboard:before{content:"\fe4c"}.bxs-skip-next-circle:before{content:"\fe4d"}.bxs-skip-next:before{content:"\fe4e"}.bxs-skip-previous-circle:before{content:"\fe4f"}.bxs-skip-previous:before{content:"\fe50"}.bxs-skirt:before{content:"\fe51"}.bxs-skull:before{content:"\fe52"}.bxs-sleepy:before{content:"\fe53"}.bxs-slice:before{content:"\fe54"}.bxs-slider-alt:before{content:"\fe55"}.bxs-slider-vertical-alt:before{content:"\fe56"}.bxs-slider-vertical:before{content:"\fe57"}.bxs-slider:before{content:"\fe58"}.bxs-slideshow:before{content:"\fe59"}.bxs-smile:before{content:"\fe5a"}.bxs-smoke-alarm-alt-2:before{content:"\fe5b"}.bxs-smoke-alarm-alt:before{content:"\fe5c"}.bxs-smoke-alarm:before{content:"\fe5d"}.bxs-sneaker:before{content:"\fe5e"}.bxs-snowflake:before{content:"\fe5f"}.bxs-sock:before{content:"\fe60"}.bxs-solar-panel:before{content:"\fe61"}.bxs-spa:before{content:"\fe62"}.bxs-spacebar:before{content:"\fe63"}.bxs-spade:before{content:"\fe64"}.bxs-spanner:before{content:"\fe65"}.bxs-sparkle-circle:before{content:"\fe66"}.bxs-sparkle-square:before{content:"\fe67"}.bxs-sparkle:before{content:"\fe68"}.bxs-sparkles-alt:before{content:"\fe69"}.bxs-sparkles:before{content:"\fe6a"}.bxs-speaker:before{content:"\fe6b"}.bxs-sphere:before{content:"\fe6c"}.bxs-split:before{content:"\fe6d"}.bxs-spoon:before{content:"\fe6e"}.bxs-spray-can:before{content:"\fe6f"}.bxs-square-dashed-half:before{content:"\fe70"}.bxs-square-dashed:before{content:"\fe71"}.bxs-square-root:before{content:"\fe72"}.bxs-square-rounded:before{content:"\fe73"}.bxs-square-small:before{content:"\fe74"}.bxs-square:before{content:"\fe75"}.bxs-squircle:before{content:"\fe76"}.bxs-stadium:before{content:"\fe77"}.bxs-stamp:before{content:"\fe78"}.bxs-star-circle:before{content:"\fe79"}.bxs-star-half:before{content:"\fe7a"}.bxs-star-square:before{content:"\fe7b"}.bxs-star:before{content:"\fe7c"}.bxs-station:before{content:"\fe7d"}.bxs-steering-wheel:before{content:"\fe7e"}.bxs-steps-down:before{content:"\fe7f"}.bxs-steps-up:before{content:"\fe80"}.bxs-sticker:before{content:"\fe81"}.bxs-stop-circle:before{content:"\fe82"}.bxs-stop:before{content:"\fe83"}.bxs-stopwatch:before{content:"\fe84"}.bxs-store-alt-2:before{content:"\fe85"}.bxs-store-alt:before{content:"\fe86"}.bxs-store:before{content:"\fe87"}.bxs-strategy:before{content:"\fe88"}.bxs-street-view:before{content:"\fe89"}.bxs-strikethrough:before{content:"\fe8a"}.bxs-stroke-drawing:before{content:"\fe8b"}.bxs-stroke-freehand:before{content:"\fe8c"}.bxs-stroke-ink:before{content:"\fe8d"}.bxs-stroke-pen:before{content:"\fe8e"}.bxs-subscript:before{content:"\fe8f"}.bxs-subset:before{content:"\fe90"}.bxs-subway:before{content:"\fe91"}.bxs-sun-bright:before{content:"\fe92"}.bxs-sun-dim:before{content:"\fe93"}.bxs-sun-drizzle:before{content:"\fe94"}.bxs-sun-fog:before{content:"\fe95"}.bxs-sun-rain-wind:before{content:"\fe96"}.bxs-sun-rain:before{content:"\fe97"}.bxs-sun-rise:before{content:"\fe98"}.bxs-sun-set:before{content:"\fe99"}.bxs-sun-snow:before{content:"\fe9a"}.bxs-sun:before{content:"\fe9b"}.bxs-superscript:before{content:"\fe9c"}.bxs-superset:before{content:"\fe9d"}.bxs-surfboard:before{content:"\fe9e"}.bxs-sushi:before{content:"\fe9f"}.bxs-swap-diagonal:before{content:"\fea0"}.bxs-swap-horizontal:before{content:"\fea1"}.bxs-swap-vertical:before{content:"\fea2"}.bxs-swatch:before{content:"\fea3"}.bxs-swimming-pool:before{content:"\fea4"}.bxs-swimming:before{content:"\fea5"}.bxs-sword-alt:before{content:"\fea6"}.bxs-sword:before{content:"\fea7"}.bxs-syringe:before{content:"\fea8"}.bxs-t-shirt:before{content:"\fea9"}.bxs-tab:before{content:"\feaa"}.bxs-table-cells-large:before{content:"\feab"}.bxs-table-cells:before{content:"\feac"}.bxs-table-columns-merge:before{content:"\fead"}.bxs-table-columns-split:before{content:"\feae"}.bxs-table-columns:before{content:"\feaf"}.bxs-table-layout:before{content:"\feb0"}.bxs-table-list:before{content:"\feb1"}.bxs-table-rows-merge:before{content:"\feb2"}.bxs-table-rows-split:before{content:"\feb3"}.bxs-table-rows:before{content:"\feb4"}.bxs-table-tennis:before{content:"\feb5"}.bxs-table:before{content:"\feb6"}.bxs-tablet:before{content:"\feb7"}.bxs-tabs:before{content:"\feb8"}.bxs-tachometer-alt:before{content:"\feb9"}.bxs-tachometer:before{content:"\feba"}.bxs-taco:before{content:"\febb"}.bxs-tag-alt:before{content:"\febc"}.bxs-tag-x:before{content:"\febd"}.bxs-tag:before{content:"\febe"}.bxs-takeaway:before{content:"\febf"}.bxs-target:before{content:"\fec0"}.bxs-taxi:before{content:"\fec1"}.bxs-temple:before{content:"\fec2"}.bxs-tennis-ball-alt:before{content:"\fec3"}.bxs-tennis-ball:before{content:"\fec4"}.bxs-tennis:before{content:"\fec5"}.bxs-tent:before{content:"\fec6"}.bxs-terminal:before{content:"\fec7"}.bxs-test-tube:before{content:"\fec8"}.bxs-text-height:before{content:"\fec9"}.bxs-text-underline:before{content:"\feca"}.bxs-text-width:before{content:"\fecb"}.bxs-texture:before{content:"\fecc"}.bxs-thermometer:before{content:"\fecd"}.bxs-thought-bubble:before{content:"\fece"}.bxs-thread-roll:before{content:"\fecf"}.bxs-thumb-down:before{content:"\fed0"}.bxs-thumb-up:before{content:"\fed1"}.bxs-thunder:before{content:"\fed2"}.bxs-ticket-star:before{content:"\fed3"}.bxs-ticket:before{content:"\fed4"}.bxs-tickets:before{content:"\fed5"}.bxs-timer:before{content:"\fed6"}.bxs-tiny-home:before{content:"\fed7"}.bxs-tired:before{content:"\fed8"}.bxs-toggle-big-left:before{content:"\fed9"}.bxs-toggle-big-right:before{content:"\feda"}.bxs-toggle-left:before{content:"\fedb"}.bxs-toggle-right:before{content:"\fedc"}.bxs-toggles:before{content:"\fedd"}.bxs-toilet-roll:before{content:"\fede"}.bxs-tooth:before{content:"\fedf"}.bxs-torch:before{content:"\fee0"}.bxs-tornado:before{content:"\fee1"}.bxs-torus:before{content:"\fee2"}.bxs-towel:before{content:"\fee3"}.bxs-toy-car:before{content:"\fee4"}.bxs-traffic-barrier:before{content:"\fee5"}.bxs-traffic-cone:before{content:"\fee6"}.bxs-train:before{content:"\fee7"}.bxs-tram:before{content:"\fee8"}.bxs-transgender:before{content:"\fee9"}.bxs-translate:before{content:"\feea"}.bxs-transparency:before{content:"\feeb"}.bxs-trash-alt:before{content:"\feec"}.bxs-trash-x:before{content:"\feed"}.bxs-trash:before{content:"\feee"}.bxs-treasure-chest:before{content:"\feef"}.bxs-tree-alt:before{content:"\fef0"}.bxs-tree:before{content:"\fef1"}.bxs-trees:before{content:"\fef2"}.bxs-trending-down:before{content:"\fef3"}.bxs-trending-up:before{content:"\fef4"}.bxs-triangle-half:before{content:"\fef5"}.bxs-triangle:before{content:"\fef6"}.bxs-trip:before{content:"\fef7"}.bxs-trophy-star:before{content:"\fef8"}.bxs-trophy:before{content:"\fef9"}.bxs-truck:before{content:"\fefa"}.bxs-turkey-meat:before{content:"\fefb"}.bxs-turn-down:before{content:"\fefc"}.bxs-turn-left:before{content:"\fefd"}.bxs-turn-right:before{content:"\fefe"}.bxs-turn-up:before{content:"\ff00"}.bxs-tv-alt:before{content:"\ff01"}.bxs-tv:before{content:"\ff02"}.bxs-ufo:before{content:"\ff03"}.bxs-umbrella-alt:before{content:"\ff04"}.bxs-umbrella:before{content:"\ff05"}.bxs-underline-dashed:before{content:"\ff06"}.bxs-underline-dotted:before{content:"\ff07"}.bxs-underline-wavy:before{content:"\ff08"}.bxs-underline:before{content:"\ff09"}.bxs-undershirt:before{content:"\ff0a"}.bxs-undo-alt:before{content:"\ff0b"}.bxs-undo-stroke-alt:before{content:"\ff0c"}.bxs-undo-stroke:before{content:"\ff0d"}.bxs-undo:before{content:"\ff0e"}.bxs-universal-access:before{content:"\ff0f"}.bxs-unlink-alt:before{content:"\ff10"}.bxs-unlink:before{content:"\ff11"}.bxs-uppercase:before{content:"\ff12"}.bxs-upside-down:before{content:"\ff13"}.bxs-usb:before{content:"\ff14"}.bxs-user-check:before{content:"\ff15"}.bxs-user-circle:before{content:"\ff16"}.bxs-user-hexagon:before{content:"\ff17"}.bxs-user-id-card:before{content:"\ff18"}.bxs-user-minus:before{content:"\ff19"}.bxs-user-plus:before{content:"\ff1a"}.bxs-user-search:before{content:"\ff1b"}.bxs-user-square:before{content:"\ff1c"}.bxs-user-voice:before{content:"\ff1d"}.bxs-user-x:before{content:"\ff1e"}.bxs-user:before{content:"\ff1f"}.bxs-van:before{content:"\ff20"}.bxs-variable:before{content:"\ff21"}.bxs-vector-square:before{content:"\ff22"}.bxs-vector-triangle:before{content:"\ff23"}.bxs-vector:before{content:"\ff24"}.bxs-vertical-align-bottom:before{content:"\ff25"}.bxs-vertical-align-center:before{content:"\ff26"}.bxs-vertical-align-top:before{content:"\ff27"}.bxs-vertical-bottom:before{content:"\ff28"}.bxs-vertical-center:before{content:"\ff29"}.bxs-vertical-distribute-bottom:before{content:"\ff2a"}.bxs-vertical-distribute-center:before{content:"\ff2b"}.bxs-vertical-distribute-top:before{content:"\ff2c"}.bxs-vertical-spacing:before{content:"\ff2d"}.bxs-vertical-top:before{content:"\ff2e"}.bxs-vial-alt:before{content:"\ff2f"}.bxs-vial:before{content:"\ff30"}.bxs-video-cinema:before{content:"\ff31"}.bxs-video-plus:before{content:"\ff32"}.bxs-video-slash:before{content:"\ff33"}.bxs-video:before{content:"\ff34"}.bxs-vignette:before{content:"\ff35"}.bxs-virus-slash:before{content:"\ff36"}.bxs-virus:before{content:"\ff37"}.bxs-voicemail:before{content:"\ff38"}.bxs-volleyball:before{content:"\ff39"}.bxs-volume-full:before{content:"\ff3a"}.bxs-volume-low:before{content:"\ff3b"}.bxs-volume-mute:before{content:"\ff3c"}.bxs-volume:before{content:"\ff3d"}.bxs-vr-goggles:before{content:"\ff3e"}.bxs-vr-headset:before{content:"\ff3f"}.bxs-waffle:before{content:"\ff40"}.bxs-walking:before{content:"\ff41"}.bxs-wall:before{content:"\ff42"}.bxs-wallet-alt:before{content:"\ff43"}.bxs-wallet-cards:before{content:"\ff44"}.bxs-wallet-note:before{content:"\ff45"}.bxs-wallet:before{content:"\ff46"}.bxs-warehouse:before{content:"\ff47"}.bxs-washer:before{content:"\ff48"}.bxs-water-drop-alt:before{content:"\ff49"}.bxs-water-drop-half:before{content:"\ff4a"}.bxs-water-drop:before{content:"\ff4b"}.bxs-water-spray:before{content:"\ff4c"}.bxs-water:before{content:"\ff4d"}.bxs-watermelon:before{content:"\ff4e"}.bxs-waveform:before{content:"\ff4f"}.bxs-webcam:before{content:"\ff50"}.bxs-webhook:before{content:"\ff51"}.bxs-whiteboard-alt:before{content:"\ff52"}.bxs-whiteboard:before{content:"\ff53"}.bxs-widget-horizontal:before{content:"\ff54"}.bxs-widget-small:before{content:"\ff55"}.bxs-widget-vertical:before{content:"\ff56"}.bxs-widget:before{content:"\ff57"}.bxs-wifi-0:before{content:"\ff58"}.bxs-wifi-1:before{content:"\ff59"}.bxs-wifi-2:before{content:"\ff5a"}.bxs-wifi-slash:before{content:"\ff5b"}.bxs-wifi:before{content:"\ff5c"}.bxs-wind:before{content:"\ff5d"}.bxs-window-arrow-in:before{content:"\ff5e"}.bxs-window-arrow-out:before{content:"\ff5f"}.bxs-window-mac-alt:before{content:"\ff60"}.bxs-window-mac:before{content:"\ff61"}.bxs-window:before{content:"\ff62"}.bxs-windows:before{content:"\ff63"}.bxs-wine-alt:before{content:"\ff64"}.bxs-wine:before{content:"\ff65"}.bxs-wink-smile:before{content:"\ff66"}.bxs-wink-tongue:before{content:"\ff67"}.bxs-woman:before{content:"\ff68"}.bxs-won:before{content:"\ff69"}.bxs-wrist-watch-alt:before{content:"\ff6a"}.bxs-wrist-watch-round-alt:before{content:"\ff6b"}.bxs-wrist-watch-round:before{content:"\ff6c"}.bxs-wrist-watch:before{content:"\ff6d"}.bxs-x-circle:before{content:"\ff6e"}.bxs-x-shield:before{content:"\ff6f"}.bxs-x-square:before{content:"\ff70"}.bxs-x:before{content:"\ff71"}.bxs-yarn-ball:before{content:"\ff72"}.bxs-yen:before{content:"\ff73"}.bxs-yin-yang:before{content:"\ff74"} \ No newline at end of file diff --git a/apps/icon-pack-builder/boxicons-free/fonts/basic/boxicons.ttf b/apps/icon-pack-builder/boxicons-free/fonts/basic/boxicons.ttf new file mode 100644 index 000000000..1598e5b07 Binary files /dev/null and b/apps/icon-pack-builder/boxicons-free/fonts/basic/boxicons.ttf differ diff --git a/apps/icon-pack-builder/boxicons-free/fonts/basic/boxicons.woff b/apps/icon-pack-builder/boxicons-free/fonts/basic/boxicons.woff new file mode 100644 index 000000000..ade1dd07a Binary files /dev/null and b/apps/icon-pack-builder/boxicons-free/fonts/basic/boxicons.woff differ diff --git a/apps/icon-pack-builder/boxicons-free/fonts/basic/boxicons.woff2 b/apps/icon-pack-builder/boxicons-free/fonts/basic/boxicons.woff2 new file mode 100644 index 000000000..33b902ce7 Binary files /dev/null and b/apps/icon-pack-builder/boxicons-free/fonts/basic/boxicons.woff2 differ diff --git a/apps/icon-pack-builder/boxicons-free/fonts/brands/animations.css b/apps/icon-pack-builder/boxicons-free/fonts/brands/animations.css new file mode 100644 index 000000000..a886948ba --- /dev/null +++ b/apps/icon-pack-builder/boxicons-free/fonts/brands/animations.css @@ -0,0 +1,515 @@ +@-webkit-keyframes spin +{ + 0% + { + -webkit-transform: rotate(0); + transform: rotate(0); + } + 100% + { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@keyframes spin +{ + 0% + { + -webkit-transform: rotate(0); + transform: rotate(0); + } + 100% + { + -webkit-transform: rotate(359deg); + transform: rotate(359deg); + } +} +@-webkit-keyframes burst +{ + 0% + { + -webkit-transform: scale(1); + transform: scale(1); + + opacity: 1; + } + 90% + { + -webkit-transform: scale(1.5); + transform: scale(1.5); + + opacity: 0; + } +} +@keyframes burst +{ + 0% + { + -webkit-transform: scale(1); + transform: scale(1); + + opacity: 1; + } + 90% + { + -webkit-transform: scale(1.5); + transform: scale(1.5); + + opacity: 0; + } +} +@-webkit-keyframes flashing +{ + 0% + { + opacity: 1; + } + 45% + { + opacity: 0; + } + 90% + { + opacity: 1; + } +} +@keyframes flashing +{ + 0% + { + opacity: 1; + } + 45% + { + opacity: 0; + } + 90% + { + opacity: 1; + } +} +@-webkit-keyframes fade-left +{ + 0% + { + -webkit-transform: translateX(0); + transform: translateX(0); + + opacity: 1; + } + 75% + { + -webkit-transform: translateX(-20px); + transform: translateX(-20px); + + opacity: 0; + } +} +@keyframes fade-left +{ + 0% + { + -webkit-transform: translateX(0); + transform: translateX(0); + + opacity: 1; + } + 75% + { + -webkit-transform: translateX(-20px); + transform: translateX(-20px); + + opacity: 0; + } +} +@-webkit-keyframes fade-right +{ + 0% + { + -webkit-transform: translateX(0); + transform: translateX(0); + + opacity: 1; + } + 75% + { + -webkit-transform: translateX(20px); + transform: translateX(20px); + + opacity: 0; + } +} +@keyframes fade-right +{ + 0% + { + -webkit-transform: translateX(0); + transform: translateX(0); + + opacity: 1; + } + 75% + { + -webkit-transform: translateX(20px); + transform: translateX(20px); + + opacity: 0; + } +} +@-webkit-keyframes fade-up +{ + 0% + { + -webkit-transform: translateY(0); + transform: translateY(0); + + opacity: 1; + } + 75% + { + -webkit-transform: translateY(-20px); + transform: translateY(-20px); + + opacity: 0; + } +} +@keyframes fade-up +{ + 0% + { + -webkit-transform: translateY(0); + transform: translateY(0); + + opacity: 1; + } + 75% + { + -webkit-transform: translateY(-20px); + transform: translateY(-20px); + + opacity: 0; + } +} +@-webkit-keyframes fade-down +{ + 0% + { + -webkit-transform: translateY(0); + transform: translateY(0); + + opacity: 1; + } + 75% + { + -webkit-transform: translateY(20px); + transform: translateY(20px); + + opacity: 0; + } +} +@keyframes fade-down +{ + 0% + { + -webkit-transform: translateY(0); + transform: translateY(0); + + opacity: 1; + } + 75% + { + -webkit-transform: translateY(20px); + transform: translateY(20px); + + opacity: 0; + } +} +@-webkit-keyframes tada +{ + from + { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 10%, + 20% + { + -webkit-transform: scale3d(.95, .95, .95) rotate3d(0, 0, 1, -10deg); + transform: scale3d(.95, .95, .95) rotate3d(0, 0, 1, -10deg); + } + + 30%, + 50%, + 70%, + 90% + { + -webkit-transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg); + transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg); + } + + 40%, + 60%, + 80% + { + -webkit-transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, -10deg); + transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, -10deg); + } + + to + { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} + +@keyframes tada +{ + from + { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } + + 10%, + 20% + { + -webkit-transform: scale3d(.95, .95, .95) rotate3d(0, 0, 1, -10deg); + transform: scale3d(.95, .95, .95) rotate3d(0, 0, 1, -10deg); + } + + 30%, + 50%, + 70%, + 90% + { + -webkit-transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg); + transform: scale3d(1, 1, 1) rotate3d(0, 0, 1, 10deg); + } + + 40%, + 60%, + 80% + { + -webkit-transform: rotate3d(0, 0, 1, -10deg); + transform: rotate3d(0, 0, 1, -10deg); + } + + to + { + -webkit-transform: scale3d(1, 1, 1); + transform: scale3d(1, 1, 1); + } +} +@keyframes beat { + to { + -webkit-transform: scale(1.4); + transform: scale(1.4); + } + +} +@keyframes bounce +{ + from + { + -webkit-transform: scale(1.1,1); + transform: scale(1.1,1); + } + + 25% + { + -webkit-transform: scale(0.9,1) translateY(-.25em); + transform: scale(0.9,1) translateY(-.25em); + } + + 50% + { + -webkit-transform: scale(1.1,0.9); + transform: scale(1.1,0.9); + } + 75% + { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } + 87.5% + { + -webkit-transform: scale(1, 1) translateY(-.1em); + transform: scale(1, 1) translateY(-.1em); + } + to + { + -webkit-transform: scale(1, 1); + transform: scale(1, 1); + } +} +@keyframes breathe { + from{ + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } + 50%{ + -webkit-transform: scale(1.4); + transform: scale(1.4); + opacity: 0.4; + } + to { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 1; + } + + } + @keyframes wiggle { + from{ + -webkit-transform: translateX(0); + transform:translateX(0); + } + 30%{ + -webkit-transform: translateX(0.075em); + transform: translateX(0.075em); + } + 60%{ + -webkit-transform: translateX(-0.075em); + transform: translateX(-0.075em); + } + 75%{ + -webkit-transform: translateX(0.025em); + transform: translateX(0.025em); + } + 90%{ + -webkit-transform: translateX(-0.025em); + transform: translateX(-0.025em); + } + to { + -webkit-transform: translateX(0); + transform:translateX(0); + } + + } + + .bx-wiggle{ + -webkit-animation: wiggle 1s infinite; + animation: wiggle 1s infinite; + animation-timing-function:cubic-bezier(.23,.57,.79,.58); +} +.bx-wiggle-hover:hover{ + -webkit-animation: wiggle 1s infinite; + animation: wiggle 1s infinite; + animation-timing-function:cubic-bezier(.23,.57,.79,.58); +} +.bx-breathe{ + -webkit-animation: breathe 3s infinite; + animation: breathe 3s infinite ease-in-out; + +} +.bx-breathe-hover:hover +{ + -webkit-animation: breathe 3s infinite; + animation: breathe 3s infinite ease-in-out; +} +.bx-bounce{ + -webkit-animation: bounce 1s infinite; + animation: bounce 1s infinite; + animation-timing-function: cubic-bezier(.98,.97,.64,1.62); +} +.bx-bounce-hover:hover +{ + -webkit-animation: bounce 1s infinite; + animation: bounce 1s infinite; + animation-timing-function: cubic-bezier(.98,.97,.64,1.62); +} + +.bx-beat +{ + -webkit-animation: beat .5s infinite alternate; + animation: beat .5s infinite alternate; + animation-timing-function: cubic-bezier(.19,.96,.65,1); + transform-origin: center; +} +.bx-spin +{ + -webkit-animation: spin 2s linear infinite; + animation: spin 2s linear infinite; +} +.bx-spin-hover:hover +{ + -webkit-animation: spin 2s linear infinite; + animation: spin 2s linear infinite; +} + + + +.bx-tada +{ + -webkit-animation: tada 1.5s ease infinite; + animation: tada 1.5s ease infinite; +} +.bx-tada-hover:hover +{ + -webkit-animation: tada 1.5s ease infinite; + animation: tada 1.5s ease infinite; +} + +.bx-flashing +{ + -webkit-animation: flashing 1.5s infinite linear; + animation: flashing 1.5s infinite linear; +} +.bx-flashing-hover:hover +{ + -webkit-animation: flashing 1.5s infinite linear; + animation: flashing 1.5s infinite linear; +} + +.bx-burst +{ + -webkit-animation: burst 1.5s infinite linear; + animation: burst 1.5s infinite linear; +} +.bx-burst-hover:hover +{ + -webkit-animation: burst 1.5s infinite linear; + animation: burst 1.5s infinite linear; +} +.bx-fade-up +{ + -webkit-animation: fade-up 1.5s infinite linear; + animation: fade-up 1.5s infinite linear; +} +.bx-fade-up-hover:hover +{ + -webkit-animation: fade-up 1.5s infinite linear; + animation: fade-up 1.5s infinite linear; +} +.bx-fade-down +{ + -webkit-animation: fade-down 1.5s infinite linear; + animation: fade-down 1.5s infinite linear; +} +.bx-fade-down-hover:hover +{ + -webkit-animation: fade-down 1.5s infinite linear; + animation: fade-down 1.5s infinite linear; +} +.bx-fade-left +{ + -webkit-animation: fade-left 1.5s infinite linear; + animation: fade-left 1.5s infinite linear; +} +.bx-fade-left-hover:hover +{ + -webkit-animation: fade-left 1.5s infinite linear; + animation: fade-left 1.5s infinite linear; +} +.bx-fade-right +{ + -webkit-animation: fade-right 1.5s infinite linear; + animation: fade-right 1.5s infinite linear; +} +.bx-fade-right-hover:hover +{ + -webkit-animation: fade-right 1.5s infinite linear; + animation: fade-right 1.5s infinite linear; +} \ No newline at end of file diff --git a/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.css b/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.css new file mode 100644 index 000000000..39b011800 --- /dev/null +++ b/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.css @@ -0,0 +1,906 @@ +@font-face { + font-family: "boxicons-brands"; + src: url("./boxicons-brands.ttf?945bfe89057cc7627be1ecdc648441aa") format("truetype"), +url("./boxicons-brands.woff?945bfe89057cc7627be1ecdc648441aa") format("woff"), +url("./boxicons-brands.woff2?945bfe89057cc7627be1ecdc648441aa") format("woff2"); +} + + +.bxl { + font-family: boxicons-brands !important; + font-style: normal; + font-weight: normal; + font-variant: normal; + text-transform: none; + line-height: 1; + display:inline-block; + speak:none; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +.bxl.variable-selector-00:before { + content: "\fb1e"; +} +.bxl.bx-500px:before { + content: "\f101"; +} +.bxl.bx-99designs:before { + content: "\f102"; +} +.bxl.bx-adobe:before { + content: "\f103"; +} +.bxl.bx-airbnb:before { + content: "\f104"; +} +.bxl.bx-algolia:before { + content: "\f105"; +} +.bxl.bx-amazon:before { + content: "\f106"; +} +.bxl.bx-amex:before { + content: "\f107"; +} +.bxl.bx-android:before { + content: "\f108"; +} +.bxl.bx-angular:before { + content: "\f109"; +} +.bxl.bx-anthropic:before { + content: "\f10a"; +} +.bxl.bx-apple-music:before { + content: "\f10b"; +} +.bxl.bx-apple:before { + content: "\f10c"; +} +.bxl.bx-arc-browser:before { + content: "\f10d"; +} +.bxl.bx-artstation:before { + content: "\f10e"; +} +.bxl.bx-asana:before { + content: "\f10f"; +} +.bxl.bx-atlassian:before { + content: "\f110"; +} +.bxl.bx-atom-editor:before { + content: "\f111"; +} +.bxl.bx-audible:before { + content: "\f112"; +} +.bxl.bx-auth0:before { + content: "\f113"; +} +.bxl.bx-autodesk:before { + content: "\f114"; +} +.bxl.bx-aws:before { + content: "\f115"; +} +.bxl.bx-baidu:before { + content: "\f116"; +} +.bxl.bx-bash:before { + content: "\f117"; +} +.bxl.bx-behance:before { + content: "\f118"; +} +.bxl.bx-better-auth:before { + content: "\f119"; +} +.bxl.bx-bing:before { + content: "\f11a"; +} +.bxl.bx-bitcoin-logo:before { + content: "\f11b"; +} +.bxl.bx-blender:before { + content: "\f11c"; +} +.bxl.bx-blogger:before { + content: "\f11d"; +} +.bxl.bx-bluesky:before { + content: "\f11e"; +} +.bxl.bx-bolt-b:before { + content: "\f11f"; +} +.bxl.bx-bootstrap:before { + content: "\f120"; +} +.bxl.bx-boxicons:before { + content: "\f121"; +} +.bxl.bx-brave-browser:before { + content: "\f122"; +} +.bxl.bx-bun:before { + content: "\f123"; +} +.bxl.bx-buy-me-a-coffee:before { + content: "\f124"; +} +.bxl.bx-c-plus-plus:before { + content: "\f125"; +} +.bxl.bx-c-sharp:before { + content: "\f126"; +} +.bxl.bx-c:before { + content: "\f127"; +} +.bxl.bx-canva:before { + content: "\f128"; +} +.bxl.bx-chess-com:before { + content: "\f129"; +} +.bxl.bx-chrome:before { + content: "\f12a"; +} +.bxl.bx-claude-ai:before { + content: "\f12b"; +} +.bxl.bx-clerk:before { + content: "\f12c"; +} +.bxl.bx-cloudflare:before { + content: "\f12d"; +} +.bxl.bx-codepen:before { + content: "\f12e"; +} +.bxl.bx-convex:before { + content: "\f12f"; +} +.bxl.bx-creative-commons:before { + content: "\f130"; +} +.bxl.bx-crunchyroll:before { + content: "\f131"; +} +.bxl.bx-css3:before { + content: "\f132"; +} +.bxl.bx-cursor-ai:before { + content: "\f133"; +} +.bxl.bx-dailymotion:before { + content: "\f134"; +} +.bxl.bx-deepmind:before { + content: "\f135"; +} +.bxl.bx-deepseek:before { + content: "\f136"; +} +.bxl.bx-deezer:before { + content: "\f137"; +} +.bxl.bx-deno:before { + content: "\f138"; +} +.bxl.bx-dev-to:before { + content: "\f139"; +} +.bxl.bx-deviantart:before { + content: "\f13a"; +} +.bxl.bx-devpost:before { + content: "\f13b"; +} +.bxl.bx-digg:before { + content: "\f13c"; +} +.bxl.bx-digitalocean:before { + content: "\f13d"; +} +.bxl.bx-discord-alt:before { + content: "\f13e"; +} +.bxl.bx-discord:before { + content: "\f13f"; +} +.bxl.bx-discourse:before { + content: "\f140"; +} +.bxl.bx-discover:before { + content: "\f141"; +} +.bxl.bx-django:before { + content: "\f142"; +} +.bxl.bx-docker:before { + content: "\f143"; +} +.bxl.bx-dot-env:before { + content: "\f144"; +} +.bxl.bx-dribbble:before { + content: "\f145"; +} +.bxl.bx-drizzle-orm:before { + content: "\f146"; +} +.bxl.bx-dropbox:before { + content: "\f147"; +} +.bxl.bx-ebay:before { + content: "\f148"; +} +.bxl.bx-edge:before { + content: "\f149"; +} +.bxl.bx-ember-js:before { + content: "\f14a"; +} +.bxl.bx-etsy:before { + content: "\f14b"; +} +.bxl.bx-expo:before { + content: "\f14c"; +} +.bxl.bx-express-js:before { + content: "\f14d"; +} +.bxl.bx-facebook-circle:before { + content: "\f14e"; +} +.bxl.bx-facebook-square:before { + content: "\f14f"; +} +.bxl.bx-facebook:before { + content: "\f150"; +} +.bxl.bx-fastapi:before { + content: "\f151"; +} +.bxl.bx-fastify:before { + content: "\f152"; +} +.bxl.bx-figma-alt:before { + content: "\f153"; +} +.bxl.bx-figma:before { + content: "\f154"; +} +.bxl.bx-firebase:before { + content: "\f155"; +} +.bxl.bx-firefox:before { + content: "\f156"; +} +.bxl.bx-fiverr:before { + content: "\f157"; +} +.bxl.bx-flask-old:before { + content: "\f158"; +} +.bxl.bx-flask:before { + content: "\f159"; +} +.bxl.bx-flickr-square:before { + content: "\f15a"; +} +.bxl.bx-flickr:before { + content: "\f15b"; +} +.bxl.bx-flutter:before { + content: "\f15c"; +} +.bxl.bx-foursquare:before { + content: "\f15d"; +} +.bxl.bx-framer:before { + content: "\f15e"; +} +.bxl.bx-gatsby-js:before { + content: "\f15f"; +} +.bxl.bx-gemini:before { + content: "\f160"; +} +.bxl.bx-git:before { + content: "\f161"; +} +.bxl.bx-github-copilot:before { + content: "\f162"; +} +.bxl.bx-github:before { + content: "\f163"; +} +.bxl.bx-gitlab:before { + content: "\f164"; +} +.bxl.bx-gmail:before { + content: "\f165"; +} +.bxl.bx-go-lang:before { + content: "\f166"; +} +.bxl.bx-google-antigravity:before { + content: "\f167"; +} +.bxl.bx-google-cloud:before { + content: "\f168"; +} +.bxl.bx-google-pay:before { + content: "\f169"; +} +.bxl.bx-google:before { + content: "\f16a"; +} +.bxl.bx-graphql:before { + content: "\f16b"; +} +.bxl.bx-grok:before { + content: "\f16c"; +} +.bxl.bx-groq-ai:before { + content: "\f16d"; +} +.bxl.bx-gsap:before { + content: "\f16e"; +} +.bxl.bx-gumroad:before { + content: "\f16f"; +} +.bxl.bx-hashnode:before { + content: "\f170"; +} +.bxl.bx-hcaptcha:before { + content: "\f171"; +} +.bxl.bx-heroku:before { + content: "\f172"; +} +.bxl.bx-hono-js:before { + content: "\f173"; +} +.bxl.bx-html5:before { + content: "\f174"; +} +.bxl.bx-hugo:before { + content: "\f175"; +} +.bxl.bx-ibm:before { + content: "\f176"; +} +.bxl.bx-imdb:before { + content: "\f177"; +} +.bxl.bx-instagram-alt:before { + content: "\f178"; +} +.bxl.bx-instagram:before { + content: "\f179"; +} +.bxl.bx-internet-explorer:before { + content: "\f17a"; +} +.bxl.bx-invision:before { + content: "\f17b"; +} +.bxl.bx-java:before { + content: "\f17c"; +} +.bxl.bx-javascript:before { + content: "\f17d"; +} +.bxl.bx-joomla:before { + content: "\f17e"; +} +.bxl.bx-jquery:before { + content: "\f17f"; +} +.bxl.bx-jsfiddle:before { + content: "\f180"; +} +.bxl.bx-jwt:before { + content: "\f181"; +} +.bxl.bx-kick:before { + content: "\f182"; +} +.bxl.bx-kickstarter:before { + content: "\f183"; +} +.bxl.bx-kotlin:before { + content: "\f184"; +} +.bxl.bx-kubernetes:before { + content: "\f185"; +} +.bxl.bx-laravel:before { + content: "\f186"; +} +.bxl.bx-leetcode:before { + content: "\f187"; +} +.bxl.bx-lemon-squeezy:before { + content: "\f188"; +} +.bxl.bx-less:before { + content: "\f189"; +} +.bxl.bx-letterboxd:before { + content: "\f18a"; +} +.bxl.bx-lichess:before { + content: "\f18b"; +} +.bxl.bx-line-chat:before { + content: "\f18c"; +} +.bxl.bx-linear-app:before { + content: "\f18d"; +} +.bxl.bx-linkedin-square:before { + content: "\f18e"; +} +.bxl.bx-linkedin:before { + content: "\f18f"; +} +.bxl.bx-linktree:before { + content: "\f190"; +} +.bxl.bx-loom:before { + content: "\f191"; +} +.bxl.bx-lottie-files:before { + content: "\f192"; +} +.bxl.bx-lottie-lab:before { + content: "\f193"; +} +.bxl.bx-lovable:before { + content: "\f194"; +} +.bxl.bx-lyft:before { + content: "\f195"; +} +.bxl.bx-magento:before { + content: "\f196"; +} +.bxl.bx-mailchimp:before { + content: "\f197"; +} +.bxl.bx-markdown:before { + content: "\f198"; +} +.bxl.bx-mastercard:before { + content: "\f199"; +} +.bxl.bx-mastodon:before { + content: "\f19a"; +} +.bxl.bx-mcp:before { + content: "\f19b"; +} +.bxl.bx-medium-old:before { + content: "\f19c"; +} +.bxl.bx-medium-square:before { + content: "\f19d"; +} +.bxl.bx-medium:before { + content: "\f19e"; +} +.bxl.bx-messenger:before { + content: "\f19f"; +} +.bxl.bx-meta:before { + content: "\f1a0"; +} +.bxl.bx-microsoft-teams:before { + content: "\f1a1"; +} +.bxl.bx-microsoft-windows:before { + content: "\f1a2"; +} +.bxl.bx-microsoft:before { + content: "\f1a3"; +} +.bxl.bx-midjourney:before { + content: "\f1a4"; +} +.bxl.bx-mongodb:before { + content: "\f1a5"; +} +.bxl.bx-motion-js:before { + content: "\f1a6"; +} +.bxl.bx-mozilla:before { + content: "\f1a7"; +} +.bxl.bx-my-sql:before { + content: "\f1a8"; +} +.bxl.bx-neon-tech:before { + content: "\f1a9"; +} +.bxl.bx-neovim:before { + content: "\f1aa"; +} +.bxl.bx-nest-js:before { + content: "\f1ab"; +} +.bxl.bx-netlify:before { + content: "\f1ac"; +} +.bxl.bx-next-js:before { + content: "\f1ad"; +} +.bxl.bx-nodejs:before { + content: "\f1ae"; +} +.bxl.bx-notion:before { + content: "\f1af"; +} +.bxl.bx-npm:before { + content: "\f1b0"; +} +.bxl.bx-nuxt-js:before { + content: "\f1b1"; +} +.bxl.bx-ok-ru:before { + content: "\f1b2"; +} +.bxl.bx-ollama:before { + content: "\f1b3"; +} +.bxl.bx-openai:before { + content: "\f1b4"; +} +.bxl.bx-opensea:before { + content: "\f1b5"; +} +.bxl.bx-opera:before { + content: "\f1b6"; +} +.bxl.bx-paddle-p:before { + content: "\f1b7"; +} +.bxl.bx-paper-design:before { + content: "\f1b8"; +} +.bxl.bx-patreon:before { + content: "\f1b9"; +} +.bxl.bx-payload-cms:before { + content: "\f1ba"; +} +.bxl.bx-paypal:before { + content: "\f1bb"; +} +.bxl.bx-periscope:before { + content: "\f1bc"; +} +.bxl.bx-perplexity-ai:before { + content: "\f1bd"; +} +.bxl.bx-php:before { + content: "\f1be"; +} +.bxl.bx-pinterest-alt:before { + content: "\f1bf"; +} +.bxl.bx-pinterest:before { + content: "\f1c0"; +} +.bxl.bx-planetscale:before { + content: "\f1c1"; +} +.bxl.bx-play-store:before { + content: "\f1c2"; +} +.bxl.bx-playstation:before { + content: "\f1c3"; +} +.bxl.bx-pocket:before { + content: "\f1c4"; +} +.bxl.bx-polar:before { + content: "\f1c5"; +} +.bxl.bx-postgresql:before { + content: "\f1c6"; +} +.bxl.bx-prisma-orm:before { + content: "\f1c7"; +} +.bxl.bx-product-hunt:before { + content: "\f1c8"; +} +.bxl.bx-python:before { + content: "\f1c9"; +} +.bxl.bx-qdrant:before { + content: "\f1ca"; +} +.bxl.bx-qq:before { + content: "\f1cb"; +} +.bxl.bx-quora:before { + content: "\f1cc"; +} +.bxl.bx-radix-ui:before { + content: "\f1cd"; +} +.bxl.bx-railway:before { + content: "\f1ce"; +} +.bxl.bx-rasberry-pi:before { + content: "\f1cf"; +} +.bxl.bx-react-query:before { + content: "\f1d0"; +} +.bxl.bx-react-router:before { + content: "\f1d1"; +} +.bxl.bx-react:before { + content: "\f1d2"; +} +.bxl.bx-redbubble:before { + content: "\f1d3"; +} +.bxl.bx-reddit:before { + content: "\f1d4"; +} +.bxl.bx-redux:before { + content: "\f1d5"; +} +.bxl.bx-remix-js:before { + content: "\f1d6"; +} +.bxl.bx-replit:before { + content: "\f1d7"; +} +.bxl.bx-resend:before { + content: "\f1d8"; +} +.bxl.bx-roblox:before { + content: "\f1d9"; +} +.bxl.bx-sanity:before { + content: "\f1da"; +} +.bxl.bx-sass:before { + content: "\f1db"; +} +.bxl.bx-sentry:before { + content: "\f1dc"; +} +.bxl.bx-shadcn-ui:before { + content: "\f1dd"; +} +.bxl.bx-shopify:before { + content: "\f1de"; +} +.bxl.bx-sketch:before { + content: "\f1df"; +} +.bxl.bx-skype:before { + content: "\f1e0"; +} +.bxl.bx-slack-old:before { + content: "\f1e1"; +} +.bxl.bx-slack:before { + content: "\f1e2"; +} +.bxl.bx-snapchat:before { + content: "\f1e3"; +} +.bxl.bx-socket-io:before { + content: "\f1e4"; +} +.bxl.bx-soundcloud:before { + content: "\f1e5"; +} +.bxl.bx-spotify:before { + content: "\f1e6"; +} +.bxl.bx-spring-boot:before { + content: "\f1e7"; +} +.bxl.bx-squarespace:before { + content: "\f1e8"; +} +.bxl.bx-sst:before { + content: "\f1e9"; +} +.bxl.bx-stack-overflow:before { + content: "\f1ea"; +} +.bxl.bx-stackblitz:before { + content: "\f1eb"; +} +.bxl.bx-steam:before { + content: "\f1ec"; +} +.bxl.bx-stripe:before { + content: "\f1ed"; +} +.bxl.bx-supabase:before { + content: "\f1ee"; +} +.bxl.bx-svelte:before { + content: "\f1ef"; +} +.bxl.bx-tailwind-css:before { + content: "\f1f0"; +} +.bxl.bx-telegram:before { + content: "\f1f1"; +} +.bxl.bx-terraform:before { + content: "\f1f2"; +} +.bxl.bx-threads:before { + content: "\f1f3"; +} +.bxl.bx-three-js:before { + content: "\f1f4"; +} +.bxl.bx-tiktok:before { + content: "\f1f5"; +} +.bxl.bx-trello:before { + content: "\f1f6"; +} +.bxl.bx-trip-advisor:before { + content: "\f1f7"; +} +.bxl.bx-trpc:before { + content: "\f1f8"; +} +.bxl.bx-trustpilot:before { + content: "\f1f9"; +} +.bxl.bx-tumblr:before { + content: "\f1fa"; +} +.bxl.bx-tux:before { + content: "\f1fb"; +} +.bxl.bx-twitch:before { + content: "\f1fc"; +} +.bxl.bx-twitter-x:before { + content: "\f1fd"; +} +.bxl.bx-twitter:before { + content: "\f1fe"; +} +.bxl.bx-typescript:before { + content: "\f1ff"; +} +.bxl.bx-uber:before { + content: "\f200"; +} +.bxl.bx-ubuntu:before { + content: "\f201"; +} +.bxl.bx-udacity:before { + content: "\f202"; +} +.bxl.bx-union-pay:before { + content: "\f203"; +} +.bxl.bx-unity:before { + content: "\f204"; +} +.bxl.bx-unsplash:before { + content: "\f205"; +} +.bxl.bx-upi:before { + content: "\f206"; +} +.bxl.bx-upwork:before { + content: "\f207"; +} +.bxl.bx-v0:before { + content: "\f208"; +} +.bxl.bx-venmo:before { + content: "\f209"; +} +.bxl.bx-vercel:before { + content: "\f20a"; +} +.bxl.bx-vimeo:before { + content: "\f20b"; +} +.bxl.bx-visa:before { + content: "\f20c"; +} +.bxl.bx-visual-studio:before { + content: "\f20d"; +} +.bxl.bx-vite-js:before { + content: "\f20e"; +} +.bxl.bx-vk:before { + content: "\f20f"; +} +.bxl.bx-vuejs:before { + content: "\f210"; +} +.bxl.bx-waze:before { + content: "\f211"; +} +.bxl.bx-web-components:before { + content: "\f212"; +} +.bxl.bx-webflow:before { + content: "\f213"; +} +.bxl.bx-wechat:before { + content: "\f214"; +} +.bxl.bx-weibo:before { + content: "\f215"; +} +.bxl.bx-whatsapp-square:before { + content: "\f216"; +} +.bxl.bx-whatsapp:before { + content: "\f217"; +} +.bxl.bx-wikipedia:before { + content: "\f218"; +} +.bxl.bx-windsurf:before { + content: "\f219"; +} +.bxl.bx-wix:before { + content: "\f21a"; +} +.bxl.bx-wordpress:before { + content: "\f21b"; +} +.bxl.bx-work-os:before { + content: "\f21c"; +} +.bxl.bx-xai:before { + content: "\f21d"; +} +.bxl.bx-xbox:before { + content: "\f21e"; +} +.bxl.bx-xing:before { + content: "\f21f"; +} +.bxl.bx-yahoo:before { + content: "\f220"; +} +.bxl.bx-yarn:before { + content: "\f221"; +} +.bxl.bx-yelp:before { + content: "\f222"; +} +.bxl.bx-youtube-music:before { + content: "\f223"; +} +.bxl.bx-youtube:before { + content: "\f224"; +} +.bxl.bx-zen-browser:before { + content: "\f225"; +} +.bxl.bx-zoom-workplace:before { + content: "\f226"; +} diff --git a/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.html b/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.html new file mode 100644 index 000000000..de2463d6a --- /dev/null +++ b/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.html @@ -0,0 +1,2116 @@ + + + + + boxicons-brands + + + + + + +

    boxicons-brands

    + +
    + + + +
    + bx-500px +
    +
    + + + +
    + bx-99designs +
    +
    + + + +
    + bx-adobe +
    +
    + + + +
    + bx-airbnb +
    +
    + + + +
    + bx-algolia +
    +
    + + + +
    + bx-amazon +
    +
    + + + +
    + bx-amex +
    +
    + + + +
    + bx-android +
    +
    + + + +
    + bx-angular +
    +
    + + + +
    + bx-anthropic +
    +
    + + + +
    + bx-apple-music +
    +
    + + + +
    + bx-apple +
    +
    + + + +
    + bx-arc-browser +
    +
    + + + +
    + bx-artstation +
    +
    + + + +
    + bx-asana +
    +
    + + + +
    + bx-atlassian +
    +
    + + + +
    + bx-atom-editor +
    +
    + + + +
    + bx-audible +
    +
    + + + +
    + bx-auth0 +
    +
    + + + +
    + bx-autodesk +
    +
    + + + +
    + bx-aws +
    +
    + + + +
    + bx-baidu +
    +
    + + + +
    + bx-bash +
    +
    + + + +
    + bx-behance +
    +
    + + + +
    + bx-better-auth +
    +
    + + + +
    + bx-bing +
    +
    + + + +
    + bx-bitcoin-logo +
    +
    + + + +
    + bx-blender +
    +
    + + + +
    + bx-blogger +
    +
    + + + +
    + bx-bluesky +
    +
    + + + +
    + bx-bolt-b +
    +
    + + + +
    + bx-bootstrap +
    +
    + + + +
    + bx-boxicons +
    +
    + + + +
    + bx-brave-browser +
    +
    + + + +
    + bx-bun +
    +
    + + + +
    + bx-buy-me-a-coffee +
    +
    + + + +
    + bx-c-plus-plus +
    +
    + + + +
    + bx-c-sharp +
    +
    + + + +
    + bx-c +
    +
    + + + +
    + bx-canva +
    +
    + + + +
    + bx-chess-com +
    +
    + + + +
    + bx-chrome +
    +
    + + + +
    + bx-claude-ai +
    +
    + + + +
    + bx-clerk +
    +
    + + + +
    + bx-cloudflare +
    +
    + + + +
    + bx-codepen +
    +
    + + + +
    + bx-convex +
    +
    + + + +
    + bx-creative-commons +
    +
    + + + +
    + bx-crunchyroll +
    +
    + + + +
    + bx-css3 +
    +
    + + + +
    + bx-cursor-ai +
    +
    + + + +
    + bx-dailymotion +
    +
    + + + +
    + bx-deepmind +
    +
    + + + +
    + bx-deepseek +
    +
    + + + +
    + bx-deezer +
    +
    + + + +
    + bx-deno +
    +
    + + + +
    + bx-dev-to +
    +
    + + + +
    + bx-deviantart +
    +
    + + + +
    + bx-devpost +
    +
    + + + +
    + bx-digg +
    +
    + + + +
    + bx-digitalocean +
    +
    + + + +
    + bx-discord-alt +
    +
    + + + +
    + bx-discord +
    +
    + + + +
    + bx-discourse +
    +
    + + + +
    + bx-discover +
    +
    + + + +
    + bx-django +
    +
    + + + +
    + bx-docker +
    +
    + + + +
    + bx-dot-env +
    +
    + + + +
    + bx-dribbble +
    +
    + + + +
    + bx-drizzle-orm +
    +
    + + + +
    + bx-dropbox +
    +
    + + + +
    + bx-ebay +
    +
    + + + +
    + bx-edge +
    +
    + + + +
    + bx-ember-js +
    +
    + + + +
    + bx-etsy +
    +
    + + + +
    + bx-expo +
    +
    + + + +
    + bx-express-js +
    +
    + + + +
    + bx-facebook-circle +
    +
    + + + +
    + bx-facebook-square +
    +
    + + + +
    + bx-facebook +
    +
    + + + +
    + bx-fastapi +
    +
    + + + +
    + bx-fastify +
    +
    + + + +
    + bx-figma-alt +
    +
    + + + +
    + bx-figma +
    +
    + + + +
    + bx-firebase +
    +
    + + + +
    + bx-firefox +
    +
    + + + +
    + bx-fiverr +
    +
    + + + +
    + bx-flask-old +
    +
    + + + +
    + bx-flask +
    +
    + + + +
    + bx-flickr-square +
    +
    + + + +
    + bx-flickr +
    +
    + + + +
    + bx-flutter +
    +
    + + + +
    + bx-foursquare +
    +
    + + + +
    + bx-framer +
    +
    + + + +
    + bx-gatsby-js +
    +
    + + + +
    + bx-gemini +
    +
    + + + +
    + bx-git +
    +
    + + + +
    + bx-github-copilot +
    +
    + + + +
    + bx-github +
    +
    + + + +
    + bx-gitlab +
    +
    + + + +
    + bx-gmail +
    +
    + + + +
    + bx-go-lang +
    +
    + + + +
    + bx-google-antigravity +
    +
    + + + +
    + bx-google-cloud +
    +
    + + + +
    + bx-google-pay +
    +
    + + + +
    + bx-google +
    +
    + + + +
    + bx-graphql +
    +
    + + + +
    + bx-grok +
    +
    + + + +
    + bx-groq-ai +
    +
    + + + +
    + bx-gsap +
    +
    + + + +
    + bx-gumroad +
    +
    + + + +
    + bx-hashnode +
    +
    + + + +
    + bx-hcaptcha +
    +
    + + + +
    + bx-heroku +
    +
    + + + +
    + bx-hono-js +
    +
    + + + +
    + bx-html5 +
    +
    + + + +
    + bx-hugo +
    +
    + + + +
    + bx-ibm +
    +
    + + + +
    + bx-imdb +
    +
    + + + +
    + bx-instagram-alt +
    +
    + + + +
    + bx-instagram +
    +
    + + + +
    + bx-internet-explorer +
    +
    + + + +
    + bx-invision +
    +
    + + + +
    + bx-java +
    +
    + + + +
    + bx-javascript +
    +
    + + + +
    + bx-joomla +
    +
    + + + +
    + bx-jquery +
    +
    + + + +
    + bx-jsfiddle +
    +
    + + + +
    + bx-jwt +
    +
    + + + +
    + bx-kick +
    +
    + + + +
    + bx-kickstarter +
    +
    + + + +
    + bx-kotlin +
    +
    + + + +
    + bx-kubernetes +
    +
    + + + +
    + bx-laravel +
    +
    + + + +
    + bx-leetcode +
    +
    + + + +
    + bx-lemon-squeezy +
    +
    + + + +
    + bx-less +
    +
    + + + +
    + bx-letterboxd +
    +
    + + + +
    + bx-lichess +
    +
    + + + +
    + bx-line-chat +
    +
    + + + +
    + bx-linear-app +
    +
    + + + +
    + bx-linkedin-square +
    +
    + + + +
    + bx-linkedin +
    +
    + + + +
    + bx-linktree +
    +
    + + + +
    + bx-loom +
    +
    + + + +
    + bx-lottie-files +
    +
    + + + +
    + bx-lottie-lab +
    +
    + + + +
    + bx-lovable +
    +
    + + + +
    + bx-lyft +
    +
    + + + +
    + bx-magento +
    +
    + + + +
    + bx-mailchimp +
    +
    + + + +
    + bx-markdown +
    +
    + + + +
    + bx-mastercard +
    +
    + + + +
    + bx-mastodon +
    +
    + + + +
    + bx-mcp +
    +
    + + + +
    + bx-medium-old +
    +
    + + + +
    + bx-medium-square +
    +
    + + + +
    + bx-medium +
    +
    + + + +
    + bx-messenger +
    +
    + + + +
    + bx-meta +
    +
    + + + +
    + bx-microsoft-teams +
    +
    + + + +
    + bx-microsoft-windows +
    +
    + + + +
    + bx-microsoft +
    +
    + + + +
    + bx-midjourney +
    +
    + + + +
    + bx-mongodb +
    +
    + + + +
    + bx-motion-js +
    +
    + + + +
    + bx-mozilla +
    +
    + + + +
    + bx-my-sql +
    +
    + + + +
    + bx-neon-tech +
    +
    + + + +
    + bx-neovim +
    +
    + + + +
    + bx-nest-js +
    +
    + + + +
    + bx-netlify +
    +
    + + + +
    + bx-next-js +
    +
    + + + +
    + bx-nodejs +
    +
    + + + +
    + bx-notion +
    +
    + + + +
    + bx-npm +
    +
    + + + +
    + bx-nuxt-js +
    +
    + + + +
    + bx-ok-ru +
    +
    + + + +
    + bx-ollama +
    +
    + + + +
    + bx-openai +
    +
    + + + +
    + bx-opensea +
    +
    + + + +
    + bx-opera +
    +
    + + + +
    + bx-paddle-p +
    +
    + + + +
    + bx-paper-design +
    +
    + + + +
    + bx-patreon +
    +
    + + + +
    + bx-payload-cms +
    +
    + + + +
    + bx-paypal +
    +
    + + + +
    + bx-periscope +
    +
    + + + +
    + bx-perplexity-ai +
    +
    + + + +
    + bx-php +
    +
    + + + +
    + bx-pinterest-alt +
    +
    + + + +
    + bx-pinterest +
    +
    + + + +
    + bx-planetscale +
    +
    + + + +
    + bx-play-store +
    +
    + + + +
    + bx-playstation +
    +
    + + + +
    + bx-pocket +
    +
    + + + +
    + bx-polar +
    +
    + + + +
    + bx-postgresql +
    +
    + + + +
    + bx-prisma-orm +
    +
    + + + +
    + bx-product-hunt +
    +
    + + + +
    + bx-python +
    +
    + + + +
    + bx-qdrant +
    +
    + + + +
    + bx-qq +
    +
    + + + +
    + bx-quora +
    +
    + + + +
    + bx-radix-ui +
    +
    + + + +
    + bx-railway +
    +
    + + + +
    + bx-rasberry-pi +
    +
    + + + +
    + bx-react-query +
    +
    + + + +
    + bx-react-router +
    +
    + + + +
    + bx-react +
    +
    + + + +
    + bx-redbubble +
    +
    + + + +
    + bx-reddit +
    +
    + + + +
    + bx-redux +
    +
    + + + +
    + bx-remix-js +
    +
    + + + +
    + bx-replit +
    +
    + + + +
    + bx-resend +
    +
    + + + +
    + bx-roblox +
    +
    + + + +
    + bx-sanity +
    +
    + + + +
    + bx-sass +
    +
    + + + +
    + bx-sentry +
    +
    + + + +
    + bx-shadcn-ui +
    +
    + + + +
    + bx-shopify +
    +
    + + + +
    + bx-sketch +
    +
    + + + +
    + bx-skype +
    +
    + + + +
    + bx-slack-old +
    +
    + + + +
    + bx-slack +
    +
    + + + +
    + bx-snapchat +
    +
    + + + +
    + bx-socket-io +
    +
    + + + +
    + bx-soundcloud +
    +
    + + + +
    + bx-spotify +
    +
    + + + +
    + bx-spring-boot +
    +
    + + + +
    + bx-squarespace +
    +
    + + + +
    + bx-sst +
    +
    + + + +
    + bx-stack-overflow +
    +
    + + + +
    + bx-stackblitz +
    +
    + + + +
    + bx-steam +
    +
    + + + +
    + bx-stripe +
    +
    + + + +
    + bx-supabase +
    +
    + + + +
    + bx-svelte +
    +
    + + + +
    + bx-tailwind-css +
    +
    + + + +
    + bx-telegram +
    +
    + + + +
    + bx-terraform +
    +
    + + + +
    + bx-threads +
    +
    + + + +
    + bx-three-js +
    +
    + + + +
    + bx-tiktok +
    +
    + + + +
    + bx-trello +
    +
    + + + +
    + bx-trip-advisor +
    +
    + + + +
    + bx-trpc +
    +
    + + + +
    + bx-trustpilot +
    +
    + + + +
    + bx-tumblr +
    +
    + + + +
    + bx-tux +
    +
    + + + +
    + bx-twitch +
    +
    + + + +
    + bx-twitter-x +
    +
    + + + +
    + bx-twitter +
    +
    + + + +
    + bx-typescript +
    +
    + + + +
    + bx-uber +
    +
    + + + +
    + bx-ubuntu +
    +
    + + + +
    + bx-udacity +
    +
    + + + +
    + bx-union-pay +
    +
    + + + +
    + bx-unity +
    +
    + + + +
    + bx-unsplash +
    +
    + + + +
    + bx-upi +
    +
    + + + +
    + bx-upwork +
    +
    + + + +
    + bx-v0 +
    +
    + + + +
    + bx-venmo +
    +
    + + + +
    + bx-vercel +
    +
    + + + +
    + bx-vimeo +
    +
    + + + +
    + bx-visa +
    +
    + + + +
    + bx-visual-studio +
    +
    + + + +
    + bx-vite-js +
    +
    + + + +
    + bx-vk +
    +
    + + + +
    + bx-vuejs +
    +
    + + + +
    + bx-waze +
    +
    + + + +
    + bx-web-components +
    +
    + + + +
    + bx-webflow +
    +
    + + + +
    + bx-wechat +
    +
    + + + +
    + bx-weibo +
    +
    + + + +
    + bx-whatsapp-square +
    +
    + + + +
    + bx-whatsapp +
    +
    + + + +
    + bx-wikipedia +
    +
    + + + +
    + bx-windsurf +
    +
    + + + +
    + bx-wix +
    +
    + + + +
    + bx-wordpress +
    +
    + + + +
    + bx-work-os +
    +
    + + + +
    + bx-xai +
    +
    + + + +
    + bx-xbox +
    +
    + + + +
    + bx-xing +
    +
    + + + +
    + bx-yahoo +
    +
    + + + +
    + bx-yarn +
    +
    + + + +
    + bx-yelp +
    +
    + + + +
    + bx-youtube-music +
    +
    + + + +
    + bx-youtube +
    +
    + + + +
    + bx-zen-browser +
    +
    + + + +
    + bx-zoom-workplace +
    + + \ No newline at end of file diff --git a/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.json b/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.json new file mode 100644 index 000000000..b2c2c5f65 --- /dev/null +++ b/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.json @@ -0,0 +1,297 @@ +{ + "variable-selector-00": 64286, + "bx-500px": 61697, + "bx-99designs": 61698, + "bx-adobe": 61699, + "bx-airbnb": 61700, + "bx-algolia": 61701, + "bx-amazon": 61702, + "bx-amex": 61703, + "bx-android": 61704, + "bx-angular": 61705, + "bx-anthropic": 61706, + "bx-apple-music": 61707, + "bx-apple": 61708, + "bx-arc-browser": 61709, + "bx-artstation": 61710, + "bx-asana": 61711, + "bx-atlassian": 61712, + "bx-atom-editor": 61713, + "bx-audible": 61714, + "bx-auth0": 61715, + "bx-autodesk": 61716, + "bx-aws": 61717, + "bx-baidu": 61718, + "bx-bash": 61719, + "bx-behance": 61720, + "bx-better-auth": 61721, + "bx-bing": 61722, + "bx-bitcoin-logo": 61723, + "bx-blender": 61724, + "bx-blogger": 61725, + "bx-bluesky": 61726, + "bx-bolt-b": 61727, + "bx-bootstrap": 61728, + "bx-boxicons": 61729, + "bx-brave-browser": 61730, + "bx-bun": 61731, + "bx-buy-me-a-coffee": 61732, + "bx-c-plus-plus": 61733, + "bx-c-sharp": 61734, + "bx-c": 61735, + "bx-canva": 61736, + "bx-chess-com": 61737, + "bx-chrome": 61738, + "bx-claude-ai": 61739, + "bx-clerk": 61740, + "bx-cloudflare": 61741, + "bx-codepen": 61742, + "bx-convex": 61743, + "bx-creative-commons": 61744, + "bx-crunchyroll": 61745, + "bx-css3": 61746, + "bx-cursor-ai": 61747, + "bx-dailymotion": 61748, + "bx-deepmind": 61749, + "bx-deepseek": 61750, + "bx-deezer": 61751, + "bx-deno": 61752, + "bx-dev-to": 61753, + "bx-deviantart": 61754, + "bx-devpost": 61755, + "bx-digg": 61756, + "bx-digitalocean": 61757, + "bx-discord-alt": 61758, + "bx-discord": 61759, + "bx-discourse": 61760, + "bx-discover": 61761, + "bx-django": 61762, + "bx-docker": 61763, + "bx-dot-env": 61764, + "bx-dribbble": 61765, + "bx-drizzle-orm": 61766, + "bx-dropbox": 61767, + "bx-ebay": 61768, + "bx-edge": 61769, + "bx-ember-js": 61770, + "bx-etsy": 61771, + "bx-expo": 61772, + "bx-express-js": 61773, + "bx-facebook-circle": 61774, + "bx-facebook-square": 61775, + "bx-facebook": 61776, + "bx-fastapi": 61777, + "bx-fastify": 61778, + "bx-figma-alt": 61779, + "bx-figma": 61780, + "bx-firebase": 61781, + "bx-firefox": 61782, + "bx-fiverr": 61783, + "bx-flask-old": 61784, + "bx-flask": 61785, + "bx-flickr-square": 61786, + "bx-flickr": 61787, + "bx-flutter": 61788, + "bx-foursquare": 61789, + "bx-framer": 61790, + "bx-gatsby-js": 61791, + "bx-gemini": 61792, + "bx-git": 61793, + "bx-github-copilot": 61794, + "bx-github": 61795, + "bx-gitlab": 61796, + "bx-gmail": 61797, + "bx-go-lang": 61798, + "bx-google-antigravity": 61799, + "bx-google-cloud": 61800, + "bx-google-pay": 61801, + "bx-google": 61802, + "bx-graphql": 61803, + "bx-grok": 61804, + "bx-groq-ai": 61805, + "bx-gsap": 61806, + "bx-gumroad": 61807, + "bx-hashnode": 61808, + "bx-hcaptcha": 61809, + "bx-heroku": 61810, + "bx-hono-js": 61811, + "bx-html5": 61812, + "bx-hugo": 61813, + "bx-ibm": 61814, + "bx-imdb": 61815, + "bx-instagram-alt": 61816, + "bx-instagram": 61817, + "bx-internet-explorer": 61818, + "bx-invision": 61819, + "bx-java": 61820, + "bx-javascript": 61821, + "bx-joomla": 61822, + "bx-jquery": 61823, + "bx-jsfiddle": 61824, + "bx-jwt": 61825, + "bx-kick": 61826, + "bx-kickstarter": 61827, + "bx-kotlin": 61828, + "bx-kubernetes": 61829, + "bx-laravel": 61830, + "bx-leetcode": 61831, + "bx-lemon-squeezy": 61832, + "bx-less": 61833, + "bx-letterboxd": 61834, + "bx-lichess": 61835, + "bx-line-chat": 61836, + "bx-linear-app": 61837, + "bx-linkedin-square": 61838, + "bx-linkedin": 61839, + "bx-linktree": 61840, + "bx-loom": 61841, + "bx-lottie-files": 61842, + "bx-lottie-lab": 61843, + "bx-lovable": 61844, + "bx-lyft": 61845, + "bx-magento": 61846, + "bx-mailchimp": 61847, + "bx-markdown": 61848, + "bx-mastercard": 61849, + "bx-mastodon": 61850, + "bx-mcp": 61851, + "bx-medium-old": 61852, + "bx-medium-square": 61853, + "bx-medium": 61854, + "bx-messenger": 61855, + "bx-meta": 61856, + "bx-microsoft-teams": 61857, + "bx-microsoft-windows": 61858, + "bx-microsoft": 61859, + "bx-midjourney": 61860, + "bx-mongodb": 61861, + "bx-motion-js": 61862, + "bx-mozilla": 61863, + "bx-my-sql": 61864, + "bx-neon-tech": 61865, + "bx-neovim": 61866, + "bx-nest-js": 61867, + "bx-netlify": 61868, + "bx-next-js": 61869, + "bx-nodejs": 61870, + "bx-notion": 61871, + "bx-npm": 61872, + "bx-nuxt-js": 61873, + "bx-ok-ru": 61874, + "bx-ollama": 61875, + "bx-openai": 61876, + "bx-opensea": 61877, + "bx-opera": 61878, + "bx-paddle-p": 61879, + "bx-paper-design": 61880, + "bx-patreon": 61881, + "bx-payload-cms": 61882, + "bx-paypal": 61883, + "bx-periscope": 61884, + "bx-perplexity-ai": 61885, + "bx-php": 61886, + "bx-pinterest-alt": 61887, + "bx-pinterest": 61888, + "bx-planetscale": 61889, + "bx-play-store": 61890, + "bx-playstation": 61891, + "bx-pocket": 61892, + "bx-polar": 61893, + "bx-postgresql": 61894, + "bx-prisma-orm": 61895, + "bx-product-hunt": 61896, + "bx-python": 61897, + "bx-qdrant": 61898, + "bx-qq": 61899, + "bx-quora": 61900, + "bx-radix-ui": 61901, + "bx-railway": 61902, + "bx-rasberry-pi": 61903, + "bx-react-query": 61904, + "bx-react-router": 61905, + "bx-react": 61906, + "bx-redbubble": 61907, + "bx-reddit": 61908, + "bx-redux": 61909, + "bx-remix-js": 61910, + "bx-replit": 61911, + "bx-resend": 61912, + "bx-roblox": 61913, + "bx-sanity": 61914, + "bx-sass": 61915, + "bx-sentry": 61916, + "bx-shadcn-ui": 61917, + "bx-shopify": 61918, + "bx-sketch": 61919, + "bx-skype": 61920, + "bx-slack-old": 61921, + "bx-slack": 61922, + "bx-snapchat": 61923, + "bx-socket-io": 61924, + "bx-soundcloud": 61925, + "bx-spotify": 61926, + "bx-spring-boot": 61927, + "bx-squarespace": 61928, + "bx-sst": 61929, + "bx-stack-overflow": 61930, + "bx-stackblitz": 61931, + "bx-steam": 61932, + "bx-stripe": 61933, + "bx-supabase": 61934, + "bx-svelte": 61935, + "bx-tailwind-css": 61936, + "bx-telegram": 61937, + "bx-terraform": 61938, + "bx-threads": 61939, + "bx-three-js": 61940, + "bx-tiktok": 61941, + "bx-trello": 61942, + "bx-trip-advisor": 61943, + "bx-trpc": 61944, + "bx-trustpilot": 61945, + "bx-tumblr": 61946, + "bx-tux": 61947, + "bx-twitch": 61948, + "bx-twitter-x": 61949, + "bx-twitter": 61950, + "bx-typescript": 61951, + "bx-uber": 61952, + "bx-ubuntu": 61953, + "bx-udacity": 61954, + "bx-union-pay": 61955, + "bx-unity": 61956, + "bx-unsplash": 61957, + "bx-upi": 61958, + "bx-upwork": 61959, + "bx-v0": 61960, + "bx-venmo": 61961, + "bx-vercel": 61962, + "bx-vimeo": 61963, + "bx-visa": 61964, + "bx-visual-studio": 61965, + "bx-vite-js": 61966, + "bx-vk": 61967, + "bx-vuejs": 61968, + "bx-waze": 61969, + "bx-web-components": 61970, + "bx-webflow": 61971, + "bx-wechat": 61972, + "bx-weibo": 61973, + "bx-whatsapp-square": 61974, + "bx-whatsapp": 61975, + "bx-wikipedia": 61976, + "bx-windsurf": 61977, + "bx-wix": 61978, + "bx-wordpress": 61979, + "bx-work-os": 61980, + "bx-xai": 61981, + "bx-xbox": 61982, + "bx-xing": 61983, + "bx-yahoo": 61984, + "bx-yarn": 61985, + "bx-yelp": 61986, + "bx-youtube-music": 61987, + "bx-youtube": 61988, + "bx-zen-browser": 61989, + "bx-zoom-workplace": 61990 +} \ No newline at end of file diff --git a/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.min.css b/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.min.css new file mode 100644 index 000000000..c6c07f0b6 --- /dev/null +++ b/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.min.css @@ -0,0 +1 @@ +@font-face{font-family:boxicons-brands;src:url(./boxicons-brands.ttf?945bfe89057cc7627be1ecdc648441aa) format("truetype"),url(./boxicons-brands.woff?945bfe89057cc7627be1ecdc648441aa) format("woff"),url(./boxicons-brands.woff2?945bfe89057cc7627be1ecdc648441aa) format("woff2")}.bxl{font-family:boxicons-brands!important;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;display:inline-block;speak:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.bxl.variable-selector-00:before{content:"\fb1e"}.bxl.bx-500px:before{content:"\f101"}.bxl.bx-99designs:before{content:"\f102"}.bxl.bx-adobe:before{content:"\f103"}.bxl.bx-airbnb:before{content:"\f104"}.bxl.bx-algolia:before{content:"\f105"}.bxl.bx-amazon:before{content:"\f106"}.bxl.bx-amex:before{content:"\f107"}.bxl.bx-android:before{content:"\f108"}.bxl.bx-angular:before{content:"\f109"}.bxl.bx-anthropic:before{content:"\f10a"}.bxl.bx-apple-music:before{content:"\f10b"}.bxl.bx-apple:before{content:"\f10c"}.bxl.bx-arc-browser:before{content:"\f10d"}.bxl.bx-artstation:before{content:"\f10e"}.bxl.bx-asana:before{content:"\f10f"}.bxl.bx-atlassian:before{content:"\f110"}.bxl.bx-atom-editor:before{content:"\f111"}.bxl.bx-audible:before{content:"\f112"}.bxl.bx-auth0:before{content:"\f113"}.bxl.bx-autodesk:before{content:"\f114"}.bxl.bx-aws:before{content:"\f115"}.bxl.bx-baidu:before{content:"\f116"}.bxl.bx-bash:before{content:"\f117"}.bxl.bx-behance:before{content:"\f118"}.bxl.bx-better-auth:before{content:"\f119"}.bxl.bx-bing:before{content:"\f11a"}.bxl.bx-bitcoin-logo:before{content:"\f11b"}.bxl.bx-blender:before{content:"\f11c"}.bxl.bx-blogger:before{content:"\f11d"}.bxl.bx-bluesky:before{content:"\f11e"}.bxl.bx-bolt-b:before{content:"\f11f"}.bxl.bx-bootstrap:before{content:"\f120"}.bxl.bx-boxicons:before{content:"\f121"}.bxl.bx-brave-browser:before{content:"\f122"}.bxl.bx-bun:before{content:"\f123"}.bxl.bx-buy-me-a-coffee:before{content:"\f124"}.bxl.bx-c-plus-plus:before{content:"\f125"}.bxl.bx-c-sharp:before{content:"\f126"}.bxl.bx-c:before{content:"\f127"}.bxl.bx-canva:before{content:"\f128"}.bxl.bx-chess-com:before{content:"\f129"}.bxl.bx-chrome:before{content:"\f12a"}.bxl.bx-claude-ai:before{content:"\f12b"}.bxl.bx-clerk:before{content:"\f12c"}.bxl.bx-cloudflare:before{content:"\f12d"}.bxl.bx-codepen:before{content:"\f12e"}.bxl.bx-convex:before{content:"\f12f"}.bxl.bx-creative-commons:before{content:"\f130"}.bxl.bx-crunchyroll:before{content:"\f131"}.bxl.bx-css3:before{content:"\f132"}.bxl.bx-cursor-ai:before{content:"\f133"}.bxl.bx-dailymotion:before{content:"\f134"}.bxl.bx-deepmind:before{content:"\f135"}.bxl.bx-deepseek:before{content:"\f136"}.bxl.bx-deezer:before{content:"\f137"}.bxl.bx-deno:before{content:"\f138"}.bxl.bx-dev-to:before{content:"\f139"}.bxl.bx-deviantart:before{content:"\f13a"}.bxl.bx-devpost:before{content:"\f13b"}.bxl.bx-digg:before{content:"\f13c"}.bxl.bx-digitalocean:before{content:"\f13d"}.bxl.bx-discord-alt:before{content:"\f13e"}.bxl.bx-discord:before{content:"\f13f"}.bxl.bx-discourse:before{content:"\f140"}.bxl.bx-discover:before{content:"\f141"}.bxl.bx-django:before{content:"\f142"}.bxl.bx-docker:before{content:"\f143"}.bxl.bx-dot-env:before{content:"\f144"}.bxl.bx-dribbble:before{content:"\f145"}.bxl.bx-drizzle-orm:before{content:"\f146"}.bxl.bx-dropbox:before{content:"\f147"}.bxl.bx-ebay:before{content:"\f148"}.bxl.bx-edge:before{content:"\f149"}.bxl.bx-ember-js:before{content:"\f14a"}.bxl.bx-etsy:before{content:"\f14b"}.bxl.bx-expo:before{content:"\f14c"}.bxl.bx-express-js:before{content:"\f14d"}.bxl.bx-facebook-circle:before{content:"\f14e"}.bxl.bx-facebook-square:before{content:"\f14f"}.bxl.bx-facebook:before{content:"\f150"}.bxl.bx-fastapi:before{content:"\f151"}.bxl.bx-fastify:before{content:"\f152"}.bxl.bx-figma-alt:before{content:"\f153"}.bxl.bx-figma:before{content:"\f154"}.bxl.bx-firebase:before{content:"\f155"}.bxl.bx-firefox:before{content:"\f156"}.bxl.bx-fiverr:before{content:"\f157"}.bxl.bx-flask-old:before{content:"\f158"}.bxl.bx-flask:before{content:"\f159"}.bxl.bx-flickr-square:before{content:"\f15a"}.bxl.bx-flickr:before{content:"\f15b"}.bxl.bx-flutter:before{content:"\f15c"}.bxl.bx-foursquare:before{content:"\f15d"}.bxl.bx-framer:before{content:"\f15e"}.bxl.bx-gatsby-js:before{content:"\f15f"}.bxl.bx-gemini:before{content:"\f160"}.bxl.bx-git:before{content:"\f161"}.bxl.bx-github-copilot:before{content:"\f162"}.bxl.bx-github:before{content:"\f163"}.bxl.bx-gitlab:before{content:"\f164"}.bxl.bx-gmail:before{content:"\f165"}.bxl.bx-go-lang:before{content:"\f166"}.bxl.bx-google-antigravity:before{content:"\f167"}.bxl.bx-google-cloud:before{content:"\f168"}.bxl.bx-google-pay:before{content:"\f169"}.bxl.bx-google:before{content:"\f16a"}.bxl.bx-graphql:before{content:"\f16b"}.bxl.bx-grok:before{content:"\f16c"}.bxl.bx-groq-ai:before{content:"\f16d"}.bxl.bx-gsap:before{content:"\f16e"}.bxl.bx-gumroad:before{content:"\f16f"}.bxl.bx-hashnode:before{content:"\f170"}.bxl.bx-hcaptcha:before{content:"\f171"}.bxl.bx-heroku:before{content:"\f172"}.bxl.bx-hono-js:before{content:"\f173"}.bxl.bx-html5:before{content:"\f174"}.bxl.bx-hugo:before{content:"\f175"}.bxl.bx-ibm:before{content:"\f176"}.bxl.bx-imdb:before{content:"\f177"}.bxl.bx-instagram-alt:before{content:"\f178"}.bxl.bx-instagram:before{content:"\f179"}.bxl.bx-internet-explorer:before{content:"\f17a"}.bxl.bx-invision:before{content:"\f17b"}.bxl.bx-java:before{content:"\f17c"}.bxl.bx-javascript:before{content:"\f17d"}.bxl.bx-joomla:before{content:"\f17e"}.bxl.bx-jquery:before{content:"\f17f"}.bxl.bx-jsfiddle:before{content:"\f180"}.bxl.bx-jwt:before{content:"\f181"}.bxl.bx-kick:before{content:"\f182"}.bxl.bx-kickstarter:before{content:"\f183"}.bxl.bx-kotlin:before{content:"\f184"}.bxl.bx-kubernetes:before{content:"\f185"}.bxl.bx-laravel:before{content:"\f186"}.bxl.bx-leetcode:before{content:"\f187"}.bxl.bx-lemon-squeezy:before{content:"\f188"}.bxl.bx-less:before{content:"\f189"}.bxl.bx-letterboxd:before{content:"\f18a"}.bxl.bx-lichess:before{content:"\f18b"}.bxl.bx-line-chat:before{content:"\f18c"}.bxl.bx-linear-app:before{content:"\f18d"}.bxl.bx-linkedin-square:before{content:"\f18e"}.bxl.bx-linkedin:before{content:"\f18f"}.bxl.bx-linktree:before{content:"\f190"}.bxl.bx-loom:before{content:"\f191"}.bxl.bx-lottie-files:before{content:"\f192"}.bxl.bx-lottie-lab:before{content:"\f193"}.bxl.bx-lovable:before{content:"\f194"}.bxl.bx-lyft:before{content:"\f195"}.bxl.bx-magento:before{content:"\f196"}.bxl.bx-mailchimp:before{content:"\f197"}.bxl.bx-markdown:before{content:"\f198"}.bxl.bx-mastercard:before{content:"\f199"}.bxl.bx-mastodon:before{content:"\f19a"}.bxl.bx-mcp:before{content:"\f19b"}.bxl.bx-medium-old:before{content:"\f19c"}.bxl.bx-medium-square:before{content:"\f19d"}.bxl.bx-medium:before{content:"\f19e"}.bxl.bx-messenger:before{content:"\f19f"}.bxl.bx-meta:before{content:"\f1a0"}.bxl.bx-microsoft-teams:before{content:"\f1a1"}.bxl.bx-microsoft-windows:before{content:"\f1a2"}.bxl.bx-microsoft:before{content:"\f1a3"}.bxl.bx-midjourney:before{content:"\f1a4"}.bxl.bx-mongodb:before{content:"\f1a5"}.bxl.bx-motion-js:before{content:"\f1a6"}.bxl.bx-mozilla:before{content:"\f1a7"}.bxl.bx-my-sql:before{content:"\f1a8"}.bxl.bx-neon-tech:before{content:"\f1a9"}.bxl.bx-neovim:before{content:"\f1aa"}.bxl.bx-nest-js:before{content:"\f1ab"}.bxl.bx-netlify:before{content:"\f1ac"}.bxl.bx-next-js:before{content:"\f1ad"}.bxl.bx-nodejs:before{content:"\f1ae"}.bxl.bx-notion:before{content:"\f1af"}.bxl.bx-npm:before{content:"\f1b0"}.bxl.bx-nuxt-js:before{content:"\f1b1"}.bxl.bx-ok-ru:before{content:"\f1b2"}.bxl.bx-ollama:before{content:"\f1b3"}.bxl.bx-openai:before{content:"\f1b4"}.bxl.bx-opensea:before{content:"\f1b5"}.bxl.bx-opera:before{content:"\f1b6"}.bxl.bx-paddle-p:before{content:"\f1b7"}.bxl.bx-paper-design:before{content:"\f1b8"}.bxl.bx-patreon:before{content:"\f1b9"}.bxl.bx-payload-cms:before{content:"\f1ba"}.bxl.bx-paypal:before{content:"\f1bb"}.bxl.bx-periscope:before{content:"\f1bc"}.bxl.bx-perplexity-ai:before{content:"\f1bd"}.bxl.bx-php:before{content:"\f1be"}.bxl.bx-pinterest-alt:before{content:"\f1bf"}.bxl.bx-pinterest:before{content:"\f1c0"}.bxl.bx-planetscale:before{content:"\f1c1"}.bxl.bx-play-store:before{content:"\f1c2"}.bxl.bx-playstation:before{content:"\f1c3"}.bxl.bx-pocket:before{content:"\f1c4"}.bxl.bx-polar:before{content:"\f1c5"}.bxl.bx-postgresql:before{content:"\f1c6"}.bxl.bx-prisma-orm:before{content:"\f1c7"}.bxl.bx-product-hunt:before{content:"\f1c8"}.bxl.bx-python:before{content:"\f1c9"}.bxl.bx-qdrant:before{content:"\f1ca"}.bxl.bx-qq:before{content:"\f1cb"}.bxl.bx-quora:before{content:"\f1cc"}.bxl.bx-radix-ui:before{content:"\f1cd"}.bxl.bx-railway:before{content:"\f1ce"}.bxl.bx-rasberry-pi:before{content:"\f1cf"}.bxl.bx-react-query:before{content:"\f1d0"}.bxl.bx-react-router:before{content:"\f1d1"}.bxl.bx-react:before{content:"\f1d2"}.bxl.bx-redbubble:before{content:"\f1d3"}.bxl.bx-reddit:before{content:"\f1d4"}.bxl.bx-redux:before{content:"\f1d5"}.bxl.bx-remix-js:before{content:"\f1d6"}.bxl.bx-replit:before{content:"\f1d7"}.bxl.bx-resend:before{content:"\f1d8"}.bxl.bx-roblox:before{content:"\f1d9"}.bxl.bx-sanity:before{content:"\f1da"}.bxl.bx-sass:before{content:"\f1db"}.bxl.bx-sentry:before{content:"\f1dc"}.bxl.bx-shadcn-ui:before{content:"\f1dd"}.bxl.bx-shopify:before{content:"\f1de"}.bxl.bx-sketch:before{content:"\f1df"}.bxl.bx-skype:before{content:"\f1e0"}.bxl.bx-slack-old:before{content:"\f1e1"}.bxl.bx-slack:before{content:"\f1e2"}.bxl.bx-snapchat:before{content:"\f1e3"}.bxl.bx-socket-io:before{content:"\f1e4"}.bxl.bx-soundcloud:before{content:"\f1e5"}.bxl.bx-spotify:before{content:"\f1e6"}.bxl.bx-spring-boot:before{content:"\f1e7"}.bxl.bx-squarespace:before{content:"\f1e8"}.bxl.bx-sst:before{content:"\f1e9"}.bxl.bx-stack-overflow:before{content:"\f1ea"}.bxl.bx-stackblitz:before{content:"\f1eb"}.bxl.bx-steam:before{content:"\f1ec"}.bxl.bx-stripe:before{content:"\f1ed"}.bxl.bx-supabase:before{content:"\f1ee"}.bxl.bx-svelte:before{content:"\f1ef"}.bxl.bx-tailwind-css:before{content:"\f1f0"}.bxl.bx-telegram:before{content:"\f1f1"}.bxl.bx-terraform:before{content:"\f1f2"}.bxl.bx-threads:before{content:"\f1f3"}.bxl.bx-three-js:before{content:"\f1f4"}.bxl.bx-tiktok:before{content:"\f1f5"}.bxl.bx-trello:before{content:"\f1f6"}.bxl.bx-trip-advisor:before{content:"\f1f7"}.bxl.bx-trpc:before{content:"\f1f8"}.bxl.bx-trustpilot:before{content:"\f1f9"}.bxl.bx-tumblr:before{content:"\f1fa"}.bxl.bx-tux:before{content:"\f1fb"}.bxl.bx-twitch:before{content:"\f1fc"}.bxl.bx-twitter-x:before{content:"\f1fd"}.bxl.bx-twitter:before{content:"\f1fe"}.bxl.bx-typescript:before{content:"\f1ff"}.bxl.bx-uber:before{content:"\f200"}.bxl.bx-ubuntu:before{content:"\f201"}.bxl.bx-udacity:before{content:"\f202"}.bxl.bx-union-pay:before{content:"\f203"}.bxl.bx-unity:before{content:"\f204"}.bxl.bx-unsplash:before{content:"\f205"}.bxl.bx-upi:before{content:"\f206"}.bxl.bx-upwork:before{content:"\f207"}.bxl.bx-v0:before{content:"\f208"}.bxl.bx-venmo:before{content:"\f209"}.bxl.bx-vercel:before{content:"\f20a"}.bxl.bx-vimeo:before{content:"\f20b"}.bxl.bx-visa:before{content:"\f20c"}.bxl.bx-visual-studio:before{content:"\f20d"}.bxl.bx-vite-js:before{content:"\f20e"}.bxl.bx-vk:before{content:"\f20f"}.bxl.bx-vuejs:before{content:"\f210"}.bxl.bx-waze:before{content:"\f211"}.bxl.bx-web-components:before{content:"\f212"}.bxl.bx-webflow:before{content:"\f213"}.bxl.bx-wechat:before{content:"\f214"}.bxl.bx-weibo:before{content:"\f215"}.bxl.bx-whatsapp-square:before{content:"\f216"}.bxl.bx-whatsapp:before{content:"\f217"}.bxl.bx-wikipedia:before{content:"\f218"}.bxl.bx-windsurf:before{content:"\f219"}.bxl.bx-wix:before{content:"\f21a"}.bxl.bx-wordpress:before{content:"\f21b"}.bxl.bx-work-os:before{content:"\f21c"}.bxl.bx-xai:before{content:"\f21d"}.bxl.bx-xbox:before{content:"\f21e"}.bxl.bx-xing:before{content:"\f21f"}.bxl.bx-yahoo:before{content:"\f220"}.bxl.bx-yarn:before{content:"\f221"}.bxl.bx-yelp:before{content:"\f222"}.bxl.bx-youtube-music:before{content:"\f223"}.bxl.bx-youtube:before{content:"\f224"}.bxl.bx-zen-browser:before{content:"\f225"}.bxl.bx-zoom-workplace:before{content:"\f226"} \ No newline at end of file diff --git a/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.ttf b/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.ttf new file mode 100644 index 000000000..770cfe23c Binary files /dev/null and b/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.ttf differ diff --git a/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.woff b/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.woff new file mode 100644 index 000000000..d11d2a59b Binary files /dev/null and b/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.woff differ diff --git a/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.woff2 b/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.woff2 new file mode 100644 index 000000000..b347e0aed Binary files /dev/null and b/apps/icon-pack-builder/boxicons-free/fonts/brands/boxicons-brands.woff2 differ diff --git a/apps/icon-pack-builder/boxicons-free/fonts/brands/transformations.css b/apps/icon-pack-builder/boxicons-free/fonts/brands/transformations.css new file mode 100644 index 000000000..160dd3bfa --- /dev/null +++ b/apps/icon-pack-builder/boxicons-free/fonts/brands/transformations.css @@ -0,0 +1,108 @@ +.bx-rotate-90 +{ + transform: rotate(90deg); + + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=1)'; +} +.bx-rotate-180 +{ + transform: rotate(180deg); + + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=2)'; +} +.bx-rotate-270 +{ + transform: rotate(270deg); + + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=3)'; +} +.bx-flip-horizontal +{ + transform: scaleX(-1); + + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)'; +} +.bx-flip-vertical +{ + transform: scaleY(-1); + + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)'; +} +.bx-xs +{ + font-size: 1rem!important; +} +.bx-sm +{ + font-size: 1.55rem!important; +} +.bx-md +{ + font-size: 2.25rem!important; +} +.bx-lg +{ + font-size: 3.0rem!important; +} +.bx-fw +{ + font-size: 1.2857142857em; + line-height: .8em; + + width: 1.2857142857em; + height: .8em; + margin-top: -.2em!important; + + vertical-align: middle; +} +.bx-pull-left +{ + float: left; + + margin-right: .3em!important; +} +.bx-pull-right +{ + float: right; + + margin-left: .3em!important; +} + +.bx-border +{ + padding: .25em; + + border: .07em solid rgba(0,0,0,.1); + border-radius: .25em; +} +.bx-border-circle +{ + padding: .25em; + + border: .07em solid rgba(0,0,0,.1); + border-radius: 50%; +} +.bx-ul +{ + margin-left: 2em; + padding-left: 0; + + list-style: none; +} +.bx-ul > li +{ + position: relative; +} + +.bx-ul .bx,.bx-ul .bxr,.bx-ul .bxs +{ + font-size: inherit; + line-height: inherit; + + position: absolute; + left: -2em; + + width: 2em; + + text-align: center; +} diff --git a/apps/icon-pack-builder/boxicons-free/fonts/transformations.css b/apps/icon-pack-builder/boxicons-free/fonts/transformations.css new file mode 100644 index 000000000..160dd3bfa --- /dev/null +++ b/apps/icon-pack-builder/boxicons-free/fonts/transformations.css @@ -0,0 +1,108 @@ +.bx-rotate-90 +{ + transform: rotate(90deg); + + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=1)'; +} +.bx-rotate-180 +{ + transform: rotate(180deg); + + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=2)'; +} +.bx-rotate-270 +{ + transform: rotate(270deg); + + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=3)'; +} +.bx-flip-horizontal +{ + transform: scaleX(-1); + + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)'; +} +.bx-flip-vertical +{ + transform: scaleY(-1); + + -ms-filter: 'progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)'; +} +.bx-xs +{ + font-size: 1rem!important; +} +.bx-sm +{ + font-size: 1.55rem!important; +} +.bx-md +{ + font-size: 2.25rem!important; +} +.bx-lg +{ + font-size: 3.0rem!important; +} +.bx-fw +{ + font-size: 1.2857142857em; + line-height: .8em; + + width: 1.2857142857em; + height: .8em; + margin-top: -.2em!important; + + vertical-align: middle; +} +.bx-pull-left +{ + float: left; + + margin-right: .3em!important; +} +.bx-pull-right +{ + float: right; + + margin-left: .3em!important; +} + +.bx-border +{ + padding: .25em; + + border: .07em solid rgba(0,0,0,.1); + border-radius: .25em; +} +.bx-border-circle +{ + padding: .25em; + + border: .07em solid rgba(0,0,0,.1); + border-radius: 50%; +} +.bx-ul +{ + margin-left: 2em; + padding-left: 0; + + list-style: none; +} +.bx-ul > li +{ + position: relative; +} + +.bx-ul .bx,.bx-ul .bxr,.bx-ul .bxs +{ + font-size: inherit; + line-height: inherit; + + position: absolute; + left: -2em; + + width: 2em; + + text-align: center; +} diff --git a/apps/icon-pack-builder/boxicons-free/fonts/transformations.min.css b/apps/icon-pack-builder/boxicons-free/fonts/transformations.min.css new file mode 100644 index 000000000..1455c7f44 --- /dev/null +++ b/apps/icon-pack-builder/boxicons-free/fonts/transformations.min.css @@ -0,0 +1 @@ +.bx-rotate-90{transform:rotate(90deg);-ms-filter:'progid:DXImageTransform.Microsoft.BasicImage(rotation=1)';}.bx-rotate-180{transform:rotate(180deg);-ms-filter:'progid:DXImageTransform.Microsoft.BasicImage(rotation=2)';}.bx-rotate-270{transform:rotate(270deg);-ms-filter:'progid:DXImageTransform.Microsoft.BasicImage(rotation=3)';}.bx-flip-horizontal{transform:scaleX(-1);-ms-filter:'progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)';}.bx-flip-vertical{transform:scaleY(-1);-ms-filter:'progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)';}.bx-xs{font-size:1rem!important;}.bx-sm{font-size:1.55rem!important;}.bx-md{font-size:2.25rem!important;}.bx-lg{font-size:3.0rem!important;}.bx-fw{font-size:1.2857142857em;line-height:.8em;width:1.2857142857em;height:.8em;margin-top:-.2em!important;vertical-align:middle;}.bx-pull-left{float:left;margin-right:.3em!important;}.bx-pull-right{float:right;margin-left:.3em!important;}.bx-border{padding:.25em;border:.07em solid rgba(0,0,0,.1);border-radius:.25em;}.bx-border-circle{padding:.25em;border:.07em solid rgba(0,0,0,.1);border-radius:50%;}.bx-ul{margin-left:2em;padding-left:0;list-style:none;}.bx-ul > li{position:relative;}.bx-ul .bx,.bx-ul .bxr,.bx-ul .bxs{font-size:inherit;line-height:inherit;position:absolute;left:-2em;width:2em;text-align:center;} \ No newline at end of file diff --git a/apps/icon-pack-builder/package.json b/apps/icon-pack-builder/package.json new file mode 100644 index 000000000..0a6aaffff --- /dev/null +++ b/apps/icon-pack-builder/package.json @@ -0,0 +1,14 @@ +{ + "name": "@triliumnext/icon-pack-builder", + "version": "1.0.0", + "description": "", + "main": "src/index.ts", + "scripts": { + "start": "tsx ." + }, + "keywords": [], + "devDependencies": { + "@mdi/font": "7.4.47", + "@phosphor-icons/web": "2.1.2" + } +} diff --git a/apps/icon-pack-builder/src/index.ts b/apps/icon-pack-builder/src/index.ts new file mode 100644 index 000000000..f51215992 --- /dev/null +++ b/apps/icon-pack-builder/src/index.ts @@ -0,0 +1,76 @@ +import { createWriteStream, mkdirSync } from "node:fs"; +import { join } from "node:path"; + +import cls from "@triliumnext/server/src/services/cls.js"; + +import type { IconPackData } from "./provider"; +import boxicons3 from "./providers/boxicons3"; +import mdi from "./providers/mdi"; +import phosphor from "./providers/phosphor"; + +process.env.TRILIUM_INTEGRATION_TEST = "memory-no-store"; +process.env.TRILIUM_RESOURCE_DIR = "../server/src"; +process.env.NODE_ENV = "development"; + +async function main() { + const outputDir = join(__dirname, "output"); + mkdirSync(outputDir, { recursive: true }); + + const i18n = await import("@triliumnext/server/src/services/i18n.js"); + await i18n.initializeTranslations(); + + const sqlInit = (await import("../../server/src/services/sql_init.js")).default; + await sqlInit.createInitialDatabase(true); + + // Wait for becca to be loaded before importing data + const beccaLoader = await import("../../server/src/becca/becca_loader.js"); + await beccaLoader.beccaLoaded; + + const notesService = (await import("../../server/src/services/notes.js")).default; + + async function buildIconPack(iconPack: IconPackData) { + // Create the icon pack note. + const { note, branch } = notesService.createNewNote({ + parentNoteId: "root", + type: "file", + title: iconPack.name, + mime: "application/json", + content: JSON.stringify(iconPack.manifest) + }); + note.setLabel("iconPack", iconPack.prefix); + note.setLabel("iconClass", iconPack.icon); + + // Add the attachment. + note.saveAttachment({ + role: "file", + title: iconPack.fontFile.name, + mime: iconPack.fontFile.mime, + content: iconPack.fontFile.content + }); + + // Export to zip. + const zipFilePath = join(outputDir, `${iconPack.name}.zip`); + const fileOutputStream = createWriteStream(zipFilePath); + const { exportToZip } = (await import("@triliumnext/server/src/services/export/zip.js")).default; + const taskContext = new (await import("@triliumnext/server/src/services/task_context.js")).default( + "no-progress-reporting", "export", null + ); + await exportToZip(taskContext, branch, "html", fileOutputStream, false, { skipExtraFiles: true }); + await new Promise((resolve) => { fileOutputStream.on("finish", resolve); }); + + console.log(`Built icon pack: ${iconPack.name} (${zipFilePath})`); + } + + const builtIconPacks = [ + boxicons3("basic"), + boxicons3("brands"), + mdi(), + phosphor("regular"), + phosphor("fill") + ]; + await Promise.all(builtIconPacks.map(buildIconPack)); +} + +cls.init(() => { + main(); +}); diff --git a/apps/icon-pack-builder/src/provider.ts b/apps/icon-pack-builder/src/provider.ts new file mode 100644 index 000000000..6463113b0 --- /dev/null +++ b/apps/icon-pack-builder/src/provider.ts @@ -0,0 +1,13 @@ +import type { IconPackManifest } from "@triliumnext/server/src/services/icon_packs"; + +export interface IconPackData { + name: string; + prefix: string; + manifest: IconPackManifest; + icon: string; + fontFile: { + name: string; + mime: string; + content: Buffer; + } +} diff --git a/apps/icon-pack-builder/src/providers/boxicons3.ts b/apps/icon-pack-builder/src/providers/boxicons3.ts new file mode 100644 index 000000000..23e0de7dc --- /dev/null +++ b/apps/icon-pack-builder/src/providers/boxicons3.ts @@ -0,0 +1,42 @@ +import { readFileSync } from "fs"; +import { join } from "path"; + +import { IconPackData } from "../provider"; + +export default function buildIcons(pack: "basic" | "brands"): IconPackData { + const inputDir = join(__dirname, "../../boxicons-free/fonts"); + const fileName = pack === "basic" ? "boxicons" : `boxicons-${pack}`; + const jsonPath = `${inputDir}/${pack}/${fileName}.json`; + const inputData = JSON.parse(readFileSync(jsonPath, "utf-8")); + const icons = {}; + + for (const [ key, value ] of Object.entries(inputData)) { + if (key.startsWith("variable-selector")) continue; + + let name = key; + if (name.startsWith('bx-')) { + name = name.slice(3); + } + if (name.startsWith('bxs-')) { + name = name.slice(4); + } + icons[key] = { + glyph: String.fromCodePoint(value as number), + terms: [ name ] + }; + } + + return { + name: pack === "basic" ? "Boxicons 3 (Basic)" : "Boxicons 3 (Brands)", + prefix: pack === "basic" ? "bx3" : "bxl3", + icon: pack === "basic" ? "bx3 bx-cube" : "bxl3 bxl-boxicons", + fontFile: { + name: `${fileName}.woff2`, + mime: "font/woff2", + content: readFileSync(join(inputDir, pack, `${fileName}.woff2`)) + }, + manifest: { + icons + } + }; +} diff --git a/apps/icon-pack-builder/src/providers/mdi.ts b/apps/icon-pack-builder/src/providers/mdi.ts new file mode 100644 index 000000000..7e35bb51c --- /dev/null +++ b/apps/icon-pack-builder/src/providers/mdi.ts @@ -0,0 +1,26 @@ +import { readFileSync } from "fs"; +import { join } from "path"; + +import type { IconPackData } from "../provider"; +import { extractClassNamesFromCss, getModulePath } from "../utils"; + +export default function buildIcons(): IconPackData { + const baseDir = getModulePath("@mdi/font"); + + const cssFilePath = join(baseDir, "css", "materialdesignicons.min.css"); + const cssFileContent = readFileSync(cssFilePath, "utf-8"); + + return { + name: "Material Design Icons", + prefix: "mdi", + icon: "mdi mdi-material-design", + manifest: { + icons: extractClassNamesFromCss(cssFileContent, "mdi"), + }, + fontFile: { + name: "materialdesignicons-webfont.woff2", + mime: "font/woff2", + content: readFileSync(join(baseDir, "fonts", "materialdesignicons-webfont.woff2")) + } + }; +} diff --git a/apps/icon-pack-builder/src/providers/phosphor.ts b/apps/icon-pack-builder/src/providers/phosphor.ts new file mode 100644 index 000000000..0280d5653 --- /dev/null +++ b/apps/icon-pack-builder/src/providers/phosphor.ts @@ -0,0 +1,46 @@ +import { readdirSync, readFileSync } from "node:fs"; +import { join } from "node:path"; + +import { IconPackData } from "../provider"; +import { getModulePath } from "../utils"; + +export default function buildIcons(packName: "regular" | "fill"): IconPackData { + const baseDir = join(getModulePath("@phosphor-icons/web"), "src", packName); + const iconIndex = JSON.parse(readFileSync(join(baseDir, "selection.json"), "utf-8")); + const icons: IconPackData["manifest"]["icons"] = {}; + + function removeSuffix(name: string) { + if (name.endsWith(`-${packName}`)) { + name = name.split("-").slice(0, -1).join("-"); + } + return name; + } + + for (const icon of iconIndex.icons) { + const terms = icon.properties.name.split(", ").map((t: string) => removeSuffix(t)); + const name = removeSuffix(icon.icon.tags[0]); + + const id = `ph-${name}`; + icons[id] = { + glyph: `${String.fromCharCode(icon.properties.code)}`, + terms + }; + } + + const fontFile = readdirSync(baseDir).find(f => f.endsWith(".woff2")); + const prefix = packName === "regular" ? "ph" : `ph-${packName}`; + + return { + name: `Phosphor Icons (${packName.charAt(0).toUpperCase() + packName.slice(1)})`, + prefix, + icon: `${prefix} ph-phosphor-logo`, + manifest: { + icons + }, + fontFile: { + name: fontFile!, + mime: "font/woff2", + content: readFileSync(join(baseDir, fontFile!)) + } + }; +} diff --git a/apps/icon-pack-builder/src/utils.ts b/apps/icon-pack-builder/src/utils.ts new file mode 100644 index 000000000..b88dc0e6b --- /dev/null +++ b/apps/icon-pack-builder/src/utils.ts @@ -0,0 +1,26 @@ +import { join } from "path"; + +import { IconPackManifest } from "../../server/src/services/icon_packs"; + +export function extractClassNamesFromCss(css: string, prefix: string): IconPackManifest["icons"] { + const regex = /\.([a-zA-Z0-9-]+)::before\s*\{\s*content:\s*"\\([A-Fa-f0-9]+)"\s*\}/g; + const icons: IconPackManifest["icons"] = {}; + let match: string[]; + + while ((match = regex.exec(css)) !== null) { + let name = match[1]; + if (prefix && name.startsWith(`${prefix}-`)) { + name = name.substring(prefix.length + 1); + } + + icons[match[1]] = { + glyph: String.fromCodePoint(parseInt(match[2], 16)), + terms: [ name ] + }; + } + return icons; +} + +export function getModulePath(moduleName: string): string { + return join(__dirname, "../../../node_modules", moduleName); +} diff --git a/apps/icon-pack-builder/tsconfig.app.json b/apps/icon-pack-builder/tsconfig.app.json new file mode 100644 index 000000000..b9e17115a --- /dev/null +++ b/apps/icon-pack-builder/tsconfig.app.json @@ -0,0 +1,36 @@ +{ + "extends": "../../tsconfig.base.json", + "compilerOptions": { + "module": "ESNext", + "moduleResolution": "bundler", + "target": "ES2020", + "outDir": "dist", + "strict": false, + "types": [ + "node", + "express" + ], + "rootDir": "src", + "tsBuildInfoFile": "dist/tsconfig.app.tsbuildinfo" + }, + "include": [ + "src/**/*.ts", + "../server/src/*.d.ts" + ], + "exclude": [ + "eslint.config.js", + "eslint.config.cjs", + "eslint.config.mjs" + ], + "references": [ + { + "path": "../server/tsconfig.app.json" + }, + { + "path": "../desktop/tsconfig.app.json" + }, + { + "path": "../client/tsconfig.app.json" + } + ] +} diff --git a/apps/icon-pack-builder/tsconfig.json b/apps/icon-pack-builder/tsconfig.json new file mode 100644 index 000000000..858921cfb --- /dev/null +++ b/apps/icon-pack-builder/tsconfig.json @@ -0,0 +1,15 @@ +{ + "extends": "../../tsconfig.base.json", + "include": [], + "references": [ + { + "path": "../server" + }, + { + "path": "../client" + }, + { + "path": "./tsconfig.app.json" + } + ] +} diff --git a/apps/server/package.json b/apps/server/package.json index 32023eb0e..4dcd1c561 100644 --- a/apps/server/package.json +++ b/apps/server/package.json @@ -1,6 +1,6 @@ { "name": "@triliumnext/server", - "version": "0.100.0", + "version": "0.101.1", "description": "The server-side component of TriliumNext, which exposes the client via the web, allows for sync and provides a REST API for both internal and external use.", "private": true, "main": "./src/main.ts", @@ -30,7 +30,8 @@ "dependencies": { "better-sqlite3": "12.5.0", "html-to-text": "9.0.5", - "node-html-parser": "7.0.1" + "node-html-parser": "7.0.1", + "sucrase": "3.35.1" }, "devDependencies": { "@anthropic-ai/sdk": "0.71.2", diff --git a/apps/server/src/assets/db/demo.zip b/apps/server/src/assets/db/demo.zip index d01018a1e..c84c99383 100644 Binary files a/apps/server/src/assets/db/demo.zip and b/apps/server/src/assets/db/demo.zip differ diff --git a/apps/server/src/assets/doc_notes/en/User Guide/!!!meta.json b/apps/server/src/assets/doc_notes/en/User Guide/!!!meta.json index 49f5f8528..bc7cb2060 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/!!!meta.json +++ b/apps/server/src/assets/doc_notes/en/User Guide/!!!meta.json @@ -1 +1 @@ -[{"id":"_help_BOCnjTMBCoxW","title":"Feature Highlights","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Feature Highlights"},{"name":"iconClass","value":"bx bx-star","type":"label"}]},{"id":"_help_Otzi9La2YAUX","title":"Installation & Setup","type":"book","attributes":[{"name":"iconClass","value":"bx bx-cog","type":"label"}],"children":[{"id":"_help_poXkQfguuA0U","title":"Desktop Installation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Desktop Installation"},{"name":"iconClass","value":"bx bx-desktop","type":"label"}],"children":[{"id":"_help_nRqcgfTb97uV","title":"Using the desktop application as a server","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Desktop Installation/Using the desktop application "},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_Rp0q8bSP6Ayl","title":"System Requirements","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Desktop Installation/System Requirements"},{"name":"iconClass","value":"bx bx-chip","type":"label"}]},{"id":"_help_Un4wj2Mak2Ky","title":"Nix flake","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Desktop Installation/Nix flake"},{"name":"iconClass","value":"bx bxl-tux","type":"label"}]}]},{"id":"_help_WOcw2SLH6tbX","title":"Server Installation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation"},{"name":"iconClass","value":"bx bx-server","type":"label"}],"children":[{"id":"_help_Dgg7bR3b6K9j","title":"1. Installing the server","type":"book","attributes":[{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_3tW6mORuTHnB","title":"Packaged version for Linux","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged version for Linux"},{"name":"iconClass","value":"bx bxl-tux","type":"label"}]},{"id":"_help_rWX5eY045zbE","title":"Using Docker","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker"},{"name":"iconClass","value":"bx bxl-docker","type":"label"}]},{"id":"_help_moVgBcoxE3EK","title":"On NixOS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/On NixOS"},{"name":"iconClass","value":"bx bxl-tux","type":"label"}]},{"id":"_help_J1Bb6lVlwU5T","title":"Manually","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manually"},{"name":"iconClass","value":"bx bx-code-alt","type":"label"}]},{"id":"_help_DCmT6e7clMoP","title":"Using Kubernetes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Kubernetes"},{"name":"iconClass","value":"bx bxl-kubernetes","type":"label"}]},{"id":"_help_klCWNks3ReaQ","title":"Multiple server instances","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Multiple server instances"},{"name":"iconClass","value":"bx bxs-user-account","type":"label"}]}]},{"id":"_help_vcjrb3VVYPZI","title":"2. Reverse proxy","type":"book","attributes":[{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_ud6MShXL4WpO","title":"Nginx","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Nginx"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_fDLvzOx29Pfg","title":"Apache using Docker","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Apache using Docker"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_LLzSMXACKhUs","title":"Trusted proxy","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Trusted proxy"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_5ERVJb9s4FRD","title":"Traefik","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_l2VkvOwUNfZj","title":"HTTPS (TLS)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/HTTPS (TLS)"},{"name":"iconClass","value":"bx bx-lock-alt","type":"label"}]},{"id":"_help_0hzsNCP31IAB","title":"Authentication","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Authentication"},{"name":"iconClass","value":"bx bx-user","type":"label"}]},{"id":"_help_7DAiwaf8Z7Rz","title":"Multi-Factor Authentication","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Multi-Factor Authentication"},{"name":"iconClass","value":"bx bx-stopwatch","type":"label"}]},{"id":"_help_Un4wj2Mak2Ky","title":"Nix flake","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Nix flake.clone"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_yeEaYqosGLSh","title":"Third-party cloud hosting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Third-party cloud hosting"},{"name":"iconClass","value":"bx bx-cloud","type":"label"}]},{"id":"_help_iGTnKjubbXkA","title":"System Requirements","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/System Requirements"},{"name":"iconClass","value":"bx bx-chip","type":"label"}]}]},{"id":"_help_cbkrhQjrkKrh","title":"Synchronization","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Synchronization"},{"name":"iconClass","value":"bx bx-sync","type":"label"}]},{"id":"_help_RDslemsQ6gCp","title":"Mobile Frontend","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Mobile Frontend"},{"name":"iconClass","value":"bx bx-mobile-alt","type":"label"}]},{"id":"_help_MtPxeAWVAzMg","title":"Web Clipper","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Web Clipper"},{"name":"iconClass","value":"bx bx-paperclip","type":"label"}]},{"id":"_help_n1lujUxCwipy","title":"Upgrading TriliumNext","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Upgrading TriliumNext"},{"name":"iconClass","value":"bx bx-up-arrow-alt","type":"label"}]},{"id":"_help_ODY7qQn5m2FT","title":"Backup","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Backup"},{"name":"iconClass","value":"bx bx-hdd","type":"label"}]},{"id":"_help_tAassRL4RSQL","title":"Data directory","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Data directory"},{"name":"iconClass","value":"bx bx-folder-open","type":"label"}]}]},{"id":"_help_gh7bpGYxajRS","title":"Basic Concepts and Features","type":"book","attributes":[{"name":"iconClass","value":"bx bx-help-circle","type":"label"}],"children":[{"id":"_help_Vc8PjrjAGuOp","title":"UI Elements","type":"book","attributes":[{"name":"iconClass","value":"bx bx-window-alt","type":"label"}],"children":[{"id":"_help_x0JgW8UqGXvq","title":"Vertical and horizontal layout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Vertical and horizontal layout"},{"name":"iconClass","value":"bx bxs-layout","type":"label"}]},{"id":"_help_x3i7MxGccDuM","title":"Global menu","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Global menu"},{"name":"iconClass","value":"bx bx-menu","type":"label"}]},{"id":"_help_oPVyFC7WL2Lp","title":"Note Tree","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree"},{"name":"iconClass","value":"bx bxs-tree-alt","type":"label"}],"children":[{"id":"_help_YtSN43OrfzaA","title":"Note tree contextual menu","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Note tree contextual menu"},{"name":"iconClass","value":"bx bx-menu","type":"label"}]},{"id":"_help_yTjUdsOi4CIE","title":"Multiple selection","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Multiple selection"},{"name":"iconClass","value":"bx bx-list-plus","type":"label"}]},{"id":"_help_DvdZhoQZY9Yd","title":"Keyboard shortcuts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Keyboard shortcuts"},{"name":"iconClass","value":"bx bxs-keyboard","type":"label"}]}]},{"id":"_help_BlN9DFI679QC","title":"Ribbon","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Ribbon"},{"name":"iconClass","value":"bx bx-dots-horizontal","type":"label"}]},{"id":"_help_3seOhtN8uLIY","title":"Tabs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs"},{"name":"iconClass","value":"bx bx-dock-top","type":"label"}]},{"id":"_help_xYmIYSP6wE3F","title":"Launch Bar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Launch Bar"},{"name":"iconClass","value":"bx bx-sidebar","type":"label"}]},{"id":"_help_8YBEPzcpUgxw","title":"Note buttons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note buttons"},{"name":"iconClass","value":"bx bx-dots-vertical-rounded","type":"label"}]},{"id":"_help_4TIF1oA4VQRO","title":"Options","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Options"},{"name":"iconClass","value":"bx bx-cog","type":"label"}]},{"id":"_help_luNhaphA37EO","title":"Split View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View"},{"name":"iconClass","value":"bx bx-dock-right","type":"label"}]},{"id":"_help_XpOYSgsLkTJy","title":"Floating buttons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Floating buttons"},{"name":"iconClass","value":"bx bx-rectangle","type":"label"}]},{"id":"_help_RnaPdbciOfeq","title":"Right Sidebar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Right Sidebar"},{"name":"iconClass","value":"bx bxs-dock-right","type":"label"}]},{"id":"_help_r5JGHN99bVKn","title":"Recent Changes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Recent Changes"},{"name":"iconClass","value":"bx bx-history","type":"label"}]},{"id":"_help_ny318J39E5Z0","title":"Zoom","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Zoom"},{"name":"iconClass","value":"bx bx-zoom-in","type":"label"}]},{"id":"_help_lgKX7r3aL30x","title":"Note Tooltip","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tooltip"},{"name":"iconClass","value":"bx bx-message-detail","type":"label"}]},{"id":"_help_IjZS7iK5EXtb","title":"New Layout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout"},{"name":"iconClass","value":"bx bx-layout","type":"label"}],"children":[{"id":"_help_I6p2a06hdnL6","title":"Breadcrumb","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout/Breadcrumb"},{"name":"iconClass","value":"bx bx-chevron-right","type":"label"}]},{"id":"_help_AlJ73vBCjWDw","title":"Status bar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout/Status bar"},{"name":"iconClass","value":"bx bx-dock-bottom","type":"label"}]}]}]},{"id":"_help_BFs8mudNFgCS","title":"Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes"},{"name":"iconClass","value":"bx bx-notepad","type":"label"}],"children":[{"id":"_help_p9kXRFAkwN4o","title":"Note Icons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note Icons"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]},{"id":"_help_0vhv7lsOLy82","title":"Attachments","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Attachments"},{"name":"iconClass","value":"bx bx-paperclip","type":"label"}]},{"id":"_help_IakOLONlIfGI","title":"Cloning Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes"},{"name":"iconClass","value":"bx bx-duplicate","type":"label"}],"children":[{"id":"_help_TBwsyfadTA18","title":"Branch prefix","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes/Branch prefix"},{"name":"iconClass","value":"bx bx-rename","type":"label"}]}]},{"id":"_help_bwg0e8ewQMak","title":"Protected Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Protected Notes"},{"name":"iconClass","value":"bx bx-lock-alt","type":"label"}]},{"id":"_help_MKmLg5x6xkor","title":"Archived Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Archived Notes"},{"name":"iconClass","value":"bx bx-box","type":"label"}]},{"id":"_help_vZWERwf8U3nx","title":"Note Revisions","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note Revisions"},{"name":"iconClass","value":"bx bx-history","type":"label"}]},{"id":"_help_aGlEvb9hyDhS","title":"Sorting Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Sorting Notes"},{"name":"iconClass","value":"bx bx-sort-up","type":"label"}]},{"id":"_help_NRnIZmSMc5sj","title":"Printing & Exporting as PDF","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Printing & Exporting as PDF"},{"name":"iconClass","value":"bx bx-printer","type":"label"}]},{"id":"_help_CoFPLs3dRlXc","title":"Read-Only Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes"},{"name":"iconClass","value":"bx bx-edit-alt","type":"label"}]},{"id":"_help_0ESUbbAxVnoK","title":"Note List","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note List"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]}]},{"id":"_help_wArbEsdSae6g","title":"Navigation","type":"book","attributes":[{"name":"iconClass","value":"bx bx-navigation","type":"label"}],"children":[{"id":"_help_kBrnXNG3Hplm","title":"Tree Concepts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Tree Concepts"},{"name":"iconClass","value":"bx bx-pyramid","type":"label"}]},{"id":"_help_MMiBEQljMQh2","title":"Note Navigation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Note Navigation"},{"name":"iconClass","value":"bx bxs-navigation","type":"label"}]},{"id":"_help_Ms1nauBra7gq","title":"Quick search","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Quick search"},{"name":"iconClass","value":"bx bx-search-alt-2","type":"label"}]},{"id":"_help_F1r9QtzQLZqm","title":"Jump to...","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Jump to"},{"name":"iconClass","value":"bx bx-send","type":"label"}]},{"id":"_help_eIg8jdvaoNNd","title":"Search","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Search"},{"name":"iconClass","value":"bx bx-search-alt-2","type":"label"}]},{"id":"_help_u3YFHC9tQlpm","title":"Bookmarks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks"},{"name":"iconClass","value":"bx bx-bookmarks","type":"label"}]},{"id":"_help_OR8WJ7Iz9K4U","title":"Note Hoisting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Note Hoisting"},{"name":"iconClass","value":"bx bxs-chevrons-up","type":"label"}]},{"id":"_help_ZjLYv08Rp3qC","title":"Quick edit","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Quick edit"},{"name":"iconClass","value":"bx bx-edit","type":"label"}]},{"id":"_help_9sRHySam5fXb","title":"Workspaces","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Workspaces"},{"name":"iconClass","value":"bx bx-door-open","type":"label"}]},{"id":"_help_xWtq5NUHOwql","title":"Similar Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Similar Notes"},{"name":"iconClass","value":"bx bx-bar-chart","type":"label"}]},{"id":"_help_McngOG2jbUWX","title":"Search in note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Search in note"},{"name":"iconClass","value":"bx bx-search-alt-2","type":"label"}]}]},{"id":"_help_A9Oc6YKKc65v","title":"Keyboard Shortcuts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Keyboard Shortcuts"},{"name":"iconClass","value":"bx bxs-keyboard","type":"label"}]},{"id":"_help_Wy267RK4M69c","title":"Themes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Themes"},{"name":"iconClass","value":"bx bx-palette","type":"label"}],"children":[{"id":"_help_VbjZvtUek0Ln","title":"Theme Gallery","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Themes/Theme Gallery"},{"name":"iconClass","value":"bx bx-book-reader","type":"label"}]}]},{"id":"_help_mHbBMPDPkVV5","title":"Import & Export","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export"},{"name":"iconClass","value":"bx bx-import","type":"label"}],"children":[{"id":"_help_Oau6X9rCuegd","title":"Markdown","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown"},{"name":"iconClass","value":"bx bxl-markdown","type":"label"}],"children":[{"id":"_help_rJ9grSgoExl9","title":"Supported syntax","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown/Supported syntax"},{"name":"iconClass","value":"bx bx-code-alt","type":"label"}]}]},{"id":"_help_syuSEKf2rUGr","title":"Evernote","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote"},{"name":"iconClass","value":"bx bx-window-open","type":"label"}]},{"id":"_help_GnhlmrATVqcH","title":"OneNote","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/OneNote"},{"name":"iconClass","value":"bx bx-window-open","type":"label"}]}]},{"id":"_help_rC3pL2aptaRE","title":"Zen mode","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Zen mode"},{"name":"iconClass","value":"bx bxs-yin-yang","type":"label"}]}]},{"id":"_help_s3YCWHBfmYuM","title":"Quick Start","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Quick Start"},{"name":"iconClass","value":"bx bx-run","type":"label"}]},{"id":"_help_i6dbnitykE5D","title":"FAQ","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/FAQ"},{"name":"iconClass","value":"bx bx-question-mark","type":"label"}]},{"id":"_help_KSZ04uQ2D1St","title":"Note Types","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types"},{"name":"iconClass","value":"bx bx-edit","type":"label"}],"children":[{"id":"_help_iPIMuisry3hd","title":"Text","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text"},{"name":"iconClass","value":"bx bx-note","type":"label"}],"children":[{"id":"_help_NwBbFdNZ9h7O","title":"Block quotes & admonitions","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Block quotes & admonitions"},{"name":"iconClass","value":"bx bx-info-circle","type":"label"}]},{"id":"_help_oSuaNgyyKnhu","title":"Bookmarks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Bookmarks"},{"name":"iconClass","value":"bx bx-bookmark","type":"label"}]},{"id":"_help_veGu4faJErEM","title":"Content language & Right-to-left support","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Content language & Right-to-le"},{"name":"iconClass","value":"bx bx-align-right","type":"label"}]},{"id":"_help_2x0ZAX9ePtzV","title":"Cut to subnote","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Cut to subnote"},{"name":"iconClass","value":"bx bx-cut","type":"label"}]},{"id":"_help_UYuUB1ZekNQU","title":"Developer-specific formatting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Developer-specific formatting"},{"name":"iconClass","value":"bx bx-code-alt","type":"label"}],"children":[{"id":"_help_QxEyIjRBizuC","title":"Code blocks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Developer-specific formatting/Code blocks"},{"name":"iconClass","value":"bx bx-code","type":"label"}]}]},{"id":"_help_AgjCISero73a","title":"Footnotes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Footnotes"},{"name":"iconClass","value":"bx bx-bracket","type":"label"}]},{"id":"_help_nRhnJkTT8cPs","title":"Formatting toolbar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Formatting toolbar"},{"name":"iconClass","value":"bx bx-text","type":"label"}]},{"id":"_help_Gr6xFaF6ioJ5","title":"General formatting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/General formatting"},{"name":"iconClass","value":"bx bx-bold","type":"label"}]},{"id":"_help_AxshuNRegLAv","title":"Highlights list","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Highlights list"},{"name":"iconClass","value":"bx bx-highlight","type":"label"}]},{"id":"_help_mT0HEkOsz6i1","title":"Images","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Images"},{"name":"iconClass","value":"bx bx-image-alt","type":"label"}],"children":[{"id":"_help_0Ofbk1aSuVRu","title":"Image references","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Images/Image references"},{"name":"iconClass","value":"bx bxs-file-image","type":"label"}]}]},{"id":"_help_nBAXQFj20hS1","title":"Include Note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Include Note"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_CohkqWQC1iBv","title":"Insert buttons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Insert buttons"},{"name":"iconClass","value":"bx bx-plus","type":"label"}]},{"id":"_help_oiVPnW8QfnvS","title":"Keyboard shortcuts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Keyboard shortcuts"},{"name":"iconClass","value":"bx bxs-keyboard","type":"label"}]},{"id":"_help_QEAPj01N5f7w","title":"Links","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Links"},{"name":"iconClass","value":"bx bx-link-alt","type":"label"}],"children":[{"id":"_help_3IDVtesTQ8ds","title":"External links","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Links/External links"},{"name":"iconClass","value":"bx bx-link-external","type":"label"}]},{"id":"_help_hrZ1D00cLbal","title":"Internal (reference) links","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Links/Internal (reference) links"},{"name":"iconClass","value":"bx bx-link","type":"label"}]}]},{"id":"_help_S6Xx8QIWTV66","title":"Lists","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Lists"},{"name":"iconClass","value":"bx bx-list-ul","type":"label"}]},{"id":"_help_QrtTYPmdd1qq","title":"Markdown-like formatting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Markdown-like formatting"},{"name":"iconClass","value":"bx bxl-markdown","type":"label"}]},{"id":"_help_YfYAtQBcfo5V","title":"Math Equations","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Math Equations"},{"name":"iconClass","value":"bx bx-math","type":"label"}]},{"id":"_help_dEHYtoWWi8ct","title":"Other features","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Other features"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]},{"id":"_help_gLt3vA97tMcp","title":"Premium features","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features"},{"name":"iconClass","value":"bx bx-star","type":"label"}],"children":[{"id":"_help_ZlN4nump6EbW","title":"Slash Commands","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features/Slash Commands"},{"name":"iconClass","value":"bx bx-menu","type":"label"}]},{"id":"_help_pwc194wlRzcH","title":"Text Snippets","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features/Text Snippets"},{"name":"iconClass","value":"bx bx-align-left","type":"label"}]},{"id":"_help_5wZallV2Qo1t","title":"Format Painter","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features/Format Painter"},{"name":"iconClass","value":"bx bxs-paint-roll","type":"label"}]}]},{"id":"_help_BFvAtE74rbP6","title":"Table of contents","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Table of contents"},{"name":"iconClass","value":"bx bx-heading","type":"label"}]},{"id":"_help_NdowYOC1GFKS","title":"Tables","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Tables"},{"name":"iconClass","value":"bx bx-table","type":"label"}]}]},{"id":"_help_6f9hih2hXXZk","title":"Code","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Code"},{"name":"iconClass","value":"bx bx-code","type":"label"}]},{"id":"_help_m523cpzocqaD","title":"Saved Search","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Saved Search"},{"name":"iconClass","value":"bx bx-file-find","type":"label"}]},{"id":"_help_iRwzGnHPzonm","title":"Relation Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Relation Map"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_bdUJEHsAPYQR","title":"Note Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Note Map"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_HcABDtFCkbFN","title":"Render Note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Render Note"},{"name":"iconClass","value":"bx bx-extension","type":"label"}]},{"id":"_help_s1aBHPd79XYj","title":"Mermaid Diagrams","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Mermaid Diagrams"},{"name":"iconClass","value":"bx bx-selection","type":"label"}],"children":[{"id":"_help_RH6yLjjWJHof","title":"ELK layout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Mermaid Diagrams/ELK layout"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_WWgeUaBb7UfC","title":"Syntax reference","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://mermaid.js.org/intro/syntax-reference.html"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true}]},{"id":"_help_grjYqerjn243","title":"Canvas","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Canvas"},{"name":"iconClass","value":"bx bx-pen","type":"label"}]},{"id":"_help_1vHRoWCEjj0L","title":"Web View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Web View"},{"name":"iconClass","value":"bx bx-globe-alt","type":"label"}]},{"id":"_help_gBbsAeiuUxI5","title":"Mind Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Mind Map"},{"name":"iconClass","value":"bx bx-sitemap","type":"label"}]},{"id":"_help_W8vYD3Q1zjCR","title":"File","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/File"},{"name":"iconClass","value":"bx bx-file-blank","type":"label"}]}]},{"id":"_help_GTwFsgaA0lCt","title":"Collections","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections"},{"name":"iconClass","value":"bx bx-book","type":"label"}],"children":[{"id":"_help_xWbu3jpNWapp","title":"Calendar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Calendar"},{"name":"iconClass","value":"bx bx-calendar","type":"label"}]},{"id":"_help_2FvYrpmOXm29","title":"Table","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Table"},{"name":"iconClass","value":"bx bx-table","type":"label"}]},{"id":"_help_CtBQqbwXDx1w","title":"Kanban Board","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Kanban Board"},{"name":"iconClass","value":"bx bx-columns","type":"label"}]},{"id":"_help_81SGnPGMk7Xc","title":"Geo Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Geo Map"},{"name":"iconClass","value":"bx bx-map-alt","type":"label"}]},{"id":"_help_zP3PMqaG71Ct","title":"Presentation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Presentation"},{"name":"iconClass","value":"bx bx-slideshow","type":"label"}]},{"id":"_help_8QqnMzx393bx","title":"Grid View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Grid View"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]},{"id":"_help_mULW0Q3VojwY","title":"List View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/List View"},{"name":"iconClass","value":"bx bx-list-ul","type":"label"}]}]},{"id":"_help_BgmBlOIl72jZ","title":"Troubleshooting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting"},{"name":"iconClass","value":"bx bx-bug","type":"label"}],"children":[{"id":"_help_wy8So3yZZlH9","title":"Reporting issues","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Reporting issues"},{"name":"iconClass","value":"bx bx-bug-alt","type":"label"}]},{"id":"_help_x59R8J8KV5Bp","title":"Anonymized Database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Anonymized Database"},{"name":"iconClass","value":"bx bx-low-vision","type":"label"}]},{"id":"_help_qzNzp9LYQyPT","title":"Error logs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Error logs"},{"name":"iconClass","value":"bx bx-comment-error","type":"label"}],"children":[{"id":"_help_bnyigUA2UK7s","title":"Backend (server) logs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Error logs/Backend (server) logs"},{"name":"iconClass","value":"bx bx-server","type":"label"}]},{"id":"_help_9yEHzMyFirZR","title":"Frontend logs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Error logs/Frontend logs"},{"name":"iconClass","value":"bx bx-window-alt","type":"label"}]}]},{"id":"_help_vdlYGAcpXAgc","title":"Synchronization fails with 504 Gateway Timeout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Synchronization fails with 504"},{"name":"iconClass","value":"bx bx-error","type":"label"}]},{"id":"_help_s8alTXmpFR61","title":"Refreshing the application","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Refreshing the application"},{"name":"iconClass","value":"bx bx-refresh","type":"label"}]}]},{"id":"_help_pKK96zzmvBGf","title":"Theme development","type":"book","attributes":[{"name":"iconClass","value":"bx bx-palette","type":"label"}],"children":[{"id":"_help_7NfNr5pZpVKV","title":"Creating a custom theme","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Creating a custom theme"},{"name":"iconClass","value":"bx bxs-color","type":"label"}]},{"id":"_help_WFGzWeUK6arS","title":"Customize the Next theme","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Customize the Next theme"},{"name":"iconClass","value":"bx bx-news","type":"label"}]},{"id":"_help_WN5z4M8ASACJ","title":"Reference","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Reference"},{"name":"iconClass","value":"bx bx-book-open","type":"label"}]},{"id":"_help_AlhDUqhENtH7","title":"Custom app-wide CSS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Custom app-wide CSS"},{"name":"iconClass","value":"bx bxs-file-css","type":"label"}]}]},{"id":"_help_tC7s2alapj8V","title":"Advanced Usage","type":"book","attributes":[{"name":"iconClass","value":"bx bx-rocket","type":"label"}],"children":[{"id":"_help_zEY4DaJG4YT5","title":"Attributes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes"},{"name":"iconClass","value":"bx bx-list-check","type":"label"}],"children":[{"id":"_help_HI6GBBIduIgv","title":"Labels","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Labels"},{"name":"iconClass","value":"bx bx-hash","type":"label"}]},{"id":"_help_Cq5X6iKQop6R","title":"Relations","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Relations"},{"name":"iconClass","value":"bx bx-transfer","type":"label"}]},{"id":"_help_bwZpz2ajCEwO","title":"Attribute Inheritance","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Attribute Inheritance"},{"name":"iconClass","value":"bx bx-list-plus","type":"label"}]},{"id":"_help_OFXdgB2nNk1F","title":"Promoted Attributes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes"},{"name":"iconClass","value":"bx bx-table","type":"label"}]}]},{"id":"_help_KC1HB96bqqHX","title":"Templates","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Templates"},{"name":"iconClass","value":"bx bx-copy","type":"label"}]},{"id":"_help_BCkXAVs63Ttv","title":"Note Map (Link map, Tree map)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Note Map (Link map, Tree map)"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_R9pX4DGra2Vt","title":"Sharing","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing"},{"name":"iconClass","value":"bx bx-share-alt","type":"label"}],"children":[{"id":"_help_Qjt68inQ2bRj","title":"Serving directly the content of a note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing/Serving directly the content o"},{"name":"iconClass","value":"bx bx-code","type":"label"}]},{"id":"_help_ycBFjKrrwE9p","title":"Exporting static HTML for web publishing","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing/Exporting static HTML for web "},{"name":"iconClass","value":"bx bxs-file-html","type":"label"}]},{"id":"_help_sLIJ6f1dkJYW","title":"Reverse proxy configuration","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing/Reverse proxy configuration"},{"name":"iconClass","value":"bx bx-world","type":"label"}]}]},{"id":"_help_5668rwcirq1t","title":"Advanced Showcases","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases"},{"name":"iconClass","value":"bx bxs-component","type":"label"}],"children":[{"id":"_help_l0tKav7yLHGF","title":"Day Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes"},{"name":"iconClass","value":"bx bx-calendar","type":"label"}]},{"id":"_help_R7abl2fc6Mxi","title":"Weight Tracker","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker"},{"name":"iconClass","value":"bx bx-line-chart","type":"label"}]},{"id":"_help_xYjQUYhpbUEW","title":"Task Manager","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager"},{"name":"iconClass","value":"bx bx-calendar-check","type":"label"}]}]},{"id":"_help_J5Ex1ZrMbyJ6","title":"Custom Request Handler","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Custom Request Handler"},{"name":"iconClass","value":"bx bx-globe","type":"label"}]},{"id":"_help_d3fAXQ2diepH","title":"Custom Resource Providers","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Custom Resource Providers"},{"name":"iconClass","value":"bx bxs-file-plus","type":"label"}]},{"id":"_help_pgxEVkzLl1OP","title":"ETAPI (REST API)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/ETAPI (REST API)"},{"name":"iconClass","value":"bx bx-extension","type":"label"}],"children":[{"id":"_help_9qPsTWBorUhQ","title":"API Reference","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/rest-api/etapi/"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true}]},{"id":"_help_47ZrP6FNuoG8","title":"Default Note Title","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Default Note Title"},{"name":"iconClass","value":"bx bx-edit-alt","type":"label"}]},{"id":"_help_wX4HbRucYSDD","title":"Database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database"},{"name":"iconClass","value":"bx bx-data","type":"label"}],"children":[{"id":"_help_oyIAJ9PvvwHX","title":"Manually altering the database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database/Manually altering the database"},{"name":"iconClass","value":"bx bxs-edit","type":"label"}],"children":[{"id":"_help_YKWqdJhzi2VY","title":"SQL Console","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console"},{"name":"iconClass","value":"bx bx-data","type":"label"}]}]},{"id":"_help_6tZeKvSHEUiB","title":"Demo Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database/Demo Notes"},{"name":"iconClass","value":"bx bx-package","type":"label"}]}]},{"id":"_help_Gzjqa934BdH4","title":"Configuration (config.ini or environment variables)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Configuration (config.ini or e"},{"name":"iconClass","value":"bx bx-cog","type":"label"}],"children":[{"id":"_help_c5xB8m4g2IY6","title":"Trilium instance","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Trilium instance"},{"name":"iconClass","value":"bx bx-windows","type":"label"}]},{"id":"_help_LWtBjFej3wX3","title":"Cross-Origin Resource Sharing (CORS)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Cross-Origin Resource Sharing "},{"name":"iconClass","value":"bx bx-lock","type":"label"}]}]},{"id":"_help_ivYnonVFBxbQ","title":"Bulk Actions","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Bulk Actions"},{"name":"iconClass","value":"bx bx-list-plus","type":"label"}]},{"id":"_help_4FahAwuGTAwC","title":"Note source","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Note source"},{"name":"iconClass","value":"bx bx-code","type":"label"}]},{"id":"_help_1YeN2MzFUluU","title":"Technologies used","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used"},{"name":"iconClass","value":"bx bx-pyramid","type":"label"}],"children":[{"id":"_help_MI26XDLSAlCD","title":"CKEditor","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/CKEditor"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_N4IDkixaDG9C","title":"MindElixir","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/MindElixir"},{"name":"iconClass","value":"bx bx-sitemap","type":"label"}]},{"id":"_help_H0mM1lTxF9JI","title":"Excalidraw","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/Excalidraw"},{"name":"iconClass","value":"bx bx-pen","type":"label"}]},{"id":"_help_MQHyy2dIFgxS","title":"Leaflet","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/Leaflet"},{"name":"iconClass","value":"bx bx-map-alt","type":"label"}]}]},{"id":"_help_m1lbrzyKDaRB","title":"Note ID","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Note ID"},{"name":"iconClass","value":"bx bx-hash","type":"label"}]},{"id":"_help_0vTSyvhPTAOz","title":"Internal API","type":"book","attributes":[{"name":"iconClass","value":"bx bxs-component","type":"label"}],"children":[{"id":"_help_z8O2VG4ZZJD7","title":"API Reference","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/rest-api/internal/"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true}]},{"id":"_help_2mUhVmZK8RF3","title":"Hidden Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Hidden Notes"},{"name":"iconClass","value":"bx bx-hide","type":"label"}]},{"id":"_help_uYF7pmepw27K","title":"Metrics","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Metrics"},{"name":"iconClass","value":"bx bxs-data","type":"label"}],"children":[{"id":"_help_bOP3TB56fL1V","title":"grafana-dashboard.json","type":"doc","attributes":[{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_64ZTlUPgEPtW","title":"Safe mode","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Safe mode"},{"name":"iconClass","value":"bx bxs-virus-block","type":"label"}]},{"id":"_help_HAIOFBoYIIdO","title":"Nightly release","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Nightly release"},{"name":"iconClass","value":"bx bx-moon","type":"label"}]},{"id":"_help_ZmT9ln8XJX2o","title":"Read-only database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Read-only database"},{"name":"iconClass","value":"bx bx-book-reader","type":"label"}]}]},{"id":"_help_GBBMSlVSOIGP","title":"AI","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI"},{"name":"iconClass","value":"bx bx-bot","type":"label"}],"children":[{"id":"_help_WkM7gsEUyCXs","title":"Providers","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/Providers"},{"name":"iconClass","value":"bx bx-select-multiple","type":"label"}],"children":[{"id":"_help_7EdTxPADv95W","title":"Ollama","type":"book","attributes":[{"name":"iconClass","value":"bx bx-message-dots","type":"label"}],"children":[{"id":"_help_vvUCN7FDkq7G","title":"Installing Ollama","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/Providers/Ollama/Installing Ollama"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_ZavFigBX9AwP","title":"OpenAI","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/Providers/OpenAI"},{"name":"iconClass","value":"bx bx-message-dots","type":"label"}]},{"id":"_help_e0lkirXEiSNc","title":"Anthropic","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/Providers/Anthropic"},{"name":"iconClass","value":"bx bx-message-dots","type":"label"}]}]}]},{"id":"_help_CdNpE2pqjmI6","title":"Scripting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting"},{"name":"iconClass","value":"bx bxs-file-js","type":"label"}],"children":[{"id":"_help_yIhgI5H7A2Sm","title":"Frontend Basics","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics"},{"name":"iconClass","value":"bx bx-window","type":"label"}],"children":[{"id":"_help_MgibgPcfeuGz","title":"Custom Widgets","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets"},{"name":"iconClass","value":"bx bxs-widget","type":"label"}],"children":[{"id":"_help_YNxAqkI5Kg1M","title":"Word count widget","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Word count widget"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_SynTBQiBsdYJ","title":"Widget Basics","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Widget Basics"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_M8IppdwVHSjG","title":"Right pane widget","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_VqGQnnPGnqAU","title":"CSS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/CSS"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_gMkgcLJ6jBkg","title":"Troubleshooting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Troubleshooting"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_es8OU2GuguFU","title":"Examples","type":"book","attributes":[{"name":"iconClass","value":"bx bx-code-alt","type":"label"}],"children":[{"id":"_help_TjLYAo3JMO8X","title":"\"New Task\" launcher button","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Examples/New Task launcher button"},{"name":"iconClass","value":"bx bx-task","type":"label"}]},{"id":"_help_7kZPMD0uFwkH","title":"Downloading responses from Google Forms","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Examples/Downloading responses from Goo"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_DL92EjAaXT26","title":"Using promoted attributes to configure scripts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Examples/Using promoted attributes to c"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_4Gn3psZKsfSm","title":"Launch Bar Widgets","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets"},{"name":"iconClass","value":"bx bx-dock-left","type":"label"}],"children":[{"id":"_help_IPArqVfDQ4We","title":"Note Title Widget","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Note Title Widget"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_gcI7RPbaNSh3","title":"Analog Watch","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Analog Watch"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]}]},{"id":"_help_SPirpZypehBG","title":"Backend scripts","type":"book","attributes":[{"name":"iconClass","value":"bx bx-server","type":"label"}],"children":[{"id":"_help_fZ2IGYFXjkEy","title":"Server-side imports","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Backend scripts/Server-side imports"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_GPERMystNGTB","title":"Events","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Backend scripts/Events"},{"name":"iconClass","value":"bx bx-rss","type":"label"}]}]},{"id":"_help_GLks18SNjxmC","title":"Script API","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Script API"},{"name":"iconClass","value":"bx bx-code-curly","type":"label"}],"children":[{"id":"_help_Q2z6av6JZVWm","title":"Frontend API","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/script-api/frontend"},{"name":"iconClass","value":"bx bx-folder","type":"label"}],"enforceAttributes":true,"children":[{"id":"_help_habiZ3HU8Kw8","title":"FNote","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/script-api/frontend/interfaces/FNote.html"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true}]},{"id":"_help_MEtfsqa5VwNi","title":"Backend API","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/script-api/backend"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true},{"id":"_help_ApVHZ8JY5ofC","title":"Day.js","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Script API/Day.js"},{"name":"iconClass","value":"bx bx-calendar","type":"label"}]}]},{"id":"_help_vElnKeDNPSVl","title":"Logging","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Logging"},{"name":"iconClass","value":"bx bx-terminal","type":"label"}]}]},{"id":"_help_Fm0j45KqyHpU","title":"Miscellaneous","type":"book","attributes":[{"name":"iconClass","value":"bx bx-info-circle","type":"label"}],"children":[{"id":"_help_WFbFXrgnDyyU","title":"Privacy Policy","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Miscellaneous/Privacy Policy"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_NcsmUYZRWEW4","title":"Patterns of personal knowledge","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Miscellaneous/Patterns of personal knowledge"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]}] \ No newline at end of file +[{"id":"_help_BOCnjTMBCoxW","title":"Feature Highlights","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Feature Highlights"},{"name":"iconClass","value":"bx bx-star","type":"label"}]},{"id":"_help_Otzi9La2YAUX","title":"Installation & Setup","type":"book","attributes":[{"name":"iconClass","value":"bx bx-cog","type":"label"}],"children":[{"id":"_help_poXkQfguuA0U","title":"Desktop Installation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Desktop Installation"},{"name":"iconClass","value":"bx bx-desktop","type":"label"}],"children":[{"id":"_help_nRqcgfTb97uV","title":"Using the desktop application as a server","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Desktop Installation/Using the desktop application "},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_Rp0q8bSP6Ayl","title":"System Requirements","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Desktop Installation/System Requirements"},{"name":"iconClass","value":"bx bx-chip","type":"label"}]},{"id":"_help_Un4wj2Mak2Ky","title":"Nix flake","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Desktop Installation/Nix flake"},{"name":"iconClass","value":"bx bxl-tux","type":"label"}]}]},{"id":"_help_WOcw2SLH6tbX","title":"Server Installation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation"},{"name":"iconClass","value":"bx bx-server","type":"label"}],"children":[{"id":"_help_Dgg7bR3b6K9j","title":"1. Installing the server","type":"book","attributes":[{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_3tW6mORuTHnB","title":"Packaged version for Linux","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Packaged version for Linux"},{"name":"iconClass","value":"bx bxl-tux","type":"label"}]},{"id":"_help_rWX5eY045zbE","title":"Using Docker","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Docker"},{"name":"iconClass","value":"bx bxl-docker","type":"label"}]},{"id":"_help_moVgBcoxE3EK","title":"On NixOS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/On NixOS"},{"name":"iconClass","value":"bx bxl-tux","type":"label"}]},{"id":"_help_J1Bb6lVlwU5T","title":"Manually","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Manually"},{"name":"iconClass","value":"bx bx-code-alt","type":"label"}]},{"id":"_help_DCmT6e7clMoP","title":"Using Kubernetes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Using Kubernetes"},{"name":"iconClass","value":"bx bxl-kubernetes","type":"label"}]},{"id":"_help_klCWNks3ReaQ","title":"Multiple server instances","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/1. Installing the server/Multiple server instances"},{"name":"iconClass","value":"bx bxs-user-account","type":"label"}]}]},{"id":"_help_vcjrb3VVYPZI","title":"2. Reverse proxy","type":"book","attributes":[{"name":"iconClass","value":"bx bx-folder","type":"label"}],"children":[{"id":"_help_ud6MShXL4WpO","title":"Nginx","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Nginx"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_fDLvzOx29Pfg","title":"Apache using Docker","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Apache using Docker"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_LLzSMXACKhUs","title":"Trusted proxy","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Trusted proxy"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_5ERVJb9s4FRD","title":"Traefik","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/2. Reverse proxy/Traefik"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_l2VkvOwUNfZj","title":"HTTPS (TLS)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/HTTPS (TLS)"},{"name":"iconClass","value":"bx bx-lock-alt","type":"label"}]},{"id":"_help_0hzsNCP31IAB","title":"Authentication","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Authentication"},{"name":"iconClass","value":"bx bx-user","type":"label"}]},{"id":"_help_7DAiwaf8Z7Rz","title":"Multi-Factor Authentication","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Multi-Factor Authentication"},{"name":"iconClass","value":"bx bx-stopwatch","type":"label"}]},{"id":"_help_Un4wj2Mak2Ky","title":"Nix flake","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Nix flake.clone"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_yeEaYqosGLSh","title":"Third-party cloud hosting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/Third-party cloud hosting"},{"name":"iconClass","value":"bx bx-cloud","type":"label"}]},{"id":"_help_iGTnKjubbXkA","title":"System Requirements","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Server Installation/System Requirements"},{"name":"iconClass","value":"bx bx-chip","type":"label"}]}]},{"id":"_help_cbkrhQjrkKrh","title":"Synchronization","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Synchronization"},{"name":"iconClass","value":"bx bx-sync","type":"label"}]},{"id":"_help_RDslemsQ6gCp","title":"Mobile Frontend","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Mobile Frontend"},{"name":"iconClass","value":"bx bx-mobile-alt","type":"label"}]},{"id":"_help_MtPxeAWVAzMg","title":"Web Clipper","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Web Clipper"},{"name":"iconClass","value":"bx bx-paperclip","type":"label"}]},{"id":"_help_n1lujUxCwipy","title":"Upgrading TriliumNext","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Upgrading TriliumNext"},{"name":"iconClass","value":"bx bx-up-arrow-alt","type":"label"}]},{"id":"_help_ODY7qQn5m2FT","title":"Backup","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Backup"},{"name":"iconClass","value":"bx bx-hdd","type":"label"}]},{"id":"_help_tAassRL4RSQL","title":"Data directory","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Installation & Setup/Data directory"},{"name":"iconClass","value":"bx bx-folder-open","type":"label"}]}]},{"id":"_help_gh7bpGYxajRS","title":"Basic Concepts and Features","type":"book","attributes":[{"name":"iconClass","value":"bx bx-help-circle","type":"label"}],"children":[{"id":"_help_Vc8PjrjAGuOp","title":"UI Elements","type":"book","attributes":[{"name":"iconClass","value":"bx bx-window-alt","type":"label"}],"children":[{"id":"_help_x0JgW8UqGXvq","title":"Vertical and horizontal layout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Vertical and horizontal layout"},{"name":"iconClass","value":"bx bxs-layout","type":"label"}]},{"id":"_help_x3i7MxGccDuM","title":"Global menu","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Global menu"},{"name":"iconClass","value":"bx bx-menu","type":"label"}]},{"id":"_help_oPVyFC7WL2Lp","title":"Note Tree","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree"},{"name":"iconClass","value":"bx bxs-tree-alt","type":"label"}],"children":[{"id":"_help_YtSN43OrfzaA","title":"Note tree contextual menu","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Note tree contextual menu"},{"name":"iconClass","value":"bx bx-menu","type":"label"}]},{"id":"_help_yTjUdsOi4CIE","title":"Multiple selection","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Multiple selection"},{"name":"iconClass","value":"bx bx-list-plus","type":"label"}]},{"id":"_help_DvdZhoQZY9Yd","title":"Keyboard shortcuts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tree/Keyboard shortcuts"},{"name":"iconClass","value":"bx bxs-keyboard","type":"label"}]}]},{"id":"_help_BlN9DFI679QC","title":"Ribbon","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Ribbon"},{"name":"iconClass","value":"bx bx-dots-horizontal","type":"label"}]},{"id":"_help_3seOhtN8uLIY","title":"Tabs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Tabs"},{"name":"iconClass","value":"bx bx-dock-top","type":"label"}]},{"id":"_help_xYmIYSP6wE3F","title":"Launch Bar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Launch Bar"},{"name":"iconClass","value":"bx bx-sidebar","type":"label"}]},{"id":"_help_8YBEPzcpUgxw","title":"Note buttons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note buttons"},{"name":"iconClass","value":"bx bx-dots-vertical-rounded","type":"label"}]},{"id":"_help_4TIF1oA4VQRO","title":"Options","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Options"},{"name":"iconClass","value":"bx bx-cog","type":"label"}]},{"id":"_help_luNhaphA37EO","title":"Split View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Split View"},{"name":"iconClass","value":"bx bx-dock-right","type":"label"}]},{"id":"_help_XpOYSgsLkTJy","title":"Floating buttons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Floating buttons"},{"name":"iconClass","value":"bx bx-rectangle","type":"label"}]},{"id":"_help_RnaPdbciOfeq","title":"Right Sidebar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Right Sidebar"},{"name":"iconClass","value":"bx bxs-dock-right","type":"label"}]},{"id":"_help_r5JGHN99bVKn","title":"Recent Changes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Recent Changes"},{"name":"iconClass","value":"bx bx-history","type":"label"}]},{"id":"_help_ny318J39E5Z0","title":"Zoom","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Zoom"},{"name":"iconClass","value":"bx bx-zoom-in","type":"label"}]},{"id":"_help_lgKX7r3aL30x","title":"Note Tooltip","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/Note Tooltip"},{"name":"iconClass","value":"bx bx-message-detail","type":"label"}]},{"id":"_help_IjZS7iK5EXtb","title":"New Layout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout"},{"name":"iconClass","value":"bx bx-layout","type":"label"}],"children":[{"id":"_help_I6p2a06hdnL6","title":"Breadcrumb","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout/Breadcrumb"},{"name":"iconClass","value":"bx bx-chevron-right","type":"label"}]},{"id":"_help_AlJ73vBCjWDw","title":"Status bar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout/Status bar"},{"name":"iconClass","value":"bx bx-dock-bottom","type":"label"}]}]}]},{"id":"_help_BFs8mudNFgCS","title":"Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes"},{"name":"iconClass","value":"bx bx-notepad","type":"label"}],"children":[{"id":"_help_p9kXRFAkwN4o","title":"Note Icons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note Icons"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]},{"id":"_help_0vhv7lsOLy82","title":"Attachments","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Attachments"},{"name":"iconClass","value":"bx bx-paperclip","type":"label"}]},{"id":"_help_IakOLONlIfGI","title":"Cloning Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes"},{"name":"iconClass","value":"bx bx-duplicate","type":"label"}],"children":[{"id":"_help_TBwsyfadTA18","title":"Branch prefix","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Cloning Notes/Branch prefix"},{"name":"iconClass","value":"bx bx-rename","type":"label"}]}]},{"id":"_help_bwg0e8ewQMak","title":"Protected Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Protected Notes"},{"name":"iconClass","value":"bx bx-lock-alt","type":"label"}]},{"id":"_help_MKmLg5x6xkor","title":"Archived Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Archived Notes"},{"name":"iconClass","value":"bx bx-box","type":"label"}]},{"id":"_help_vZWERwf8U3nx","title":"Note Revisions","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note Revisions"},{"name":"iconClass","value":"bx bx-history","type":"label"}]},{"id":"_help_aGlEvb9hyDhS","title":"Sorting Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Sorting Notes"},{"name":"iconClass","value":"bx bx-sort-up","type":"label"}]},{"id":"_help_NRnIZmSMc5sj","title":"Printing & Exporting as PDF","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Printing & Exporting as PDF"},{"name":"iconClass","value":"bx bx-printer","type":"label"}]},{"id":"_help_CoFPLs3dRlXc","title":"Read-Only Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Read-Only Notes"},{"name":"iconClass","value":"bx bx-edit-alt","type":"label"}]},{"id":"_help_0ESUbbAxVnoK","title":"Note List","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Notes/Note List"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]}]},{"id":"_help_wArbEsdSae6g","title":"Navigation","type":"book","attributes":[{"name":"iconClass","value":"bx bx-navigation","type":"label"}],"children":[{"id":"_help_kBrnXNG3Hplm","title":"Tree Concepts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Tree Concepts"},{"name":"iconClass","value":"bx bx-pyramid","type":"label"}]},{"id":"_help_MMiBEQljMQh2","title":"Note Navigation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Note Navigation"},{"name":"iconClass","value":"bx bxs-navigation","type":"label"}]},{"id":"_help_Ms1nauBra7gq","title":"Quick search","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Quick search"},{"name":"iconClass","value":"bx bx-search-alt-2","type":"label"}]},{"id":"_help_F1r9QtzQLZqm","title":"Jump to...","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Jump to"},{"name":"iconClass","value":"bx bx-send","type":"label"}]},{"id":"_help_eIg8jdvaoNNd","title":"Search","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Search"},{"name":"iconClass","value":"bx bx-search-alt-2","type":"label"}]},{"id":"_help_u3YFHC9tQlpm","title":"Bookmarks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Bookmarks"},{"name":"iconClass","value":"bx bx-bookmarks","type":"label"}]},{"id":"_help_OR8WJ7Iz9K4U","title":"Note Hoisting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Note Hoisting"},{"name":"iconClass","value":"bx bxs-chevrons-up","type":"label"}]},{"id":"_help_ZjLYv08Rp3qC","title":"Quick edit","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Quick edit"},{"name":"iconClass","value":"bx bx-edit","type":"label"}]},{"id":"_help_9sRHySam5fXb","title":"Workspaces","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Workspaces"},{"name":"iconClass","value":"bx bx-door-open","type":"label"}]},{"id":"_help_xWtq5NUHOwql","title":"Similar Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Similar Notes"},{"name":"iconClass","value":"bx bx-bar-chart","type":"label"}]},{"id":"_help_McngOG2jbUWX","title":"Search in note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Navigation/Search in note"},{"name":"iconClass","value":"bx bx-search-alt-2","type":"label"}]}]},{"id":"_help_A9Oc6YKKc65v","title":"Keyboard Shortcuts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Keyboard Shortcuts"},{"name":"iconClass","value":"bx bxs-keyboard","type":"label"}]},{"id":"_help_Wy267RK4M69c","title":"Themes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Themes"},{"name":"iconClass","value":"bx bx-palette","type":"label"}],"children":[{"id":"_help_VbjZvtUek0Ln","title":"Theme Gallery","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Themes/Theme Gallery"},{"name":"iconClass","value":"bx bx-book-reader","type":"label"}]},{"id":"_help_gOKqSJgXLcIj","title":"Icon Packs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Themes/Icon Packs"},{"name":"iconClass","value":"bx bx-package","type":"label"}]}]},{"id":"_help_mHbBMPDPkVV5","title":"Import & Export","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export"},{"name":"iconClass","value":"bx bx-import","type":"label"}],"children":[{"id":"_help_Oau6X9rCuegd","title":"Markdown","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown"},{"name":"iconClass","value":"bx bxl-markdown","type":"label"}],"children":[{"id":"_help_rJ9grSgoExl9","title":"Supported syntax","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/Markdown/Supported syntax"},{"name":"iconClass","value":"bx bx-code-alt","type":"label"}]}]},{"id":"_help_syuSEKf2rUGr","title":"Evernote","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/Evernote"},{"name":"iconClass","value":"bx bx-window-open","type":"label"}]},{"id":"_help_GnhlmrATVqcH","title":"OneNote","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Import & Export/OneNote"},{"name":"iconClass","value":"bx bx-window-open","type":"label"}]}]},{"id":"_help_rC3pL2aptaRE","title":"Zen mode","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Basic Concepts and Features/Zen mode"},{"name":"iconClass","value":"bx bxs-yin-yang","type":"label"}]}]},{"id":"_help_s3YCWHBfmYuM","title":"Quick Start","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Quick Start"},{"name":"iconClass","value":"bx bx-run","type":"label"}]},{"id":"_help_i6dbnitykE5D","title":"FAQ","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/FAQ"},{"name":"iconClass","value":"bx bx-question-mark","type":"label"}]},{"id":"_help_KSZ04uQ2D1St","title":"Note Types","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types"},{"name":"iconClass","value":"bx bx-edit","type":"label"}],"children":[{"id":"_help_iPIMuisry3hd","title":"Text","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text"},{"name":"iconClass","value":"bx bx-note","type":"label"}],"children":[{"id":"_help_NwBbFdNZ9h7O","title":"Block quotes & admonitions","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Block quotes & admonitions"},{"name":"iconClass","value":"bx bx-info-circle","type":"label"}]},{"id":"_help_oSuaNgyyKnhu","title":"Bookmarks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Bookmarks"},{"name":"iconClass","value":"bx bx-bookmark","type":"label"}]},{"id":"_help_veGu4faJErEM","title":"Content language & Right-to-left support","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Content language & Right-to-le"},{"name":"iconClass","value":"bx bx-align-right","type":"label"}]},{"id":"_help_2x0ZAX9ePtzV","title":"Cut to subnote","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Cut to subnote"},{"name":"iconClass","value":"bx bx-cut","type":"label"}]},{"id":"_help_UYuUB1ZekNQU","title":"Developer-specific formatting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Developer-specific formatting"},{"name":"iconClass","value":"bx bx-code-alt","type":"label"}],"children":[{"id":"_help_QxEyIjRBizuC","title":"Code blocks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Developer-specific formatting/Code blocks"},{"name":"iconClass","value":"bx bx-code","type":"label"}]}]},{"id":"_help_AgjCISero73a","title":"Footnotes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Footnotes"},{"name":"iconClass","value":"bx bx-bracket","type":"label"}]},{"id":"_help_nRhnJkTT8cPs","title":"Formatting toolbar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Formatting toolbar"},{"name":"iconClass","value":"bx bx-text","type":"label"}]},{"id":"_help_Gr6xFaF6ioJ5","title":"General formatting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/General formatting"},{"name":"iconClass","value":"bx bx-bold","type":"label"}]},{"id":"_help_AxshuNRegLAv","title":"Highlights list","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Highlights list"},{"name":"iconClass","value":"bx bx-highlight","type":"label"}]},{"id":"_help_mT0HEkOsz6i1","title":"Images","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Images"},{"name":"iconClass","value":"bx bx-image-alt","type":"label"}],"children":[{"id":"_help_0Ofbk1aSuVRu","title":"Image references","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Images/Image references"},{"name":"iconClass","value":"bx bxs-file-image","type":"label"}]}]},{"id":"_help_nBAXQFj20hS1","title":"Include Note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Include Note"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_CohkqWQC1iBv","title":"Insert buttons","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Insert buttons"},{"name":"iconClass","value":"bx bx-plus","type":"label"}]},{"id":"_help_oiVPnW8QfnvS","title":"Keyboard shortcuts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Keyboard shortcuts"},{"name":"iconClass","value":"bx bxs-keyboard","type":"label"}]},{"id":"_help_QEAPj01N5f7w","title":"Links","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Links"},{"name":"iconClass","value":"bx bx-link-alt","type":"label"}],"children":[{"id":"_help_3IDVtesTQ8ds","title":"External links","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Links/External links"},{"name":"iconClass","value":"bx bx-link-external","type":"label"}]},{"id":"_help_hrZ1D00cLbal","title":"Internal (reference) links","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Links/Internal (reference) links"},{"name":"iconClass","value":"bx bx-link","type":"label"}]}]},{"id":"_help_S6Xx8QIWTV66","title":"Lists","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Lists"},{"name":"iconClass","value":"bx bx-list-ul","type":"label"}]},{"id":"_help_QrtTYPmdd1qq","title":"Markdown-like formatting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Markdown-like formatting"},{"name":"iconClass","value":"bx bxl-markdown","type":"label"}]},{"id":"_help_YfYAtQBcfo5V","title":"Math Equations","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Math Equations"},{"name":"iconClass","value":"bx bx-math","type":"label"}]},{"id":"_help_dEHYtoWWi8ct","title":"Other features","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Other features"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]},{"id":"_help_gLt3vA97tMcp","title":"Premium features","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features"},{"name":"iconClass","value":"bx bx-star","type":"label"}],"children":[{"id":"_help_ZlN4nump6EbW","title":"Slash Commands","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features/Slash Commands"},{"name":"iconClass","value":"bx bx-menu","type":"label"}]},{"id":"_help_pwc194wlRzcH","title":"Text Snippets","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features/Text Snippets"},{"name":"iconClass","value":"bx bx-align-left","type":"label"}]},{"id":"_help_5wZallV2Qo1t","title":"Format Painter","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Premium features/Format Painter"},{"name":"iconClass","value":"bx bxs-paint-roll","type":"label"}]}]},{"id":"_help_BFvAtE74rbP6","title":"Table of contents","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Table of contents"},{"name":"iconClass","value":"bx bx-heading","type":"label"}]},{"id":"_help_NdowYOC1GFKS","title":"Tables","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Text/Tables"},{"name":"iconClass","value":"bx bx-table","type":"label"}]}]},{"id":"_help_6f9hih2hXXZk","title":"Code","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Code"},{"name":"iconClass","value":"bx bx-code","type":"label"}]},{"id":"_help_m523cpzocqaD","title":"Saved Search","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Saved Search"},{"name":"iconClass","value":"bx bx-file-find","type":"label"}]},{"id":"_help_iRwzGnHPzonm","title":"Relation Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Relation Map"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_bdUJEHsAPYQR","title":"Note Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Note Map"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_HcABDtFCkbFN","title":"Render Note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Render Note"},{"name":"iconClass","value":"bx bx-extension","type":"label"}]},{"id":"_help_s1aBHPd79XYj","title":"Mermaid Diagrams","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Mermaid Diagrams"},{"name":"iconClass","value":"bx bx-selection","type":"label"}],"children":[{"id":"_help_RH6yLjjWJHof","title":"ELK layout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Mermaid Diagrams/ELK layout"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_WWgeUaBb7UfC","title":"Syntax reference","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://mermaid.js.org/intro/syntax-reference.html"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true}]},{"id":"_help_grjYqerjn243","title":"Canvas","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Canvas"},{"name":"iconClass","value":"bx bx-pen","type":"label"}]},{"id":"_help_1vHRoWCEjj0L","title":"Web View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Web View"},{"name":"iconClass","value":"bx bx-globe-alt","type":"label"}]},{"id":"_help_gBbsAeiuUxI5","title":"Mind Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/Mind Map"},{"name":"iconClass","value":"bx bx-sitemap","type":"label"}]},{"id":"_help_W8vYD3Q1zjCR","title":"File","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Note Types/File"},{"name":"iconClass","value":"bx bx-file-blank","type":"label"}]}]},{"id":"_help_GTwFsgaA0lCt","title":"Collections","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections"},{"name":"iconClass","value":"bx bx-book","type":"label"}],"children":[{"id":"_help_xWbu3jpNWapp","title":"Calendar","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Calendar"},{"name":"iconClass","value":"bx bx-calendar","type":"label"}]},{"id":"_help_2FvYrpmOXm29","title":"Table","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Table"},{"name":"iconClass","value":"bx bx-table","type":"label"}]},{"id":"_help_CtBQqbwXDx1w","title":"Kanban Board","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Kanban Board"},{"name":"iconClass","value":"bx bx-columns","type":"label"}]},{"id":"_help_81SGnPGMk7Xc","title":"Geo Map","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Geo Map"},{"name":"iconClass","value":"bx bx-map-alt","type":"label"}]},{"id":"_help_zP3PMqaG71Ct","title":"Presentation","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Presentation"},{"name":"iconClass","value":"bx bx-slideshow","type":"label"}]},{"id":"_help_8QqnMzx393bx","title":"Grid View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/Grid View"},{"name":"iconClass","value":"bx bxs-grid","type":"label"}]},{"id":"_help_mULW0Q3VojwY","title":"List View","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Collections/List View"},{"name":"iconClass","value":"bx bx-list-ul","type":"label"}]}]},{"id":"_help_BgmBlOIl72jZ","title":"Troubleshooting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting"},{"name":"iconClass","value":"bx bx-bug","type":"label"}],"children":[{"id":"_help_wy8So3yZZlH9","title":"Reporting issues","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Reporting issues"},{"name":"iconClass","value":"bx bx-bug-alt","type":"label"}]},{"id":"_help_x59R8J8KV5Bp","title":"Anonymized Database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Anonymized Database"},{"name":"iconClass","value":"bx bx-low-vision","type":"label"}]},{"id":"_help_qzNzp9LYQyPT","title":"Error logs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Error logs"},{"name":"iconClass","value":"bx bx-comment-error","type":"label"}],"children":[{"id":"_help_bnyigUA2UK7s","title":"Backend (server) logs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Error logs/Backend (server) logs"},{"name":"iconClass","value":"bx bx-server","type":"label"}]},{"id":"_help_9yEHzMyFirZR","title":"Frontend logs","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Error logs/Frontend logs"},{"name":"iconClass","value":"bx bx-window-alt","type":"label"}]}]},{"id":"_help_vdlYGAcpXAgc","title":"Synchronization fails with 504 Gateway Timeout","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Synchronization fails with 504"},{"name":"iconClass","value":"bx bx-error","type":"label"}]},{"id":"_help_s8alTXmpFR61","title":"Refreshing the application","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Troubleshooting/Refreshing the application"},{"name":"iconClass","value":"bx bx-refresh","type":"label"}]}]},{"id":"_help_pKK96zzmvBGf","title":"Theme development","type":"book","attributes":[{"name":"iconClass","value":"bx bx-palette","type":"label"}],"children":[{"id":"_help_7NfNr5pZpVKV","title":"Creating a custom theme","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Creating a custom theme"},{"name":"iconClass","value":"bx bxs-color","type":"label"}]},{"id":"_help_WFGzWeUK6arS","title":"Customize the Next theme","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Customize the Next theme"},{"name":"iconClass","value":"bx bx-news","type":"label"}]},{"id":"_help_WN5z4M8ASACJ","title":"Reference","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Reference"},{"name":"iconClass","value":"bx bx-book-open","type":"label"}]},{"id":"_help_AlhDUqhENtH7","title":"Custom app-wide CSS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Custom app-wide CSS"},{"name":"iconClass","value":"bx bxs-file-css","type":"label"}]},{"id":"_help_g1mlRoU8CsqC","title":"Creating an icon pack","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Theme development/Creating an icon pack"},{"name":"iconClass","value":"bx bx-package","type":"label"}]}]},{"id":"_help_tC7s2alapj8V","title":"Advanced Usage","type":"book","attributes":[{"name":"iconClass","value":"bx bx-rocket","type":"label"}],"children":[{"id":"_help_zEY4DaJG4YT5","title":"Attributes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes"},{"name":"iconClass","value":"bx bx-list-check","type":"label"}],"children":[{"id":"_help_HI6GBBIduIgv","title":"Labels","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Labels"},{"name":"iconClass","value":"bx bx-hash","type":"label"}]},{"id":"_help_Cq5X6iKQop6R","title":"Relations","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Relations"},{"name":"iconClass","value":"bx bx-transfer","type":"label"}]},{"id":"_help_bwZpz2ajCEwO","title":"Attribute Inheritance","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Attribute Inheritance"},{"name":"iconClass","value":"bx bx-list-plus","type":"label"}]},{"id":"_help_OFXdgB2nNk1F","title":"Promoted Attributes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Attributes/Promoted Attributes"},{"name":"iconClass","value":"bx bx-table","type":"label"}]}]},{"id":"_help_KC1HB96bqqHX","title":"Templates","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Templates"},{"name":"iconClass","value":"bx bx-copy","type":"label"}]},{"id":"_help_BCkXAVs63Ttv","title":"Note Map (Link map, Tree map)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Note Map (Link map, Tree map)"},{"name":"iconClass","value":"bx bxs-network-chart","type":"label"}]},{"id":"_help_R9pX4DGra2Vt","title":"Sharing","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing"},{"name":"iconClass","value":"bx bx-share-alt","type":"label"}],"children":[{"id":"_help_Qjt68inQ2bRj","title":"Serving directly the content of a note","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing/Serving directly the content o"},{"name":"iconClass","value":"bx bx-code","type":"label"}]},{"id":"_help_ycBFjKrrwE9p","title":"Exporting static HTML for web publishing","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing/Exporting static HTML for web "},{"name":"iconClass","value":"bx bxs-file-html","type":"label"}]},{"id":"_help_sLIJ6f1dkJYW","title":"Reverse proxy configuration","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Sharing/Reverse proxy configuration"},{"name":"iconClass","value":"bx bx-world","type":"label"}]}]},{"id":"_help_5668rwcirq1t","title":"Advanced Showcases","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases"},{"name":"iconClass","value":"bx bxs-component","type":"label"}],"children":[{"id":"_help_l0tKav7yLHGF","title":"Day Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases/Day Notes"},{"name":"iconClass","value":"bx bx-calendar","type":"label"}]},{"id":"_help_R7abl2fc6Mxi","title":"Weight Tracker","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases/Weight Tracker"},{"name":"iconClass","value":"bx bx-line-chart","type":"label"}]},{"id":"_help_xYjQUYhpbUEW","title":"Task Manager","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Advanced Showcases/Task Manager"},{"name":"iconClass","value":"bx bx-calendar-check","type":"label"}]}]},{"id":"_help_J5Ex1ZrMbyJ6","title":"Custom Request Handler","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Custom Request Handler"},{"name":"iconClass","value":"bx bx-globe","type":"label"}]},{"id":"_help_d3fAXQ2diepH","title":"Custom Resource Providers","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Custom Resource Providers"},{"name":"iconClass","value":"bx bxs-file-plus","type":"label"}]},{"id":"_help_pgxEVkzLl1OP","title":"ETAPI (REST API)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/ETAPI (REST API)"},{"name":"iconClass","value":"bx bx-extension","type":"label"}],"children":[{"id":"_help_9qPsTWBorUhQ","title":"API Reference","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/rest-api/etapi/"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true}]},{"id":"_help_47ZrP6FNuoG8","title":"Default Note Title","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Default Note Title"},{"name":"iconClass","value":"bx bx-edit-alt","type":"label"}]},{"id":"_help_wX4HbRucYSDD","title":"Database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database"},{"name":"iconClass","value":"bx bx-data","type":"label"}],"children":[{"id":"_help_oyIAJ9PvvwHX","title":"Manually altering the database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database/Manually altering the database"},{"name":"iconClass","value":"bx bxs-edit","type":"label"}],"children":[{"id":"_help_YKWqdJhzi2VY","title":"SQL Console","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database/Manually altering the database/SQL Console"},{"name":"iconClass","value":"bx bx-data","type":"label"}]}]},{"id":"_help_6tZeKvSHEUiB","title":"Demo Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Database/Demo Notes"},{"name":"iconClass","value":"bx bx-package","type":"label"}]}]},{"id":"_help_Gzjqa934BdH4","title":"Configuration (config.ini or environment variables)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Configuration (config.ini or e"},{"name":"iconClass","value":"bx bx-cog","type":"label"}],"children":[{"id":"_help_c5xB8m4g2IY6","title":"Trilium instance","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Trilium instance"},{"name":"iconClass","value":"bx bx-windows","type":"label"}]},{"id":"_help_LWtBjFej3wX3","title":"Cross-Origin Resource Sharing (CORS)","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Configuration (config.ini or environment variables)/Cross-Origin Resource Sharing "},{"name":"iconClass","value":"bx bx-lock","type":"label"}]}]},{"id":"_help_ivYnonVFBxbQ","title":"Bulk Actions","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Bulk Actions"},{"name":"iconClass","value":"bx bx-list-plus","type":"label"}]},{"id":"_help_4FahAwuGTAwC","title":"Note source","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Note source"},{"name":"iconClass","value":"bx bx-code","type":"label"}]},{"id":"_help_1YeN2MzFUluU","title":"Technologies used","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used"},{"name":"iconClass","value":"bx bx-pyramid","type":"label"}],"children":[{"id":"_help_MI26XDLSAlCD","title":"CKEditor","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/CKEditor"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_N4IDkixaDG9C","title":"MindElixir","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/MindElixir"},{"name":"iconClass","value":"bx bx-sitemap","type":"label"}]},{"id":"_help_H0mM1lTxF9JI","title":"Excalidraw","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/Excalidraw"},{"name":"iconClass","value":"bx bx-pen","type":"label"}]},{"id":"_help_MQHyy2dIFgxS","title":"Leaflet","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Technologies used/Leaflet"},{"name":"iconClass","value":"bx bx-map-alt","type":"label"}]}]},{"id":"_help_m1lbrzyKDaRB","title":"Note ID","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Note ID"},{"name":"iconClass","value":"bx bx-hash","type":"label"}]},{"id":"_help_0vTSyvhPTAOz","title":"Internal API","type":"book","attributes":[{"name":"iconClass","value":"bx bxs-component","type":"label"}],"children":[{"id":"_help_z8O2VG4ZZJD7","title":"API Reference","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/rest-api/internal/"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true}]},{"id":"_help_2mUhVmZK8RF3","title":"Hidden Notes","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Hidden Notes"},{"name":"iconClass","value":"bx bx-hide","type":"label"}]},{"id":"_help_uYF7pmepw27K","title":"Metrics","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Metrics"},{"name":"iconClass","value":"bx bxs-data","type":"label"}],"children":[{"id":"_help_bOP3TB56fL1V","title":"grafana-dashboard.json","type":"doc","attributes":[{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_64ZTlUPgEPtW","title":"Safe mode","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Safe mode"},{"name":"iconClass","value":"bx bxs-virus-block","type":"label"}]},{"id":"_help_HAIOFBoYIIdO","title":"Nightly release","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Nightly release"},{"name":"iconClass","value":"bx bx-moon","type":"label"}]},{"id":"_help_ZmT9ln8XJX2o","title":"Read-only database","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Advanced Usage/Read-only database"},{"name":"iconClass","value":"bx bx-book-reader","type":"label"}]}]},{"id":"_help_GBBMSlVSOIGP","title":"AI","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI"},{"name":"iconClass","value":"bx bx-bot","type":"label"}],"children":[{"id":"_help_WkM7gsEUyCXs","title":"Providers","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/Providers"},{"name":"iconClass","value":"bx bx-select-multiple","type":"label"}],"children":[{"id":"_help_7EdTxPADv95W","title":"Ollama","type":"book","attributes":[{"name":"iconClass","value":"bx bx-message-dots","type":"label"}],"children":[{"id":"_help_vvUCN7FDkq7G","title":"Installing Ollama","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/Providers/Ollama/Installing Ollama"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_ZavFigBX9AwP","title":"OpenAI","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/Providers/OpenAI"},{"name":"iconClass","value":"bx bx-message-dots","type":"label"}]},{"id":"_help_e0lkirXEiSNc","title":"Anthropic","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/AI/Providers/Anthropic"},{"name":"iconClass","value":"bx bx-message-dots","type":"label"}]}]}]},{"id":"_help_CdNpE2pqjmI6","title":"Scripting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting"},{"name":"iconClass","value":"bx bxs-file-js","type":"label"}],"children":[{"id":"_help_yIhgI5H7A2Sm","title":"Frontend Basics","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics"},{"name":"iconClass","value":"bx bx-window","type":"label"}],"children":[{"id":"_help_MgibgPcfeuGz","title":"Custom Widgets","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets"},{"name":"iconClass","value":"bx bxs-widget","type":"label"}],"children":[{"id":"_help_SynTBQiBsdYJ","title":"Widget Basics","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Widget Basics"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_GhurYZjh8e1V","title":"Note context aware widget","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Note context aware widget"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_M8IppdwVHSjG","title":"Right pane widget","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_YNxAqkI5Kg1M","title":"Word count widget","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Word count widget"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_VqGQnnPGnqAU","title":"CSS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/CSS"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_gMkgcLJ6jBkg","title":"Troubleshooting","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Troubleshooting"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_es8OU2GuguFU","title":"Examples","type":"book","attributes":[{"name":"iconClass","value":"bx bx-code-alt","type":"label"}],"children":[{"id":"_help_TjLYAo3JMO8X","title":"\"New Task\" launcher button","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Examples/New Task launcher button"},{"name":"iconClass","value":"bx bx-task","type":"label"}]},{"id":"_help_7kZPMD0uFwkH","title":"Downloading responses from Google Forms","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Examples/Downloading responses from Goo"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_DL92EjAaXT26","title":"Using promoted attributes to configure scripts","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Examples/Using promoted attributes to c"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_4Gn3psZKsfSm","title":"Launch Bar Widgets","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets"},{"name":"iconClass","value":"bx bx-dock-left","type":"label"}],"children":[{"id":"_help_IPArqVfDQ4We","title":"Note Title Widget","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Note Title Widget"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_gcI7RPbaNSh3","title":"Analog Watch","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Analog Watch"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]},{"id":"_help_KLsqhjaqh1QW","title":"Preact","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Preact"},{"name":"iconClass","value":"bx bxl-react","type":"label"}],"children":[{"id":"_help_Bqde6BvPo05g","title":"Component libraries","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Preact/Component libraries"},{"name":"iconClass","value":"bx bxs-component","type":"label"}]},{"id":"_help_ykYtbM9k3a7B","title":"Hooks","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Preact/Hooks"},{"name":"iconClass","value":"bx bx-question-mark","type":"label"}]},{"id":"_help_Sg9GrCtyftZf","title":"CSS","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Preact/CSS"},{"name":"iconClass","value":"bx bxs-file-css","type":"label"}]},{"id":"_help_RSssb9S3xgSr","title":"Built-in components","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Frontend Basics/Preact/Built-in components"},{"name":"iconClass","value":"bx bxs-component","type":"label"}],"children":[{"id":"_help_i9B4IW7b6V6z","title":"Widget showcase","type":"doc","attributes":[{"name":"iconClass","value":"bx bx-file","type":"label"}]}]}]}]},{"id":"_help_SPirpZypehBG","title":"Backend scripts","type":"book","attributes":[{"name":"iconClass","value":"bx bx-server","type":"label"}],"children":[{"id":"_help_fZ2IGYFXjkEy","title":"Server-side imports","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Backend scripts/Server-side imports"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_GPERMystNGTB","title":"Events","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Backend scripts/Events"},{"name":"iconClass","value":"bx bx-rss","type":"label"}]}]},{"id":"_help_wqXwKJl6VpNk","title":"Common concepts","type":"book","attributes":[{"name":"iconClass","value":"bx bxl-nodejs","type":"label"}],"children":[{"id":"_help_hA834UaHhSNn","title":"Script bundles","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Common concepts/Script bundles"},{"name":"iconClass","value":"bx bx-package","type":"label"}]}]},{"id":"_help_GLks18SNjxmC","title":"Script API","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Script API"},{"name":"iconClass","value":"bx bx-code-curly","type":"label"}],"children":[{"id":"_help_Q2z6av6JZVWm","title":"Frontend API","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/script-api/frontend"},{"name":"iconClass","value":"bx bx-folder","type":"label"}],"enforceAttributes":true,"children":[{"id":"_help_habiZ3HU8Kw8","title":"FNote","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/script-api/frontend/interfaces/FNote.html"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true}]},{"id":"_help_MEtfsqa5VwNi","title":"Backend API","type":"webView","attributes":[{"type":"label","name":"webViewSrc","value":"https://docs.triliumnotes.org/script-api/backend"},{"name":"iconClass","value":"bx bx-file","type":"label"}],"enforceAttributes":true},{"id":"_help_ApVHZ8JY5ofC","title":"Day.js","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Script API/Day.js"},{"name":"iconClass","value":"bx bx-calendar","type":"label"}]}]},{"id":"_help_vElnKeDNPSVl","title":"Logging","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Scripting/Logging"},{"name":"iconClass","value":"bx bx-terminal","type":"label"}]}]},{"id":"_help_Fm0j45KqyHpU","title":"Miscellaneous","type":"book","attributes":[{"name":"iconClass","value":"bx bx-info-circle","type":"label"}],"children":[{"id":"_help_WFbFXrgnDyyU","title":"Privacy Policy","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Miscellaneous/Privacy Policy"},{"name":"iconClass","value":"bx bx-file","type":"label"}]},{"id":"_help_NcsmUYZRWEW4","title":"Patterns of personal knowledge","type":"doc","attributes":[{"type":"label","name":"docName","value":"User Guide/User Guide/Miscellaneous/Patterns of personal knowledge"},{"name":"iconClass","value":"bx bx-file","type":"label"}]}]}] \ No newline at end of file diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Demo Notes.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Demo Notes.html index 851f267f7..4e60303c0 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Demo Notes.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Database/Demo Notes.html @@ -21,7 +21,7 @@

    You can easily restore the demo notes by using Trilium's built-in import feature by importing them:

      -
    • Download this .zip archive with +
    • Download the .zip archive with the latest version of the demo notes
    • Right click on any note in your tree under which you would like the demo notes to be imported
    • diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Nightly release.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Nightly release.html index b2bf30c81..d3cdc2008 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Nightly release.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Advanced Usage/Nightly release.html @@ -9,8 +9,8 @@ feel free to report them either via a ticket or via the Matrix.

      Downloading the nightly release manually

      Go to github.com/TriliumNext/Trilium/releases/tag/nightly and - look for the artifacts starting with TriliumNotes-main. - Choose the appropriate one for your platform (e.g. windows-x64.zip).

      + look for the artifacts starting with TriliumNotes-main. Choose + the appropriate one for your platform (e.g. windows-x64.zip).

      Depending on your use case, you can either test the portable version or even use the installer.

    @@ -116,78 +115,75 @@ class="image">

    Here's how all the different tabs that were once part of the ribbon are now available in the new layout:

      -
    • “Formatting toolbar” was relocated to the top of the page. +
    • “Formatting toolbar” was relocated to the top of the page.
        -
      • Instead of having one per split, now there is a single formatting toolbar +
      • Instead of having one per split, now there is a single formatting toolbar per tab. This allows more space for the toolbar items.
    • -
    • “Owned attributes” and “Inherited attributes” were merged and moved to +
    • “Owned attributes” and “Inherited attributes” were merged and moved to the status bar region (displayed one above the other).
    • -
    • “Basic Properties” were integrated in the “Basic Properties” were integrated in the Note buttons menu.
        -
      • The only exception here is the Language combo box which can now be found +
      • The only exception here is the Language combo box which can now be found in the status bar (top-right of the screen).
    • -
    • “File” and “Image” tabs +
    • “File” and “Image” tabs
        -
      • The buttons were moved to the right of the note title, as dedicated entries +
      • The buttons were moved to the right of the note title, as dedicated entries in Note buttons.
      • -
      • The info section has been merged into the Note info section of +
      • The info section has been merged into the Note info section of the status bar.
      • -
      +
  • -
  • Edited notes +
  • Edited notes
      -
    • Moved underneath the title, displayed under a collapsible area and the +
    • Moved underneath the title, displayed under a collapsible area and the notes are represented as badges/chips.
    • -
    • Whether the section is expanded or collapsed depends on the “Edited Notes +
    • Whether the section is expanded or collapsed depends on the “Edited Notes ribbon tab will automatically open on day notes” setting from Options → Appearance.
  • -
  • Search definition tab +
  • Search definition tab
      -
    • Moved underneath the title under a collapsible area.
    • -
    • Expanded by default for new searches, collapsed for saved searches.
    • +
    • Moved underneath the title under a collapsible area.
    • +
    • Expanded by default for new searches, collapsed for saved searches.
  • -
  • The Note map is now available in the Note actions menu. +
  • The Note map is now available in the Note actions menu.
      -
    • Instead of opening into a panel in the ribbon, the note map now opens +
    • Instead of opening into a panel in the ribbon, the note map now opens in a side split (similar to the in-app help).
  • -
  • “Note info” tab was moved to a small (i) icon in the status bar.
  • -
  • “Similar notes” tab +
  • “Note info” tab was moved to a small (i) icon in the status bar.
  • +
  • “Similar notes” tab
      -
    • Moved to the status bar, by going to the “Note info” section and pressing +
    • Moved to the status bar, by going to the “Note info” section and pressing the button to show similar notes.
    • -
    • Displayed as a fixed panel, similar to the attributes.
    • +
    • Displayed as a fixed panel, similar to the attributes.
    -
  • -
  • The Collection properties tab were relocated under the note title and - grouped into: -
      -
    • A combo box to quickly switch between views.
    • -
    • Individual settings for the current view in a submenu.
    • -
    -
  • -
  • Some smaller ribbon tabs were converted to badges that appear near the - note title in the breadcrumb section: -
      -
    • Original URL indicator for clipped web pages (#pageUrl).
    • -
    • SQL and script execute buttons.
    • + +
    • The Collection properties tab were relocated under the note title and + grouped into: +
        +
      • A combo box to quickly switch between views.
      • +
      • Individual settings for the current view in a submenu.
      -
    • + +
    • Some smaller ribbon tabs were converted to badges that appear near the + note title in the breadcrumb section: +
        +
      • Original URL indicator for clipped web pages (#pageUrl).
      • +
      • SQL and script execute buttons.
      • +
      +
    @@ -196,13 +192,11 @@ class="image"> the Note buttons area, with the exception of:

      -
    • The Edit button is displayed near the note title, as a badge.
    • -
    • Backlinks is displayed in the status bar. When clicked, the same +
    • The Edit button is displayed near the note title, as a badge.
    • +
    • Backlinks is displayed in the status bar. When clicked, the same list of backlinks is displayed.
    • -
    • Relation map zoom buttons are now part of the relation map itself.
    • -
    • Export image to PNG/SVG are now in the Note actions menu, in the Export as image option.
    • +
    • Relation map zoom buttons are now part of the relation map itself.
    • +
    • Export image to PNG/SVG are now in the Note actions menu, in the Export as image option.

    Changes to the sidebar

    The sidebar (also known as the right pane) also received some important @@ -210,7 +204,7 @@ class="image">

    The previous iteration of the sidebar would appear contextually, depending on whether there are any items to be displayed. This caused occasional content shifts when moving between two panes in a split view. In the new - layout, the sidebar acts more like the Note Tree pane, + layout, the sidebar acts more like the Note Tree pane, remaining visible even if there is nothing to display.

    In order to toggle the sidebar, there is a new button on the top-right side of the screen, near the window buttons (on Windows and Linux).

    diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout/Breadcrumb.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout/Breadcrumb.html index 3d52057db..02b2082a2 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout/Breadcrumb.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout/Breadcrumb.html @@ -8,48 +8,48 @@ displayed in the bottom-left of the screen.

    Layout and Interaction

      -
    • If a note or workspace is hoisted, a badge will appear on the left-most +
    • If a note or workspace is hoisted, a badge will appear on the left-most side.
        -
      • Clicking on the badge will un-hoist the note/workspace.
      • +
      • Clicking on the badge will un-hoist the note/workspace.
    • -
    • The left-most icon represents the root note, or the hoisted note or workspace. +
    • The left-most icon represents the root note, or the hoisted note or workspace.
        -
      • Clicking the icon will jump to the root note.
      • -
      • Right clicking the icon will display a menu that allows opening the note +
      • Clicking the icon will jump to the root note.
      • +
      • Right clicking the icon will display a menu that allows opening the note in a new tab, split, etc.
    • -
    • Each segment shows the title of a note in the current note hierarchy. +
    • Each segment shows the title of a note in the current note hierarchy.
        -
      • Clicking the icon will jump to that note.
      • -
      • Right clicking will open a menu with multiple options such as opening +
      • Clicking the icon will jump to that note.
      • +
      • Right clicking will open a menu with multiple options such as opening the note in a different tab/split/window, hoisting, moving/cloning the note, duplicating as well as changing the color of the note.
    • -
    • Clicking the arrow next to each segment will reveal the child notes of +
    • Clicking the arrow next to each segment will reveal the child notes of the segment on the left.
        -
      • Clicking on an icon will navigate to that particular note.
      • -
      • It's also possible to create a new child note from here.
      • -
      • The menu can optionally hide the archived notes.
      • +
      • Clicking on an icon will navigate to that particular note.
      • +
      • It's also possible to create a new child note from here.
      • +
      • The menu can optionally hide the archived notes.
    • -
    • If the current note is deep within a hierarchy, the segments will collapse +
    • If the current note is deep within a hierarchy, the segments will collapse into a […] button in order not to occupy too much space.
        -
      • Clicking this button will display each collapsed entry as a menu item. +
      • Clicking this button will display each collapsed entry as a menu item. Clicking on it will navigate to that particular note.
    • -
    • Right clicking on an empty space to the right of the breadcrumb (before +
    • Right clicking on an empty space to the right of the breadcrumb (before the other status bar items) will reveal another menu that allows:
        -
      • Toggling whether archived notes are displayed in the breadcrumb and in +
      • Toggling whether archived notes are displayed in the breadcrumb and in the note tree.
      • -
      • Copying the current note path to clipboard.
      • +
      • Copying the current note path to clipboard.
    \ No newline at end of file diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout/Status bar.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout/Status bar.html index 04c50a8e3..120fe309c 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout/Status bar.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Basic Concepts and Features/UI Elements/New Layout/Status bar.html @@ -7,47 +7,45 @@

    On the right side, specific sections will show depending on the type of the current note.

      -
    1. For code notes, the language mode of the note is indicated (e.g. JavaScript, +
    2. For code notes, the language mode of the note is indicated (e.g. JavaScript, plain text), as well as allowing easy switching to another mode.
    3. -
    4. For text notes, the content language is displayed and can be changed, +
    5. For text notes, the content language is displayed and can be changed, thus configuring the spell-check and the right-to-left support.
        -
      1. Note that this applies to the entire note and not the selection, unlike +
      2. Note that this applies to the entire note and not the selection, unlike some text editors.
      -
    6. -
    7. If a note is placed in multiple places in the tree (cloned), the number - of the note paths will be displayed. -
        -
      1. Clicking it will reveal the full list of note paths and a button to place - it somewhere else.
      2. -
      -
    8. -
    9. If a note has attachments, their number will be displayed. -
        -
      1. Clicking on it will reveal the list of attachments in a new tab.
      2. -
      -
    10. -
    11. If a note is linked from other text notes (backlinks), the number of backlinks - will be displayed. -
        -
      1. Clicking on it will show the list of notes that link to this note, as - well as an excerpt of where the note is referenced.
      2. -
      -
    12. + +
    13. If a note is placed in multiple places in the tree (cloned), the number + of the note paths will be displayed. +
        +
      1. Clicking it will reveal the full list of note paths and a button to place + it somewhere else.
      2. +
      +
    14. +
    15. If a note has attachments, their number will be displayed. +
        +
      1. Clicking on it will reveal the list of attachments in a new tab.
      2. +
      +
    16. +
    17. If a note is linked from other text notes (backlinks), the number of backlinks + will be displayed. +
        +
      1. Clicking on it will show the list of notes that link to this note, as + well as an excerpt of where the note is referenced.
      2. +
      +

    Regardless of note type, the following items will always be displayed if there is a note:

      -
    1. Note info, which displays: +
    2. Note info, which displays:
        -
      1. The creation/modification date of the note.
      2. -
      3. The type and MIME of the note.
      4. -
      5. The note ID.
      6. -
      7. An estimation of the note size of the note itself and its children.
      8. -
      9. A button to show Similar notes.
      10. -
      +
    3. The creation/modification date of the note.
    4. +
    5. The type and MIME of the note.
    6. +
    7. The note ID.
    8. +
    9. An estimation of the note size of the note itself and its children.
    10. +
    11. A button to show Similar notes.
    12. +
  • \ No newline at end of file diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Render Note.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Render Note.html index 5e5895b8d..832156f7a 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Render Note.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Note Types/Render Note.html @@ -13,7 +13,7 @@
  • Assign the renderNote relation to point at the previously created code note.
  • -

    Dynamic content

    +

    Legacy scripting using jQuery

    A static HTML is generally not enough for Scripting. The next step is to automatically change parts of the note using JavaScript.

    @@ -24,7 +24,7 @@ The current date & time is <span class="date"></span>
    Now we need to add the script. Create another Code, but this time of JavaScript (frontend) language. Make sure the newly created note is a direct child of the HTML - note created previously; with the following content:

    const $dateEl = api.$container.find(".date");
    +  note created previously; with the following content:

    const $dateEl = api.$container.find(".date");
     $dateEl.text(new Date());

    Now create a render note at any place and set its ~renderNote relation to point to the HTML note. When the render note is accessed it will display:

    @@ -33,6 +33,34 @@ $dateEl.text(new Date());

    The current date & time is Sun Apr 06 2025 15:26:29 GMT+0300 (Eastern European Summer Time)

    +

    Dynamic content using Preact & JSX

    +

    As a more modern alternative to jQuery, it's possible to use Preact & + JSX to render pages. Since JSX is a superset of JavaScript, there's no + need to provide a HTML anymore.

    +

    Here are the steps to creating a simple render note:

    +
      +
    1. +

      Create a note of type Render Note.

      +
    2. +
    3. +

      Create a child Code note + with JSX as the language. +
      As an example, use the following content:

      export default function() {
      +    return (
      +        <>
      +            <p>Hello world.</p>
      +        </>
      +    );
      +}
      +
    4. +
    5. +

      In the parent render note, define a ~renderNote relation pointing + to the newly created child.

      +
    6. +
    7. +

      Refresh the render note and it should display a “Hello world” message.

      +
    8. +

    Refreshing the note

    It's possible to refresh the note via:

      diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Common concepts/Script bundles.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Common concepts/Script bundles.html new file mode 100644 index 000000000..f9d7fab75 --- /dev/null +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Common concepts/Script bundles.html @@ -0,0 +1,46 @@ +

      For both Render Note and + more complicated scripts, it's generally useful to split the code into + multiple Code notes.

      +

      When a script is run, the sub-children of the script being run (or the  + Render Note) are checked for children. If the children are Code notes + of the corresponding type (front-end or backend) as the code being run, + they will be evaluated as well.

      +

      The collection of a script and its child notes is called a bundle. + A child note inside a bundle is called a module.

      +

      As a basic example of dependencies, consider the following note structure:

      +
        +
      • +

        Script with dependency +

        api.log(MyMath.sum(2, 2));
        +
          +
        • +

          MyMath +

          module.exports = {
          +    sum(a, b) {
          +        return a + b;
          +    }
          +};
          +
        • +
        +
      • +
      +

      When Script with dependency is run, it will detect MyMath as + a submodule and provide the result of its module.exports object + into a global object with the same name as the note.

      + +

      Alternative syntax

      +

      Instead of providing an object to module.exports, it's also + possible to add fields individually:

      module.exports.sum = (a, b) => a + b;
      +module.exports.subtract = (a, b) => a - b;
      +

      Ignoring a code script from a bundle

      +

      To ignore a script from being included in a bundle (e.g. if it's unrelated + to the parent script note), apply the #disableInclusion label.

      +

      Sharing a module across multiple bundles

      +

      Modules can be reused across multiple scripts by simply cloning the shared + module between two modules (see Cloning Notes).

      +

      Optionally, a separate note can be used to contain all the different reusable + modules for an easy way to discover them.

      \ No newline at end of file diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets.html index a3c74131e..7617ab9a4 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets.html @@ -1,13 +1,142 @@ -

      It's possible to create custom widget in three possible locations where - you can display your custom content.

      -

      Positions are:

      +

      Custom widgets are a special subset of scripts that render graphical elements + in certain parts of the application. These can be used to add new functionality + to the Trilium application.

      +

      Preact with JSX vs. vanilla jQuery

      +

      In older versions of Trilium, custom widgets were exclusively written + in a combination of jQuery with Trilium's internal widget architecture + (e.g., BasicWidget, NoteContextAwareWidget).

      +

      Starting with v0.101.0, custom widgets can also be written in JSX using + the Preact framework. + Both legacy and Preact widgets have the same capabilities, with a single + difference:

        -
      • left-pane +
      • Preact widgets are content-sized by default whereas legacy widgets need this.contentSized() applied + in the constructor. For more information, see the corresponding section + in Troubleshooting.
      • +
      +

      Wherever possible, widget examples will be both in the legacy and Preact + format.

      +

      Creating a custom widget

      +
        +
      1. Create a Code note.
      2. +
      3. Set the language to: +
          +
        1. JavaScript (frontend) for legacy widgets using jQuery.
        2. +
        3. JSX for Preact widgets. You might need to go to Options → Code to enable + the language first.
        4. +
      4. -
      5. center-pane -
      6. -
      7. note-detail-pane - located within center-pane, - but specific to note (split)
      8. -
      9. right-pane -
      10. -
    \ No newline at end of file +
  • Apply the #widget label.
  • + +

    Getting started with a simple example

    +

    Let's start by creating a widget that shows a message near the content + area. Follow the previous section to create a code note, and use the following + content.

    +

    Legacy version (jQuery)

    class HelloCenterPane extends api.BasicWidget {
    +
    +    constructor() {
    +        super();
    +        this.contentSized();
    +    }
    +
    +    get parentWidget() { return "center-pane" }
    +
    +    doRender() {
    +        this.$widget = $("<span>Center pane</span>");
    +    }
    +    
    +}
    +
    +module.exports = new HelloCenterPane();
    +

    Refresh the application and the widget + should appear underneath the content area.

    +

    Preact version

    import { defineWidget } from "trilium:preact";
    +
    +export default defineWidget({
    +    parent: "center-pane",
    +    render: () => <span>Center pane from Preact.</span>
    +});
    +

    Refresh the application and the widget + should appear underneath the content area.

    +

    Widget location (parent widget)

    +

    A widget can be placed in one of the following sections of the applications:

    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Value for parentWidget + DescriptionSample widgetSpecial requirements
    left-pane + Appears within the same pane that holds the Note Tree.Same as above, with only a different parentWidget.None.
    center-pane + In the content area. If a split is open, the widget will span all of the + splits.See example above.None.
    note-detail-pane + +

    In the content area, inside the note detail area. If a split is open, + the widget will be contained inside the split.

    +

    This is ideal if the widget is note-specific.

    +
    Note context aware widget + +
      +
    • The widget must export a class and not an instance of the class + (e.g. no new) because it needs to be multiplied for each note, + so that splits work correctly.
    • +
    • Since the class is exported instead of an instance, the parentWidget getter + must be static, otherwise the widget is ignored.
    • +
    +
    right-pane + In the Right Sidebar, + as a dedicated section.Right pane widget + +
      +
    • Although not mandatory, it's best to use a RightPanelWidget instead + of a BasicWidget or a NoteContextAwareWidget.
    • +
    +
    +

    To position the widget somewhere else, just change the value passed to get parentWidget() for + legacy widgets or the parent field for Preact. Do note that + some positions such as note-detail-pane and right-pane have + special requirements that need to be accounted for (see the table above).

    +

    Launch bar widgets

    +

    Launch bar widgets are similar to Custom widgets but are specific + to the Launch Bar. + See Launch Bar Widgets for + more information.

    +

    Custom position

    \ No newline at end of file diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/CSS.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/CSS.html index 249da3ad3..481a6d62b 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/CSS.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/CSS.html @@ -1,9 +1,18 @@ -

    In doRender():

    this.cssBlock(`#my-widget {
    +

    Classic widgets

    +

    In doRender():[1] +

    this.cssBlock(`#my-widget {
     	position: absolute;
         bottom: 40px;
         left: 60px;
         z-index: 1;
    -}`)
    -
    -

    Reference: https://trilium.rocks/X7pxYpiu0lgU -

    \ No newline at end of file +}`);
    +

    Preact widgets

    +

    See the dedicated page: CSS.

    +
      +
    1. +

      ^ +

      +

      Reference: https://trilium.rocks/X7pxYpiu0lgU +

      +
    2. +
    \ No newline at end of file diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Note context aware widget.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Note context aware widget.html new file mode 100644 index 000000000..d0da3c335 --- /dev/null +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Note context aware widget.html @@ -0,0 +1,45 @@ +

    Note context-aware widgets are a different type of widget which automatically + react to changes in the current note.

    +

    Important aspects:

    +
      +
    • The widget must export a class and not an instance of the class + (e.g. no new) because it needs to be multiplied for each note, + so that splits work correctly.
    • +
    • Since the class is exported instead of an instance, the parentWidget getter + must be static, otherwise the widget is ignored.
    • +
    +

    Example displaying the current note title

    +

    This is a note context-aware widget that simply displays the name the + current note. 

    +

    Classic example

    class HelloNoteDetail extends api.NoteContextAwareWidget {
    +
    +    constructor() {
    +        super();
    +        this.contentSized();
    +    }
    +
    +    doRender() {
    +        this.$widget = $("<div>");
    +    }
    +
    +    async refreshWithNote(note) {
    +        this.$widget.text("Current note: " + note.title);
    +    }
    +    
    +    static get parentWidget() { return "note-detail-pane" }    
    +    get position() { return 10 }
    +    
    +}
    +
    +module.exports = HelloNoteDetail;
    +

    Preact (v0.101.0+)

    import { defineWidget, useNoteContext, useNoteProperty } from "trilium:preact";
    +
    +export default defineWidget({    
    +    parent: "note-detail-pane",
    +    position: 10,
    +    render: () => {
    +        const { note } = useNoteContext();
    +        const title = useNoteProperty(note, "title");
    +        return <span>Current note JSX: {title}</span>;
    +    }
    +});
    \ No newline at end of file diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget.html index 6c66b572d..31bf6d40d 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget.html @@ -1,23 +1,21 @@

    Key highlights

      -
    • doRender must not be overridden, instead - doRenderBody()has to be overridden. -
        -
      • doRenderBody can optionally be async.
      • -
      +
    • doRender must not be overridden, instead doRenderBody() has + to be overridden. +
        +
      • doRenderBody can optionally be async.
      • +
    • -
    • parentWidget() must be set to “rightPane”.
    • -
    • widgetTitle() getter can optionally be - overriden, otherwise the widget will be displayed as “Untitled widget”.
    • +
    • parentWidget() must be set to “rightPane”.
    • +
    • widgetTitle() getter can optionally be overriden, otherwise + the widget will be displayed as “Untitled widget”.

    Example for new layout

    Title widget

    This is an example of a context-aware widget which displays the title @@ -41,7 +39,8 @@ module.exports = new NoteTitleWidget();

    Clock

    A simple widget which will show the current time, as an example on how - to dynamically change the content of the widget periodically.

    const template = `<div></div>`;
    +  to dynamically change the content of the widget periodically.

    +

    Legacy widget

    const template = `<div></div>`;
     
     class ToDoListWidget extends api.RightPanelWidget {
         
    @@ -60,6 +59,26 @@ class ToDoListWidget extends api.RightPanelWidget {
     }
     
     module.exports = new ToDoListWidget();
    +

    Preact widget

    import { defineWidget, RightPanelWidget, useEffect, useState } from "trilium:preact";
    +
    +export default defineWidget({
    +    parent: "right-pane",    
    +    position: 1,
    +    render() {
    +        const [ time, setTime ] = useState();
    +        useEffect(() => {
    +            const interval = setInterval(() => {
    +                setTime(new Date().toLocaleString());
    +            }, 1000);
    +            return () => clearInterval(interval);
    +        });        
    +        return (
    +            <RightPanelWidget id="clock-jsx" title="Clock (JSX)">
    +                <p>The time is: {time}</p>
    +            </RightPanelWidget>
    +        );
    +    }
    +});

    Example for old layout

    Here's a widget that displays a basic message ("Hi"):

    const template = `<div>Hi</div>`;
     
    @@ -82,14 +101,14 @@ class HelloWorldWidget extends api.RightPanelWidget {
     
     module.exports = new HelloWorldWidget();

    Conditionally changing visibility

    -

    In refreshWithNote:

    const visible = true;	// replace with your own visibility logic
    +

    In refreshWithNote:

    const visible = true;	// replace with your own visibility logic
     this.toggleInt(visible);
     this.triggerCommand("reEvaluateRightPaneVisibility");

    Altering the position within the sidebar

    By default, the sidebar items are displayed in the order they are found - by the application when searching for #widget notes.

    + by the application when searching for #widget notes.

    It is possible to make a widget appear higher or lower up, by adjusting - its position property:

    class MyWidget extends api.RightPanelWidget {
    +  its position property:

    class MyWidget extends api.RightPanelWidget {
     
     +    get position() { return 20 };
             
    diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Troubleshooting.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Troubleshooting.html
    index 16e9286ee..04c18f44b 100644
    --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Troubleshooting.html	
    +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Troubleshooting.html	
    @@ -1,7 +1,7 @@
     

    Why is my widget clipped by other UI elements

    For performance and layout reasons, the size of widgets in Trilium is independent from its children. At CSS level, this means that the widget - container has contain: size applied to it.

    + container has contain: size applied to it.

    This works well if the widget has a fixed size (or based on its parent container), however to make a widget resize to fit its content, apply the following change:

    class MyWidget extends api.RightPanelWidget {
    @@ -12,5 +12,4 @@
     +   }
             
     }
    -

    Alternatively apply contain: none to its - CSS.

    \ No newline at end of file +

    Alternatively apply contain: none to its CSS.

    \ No newline at end of file diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Widget Basics.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Widget Basics.html index 5ed3518e6..57bf28d96 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Widget Basics.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Widget Basics.html @@ -87,17 +87,9 @@ module.exports = new MyWidget();
    } module.exports = new MyWidget();
    -

    parentWidget() can be given the following values:

    -
      -
    • left-pane - This renders the widget on the left side of the - screen where the note tree lives.
    • -
    • center-pane - This renders the widget in the center of the - layout in the same location that notes and splits appear.
    • -
    • note-detail-pane - This renders the widget with the - note in the center pane. This means it can appear multiple times with splits.
    • -
    • right-pane - This renders the widget to the right of any opened - notes.
    • -
    +

    For the list of possible values for parentWidget(), see  + Custom Widgets

    Reload the application one last time. When you click the button, a "Hello World!" message should appear, confirming that your widget is fully functional.

    \ No newline at end of file diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Note Title Widget.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Note Title Widget.html index 6e6da3273..5386d0052 100644 --- a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Note Title Widget.html +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Note Title Widget.html @@ -5,6 +5,7 @@

    This is an example of a note context-aware widget, which reacts to the currently opened note and refreshes automatically as the user navigates through the notes.

    +

    Legacy widget

    In this example, the title of the note is displayed. It works best on the horizontal layout.

    const TPL = `\
     <div style="
    @@ -28,4 +29,19 @@ class NoteTitleWidget extends api.NoteContextAwareWidget {
         }
     }
     
    -module.exports = new NoteTitleWidget();
    \ No newline at end of file +module.exports = new NoteTitleWidget();
    +

    Preact widget (v0.101.0+)

    import { defineLauncherWidget, useActiveNoteContext } from "trilium:preact";
    +
    +export default defineLauncherWidget({
    +    render: () => {
    +        const { note } = useActiveNoteContext();
    +        return <div style={{
    +            display: "flex",
    +            height: "53px",
    +            width: "fit-content",
    +            fontSize: "0.75em",
    +            alignItems: "center",
    +            flexShrink: 0            
    +        }}>{note?.title}</div>;
    +    }
    +});
    \ No newline at end of file diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Preact.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Preact.html new file mode 100644 index 000000000..1a2ce8779 --- /dev/null +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Preact.html @@ -0,0 +1,63 @@ +

    Since v0.101.0, Trilium integrates Preact for front-end scripting, including + support for JSX.

    +

    Preact can be used for:

    +
      +
    • Render Note, where + a JSX code note is used instead of a HTML one.
    • +
    • Custom Widgets, + where JSX can be used to replace the old, jQuery-based mechanism.
    • +
    +

    To get started, the first step is to enable JSX in the list of Code languages. + Go to Options → Code Notes and check the “JSX” language. Afterwards, proceed + with the documentation in either Render Note or  + Custom Widgets, which will both have a section on how to use the new + Preact integration.

    + +

    Import/exports

    +

    When using Preact with JSX, there is a special syntax which provides ES-like + imports. This import syntax makes way for + a more intuitive that doesn't make use of global objects and paves the + way for better auto-completion support that might be introduced in the + future. 

    +

    API imports

    +

    Instead of:

    api.showMessage("Hello");
    +

    the JSX version looks like this:

    import { showMessage } from "trilium:api";
    +showMessage("hello");
    +

    Preact API imports (hooks, components)

    +

    There's a new Script API dedicated + to Preact, which provides shared components that are also used by Trilium + internally as well as hooks, for example.

    import { useState } from "trilium:preact";
    +const [ myState, setMyState ] = useState("Hi");
    +

    Exporting

    +

    JSX notes can export a component for use in Render Note or for Component libraries: 

    export default function() {
    +    return (
    +        <>
    +            <p>Hello world.</p>
    +        </>
    +    );
    +}
    +

    Import/export are not required

    +

    These imports are syntactic sugar meant to replace the usage for the + apiglobal object (see Script API). 

    + +

    Under the hood

    +

    Unlike JavaScript, JSX requires pre-processing to turn it into JavaScript + (just like TypeScript). To do so, Trilium uses Sucrase, + a JavaScript library which processes the JSX to pure JavaScript. The processing + is done each time a script is run (for widgets this happens at every program + startup). If you notice any performance degradation due to long compilation, + consider reporting the issue to us.

    \ No newline at end of file diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Preact/Built-in components.html b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Preact/Built-in components.html new file mode 100644 index 000000000..209519800 --- /dev/null +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Preact/Built-in components.html @@ -0,0 +1,44 @@ +
    + +
    A partial screenshot from the Widget showcase example (see below).
    +
    +

    Trilium comes with its own set of Preact components, some of which are + also available to Custom Widgets and  + Render Note.

    +

    To use these components, simply import them from trilium:preact:

    import { ActionButton, Button, LinkButton } from "trilium:preact";
    +

    and then use them:

    export default function MyRenderNote() {
    +    const onClick = () => showMessage("A button was pressed");
    +    
    +    return (
    +        <>
    +            <h2>Buttons</h2>
    +            <div style={{ display: "flex", gap: "1em", alignItems: "center" }}>
    +                <ActionButton icon="bx bx-rocket" text="Action button" onClick={onClick} />
    +                <Button icon="bx bx-rocket" text="Simple button" onClick={onClick} />
    +                <LinkButton text="Link button" onClick={onClick} />                
    +            </div>
    +        </>
    +    )
    +}
    +

    Widget showcase

    + +

    This is a Render Note example + with JSX that shows most of the built-in components that are accessible + to custom widgets and JSX render notes.

    +

    To use it, simply:

    +
      +
    1. Create a render note.
    2. +
    3. Create a child code note of JSX type with the content of this file:  + Widget showcase +
    4. +
    5. Set the ~renderNote relation of the parent + note to the child note.
    6. +
    7. Refresh the render note to see the results.
    8. +
    \ No newline at end of file diff --git a/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Preact/Built-in components/Widget showcase.jsx b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Preact/Built-in components/Widget showcase.jsx new file mode 100644 index 000000000..6da0b9a5b --- /dev/null +++ b/apps/server/src/assets/doc_notes/en/User Guide/User Guide/Scripting/Frontend Basics/Preact/Built-in components/Widget showcase.jsx @@ -0,0 +1,189 @@ +import { + ActionButton, Button, LinkButton, + Admonition, Collapsible, + FormCheckbox, FormDropdownList, FormFileUploadButton, FormGroup, FormRadioGroup, FormTextArea, + FormTextBox, FormToggle, Slider, RawHtml, LoadingSpinner, Icon, + Dropdown, FormListItem, FormDropdownDivider, FormDropdownSubmenu, + NoteAutocomplete, NoteLink, Modal, + CKEditor, + useEffect, useState +} from "trilium:preact"; +import { showMessage } from "trilium:api"; + +export default function() { + const [ time, setTime ] = useState(); + const lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam accumsan eu odio non gravida. Pellentesque ornare, arcu condimentum molestie dignissim, nibh turpis ultrices elit, eget elementum nunc erat at erat. Maecenas vehicula consectetur elit, nec fermentum elit venenatis eu."; + useEffect(() => { + const interval = setInterval(() => setTime(new Date().toLocaleString()), 1000); + return () => clearInterval(interval); + }, []); + + return ( +
    +

    Widget showcase

    + + + + Admonition
    + {lorem} +
    + + + {lorem} + + + + + + +
    + ); +} + +function Buttons() { + const onClick = () => showMessage("A button was pressed"); + + return ( + <> +

    Buttons

    +
    + +
    + + ) +} + +function FormElements() { + const [ checkboxChecked, setCheckboxChecked ] = useState(false); + const [ dropdownValue, setDropdownValue ] = useState("key-1"); + const [ radioGroupValue, setRadioGroupValue ] = useState("key-1"); + const [ sliderValue, setSliderValue ] = useState(50); + + return ( + <> +

    Form elements

    +
    + + + + + + + + + + + + + + {}} + /> + + + {}} + /> + + + + + + { + const file = files?.[0]; + if (!file) return; + showMessage(`Got file "${file.name}" of size ${file.size} B and type ${file.type}.`); + }} + /> + + + + + + + + + + +
    + + ) +} + +function NoteElements() { + const [ noteId, setNoteId ] = useState(""); + + return ( +
    +

    Note elements

    + + + + + + + {noteId + ? + : Select a note first} + +
    + ); +} + +function ModalSample() { + const [ shown, setShown ] = useState(false); + + return ( + <> +

    Modal

    +
    - `) + `); }); describe("Reference links", () => { @@ -106,7 +107,7 @@ describe("content_renderer", () => { expect(result.content).toStrictEqual(trimIndentation`\

    Test

    - 5863845791835102555.mp4 + 5863845791835102555.mp4  

    `); @@ -170,7 +171,7 @@ describe("content_renderer", () => { const result = getContent(note); expect(result.content).toStrictEqual(trimIndentation`\

    - The quick <strong>brown</strong> fox + The quick <strong>brown</strong> fox

    `); }); diff --git a/apps/server/src/share/content_renderer.ts b/apps/server/src/share/content_renderer.ts index 70d7f2b82..6a6f47432 100644 --- a/apps/server/src/share/content_renderer.ts +++ b/apps/server/src/share/content_renderer.ts @@ -1,24 +1,26 @@ -import { parse, HTMLElement, TextNode, Options } from "node-html-parser"; -import shaca from "./shaca/shaca.js"; -import assetPath, { assetUrlFragment } from "../services/asset_path.js"; -import shareRoot from "./share_root.js"; -import escapeHtml from "escape-html"; -import type SNote from "./shaca/entities/snote.js"; -import BNote from "../becca/entities/bnote.js"; -import type BBranch from "../becca/entities/bbranch.js"; -import { t } from "i18next"; -import SBranch from "./shaca/entities/sbranch.js"; -import options from "../services/options.js"; -import utils, { getResourceDir, isDev, safeExtractMessageAndStackFromError } from "../services/utils.js"; -import ejs from "ejs"; -import log from "../services/log.js"; -import { join } from "path"; -import { readFileSync } from "fs"; +import { sanitizeUrl } from "@braintree/sanitize-url"; import { highlightAuto } from "@triliumnext/highlightjs"; +import ejs from "ejs"; +import escapeHtml from "escape-html"; +import { readFileSync } from "fs"; +import { t } from "i18next"; +import { HTMLElement, Options,parse, TextNode } from "node-html-parser"; +import { join } from "path"; + import becca from "../becca/becca.js"; import BAttachment from '../becca/entities/battachment.js'; +import type BBranch from "../becca/entities/bbranch.js"; +import BNote from "../becca/entities/bnote.js"; +import assetPath, { assetUrlFragment } from "../services/asset_path.js"; +import { generateCss, getIconPacks, MIME_TO_EXTENSION_MAPPINGS, ProcessedIconPack } from "../services/icon_packs.js"; +import log from "../services/log.js"; +import options from "../services/options.js"; +import utils, { getResourceDir, isDev, safeExtractMessageAndStackFromError } from "../services/utils.js"; import SAttachment from "./shaca/entities/sattachment.js"; -import { sanitizeUrl } from "@braintree/sanitize-url"; +import SBranch from "./shaca/entities/sbranch.js"; +import type SNote from "./shaca/entities/snote.js"; +import shaca from "./shaca/shaca.js"; +import shareRoot from "./share_root.js"; const shareAdjustedAssetPath = isDev ? assetPath : `../${assetPath}`; const templateCache: Map = new Map(); @@ -54,7 +56,7 @@ function getSharedSubTreeRoot(note: SNote | BNote | undefined): Subroot { return { note, branch: parentBranch - } + }; } if (parentBranch.parentNoteId === shareRoot.SHARE_ROOT_NOTE_ID) { @@ -67,7 +69,7 @@ function getSharedSubTreeRoot(note: SNote | BNote | undefined): Subroot { return getSharedSubTreeRoot(parentBranch.getParentNote()); } -export function renderNoteForExport(note: BNote, parentBranch: BBranch, basePath: string, ancestors: string[]) { +export function renderNoteForExport(note: BNote, parentBranch: BBranch, basePath: string, ancestors: string[], iconPacks: ProcessedIconPack[]) { const subRoot: Subroot = { branch: parentBranch, note: parentBranch.getNote() @@ -86,7 +88,11 @@ export function renderNoteForExport(note: BNote, parentBranch: BBranch, basePath logoUrl: `${basePath}icon-color.svg`, faviconUrl: `${basePath}favicon.ico`, ancestors, - isStatic: true + isStatic: true, + iconPackCss: iconPacks.map(p => generateCss(p, `${basePath}assets/icon-pack-${p.prefix.toLowerCase()}.${MIME_TO_EXTENSION_MAPPINGS[p.fontMime]}`)) + .filter(Boolean) + .join("\n\n"), + iconPackSupportedPrefixes: iconPacks.map(p => p.prefix) }); } @@ -124,6 +130,7 @@ export function renderNoteContent(note: SNote) { const customLogoId = note.getRelation("shareLogo")?.value; const logoUrl = customLogoId ? `api/images/${customLogoId}/image.png` : `../${assetUrlFragment}/images/icon-color.svg`; + const iconPacks = getIconPacks().filter(p => p.builtin || !!shaca.notes[p.manifestNoteId]); return renderNoteContentInternal(note, { subRoot, @@ -133,7 +140,14 @@ export function renderNoteContent(note: SNote) { logoUrl, ancestors, isStatic: false, - faviconUrl: note.hasRelation("shareFavicon") ? `api/notes/${note.getRelationValue("shareFavicon")}/download` : `../favicon.ico` + faviconUrl: note.hasRelation("shareFavicon") ? `api/notes/${note.getRelationValue("shareFavicon")}/download` : `../favicon.ico`, + iconPackCss: iconPacks.map(p => generateCss(p, p.builtin + ? `/share/assets/fonts/${p.fontAttachmentId}.${MIME_TO_EXTENSION_MAPPINGS[p.fontMime]}` + : `/share/api/attachments/${p.fontAttachmentId}/download` + )) + .filter(Boolean) + .join("\n\n"), + iconPackSupportedPrefixes: iconPacks.map(p => p.prefix) }); } @@ -146,6 +160,8 @@ interface RenderArgs { ancestors: string[]; isStatic: boolean; faviconUrl: string; + iconPackCss: string; + iconPackSupportedPrefixes: string[]; } function renderNoteContentInternal(note: SNote | BNote, renderArgs: RenderArgs) { @@ -281,7 +297,7 @@ function renderText(result: Result, note: SNote | BNote) { if (typeof result.content !== "string") return; const parseOpts: Partial = { blockTextElements: {} - } + }; const document = parse(result.content || "", parseOpts); // Process include notes. @@ -397,7 +413,13 @@ function handleAttachmentLink(linkEl: HTMLElement, href: string, getNote: GetNot function cleanUpReferenceLinks(linkEl: HTMLElement, getNote: GetNoteFunction) { // Note: this method is basically a reimplementation of getReferenceLinkTitleSync from the link service of the client. const href = linkEl.getAttribute("href") ?? ""; - if (linkEl.classList.contains("attachment-link")) return; + + // Handle attachment reference links + if (linkEl.classList.contains("attachment-link")) { + const title = linkEl.innerText; + linkEl.innerHTML = `${utils.escapeHtml(title)}`; + return; + } const noteId = href.split("/").at(-1); const note = noteId ? getNote(noteId) : undefined; diff --git a/apps/server/src/share/shaca/entities/snote.ts b/apps/server/src/share/shaca/entities/snote.ts index 19dbd463e..da72cd419 100644 --- a/apps/server/src/share/shaca/entities/snote.ts +++ b/apps/server/src/share/shaca/entities/snote.ts @@ -1,15 +1,14 @@ -"use strict"; - -import sql from "../../sql.js"; -import utils from "../../../services/utils.js"; -import AbstractShacaEntity from "./abstract_shaca_entity.js"; import escape from "escape-html"; + +import { NOTE_TYPE_ICONS } from "../../../becca/entities/bnote.js"; import type { Blob } from "../../../services/blob-interface.js"; +import utils from "../../../services/utils.js"; +import sql from "../../sql.js"; +import AbstractShacaEntity from "./abstract_shaca_entity.js"; +import type { SNoteRow } from "./rows.js"; import type SAttachment from "./sattachment.js"; import type SAttribute from "./sattribute.js"; import type SBranch from "./sbranch.js"; -import type { SNoteRow } from "./rows.js"; -import { NOTE_TYPE_ICONS } from "../../../becca/entities/bnote.js"; const LABEL = "label"; const RELATION = "relation"; @@ -101,18 +100,16 @@ class SNote extends AbstractShacaEntity { if (!row) { if (silentNotFoundError) { return undefined; - } else { - throw new Error(`Cannot find note content for note '${this.noteId}', blob '${this.blobId}'`); } + throw new Error(`Cannot find note content for note '${this.noteId}', blob '${this.blobId}'`); } const content = row.content; if (this.hasStringContent()) { return content === null ? "" : content.toString("utf-8"); - } else { - return content; } + return content; } /** @returns true if the note has string content (not binary) */ @@ -137,9 +134,8 @@ class SNote extends AbstractShacaEntity { return attributeCache.filter((attr) => attr.type === type && !isCredentials(attr)); } else if (name) { return attributeCache.filter((attr) => attr.name === name && !isCredentials(attr)); - } else { - return attributeCache.filter((attr) => !isCredentials(attr)); } + return attributeCache.filter((attr) => !isCredentials(attr)); } getCredentials() { @@ -460,9 +456,8 @@ class SNote extends AbstractShacaEntity { return this.ownedAttributes.filter((attr) => attr.type === type); } else if (name) { return this.ownedAttributes.filter((attr) => attr.name === name); - } else { - return this.ownedAttributes.slice(); } + return this.ownedAttributes.slice(); } /** @@ -532,8 +527,17 @@ class SNote extends AbstractShacaEntity { }; } - getIcon() { - const iconClassLabels = this.getLabels("iconClass"); + getIcon(filterByPrefix: string[] = []) { + return `tn-icon ${this.#getIconInternal(filterByPrefix)}`; + } + + #getIconInternal(filterByPrefix: string[] = []) { + const iconClassLabels = this.getLabels("iconClass").filter(label => { + if (filterByPrefix.length === 0) { + return true; + } + return filterByPrefix.some(prefix => label.value.startsWith(prefix)); + }); if (iconClassLabels && iconClassLabels.length > 0) { return iconClassLabels[0].value; @@ -545,14 +549,12 @@ class SNote extends AbstractShacaEntity { } else if (this.type === "text") { if (this.isFolder()) { return "bx bx-folder"; - } else { - return "bx bx-note"; } + return "bx bx-note"; } else if (this.type === "code" && this.mime.startsWith("text/x-sql")) { return "bx bx-data"; - } else { - return NOTE_TYPE_ICONS[this.type]; } + return NOTE_TYPE_ICONS[this.type]; } isFolder() { diff --git a/apps/server/src/test/becca_easy_mocking.ts b/apps/server/src/test/becca_easy_mocking.ts index 1fe4cfdc0..d809baa7f 100644 --- a/apps/server/src/test/becca_easy_mocking.ts +++ b/apps/server/src/test/becca_easy_mocking.ts @@ -1,8 +1,10 @@ -import utils from "../services/utils.js"; -import BNote from "../becca/entities/bnote.js"; +import { NoteType } from "@triliumnext/commons"; + +import BAttachment from "../becca/entities/battachment.js"; import BAttribute from "../becca/entities/battribute.js"; import BBranch from "../becca/entities/bbranch.js"; -import { NoteType } from "@triliumnext/commons"; +import BNote from "../becca/entities/bnote.js"; +import utils, { randomString } from "../services/utils.js"; type AttributeDefinitions = { [key in `#${string}`]: string; }; type RelationDefinitions = { [key in `~${string}`]: string; }; @@ -12,7 +14,13 @@ interface NoteDefinition extends AttributeDefinitions, RelationDefinitions { title?: string; content?: string; type?: NoteType; + mime?: string; children?: NoteDefinition[]; + attachments?: { + title: string; + role: string; + mime: string; + }[]; } /** @@ -45,13 +53,13 @@ export function buildNote(noteDef: NoteDefinition) { noteId: noteDef.id ?? utils.randomString(12), title: noteDef.title ?? "New note", type: noteDef.type ?? "text", - mime: "text/html", + mime: noteDef.mime ?? "text/html", isProtected: false, blobId: "" }); // Handle content. - if (noteDef.content) { + if (noteDef.content !== undefined) { note.getContent = () => noteDef.content!; } @@ -104,5 +112,23 @@ export function buildNote(noteDef: NoteDefinition) { position++; } + + // Handle attachments. + if (noteDef.attachments) { + const allAttachments: BAttachment[] = []; + for (const { title, role, mime } of noteDef.attachments) { + const attachment = new BAttachment({ + attachmentId: randomString(10), + ownerId: note.noteId, + title, + role, + mime + }); + allAttachments.push(attachment); + } + + note.getAttachmentsByRole = (role) => allAttachments.filter(a => a.role === role); + } + return note; } diff --git a/apps/server/tsconfig.app.json b/apps/server/tsconfig.app.json index eb7f102aa..79dd0b770 100644 --- a/apps/server/tsconfig.app.json +++ b/apps/server/tsconfig.app.json @@ -14,6 +14,7 @@ }, "include": [ "src/**/*.ts", + "src/**/*.json", "package.json" ], "exclude": [ diff --git a/apps/server/tsconfig.spec.json b/apps/server/tsconfig.spec.json index 4f8607e4b..b3905c4f7 100644 --- a/apps/server/tsconfig.spec.json +++ b/apps/server/tsconfig.spec.json @@ -28,6 +28,7 @@ "src/**/*.spec.jsx", "src/**/*.d.ts", "src/**/*.ts", + "src/**/*.json", "package.json" ] } diff --git a/apps/website/package.json b/apps/website/package.json index 46e6f61d6..2961396d3 100644 --- a/apps/website/package.json +++ b/apps/website/package.json @@ -11,7 +11,7 @@ "dependencies": { "i18next": "25.7.3", "i18next-http-backend": "3.0.2", - "preact": "10.28.0", + "preact": "10.28.1", "preact-iso": "2.11.1", "preact-render-to-string": "6.6.4", "react-i18next": "16.5.0" diff --git a/apps/website/src/translations/ar/translation.json b/apps/website/src/translations/ar/translation.json index c3234bb99..d367a27d8 100644 --- a/apps/website/src/translations/ar/translation.json +++ b/apps/website/src/translations/ar/translation.json @@ -20,13 +20,19 @@ "hero_section": { "github": "GitHub", "get_started": "ابدأ الان", - "dockerhub": "مستودع Docker" + "dockerhub": "مستودع Docker", + "title": "رتب أفكارك. ابنِ قاعدة معرفتك الشخصية.", + "subtitle": "تريليوم هو حل مفتوح المصدر لتدوين الملاحظات وتنظيم قاعدة المعرفة الشخصية. استخدمه محليًا على جهاز الكمبيوتر الخاص بك، أو قم بمزامنته مع خادمك المستضاف ذاتيًا للاحتفاظ بملاحظاتك أينما كنت.", + "screenshot_alt": "لقطة شاشة لتطبيق Trilium Notes لسطح المكتب" }, "organization_benefits": { "title": "تنظيم", "note_structure_title": "هيكيلية الملاحظة", "hoisting_title": "مساحات العمل والتركيز على الملاحظة", - "attributes_title": "العلاقات وجداول الملاحظة" + "attributes_title": "العلاقات وجداول الملاحظة", + "note_structure_description": "يمكن تنظيم الملاحظات بشكل هرمي. لا حاجة للمجلدات، إذ يمكن أن تحتوي كل ملاحظة على ملاحظات فرعية. ويمكن إضافة الملاحظة الواحدة في عدة مواضع ضمن التسلسل الهرمي.", + "attributes_description": "استخدم العلاقات بين الملاحظات أو أضف تصنيفات لتسهيل عملية التصنيف. استخدم السمات المُروَّجة لإدخال معلومات مُهيكلة يمكن استخدامها في الجداول واللوحات.", + "hoisting_description": "يمكنك بسهولة فصل ملاحظاتك الشخصية وملاحظات العمل عن طريق تجميعها ضمن مساحة عمل، مما يركز شجرة الملاحظات الخاصة بك لعرض مجموعة محددة من الملاحظات فقط." }, "productivity_benefits": { "sync_title": "‎المزامنة", diff --git a/apps/website/src/translations/pt-BR/translation.json b/apps/website/src/translations/pt-BR/translation.json index d803b7a9d..54325686b 100644 --- a/apps/website/src/translations/pt-BR/translation.json +++ b/apps/website/src/translations/pt-BR/translation.json @@ -1,9 +1,200 @@ { "get-started": { - "title": "Iniciar", - "desktop_title": "Baixe a aplicação para desktop (v{{version}})", + "title": "Primeiros passos", + "desktop_title": "Baixar o aplicativo para desktop (v{{version}})", "architecture": "Arquitetura:", - "older_releases": "Veja os lançamentos anteriores", - "server_title": "Configure um servidor para acessar em múltiplos dispositivos" + "older_releases": "Ver versões anteriores", + "server_title": "Configurar um servidor para acessar em vários dispositivos" + }, + "hero_section": { + "title": "Organize seus pensamentos. Crie sua base de conhecimento pessoal.", + "subtitle": "Trilium é uma solução de código aberto para fazer anotações e organizar uma base de conhecimento pessoal. Use localmente no seu desktop ou sincronize com seu servidor auto-hospedado para manter suas notas onde quer que você vá.", + "get_started": "Primeiros passos", + "github": "GitHub", + "dockerhub": "Docker Hub", + "screenshot_alt": "Captura de tela do aplicativo Trilium Notes para desktop" + }, + "organization_benefits": { + "title": "Organização", + "note_structure_title": "Estrutura de notas", + "note_structure_description": "As notas podem ser organizadas hierarquicamente. Não há necessidade de pastas, já que cada nota pode conter subnotas. Uma mesma nota pode ser adicionada em vários lugares na hierarquia.", + "attributes_title": "Rótulos e relacionamentos das notas", + "attributes_description": "Use relações entre notas ou adicione rótulos para facilitar a categorização. Use atributos promovidos para inserir informações estruturadas que podem ser usadas em tabelas e quadros.", + "hoisting_title": "Espaços de trabalho e hoisting", + "hoisting_description": "Separe facilmente suas notas pessoais e de trabalho agrupando-as em um espaço de trabalho, que foca sua árvore de notas para exibir apenas um conjunto específico de notas." + }, + "productivity_benefits": { + "title": "Produtividade e segurança", + "revisions_title": "Revisões de notas", + "revisions_content": "As notas são salvas periodicamente em segundo plano, e as revisões podem ser usadas para revisar ou desfazer alterações acidentais. Revisões também podem ser criadas sob demanda.", + "sync_title": "Sincronização", + "sync_content": "Use uma instância auto-hospedada ou na nuvem para sincronizar facilmente suas notas entre vários dispositivos e acessá-las no celular usando um PWA.", + "protected_notes_title": "Notas protegidas", + "protected_notes_content": "Proteja informações pessoais sensíveis criptografando as notas e bloqueando-as com uma sessão protegida por senha.", + "jump_to_title": "Busca rápida e comandos", + "jump_to_content": "Vá rapidamente para notas ou comandos da interface em toda a hierarquia pesquisando pelo título, com correspondência aproximada para lidar com erros de digitação ou pequenas diferenças.", + "search_title": "Busca poderosa", + "search_content": "Ou pesquise texto dentro das notas e refine a busca filtrando pela nota pai ou pela profundidade.", + "web_clipper_title": "Web Clipper", + "web_clipper_content": "Capture páginas da web (ou capturas de tela) e insira-as diretamente no Trilium usando a extensão de navegador do Web Clipper." + }, + "note_types": { + "title": "Várias formas de representar suas informações", + "text_title": "Notas de texto", + "text_description": "As notas são editadas usando um editor visual (WYSIWYG), com suporte a tabelas, imagens, expressões matemáticas e blocos de código com realce de sintaxe. Formate rapidamente o texto usando sintaxe semelhante ao Markdown ou usando comandos de barra.", + "code_title": "Notas de código", + "code_description": "Amostras grandes de código-fonte ou scripts usam um editor dedicado, com realce de sintaxe para muitas linguagens de programação e diversos temas de cores.", + "file_title": "Notas de arquivo", + "file_description": "Incorpore arquivos multimídia como PDFs, imagens e vídeos, com uma visualização dentro do aplicativo.", + "canvas_title": "Canvas", + "canvas_description": "Organize formas, imagens e texto em um canvas infinito, usando a mesma tecnologia por trás do excalidraw.com. Ideal para diagramas, esboços e planejamento visual.", + "mermaid_title": "Diagramas Mermaid", + "mermaid_description": "Crie diagramas como fluxogramas, diagramas de classe e de sequência, gráficos de Gantt e muitos outros, usando a sintaxe Mermaid.", + "mindmap_title": "Mapa mental", + "mindmap_description": "Organize seus pensamentos de forma visual ou faça uma sessão de brainstorming.", + "others_list": "e outros: <0>mapa de notas, <1>mapa de relações, <2>buscas salvas, <3>renderizar nota, e <4>visualizações web." + }, + "extensibility_benefits": { + "title": "Compartilhamento e extensibilidade", + "import_export_title": "Importar/exportar", + "import_export_description": "Interaja facilmente com outros aplicativos usando os formatos Markdown, ENEX e OML.", + "share_title": "Compartilhe notas na web", + "share_description": "Se você tiver um servidor, ele pode ser usado para compartilhar um subconjunto das suas notas com outras pessoas.", + "scripting_title": "Scripts avançados", + "scripting_description": "Crie suas próprias integrações no Trilium com widgets personalizados ou lógica do lado do servidor.", + "api_title": "REST API", + "api_description": "Interaja com o Trilium programaticamente usando sua API REST integrada." + }, + "collections": { + "title": "Coleções", + "calendar_title": "Calendário", + "calendar_description": "Organize seus eventos pessoais ou profissionais usando um calendário, com suporte a eventos de dia inteiro e de múltiplos dias. Veja seus eventos rapidamente nas visualizações de semana, mês e ano. Interação simples para adicionar eventos ou arrastá-los.", + "table_title": "Tabela", + "table_description": "Exiba e edite informações sobre notas em uma estrutura tabular, com vários tipos de coluna, como texto, número, caixas de seleção, data e hora, links e cores, além de suporte a relações. Opcionalmente, exiba as notas dentro de uma hierarquia em árvore na tabela.", + "board_title": "Quadro Kanban", + "board_description": "Organize suas tarefas ou o status do projeto em um quadro Kanban, com uma forma simples de criar novos itens e colunas e alterar o status arrastando-os pelo quadro.", + "geomap_title": "Geomapa", + "geomap_description": "Planeje suas férias ou marque seus pontos de interesse diretamente em um mapa geográfico usando marcadores personalizáveis. Exiba trilhas GPX gravadas para acompanhar itinerários.", + "presentation_title": "Apresentação", + "presentation_description": "Organize informações em slides e apresente em tela cheia com transições suaves. Os slides também podem ser exportados para PDF para facilitar o compartilhamento." + }, + "faq": { + "title": "Perguntas frequentes", + "mobile_question": "Existe um aplicativo móvel?", + "mobile_answer": "Atualmente não existe um aplicativo móvel oficial. No entanto, se você tiver uma instância de servidor, pode acessá-lo usando um navegador e até instalá-lo como um PWA. Para Android, existe um aplicativo não oficial chamado TriliumDroid que inclusive funciona offline (assim como um cliente de desktop).", + "database_question": "Onde os dados são armazenados?", + "database_answer": "Todas as suas notas serão armazenadas em um banco de dados SQLite em uma pasta do aplicativo. O motivo de o Trilium usar um banco de dados em vez de arquivos de texto simples é tanto desempenho quanto o fato de que alguns recursos seriam muito mais difíceis de implementar, como clones (a mesma nota em vários lugares da árvore). Para encontrar a pasta do aplicativo, basta ir até a janela Sobre.", + "server_question": "Eu preciso de um servidor para usar o Trilium?", + "server_answer": "Não. O servidor permite acesso via navegador e gerencia a sincronização se você tiver vários dispositivos. Para começar, basta baixar o aplicativo para desktop e começar a usá-lo.", + "scaling_question": "Quão bem o aplicativo escala com uma grande quantidade de notas?", + "scaling_answer": "Dependendo do uso, o aplicativo deve ser capaz de lidar com pelo menos 100.000 notas sem problemas. Observe que o processo de sincronização às vezes pode falhar ao enviar muitos arquivos grandes (1 GB por arquivo), já que o Trilium é mais uma aplicação de base de conhecimento do que um armazenamento de arquivos (como o NextCloud, por exemplo).", + "network_share_question": "Posso compartilhar meu banco de dados em uma unidade de rede?", + "network_share_answer": "Não. Em geral, não é uma boa ideia compartilhar um banco de dados SQLite em uma unidade de rede. Embora às vezes possa funcionar, há chances de o banco de dados ser corrompido devido a bloqueios de arquivo imperfeitos na rede.", + "security_question": "Como meus dados são protegidos?", + "security_answer": "Por padrão, as notas não são criptografadas e podem ser lidas diretamente do banco de dados. Depois que uma nota é marcada como criptografada, ela é criptografada usando AES-128-CBC." + }, + "final_cta": { + "title": "Pronto para começar com o Trilium Notes?", + "description": "Crie sua base de conhecimento pessoal com recursos poderosos e privacidade total.", + "get_started": "Primeiros passos" + }, + "components": { + "link_learn_more": "Saiba mais..." + }, + "download_now": { + "text": "Baixar agora ", + "platform_big": "v{{version}} para {{platform}}", + "platform_small": "para {{platform}}", + "linux_big": "v{{version}} para Linux", + "linux_small": "para Linux", + "more_platforms": "Mais plataformas e configuração de servidor" + }, + "header": { + "get-started": "Primeiros passos", + "documentation": "Documentação", + "support-us": "Apoie-nos" + }, + "footer": { + "copyright_and_the": " e a ", + "copyright_community": "comunidade" + }, + "social_buttons": { + "github": "GitHub", + "github_discussions": "Discussões no GitHub", + "matrix": "Matrix", + "reddit": "Reddit" + }, + "support_us": { + "title": "Apoie-nos", + "financial_donations_title": "Doações financeiras", + "financial_donations_description": "O Trilium é desenvolvido e mantido com centenas de horas de trabalho. Seu apoio mantém o projeto de código aberto, melhora recursos e cobre custos como hospedagem.", + "financial_donations_cta": "Considere apoiar o principal desenvolvedor (eliandoran) do aplicativo por meio de:", + "github_sponsors": "GitHub Sponsors", + "paypal": "PayPal", + "buy_me_a_coffee": "Buy Me A Coffee" + }, + "contribute": { + "title": "Outras formas de contribuir", + "way_translate": "Traduza o aplicativo para o seu idioma nativo via Weblate.", + "way_community": "Interaja com a comunidade em GitHub Discussions ou no Matrix.", + "way_reports": "Reporte bugs via GitHub issues.", + "way_document": "Melhore a documentação informando lacunas ou contribuindo com guias, FAQs ou tutoriais.", + "way_market": "Divulgue: compartilhe o Trilium Notes com amigos ou em blogs e redes sociais." + }, + "404": { + "title": "404: Não encontrado", + "description": "A página que você procurava não foi encontrada. Talvez tenha sido excluída ou a URL esteja incorreta." + }, + "download_helper_desktop_windows": { + "title_x64": "Windows 64 bits", + "title_arm64": "Windows no ARM", + "description_x64": "Compatível com dispositivos Intel ou AMD executando Windows 10 e 11.", + "description_arm64": "Compatível com dispositivos ARM (ex.: com Qualcomm Snapdragon).", + "quick_start": "Para instalar via Winget:", + "download_exe": "Baixar instalador (.exe)", + "download_zip": "Portátil (.zip)", + "download_scoop": "Scoop" + }, + "download_helper_desktop_linux": { + "title_x64": "Linux 64 bits", + "title_arm64": "Linux no ARM", + "description_x64": "Para a maioria das distribuições Linux, compatível com a arquitetura x86_64.", + "description_arm64": "Para distribuições Linux baseadas em ARM, compatível com a arquitetura aarch64.", + "quick_start": "Selecione um formato de pacote apropriado, dependendo da sua distribuição:", + "download_deb": ".deb", + "download_rpm": ".rpm", + "download_flatpak": ".flatpak", + "download_zip": "Portátil (.zip)", + "download_nixpkgs": "nixpkgs", + "download_aur": "AUR" + }, + "download_helper_desktop_macos": { + "title_x64": "macOS para Intel", + "title_arm64": "macOS para Apple Silicon", + "description_x64": "Para Macs baseados em Intel executando macOS Monterey ou posterior.", + "description_arm64": "Para Macs com Apple Silicon, como os com chips M1 e M2.", + "quick_start": "Para instalar via Homebrew:", + "download_dmg": "Baixar instalador (.dmg)", + "download_homebrew_cask": "Homebrew Cask", + "download_zip": "Portátil (.zip)" + }, + "download_helper_server_docker": { + "title": "Auto-hospedado usando Docker", + "description": "Implante facilmente no Windows, Linux ou macOS usando um contêiner Docker.", + "download_dockerhub": "Docker Hub", + "download_ghcr": "ghcr.io" + }, + "download_helper_server_linux": { + "title": "Auto-hospedado no Linux", + "description": "Implante o Trilium Notes no seu próprio servidor ou VPS, compatível com a maioria das distribuições.", + "download_tar_x64": "x64 (.tar.xz)", + "download_tar_arm64": "ARM (.tar.xz)", + "download_nixos": "Módulo NixOS" + }, + "download_helper_server_hosted": { + "title": "Hospedagem paga", + "description": "Trilium Notes hospedado no PikaPods, um serviço pago para facilitar o acesso e o gerenciamento. Não é diretamente afiliado à equipe do Trilium.", + "download_pikapod": "Configurar no PikaPods", + "download_triliumcc": "Ou veja trilium.cc" } } diff --git a/docs/Developer Guide/!!!meta.json b/docs/Developer Guide/!!!meta.json index ce94eeb8b..1b5c0c10e 100644 --- a/docs/Developer Guide/!!!meta.json +++ b/docs/Developer Guide/!!!meta.json @@ -1,6 +1,6 @@ { "formatVersion": 2, - "appVersion": "0.100.0", + "appVersion": "0.101.1", "files": [ { "isClone": false, diff --git a/docs/Developer Guide/Developer Guide/Documentation.md b/docs/Developer Guide/Developer Guide/Documentation.md index f7e5e45df..b09c555e3 100644 --- a/docs/Developer Guide/Developer Guide/Documentation.md +++ b/docs/Developer Guide/Developer Guide/Documentation.md @@ -1,5 +1,5 @@ # Documentation -There are multiple types of documentation for Trilium: +There are multiple types of documentation for Trilium: * The _User Guide_ represents the user-facing documentation. This documentation can be browsed by users directly from within Trilium, by pressing F1. * The _Developer's Guide_ represents a set of Markdown documents that present the internals of Trilium, for developers. diff --git a/docs/README-ar.md b/docs/README-ar.md index dd17e41b1..c92fc73ec 100644 --- a/docs/README-ar.md +++ b/docs/README-ar.md @@ -11,14 +11,14 @@ # ملاحظات تريليوم -![GitHub Sponsors](https://img.shields.io/github/sponsors/eliandoran) -![LiberaPay patrons](https://img.shields.io/liberapay/patrons/ElianDoran)\ -![Docker Pulls](https://img.shields.io/docker/pulls/triliumnext/trilium) -![GitHub Downloads (all assets, all -releases)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ +![رعاة GitHub](https://img.shields.io/github/sponsors/eliandoran) ![داعمو +LiberaPay](https://img.shields.io/liberapay/patrons/ElianDoran)\ +![عمليات سحب Docker](https://img.shields.io/docker/pulls/triliumnext/trilium) +![تنزيلات GitHub (جميع الأصول، جميع +الإصدارات)](https://img.shields.io/github/downloads/triliumnext/trilium/total)\ [![RelativeCI](https://badges.relative-ci.com/badges/Di5q7dz9daNDZ9UXi0Bp?branch=develop)](https://app.relative-ci.com/projects/Di5q7dz9daNDZ9UXi0Bp) -[![Translation -status](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) +[![حالة +الترجمة](https://hosted.weblate.org/widget/trilium/svg-badge.svg)](https://hosted.weblate.org/engage/trilium/) @@ -38,22 +38,20 @@ script)](./README-ZH_TW.md) | [English](../README.md) | [French](./README-fr.md) ## ⬇️ تنزيل - [النسخة الأخيرة](https://github.com/TriliumNext/Trilium/releases/latest) – نسخة مستقرة، محبذة لأكثر المستخدمين. -- [Nightly build](https://github.com/TriliumNext/Trilium/releases/tag/nightly) – - unstable development version, updated daily with the latest features and - fixes. +- [الإصدار الليلي](https://github.com/TriliumNext/Trilium/releases/tag/nightly) + – إصدار تطوير غير مستقر، يتم تحديثه يوميًا بأحدث الميزات والإصلاحات. ## 📚توثيق -**Visit our comprehensive documentation at +**يمكنكم الاطلاع على وثائقنا الشاملة على الرابط التالي: [docs.triliumnotes.org](https://docs.triliumnotes.org/)** يتوفر التوثيق لدينا بصيغ متعددة: -- **Online Documentation**: Browse the full documentation at +- **الوثائق الإلكترونية**: تصفح الوثائق الكاملة على [docs.triliumnotes.org](https://docs.triliumnotes.org/) -- **In-App Help**: Press `F1` within Trilium to access the same documentation - directly in the application -- **GitHub**: Navigate through the [User Guide](./User%20Guide/User%20Guide/) in - this repository +- **المساعدة داخل التطبيق**: اضغط على مفتاح `F1` داخل تطبيق Trilium للوصول إلى + نفس الوثائق مباشرةً داخل التطبيق +- **GitHub**: تصفح [دليل المستخدم](./User%20Guide/User%20Guide/) في هذا المستودع ### روابط سريعة - [دليل البدء السريع](https://docs.triliumnotes.org/) @@ -64,30 +62,30 @@ script)](./README-ZH_TW.md) | [English](../README.md) | [French](./README-fr.md) للملاحظات](https://docs.triliumnotes.org/user-guide/setup/upgrading) - [مفاهيم ومميزات اساسية](https://docs.triliumnotes.org/user-guide/concepts/notes) -- [Patterns of Personal Knowledge - Base](https://docs.triliumnotes.org/user-guide/misc/patterns-of-personal-knowledge) +- [أنماط قاعدة المعرفة + الشخصية](https://docs.triliumnotes.org/user-guide/misc/patterns-of-personal-knowledge) ## 🎁الميزات -* Notes can be arranged into arbitrarily deep tree. Single note can be placed - into multiple places in the tree (see - [cloning](https://docs.triliumnotes.org/user-guide/concepts/notes/cloning)) -* Rich WYSIWYG note editor including e.g. tables, images and - [math](https://docs.triliumnotes.org/user-guide/note-types/text) with markdown - [autoformat](https://docs.triliumnotes.org/user-guide/note-types/text/markdown-formatting) -* Support for editing [notes with source - code](https://docs.triliumnotes.org/user-guide/note-types/code), including - syntax highlighting -* Fast and easy [navigation between - notes](https://docs.triliumnotes.org/user-guide/concepts/navigation/note-navigation), - full text search and [note - hoisting](https://docs.triliumnotes.org/user-guide/concepts/navigation/note-hoisting) -* Seamless [note - versioning](https://docs.triliumnotes.org/user-guide/concepts/notes/note-revisions) -* Note - [attributes](https://docs.triliumnotes.org/user-guide/advanced-usage/attributes) - can be used for note organization, querying and advanced - [scripting](https://docs.triliumnotes.org/user-guide/scripts) +* يمكن ترتيب النوتات الموسيقية في شجرة ذات عمق غير محدود. ويمكن وضع نوتة واحدة + في أماكن متعددة في الشجرة (انظر + [الاستنساخ](https://docs.triliumnotes.org/user-guide/concepts/notes/cloning)) +* محرر ملاحظات WYSIWYG غني يتضمن على سبيل المثال الجداول والصور + و[الرياضيات](https://docs.triliumnotes.org/user-guide/note-types/text) مع + تنسيق تلقائي لـ Markdown[2] +* دعم تحرير [الملاحظات التي تحتوي على شفرة + المصدر](https://docs.triliumnotes.org/user-guide/note-types/code)، بما في ذلك + تمييز بناء الجملة +* التنقل السريع والسهل بين الملاحظات + (https://docs.triliumnotes.org/user-guide/concepts/navigation/note-navigation)، + والبحث في النص الكامل، ورفع الملاحظات + (https://docs.triliumnotes.org/user-guide/concepts/navigation/note-hoisting) +* سلس [ملاحظة حول إصدار + النظام](https://docs.triliumnotes.org/user-guide/concepts/notes/note-revisions) +* يمكن استخدام + [السمات](https://docs.triliumnotes.org/user-guide/advanced-usage/attributes) + لتنظيم الملاحظات والاستعلام عنها و[البرمجة + النصية](https://docs.triliumnotes.org/user-guide/scripts) المتقدمة * UI available in English, German, Spanish, French, Romanian, and Chinese (simplified and traditional) * Direct [OpenID and TOTP diff --git a/docs/README-pt_BR.md b/docs/README-pt_BR.md index 3a7661078..484b0bac8 100644 --- a/docs/README-pt_BR.md +++ b/docs/README-pt_BR.md @@ -40,23 +40,23 @@ conhecimento pessoal. - [Último lançamento](https://github.com/TriliumNext/Trilium/releases/latest) - versão estável, recomendada para a maioria dos usuários. - [Nightly build](https://github.com/TriliumNext/Trilium/releases/tag/nightly) – - unstable development version, updated daily with the latest features and - fixes. + versão de desenvolvimento instável, atualizada diariamente com os recursos e + correções mais recentes. ## 📚 Documentação -**Visit our comprehensive documentation at +**Visite nossa documentação completa em [docs.triliumnotes.org](https://docs.triliumnotes.org/)** -Our documentation is available in multiple formats: -- **Online Documentation**: Browse the full documentation at +Nossa documentação está disponível em vários formatos: +- **Documentação online:** Navegue pela documentação completa em [docs.triliumnotes.org](https://docs.triliumnotes.org/) -- **In-App Help**: Press `F1` within Trilium to access the same documentation - directly in the application -- **GitHub**: Navigate through the [User Guide](./User%20Guide/User%20Guide/) in - this repository +- **Ajuda no aplicativo**: Pressione `F1` dentro do Trilium para acessar a mesma + documentação diretamente no aplicativo +- **GitHub**: Navegue pelo [User Guide](./User%20Guide/User%20Guide/) neste + repositório -### Quick Links +### Links rápidos - [Getting Started Guide](https://docs.triliumnotes.org/) - [Installation Instructions](https://docs.triliumnotes.org/user-guide/setup) - [Docker diff --git a/docs/Release Notes/!!!meta.json b/docs/Release Notes/!!!meta.json index 0f4246575..77fb4118a 100644 --- a/docs/Release Notes/!!!meta.json +++ b/docs/Release Notes/!!!meta.json @@ -1,6 +1,6 @@ { "formatVersion": 2, - "appVersion": "0.100.0", + "appVersion": "0.101.1", "files": [ { "isClone": false, @@ -61,6 +61,58 @@ "attachments": [], "dirFileName": "Release Notes", "children": [ + { + "isClone": false, + "noteId": "AgUcrU9nFXuW", + "notePath": [ + "hD3V4hiu2VW4", + "AgUcrU9nFXuW" + ], + "title": "v0.101.1", + "notePosition": 10, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "template", + "value": "wyurrlcDl416", + "isInheritable": false, + "position": 60 + } + ], + "format": "markdown", + "dataFileName": "v0.101.1.md", + "attachments": [] + }, + { + "isClone": false, + "noteId": "uYwlZ594eyJu", + "notePath": [ + "hD3V4hiu2VW4", + "uYwlZ594eyJu" + ], + "title": "v0.101.0", + "notePosition": 20, + "prefix": null, + "isExpanded": false, + "type": "text", + "mime": "text/html", + "attributes": [ + { + "type": "relation", + "name": "template", + "value": "wyurrlcDl416", + "isInheritable": false, + "position": 60 + } + ], + "format": "markdown", + "dataFileName": "v0.101.0.md", + "attachments": [] + }, { "isClone": false, "noteId": "iPGKEk7pwJXK", @@ -69,7 +121,7 @@ "iPGKEk7pwJXK" ], "title": "v0.100.0", - "notePosition": 10, + "notePosition": 30, "prefix": null, "isExpanded": false, "type": "text", @@ -95,7 +147,7 @@ "7HKMTjmopLcM" ], "title": "v0.99.5", - "notePosition": 20, + "notePosition": 40, "prefix": null, "isExpanded": false, "type": "text", @@ -121,7 +173,7 @@ "RMBaNYPsRpIr" ], "title": "v0.99.4", - "notePosition": 30, + "notePosition": 50, "prefix": null, "isExpanded": false, "type": "text", @@ -147,7 +199,7 @@ "yuroLztFfpu5" ], "title": "v0.99.3", - "notePosition": 40, + "notePosition": 60, "prefix": null, "isExpanded": false, "type": "text", @@ -173,7 +225,7 @@ "z207sehwMJ6C" ], "title": "v0.99.2", - "notePosition": 50, + "notePosition": 70, "prefix": null, "isExpanded": false, "type": "text", @@ -199,7 +251,7 @@ "WGQsXq2jNyTi" ], "title": "v0.99.1", - "notePosition": 60, + "notePosition": 80, "prefix": null, "isExpanded": false, "type": "text", @@ -225,7 +277,7 @@ "cyw2Yue9vXf3" ], "title": "v0.99.0", - "notePosition": 70, + "notePosition": 90, "prefix": null, "isExpanded": false, "type": "text", @@ -251,7 +303,7 @@ "QOJwjruOUr4k" ], "title": "v0.98.1", - "notePosition": 80, + "notePosition": 100, "prefix": null, "isExpanded": false, "type": "text", @@ -277,7 +329,7 @@ "PLUoryywi0BC" ], "title": "v0.98.0", - "notePosition": 90, + "notePosition": 110, "prefix": null, "isExpanded": false, "type": "text", @@ -303,7 +355,7 @@ "lvOuiWsLDv8F" ], "title": "v0.97.2", - "notePosition": 100, + "notePosition": 120, "prefix": null, "isExpanded": false, "type": "text", @@ -329,7 +381,7 @@ "OtFZ6Nd9vM3n" ], "title": "v0.97.1", - "notePosition": 110, + "notePosition": 130, "prefix": null, "isExpanded": false, "type": "text", @@ -355,7 +407,7 @@ "SJZ5PwfzHSQ1" ], "title": "v0.97.0", - "notePosition": 120, + "notePosition": 140, "prefix": null, "isExpanded": false, "type": "text", @@ -381,7 +433,7 @@ "mYXFde3LuNR7" ], "title": "v0.96.0", - "notePosition": 130, + "notePosition": 150, "prefix": null, "isExpanded": false, "type": "text", @@ -407,7 +459,7 @@ "jthwbL0FdaeU" ], "title": "v0.95.0", - "notePosition": 140, + "notePosition": 160, "prefix": null, "isExpanded": false, "type": "text", @@ -433,7 +485,7 @@ "7HGYsJbLuhnv" ], "title": "v0.94.1", - "notePosition": 150, + "notePosition": 170, "prefix": null, "isExpanded": false, "type": "text", @@ -459,7 +511,7 @@ "Neq53ujRGBqv" ], "title": "v0.94.0", - "notePosition": 160, + "notePosition": 180, "prefix": null, "isExpanded": false, "type": "text", @@ -485,7 +537,7 @@ "VN3xnce1vLkX" ], "title": "v0.93.0", - "notePosition": 170, + "notePosition": 190, "prefix": null, "isExpanded": false, "type": "text", @@ -503,7 +555,7 @@ "WRaBfQqPr6qo" ], "title": "v0.92.7", - "notePosition": 180, + "notePosition": 200, "prefix": null, "isExpanded": false, "type": "text", @@ -529,7 +581,7 @@ "a2rwfKNmUFU1" ], "title": "v0.92.6", - "notePosition": 190, + "notePosition": 210, "prefix": null, "isExpanded": false, "type": "text", @@ -547,7 +599,7 @@ "fEJ8qErr0BKL" ], "title": "v0.92.5-beta", - "notePosition": 200, + "notePosition": 220, "prefix": null, "isExpanded": false, "type": "text", @@ -565,7 +617,7 @@ "kkkZQQGSXjwy" ], "title": "v0.92.4", - "notePosition": 210, + "notePosition": 230, "prefix": null, "isExpanded": false, "type": "text", @@ -583,7 +635,7 @@ "vAroNixiezaH" ], "title": "v0.92.3-beta", - "notePosition": 220, + "notePosition": 240, "prefix": null, "isExpanded": false, "type": "text", @@ -601,7 +653,7 @@ "mHEq1wxAKNZd" ], "title": "v0.92.2-beta", - "notePosition": 230, + "notePosition": 250, "prefix": null, "isExpanded": false, "type": "text", @@ -619,7 +671,7 @@ "IykjoAmBpc61" ], "title": "v0.92.1-beta", - "notePosition": 240, + "notePosition": 260, "prefix": null, "isExpanded": false, "type": "text", @@ -637,7 +689,7 @@ "dq2AJ9vSBX4Y" ], "title": "v0.92.0-beta", - "notePosition": 250, + "notePosition": 270, "prefix": null, "isExpanded": false, "type": "text", @@ -655,7 +707,7 @@ "3a8aMe4jz4yM" ], "title": "v0.91.6", - "notePosition": 260, + "notePosition": 280, "prefix": null, "isExpanded": false, "type": "text", @@ -673,7 +725,7 @@ "8djQjkiDGESe" ], "title": "v0.91.5", - "notePosition": 270, + "notePosition": 290, "prefix": null, "isExpanded": false, "type": "text", @@ -691,7 +743,7 @@ "OylxVoVJqNmr" ], "title": "v0.91.4-beta", - "notePosition": 280, + "notePosition": 300, "prefix": null, "isExpanded": false, "type": "text", @@ -709,7 +761,7 @@ "tANGQDvnyhrj" ], "title": "v0.91.3-beta", - "notePosition": 290, + "notePosition": 310, "prefix": null, "isExpanded": false, "type": "text", @@ -727,7 +779,7 @@ "hMoBfwSoj1SC" ], "title": "v0.91.2-beta", - "notePosition": 300, + "notePosition": 320, "prefix": null, "isExpanded": false, "type": "text", @@ -745,7 +797,7 @@ "a2XMSKROCl9z" ], "title": "v0.91.1-beta", - "notePosition": 310, + "notePosition": 330, "prefix": null, "isExpanded": false, "type": "text", @@ -763,7 +815,7 @@ "yqXFvWbLkuMD" ], "title": "v0.90.12", - "notePosition": 320, + "notePosition": 340, "prefix": null, "isExpanded": false, "type": "text", @@ -781,7 +833,7 @@ "veS7pg311yJP" ], "title": "v0.90.11-beta", - "notePosition": 330, + "notePosition": 350, "prefix": null, "isExpanded": false, "type": "text", @@ -799,7 +851,7 @@ "sq5W9TQxRqMq" ], "title": "v0.90.10-beta", - "notePosition": 340, + "notePosition": 360, "prefix": null, "isExpanded": false, "type": "text", @@ -817,7 +869,7 @@ "yFEGVCUM9tPx" ], "title": "v0.90.9-beta", - "notePosition": 350, + "notePosition": 370, "prefix": null, "isExpanded": false, "type": "text", @@ -835,7 +887,7 @@ "o4wAGqOQuJtV" ], "title": "v0.90.8", - "notePosition": 360, + "notePosition": 380, "prefix": null, "isExpanded": false, "type": "text", @@ -868,7 +920,7 @@ "i4A5g9iOg9I0" ], "title": "v0.90.7-beta", - "notePosition": 370, + "notePosition": 390, "prefix": null, "isExpanded": false, "type": "text", @@ -886,7 +938,7 @@ "ThNf2GaKgXUs" ], "title": "v0.90.6-beta", - "notePosition": 380, + "notePosition": 400, "prefix": null, "isExpanded": false, "type": "text", @@ -904,7 +956,7 @@ "G4PAi554kQUr" ], "title": "v0.90.5-beta", - "notePosition": 390, + "notePosition": 410, "prefix": null, "isExpanded": false, "type": "text", @@ -931,7 +983,7 @@ "zATRobGRCmBn" ], "title": "v0.90.4", - "notePosition": 400, + "notePosition": 420, "prefix": null, "isExpanded": false, "type": "text", @@ -949,7 +1001,7 @@ "sCDLf8IKn3Iz" ], "title": "v0.90.3", - "notePosition": 410, + "notePosition": 430, "prefix": null, "isExpanded": false, "type": "text", @@ -967,7 +1019,7 @@ "VqqyBu4AuTjC" ], "title": "v0.90.2-beta", - "notePosition": 420, + "notePosition": 440, "prefix": null, "isExpanded": false, "type": "text", @@ -985,7 +1037,7 @@ "RX3Nl7wInLsA" ], "title": "v0.90.1-beta", - "notePosition": 430, + "notePosition": 450, "prefix": null, "isExpanded": false, "type": "text", @@ -1003,7 +1055,7 @@ "GyueACukPWjk" ], "title": "v0.90.0-beta", - "notePosition": 440, + "notePosition": 460, "prefix": null, "isExpanded": false, "type": "text", @@ -1021,7 +1073,7 @@ "kzjHexDTTeVB" ], "title": "v0.48", - "notePosition": 450, + "notePosition": 470, "prefix": null, "isExpanded": false, "type": "text", @@ -1088,7 +1140,7 @@ "wyurrlcDl416" ], "title": "Release Template", - "notePosition": 460, + "notePosition": 480, "prefix": null, "isExpanded": false, "type": "text", diff --git a/docs/Release Notes/Release Notes/v0.101.0.md b/docs/Release Notes/Release Notes/v0.101.0.md new file mode 100644 index 000000000..87c913e1b --- /dev/null +++ b/docs/Release Notes/Release Notes/v0.101.0.md @@ -0,0 +1,90 @@ +# v0.101.0 +> [!NOTE] +> This release marks the 8-year anniversary of Trilium, celebrating its [first public release](https://github.com/TriliumNext/Trilium/releases/tag/v0.0.9) on December 25th, 2017.   + +> [!IMPORTANT] +> If you enjoyed this release, consider showing a token of appreciation by: +> +> * Pressing the “Star” button on [GitHub](https://github.com/TriliumNext/Trilium) (top-right). +> * Considering a one-time or recurrent donation to the [lead developer](https://github.com/eliandoran) via [GitHub Sponsors](https://github.com/sponsors/eliandoran) or [PayPal](https://paypal.me/eliandoran). + +## 💡 Key highlights + +* A new layout was introduced which heavily changes both existing UI elements, as well as adds some new ones (by @eliandoran and @adoriandoran, with special thanks for @rom1dep for the valuable suggestions). + * The goal of this new layout is to modernize the application and to make it more intuitive but at the same time to reduce clutter. + * See [documentation](https://docs.triliumnotes.org/user-guide/concepts/ui/new-layout) of the changes and the new UI elements. + * Notes can be more easily navigated across the hierarchy using the breadcrumbs displayed underneath the tab bar. + * The old layout can still be used, for now. Feedback is welcome. +* Near the tab bar now there are [built-in buttons to go the previous or the next note in history](https://github.com/TriliumNext/Trilium/pull/8003/files) (only if the back/forward buttons are not already placed in the launch bar). +* **Scripting overhaul:** Custom widgets and Render note can now be written in Preact using JSX instead of the legacy format (jQuery + custom component framework). For more information, see [documentation on Preact in Trilium](https://docs.triliumnotes.org/user-guide/scripts/frontend-basics/Preact). + +## 🐞 Bugfixes + +* [Ctrl+F when a dialog is open opens different search dialog](https://github.com/TriliumNext/Trilium/issues/5735) +* Toast: Icon missing for error messages +* Launch bar calendar would jump to the wrong week note if it was in between years. +* Launch bar calendar month selector was wrongly positioned. +* Tooltips would sometimes be duplicated if an element is focused. +* Text notes: + * Missing padding in `
    ` without ``.
    +    *   [Content disappears when inserting code block via Markdown formatting](https://github.com/TriliumNext/Trilium/issues/5776)
    +    *   [Data loss for opened tabs after CKEditor crash](https://github.com/TriliumNext/Trilium/issues/7739)
    +*   [Mind Map export does not show text in links between nodes](https://github.com/TriliumNext/Trilium/issues/7829) by @lzinga
    +*   Webview: Layout issues when no source site is set.
    +*   Incorrect help button for content language.
    +*   Links in inherited attributes not underlined.
    +*   Mermaid preview did not render full-height if in read-only while in vertical layout.
    +*   Icons: `border-left` icon was missing.
    +*   Auto-complete shows empty name for hoisted note.
    +*   [Missing null check for canvas elements in fulltext search](https://github.com/TriliumNext/Trilium/pull/8090) by @Soein
    +*   Share badge would always indicate “Shared locally” when accessing the server version.
    +*   Clicking in the outer area of a menu dismisses it.
    +*   Geomap: street names not rendering in vector maps.
    +*   In code options modal (ribbon), the tooltip is behind the modal.
    +*   [Archived deeply nested notes appear in classic collections without #includeArchived](https://github.com/TriliumNext/Trilium/issues/8127)
    +*   [Grid collection not displaying images properly](https://github.com/TriliumNext/Trilium/issues/7969)
    +*   Printing collections: skip protected notes (if they are not unlocked) and files.
    +*   [Attachment auto-deletion displayed time is off by a factor of 1000](https://github.com/TriliumNext/Trilium/issues/7987)
    +*   [Note title color for legacy themes](https://github.com/TriliumNext/Trilium/pull/7997) by @Nriver
    +*   [First input box of the promoted multi relation edits last relation](https://github.com/TriliumNext/Trilium/issues/7992)
    +
    +## ✨ Improvements
    +
    +*   Improved error handling for custom widgets.
    +*   Launch bar:
    +    *   The horizontal launch bar can now be scrolled simply by scrolling the mouse wheel.
    +    *   Tooltips are shown faster (no fade).
    +*   Improved error handling
    +    *   HTTP errors are now more user-friendly.
    +    *   Warn on Traefik request failures.
    +    *   CKEditor crashes are notified, including an easy way to provide information for error reports.
    +*   Hide ribbon in Options.
    +*   Removed margins and rounded corners for the code editor.
    +*   Backend logs: reduced extra padding & decrease font size for readability.
    +*   Improved error handling for custom widgets.
    +*   Code notes will now have a default icon based on the language (e.g. custom icon for JS code notes). Only a subset of languages have a dedicated icon.
    +*   Printing collections will now display a message if one or more notes are not printable.
    +*   UI improvements by @adoriandoran
    +
    +## 📖 Documentation
    +
    +*   [Wrong links in README](https://github.com/TriliumNext/Trilium/issues/7246)
    +*   [Improve organization of links](https://github.com/TriliumNext/Trilium/pull/8057)
    +*   Widget scripts are now better documented, in both the legacy (jQuery) and Preact/JSX format.
    +
    +## 🌍 Internationalization
    +
    +*   Untranslated error message for custom widgets.
    +
    +## 🛠️ Technical updates
    +
    +*   Ported the following components to React. If you notice any issues with your launchers or the bar itself, feel free to report them.
    +    *   The launch bar and all its widgets.
    +    *   The toast/notification system.
    +*   [Add dev shell and direnv support](https://github.com/TriliumNext/Trilium/pull/8011) by @yzx9 and @contributor
    +*   **Minor breaking change**: custom widgets using the typo `node-detail-pane` will not be supported anymore. Use `note-detail-pane` instead.
    +*   [ETAPI OpenAPI: Add missing share format](https://github.com/TriliumNext/Trilium/pull/8125) by @kalbasit
    +
    +## 🔒️ Security fixes
    +
    +*   A security vulnerability was reported by @sivaadityacoder and fixed by @perfectra1n. More information to be provided in around a month.
    \ No newline at end of file
    diff --git a/docs/Release Notes/Release Notes/v0.101.1.md b/docs/Release Notes/Release Notes/v0.101.1.md
    new file mode 100644
    index 000000000..43f406d11
    --- /dev/null
    +++ b/docs/Release Notes/Release Notes/v0.101.1.md	
    @@ -0,0 +1,100 @@
    +# v0.101.1
    +> [!NOTE]
    +> This is a hotfix for yesterday's release, which marked the 8-year anniversary of Trilium, celebrating its [first public release](https://github.com/TriliumNext/Trilium/releases/tag/v0.0.9) on December 25th, 2017.  
    +
    +> [!IMPORTANT]
    +> If you enjoyed this release, consider showing a token of appreciation by:
    +> 
    +> *   Pressing the “Star” button on [GitHub](https://github.com/TriliumNext/Trilium) (top-right).
    +> *   Considering a one-time or recurrent donation to the [lead developer](https://github.com/eliandoran) via [GitHub Sponsors](https://github.com/sponsors/eliandoran) or [PayPal](https://paypal.me/eliandoran).
    +
    +## 💡 Key highlights
    +
    +*   A new layout was introduced which heavily changes both existing UI elements, as well as adds some new ones (by @eliandoran and @adoriandoran, with special thanks for @rom1dep for the valuable suggestions).
    +    *   The goal of this new layout is to modernize the application and to make it more intuitive but at the same time to reduce clutter.
    +    *   See [documentation](https://docs.triliumnotes.org/user-guide/concepts/ui/new-layout) of the changes and the new UI elements.
    +    *   Notes can be more easily navigated across the hierarchy using the breadcrumbs displayed underneath the tab bar.
    +    *   The old layout can still be used, for now. Feedback is welcome.
    +*   Near the tab bar now there are [built-in buttons to go the previous or the next note in history](https://github.com/TriliumNext/Trilium/pull/8003/files) (only if the back/forward buttons are not already placed in the launch bar).
    +*   **Scripting overhaul:** Custom widgets and Render note can now be written in Preact using JSX instead of the legacy format (jQuery + custom component framework). For more information, see [documentation on Preact in Trilium](https://docs.triliumnotes.org/user-guide/scripts/frontend-basics/Preact).
    +
    +## 🐞 New bugfixes in v0.101.1
    +
    +*   [Right pane toggle missing on macOS vertical layout](https://github.com/TriliumNext/Trilium/issues/8157)
    +*   [Launchpad Note Launcher hoisting no longer working](https://github.com/TriliumNext/Trilium/issues/8160)
    +*   Toggle right pane keyboard button not working on new layout
    +*   [Tabs do not appear when using vertical layout and legacy theme](https://github.com/TriliumNext/Trilium/issues/8170) by @adoriandoran
    +*   [Text in headings do not respond to being bolded](https://github.com/TriliumNext/Trilium/issues/8177) by @adoriandoran
    +*   Table of contents in new layout: not displaying correctly on first render.
    +*   [The text editor keeps crashing in non-HTTPS](https://github.com/TriliumNext/Trilium/issues/8165)
    +
    +## 🐞 Bugfixes in v0.101.0
    +
    +*   [Ctrl+F when a dialog is open opens different search dialog](https://github.com/TriliumNext/Trilium/issues/5735)
    +*   Toast: Icon missing for error messages
    +*   Launch bar calendar would jump to the wrong week note if it was in between years.
    +*   Launch bar calendar month selector was wrongly positioned.
    +*   Tooltips would sometimes be duplicated if an element is focused.
    +*   Text notes:
    +    *   Missing padding in `
    ` without ``.
    +    *   [Content disappears when inserting code block via Markdown formatting](https://github.com/TriliumNext/Trilium/issues/5776)
    +    *   [Data loss for opened tabs after CKEditor crash](https://github.com/TriliumNext/Trilium/issues/7739)
    +*   [Mind Map export does not show text in links between nodes](https://github.com/TriliumNext/Trilium/issues/7829) by @lzinga
    +*   Webview: Layout issues when no source site is set.
    +*   Incorrect help button for content language.
    +*   Links in inherited attributes not underlined.
    +*   Mermaid preview did not render full-height if in read-only while in vertical layout.
    +*   Icons: `border-left` icon was missing.
    +*   Auto-complete shows empty name for hoisted note.
    +*   [Missing null check for canvas elements in fulltext search](https://github.com/TriliumNext/Trilium/pull/8090) by @Soein
    +*   Share badge would always indicate “Shared locally” when accessing the server version.
    +*   Clicking in the outer area of a menu dismisses it.
    +*   Geomap: street names not rendering in vector maps.
    +*   In code options modal (ribbon), the tooltip is behind the modal.
    +*   [Archived deeply nested notes appear in classic collections without #includeArchived](https://github.com/TriliumNext/Trilium/issues/8127)
    +*   [Grid collection not displaying images properly](https://github.com/TriliumNext/Trilium/issues/7969)
    +*   Printing collections: skip protected notes (if they are not unlocked) and files.
    +*   [Attachment auto-deletion displayed time is off by a factor of 1000](https://github.com/TriliumNext/Trilium/issues/7987)
    +*   [Note title color for legacy themes](https://github.com/TriliumNext/Trilium/pull/7997) by @Nriver
    +*   [First input box of the promoted multi relation edits last relation](https://github.com/TriliumNext/Trilium/issues/7992)
    +
    +## ✨ Improvements
    +
    +*   Improved error handling for custom widgets.
    +*   Launch bar:
    +    *   The horizontal launch bar can now be scrolled simply by scrolling the mouse wheel.
    +    *   Tooltips are shown faster (no fade).
    +*   Improved error handling
    +    *   HTTP errors are now more user-friendly.
    +    *   Warn on Traefik request failures.
    +    *   CKEditor crashes are notified, including an easy way to provide information for error reports.
    +*   Hide ribbon in Options.
    +*   Removed margins and rounded corners for the code editor.
    +*   Backend logs: reduced extra padding & decrease font size for readability.
    +*   Improved error handling for custom widgets.
    +*   Code notes will now have a default icon based on the language (e.g. custom icon for JS code notes). Only a subset of languages have a dedicated icon.
    +*   Printing collections will now display a message if one or more notes are not printable.
    +*   UI improvements by @adoriandoran
    +
    +## 📖 Documentation
    +
    +*   [Wrong links in README](https://github.com/TriliumNext/Trilium/issues/7246)
    +*   [Improve organization of links](https://github.com/TriliumNext/Trilium/pull/8057)
    +*   Widget scripts are now better documented, in both the legacy (jQuery) and Preact/JSX format.
    +
    +## 🌍 Internationalization
    +
    +*   Untranslated error message for custom widgets.
    +
    +## 🛠️ Technical updates
    +
    +*   Ported the following components to React. If you notice any issues with your launchers or the bar itself, feel free to report them.
    +    *   The launch bar and all its widgets.
    +    *   The toast/notification system.
    +*   [Add dev shell and direnv support](https://github.com/TriliumNext/Trilium/pull/8011) by @yzx9 and @contributor
    +*   **Minor breaking change**: custom widgets using the typo `node-detail-pane` will not be supported anymore. Use `note-detail-pane` instead.
    +*   [ETAPI OpenAPI: Add missing share format](https://github.com/TriliumNext/Trilium/pull/8125) by @kalbasit
    +
    +## 🔒️ Security fixes
    +
    +*   A security vulnerability was reported by @sivaadityacoder and fixed by @perfectra1n. More information to be provided in around a month.
    \ No newline at end of file
    diff --git a/docs/User Guide/!!!meta.json b/docs/User Guide/!!!meta.json
    index 85b07b75b..4bc0ecf72 100644
    --- a/docs/User Guide/!!!meta.json	
    +++ b/docs/User Guide/!!!meta.json	
    @@ -1,6 +1,6 @@
     {
         "formatVersion": 2,
    -    "appVersion": "0.100.0",
    +    "appVersion": "0.101.1",
         "files": [
             {
                 "isClone": false,
    @@ -3600,13 +3600,6 @@
                                                 "isInheritable": false,
                                                 "position": 170
                                             },
    -                                        {
    -                                            "type": "label",
    -                                            "name": "iconClass",
    -                                            "value": "bx bx-layout",
    -                                            "isInheritable": false,
    -                                            "position": 30
    -                                        },
                                             {
                                                 "type": "relation",
                                                 "name": "internalLink",
    @@ -3614,6 +3607,13 @@
                                                 "isInheritable": false,
                                                 "position": 180
                                             },
    +                                        {
    +                                            "type": "label",
    +                                            "name": "iconClass",
    +                                            "value": "bx bx-layout",
    +                                            "isInheritable": false,
    +                                            "position": 30
    +                                        },
                                             {
                                                 "type": "label",
                                                 "name": "shareAlias",
    @@ -4418,38 +4418,52 @@
                                             {
                                                 "type": "relation",
                                                 "name": "internalLink",
    -                                            "value": "2FvYrpmOXm29",
    +                                            "value": "grjYqerjn243",
                                                 "isInheritable": false,
                                                 "position": 100
                                             },
                                             {
                                                 "type": "relation",
                                                 "name": "internalLink",
    -                                            "value": "AlhDUqhENtH7",
    +                                            "value": "gBbsAeiuUxI5",
                                                 "isInheritable": false,
                                                 "position": 110
                                             },
                                             {
                                                 "type": "relation",
                                                 "name": "internalLink",
    -                                            "value": "bwZpz2ajCEwO",
    +                                            "value": "2FvYrpmOXm29",
                                                 "isInheritable": false,
                                                 "position": 120
                                             },
                                             {
                                                 "type": "relation",
                                                 "name": "internalLink",
    -                                            "value": "KC1HB96bqqHX",
    +                                            "value": "AlhDUqhENtH7",
                                                 "isInheritable": false,
                                                 "position": 130
                                             },
                                             {
                                                 "type": "relation",
                                                 "name": "internalLink",
    -                                            "value": "0ESUbbAxVnoK",
    +                                            "value": "bwZpz2ajCEwO",
                                                 "isInheritable": false,
                                                 "position": 140
                                             },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "KC1HB96bqqHX",
    +                                            "isInheritable": false,
    +                                            "position": 150
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "0ESUbbAxVnoK",
    +                                            "isInheritable": false,
    +                                            "position": 160
    +                                        },
                                             {
                                                 "type": "label",
                                                 "name": "iconClass",
    @@ -5730,6 +5744,104 @@
                                         "format": "markdown",
                                         "dataFileName": "Theme Gallery.md",
                                         "attachments": []
    +                                },
    +                                {
    +                                    "isClone": false,
    +                                    "noteId": "gOKqSJgXLcIj",
    +                                    "notePath": [
    +                                        "pOsGYCXsbNQG",
    +                                        "gh7bpGYxajRS",
    +                                        "Wy267RK4M69c",
    +                                        "gOKqSJgXLcIj"
    +                                    ],
    +                                    "title": "Icon Packs",
    +                                    "notePosition": 20,
    +                                    "prefix": null,
    +                                    "isExpanded": false,
    +                                    "type": "text",
    +                                    "mime": "text/html",
    +                                    "attributes": [
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "s8alTXmpFR61",
    +                                            "isInheritable": false,
    +                                            "position": 10
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "g1mlRoU8CsqC",
    +                                            "isInheritable": false,
    +                                            "position": 20
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "bnyigUA2UK7s",
    +                                            "isInheritable": false,
    +                                            "position": 30
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "HI6GBBIduIgv",
    +                                            "isInheritable": false,
    +                                            "position": 40
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "bwg0e8ewQMak",
    +                                            "isInheritable": false,
    +                                            "position": 50
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "R9pX4DGra2Vt",
    +                                            "isInheritable": false,
    +                                            "position": 60
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "ycBFjKrrwE9p",
    +                                            "isInheritable": false,
    +                                            "position": 70
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "oPVyFC7WL2Lp",
    +                                            "isInheritable": false,
    +                                            "position": 80
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "eIg8jdvaoNNd",
    +                                            "isInheritable": false,
    +                                            "position": 90
    +                                        },
    +                                        {
    +                                            "type": "label",
    +                                            "name": "iconClass",
    +                                            "value": "bx bx-package",
    +                                            "isInheritable": false,
    +                                            "position": 30
    +                                        },
    +                                        {
    +                                            "type": "label",
    +                                            "name": "shareAlias",
    +                                            "value": "icon-packs",
    +                                            "isInheritable": false,
    +                                            "position": 100
    +                                        }
    +                                    ],
    +                                    "format": "markdown",
    +                                    "dataFileName": "Icon Packs.md",
    +                                    "attachments": []
                                     }
                                 ]
                             },
    @@ -11787,6 +11899,75 @@
                                         "dataFileName": "3_Custom app-wide CSS_image.png"
                                     }
                                 ]
    +                        },
    +                        {
    +                            "isClone": false,
    +                            "noteId": "g1mlRoU8CsqC",
    +                            "notePath": [
    +                                "pOsGYCXsbNQG",
    +                                "pKK96zzmvBGf",
    +                                "g1mlRoU8CsqC"
    +                            ],
    +                            "title": "Creating an icon pack",
    +                            "notePosition": 50,
    +                            "prefix": null,
    +                            "isExpanded": false,
    +                            "type": "text",
    +                            "mime": "text/html",
    +                            "attributes": [
    +                                {
    +                                    "type": "relation",
    +                                    "name": "internalLink",
    +                                    "value": "gOKqSJgXLcIj",
    +                                    "isInheritable": false,
    +                                    "position": 10
    +                                },
    +                                {
    +                                    "type": "relation",
    +                                    "name": "internalLink",
    +                                    "value": "0vhv7lsOLy82",
    +                                    "isInheritable": false,
    +                                    "position": 20
    +                                },
    +                                {
    +                                    "type": "relation",
    +                                    "name": "internalLink",
    +                                    "value": "bnyigUA2UK7s",
    +                                    "isInheritable": false,
    +                                    "position": 30
    +                                },
    +                                {
    +                                    "type": "relation",
    +                                    "name": "internalLink",
    +                                    "value": "s8alTXmpFR61",
    +                                    "isInheritable": false,
    +                                    "position": 40
    +                                },
    +                                {
    +                                    "type": "relation",
    +                                    "name": "internalLink",
    +                                    "value": "mHbBMPDPkVV5",
    +                                    "isInheritable": false,
    +                                    "position": 50
    +                                },
    +                                {
    +                                    "type": "label",
    +                                    "name": "iconClass",
    +                                    "value": "bx bx-package",
    +                                    "isInheritable": false,
    +                                    "position": 30
    +                                },
    +                                {
    +                                    "type": "label",
    +                                    "name": "shareAlias",
    +                                    "value": "creating-icon-pack",
    +                                    "isInheritable": false,
    +                                    "position": 60
    +                                }
    +                            ],
    +                            "format": "markdown",
    +                            "dataFileName": "Creating an icon pack.md",
    +                            "attachments": []
                             }
                         ]
                     },
    @@ -15618,6 +15799,83 @@
                                         "type": "text",
                                         "mime": "text/markdown",
                                         "attributes": [
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "KLsqhjaqh1QW",
    +                                            "isInheritable": false,
    +                                            "position": 10
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "gMkgcLJ6jBkg",
    +                                            "isInheritable": false,
    +                                            "position": 20
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "6f9hih2hXXZk",
    +                                            "isInheritable": false,
    +                                            "position": 30
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "HI6GBBIduIgv",
    +                                            "isInheritable": false,
    +                                            "position": 40
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "s8alTXmpFR61",
    +                                            "isInheritable": false,
    +                                            "position": 50
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "oPVyFC7WL2Lp",
    +                                            "isInheritable": false,
    +                                            "position": 60
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "GhurYZjh8e1V",
    +                                            "isInheritable": false,
    +                                            "position": 70
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "RnaPdbciOfeq",
    +                                            "isInheritable": false,
    +                                            "position": 80
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "M8IppdwVHSjG",
    +                                            "isInheritable": false,
    +                                            "position": 90
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "xYmIYSP6wE3F",
    +                                            "isInheritable": false,
    +                                            "position": 100
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "4Gn3psZKsfSm",
    +                                            "isInheritable": false,
    +                                            "position": 110
    +                                        },
                                             {
                                                 "type": "label",
                                                 "name": "shareAlias",
    @@ -15638,6 +15896,135 @@
                                         "attachments": [],
                                         "dirFileName": "Custom Widgets",
                                         "children": [
    +                                        {
    +                                            "isClone": false,
    +                                            "noteId": "SynTBQiBsdYJ",
    +                                            "notePath": [
    +                                                "pOsGYCXsbNQG",
    +                                                "CdNpE2pqjmI6",
    +                                                "yIhgI5H7A2Sm",
    +                                                "MgibgPcfeuGz",
    +                                                "SynTBQiBsdYJ"
    +                                            ],
    +                                            "title": "Widget Basics",
    +                                            "notePosition": 10,
    +                                            "prefix": null,
    +                                            "isExpanded": false,
    +                                            "type": "text",
    +                                            "mime": "text/markdown",
    +                                            "attributes": [
    +                                                {
    +                                                    "type": "relation",
    +                                                    "name": "internalLink",
    +                                                    "value": "zEY4DaJG4YT5",
    +                                                    "isInheritable": false,
    +                                                    "position": 10
    +                                                },
    +                                                {
    +                                                    "type": "relation",
    +                                                    "name": "internalLink",
    +                                                    "value": "BFs8mudNFgCS",
    +                                                    "isInheritable": false,
    +                                                    "position": 20
    +                                                },
    +                                                {
    +                                                    "type": "relation",
    +                                                    "name": "internalLink",
    +                                                    "value": "GLks18SNjxmC",
    +                                                    "isInheritable": false,
    +                                                    "position": 30
    +                                                },
    +                                                {
    +                                                    "type": "relation",
    +                                                    "name": "internalLink",
    +                                                    "value": "MgibgPcfeuGz",
    +                                                    "isInheritable": false,
    +                                                    "position": 40
    +                                                },
    +                                                {
    +                                                    "type": "relation",
    +                                                    "name": "internalLink",
    +                                                    "value": "s8alTXmpFR61",
    +                                                    "isInheritable": false,
    +                                                    "position": 50
    +                                                },
    +                                                {
    +                                                    "type": "label",
    +                                                    "name": "shareAlias",
    +                                                    "value": "widget-basics",
    +                                                    "isInheritable": false,
    +                                                    "position": 20
    +                                                }
    +                                            ],
    +                                            "format": "markdown",
    +                                            "dataFileName": "Widget Basics.md",
    +                                            "attachments": []
    +                                        },
    +                                        {
    +                                            "isClone": false,
    +                                            "noteId": "GhurYZjh8e1V",
    +                                            "notePath": [
    +                                                "pOsGYCXsbNQG",
    +                                                "CdNpE2pqjmI6",
    +                                                "yIhgI5H7A2Sm",
    +                                                "MgibgPcfeuGz",
    +                                                "GhurYZjh8e1V"
    +                                            ],
    +                                            "title": "Note context aware widget",
    +                                            "notePosition": 20,
    +                                            "prefix": null,
    +                                            "isExpanded": false,
    +                                            "type": "text",
    +                                            "mime": "text/html",
    +                                            "attributes": [
    +                                                {
    +                                                    "type": "label",
    +                                                    "name": "shareAlias",
    +                                                    "value": "note-context-aware-widget",
    +                                                    "isInheritable": false,
    +                                                    "position": 30
    +                                                }
    +                                            ],
    +                                            "format": "markdown",
    +                                            "dataFileName": "Note context aware widget.md",
    +                                            "attachments": []
    +                                        },
    +                                        {
    +                                            "isClone": false,
    +                                            "noteId": "M8IppdwVHSjG",
    +                                            "notePath": [
    +                                                "pOsGYCXsbNQG",
    +                                                "CdNpE2pqjmI6",
    +                                                "yIhgI5H7A2Sm",
    +                                                "MgibgPcfeuGz",
    +                                                "M8IppdwVHSjG"
    +                                            ],
    +                                            "title": "Right pane widget",
    +                                            "notePosition": 30,
    +                                            "prefix": null,
    +                                            "isExpanded": false,
    +                                            "type": "text",
    +                                            "mime": "text/html",
    +                                            "attributes": [
    +                                                {
    +                                                    "type": "relation",
    +                                                    "name": "internalLink",
    +                                                    "value": "IjZS7iK5EXtb",
    +                                                    "isInheritable": false,
    +                                                    "position": 10
    +                                                },
    +                                                {
    +                                                    "type": "label",
    +                                                    "name": "shareAlias",
    +                                                    "value": "right-pane-widget",
    +                                                    "isInheritable": false,
    +                                                    "position": 20
    +                                                }
    +                                            ],
    +                                            "format": "markdown",
    +                                            "dataFileName": "Right pane widget.md",
    +                                            "attachments": []
    +                                        },
                                             {
                                                 "isClone": false,
                                                 "noteId": "YNxAqkI5Kg1M",
    @@ -15649,7 +16036,7 @@
                                                     "YNxAqkI5Kg1M"
                                                 ],
                                                 "title": "Word count widget",
    -                                            "notePosition": 10,
    +                                            "notePosition": 40,
                                                 "prefix": null,
                                                 "isExpanded": false,
                                                 "type": "text",
    @@ -15697,99 +16084,6 @@
                                                     }
                                                 ]
                                             },
    -                                        {
    -                                            "isClone": false,
    -                                            "noteId": "SynTBQiBsdYJ",
    -                                            "notePath": [
    -                                                "pOsGYCXsbNQG",
    -                                                "CdNpE2pqjmI6",
    -                                                "yIhgI5H7A2Sm",
    -                                                "MgibgPcfeuGz",
    -                                                "SynTBQiBsdYJ"
    -                                            ],
    -                                            "title": "Widget Basics",
    -                                            "notePosition": 20,
    -                                            "prefix": null,
    -                                            "isExpanded": false,
    -                                            "type": "text",
    -                                            "mime": "text/markdown",
    -                                            "attributes": [
    -                                                {
    -                                                    "type": "relation",
    -                                                    "name": "internalLink",
    -                                                    "value": "zEY4DaJG4YT5",
    -                                                    "isInheritable": false,
    -                                                    "position": 10
    -                                                },
    -                                                {
    -                                                    "type": "relation",
    -                                                    "name": "internalLink",
    -                                                    "value": "BFs8mudNFgCS",
    -                                                    "isInheritable": false,
    -                                                    "position": 20
    -                                                },
    -                                                {
    -                                                    "type": "relation",
    -                                                    "name": "internalLink",
    -                                                    "value": "GLks18SNjxmC",
    -                                                    "isInheritable": false,
    -                                                    "position": 30
    -                                                },
    -                                                {
    -                                                    "type": "relation",
    -                                                    "name": "internalLink",
    -                                                    "value": "s8alTXmpFR61",
    -                                                    "isInheritable": false,
    -                                                    "position": 40
    -                                                },
    -                                                {
    -                                                    "type": "label",
    -                                                    "name": "shareAlias",
    -                                                    "value": "widget-basics",
    -                                                    "isInheritable": false,
    -                                                    "position": 20
    -                                                }
    -                                            ],
    -                                            "format": "markdown",
    -                                            "dataFileName": "Widget Basics.md",
    -                                            "attachments": []
    -                                        },
    -                                        {
    -                                            "isClone": false,
    -                                            "noteId": "M8IppdwVHSjG",
    -                                            "notePath": [
    -                                                "pOsGYCXsbNQG",
    -                                                "CdNpE2pqjmI6",
    -                                                "yIhgI5H7A2Sm",
    -                                                "MgibgPcfeuGz",
    -                                                "M8IppdwVHSjG"
    -                                            ],
    -                                            "title": "Right pane widget",
    -                                            "notePosition": 30,
    -                                            "prefix": null,
    -                                            "isExpanded": false,
    -                                            "type": "text",
    -                                            "mime": "text/html",
    -                                            "attributes": [
    -                                                {
    -                                                    "type": "label",
    -                                                    "name": "shareAlias",
    -                                                    "value": "right-pane-widget",
    -                                                    "isInheritable": false,
    -                                                    "position": 20
    -                                                },
    -                                                {
    -                                                    "type": "relation",
    -                                                    "name": "internalLink",
    -                                                    "value": "IjZS7iK5EXtb",
    -                                                    "isInheritable": false,
    -                                                    "position": 30
    -                                                }
    -                                            ],
    -                                            "format": "markdown",
    -                                            "dataFileName": "Right pane widget.md",
    -                                            "attachments": []
    -                                        },
                                             {
                                                 "isClone": false,
                                                 "noteId": "VqGQnnPGnqAU",
    @@ -15801,12 +16095,19 @@
                                                     "VqGQnnPGnqAU"
                                                 ],
                                                 "title": "CSS",
    -                                            "notePosition": 40,
    +                                            "notePosition": 70,
                                                 "prefix": null,
                                                 "isExpanded": false,
                                                 "type": "text",
                                                 "mime": "text/html",
                                                 "attributes": [
    +                                                {
    +                                                    "type": "relation",
    +                                                    "name": "internalLink",
    +                                                    "value": "Sg9GrCtyftZf",
    +                                                    "isInheritable": false,
    +                                                    "position": 10
    +                                                },
                                                     {
                                                         "type": "label",
                                                         "name": "shareAlias",
    @@ -15830,7 +16131,7 @@
                                                     "gMkgcLJ6jBkg"
                                                 ],
                                                 "title": "Troubleshooting",
    -                                            "notePosition": 50,
    +                                            "notePosition": 80,
                                                 "prefix": null,
                                                 "isExpanded": false,
                                                 "type": "text",
    @@ -16217,6 +16518,334 @@
                                                 ]
                                             }
                                         ]
    +                                },
    +                                {
    +                                    "isClone": false,
    +                                    "noteId": "KLsqhjaqh1QW",
    +                                    "notePath": [
    +                                        "pOsGYCXsbNQG",
    +                                        "CdNpE2pqjmI6",
    +                                        "yIhgI5H7A2Sm",
    +                                        "KLsqhjaqh1QW"
    +                                    ],
    +                                    "title": "Preact",
    +                                    "notePosition": 40,
    +                                    "prefix": null,
    +                                    "isExpanded": false,
    +                                    "type": "text",
    +                                    "mime": "text/html",
    +                                    "attributes": [
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "HcABDtFCkbFN",
    +                                            "isInheritable": false,
    +                                            "position": 10
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "MgibgPcfeuGz",
    +                                            "isInheritable": false,
    +                                            "position": 20
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "GLks18SNjxmC",
    +                                            "isInheritable": false,
    +                                            "position": 30
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "Bqde6BvPo05g",
    +                                            "isInheritable": false,
    +                                            "position": 40
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "wy8So3yZZlH9",
    +                                            "isInheritable": false,
    +                                            "position": 50
    +                                        },
    +                                        {
    +                                            "type": "label",
    +                                            "name": "iconClass",
    +                                            "value": "bx bxl-react",
    +                                            "isInheritable": false,
    +                                            "position": 30
    +                                        },
    +                                        {
    +                                            "type": "label",
    +                                            "name": "shareAlias",
    +                                            "value": "preac",
    +                                            "isInheritable": false,
    +                                            "position": 60
    +                                        },
    +                                        {
    +                                            "type": "label",
    +                                            "name": "shareAlias",
    +                                            "value": "preact",
    +                                            "isInheritable": false,
    +                                            "position": 70
    +                                        }
    +                                    ],
    +                                    "format": "markdown",
    +                                    "dataFileName": "Preact.md",
    +                                    "attachments": [],
    +                                    "dirFileName": "Preact",
    +                                    "children": [
    +                                        {
    +                                            "isClone": false,
    +                                            "noteId": "Bqde6BvPo05g",
    +                                            "notePath": [
    +                                                "pOsGYCXsbNQG",
    +                                                "CdNpE2pqjmI6",
    +                                                "yIhgI5H7A2Sm",
    +                                                "KLsqhjaqh1QW",
    +                                                "Bqde6BvPo05g"
    +                                            ],
    +                                            "title": "Component libraries",
    +                                            "notePosition": 10,
    +                                            "prefix": null,
    +                                            "isExpanded": false,
    +                                            "type": "text",
    +                                            "mime": "text/html",
    +                                            "attributes": [
    +                                                {
    +                                                    "type": "relation",
    +                                                    "name": "internalLink",
    +                                                    "value": "hA834UaHhSNn",
    +                                                    "isInheritable": false,
    +                                                    "position": 10
    +                                                },
    +                                                {
    +                                                    "type": "relation",
    +                                                    "name": "internalLink",
    +                                                    "value": "HcABDtFCkbFN",
    +                                                    "isInheritable": false,
    +                                                    "position": 20
    +                                                },
    +                                                {
    +                                                    "type": "label",
    +                                                    "name": "iconClass",
    +                                                    "value": "bx bxs-component",
    +                                                    "isInheritable": false,
    +                                                    "position": 50
    +                                                },
    +                                                {
    +                                                    "type": "label",
    +                                                    "name": "shareAlias",
    +                                                    "value": "component-libraries",
    +                                                    "isInheritable": false,
    +                                                    "position": 60
    +                                                }
    +                                            ],
    +                                            "format": "markdown",
    +                                            "dataFileName": "Component libraries.md",
    +                                            "attachments": []
    +                                        },
    +                                        {
    +                                            "isClone": false,
    +                                            "noteId": "ykYtbM9k3a7B",
    +                                            "notePath": [
    +                                                "pOsGYCXsbNQG",
    +                                                "CdNpE2pqjmI6",
    +                                                "yIhgI5H7A2Sm",
    +                                                "KLsqhjaqh1QW",
    +                                                "ykYtbM9k3a7B"
    +                                            ],
    +                                            "title": "Hooks",
    +                                            "notePosition": 20,
    +                                            "prefix": null,
    +                                            "isExpanded": false,
    +                                            "type": "text",
    +                                            "mime": "text/html",
    +                                            "attributes": [
    +                                                {
    +                                                    "type": "relation",
    +                                                    "name": "internalLink",
    +                                                    "value": "HcABDtFCkbFN",
    +                                                    "isInheritable": false,
    +                                                    "position": 10
    +                                                },
    +                                                {
    +                                                    "type": "relation",
    +                                                    "name": "internalLink",
    +                                                    "value": "GhurYZjh8e1V",
    +                                                    "isInheritable": false,
    +                                                    "position": 20
    +                                                },
    +                                                {
    +                                                    "type": "label",
    +                                                    "name": "iconClass",
    +                                                    "value": "bx bx-question-mark",
    +                                                    "isInheritable": false,
    +                                                    "position": 60
    +                                                },
    +                                                {
    +                                                    "type": "label",
    +                                                    "name": "shareAlias",
    +                                                    "value": "hooks",
    +                                                    "isInheritable": false,
    +                                                    "position": 70
    +                                                }
    +                                            ],
    +                                            "format": "markdown",
    +                                            "dataFileName": "Hooks.md",
    +                                            "attachments": []
    +                                        },
    +                                        {
    +                                            "isClone": false,
    +                                            "noteId": "Sg9GrCtyftZf",
    +                                            "notePath": [
    +                                                "pOsGYCXsbNQG",
    +                                                "CdNpE2pqjmI6",
    +                                                "yIhgI5H7A2Sm",
    +                                                "KLsqhjaqh1QW",
    +                                                "Sg9GrCtyftZf"
    +                                            ],
    +                                            "title": "CSS",
    +                                            "notePosition": 30,
    +                                            "prefix": null,
    +                                            "isExpanded": false,
    +                                            "type": "text",
    +                                            "mime": "text/html",
    +                                            "attributes": [
    +                                                {
    +                                                    "type": "relation",
    +                                                    "name": "internalLink",
    +                                                    "value": "AlhDUqhENtH7",
    +                                                    "isInheritable": false,
    +                                                    "position": 10
    +                                                },
    +                                                {
    +                                                    "type": "label",
    +                                                    "name": "iconClass",
    +                                                    "value": "bx bxs-file-css",
    +                                                    "isInheritable": false,
    +                                                    "position": 40
    +                                                },
    +                                                {
    +                                                    "type": "label",
    +                                                    "name": "shareAlias",
    +                                                    "value": "css",
    +                                                    "isInheritable": false,
    +                                                    "position": 50
    +                                                }
    +                                            ],
    +                                            "format": "markdown",
    +                                            "dataFileName": "CSS.md",
    +                                            "attachments": []
    +                                        },
    +                                        {
    +                                            "isClone": false,
    +                                            "noteId": "RSssb9S3xgSr",
    +                                            "notePath": [
    +                                                "pOsGYCXsbNQG",
    +                                                "CdNpE2pqjmI6",
    +                                                "yIhgI5H7A2Sm",
    +                                                "KLsqhjaqh1QW",
    +                                                "RSssb9S3xgSr"
    +                                            ],
    +                                            "title": "Built-in components",
    +                                            "notePosition": 40,
    +                                            "prefix": null,
    +                                            "isExpanded": false,
    +                                            "type": "text",
    +                                            "mime": "text/html",
    +                                            "attributes": [
    +                                                {
    +                                                    "type": "relation",
    +                                                    "name": "internalLink",
    +                                                    "value": "MgibgPcfeuGz",
    +                                                    "isInheritable": false,
    +                                                    "position": 10
    +                                                },
    +                                                {
    +                                                    "type": "relation",
    +                                                    "name": "internalLink",
    +                                                    "value": "HcABDtFCkbFN",
    +                                                    "isInheritable": false,
    +                                                    "position": 20
    +                                                },
    +                                                {
    +                                                    "type": "relation",
    +                                                    "name": "internalLink",
    +                                                    "value": "6tZeKvSHEUiB",
    +                                                    "isInheritable": false,
    +                                                    "position": 30
    +                                                },
    +                                                {
    +                                                    "type": "relation",
    +                                                    "name": "internalLink",
    +                                                    "value": "i9B4IW7b6V6z",
    +                                                    "isInheritable": false,
    +                                                    "position": 40
    +                                                },
    +                                                {
    +                                                    "type": "label",
    +                                                    "name": "iconClass",
    +                                                    "value": "bx bxs-component",
    +                                                    "isInheritable": false,
    +                                                    "position": 30
    +                                                },
    +                                                {
    +                                                    "type": "label",
    +                                                    "name": "shareAlias",
    +                                                    "value": "builtin-components",
    +                                                    "isInheritable": false,
    +                                                    "position": 50
    +                                                }
    +                                            ],
    +                                            "format": "markdown",
    +                                            "dataFileName": "Built-in components.md",
    +                                            "attachments": [
    +                                                {
    +                                                    "attachmentId": "KtDChJYITDxC",
    +                                                    "title": "image.png",
    +                                                    "role": "image",
    +                                                    "mime": "image/png",
    +                                                    "position": 10,
    +                                                    "dataFileName": "Built-in components_image.png"
    +                                                }
    +                                            ],
    +                                            "dirFileName": "Built-in components",
    +                                            "children": [
    +                                                {
    +                                                    "isClone": false,
    +                                                    "noteId": "i9B4IW7b6V6z",
    +                                                    "notePath": [
    +                                                        "pOsGYCXsbNQG",
    +                                                        "CdNpE2pqjmI6",
    +                                                        "yIhgI5H7A2Sm",
    +                                                        "KLsqhjaqh1QW",
    +                                                        "RSssb9S3xgSr",
    +                                                        "i9B4IW7b6V6z"
    +                                                    ],
    +                                                    "title": "Widget showcase",
    +                                                    "notePosition": 10,
    +                                                    "prefix": null,
    +                                                    "isExpanded": false,
    +                                                    "type": "code",
    +                                                    "mime": "text/jsx",
    +                                                    "attributes": [
    +                                                        {
    +                                                            "type": "label",
    +                                                            "name": "shareAlias",
    +                                                            "value": "widget-showcase",
    +                                                            "isInheritable": false,
    +                                                            "position": 30
    +                                                        }
    +                                                    ],
    +                                                    "dataFileName": "Widget showcase.jsx",
    +                                                    "attachments": []
    +                                                }
    +                                            ]
    +                                        }
    +                                    ]
                                     }
                                 ]
                             },
    @@ -16340,6 +16969,98 @@
                                     }
                                 ]
                             },
    +                        {
    +                            "isClone": false,
    +                            "noteId": "wqXwKJl6VpNk",
    +                            "notePath": [
    +                                "pOsGYCXsbNQG",
    +                                "CdNpE2pqjmI6",
    +                                "wqXwKJl6VpNk"
    +                            ],
    +                            "title": "Common concepts",
    +                            "notePosition": 40,
    +                            "prefix": null,
    +                            "isExpanded": false,
    +                            "type": "text",
    +                            "mime": "text/html",
    +                            "attributes": [
    +                                {
    +                                    "type": "label",
    +                                    "name": "iconClass",
    +                                    "value": "bx bxl-nodejs",
    +                                    "isInheritable": false,
    +                                    "position": 30
    +                                },
    +                                {
    +                                    "type": "label",
    +                                    "name": "shareAlias",
    +                                    "value": "common-concepts",
    +                                    "isInheritable": false,
    +                                    "position": 40
    +                                }
    +                            ],
    +                            "format": "markdown",
    +                            "attachments": [],
    +                            "dirFileName": "Common concepts",
    +                            "children": [
    +                                {
    +                                    "isClone": false,
    +                                    "noteId": "hA834UaHhSNn",
    +                                    "notePath": [
    +                                        "pOsGYCXsbNQG",
    +                                        "CdNpE2pqjmI6",
    +                                        "wqXwKJl6VpNk",
    +                                        "hA834UaHhSNn"
    +                                    ],
    +                                    "title": "Script bundles",
    +                                    "notePosition": 10,
    +                                    "prefix": null,
    +                                    "isExpanded": false,
    +                                    "type": "text",
    +                                    "mime": "text/html",
    +                                    "attributes": [
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "HcABDtFCkbFN",
    +                                            "isInheritable": false,
    +                                            "position": 10
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "6f9hih2hXXZk",
    +                                            "isInheritable": false,
    +                                            "position": 20
    +                                        },
    +                                        {
    +                                            "type": "relation",
    +                                            "name": "internalLink",
    +                                            "value": "IakOLONlIfGI",
    +                                            "isInheritable": false,
    +                                            "position": 30
    +                                        },
    +                                        {
    +                                            "type": "label",
    +                                            "name": "iconClass",
    +                                            "value": "bx bx-package",
    +                                            "isInheritable": false,
    +                                            "position": 30
    +                                        },
    +                                        {
    +                                            "type": "label",
    +                                            "name": "shareAlias",
    +                                            "value": "bundles",
    +                                            "isInheritable": false,
    +                                            "position": 60
    +                                        }
    +                                    ],
    +                                    "format": "markdown",
    +                                    "dataFileName": "Script bundles.md",
    +                                    "attachments": []
    +                                }
    +                            ]
    +                        },
                             {
                                 "isClone": false,
                                 "noteId": "GLks18SNjxmC",
    @@ -16349,7 +17070,7 @@
                                     "GLks18SNjxmC"
                                 ],
                                 "title": "Script API",
    -                            "notePosition": 100,
    +                            "notePosition": 110,
                                 "prefix": null,
                                 "isExpanded": false,
                                 "type": "text",
    @@ -16547,7 +17268,7 @@
                                     "vElnKeDNPSVl"
                                 ],
                                 "title": "Logging",
    -                            "notePosition": 110,
    +                            "notePosition": 120,
                                 "prefix": null,
                                 "isExpanded": false,
                                 "type": "text",
    diff --git a/docs/User Guide/User Guide/Advanced Usage/Database/Demo Notes.md b/docs/User Guide/User Guide/Advanced Usage/Database/Demo Notes.md
    index a8e74fe53..df8af0f6f 100644
    --- a/docs/User Guide/User Guide/Advanced Usage/Database/Demo Notes.md	
    +++ b/docs/User Guide/User Guide/Advanced Usage/Database/Demo Notes.md	
    @@ -13,7 +13,7 @@ There are some cases in which you may want to restore the original demo notes. F
     
     You can easily restore the demo notes by using Trilium's built-in import feature by importing them:
     
    -*   Download [this .zip archive](https://github.com/TriliumNext/Trilium/raw/develop/db/demo.zip) with the latest version of the demo notes
    +*   Download [the .zip archive](https://github.com/TriliumNext/Trilium/raw/refs/heads/main/apps/server/src/assets/db/demo.zip) with the latest version of the demo notes
     *   Right click on any note in your tree under which you would like the demo notes to be imported
     *   Click "Import into note"
     *   Select the .zip archive to import it
    \ No newline at end of file
    diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Printing & Exporting as PDF.md b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Printing & Exporting as PDF.md
    index 56b0adb74..b110d09b0 100644
    --- a/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Printing & Exporting as PDF.md	
    +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Notes/Printing & Exporting as PDF.md	
    @@ -59,6 +59,9 @@ Since v0.100.0, it is possible to print more than one note at the time by using
     
     The resulting collection will contain all the children of the collection, while maintaining the hierarchy.
     
    +> [!NOTE]
    +> Not all note types are supported when printing or exporting to PDF. When an unsupported note is encountered, it is skipped. At the end, if any of the notes were skipped, a message will be displayed with the possibility of viewing the full list of skipped notes. The same limitations as the ones described in _Constraints & limitations_ apply.
    +
     ## Keyboard shortcut
     
     It's possible to trigger both printing and export as PDF from the keyboard by going to _Keyboard shortcuts_ in Options and assigning a key combination for:
    @@ -76,12 +79,12 @@ Not all Note Types 
     *   For Collections, the following are supported:
         *   List View, allowing to print multiple notes at once while preserving hierarchy (similar to a book).
         *   Presentation, where each slide/sub-note is displayed.
    +        *   Most note types are supported, especially the ones that have an image representation such as Canvas and Mind Map.
         *   Table, where the table is rendered in a print-friendly way.
             *   Tables that are too complex (especially if they have multiple columns) might not fit properly, however tables with a large number of rows are supported thanks to pagination.
             *   Consider printing in landscape mode, or using `#printLandscape` if exporting to PDF.
         *   The rest of the collections are not supported, but we plan to add support for all the collection types at some point.
    -*   Using Custom app-wide CSS for printing is not longer supported, due to a more stable but isolated mechanism.
    -    *   We plan to introduce a new mechanism specifically for a print CSS.
    +*   Using Custom app-wide CSS for printing is no longer supported, instead a custom `printCss` relation needs to be used (see below).
     
     ## Customizing the print CSS
     
    diff --git a/docs/User Guide/User Guide/Basic Concepts and Features/Themes/Icon Packs.md b/docs/User Guide/User Guide/Basic Concepts and Features/Themes/Icon Packs.md
    new file mode 100644
    index 000000000..84b3a9330
    --- /dev/null
    +++ b/docs/User Guide/User Guide/Basic Concepts and Features/Themes/Icon Packs.md	
    @@ -0,0 +1,50 @@
    +# Icon Packs
    +## Importing an existing icon pack
    +
    +Icon packs are specific to Trilium, so they must either be created from scratch (see below) or imported from a ZIP file from a third-party developer.
    +
    +> [!NOTE]
    +> **Icon packs are third-party content**  
    +>   
    +> The Trilium maintainers are not responsible for keeping these icon packs up to date. If you have an issue with a specific icon pack, then the issue must be reported to the third-party developer responsible for it, not the Trilium team.
    +
    +To import an icon pack:
    +
    +1.  Ideally, create a dedicated spot in your note tree where to place the icon packs.
    +2.  Right click the note where to put it and select _Import into note_.
    +3.  Uncheck _Safe import_.
    +4.  Select _Import_.
    +5.  [Refresh the application](../../Troubleshooting/Refreshing%20the%20application.md).
    +
    +> [!WARNING]
    +> Since _Safe import_ is disabled, make sure you trust the source as it could contain dangerous third-party scripts. One good way to check if the icon pack is safe is to manually extract the .zip and inspect the file contents. Icon packs should only contain a font file and a JSON file. Other files (especially scripts) are to be considered harmful.
    +
    +## Creating an icon pack
    +
    +Creating an icon pack requires some scripting knowledge outside Trilium in order to generate the list of icons. For information, see Creating an icon pack.
    +
    +## Using an icon from an icon pack
    +
    +After [refreshing the application](../../Troubleshooting/Refreshing%20the%20application.md), the icon pack should be enabled by default. To test this, simply select an existing note or create a new one and try to change the note icon.
    +
    +There should be a _Filter_ button to the right of the search bar in the icon list. Clicking it allows filtering by icon pack and the newly imported icon pack should be displayed there.
    +
    +> [!NOTE]
    +> If the icon pack is missing from that list, then most likely there's something wrong with it.
    +> 
    +> *   Try checking the Backend (server) logs for clues and make sure that the icon pack has the `#iconPack` [label](../../Advanced%20Usage/Attributes/Labels.md) with a value assigned to it (a prefix).
    +> *   Icon packs that are [protected](../Notes/Protected%20Notes.md) are ignored.
    +
    +## Integration with the share and export functionality
    +
    +Custom icon packs are also supported by the Sharing feature, where they will be shown in the note tree. However, in order for an icon pack to be visible to the share function, the icon pack note must also be shared.
    +
    +If you are using a custom share theme, make sure it supports the `iconPackCss`, otherwise icons will not show up. Check the original share template source code for reference.
    +
    +Custom icon packs will also be preserved when Exporting static HTML for web publishing. In this case, there's no requirement to make the icon pack shared.
    +
    +## What happens if I remove an icon pack
    +
    +If an icon pack is removed or disabled (by removing or altering its `#iconPack` label), all the notes that use this icon pack will show in the Note Tree with no icon. This won't cause any issues apart from looking strange.
    +
    +The solution is to replace the icons with some else, try using Search which supports bulk actions, to identify the notes with the now deleted icon pack (by looking for the prefix) and changing or removing their `iconClass`.
    \ No newline at end of file
    diff --git a/docs/User Guide/User Guide/Note Types/Render Note.md b/docs/User Guide/User Guide/Note Types/Render Note.md
    index 2b0f3d5cd..01e2e1c24 100644
    --- a/docs/User Guide/User Guide/Note Types/Render Note.md	
    +++ b/docs/User Guide/User Guide/Note Types/Render Note.md	
    @@ -9,7 +9,7 @@ Render Note is used in Scripti
     2.  Create a Render Note.
     3.  Assign the `renderNote` [relation](../Advanced%20Usage/Attributes.md) to point at the previously created code note.
     
    -## Dynamic content
    +## Legacy scripting using jQuery
     
     A static HTML is generally not enough for Scripting. The next step is to automatically change parts of the note using JavaScript.
     
    @@ -24,7 +24,7 @@ The current date & time is 
     
     Now we need to add the script. Create another Code, but this time of JavaScript (frontend) language. Make sure the newly created note is a direct child of the HTML note created previously; with the following content:
     
    -```
    +```javascript
     const $dateEl = api.$container.find(".date");
     $dateEl.text(new Date());
     ```
    @@ -34,6 +34,28 @@ Now create a render note at any place and set its `~renderNote` relation to poin
     > **Current date & time**  
     > The current date & time is Sun Apr 06 2025 15:26:29 GMT+0300 (Eastern European Summer Time)
     
    +## Dynamic content using Preact & JSX
    +
    +As a more modern alternative to jQuery, it's possible to use Preact & JSX to render pages. Since JSX is a superset of JavaScript, there's no need to provide a HTML anymore.
    +
    +Here are the steps to creating a simple render note:
    +
    +1.  Create a note of type Render Note.
    +2.  Create a child Code note with JSX as the language.  
    +    As an example, use the following content:
    +    
    +    ```
    +    export default function() {
    +        return (
    +            <>
    +                

    Hello world.

    + + ); + } + ``` +3. In the parent render note, define a `~renderNote` relation pointing to the newly created child. +4. Refresh the render note and it should display a “Hello world” message. + ## Refreshing the note It's possible to refresh the note via: diff --git a/docs/User Guide/User Guide/Scripting/Common concepts/Script bundles.md b/docs/User Guide/User Guide/Scripting/Common concepts/Script bundles.md new file mode 100644 index 000000000..241dff0b4 --- /dev/null +++ b/docs/User Guide/User Guide/Scripting/Common concepts/Script bundles.md @@ -0,0 +1,48 @@ +# Script bundles +For both Render Note and more complicated scripts, it's generally useful to split the code into multiple Code notes. + +When a script is run, the sub-children of the script being run (or the Render Note) are checked for children. If the children are Code notes of the corresponding type (front-end or backend) as the code being run, they will be evaluated as well. + +The collection of a script and its child notes is called a _bundle_. A child note inside a bundle is called a _module_. + +As a basic example of dependencies, consider the following note structure: + +* _Script with dependency_ + + ```javascript + api.log(MyMath.sum(2, 2)); + ``` + + * _MyMath_ + + ```javascript + module.exports = { + sum(a, b) { + return a + b; + } + }; + ``` + +When _Script with dependency_ is run, it will detect _MyMath_ as a submodule and provide the result of its `module.exports` object into a global object with the same name as the note. + +> [!NOTE] +> If the note contains spaces or special characters, they will be stripped. For example `My Nice Note!` becomes `MyNiceNote`. + +## Alternative syntax + +Instead of providing an object to `module.exports`, it's also possible to add fields individually: + +```javascript +module.exports.sum = (a, b) => a + b; +module.exports.subtract = (a, b) => a - b; +``` + +## Ignoring a code script from a bundle + +To ignore a script from being included in a bundle (e.g. if it's unrelated to the parent script note), apply the `#disableInclusion` label. + +## Sharing a module across multiple bundles + +Modules can be reused across multiple scripts by simply cloning the shared module between two modules (see Cloning Notes). + +Optionally, a separate note can be used to contain all the different reusable modules for an easy way to discover them. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets.md b/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets.md index 152d2ec70..dec4cfd3f 100644 --- a/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets.md +++ b/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets.md @@ -1,9 +1,74 @@ # Custom Widgets -It's possible to create custom widget in three possible locations where you can display your custom content. +Custom widgets are a special subset of scripts that render graphical elements in certain parts of the application. These can be used to add new functionality to the Trilium application. -Positions are: +## Preact with JSX vs. vanilla jQuery -* `left-pane` -* `center-pane` -* `note-detail-pane` - located within `center-pane`, but specific to note (split) -* `right-pane` \ No newline at end of file +In older versions of Trilium, custom widgets were exclusively written in a combination of jQuery with Trilium's internal widget architecture (e.g., `BasicWidget`, `NoteContextAwareWidget`). + +Starting with v0.101.0, custom widgets can also be written in JSX using the Preact framework. Both legacy and Preact widgets have the same capabilities, with a single difference: + +* Preact widgets are content-sized by default whereas legacy widgets need `this.contentSized()` applied in the constructor. For more information, see the corresponding section in Troubleshooting. + +Wherever possible, widget examples will be both in the legacy and Preact format. + +## Creating a custom widget + +1. Create a Code note. +2. Set the language to: + 1. JavaScript (frontend) for legacy widgets using jQuery. + 2. JSX for Preact widgets. You might need to go to Options → Code to enable the language first. +3. Apply the `#widget` [label](../../Advanced%20Usage/Attributes/Labels.md). + +## Getting started with a simple example + +Let's start by creating a widget that shows a message near the content area. Follow the previous section to create a code note, and use the following content. + +### Legacy version (jQuery) + +``` +class HelloCenterPane extends api.BasicWidget { + + constructor() { + super(); + this.contentSized(); + } + + get parentWidget() { return "center-pane" } + + doRender() { + this.$widget = $("Center pane"); + } + +} + +module.exports = new HelloCenterPane(); +``` + +[Refresh the application](../../Troubleshooting/Refreshing%20the%20application.md) and the widget should appear underneath the content area. + +### Preact version + +``` +import { defineWidget } from "trilium:preact"; + +export default defineWidget({ + parent: "center-pane", + render: () => Center pane from Preact. +}); +``` + +[Refresh the application](../../Troubleshooting/Refreshing%20the%20application.md) and the widget should appear underneath the content area. + +## Widget location (parent widget) + +A widget can be placed in one of the following sections of the applications: + +
    Value for parentWidgetDescriptionSample widgetSpecial requirements
    left-paneAppears within the same pane that holds the Note Tree.Same as above, with only a different parentWidget.None.
    center-paneIn the content area. If a split is open, the widget will span all of the splits.See example above.None.
    note-detail-pane

    In the content area, inside the note detail area. If a split is open, the widget will be contained inside the split.

    This is ideal if the widget is note-specific.

    Note context aware widget
    • The widget must export a class and not an instance of the class (e.g. no new) because it needs to be multiplied for each note, so that splits work correctly.
    • Since the class is exported instead of an instance, the parentWidget getter must be static, otherwise the widget is ignored.
    right-paneIn the Right Sidebar, as a dedicated section.Right pane widget
    • Although not mandatory, it's best to use a RightPanelWidget instead of a BasicWidget or a NoteContextAwareWidget.
    + +To position the widget somewhere else, just change the value passed to `get parentWidget()` for legacy widgets or the `parent` field for Preact. Do note that some positions such as `note-detail-pane` and `right-pane` have special requirements that need to be accounted for (see the table above). + +## Launch bar widgets + +Launch bar widgets are similar to _Custom widgets_ but are specific to the Launch Bar. See Launch Bar Widgets for more information. + +## Custom position \ No newline at end of file diff --git a/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/CSS.md b/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/CSS.md index ff1a86b27..8d01dc238 100644 --- a/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/CSS.md +++ b/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/CSS.md @@ -1,5 +1,7 @@ # CSS -In `doRender()`: +## Classic widgets + +In `doRender()`:[1] ``` this.cssBlock(`#my-widget { @@ -7,9 +9,13 @@ this.cssBlock(`#my-widget { bottom: 40px; left: 60px; z-index: 1; -}`) +}`); ``` -* * * +## Preact widgets -Reference: [https://trilium.rocks/X7pxYpiu0lgU](https://trilium.rocks/X7pxYpiu0lgU) \ No newline at end of file +See the dedicated page: CSS. + +1. ^ + + Reference: [https://trilium.rocks/X7pxYpiu0lgU](https://trilium.rocks/X7pxYpiu0lgU) \ No newline at end of file diff --git a/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Note context aware widget.md b/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Note context aware widget.md new file mode 100644 index 000000000..2ce223d9e --- /dev/null +++ b/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Note context aware widget.md @@ -0,0 +1,53 @@ +# Note context aware widget +Note context-aware widgets are a different type of widget which automatically react to changes in the current note. + +Important aspects: + +* The widget must export a `class` and not an instance of the class (e.g. `no new`) because it needs to be multiplied for each note, so that splits work correctly. +* Since the `class` is exported instead of an instance, the `parentWidget` getter must be `static`, otherwise the widget is ignored. + +## Example displaying the current note title + +This is a note context-aware widget that simply displays the name the current note.  + +### Classic example + +``` +class HelloNoteDetail extends api.NoteContextAwareWidget { + + constructor() { + super(); + this.contentSized(); + } + + doRender() { + this.$widget = $("
    "); + } + + async refreshWithNote(note) { + this.$widget.text("Current note: " + note.title); + } + + static get parentWidget() { return "note-detail-pane" } + get position() { return 10 } + +} + +module.exports = HelloNoteDetail; +``` + +### Preact (v0.101.0+) + +``` +import { defineWidget, useNoteContext, useNoteProperty } from "trilium:preact"; + +export default defineWidget({ + parent: "note-detail-pane", + position: 10, + render: () => { + const { note } = useNoteContext(); + const title = useNoteProperty(note, "title"); + return Current note JSX: {title}; + } +}); +``` \ No newline at end of file diff --git a/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget.md b/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget.md index 8b3e8a141..2dbba6d21 100644 --- a/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget.md +++ b/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Right pane widget.md @@ -40,6 +40,8 @@ module.exports = new NoteTitleWidget(); A simple widget which will show the current time, as an example on how to dynamically change the content of the widget periodically. +### Legacy widget + ``` const template = `
    `; @@ -62,6 +64,31 @@ class ToDoListWidget extends api.RightPanelWidget { module.exports = new ToDoListWidget(); ``` +### Preact widget + +``` +import { defineWidget, RightPanelWidget, useEffect, useState } from "trilium:preact"; + +export default defineWidget({ + parent: "right-pane", + position: 1, + render() { + const [ time, setTime ] = useState(); + useEffect(() => { + const interval = setInterval(() => { + setTime(new Date().toLocaleString()); + }, 1000); + return () => clearInterval(interval); + }); + return ( + +

    The time is: {time}

    +
    + ); + } +}); +``` + ## Example for old layout Here's a widget that displays a basic message ("Hi"): @@ -105,7 +132,7 @@ By default, the sidebar items are displayed in the order they are found by the a It is possible to make a widget appear higher or lower up, by adjusting its `position` property: -```diff +``` class MyWidget extends api.RightPanelWidget { + get position() { return 20 }; diff --git a/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Widget Basics.md b/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Widget Basics.md index 39867172f..2cac717a0 100644 --- a/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Widget Basics.md +++ b/docs/User Guide/User Guide/Scripting/Frontend Basics/Custom Widgets/Widget Basics.md @@ -108,11 +108,6 @@ class MyWidget extends api.BasicWidget { module.exports = new MyWidget(); ``` -`parentWidget()` can be given the following values: - -* `left-pane` - This renders the widget on the left side of the screen where the note tree lives. -* `center-pane` - This renders the widget in the center of the layout in the same location that notes and splits appear. -* `note-detail-pane` - This renders the widget _with_ the note in the center pane. This means it can appear multiple times with splits. -* `right-pane` - This renders the widget to the right of any opened notes. +For the list of possible values for `parentWidget()`, see Custom Widgets.  [Reload](../../../Troubleshooting/Refreshing%20the%20application.md) the application one last time. When you click the button, a "Hello World!" message should appear, confirming that your widget is fully functional. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Note Title Widget.md b/docs/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Note Title Widget.md index b841061c4..c892e3365 100644 --- a/docs/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Note Title Widget.md +++ b/docs/User Guide/User Guide/Scripting/Frontend Basics/Launch Bar Widgets/Note Title Widget.md @@ -3,6 +3,8 @@ This is an example of a note context-aware widget, which reacts to the currently opened note and refreshes automatically as the user navigates through the notes. +## Legacy widget + In this example, the title of the note is displayed. It works best on the [horizontal layout](../../../Basic%20Concepts%20and%20Features/UI%20Elements/Vertical%20and%20horizontal%20layout.md). ```javascript @@ -29,4 +31,24 @@ class NoteTitleWidget extends api.NoteContextAwareWidget { } module.exports = new NoteTitleWidget(); +``` + +## Preact widget (v0.101.0+) + +```jsx +import { defineLauncherWidget, useActiveNoteContext } from "trilium:preact"; + +export default defineLauncherWidget({ + render: () => { + const { note } = useActiveNoteContext(); + return
    {note?.title}
    ; + } +}); ``` \ No newline at end of file diff --git a/docs/User Guide/User Guide/Scripting/Frontend Basics/Preact.md b/docs/User Guide/User Guide/Scripting/Frontend Basics/Preact.md new file mode 100644 index 000000000..6f05765fc --- /dev/null +++ b/docs/User Guide/User Guide/Scripting/Frontend Basics/Preact.md @@ -0,0 +1,65 @@ +# Preact +Since v0.101.0, Trilium integrates Preact for front-end scripting, including support for JSX. + +Preact can be used for: + +* Render Note, where a JSX code note is used instead of a HTML one. +* Custom Widgets, where JSX can be used to replace the old, jQuery-based mechanism. + +To get started, the first step is to enable JSX in the list of Code languages. Go to Options → Code Notes and check the “JSX” language. Afterwards, proceed with the documentation in either Render Note or Custom Widgets, which will both have a section on how to use the new Preact integration. + +> [!IMPORTANT] +> The documentation assumes prior knowledge with React or Preact. As a starting point, consider the [FreeCodeCamp course on Front End Development Libraries](https://www.freecodecamp.org/learn/front-end-development-libraries-v9/) or the [Preact Tutorial](https://preactjs.com/tutorial/). + +## Import/exports + +When using Preact with JSX, there is a special syntax which provides ES-like imports. This `import` syntax makes way for a more intuitive that doesn't make use of global objects and paves the way for better auto-completion support that might be introduced in the future.  + +### API imports + +Instead of: + +```jsx +api.showMessage("Hello"); +``` + +the JSX version looks like this: + +```jsx +import { showMessage } from "trilium:api"; +showMessage("hello"); +``` + +### Preact API imports (hooks, components) + +There's a new Script API dedicated to Preact, which provides shared components that are also used by Trilium internally as well as hooks, for example. + +```jsx +import { useState } from "trilium:preact"; +const [ myState, setMyState ] = useState("Hi"); +``` + +### Exporting + +JSX notes can export a component for use in Render Note or for Component libraries:  + +```jsx +export default function() { + return ( + <> +

    Hello world.

    + + ); +} +``` + +### Import/export are not required + +These imports are syntactic sugar meant to replace the usage for the `api` global object (see Script API).  + +> [!NOTE] +> The `import` and `export` syntax work only for JSX notes. Standard/jQuery code notes still need to use the `api` global and `module.exports`. + +## Under the hood + +Unlike JavaScript, JSX requires pre-processing to turn it into JavaScript (just like TypeScript). To do so, Trilium uses [Sucrase](https://github.com/alangpierce/sucrase), a JavaScript library which processes the JSX to pure JavaScript. The processing is done each time a script is run (for widgets this happens at every program startup). If you notice any performance degradation due to long compilation, consider [reporting the issue](../../Troubleshooting/Reporting%20issues.md) to us. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Scripting/Frontend Basics/Preact/Built-in components.md b/docs/User Guide/User Guide/Scripting/Frontend Basics/Preact/Built-in components.md new file mode 100644 index 000000000..db05c9255 --- /dev/null +++ b/docs/User Guide/User Guide/Scripting/Frontend Basics/Preact/Built-in components.md @@ -0,0 +1,43 @@ +# Built-in components +
    A partial screenshot from the Widget showcase example (see below).
    + +Trilium comes with its own set of Preact components, some of which are also available to Custom Widgets and Render Note. + +To use these components, simply import them from `trilium:preact`: + +```jsx +import { ActionButton, Button, LinkButton } from "trilium:preact"; +``` + +and then use them: + +```jsx +export default function MyRenderNote() { + const onClick = () => showMessage("A button was pressed"); + + return ( + <> +

    Buttons

    +
    + +
    + + ) +} +``` + +## Widget showcase + +> [!TIP] +> Starting with v0.101.0, the widget showcase is also available in the Demo Notes. + +This is a Render Note example with JSX that shows most of the built-in components that are accessible to custom widgets and JSX render notes. + +To use it, simply: + +1. Create a render note. +2. Create a child code note of JSX type with the content of this file: Widget showcase +3. Set the `~renderNote` relation of the parent note to the child note. +4. Refresh the render note to see the results. \ No newline at end of file diff --git a/docs/User Guide/User Guide/Scripting/Frontend Basics/Preact/Built-in components/Widget showcase.jsx b/docs/User Guide/User Guide/Scripting/Frontend Basics/Preact/Built-in components/Widget showcase.jsx new file mode 100644 index 000000000..6da0b9a5b --- /dev/null +++ b/docs/User Guide/User Guide/Scripting/Frontend Basics/Preact/Built-in components/Widget showcase.jsx @@ -0,0 +1,189 @@ +import { + ActionButton, Button, LinkButton, + Admonition, Collapsible, + FormCheckbox, FormDropdownList, FormFileUploadButton, FormGroup, FormRadioGroup, FormTextArea, + FormTextBox, FormToggle, Slider, RawHtml, LoadingSpinner, Icon, + Dropdown, FormListItem, FormDropdownDivider, FormDropdownSubmenu, + NoteAutocomplete, NoteLink, Modal, + CKEditor, + useEffect, useState +} from "trilium:preact"; +import { showMessage } from "trilium:api"; + +export default function() { + const [ time, setTime ] = useState(); + const lorem = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam accumsan eu odio non gravida. Pellentesque ornare, arcu condimentum molestie dignissim, nibh turpis ultrices elit, eget elementum nunc erat at erat. Maecenas vehicula consectetur elit, nec fermentum elit venenatis eu."; + useEffect(() => { + const interval = setInterval(() => setTime(new Date().toLocaleString()), 1000); + return () => clearInterval(interval); + }, []); + + return ( +
    +

    Widget showcase

    + + + + Admonition
    + {lorem} +
    + + + {lorem} + + + + + + +
    + ); +} + +function Buttons() { + const onClick = () => showMessage("A button was pressed"); + + return ( + <> +

    Buttons

    +
    + +
    + + ) +} + +function FormElements() { + const [ checkboxChecked, setCheckboxChecked ] = useState(false); + const [ dropdownValue, setDropdownValue ] = useState("key-1"); + const [ radioGroupValue, setRadioGroupValue ] = useState("key-1"); + const [ sliderValue, setSliderValue ] = useState(50); + + return ( + <> +

    Form elements

    +
    + + + + + + + + + + + + + + {}} + /> + + + {}} + /> + + + + + + { + const file = files?.[0]; + if (!file) return; + showMessage(`Got file "${file.name}" of size ${file.size} B and type ${file.type}.`); + }} + /> + + + + + + + + + + +
    + + ) +} + +function NoteElements() { + const [ noteId, setNoteId ] = useState(""); + + return ( +
    +

    Note elements

    + + + + + + + {noteId + ? + : Select a note first} + +
    + ); +} + +function ModalSample() { + const [ shown, setShown ] = useState(false); + + return ( + <> +

    Modal

    + <% } %> - <%= note.title %> + <%= note.title %> <% } %> diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 30955aa67..6ed9a117b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -6,7 +6,7 @@ settings: overrides: mermaid: 11.12.2 - preact: 10.28.0 + preact: 10.28.1 roughjs: 4.6.6 '@types/express-serve-static-core': 5.1.0 flat@<5.0.1: '>=5.0.1' @@ -54,7 +54,7 @@ importers: version: 24.10.4 '@vitest/browser-webdriverio': specifier: 4.0.16 - version: 4.0.16(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.16)(webdriverio@9.21.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + version: 4.0.16(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.16)(webdriverio@9.22.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/coverage-v8': specifier: 4.0.16 version: 4.0.16(@vitest/browser@4.0.16(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.16))(vitest@4.0.16) @@ -116,8 +116,8 @@ importers: specifier: ~5.9.0 version: 5.9.3 typescript-eslint: - specifier: 8.50.0 - version: 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.50.1 + version: 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) upath: specifier: 2.0.1 version: 2.0.1 @@ -134,8 +134,8 @@ importers: apps/build-docs: devDependencies: '@redocly/cli': - specifier: 2.14.0 - version: 2.14.0(@opentelemetry/api@1.9.0)(ajv@8.17.1)(bufferutil@4.0.9)(core-js@3.46.0)(encoding@0.1.13)(utf-8-validate@6.0.5) + specifier: 2.14.1 + version: 2.14.1(@opentelemetry/api@1.9.0)(ajv@8.17.1)(bufferutil@4.0.9)(core-js@3.46.0)(encoding@0.1.13)(utf-8-validate@6.0.5) archiver: specifier: 7.0.1 version: 7.0.1 @@ -161,23 +161,23 @@ importers: specifier: 0.18.0 version: 0.18.0(@types/react-dom@19.1.6(@types/react@19.1.7))(@types/react@19.1.7)(react-dom@19.2.3(react@19.2.3))(react@19.2.3) '@fullcalendar/core': - specifier: 6.1.19 - version: 6.1.19 + specifier: 6.1.20 + version: 6.1.20 '@fullcalendar/daygrid': - specifier: 6.1.19 - version: 6.1.19(@fullcalendar/core@6.1.19) + specifier: 6.1.20 + version: 6.1.20(@fullcalendar/core@6.1.20) '@fullcalendar/interaction': - specifier: 6.1.19 - version: 6.1.19(@fullcalendar/core@6.1.19) + specifier: 6.1.20 + version: 6.1.20(@fullcalendar/core@6.1.20) '@fullcalendar/list': - specifier: 6.1.19 - version: 6.1.19(@fullcalendar/core@6.1.19) + specifier: 6.1.20 + version: 6.1.20(@fullcalendar/core@6.1.20) '@fullcalendar/multimonth': - specifier: 6.1.19 - version: 6.1.19(@fullcalendar/core@6.1.19) + specifier: 6.1.20 + version: 6.1.20(@fullcalendar/core@6.1.20) '@fullcalendar/timegrid': - specifier: 6.1.19 - version: 6.1.19(@fullcalendar/core@6.1.19) + specifier: 6.1.20 + version: 6.1.20(@fullcalendar/core@6.1.20) '@maplibre/maplibre-gl-leaflet': specifier: 0.1.3 version: 0.1.3(@types/leaflet@1.9.21)(leaflet@1.9.4)(maplibre-gl@5.6.1) @@ -192,7 +192,7 @@ importers: version: 2.11.8 '@preact/signals': specifier: 2.5.1 - version: 2.5.1(preact@10.28.0) + version: 2.5.1(preact@10.28.1) '@triliumnext/ckeditor5': specifier: workspace:* version: link:../../packages/ckeditor5 @@ -287,11 +287,14 @@ importers: specifier: 9.4.3 version: 9.4.3 preact: - specifier: 10.28.0 - version: 10.28.0 + specifier: 10.28.1 + version: 10.28.1 react-i18next: specifier: 16.5.0 version: 16.5.0(i18next@25.7.3(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) + react-window: + specifier: 2.2.3 + version: 2.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3) reveal.js: specifier: 5.2.1 version: 5.2.1 @@ -310,7 +313,7 @@ importers: version: 5.0.0 '@preact/preset-vite': specifier: 2.10.2 - version: 2.10.2(@babel/core@7.28.0)(preact@10.28.0)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.10.2(@babel/core@7.28.0)(preact@10.28.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@types/bootstrap': specifier: 5.2.10 version: 5.2.10 @@ -483,6 +486,15 @@ importers: specifier: 11.3.3 version: 11.3.3 + apps/icon-pack-builder: + devDependencies: + '@mdi/font': + specifier: 7.4.47 + version: 7.4.47 + '@phosphor-icons/web': + specifier: 2.1.2 + version: 2.1.2 + apps/server: dependencies: better-sqlite3: @@ -494,6 +506,9 @@ importers: node-html-parser: specifier: 7.0.1 version: 7.0.1 + sucrase: + specifier: 3.35.1 + version: 3.35.1 devDependencies: '@anthropic-ai/sdk': specifier: 0.71.2 @@ -506,7 +521,7 @@ importers: version: 2.1.3(electron@39.2.7) '@preact/preset-vite': specifier: 2.10.2 - version: 2.10.2(@babel/core@7.28.0)(preact@10.28.0)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.10.2(@babel/core@7.28.0)(preact@10.28.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@triliumnext/commons': specifier: workspace:* version: link:../../packages/commons @@ -805,21 +820,21 @@ importers: specifier: 3.0.2 version: 3.0.2(encoding@0.1.13) preact: - specifier: 10.28.0 - version: 10.28.0 + specifier: 10.28.1 + version: 10.28.1 preact-iso: specifier: 2.11.1 - version: 2.11.1(preact-render-to-string@6.6.4(preact@10.28.0))(preact@10.28.0) + version: 2.11.1(preact-render-to-string@6.6.4(preact@10.28.1))(preact@10.28.1) preact-render-to-string: specifier: 6.6.4 - version: 6.6.4(preact@10.28.0) + version: 6.6.4(preact@10.28.1) react-i18next: specifier: 16.5.0 version: 16.5.0(i18next@25.7.3(typescript@5.9.3))(react-dom@19.2.3(react@19.2.3))(react@19.2.3)(typescript@5.9.3) devDependencies: '@preact/preset-vite': specifier: 2.10.2 - version: 2.10.2(@babel/core@7.28.0)(preact@10.28.0)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + version: 2.10.2(@babel/core@7.28.0)(preact@10.28.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) eslint: specifier: 9.39.2 version: 9.39.2(jiti@2.6.1) @@ -876,8 +891,8 @@ importers: packages/ckeditor5-admonition: devDependencies: '@ckeditor/ckeditor5-dev-build-tools': - specifier: 54.2.2 - version: 54.2.2(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3) + specifier: 54.2.3 + version: 54.2.3(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3) '@ckeditor/ckeditor5-inspector': specifier: '>=4.1.0' version: 5.0.0 @@ -886,10 +901,10 @@ importers: version: 5.0.1(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.4)(bufferutil@4.0.9)(esbuild@0.27.2)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': specifier: ~8.50.0 - version: 8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.50.0 - version: 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.50.1 + version: 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 4.0.16 version: 4.0.16(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.16) @@ -930,14 +945,14 @@ importers: specifier: 4.0.16 version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-webdriverio@4.0.16)(@vitest/ui@4.0.16)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: - specifier: 9.21.0 - version: 9.21.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 9.22.0 + version: 9.22.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/ckeditor5-footnotes: devDependencies: '@ckeditor/ckeditor5-dev-build-tools': - specifier: 54.2.2 - version: 54.2.2(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3) + specifier: 54.2.3 + version: 54.2.3(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3) '@ckeditor/ckeditor5-inspector': specifier: '>=4.1.0' version: 5.0.0 @@ -946,10 +961,10 @@ importers: version: 5.0.1(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.4)(bufferutil@4.0.9)(esbuild@0.27.2)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': specifier: ~8.50.0 - version: 8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.50.0 - version: 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.50.1 + version: 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 4.0.16 version: 4.0.16(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.16) @@ -990,14 +1005,14 @@ importers: specifier: 4.0.16 version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-webdriverio@4.0.16)(@vitest/ui@4.0.16)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: - specifier: 9.21.0 - version: 9.21.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 9.22.0 + version: 9.22.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/ckeditor5-keyboard-marker: devDependencies: '@ckeditor/ckeditor5-dev-build-tools': - specifier: 54.2.2 - version: 54.2.2(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3) + specifier: 54.2.3 + version: 54.2.3(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3) '@ckeditor/ckeditor5-inspector': specifier: '>=4.1.0' version: 5.0.0 @@ -1006,10 +1021,10 @@ importers: version: 5.0.1(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.4)(bufferutil@4.0.9)(esbuild@0.27.2)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': specifier: ~8.50.0 - version: 8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.50.0 - version: 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.50.1 + version: 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 4.0.16 version: 4.0.16(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.16) @@ -1050,8 +1065,8 @@ importers: specifier: 4.0.16 version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-webdriverio@4.0.16)(@vitest/ui@4.0.16)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: - specifier: 9.21.0 - version: 9.21.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 9.22.0 + version: 9.22.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/ckeditor5-math: dependencies: @@ -1060,8 +1075,8 @@ importers: version: 47.3.0 devDependencies: '@ckeditor/ckeditor5-dev-build-tools': - specifier: 54.2.2 - version: 54.2.2(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3) + specifier: 54.2.3 + version: 54.2.3(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3) '@ckeditor/ckeditor5-inspector': specifier: '>=4.1.0' version: 5.0.0 @@ -1070,10 +1085,10 @@ importers: version: 5.0.1(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.4)(bufferutil@4.0.9)(esbuild@0.27.2)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': specifier: ~8.50.0 - version: 8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.50.0 - version: 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.50.1 + version: 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 4.0.16 version: 4.0.16(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.16) @@ -1114,8 +1129,8 @@ importers: specifier: 4.0.16 version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-webdriverio@4.0.16)(@vitest/ui@4.0.16)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: - specifier: 9.21.0 - version: 9.21.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 9.22.0 + version: 9.22.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/ckeditor5-mermaid: dependencies: @@ -1127,8 +1142,8 @@ importers: version: 4.17.22 devDependencies: '@ckeditor/ckeditor5-dev-build-tools': - specifier: 54.2.2 - version: 54.2.2(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3) + specifier: 54.2.3 + version: 54.2.3(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3) '@ckeditor/ckeditor5-inspector': specifier: '>=4.1.0' version: 5.0.0 @@ -1137,10 +1152,10 @@ importers: version: 5.0.1(@babel/core@7.28.0)(@swc/core@1.11.29(@swc/helpers@0.5.17))(@types/node@24.10.4)(bufferutil@4.0.9)(esbuild@0.27.2)(utf-8-validate@6.0.5) '@typescript-eslint/eslint-plugin': specifier: ~8.50.0 - version: 8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + version: 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.50.0 - version: 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.50.1 + version: 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@vitest/browser': specifier: 4.0.16 version: 4.0.16(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.16) @@ -1181,8 +1196,8 @@ importers: specifier: 4.0.16 version: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-webdriverio@4.0.16)(@vitest/ui@4.0.16)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) webdriverio: - specifier: 9.21.0 - version: 9.21.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + specifier: 9.22.0 + version: 9.22.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) packages/codemirror: dependencies: @@ -1220,89 +1235,89 @@ importers: specifier: 6.5.11 version: 6.5.11 '@codemirror/view': - specifier: 6.39.4 - version: 6.39.4 + specifier: 6.39.7 + version: 6.39.7 '@fsegurai/codemirror-theme-abcdef': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-abyss': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-android-studio': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-andromeda': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-basic-dark': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-basic-light': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-cobalt2': specifier: 6.0.3 - version: 6.0.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.0.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-forest': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-github-dark': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-github-light': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-gruvbox-dark': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-gruvbox-light': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-material-dark': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-material-light': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-monokai': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-nord': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-palenight': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-solarized-dark': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-solarized-light': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-tokyo-night-day': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-tokyo-night-storm': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-volcano': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-vscode-dark': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@fsegurai/codemirror-theme-vscode-light': specifier: 6.2.3 - version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1) + version: 6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1) '@replit/codemirror-indentation-markers': specifier: 6.5.3 - version: 6.5.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4) + version: 6.5.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7) '@replit/codemirror-lang-nix': specifier: 6.0.1 - version: 6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2) + version: 6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2) '@replit/codemirror-vim': specifier: 6.3.0 - version: 6.3.0(@codemirror/commands@6.10.1)(@codemirror/language@6.11.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4) + version: 6.3.0(@codemirror/commands@6.10.1)(@codemirror/language@6.11.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7) '@ssddanbrown/codemirror-lang-smarty': specifier: 1.0.0 version: 1.0.0 @@ -1360,9 +1375,6 @@ importers: packages/share-theme: dependencies: - boxicons: - specifier: 2.1.4 - version: 2.1.4 fuse.js: specifier: 7.1.0 version: 7.1.0 @@ -1380,11 +1392,11 @@ importers: specifier: workspace:* version: link:../ckeditor5 '@typescript-eslint/eslint-plugin': - specifier: 8.50.0 - version: 8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.50.1 + version: 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) '@typescript-eslint/parser': - specifier: 8.50.0 - version: 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + specifier: 8.50.1 + version: 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) dotenv: specifier: 17.2.3 version: 17.2.3 @@ -1728,8 +1740,8 @@ packages: '@braintree/sanitize-url@7.1.1': resolution: {integrity: sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==} - '@bufbuild/protobuf@2.10.1': - resolution: {integrity: sha512-ckS3+vyJb5qGpEYv/s1OebUHDi/xSNtfgw1wqKZo7MR9F2z+qXr0q5XagafAG/9O0QPVIUfST0smluYSTpYFkg==} + '@bufbuild/protobuf@2.10.2': + resolution: {integrity: sha512-uFsRXwIGyu+r6AMdz+XijIIZJYpoWeYzILt5yZ2d3mCjQrWUTVpVD9WL/jZAbvp+Ed04rOhrsk7FiTcEDseB5A==} '@bundled-es-modules/cookie@2.0.1': resolution: {integrity: sha512-8o+5fRPLNbjbdGRRmJj3h6Hh1AQJf2dk3qQ/5ZFb+PXkRNiSoMGGUKlsgLfrxneb72axVJyIYji64E2+nNfYyw==} @@ -1818,8 +1830,8 @@ packages: '@ckeditor/ckeditor5-core@47.3.0': resolution: {integrity: sha512-jLawN3a8yL5lbwG8gZeJihcVKkDgq+rAFeXc+Rd+nw+c5uGCdkc5F7PCRjhw+JOGruXUhNsbiF/4iNv3hUcO/A==} - '@ckeditor/ckeditor5-dev-build-tools@54.2.2': - resolution: {integrity: sha512-egwMBsMupTwEuGgoMUGFc+Nzq5teULlaqzR03OEMnex8bVTyAc1sI0x4nOeh1ST4P495y2GkHoOozpGRVIb24Q==} + '@ckeditor/ckeditor5-dev-build-tools@54.2.3': + resolution: {integrity: sha512-Bc8EjAQY0DLnBTXurmYAJn9NEHCHV62sMQ8YKYtt54SjkHClEKohmptkcwEBvvSki6dHrj0X8laZrHD4UM+mWw==} engines: {node: '>=24.11.0', npm: '>=5.7.1'} hasBin: true @@ -2100,8 +2112,8 @@ packages: '@codemirror/theme-one-dark@6.1.2': resolution: {integrity: sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==} - '@codemirror/view@6.39.4': - resolution: {integrity: sha512-xMF6OfEAUVY5Waega4juo1QGACfNkNF+aJLqpd8oUJz96ms2zbfQ9Gh35/tI3y8akEV31FruKfj7hBnIU/nkqA==} + '@codemirror/view@6.39.7': + resolution: {integrity: sha512-3Vif9hnNHJnl2YgOtkR/wzGzhYcQ8gy3LGdUhkLUU8xSBbgsTxrE8he/CMTpeINm5TgxLe2FmzvF6IYQL/BSAg==} '@colors/colors@1.5.0': resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} @@ -3267,33 +3279,33 @@ packages: '@codemirror/view': ^6.0.0 '@lezer/highlight': ^1.0.0 - '@fullcalendar/core@6.1.19': - resolution: {integrity: sha512-z0aVlO5e4Wah6p6mouM0UEqtRf1MZZPt4mwzEyU6kusaNL+dlWQgAasF2cK23hwT4cmxkEmr4inULXgpyeExdQ==} + '@fullcalendar/core@6.1.20': + resolution: {integrity: sha512-1cukXLlePFiJ8YKXn/4tMKsy0etxYLCkXk8nUCFi11nRONF2Ba2CD5b21/ovtOO2tL6afTJfwmc1ed3HG7eB1g==} - '@fullcalendar/daygrid@6.1.19': - resolution: {integrity: sha512-IAAfnMICnVWPjpT4zi87i3FEw0xxSza0avqY/HedKEz+l5MTBYvCDPOWDATpzXoLut3aACsjktIyw9thvIcRYQ==} + '@fullcalendar/daygrid@6.1.20': + resolution: {integrity: sha512-AO9vqhkLP77EesmJzuU+IGXgxNulsA8mgQHynclJ8U70vSwAVnbcLG9qftiTAFSlZjiY/NvhE7sflve6cJelyQ==} peerDependencies: - '@fullcalendar/core': ~6.1.19 + '@fullcalendar/core': ~6.1.20 - '@fullcalendar/interaction@6.1.19': - resolution: {integrity: sha512-GOciy79xe8JMVp+1evAU3ytdwN/7tv35t5i1vFkifiuWcQMLC/JnLg/RA2s4sYmQwoYhTw/p4GLcP0gO5B3X5w==} + '@fullcalendar/interaction@6.1.20': + resolution: {integrity: sha512-p6txmc5txL0bMiPaJxe2ip6o0T384TyoD2KGdsU6UjZ5yoBlaY+dg7kxfnYKpYMzEJLG58n+URrHr2PgNL2fyA==} peerDependencies: - '@fullcalendar/core': ~6.1.19 + '@fullcalendar/core': ~6.1.20 - '@fullcalendar/list@6.1.19': - resolution: {integrity: sha512-knZHpAVF0LbzZpSJSUmLUUzF0XlU/MRGK+Py2s0/mP93bCtno1k2L3XPs/kzh528hSjehwLm89RgKTSfW1P6cA==} + '@fullcalendar/list@6.1.20': + resolution: {integrity: sha512-7Hzkbb7uuSqrXwTyD0Ld/7SwWNxPD6SlU548vtkIpH55rZ4qquwtwYdMPgorHos5OynHA4OUrZNcH51CjrCf2g==} peerDependencies: - '@fullcalendar/core': ~6.1.19 + '@fullcalendar/core': ~6.1.20 - '@fullcalendar/multimonth@6.1.19': - resolution: {integrity: sha512-YYP8o/tjNLFRKhelwiq5ja3Jm3WDf3bfOUHf32JvAWwfotCvZjD7tYv66Nj02mQ8OWWJINa2EQGJxFHgIs14aA==} + '@fullcalendar/multimonth@6.1.20': + resolution: {integrity: sha512-rMMiPBA71lUJ1DV/0ckPtN4/G4LozkkDKoG7/CbmTYqFJiMRskM/1WpilhtRn4iUdNe03V5K7ofFQRs0wo4ZtQ==} peerDependencies: - '@fullcalendar/core': ~6.1.19 + '@fullcalendar/core': ~6.1.20 - '@fullcalendar/timegrid@6.1.19': - resolution: {integrity: sha512-OuzpUueyO9wB5OZ8rs7TWIoqvu4v3yEqdDxZ2VcsMldCpYJRiOe7yHWKr4ap5Tb0fs7Rjbserc/b6Nt7ol6BRg==} + '@fullcalendar/timegrid@6.1.20': + resolution: {integrity: sha512-4H+/MWbz3ntA50lrPif+7TsvMeX3R1GSYjiLULz0+zEJ7/Yfd9pupZmAwUs/PBpA6aAcFmeRr0laWfcz1a9V1A==} peerDependencies: - '@fullcalendar/core': ~6.1.19 + '@fullcalendar/core': ~6.1.20 '@gar/promisify@1.1.3': resolution: {integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==} @@ -3736,6 +3748,9 @@ packages: '@marijn/find-cluster-break@1.0.2': resolution: {integrity: sha512-l0h88YhZFyKdXIFNfSWpyjStDjGHwZ/U7iobcK1cQQD8sejsONdQtTVU+1wVN1PBw40PiiHB1vA5S7VTfQiP9g==} + '@mdi/font@7.4.47': + resolution: {integrity: sha512-43MtGpd585SNzHZPcYowu/84Vz2a2g31TvPMTm9uTiCSWzaheQySUcSyUH/46fPnuPQWof2yd0pGBtzee/IQWw==} + '@mdn/browser-compat-data@5.7.6': resolution: {integrity: sha512-7xdrMX0Wk7grrTZQwAoy1GkvPMFoizStUoL+VmtUkAxegbCCec+3FKwOM6yc/uGU5+BEczQHXAlWiqvM8JeENg==} @@ -4029,6 +4044,9 @@ packages: resolution: {integrity: sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==} engines: {node: '>= 10.0.0'} + '@phosphor-icons/web@2.1.2': + resolution: {integrity: sha512-rPAR9o/bEcp4Cw4DEeZHXf+nlGCMNGkNDRizYHM47NLxz9vvEHp/Tt6FMK1NcWadzw/pFDPnRBGi/ofRya958A==} + '@pkgjs/parseargs@0.11.0': resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} engines: {node: '>=14'} @@ -4056,7 +4074,7 @@ packages: '@preact/signals@2.5.1': resolution: {integrity: sha512-VPjk5YFt7i11Fi4UK0tzaEe5xLwfhUxXL3l89ocxQ5aPz7bRo8M5+N73LjBMPklyXKYKz6YsNo4Smp8n6nplng==} peerDependencies: - preact: 10.28.0 + preact: 10.28.1 '@prefresh/babel-plugin@0.5.2': resolution: {integrity: sha512-AOl4HG6dAxWkJ5ndPHBgBa49oo/9bOiJuRDKHLSTyH+Fd9x00shTXpdiTj1W41l6oQIwUOAgJeHMn4QwIDpHkA==} @@ -4064,7 +4082,7 @@ packages: '@prefresh/core@1.5.5': resolution: {integrity: sha512-H6GTXUl4V4fe3ijz7yhSa/mZ+pGSOh7XaJb6uP/sQsagBx9yl0D1HKDaeoMQA8Ad2Xm27LqvbitMGSdY9UFSKQ==} peerDependencies: - preact: 10.28.0 + preact: 10.28.1 '@prefresh/utils@1.2.1': resolution: {integrity: sha512-vq/sIuN5nYfYzvyayXI4C2QkprfNaHUQ9ZX+3xLD8nL3rWyzpxOm1+K7RtMbhd+66QcaISViK7amjnheQ/4WZw==} @@ -4072,7 +4090,7 @@ packages: '@prefresh/vite@2.4.8': resolution: {integrity: sha512-H7vlo9UbJInuRbZhRQrdgVqLP7qKjDoX7TgYWWwIVhEHeHO0hZ4zyicvwBrV1wX5A3EPOmArgRkUaN7cPI2VXQ==} peerDependencies: - preact: 10.28.0 + preact: 10.28.1 vite: '>=2.0.0' '@promptbook/utils@0.69.5': @@ -4398,8 +4416,8 @@ packages: '@redocly/ajv@8.17.1': resolution: {integrity: sha512-EDtsGZS964mf9zAUXAl9Ew16eYbeyAFWhsPr0fX6oaJxgd8rApYlPBf0joyhnUHz88WxrigyFtTaqqzXNzPgqw==} - '@redocly/cli@2.14.0': - resolution: {integrity: sha512-LvVYV7KJGtVqltBc8Cbw2s4QpFOzend5nCsgR1JgWvHNt70f1AzqoHr5y7GO+3ThwumrTzPvjta+Ln+n3x5NmA==} + '@redocly/cli@2.14.1': + resolution: {integrity: sha512-Fz9qSkUz/CZgO4xnlPiRBMjwTqH1VxKlO3y8gOrEHOtr2v4peO2Fvbpz30iipTHkbrCt8UorZelXM1TEqkYHSQ==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} hasBin: true @@ -4413,12 +4431,12 @@ packages: resolution: {integrity: sha512-0EbE8LRbkogtcCXU7liAyC00n9uNG9hJ+eMyHFdUsy9lB/WGqnEBgwjA9q2cyzAVcdTkQqTBBU1XePNnN3OijA==} engines: {node: '>=18.17.0', npm: '>=9.5.0'} - '@redocly/openapi-core@2.14.0': - resolution: {integrity: sha512-GeSIesfbh5TdqoWBu7wPzCAGUvKfLBnN60rKnhZCyxrs6M0tn7GYhtET+P5HsNlXmvW4vFNDBlLDoATW/dKrrQ==} + '@redocly/openapi-core@2.14.1': + resolution: {integrity: sha512-WKjfdnUalQfNnQfbkCg+uXEDydq7/g8t1VbzK6Nm6M/4JBjQlnUdo5kV9CLWM3IcdVHm9idovIW6cej2NRb2eA==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} - '@redocly/respect-core@2.14.0': - resolution: {integrity: sha512-7HYB66oNUOcBjBZpK/i5xPpXIYXt09a98WX0subaAQZJinLGq8D3hbgLAp+pXZgosHNeZ0QKahOExsZ25JZSHw==} + '@redocly/respect-core@2.14.1': + resolution: {integrity: sha512-WhAvjiEAbfd1unNAqVCTFny2PkuVOAK1eZ5JE6p1iHgLIoLZX0tdjM1+ht56AWE2hZ/TkcKDDP45GDqfBymi0w==} engines: {node: '>=22.12.0 || >=20.19.0 <21.0.0', npm: '>=10'} '@replit/codemirror-indentation-markers@6.5.3': @@ -5709,11 +5727,11 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/eslint-plugin@8.50.0': - resolution: {integrity: sha512-O7QnmOXYKVtPrfYzMolrCTfkezCJS9+ljLdKW/+DCvRsc3UAz+sbH6Xcsv7p30+0OwUbeWfUDAQE0vpabZ3QLg==} + '@typescript-eslint/eslint-plugin@8.50.1': + resolution: {integrity: sha512-PKhLGDq3JAg0Jk/aK890knnqduuI/Qj+udH7wCf0217IGi4gt+acgCyPVe79qoT+qKUvHMDQkwJeKW9fwl8Cyw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.50.0 + '@typescript-eslint/parser': ^8.50.1 eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' @@ -5724,8 +5742,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/parser@8.50.0': - resolution: {integrity: sha512-6/cmF2piao+f6wSxUsJLZjck7OQsYyRtcOZS02k7XINSNlz93v6emM8WutDQSXnroG2xwYlEVHJI+cPA7CPM3Q==} + '@typescript-eslint/parser@8.50.1': + resolution: {integrity: sha512-hM5faZwg7aVNa819m/5r7D0h0c9yC4DUlWAOvHAtISdFTc8xB86VmX5Xqabrama3wIPJ/q9RbGS1worb6JfnMg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -5737,14 +5755,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/project-service@8.48.1': - resolution: {integrity: sha512-HQWSicah4s9z2/HifRPQ6b6R7G+SBx64JlFQpgSSHWPKdvCZX57XCbszg/bapbRsOEv42q5tayTYcEFpACcX1w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/project-service@8.50.0': - resolution: {integrity: sha512-Cg/nQcL1BcoTijEWyx4mkVC56r8dj44bFDvBdygifuS20f3OZCHmFbjF34DPSi07kwlFvqfv/xOLnJ5DquxSGQ==} + '@typescript-eslint/project-service@8.50.1': + resolution: {integrity: sha512-E1ur1MCVf+YiP89+o4Les/oBAVzmSbeRB0MQLfSlYtbWU17HPxZ6Bhs5iYmKZRALvEuBoXIZMOIRRc/P++Ortg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -5753,12 +5765,8 @@ packages: resolution: {integrity: sha512-tMDbLGXb1wC+McN1M6QeDx7P7c0UWO5z9CXqp7J8E+xGcJuUuevWKxuG8j41FoweS3+L41SkyKKkia16jpX7CA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/scope-manager@8.48.1': - resolution: {integrity: sha512-rj4vWQsytQbLxC5Bf4XwZ0/CKd362DkWMUkviT7DCS057SK64D5lH74sSGzhI6PDD2HCEq02xAP9cX68dYyg1w==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/scope-manager@8.50.0': - resolution: {integrity: sha512-xCwfuCZjhIqy7+HKxBLrDVT5q/iq7XBVBXLn57RTIIpelLtEIZHXAF/Upa3+gaCpeV1NNS5Z9A+ID6jn50VD4A==} + '@typescript-eslint/scope-manager@8.50.1': + resolution: {integrity: sha512-mfRx06Myt3T4vuoHaKi8ZWNTPdzKPNBhiblze5N50//TSHOAQQevl/aolqA/BcqqbJ88GUnLqjjcBc8EWdBcVw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/tsconfig-utils@8.46.4': @@ -5767,24 +5775,18 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.48.1': - resolution: {integrity: sha512-k0Jhs4CpEffIBm6wPaCXBAD7jxBtrHjrSgtfCjUvPp9AZ78lXKdTR8fxyZO5y4vWNlOvYXRtngSZNSn+H53Jkw==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/tsconfig-utils@8.49.0': - resolution: {integrity: sha512-8prixNi1/6nawsRYxet4YOhnbW+W9FK/bQPxsGB1D3ZrDzbJ5FXw5XmzxZv82X3B+ZccuSxo/X8q9nQ+mFecWA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/tsconfig-utils@8.50.0': resolution: {integrity: sha512-vxd3G/ybKTSlm31MOA96gqvrRGv9RJ7LGtZCn2Vrc5htA0zCDvcMqUkifcjrWNNKXHUU3WCkYOzzVSFBd0wa2w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/tsconfig-utils@8.50.1': + resolution: {integrity: sha512-ooHmotT/lCWLXi55G4mvaUF60aJa012QzvLK0Y+Mp4WdSt17QhMhWOaBWeGTFVkb2gDgBe19Cxy1elPXylslDw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.0.0' + '@typescript-eslint/type-utils@8.46.4': resolution: {integrity: sha512-V4QC8h3fdT5Wro6vANk6eojqfbv5bpwHuMsBcJUJkqs2z5XnYhJzyz9Y02eUmF9u3PgXEUiOt4w4KHR3P+z0PQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -5792,8 +5794,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/type-utils@8.50.0': - resolution: {integrity: sha512-7OciHT2lKCewR0mFoBrvZJ4AXTMe/sYOe87289WAViOocEmDjjv8MvIOT2XESuKj9jp8u3SZYUSh89QA4S1kQw==} + '@typescript-eslint/type-utils@8.50.1': + resolution: {integrity: sha512-7J3bf022QZE42tYMO6SL+6lTPKFk/WphhRPe9Tw/el+cEwzLz1Jjz2PX3GtGQVxooLDKeMVmMt7fWpYRdG5Etg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -5803,16 +5805,8 @@ packages: resolution: {integrity: sha512-USjyxm3gQEePdUwJBFjjGNG18xY9A2grDVGuk7/9AkjIF1L+ZrVnwR5VAU5JXtUnBL/Nwt3H31KlRDaksnM7/w==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/types@8.48.1': - resolution: {integrity: sha512-+fZ3LZNeiELGmimrujsDCT4CRIbq5oXdHe7chLiW8qzqyPMnn1puNstCrMNVAqwcl2FdIxkuJ4tOs/RFDBVc/Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/types@8.49.0': - resolution: {integrity: sha512-e9k/fneezorUo6WShlQpMxXh8/8wfyc+biu6tnAqA81oWrEic0k21RHzP9uqqpyBBeBKu4T+Bsjy9/b8u7obXQ==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/types@8.50.0': - resolution: {integrity: sha512-iX1mgmGrXdANhhITbpp2QQM2fGehBse9LbTf0sidWK6yg/NE+uhV5dfU1g6EYPlcReYmkE9QLPq/2irKAmtS9w==} + '@typescript-eslint/types@8.50.1': + resolution: {integrity: sha512-v5lFIS2feTkNyMhd7AucE/9j/4V9v5iIbpVRncjk/K0sQ6Sb+Np9fgYS/63n6nwqahHQvbmujeBL7mp07Q9mlA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@typescript-eslint/typescript-estree@8.46.4': @@ -5821,14 +5815,8 @@ packages: peerDependencies: typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/typescript-estree@8.48.1': - resolution: {integrity: sha512-/9wQ4PqaefTK6POVTjJaYS0bynCgzh6ClJHGSBj06XEHjkfylzB+A3qvyaXnErEZSaxhIo4YdyBgq6j4RysxDg==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/typescript-estree@8.50.0': - resolution: {integrity: sha512-W7SVAGBR/IX7zm1t70Yujpbk+zdPq/u4soeFSknWFdXIFuWsBGBOUu/Tn/I6KHSKvSh91OiMuaSnYp3mtPt5IQ==} + '@typescript-eslint/typescript-estree@8.50.1': + resolution: {integrity: sha512-woHPdW+0gj53aM+cxchymJCrh0cyS7BTIdcDxWUNsclr9VDkOSbqC13juHzxOmQ22dDkMZEpZB+3X1WpUvzgVQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.0.0' @@ -5840,15 +5828,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - '@typescript-eslint/utils@8.48.1': - resolution: {integrity: sha512-fAnhLrDjiVfey5wwFRwrweyRlCmdz5ZxXz2G/4cLn0YDLjTapmN4gcCsTBR1N2rWnZSDeWpYtgLDsJt+FpmcwA==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '>=4.8.4 <6.0.0' - - '@typescript-eslint/utils@8.50.0': - resolution: {integrity: sha512-87KgUXET09CRjGCi2Ejxy3PULXna63/bMYv72tCAlDJC3Yqwln0HiFJ3VJMst2+mEtNtZu5oFvX4qJGjKsnAgg==} + '@typescript-eslint/utils@8.50.1': + resolution: {integrity: sha512-lCLp8H1T9T7gPbEuJSnHwnSuO9mDf8mfK/Nion5mZmiEaQD9sWf9W4dfeFqRyqRjF06/kBuTmAqcs9sewM2NbQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -5858,12 +5839,8 @@ packages: resolution: {integrity: sha512-/++5CYLQqsO9HFGLI7APrxBJYo+5OCMpViuhV8q5/Qa3o5mMrF//eQHks+PXcsAVaLdn817fMuS7zqoXNNZGaw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/visitor-keys@8.48.1': - resolution: {integrity: sha512-BmxxndzEWhE4TIEEMBs8lP3MBWN3jFPs/p6gPm/wkv02o41hI6cq9AuSmGAaTTHPtA1FTi2jBre4A9rm5ZmX+Q==} - engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - - '@typescript-eslint/visitor-keys@8.50.0': - resolution: {integrity: sha512-Xzmnb58+Db78gT/CCj/PVCvK+zxbnsw6F+O1oheYszJbBSdEjVhQi3C/Xttzxgi/GLmpvOggRs1RFpiJ8+c34Q==} + '@typescript-eslint/visitor-keys@8.50.1': + resolution: {integrity: sha512-IrDKrw7pCRUR94zeuCSUWQ+w8JEf5ZX5jl/e6AHGSLi1/zIr0lgutfn/7JpfCey+urpgQEdrZVYzCaVVKiTwhQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@ungap/structured-clone@1.3.0': @@ -5977,8 +5954,8 @@ packages: '@vue/shared@3.5.14': resolution: {integrity: sha512-oXTwNxVfc9EtP1zzXAlSlgARLXNC84frFYkS0HHz0h3E4WZSP9sywqjqzGCP9Y34M8ipNmd380pVgmMuwELDyQ==} - '@wdio/config@9.21.0': - resolution: {integrity: sha512-8TP5/q+Agjc43LET1f0LhLmuEI803O3QtZEbSxOkkvJ7/e1jDWPm4qsL7SjQJlx8xGrW0kwRlPl7+U9Sr0dhCQ==} + '@wdio/config@9.22.0': + resolution: {integrity: sha512-SQsTSZowEI+whPlwPLsX9ICr6BiG39NLmzED7OWfaowribQ0XylRhoWodcRu6cB/ZCzminZajBUG5XgarNWnRw==} engines: {node: '>=18.20.0'} '@wdio/logger@9.18.0': @@ -5996,8 +5973,8 @@ packages: resolution: {integrity: sha512-zMmAtse2UMCSOW76mvK3OejauAdcFGuKopNRH7crI0gwKTZtvV89yXWRziz9cVXpFgfmJCjf9edxKFWdhuF5yw==} engines: {node: '>=18.20.0'} - '@wdio/utils@9.21.0': - resolution: {integrity: sha512-aj8ao2V/e6Sv9gZby2ZIj4dMLjwYVba47Nlr+pOfK8N4VKKU0VRLPzvTlfK1HWaoS6u/GBbVx2pefYRrvd72BQ==} + '@wdio/utils@9.22.0': + resolution: {integrity: sha512-5j2nn2bBjj41wxXsVT43sUMOKR0qiKNDRG1UcKQ6NkfsWFObSehMAS0a9ZZu//+ooTxRkwHjvLdQrXIrPnTLzg==} engines: {node: '>=18.20.0'} '@webassemblyjs/ast@1.14.1': @@ -6062,10 +6039,6 @@ packages: resolution: {integrity: sha512-0fztsk/0ryJ+2PPr9EyXS5/Co7OK8q3zY/xOoozEWaUsL5x+C0cyZ4YyMuUffOO2Dx/rAdq4JMPqW0VUtm+vzA==} engines: {bun: '>=0.7.0', deno: '>=1.0.0', node: '>=18.0.0'} - '@zip.js/zip.js@2.8.2': - resolution: {integrity: sha512-PI6UdgpSeVoGvzguKHmy2bwOqI3UYkntLZOCpyJSKIi7234c5aJmQYkJB/P4P2YUJkqhbqvu7iM2/0eJZ178nA==} - engines: {bun: '>=0.7.0', deno: '>=1.0.0', node: '>=16.5.0'} - '@zumer/snapdom@2.0.1': resolution: {integrity: sha512-78/qbYl2FTv4H6qaXcNfAujfIOSzdvs83NW63VbyC9QA3sqNPfPvhn4xYMO6Gy11hXwJUEhd0z65yKiNzDwy9w==} @@ -6255,6 +6228,9 @@ packages: any-base@1.1.0: resolution: {integrity: sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg==} + any-promise@1.3.0: + resolution: {integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==} + anymatch@3.1.3: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} @@ -6951,6 +6927,10 @@ packages: commander@2.20.3: resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + commander@4.1.1: + resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} + engines: {node: '>= 6'} + commander@5.1.0: resolution: {integrity: sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==} engines: {node: '>= 6'} @@ -10618,6 +10598,9 @@ packages: resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} engines: {node: ^18.17.0 || >=20.5.0} + mz@2.7.0: + resolution: {integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==} + nan@2.22.2: resolution: {integrity: sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==} @@ -11238,6 +11221,10 @@ packages: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} engines: {node: '>=6'} + pirates@4.0.7: + resolution: {integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==} + engines: {node: '>= 6'} + pixelmatch@5.3.0: resolution: {integrity: sha512-o8mkY4E/+LNUf6LzX96ht6k6CEDi65k9G2rjMtBe9Oo+VPKSvl+0GKHuH/AlG+GA5LPG/i5hrekkxUc3s2HU+Q==} hasBin: true @@ -11757,16 +11744,16 @@ packages: preact-iso@2.11.1: resolution: {integrity: sha512-rLy0RmzP/hrDjnFdnEblxFgKtzUj4njkHrpGJBGS7S4QuYw1zv0lA38qsWpeAAB10JAz/hF2CsHrLen9ufCtbw==} peerDependencies: - preact: 10.28.0 + preact: 10.28.1 preact-render-to-string: '>=6.4.0' preact-render-to-string@6.6.4: resolution: {integrity: sha512-Bn6eQZ5SQ5loVEcC/mZmKT7HzO5Z/+vYzxfE/W2N468oSoNMJVdFGApF0GyXq0lDthuyXKTmtZ8k20NpYjr6Rw==} peerDependencies: - preact: 10.28.0 + preact: 10.28.1 - preact@10.28.0: - resolution: {integrity: sha512-rytDAoiXr3+t6OIP3WGlDd0ouCUG1iCWzkcY3++Nreuoi17y6T5i/zRhe6uYfoVcxq6YU+sBtJouuRDsq8vvqA==} + preact@10.28.1: + resolution: {integrity: sha512-u1/ixq/lVQI0CakKNvLDEcW5zfCjUQfZdK9qqWuIJtsezuyG6pk9TWj75GMuI/EzRSZB/VAE43sNWWZfiy8psw==} prebuild-install@7.1.3: resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} @@ -12032,6 +12019,12 @@ packages: peerDependencies: react: ^18.0.0 || ^19.0.0 + react-window@2.2.3: + resolution: {integrity: sha512-gTRqQYC8ojbiXyd9duYFiSn2TJw0ROXCgYjenOvNKITWzK0m0eCvkUsEUM08xvydkMh7ncp+LE0uS3DeNGZxnQ==} + peerDependencies: + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 + react@16.14.0: resolution: {integrity: sha512-0X2CImDkJGApiAlcf0ODKIneSwBPhqJawOa5wCtKbu7ZECrmS26NvtSILynQ66cgkT/RJ4LidJOc3bUESwmU8g==} engines: {node: '>=0.10.0'} @@ -13136,6 +13129,11 @@ packages: stylis@4.3.6: resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==} + sucrase@3.35.1: + resolution: {integrity: sha512-DhuTmvZWux4H1UOnWMB3sk0sbaCVOoQZjv8u1rDoTV0HTdGem9hkAZtl4JZy8P2z4Bg0nT+YMeOFyVr4zcG5Tw==} + engines: {node: '>=16 || 14 >=14.17'} + hasBin: true + sugarss@4.0.1: resolution: {integrity: sha512-WCjS5NfuVJjkQzK10s8WOBY+hhDxxNt/N6ZaGwxFZ+wN3/lKKFSaaKUNecULcTTvE4urLcKaZFQD8vO0mOZujw==} engines: {node: '>=12.0'} @@ -13279,6 +13277,13 @@ packages: text-decoder@1.2.3: resolution: {integrity: sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==} + thenify-all@1.6.0: + resolution: {integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==} + engines: {node: '>=0.8'} + + thenify@3.3.1: + resolution: {integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==} + thingies@2.5.0: resolution: {integrity: sha512-s+2Bwztg6PhWUD7XMfeYm5qliDdSiZm7M7n8KjTkIsm3l/2lgVRc2/Gx/v+ZX8lT4FMA+i8aQvhcWylldc+ZNw==} engines: {node: '>=10.18'} @@ -13430,6 +13435,9 @@ packages: resolution: {integrity: sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==} engines: {node: '>=6.10'} + ts-interface-checker@0.1.13: + resolution: {integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==} + ts-loader@9.5.4: resolution: {integrity: sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==} engines: {node: '>=12.0.0'} @@ -13548,8 +13556,8 @@ packages: eslint: ^8.57.0 || ^9.0.0 typescript: '>=4.8.4 <6.0.0' - typescript-eslint@8.50.0: - resolution: {integrity: sha512-Q1/6yNUmCpH94fbgMUMg2/BSAr/6U7GBk61kZTv1/asghQOWOjTlp9K8mixS5NcJmm2creY+UFfGeW/+OcA64A==} + typescript-eslint@8.50.1: + resolution: {integrity: sha512-ytTHO+SoYSbhAH9CrYnMhiLx8To6PSSvqnvXyPUgPETCvB6eBKmTI9w6XMPS3HsBRGkwTVBX+urA8dYQx6bHfQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 @@ -14017,12 +14025,12 @@ packages: resolution: {integrity: sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==} engines: {node: '>= 8'} - webdriver@9.21.0: - resolution: {integrity: sha512-XLOhpU/EFPo4TMk+0fRli4g1WriUujxrfDxGT/QRq0MJsfhSYPF8FdefFdL5gHIrJfSKscaQHGWkbnsHftfqeg==} + webdriver@9.22.0: + resolution: {integrity: sha512-jf4irPhIJAssrF3mqUrBZGZnzjRfM86Q24ePUOgFKWI04LtdvRsnc9SsWU05mrN/a6pTJzGps6GsvLpNhvcalg==} engines: {node: '>=18.20.0'} - webdriverio@9.21.0: - resolution: {integrity: sha512-7teaXajOuNdn2UyyKlqMLssJjf0vDEih+Lo+tE/gHOt/P+mB8CinZym4PGtsriZLcyt4xV+Cun3hDmXM+pL26A==} + webdriverio@9.22.0: + resolution: {integrity: sha512-sqXZG11hRM9KjqioVPcXCPLIcdJprNM9e+B6JlyacN6ImgC64MQbgs0vtCDLVsSIX7vg+x771lrS/VxXxqlkJw==} engines: {node: '>=18.20.0'} peerDependencies: puppeteer-core: '>=22.x || <=24.x' @@ -14097,14 +14105,17 @@ packages: whatwg-encoding@1.0.5: resolution: {integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-encoding@2.0.0: resolution: {integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==} engines: {node: '>=12'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-encoding@3.1.1: resolution: {integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==} engines: {node: '>=18'} + deprecated: Use @exodus/bytes instead for a more spec-conformant and faster implementation whatwg-fetch@3.6.20: resolution: {integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==} @@ -15012,7 +15023,7 @@ snapshots: '@braintree/sanitize-url@7.1.1': {} - '@bufbuild/protobuf@2.10.1': + '@bufbuild/protobuf@2.10.2': optional: true '@bundled-es-modules/cookie@2.0.1': @@ -15149,6 +15160,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.3.0 '@ckeditor/ckeditor5-utils': 47.3.0 ckeditor5: 47.3.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-block-quote@47.3.0': dependencies: @@ -15223,6 +15236,8 @@ snapshots: '@ckeditor/ckeditor5-core': 47.3.0 '@ckeditor/ckeditor5-utils': 47.3.0 ckeditor5: 47.3.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-code-block@47.3.0(patch_hash=2361d8caad7d6b5bddacc3a3b4aa37dbfba260b1c1b22a450413a79c1bb1ce95)': dependencies: @@ -15288,10 +15303,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.3.0 '@ckeditor/ckeditor5-watchdog': 47.3.0 es-toolkit: 1.39.5 - transitivePeerDependencies: - - supports-color - '@ckeditor/ckeditor5-dev-build-tools@54.2.2(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3)': + '@ckeditor/ckeditor5-dev-build-tools@54.2.3(@swc/helpers@0.5.17)(tslib@2.8.1)(typescript@5.9.3)': dependencies: '@rollup/plugin-commonjs': 28.0.9(rollup@4.52.0) '@rollup/plugin-json': 6.1.0(rollup@4.52.0) @@ -15415,6 +15428,8 @@ snapshots: '@ckeditor/ckeditor5-utils': 47.3.0 ckeditor5: 47.3.0 es-toolkit: 1.39.5 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-editor-classic@47.3.0': dependencies: @@ -15466,8 +15481,6 @@ snapshots: '@ckeditor/ckeditor5-table': 47.3.0 '@ckeditor/ckeditor5-utils': 47.3.0 ckeditor5: 47.3.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-emoji@47.3.0': dependencies: @@ -15493,8 +15506,6 @@ snapshots: '@ckeditor/ckeditor5-core': 47.3.0 '@ckeditor/ckeditor5-engine': 47.3.0 '@ckeditor/ckeditor5-utils': 47.3.0 - transitivePeerDependencies: - - supports-color '@ckeditor/ckeditor5-essentials@47.3.0': dependencies: @@ -16032,7 +16043,7 @@ snapshots: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 '@codemirror/theme-one-dark': 6.1.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 ckeditor5: 47.3.0 '@ckeditor/ckeditor5-source-editing@47.3.0': @@ -16043,6 +16054,8 @@ snapshots: '@ckeditor/ckeditor5-ui': 47.3.0 '@ckeditor/ckeditor5-utils': 47.3.0 ckeditor5: 47.3.0 + transitivePeerDependencies: + - supports-color '@ckeditor/ckeditor5-special-characters@47.3.0': dependencies: @@ -16218,21 +16231,21 @@ snapshots: dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/common': 1.2.3 '@codemirror/commands@6.10.1': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/common': 1.2.3 '@codemirror/commands@6.8.1': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/common': 1.2.3 '@codemirror/lang-css@6.3.1': @@ -16250,7 +16263,7 @@ snapshots: '@codemirror/lang-javascript': 6.2.4 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/common': 1.2.3 '@lezer/css': 1.1.11 '@lezer/html': 1.3.12 @@ -16261,7 +16274,7 @@ snapshots: '@codemirror/language': 6.11.0 '@codemirror/lint': 6.8.5 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/common': 1.2.3 '@lezer/javascript': 1.5.1 @@ -16276,7 +16289,7 @@ snapshots: '@codemirror/lang-html': 6.4.11 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/common': 1.2.3 '@lezer/markdown': 1.4.3 @@ -16286,7 +16299,7 @@ snapshots: '@codemirror/lang-html': 6.4.11 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/common': 1.2.3 '@lezer/markdown': 1.4.3 @@ -16312,14 +16325,14 @@ snapshots: '@codemirror/autocomplete': 6.18.6 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/common': 1.2.3 '@lezer/xml': 1.0.6 '@codemirror/language@6.11.0': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 @@ -16332,13 +16345,13 @@ snapshots: '@codemirror/lint@6.8.5': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 crelt: 1.0.6 '@codemirror/search@6.5.11': dependencies: '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 crelt: 1.0.6 '@codemirror/state@6.5.2': @@ -16349,10 +16362,10 @@ snapshots: dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@codemirror/view@6.39.4': + '@codemirror/view@6.39.7': dependencies: '@codemirror/state': 6.5.2 crelt: 1.0.6 @@ -16853,7 +16866,7 @@ snapshots: '@es-joy/jsdoccomment@0.50.2': dependencies: '@types/estree': 1.0.8 - '@typescript-eslint/types': 8.49.0 + '@typescript-eslint/types': 8.50.1 comment-parser: 1.4.1 esquery: 1.6.0 jsdoc-type-pratt-parser: 4.1.0 @@ -17336,199 +17349,199 @@ snapshots: '@floating-ui/utils@0.2.9': {} - '@fsegurai/codemirror-theme-abcdef@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-abcdef@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-abyss@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-abyss@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-android-studio@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-android-studio@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-andromeda@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-andromeda@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-basic-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-basic-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-basic-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-basic-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-cobalt2@6.0.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-cobalt2@6.0.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-forest@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-forest@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-github-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-github-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-github-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-github-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-gruvbox-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-gruvbox-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-gruvbox-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-gruvbox-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-material-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-material-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-material-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-material-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-monokai@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-monokai@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-nord@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-nord@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-palenight@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-palenight@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-solarized-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-solarized-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-solarized-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-solarized-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-tokyo-night-day@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-tokyo-night-day@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-tokyo-night-storm@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-tokyo-night-storm@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-volcano@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-volcano@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-vscode-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-vscode-dark@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fsegurai/codemirror-theme-vscode-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/highlight@1.2.1)': + '@fsegurai/codemirror-theme-vscode-light@6.2.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/highlight@1.2.1)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/highlight': 1.2.1 - '@fullcalendar/core@6.1.19': + '@fullcalendar/core@6.1.20': dependencies: - preact: 10.28.0 + preact: 10.28.1 - '@fullcalendar/daygrid@6.1.19(@fullcalendar/core@6.1.19)': + '@fullcalendar/daygrid@6.1.20(@fullcalendar/core@6.1.20)': dependencies: - '@fullcalendar/core': 6.1.19 + '@fullcalendar/core': 6.1.20 - '@fullcalendar/interaction@6.1.19(@fullcalendar/core@6.1.19)': + '@fullcalendar/interaction@6.1.20(@fullcalendar/core@6.1.20)': dependencies: - '@fullcalendar/core': 6.1.19 + '@fullcalendar/core': 6.1.20 - '@fullcalendar/list@6.1.19(@fullcalendar/core@6.1.19)': + '@fullcalendar/list@6.1.20(@fullcalendar/core@6.1.20)': dependencies: - '@fullcalendar/core': 6.1.19 + '@fullcalendar/core': 6.1.20 - '@fullcalendar/multimonth@6.1.19(@fullcalendar/core@6.1.19)': + '@fullcalendar/multimonth@6.1.20(@fullcalendar/core@6.1.20)': dependencies: - '@fullcalendar/core': 6.1.19 - '@fullcalendar/daygrid': 6.1.19(@fullcalendar/core@6.1.19) + '@fullcalendar/core': 6.1.20 + '@fullcalendar/daygrid': 6.1.20(@fullcalendar/core@6.1.20) - '@fullcalendar/timegrid@6.1.19(@fullcalendar/core@6.1.19)': + '@fullcalendar/timegrid@6.1.20(@fullcalendar/core@6.1.20)': dependencies: - '@fullcalendar/core': 6.1.19 - '@fullcalendar/daygrid': 6.1.19(@fullcalendar/core@6.1.19) + '@fullcalendar/core': 6.1.20 + '@fullcalendar/daygrid': 6.1.20(@fullcalendar/core@6.1.20) '@gar/promisify@1.1.3': {} @@ -18128,6 +18141,8 @@ snapshots: '@marijn/find-cluster-break@1.0.2': {} + '@mdi/font@7.4.47': {} + '@mdn/browser-compat-data@5.7.6': {} '@mermaid-js/layout-elk@0.2.0(mermaid@11.12.2)': @@ -18468,6 +18483,8 @@ snapshots: '@parcel/watcher-win32-x64': 2.5.1 optional: true + '@phosphor-icons/web@2.1.2': {} + '@pkgjs/parseargs@0.11.0': optional: true @@ -18479,12 +18496,12 @@ snapshots: '@popperjs/core@2.11.8': {} - '@preact/preset-vite@2.10.2(@babel/core@7.28.0)(preact@10.28.0)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': + '@preact/preset-vite@2.10.2(@babel/core@7.28.0)(preact@10.28.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.0 '@babel/plugin-transform-react-jsx': 7.27.1(@babel/core@7.28.0) '@babel/plugin-transform-react-jsx-development': 7.27.1(@babel/core@7.28.0) - '@prefresh/vite': 2.4.8(preact@10.28.0)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) + '@prefresh/vite': 2.4.8(preact@10.28.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1)) '@rollup/pluginutils': 4.2.1 babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.28.0) debug: 4.4.1 @@ -18497,27 +18514,27 @@ snapshots: '@preact/signals-core@1.12.1': {} - '@preact/signals@2.5.1(preact@10.28.0)': + '@preact/signals@2.5.1(preact@10.28.1)': dependencies: '@preact/signals-core': 1.12.1 - preact: 10.28.0 + preact: 10.28.1 '@prefresh/babel-plugin@0.5.2': {} - '@prefresh/core@1.5.5(preact@10.28.0)': + '@prefresh/core@1.5.5(preact@10.28.1)': dependencies: - preact: 10.28.0 + preact: 10.28.1 '@prefresh/utils@1.2.1': {} - '@prefresh/vite@2.4.8(preact@10.28.0)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': + '@prefresh/vite@2.4.8(preact@10.28.1)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))': dependencies: '@babel/core': 7.28.0 '@prefresh/babel-plugin': 0.5.2 - '@prefresh/core': 1.5.5(preact@10.28.0) + '@prefresh/core': 1.5.5(preact@10.28.1) '@prefresh/utils': 1.2.1 '@rollup/pluginutils': 4.2.1 - preact: 10.28.0 + preact: 10.28.1 vite: 7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) transitivePeerDependencies: - supports-color @@ -18849,14 +18866,14 @@ snapshots: json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - '@redocly/cli@2.14.0(@opentelemetry/api@1.9.0)(ajv@8.17.1)(bufferutil@4.0.9)(core-js@3.46.0)(encoding@0.1.13)(utf-8-validate@6.0.5)': + '@redocly/cli@2.14.1(@opentelemetry/api@1.9.0)(ajv@8.17.1)(bufferutil@4.0.9)(core-js@3.46.0)(encoding@0.1.13)(utf-8-validate@6.0.5)': dependencies: '@opentelemetry/exporter-trace-otlp-http': 0.202.0(@opentelemetry/api@1.9.0) '@opentelemetry/resources': 2.0.1(@opentelemetry/api@1.9.0) '@opentelemetry/sdk-trace-node': 2.0.1(@opentelemetry/api@1.9.0) '@opentelemetry/semantic-conventions': 1.34.0 - '@redocly/openapi-core': 2.14.0(ajv@8.17.1) - '@redocly/respect-core': 2.14.0(ajv@8.17.1) + '@redocly/openapi-core': 2.14.1(ajv@8.17.1) + '@redocly/respect-core': 2.14.1(ajv@8.17.1) abort-controller: 3.0.0 chokidar: 3.6.0 colorette: 1.4.0 @@ -18908,7 +18925,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@redocly/openapi-core@2.14.0(ajv@8.17.1)': + '@redocly/openapi-core@2.14.1(ajv@8.17.1)': dependencies: '@redocly/ajv': 8.17.1 '@redocly/config': 0.41.1 @@ -18922,12 +18939,12 @@ snapshots: transitivePeerDependencies: - ajv - '@redocly/respect-core@2.14.0(ajv@8.17.1)': + '@redocly/respect-core@2.14.1(ajv@8.17.1)': dependencies: '@faker-js/faker': 7.6.0 '@noble/hashes': 1.8.0 '@redocly/ajv': 8.17.1 - '@redocly/openapi-core': 2.14.0(ajv@8.17.1) + '@redocly/openapi-core': 2.14.1(ajv@8.17.1) better-ajv-errors: 1.2.0(ajv@8.17.1) colorette: 2.0.20 json-pointer: 0.6.2 @@ -18937,29 +18954,29 @@ snapshots: transitivePeerDependencies: - ajv - '@replit/codemirror-indentation-markers@6.5.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)': + '@replit/codemirror-indentation-markers@6.5.3(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)': dependencies: '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 - '@replit/codemirror-lang-nix@6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2)': + '@replit/codemirror-lang-nix@6.0.1(@codemirror/autocomplete@6.18.6)(@codemirror/language@6.11.0)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)(@lezer/common@1.2.3)(@lezer/highlight@1.2.1)(@lezer/lr@1.4.2)': dependencies: '@codemirror/autocomplete': 6.18.6 '@codemirror/language': 6.11.0 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@lezer/common': 1.2.3 '@lezer/highlight': 1.2.1 '@lezer/lr': 1.4.2 - '@replit/codemirror-vim@6.3.0(@codemirror/commands@6.10.1)(@codemirror/language@6.11.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.39.4)': + '@replit/codemirror-vim@6.3.0(@codemirror/commands@6.10.1)(@codemirror/language@6.11.0)(@codemirror/search@6.5.11)(@codemirror/state@6.5.2)(@codemirror/view@6.39.7)': dependencies: '@codemirror/commands': 6.10.1 '@codemirror/language': 6.11.0 '@codemirror/search': 6.5.11 '@codemirror/state': 6.5.2 - '@codemirror/view': 6.39.4 + '@codemirror/view': 6.39.7 '@rolldown/binding-android-arm64@1.0.0-beta.29': optional: true @@ -19746,7 +19763,7 @@ snapshots: '@stylistic/eslint-plugin@4.4.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/utils': 8.48.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) eslint-visitor-keys: 4.2.1 espree: 10.4.0 @@ -20428,14 +20445,14 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/eslint-plugin@8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/scope-manager': 8.50.0 - '@typescript-eslint/type-utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/parser': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.50.1 + '@typescript-eslint/type-utils': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.50.1 eslint: 9.39.2(jiti@2.6.1) ignore: 7.0.5 natural-compare: 1.4.0 @@ -20456,12 +20473,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/parser@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/scope-manager': 8.50.0 - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/scope-manager': 8.50.1 + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.50.1 debug: 4.4.3(supports-color@8.1.1) eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 @@ -20469,27 +20486,18 @@ snapshots: - supports-color '@typescript-eslint/project-service@8.46.4(typescript@5.9.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) - '@typescript-eslint/types': 8.49.0 - debug: 4.4.3(supports-color@8.1.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.48.1(typescript@5.9.3)': - dependencies: - '@typescript-eslint/tsconfig-utils': 8.49.0(typescript@5.9.3) - '@typescript-eslint/types': 8.49.0 - debug: 4.4.3(supports-color@8.1.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/project-service@8.50.0(typescript@5.9.3)': dependencies: '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) - '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/types': 8.46.4 + debug: 4.4.3(supports-color@8.1.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.50.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) + '@typescript-eslint/types': 8.50.1 debug: 4.4.3(supports-color@8.1.1) typescript: 5.9.3 transitivePeerDependencies: @@ -20500,32 +20508,23 @@ snapshots: '@typescript-eslint/types': 8.46.4 '@typescript-eslint/visitor-keys': 8.46.4 - '@typescript-eslint/scope-manager@8.48.1': + '@typescript-eslint/scope-manager@8.50.1': dependencies: - '@typescript-eslint/types': 8.48.1 - '@typescript-eslint/visitor-keys': 8.48.1 - - '@typescript-eslint/scope-manager@8.50.0': - dependencies: - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/visitor-keys': 8.50.1 '@typescript-eslint/tsconfig-utils@8.46.4(typescript@5.9.3)': dependencies: typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.48.1(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - - '@typescript-eslint/tsconfig-utils@8.49.0(typescript@5.9.3)': - dependencies: - typescript: 5.9.3 - '@typescript-eslint/tsconfig-utils@8.50.0(typescript@5.9.3)': dependencies: typescript: 5.9.3 + '@typescript-eslint/tsconfig-utils@8.50.1(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + '@typescript-eslint/type-utils@8.46.4(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@typescript-eslint/types': 8.46.4 @@ -20538,11 +20537,11 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/type-utils@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) debug: 4.4.3(supports-color@8.1.1) eslint: 9.39.2(jiti@2.6.1) ts-api-utils: 2.1.0(typescript@5.9.3) @@ -20552,11 +20551,7 @@ snapshots: '@typescript-eslint/types@8.46.4': {} - '@typescript-eslint/types@8.48.1': {} - - '@typescript-eslint/types@8.49.0': {} - - '@typescript-eslint/types@8.50.0': {} + '@typescript-eslint/types@8.50.1': {} '@typescript-eslint/typescript-estree@8.46.4(typescript@5.9.3)': dependencies: @@ -20574,27 +20569,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@8.48.1(typescript@5.9.3)': + '@typescript-eslint/typescript-estree@8.50.1(typescript@5.9.3)': dependencies: - '@typescript-eslint/project-service': 8.48.1(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.48.1(typescript@5.9.3) - '@typescript-eslint/types': 8.48.1 - '@typescript-eslint/visitor-keys': 8.48.1 - debug: 4.4.3(supports-color@8.1.1) - minimatch: 9.0.5 - semver: 7.7.3 - tinyglobby: 0.2.15 - ts-api-utils: 2.1.0(typescript@5.9.3) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@8.50.0(typescript@5.9.3)': - dependencies: - '@typescript-eslint/project-service': 8.50.0(typescript@5.9.3) - '@typescript-eslint/tsconfig-utils': 8.50.0(typescript@5.9.3) - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/visitor-keys': 8.50.0 + '@typescript-eslint/project-service': 8.50.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.50.1(typescript@5.9.3) + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/visitor-keys': 8.50.1 debug: 4.4.3(supports-color@8.1.1) minimatch: 9.0.5 semver: 7.7.3 @@ -20615,23 +20595,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.48.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': + '@typescript-eslint/utils@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': dependencies: '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.48.1 - '@typescript-eslint/types': 8.48.1 - '@typescript-eslint/typescript-estree': 8.48.1(typescript@5.9.3) - eslint: 9.39.2(jiti@2.6.1) - typescript: 5.9.3 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3)': - dependencies: - '@eslint-community/eslint-utils': 4.9.0(eslint@9.39.2(jiti@2.6.1)) - '@typescript-eslint/scope-manager': 8.50.0 - '@typescript-eslint/types': 8.50.0 - '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.50.1 + '@typescript-eslint/types': 8.50.1 + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: @@ -20642,14 +20611,9 @@ snapshots: '@typescript-eslint/types': 8.46.4 eslint-visitor-keys: 4.2.1 - '@typescript-eslint/visitor-keys@8.48.1': + '@typescript-eslint/visitor-keys@8.50.1': dependencies: - '@typescript-eslint/types': 8.48.1 - eslint-visitor-keys: 4.2.1 - - '@typescript-eslint/visitor-keys@8.50.0': - dependencies: - '@typescript-eslint/types': 8.50.0 + '@typescript-eslint/types': 8.50.1 eslint-visitor-keys: 4.2.1 '@ungap/structured-clone@1.3.0': {} @@ -20685,11 +20649,11 @@ snapshots: - bufferutil - utf-8-validate - '@vitest/browser-webdriverio@4.0.16(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.16)(webdriverio@9.21.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))': + '@vitest/browser-webdriverio@4.0.16(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.16)(webdriverio@9.22.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))': dependencies: '@vitest/browser': 4.0.16(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.16) vitest: 4.0.16(@opentelemetry/api@1.9.0)(@types/node@24.10.4)(@vitest/browser-webdriverio@4.0.16)(@vitest/ui@4.0.16)(happy-dom@20.0.11)(jiti@2.6.1)(jsdom@26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5))(less@4.1.3)(lightningcss@1.30.1)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1) - webdriverio: 9.21.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + webdriverio: 9.22.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bufferutil - msw @@ -20847,11 +20811,11 @@ snapshots: '@vue/shared@3.5.14': {} - '@wdio/config@9.21.0': + '@wdio/config@9.22.0': dependencies: '@wdio/logger': 9.18.0 '@wdio/types': 9.20.0 - '@wdio/utils': 9.21.0 + '@wdio/utils': 9.22.0 deepmerge-ts: 7.1.5 glob: 10.4.5 import-meta-resolve: 4.2.0 @@ -20877,7 +20841,7 @@ snapshots: dependencies: '@types/node': 20.19.25 - '@wdio/utils@9.21.0': + '@wdio/utils@9.22.0': dependencies: '@puppeteer/browsers': 2.10.10 '@wdio/logger': 9.18.0 @@ -20983,8 +20947,6 @@ snapshots: '@zip.js/zip.js@2.8.11': {} - '@zip.js/zip.js@2.8.2': {} - '@zumer/snapdom@2.0.1': {} abab@2.0.6: {} @@ -21153,6 +21115,8 @@ snapshots: any-base@1.1.0: {} + any-promise@1.3.0: {} + anymatch@3.1.3: dependencies: normalize-path: 3.0.0 @@ -22101,6 +22065,8 @@ snapshots: commander@2.20.3: {} + commander@4.1.1: {} + commander@5.1.0: {} commander@6.2.0: {} @@ -23050,7 +23016,7 @@ snapshots: edgedriver@6.1.2: dependencies: '@wdio/logger': 9.18.0 - '@zip.js/zip.js': 2.8.2 + '@zip.js/zip.js': 2.8.11 decamelize: 6.0.1 edge-paths: 3.0.5 fast-xml-parser: 5.2.5 @@ -24147,7 +24113,7 @@ snapshots: dependencies: d3-selection: 3.0.0 kapsule: 1.16.3 - preact: 10.28.0 + preact: 10.28.1 flora-colossus@2.0.0: dependencies: @@ -26820,6 +26786,12 @@ snapshots: mute-stream@2.0.0: optional: true + mz@2.7.0: + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + nan@2.22.2: optional: true @@ -27477,6 +27449,8 @@ snapshots: pify@4.0.1: optional: true + pirates@4.0.7: {} + pixelmatch@5.3.0: dependencies: pngjs: 6.0.0 @@ -27968,16 +27942,16 @@ snapshots: potpack@2.1.0: {} - preact-iso@2.11.1(preact-render-to-string@6.6.4(preact@10.28.0))(preact@10.28.0): + preact-iso@2.11.1(preact-render-to-string@6.6.4(preact@10.28.1))(preact@10.28.1): dependencies: - preact: 10.28.0 - preact-render-to-string: 6.6.4(preact@10.28.0) + preact: 10.28.1 + preact-render-to-string: 6.6.4(preact@10.28.1) - preact-render-to-string@6.6.4(preact@10.28.0): + preact-render-to-string@6.6.4(preact@10.28.1): dependencies: - preact: 10.28.0 + preact: 10.28.1 - preact@10.28.0: {} + preact@10.28.1: {} prebuild-install@7.1.3: dependencies: @@ -28262,6 +28236,11 @@ snapshots: prop-types: 15.8.1 react: 19.2.3 + react-window@2.2.3(react-dom@19.2.3(react@19.2.3))(react@19.2.3): + dependencies: + react: 19.2.3 + react-dom: 19.2.3(react@19.2.3) + react@16.14.0: dependencies: loose-envify: 1.4.0 @@ -28813,7 +28792,7 @@ snapshots: sass-embedded@1.91.0: dependencies: - '@bufbuild/protobuf': 2.10.1 + '@bufbuild/protobuf': 2.10.2 buffer-builder: 0.2.0 colorjs.io: 0.5.2 immutable: 5.1.4 @@ -29718,6 +29697,16 @@ snapshots: stylis@4.3.6: {} + sucrase@3.35.1: + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + commander: 4.1.1 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.7 + tinyglobby: 0.2.15 + ts-interface-checker: 0.1.13 + sugarss@4.0.1(postcss@8.5.6): dependencies: postcss: 8.5.6 @@ -29954,6 +29943,14 @@ snapshots: dependencies: b4a: 1.6.7 + thenify-all@1.6.0: + dependencies: + thenify: 3.3.1 + + thenify@3.3.1: + dependencies: + any-promise: 1.3.0 + thingies@2.5.0(tslib@2.8.1): dependencies: tslib: 2.8.1 @@ -30089,6 +30086,8 @@ snapshots: ts-dedent@2.2.0: {} + ts-interface-checker@0.1.13: {} + ts-loader@9.5.4(typescript@5.0.4)(webpack@5.101.3(@swc/core@1.11.29(@swc/helpers@0.5.17))(esbuild@0.27.2)): dependencies: chalk: 4.1.2 @@ -30269,12 +30268,12 @@ snapshots: transitivePeerDependencies: - supports-color - typescript-eslint@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): + typescript-eslint@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.50.0(@typescript-eslint/parser@8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/parser': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) - '@typescript-eslint/typescript-estree': 8.50.0(typescript@5.9.3) - '@typescript-eslint/utils': 8.50.0(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/eslint-plugin': 8.50.1(@typescript-eslint/parser@8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3))(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/parser': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.50.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.50.1(eslint@9.39.2(jiti@2.6.1))(typescript@5.9.3) eslint: 9.39.2(jiti@2.6.1) typescript: 5.9.3 transitivePeerDependencies: @@ -30619,7 +30618,7 @@ snapshots: optionalDependencies: '@opentelemetry/api': 1.9.0 '@types/node': 24.10.4 - '@vitest/browser-webdriverio': 4.0.16(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.16)(webdriverio@9.21.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) + '@vitest/browser-webdriverio': 4.0.16(bufferutil@4.0.9)(msw@2.7.5(@types/node@24.10.4)(typescript@5.9.3))(utf-8-validate@6.0.5)(vite@7.3.0(@types/node@24.10.4)(jiti@2.6.1)(less@4.1.3)(lightningcss@1.30.1)(sass-embedded@1.91.0)(sass@1.91.0)(terser@5.44.0)(tsx@4.21.0)(yaml@2.8.1))(vitest@4.0.16)(webdriverio@9.22.0(bufferutil@4.0.9)(utf-8-validate@6.0.5)) '@vitest/ui': 4.0.16(vitest@4.0.16) happy-dom: 20.0.11 jsdom: 26.1.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) @@ -30709,15 +30708,15 @@ snapshots: web-streams-polyfill@3.3.3: {} - webdriver@9.21.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): + webdriver@9.22.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@types/node': 20.19.25 '@types/ws': 8.18.1 - '@wdio/config': 9.21.0 + '@wdio/config': 9.22.0 '@wdio/logger': 9.18.0 '@wdio/protocols': 9.16.2 '@wdio/types': 9.20.0 - '@wdio/utils': 9.21.0 + '@wdio/utils': 9.22.0 deepmerge-ts: 7.1.5 https-proxy-agent: 7.0.6 undici: 6.21.3 @@ -30728,16 +30727,16 @@ snapshots: - supports-color - utf-8-validate - webdriverio@9.21.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): + webdriverio@9.22.0(bufferutil@4.0.9)(utf-8-validate@6.0.5): dependencies: '@types/node': 20.19.25 '@types/sinonjs__fake-timers': 8.1.5 - '@wdio/config': 9.21.0 + '@wdio/config': 9.22.0 '@wdio/logger': 9.18.0 '@wdio/protocols': 9.16.2 '@wdio/repl': 9.16.2 '@wdio/types': 9.20.0 - '@wdio/utils': 9.21.0 + '@wdio/utils': 9.22.0 archiver: 7.0.1 aria-query: 5.3.2 cheerio: 1.1.2 @@ -30754,7 +30753,7 @@ snapshots: rgb2hex: 0.2.5 serialize-error: 12.0.0 urlpattern-polyfill: 10.1.0 - webdriver: 9.21.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) + webdriver: 9.22.0(bufferutil@4.0.9)(utf-8-validate@6.0.5) transitivePeerDependencies: - bare-buffer - bufferutil diff --git a/scripts/icon-packs/compare_icons.ts b/scripts/icon-packs/compare_icons.ts new file mode 100644 index 000000000..904bfcfa4 --- /dev/null +++ b/scripts/icon-packs/compare_icons.ts @@ -0,0 +1,24 @@ +import { readFileSync } from "fs"; +import { join } from "path"; + +const basePath = join(__dirname, "../../apps/server/src/services"); +const oldFile = join(basePath, "icon_pack_boxicons-v2.json"); +const newFile = join(basePath, "icon_pack_boxicons-v3.json"); + +const oldData = JSON.parse(readFileSync(oldFile, "utf-8")); +const newData = JSON.parse(readFileSync(newFile, "utf-8")); + +const oldIcons = new Set(Object.keys(oldData.icons).filter(key => !key.startsWith("bxl"))); +const newIcons = new Set(Object.keys(newData.icons)); + +const onlyInOld = [...oldIcons].filter(x => !newIcons.has(x)); +const onlyInNew = [...newIcons].filter(x => !oldIcons.has(x)); + +console.log("## Icons only in old manifest\n", onlyInOld.map(x => `- ${x}`).join("\n")); +// console.log("## Icons only in new manifest\n", onlyInNew.map(x => `- ${x}`).join("\n")); + +if (onlyInOld.length === 0 && onlyInNew.length === 0) { + console.log("The icon manifests are identical in terms of icon keys."); +} else { + console.log("There are differences between the icon manifests."); +}